#ifndef MSP_GLTK_DIALOG_H_
#define MSP_GLTK_DIALOG_H_
+#include "mspgltk_api.h"
#include "panel.h"
namespace Msp {
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 Loader: public DataFile::DerivedObjectLoader<Dialog, Panel::Loader>
+ class MSPGLTK_API Loader: public DataFile::DerivedObjectLoader<Dialog, Panel::Loader>
{
public:
Loader(Dialog &, WidgetMap &);
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) { }