// -*- mode: c++; c-basic-offset: 2; -*- #ifndef GUI_FORM_HH #define GUI_FORM_HH #include #include #include "gui_window.hh" class GuiForm : public GuiWindow { public: class Listener : public GuiWindow::Listener { public: virtual ~Listener() {} virtual void changed(GuiForm* form, std::string const& id) = 0; virtual bool about_to_close(GuiForm* form) = 0; protected: Listener() {} }; static GuiForm* create(std::string const& title, std::string const& text); virtual void add_string(std::string const& id, std::string const& label, std::string const& value, std::string const& description) = 0; virtual void add_number(std::string const& id, std::string const& label, uint64_t value, std::string const& description) = 0; struct Filter { std::string name; std::vector masks; }; static const uint8_t FILE_OPEN; static const uint8_t FILE_SAVE; virtual void add_file(std::string const& id, std::string const& label, std::string const& value, std::string const& description, uint8_t flags, std::vector const& filter) = 0; virtual void add_listener(Listener* listener) = 0; virtual void remove_listener(Listener* listener) = 0; virtual bool show(GuiWindow* parent) = 0; virtual void set_error(std::string const& error) = 0; virtual std::string get_string(std::string const& id) const = 0; virtual uint64_t get_number(std::string const& id) const = 0; virtual std::string get_file(std::string const& id) const = 0; protected: GuiForm() {} }; #endif // GUI_FORM_HH