1 /*************************************************************************** 2 guicontainer.h - description 3 ------------------- 4 begin : march 22th, 2004 5 copyright : (C) 2004-2007 by Duong Khang NGUYEN 6 email : neoneurone @ gmail com 7 8 $Id: guicontainer.h 450 2010-11-21 19:11:43Z neoneurone $ 9 ***************************************************************************/ 10 11 /*************************************************************************** 12 * * 13 * This program is free software; you can redistribute it and/or modify * 14 * it under the terms of the GNU General Public License as published by * 15 * the Free Software Foundation; either version 2 of the License, or * 16 * any later version. * 17 * * 18 ***************************************************************************/ 19 20 #ifndef _OPENCITY_GUICONTAINER_H_ 21 #define _OPENCITY_GUICONTAINER_H_ 1 22 23 #include "guimain.h" 24 #include "texture.h" 25 26 #include <vector> 27 28 29 //======================================================================== 30 /** A container is a GUI wrapper. It is used to handle the controls 31 derived from the GUIMain class 32 */ 33 class GUIContainer : public GUIMain { 34 public: 35 GUIContainer(); 36 37 38 //======================================================================== 39 /** Pctor 1. 40 \param ciX,ciY The 2D XY window coordinates of the container 41 \param cuiW,cuiH The width and height of the container 42 */ 43 GUIContainer( 44 const int ciX, 45 const int ciY, 46 const uint cuiW, 47 const uint cuiH ); 48 49 50 //======================================================================== 51 /** Pctor 2. 52 \param ciX,ciY The 2D XY window coordinates of the container 53 \param cuiW,cuiH The width and height of the container 54 \param rcsTexFile The name of the texture file which will be used as 55 background. 56 */ 57 GUIContainer( 58 const int ciX, 59 const int ciY, 60 const uint cuiW, 61 const uint cuiH, 62 const string& rcsTexFile ); 63 64 65 ~GUIContainer(); 66 67 68 //======================================================================== 69 /** Add a nex control to the container 70 */ 71 const uint 72 Add( GUIMain* const pguimain ); 73 74 75 //======================================================================== 76 /** Get the number of the controls in the container 77 \return the number of controls added so far 78 */ 79 const uint 80 GetNumber() const; 81 82 83 //======================================================================== 84 /** Get the width and the height of the window 85 \param riWinW,riWinH The width and the height of the current window 86 */ 87 void 88 GetWinWH( int& riWinW, int& riWinH ) const; 89 90 91 //======================================================================== 92 /** Get the index of the first control which is clicked. The index starts 93 from 1. 94 \return The index of the clicked control. The method returns 0 if 95 there's no clicked control 96 */ 97 const uint 98 GetClick() const; 99 100 101 //======================================================================== 102 /** Set the attribute of a contained GUIMain object. This declaration 103 hides the prototype of Set inherited from the GUIMain class. 104 \param rcuiIndex The index of the control to modify. It must be in 105 range because there is no error checking. 106 \param rcubAttribute The attributes to set 107 */ 108 void 109 Set( 110 const uint& rcuiIndex, 111 const OC_BYTE& rcubAttribute ) const; 112 113 114 //======================================================================== 115 /** 116 \note We need this method because the inherited one is hidden 117 */ 118 void Set(const OC_BYTE & rcubAttribute)119 Set( 120 const OC_BYTE& rcubAttribute ) { 121 GUIMain::Set( rcubAttribute ); 122 } 123 124 125 //======================================================================== 126 /** Unset the specified attributes of all controls. 127 \param rcubAttr The attributes to unset 128 */ 129 void 130 ResetAttribute( const OC_BYTE& rcubAttr ) const; 131 132 133 //======================================================================== 134 // Inherited methods from GUIMain 135 //======================================================================== 136 void 137 Display() const; 138 139 140 //======================================================================== 141 // Inherited methods from UI 142 //======================================================================== 143 void Keyboard( const SDL_KeyboardEvent& rcEvent ); 144 void MouseMotion( const SDL_MouseMotionEvent& rcEvent ); 145 void MouseButton( const SDL_MouseButtonEvent& rcEvent ); 146 void Expose( const SDL_ExposeEvent& rcEvent ); 147 void Resize( const SDL_ResizeEvent& rcEvent ); 148 149 150 private: 151 uint _uiWinWidth, _uiWinHeight; 152 std::vector<GUIMain*> vectorpguimain; 153 Texture moTextureBackground; 154 }; 155 156 #endif 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188