00001 /*! \file GUI.h 00002 \brief GUI en console. 00003 00004 Interface graphique en console. 00005 00006 \author aerith (contact@aerith.biz - www.aerith.biz) 00007 \version 5.0 00008 \date 03/05/2005 00009 */ 00010 00011 #ifndef INCLUDE_RSRC_GUI 00012 #define INCLUDE_RSRC_GUI 00013 00014 #include "../Surcouche/SurcoucheConsole.h" 00015 #include "../Tools/Tools.h" 00016 00017 #define GUI_NBC 80 /*!< Nombre de colone. */ 00018 #define GUI_NBL 24 /*!< Nombre de ligne. */ 00019 00020 #define GUI_HG "\xC9" /*!< Coin haut gauche. */ 00021 #define GUI_HD "\xBB" /*!< Coin haut droite. */ 00022 #define GUI_BG "\xC8" /*!< Coin bas gauche. */ 00023 #define GUI_BD "\xBC" /*!< Coin bas droite. */ 00024 #define GUI_YG "\xCC" /*!< Y gauche. */ 00025 #define GUI_YD "\xB9" /*!< Y droite. */ 00026 #define GUI_YH "\xCB" /*!< Y haut. */ 00027 #define GUI_YB "\xCA" /*!< Y bas. */ 00028 #define GUI_TH "\xCD" /*!< Trait horizontal. */ 00029 #define GUI_TV "\xBA" /*!< Trait vertical. */ 00030 00031 00032 //! Interface graphique en console. 00033 /*! Interface graphique portable et couleur en console. 00034 */ 00035 class GUI 00036 { 00037 private : 00038 static int NbWindow; /*!< Nombre de fenetre. */ 00039 static GUIWindow **Windows; /*!< Chaque lignes est une fenetre. */ 00040 static int ActiveWindow; /*!< Id de la fenetre active. */ 00041 static int GUIInstance; /*!< Compte les instances de la class. */ 00042 static MUTEX GUIMutex; /*!< Utiliser des que l'on accede à la console. */ 00043 00044 public : 00045 /*! Initialise la GUI. 00046 */ 00047 GUI(); 00048 00049 /*! Libere la mémoire proprement. 00050 */ 00051 ~GUI(); 00052 00053 //! Ajoute une fenetre. 00054 /*! Ajoute une fenetre avec un nouvelle Id. 00055 \param iId ID de la fenetre. 00056 \param pTitre Titre de la fenetre (en haut). 00057 \param iX Position en X de la fenetre, si -1 alors centrée. 00058 \param iY Position en Y de la fenetre, si -1 alors centrée. 00059 \param iL Largeur de la fenetre, si 0 largeur de la console. 00060 \param iH Hauteur de la fenetre, si 0 hauteur de la console. 00061 \param pHelp Message d'aide (en bas). 00062 \return Code d'erreur. 00063 \sa DelWindow(), GetWindow(), GetWindowNo() et GetNbWindow(). 00064 */ 00065 int AddWindow(int iId, char *pTitre, int iL = 0, int iH = 0, int iX = -1, int iY = -1, char *pHelp = NULL); 00066 00067 //! Supprime une fenetre. 00068 /*! Supprime la fenetre d'id \a iId. 00069 \param iId ID de la fenetre. 00070 \return Code d'erreur. 00071 \sa AddWindow(), GetWindow(), GetWindowNo() et GetNbWindow(). 00072 */ 00073 int DelWindow(int iId); 00074 00075 //! Retourne une fenetre. 00076 /*! Permet l'acces à la fenetre ayant l'id \a iId. 00077 \param iId Id de la fenetre. 00078 \return pointeur sur la class de la fenetre. 00079 \sa AddWindow(), DelWindow(), GetWindowNo() et GetNbWindow(). 00080 */ 00081 GUIWindow *GetWindow(int iId); 00082 00083 //! Retourne une fentre par sa position. 00084 /*! Permet l'acces à la fenetre étant à la position \a iPos. 00085 \param iPos position de la fenetre. 00086 \return pointeur sur la class de la fenetre. 00087 \sa AddWindow(), DelWindow(), GetWindow() et GetNbWindow(). 00088 */ 00089 inline GUIWindow *GetWindowNo(int iPos) 00090 { 00091 if(iPos > NbWindow) 00092 iPos = 0; 00093 00094 return Windows[iPos]; 00095 }; 00096 00097 //! Retourne le nombre de fenetre. 00098 /*! Retourne le nombre de fenetre contenu dans la GUI. 00099 \return nombre de fenetre dans la GUI. 00100 \sa AddWindow(), DelWindow(), GetWindow() et GetWindowNo(). 00101 */ 00102 inline int GetNbWindow() 00103 { 00104 return NbWindow; 00105 }; 00106 00107 //! Retourne le nombre d'instance. 00108 /*! Retourne le nombre d'instance de la class (pour multitache ou multiGUI). 00109 \return nombre d'instance de la class. 00110 */ 00111 inline int GetNbInstance() 00112 { 00113 return GUIInstance; 00114 }; 00115 00116 //! Affiche la GUI. 00117 /*! Rend active et affiche la GUI. 00118 \return Code d'erreur. 00119 */ 00120 int Print() 00121 00122 KeyBoard() 00123 00124 SetLenght() 00125 GetLenght() 00126 SetHeigth() 00127 GetHeigth() 00128 00129 00130 } 00131 00132 00133 #endif 00134