otk/messagedialog.hh (raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- #ifndef __messagedialog_hh #define __messagedialog_hh #include "widget.hh" #include "ustring.hh" #include <vector> namespace otk { class Button; class Label; class DialogButton { ustring _label; bool _default; public: DialogButton(ustring label) : _label(label), _default(false) {} DialogButton(ustring label, bool def) : _label(label), _default(def) {} inline const ustring& label() const { return _label; } inline const bool& isDefault() const { return _default; } bool operator==(const DialogButton &o) const { return _label == o._label; } bool operator!=(const DialogButton &o) const { return!(_label == o._label); } }; class MessageDialog : public Widget { public: MessageDialog(int screen, EventDispatcher *ed, ustring title, ustring caption); MessageDialog(EventDispatcher *ed, ustring title, ustring caption); MessageDialog(Widget *parent, ustring title, ustring caption); virtual ~MessageDialog(); virtual void addButton(const DialogButton &b); virtual const DialogButton& run(); virtual void show(); virtual void hide(); virtual void focus(); virtual const DialogButton& result() const { return _result; } virtual void setResult(const DialogButton &result) { _result = result; } virtual void keyPressHandler(const XKeyEvent &e); virtual void clientMessageHandler(const XClientMessageEvent &e); private: void init(const ustring &title, const ustring &caption); protected: std::vector<Button *> _button_widgets; Label *_label; Widget *_button_holder; KeyCode _return; KeyCode _escape; DialogButton _result; }; } #endif // __messagedialog_hh |