diff options
Diffstat (limited to 'src/gui_main.hh')
| -rw-r--r-- | src/gui_main.hh | 66 |
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 |
