summaryrefslogtreecommitdiff
path: root/src/gui_main.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui_main.hh')
-rw-r--r--src/gui_main.hh66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/gui_main.hh b/src/gui_main.hh
new file mode 100644
index 0000000..af35106
--- /dev/null
+++ b/src/gui_main.hh
@@ -0,0 +1,66 @@
+// -*- mode: c++; c-basic-offset: 2; -*-
+
+#ifndef GUI_MAIN_HH
+#define GUI_MAIN_HH
+
+#include <memory>
+#include <stdint.h>
+#include <string>
+
+#include "gui_attrtext.hh"
+#include "gui_window.hh"
+
+class GuiListModel;
+class GuiMenu;
+class GuiStatusBar;
+class Looper;
+
+class GuiMain : public GuiWindow {
+public:
+ class Listener : public GuiWindow::Listener {
+ public:
+ virtual ~Listener() {}
+
+ virtual bool about_to_exit(GuiMain* main) = 0;
+ virtual void selected_row(GuiMain* main, size_t index) = 0;
+ virtual void lost_selection(GuiMain* main) = 0;
+
+ protected:
+ Listener() {}
+ };
+
+ static GuiMain* create(std::string const& title,
+ uint32_t width, uint32_t height);
+ static Looper* createLooper();
+
+ virtual void set_menu(GuiMenu* menu) = 0;
+ virtual GuiMenu* menu() const = 0;
+
+ virtual void set_statusbar(GuiStatusBar* statusbar) = 0;
+ virtual GuiStatusBar* statusbar() const = 0;
+
+ virtual void set_split(double split) = 0;
+ virtual double split() const = 0;
+
+ virtual void set_listmodel(GuiListModel* model) = 0;
+ virtual GuiListModel* listmodel() const = 0;
+
+ virtual void set_package(std::unique_ptr<AttributedText>&& data) = 0;
+
+ virtual bool run(int argc, char** argv) = 0;
+
+ virtual bool exit() = 0;
+
+ virtual void show(GuiWindow* window) = 0;
+
+ virtual void add_listener(Listener* listener) = 0;
+ virtual void remove_listener(Listener* listener) = 0;
+
+ virtual void add_to_clipboard(std::string const& data,
+ std::string const& mimetype = "") = 0;
+
+protected:
+ GuiMain() {}
+};
+
+#endif // GUI_MAIN_HH