Add log widget to lower dock
[frida/frida.git] / src / gui / Mainwindow.hxx
1 #ifndef INCLUDE__Mainwindow_hxx_
2 #define INCLUDE__Mainwindow_hxx_
3
4 #include <memory>
5 #include <map>
6 #include <vector>
7 #include <string>
8
9 #include <QTextEdit>
10 #include <QPushButton>
11 #include <QMainWindow>
12 #include <QTreeWidget>
13 #include <QStackedWidget>
14
15 #include <log4cxx/logger.h>
16
17 class Disassembler;
18 class Function;
19 class InformationManager;
20 class FunctionWidget;
21 class BasicBlockWidget;
22 class FridaDock;
23 class Interpreter;
24
25 class Mainwindow : public QMainWindow {
26 Q_OBJECT
27 public:
28 Mainwindow(InformationManager* mgr);
29
30 public Q_SLOTS:
31 void switchMainPlaneToAddress(uint64_t);
32 void requestNewFunctionByAddress(uint64_t address);
33
34 private:
35 void addFunction(Function* fun);
36 void setGlobalHotkeys();
37
38 QTextEdit *textEdit;
39 QPushButton *quitButton;
40 QMenu *fileMenu;
41
42 QTabWidget * tabwidget;
43 QTreeWidget * listWidget;
44 QStackedWidget * stackedWidget;
45 QDockWidget * dockWidget;
46 FridaDock * fdock;
47
48 QAction *exitAction;
49 QAction *openAction;
50 QAction *loadAction;
51 QAction *saveAction;
52
53 std::map<uint64_t, BasicBlockWidget*> blocks;
54 std::map<uint64_t, Function*> functions;
55 std::map<QTreeWidgetItem*, FunctionWidget*> objects_list;
56 std::map<uint64_t, QTreeWidgetItem*> objects_list_by_address;
57 std::vector<QTreeWidgetItem*> group_list;
58 std::map<std::string, Interpreter*> interpreter;
59
60 InformationManager* manager;
61 log4cxx::LoggerPtr logger;
62
63 private Q_SLOTS:
64 void quit();
65 void open();
66 void load();
67 void save();
68 void switchMainPlane(QTreeWidgetItem* item);
69 void showListContextMenu(const QPoint&);
70 void requestNewFunction();
71 void requestNewGroup();
72 void renameFunction(Function* function);
73 void renameGroup(QTreeWidgetItem* item);
74 };
75
76 #endif /* INCLUDE__Mainwindow_hxx_ */