00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef GUIMESSAGEBOX_H
00023 #define GUIMESSAGEBOX_H
00024
00025 #include "guielement.h"
00026 #include "guibackground.h"
00027 #include "guitext.h"
00028 #include "guidynamicbutton.h"
00029
00041 class DECLSPEC GuiMessageBox : public GuiPictureBg
00042 {
00043 public:
00044 DECLSPEC GuiMessageBox( const SDL_Rect &r, GuiElement * el, const char *name, const char * t = NULL, int buttons = -1 );
00051 DECLSPEC GuiMessageBox(TiXmlElement *el, GuiElement *p);
00052 virtual DECLSPEC ~GuiMessageBox();
00053
00054 virtual const char *getClassName() { return "GuiMessageBox"; }
00055
00056 void setCallback( Callback c, BasicObject * d ) { cb.func = c; cb.obj = d; }
00057 DECLSPEC void showMessage( const char *m, long buttons = -1);
00058 DECLSPEC void setButtons( long i );
00059 DECLSPEC int getAnswer( bool hide = true );
00060
00061 static void newguiobject(void *presult, BasicObject *o, void *xmldata)
00062 {
00063 GuiElement *r = new GuiMessageBox((TiXmlElement*)xmldata, (GuiElement*)o);
00064 *(GuiElement**)presult = r;
00065 }
00066 protected:
00067 virtual DECLSPEC Uint32 onResize();
00068 virtual DECLSPEC void onInit();
00069
00070 private:
00071 void free();
00072 void onButton( GuiClickableBtn *sender );
00073 void arrange();
00074 int index;
00075 int nButtons;
00076 GuiText *text;
00077 GuiBorder *border;
00078 GuiClickableBtn *gcbOk, *gcbYes, *gcbCancel, *gcbNo;
00079 FunctionData cb;
00080 static inline void onButtonClick( void *sender, BasicObject* data, void* )
00081 {
00082 ((GuiMessageBox*)data)->onButton( (GuiClickableBtn *)sender );
00083 }
00084 };
00085
00086 #endif