From 7a41f7730dfa7e5733720f98f89c5a5906f1e786 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 16 Feb 2003 11:59:12 +0000 Subject: add otk::MessageDialog --- otk/messagedialog.hh | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 otk/messagedialog.hh (limited to 'otk/messagedialog.hh') diff --git a/otk/messagedialog.hh b/otk/messagedialog.hh new file mode 100644 index 00000000..d68c1726 --- /dev/null +++ b/otk/messagedialog.hh @@ -0,0 +1,66 @@ +// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- +#ifndef __messagedialog_hh +#define __messagedialog_hh + +#include "widget.hh" +#include "ustring.hh" + +#include + +namespace otk { + +class Button; +class Label; + +class DialogButton { + ustring _label; + bool _default; +public: + DialogButton(char *label) : _label(label), _default(false) + {} + 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; } +}; + +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) { _buttons.push_back(b); } + + virtual const DialogButton& run(); + + virtual void show(); + virtual void hide(); + + 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: + static DialogButton _default_result; + + void init(const ustring &title, const ustring &caption); + + std::vector _buttons; + std::vector