OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
messagebox.hpp
Go to the documentation of this file.
1 #ifndef MWGUI_MESSAGE_BOX_H
2 #define MWGUI_MESSAGE_BOX_H
3 
4 #include "windowbase.hpp"
5 
6 #undef MessageBox
7 
8 namespace MyGUI
9 {
10  class Widget;
11  class Button;
12  class EditBox;
13 }
14 
15 namespace MWGui
16 {
17  class InteractiveMessageBox;
18  class MessageBoxManager;
19  class MessageBox;
21  {
22  public:
23  MessageBoxManager (float timePerChar);
25  void onFrame (float frameDuration);
26  void createMessageBox (const std::string& message, bool stat = false);
27  void removeStaticMessageBox ();
28  bool createInteractiveMessageBox (const std::string& message, const std::vector<std::string>& buttons);
30 
32 
34  void clear();
35 
36  bool removeMessageBox (MessageBox *msgbox);
37 
39  int readPressedButton (bool reset=true);
40 
41  typedef MyGUI::delegates::CMultiDelegate1<int> EventHandle_Int;
42 
43  // Note: this delegate unassigns itself after it was fired, i.e. works once.
45 
46  void onButtonPressed(int button) { eventButtonPressed(button); eventButtonPressed.clear(); }
47 
48  private:
49  std::vector<MessageBox*> mMessageBoxes;
54  };
55 
56  class MessageBox : public Layout
57  {
58  public:
59  MessageBox (MessageBoxManager& parMessageBoxManager, const std::string& message);
60  void setMessage (const std::string& message);
61  int getHeight ();
62  void update (int height);
63 
64  float mCurrentTime;
65  float mMaxTime;
66 
67  protected:
69  const std::string& mMessage;
70  MyGUI::EditBox* mMessageWidget;
73  };
74 
76  {
77  public:
78  InteractiveMessageBox (MessageBoxManager& parMessageBoxManager, const std::string& message, const std::vector<std::string>& buttons);
79  void mousePressed (MyGUI::Widget* _widget);
80  int readPressedButton ();
81 
82  MyGUI::Widget* getDefaultKeyFocus() override;
83 
84  virtual bool exit() override { return false; }
85 
87 
88  private:
89  void buttonActivated (MyGUI::Widget* _widget);
90 
92  MyGUI::EditBox* mMessageWidget;
93  MyGUI::Widget* mButtonsWidget;
94  std::vector<MyGUI::Button*> mButtons;
95 
97  };
98 
99 }
100 
101 #endif
float mMaxTime
Definition: messagebox.hpp:65
void message(CodeContainer &code, Literals &literals, const std::string &message, int buttons)
Definition: generator.cpp:537
~MessageBoxManager()
Definition: messagebox.cpp:29
MyGUI::Widget * mButtonsWidget
Definition: messagebox.hpp:93
MessageBox(MessageBoxManager &parMessageBoxManager, const std::string &message)
Definition: messagebox.cpp:173
Definition: messagebox.hpp:75
bool removeMessageBox(MessageBox *msgbox)
Definition: messagebox.cpp:147
MyGUI::EditBox * mMessageWidget
Definition: messagebox.hpp:92
MyGUI::Widget * getDefaultKeyFocus() override
Definition: messagebox.cpp:363
bool isInteractiveMessageBox()
Definition: messagebox.cpp:141
virtual bool exit() override
Gracefully exits the window.
Definition: messagebox.hpp:84
void onFrame(float frameDuration)
Definition: messagebox.cpp:60
void mousePressed(MyGUI::Widget *_widget)
Definition: messagebox.cpp:379
void removeStaticMessageBox()
Definition: messagebox.cpp:119
Definition: messagebox.hpp:20
const InteractiveMessageBox * getInteractiveMessageBox() const
Definition: messagebox.hpp:31
InteractiveMessageBox * mInterMessageBoxe
Definition: messagebox.hpp:50
MessageBoxManager(float timePerChar)
Definition: messagebox.cpp:21
MessageBoxManager & mMessageBoxManager
Definition: messagebox.hpp:91
int mBottomPadding
Definition: messagebox.hpp:71
int readPressedButton()
Definition: messagebox.cpp:401
void update(int height)
Definition: messagebox.cpp:189
const std::string & mMessage
Definition: messagebox.hpp:69
InteractiveMessageBox(MessageBoxManager &parMessageBoxManager, const std::string &message, const std::vector< std::string > &buttons)
Definition: messagebox.cpp:206
Definition: messagebox.hpp:56
int mNextBoxPadding
Definition: messagebox.hpp:72
EventHandle_Int eventButtonPressed
Definition: messagebox.hpp:44
void onButtonPressed(int button)
Definition: messagebox.hpp:46
bool createInteractiveMessageBox(const std::string &message, const std::vector< std::string > &buttons)
Definition: messagebox.cpp:125
int mButtonPressed
Definition: messagebox.hpp:96
bool mMarkedToDelete
Definition: messagebox.hpp:86
void setMessage(const std::string &message)
void buttonActivated(MyGUI::Widget *_widget)
Definition: messagebox.cpp:384
MyGUI::EditBox * mMessageWidget
Definition: messagebox.hpp:70
Definition: layout.hpp:15
float mMessageBoxSpeed
Definition: messagebox.hpp:52
int mLastButtonPressed
Definition: messagebox.hpp:53
float mCurrentTime
Definition: messagebox.hpp:64
MessageBox * mStaticMessageBox
Definition: messagebox.hpp:51
int getHeight()
Definition: messagebox.cpp:199
void createMessageBox(const std::string &message, bool stat=false)
Definition: messagebox.cpp:94
MyGUI::delegates::CMultiDelegate1< int > EventHandle_Int
Definition: messagebox.hpp:41
void clear()
Remove all message boxes.
Definition: messagebox.cpp:38
std::vector< MessageBox * > mMessageBoxes
Definition: messagebox.hpp:49
std::vector< MyGUI::Button * > mButtons
Definition: messagebox.hpp:94
int readPressedButton(bool reset=true)
Definition: messagebox.cpp:162
Definition: windowbase.hpp:61
MessageBoxManager & mMessageBoxManager
Definition: messagebox.hpp:68