#include <memory>
#include <map>
-#include <set>
+#include <vector>
+#include <string>
#include <QTextEdit>
#include <QPushButton>
#include <QMainWindow>
-#include <QListWidget>
+#include <QTreeWidget>
#include <QStackedWidget>
#include <log4cxx/logger.h>
-#include "disassembler/Disassembler.hxx"
-#include "widgets/BasicBlockWidget.hxx"
-#include "widgets/ScriptingDock.hxx"
-#include "core/InformationManager.hxx"
+class Disassembler;
+class Function;
+class InformationManager;
+class FunctionWidget;
+class BasicBlockWidget;
+class FridaDock;
class Mainwindow : public QMainWindow {
Q_OBJECT
public:
Mainwindow(InformationManager* mgr);
+public Q_SLOTS:
+ void switchMainPlaneToAddress(uint64_t);
+ void requestNewFunctionByAddress(uint64_t address);
+
private:
void addFunction(Function* fun);
void setGlobalHotkeys();
QMenu *fileMenu;
QTabWidget * tabwidget;
- QListWidget * listWidget;
+ QTreeWidget * listWidget;
QStackedWidget * stackedWidget;
QDockWidget * dockWidget;
- ScriptingDock * scripting;
+ FridaDock * fdock;
QAction *exitAction;
QAction *openAction;
+ QAction *loadAction;
QAction *saveAction;
std::map<uint64_t, BasicBlockWidget*> blocks;
- std::map<QListWidgetItem*, QWidget*> objects_list;
- std::map<uint64_t, QListWidgetItem*> objects_list_by_address;
- std::set<Function*> functions;
- InformationManager* manager;
+ std::map<uint64_t, Function*> functions;
+ std::map<QTreeWidgetItem*, FunctionWidget*> objects_list;
+ std::map<uint64_t, QTreeWidgetItem*> objects_list_by_address;
+ std::vector<QTreeWidgetItem*> group_list;
+ InformationManager* manager;
log4cxx::LoggerPtr logger;
-public Q_SLOTS:
- void switchMainPlaneToAddress(uint64_t);
- void requestNewFunctionByAddress(uint64_t address);
+
private Q_SLOTS:
void quit();
void open();
+ void load();
void save();
- void switchMainPlane(int);
+ void switchMainPlane(QTreeWidgetItem* item);
void showListContextMenu(const QPoint&);
void requestNewFunction();
- void renameFunction(QListWidgetItem * item);
+ void requestNewGroup();
+ void renameFunction(Function* function);
+ void renameGroup(QTreeWidgetItem* item);
};
#endif /* INCLUDE__Mainwindow_hxx_ */