// -*- mode: c++; c-basic-offset: 2; -*- #ifndef GUI_MAIN_HH #define GUI_MAIN_HH #include #include #include #include "gui_attrtext.hh" #include "gui_file.hh" #include "gui_window.hh" class Config; 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; virtual void open(GuiMain* main, std::string const& file) = 0; protected: Listener() {} }; static GuiMain* create(std::string const& title, uint32_t width, uint32_t height); virtual Looper* create_looper() = 0; 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 select_row(size_t row) = 0; virtual void set_package(std::unique_ptr&& data) = 0; virtual void set_content(std::string const& name, 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; virtual Config* config() = 0; virtual std::string file_dialog( std::string const& title, std::string const& file, uint8_t flags, std::vector const& filter) = 0; protected: GuiMain() {} }; #endif // GUI_MAIN_HH