]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/dialog.h
Use the override specifier when overriding a virtual function
[libs/gltk.git] / source / dialog.h
index 1365f3a599a8b374ea41f64ab397e8a6102a2bb8..285478ebb570ddead2d12deae299805dd595ecee 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_GLTK_DIALOG_H_
 #define MSP_GLTK_DIALOG_H_
 
+#include "mspgltk_api.h"
 #include "panel.h"
 
 namespace Msp {
@@ -12,25 +13,39 @@ class Button;
 A Dialog is used for temporary interaction with the user.  When any of the
 Dialog's action buttons are clicked, it will emit a signal and delete itself.
 */
-class Dialog: public Panel
+class MSPGLTK_API Dialog: public Panel
 {
 public:
+       class MSPGLTK_API Loader: public DataFile::DerivedObjectLoader<Dialog, Panel::Loader>
+       {
+       public:
+               Loader(Dialog &, WidgetMap &);
+       private:
+               void action_button(const std::string &, int);
+       };
+
        sigc::signal<void, int> signal_response;
 
 private:
-       bool stale;
+       bool stale = false;
 
 public:
-       Dialog();
+       const char *get_class() const override { return "dialog"; }
 
        /** Adds an action button to the dialog.  Pressing the button will invoke
        response handlers and delete the dialog. */
        void add_button(Button &, int);
 
-       virtual void button_release(int, int, unsigned);
-       virtual void key_release(unsigned, unsigned);
+       /** Sets the modality of the dialog.  When modal, the user can't navigate
+       away from the dialog. */
+       void set_modal(bool);
+
+       void button_release(int, int, unsigned) override;
+       bool key_release(unsigned, unsigned) override;
+       bool navigate(Navigation) override;
 protected:
        void response(int);
+       void check_stale();
 
        /** Called when an action button is pressed. */
        virtual void on_response(int) { }