00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "GestionAcces.h"
00012
00013
00014 Menu::Menu(char * UnTitre)
00015 {
00016 Titre = new char[strlen(UnTitre)];
00017 strcpy(Titre, UnTitre);
00018 Items = new char*[1];
00019 Items[0] = NULL;
00020 NbItem = 0;
00021 Selected = 0;
00022 }
00023
00024 Menu::~Menu()
00025 {
00026
00027
00028
00029 delete [] Items;
00030 }
00031
00032 int Menu::AddItem(int UnLabel, char * UnNom)
00033 {
00034 if(UnLabel>NbItem)
00035 {
00036 char ** Tampon;
00037 Tampon = new char*[UnLabel+1];
00038 for(int i=0; i<=UnLabel; i++)
00039 {
00040 Tampon[i] = NULL;
00041 if(i<=NbItem)
00042 Tampon[i] = Items[i];
00043 }
00044 delete [] Items;
00045 Items = Tampon;
00046 NbItem = UnLabel;
00047 }
00048 else
00049 if(Items[UnLabel] != NULL)
00050 delete [] Items[UnLabel];
00051
00052 Items[UnLabel] = new char[strlen(UnNom)];
00053 strcpy(Items[UnLabel], UnNom);
00054
00055 return UnLabel;
00056 }
00057
00058 int Menu::SetSelct(int UnLabel)
00059 {
00060 Selected = UnLabel;
00061 return Selected;
00062 }
00063
00064 MVirtuel Menu::Affiche()
00065 {
00066
00067 for(int y = 0; y < NBL; y++)
00068 {
00069 Image.Write(NBC, y, "\0");
00070 for(int x = 0; x < NBC; x++)
00071 Image.Write(x, y, " ");
00072 }
00073
00074 char CAR;
00075 int Lig = (NBL-NbItem-4)/2;
00076 int Lar = strlen(Titre)+1;
00077 int Col = (NBC-Lar)/2;
00078
00079
00080 for(int i=Col+1; i<=Col+Lar-1; i++)
00081 {
00082 Image.Write(i, Lig,Car[8]);
00083 Image.Write(i, Lig+2, Car[8]);
00084 Image.Write(i, Lig+4+NbItem, Car[8]);
00085 }
00086 Image.Write(Col, Lig, Car[0]);
00087 Image.Write(Col+Lar, Lig, Car[1]);
00088 Lig++;
00089 Image.Write(Col, Lig, Car[9]);
00090 Image.Write(Col+1, Lig,Titre);
00091 Image.Write(Col+Lar, Lig, Car[9]);
00092 Lig++;
00093 Image.Write(Col, Lig, Car[4]);
00094 Image.Write(Col+Lar, Lig, Car[5]);
00095 Lig++;
00096
00097 for(i=0; i<=NbItem; i++, Lig++)
00098 {
00099 Image.Write(Col, Lig, Car[9]);
00100 Image.Write(Col+Lar, Lig, Car[9]);
00101
00102 if(Items[i] != NULL)
00103 {
00104 if(Selected == i)
00105 {
00106 Image.Write(Col+1, Lig, "*");
00107 Image.Write(Col+Lar-1, Lig, "*");
00108 }
00109 Image.Write(Col+(Lar-strlen(Items[i]))/2+1, Lig, Items[i]);
00110 }
00111 }
00112 Image.Write(Col, Lig, Car[2]);
00113 Image.Write(Col+Lar, Lig, Car[3]);
00114
00115 Image.Print();
00116 return Image;
00117 }
00118
00119 MVirtuel Menu::GetImage()
00120 {
00121 return Image;
00122 }
00123
00124 int Menu::Gere()
00125 {
00126 int i=0;
00127
00128 switch(_getch())
00129 {
00130 case 224 :
00131 switch(_getch())
00132 {
00133 case 72 :
00134 for(i=Selected-1; i>=0; i--)
00135 if(Items[i] != NULL)
00136 {
00137 Selected = i;
00138 break;
00139 }
00140 break;
00141 case 80 :
00142 for(i=Selected+1; i<=NbItem; i++)
00143 if(Items[i] != NULL)
00144 {
00145 Selected = i;
00146 break;
00147 }
00148 break;
00149 }
00150 break;
00151 case 13 :
00152 return -1;
00153 break;
00154 }
00155 return Selected;
00156 }