1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-10 06:39:49 +00:00
OpenMW/apps/openmw/mwgui/messagebox.hpp

91 lines
2.6 KiB
C++
Raw Normal View History

#ifndef MWGUI_MESSAGE_BOX_H
#define MWGUI_MESSAGE_BOX_H
2011-06-14 16:29:55 +00:00
#include <openengine/gui/layout.hpp>
#include <MyGUI.h>
2011-06-14 16:29:55 +00:00
#include "window_base.hpp"
2011-06-14 20:11:36 +00:00
#include "window_manager.hpp"
#undef MessageBox
namespace MWGui
{
2011-06-18 13:50:41 +00:00
class InteractiveMessageBox;
2011-06-14 16:29:55 +00:00
class MessageBoxManager;
class MessageBox;
struct MessageBoxManagerTimer {
float current;
float max;
MessageBox *messageBox;
};
class MessageBoxManager
{
public:
2011-06-19 17:41:42 +00:00
MessageBoxManager (WindowManager* windowManager);
void onFrame (float frameDuration);
void createMessageBox (const std::string& message);
2011-06-19 17:10:44 +00:00
bool createInteractiveMessageBox (const std::string& message, const std::vector<std::string>& buttons);
bool isInteractiveMessageBox ();
2011-06-14 20:11:36 +00:00
void removeMessageBox (float time, MessageBox *msgbox);
bool removeMessageBox (MessageBox *msgbox);
void setMessageBoxSpeed (int speed);
int readPressedButton ();
2011-06-14 20:11:36 +00:00
WindowManager *mWindowManager;
private:
std::vector<MessageBox*> mMessageBoxes;
2011-06-19 17:10:44 +00:00
InteractiveMessageBox* mInterMessageBoxe;
std::vector<MessageBoxManagerTimer> mTimers;
float mMessageBoxSpeed;
};
2011-06-14 16:29:55 +00:00
class MessageBox : public OEngine::GUI::Layout
{
public:
2011-06-14 20:11:36 +00:00
MessageBox (MessageBoxManager& parMessageBoxManager, const std::string& message);
void setMessage (const std::string& message);
int getHeight ();
void update (int height);
2011-06-14 20:11:36 +00:00
bool mMarkedToDelete;
2011-06-14 16:29:55 +00:00
protected:
MessageBoxManager& mMessageBoxManager;
int mHeight;
2011-06-15 17:42:20 +00:00
const std::string& cMessage;
MyGUI::EditPtr mMessageWidget;
int mFixedWidth;
int mBottomPadding;
int mNextBoxPadding;
2011-06-14 16:29:55 +00:00
};
2011-06-18 13:50:41 +00:00
class InteractiveMessageBox : public OEngine::GUI::Layout
{
public:
2011-06-19 17:41:42 +00:00
InteractiveMessageBox (MessageBoxManager& parMessageBoxManager, const std::string& message, const std::vector<std::string>& buttons);
void mousePressed (MyGUI::Widget* _widget);
int readPressedButton ();
bool mMarkedToDelete;
2011-06-18 13:50:41 +00:00
2011-06-19 17:41:42 +00:00
private:
2011-06-18 13:50:41 +00:00
MessageBoxManager& mMessageBoxManager;
MyGUI::EditPtr mMessageWidget;
MyGUI::WidgetPtr mButtonsWidget;
2011-06-19 17:41:42 +00:00
std::vector<MyGUI::ButtonPtr> mButtons;
int mTextButtonPadding;
int mButtonPressed;
2011-06-18 13:50:41 +00:00
};
2011-06-14 16:29:55 +00:00
}
#endif