00001 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 #include "K3dGui.h"
00033 
00034 K3dGui::K3dGui(K3dGameData *_pGameData)
00035 {
00036         m_pGameData = _pGameData;
00037         m_pGui = NULL;
00038         m_pInput = NULL;
00039         m_pGraphics = NULL;
00040         m_pImageLoader = NULL;
00041         m_bIsLoadGui = false;
00042 }
00043 
00044 K3dGui::~K3dGui(void)
00045 {
00046         cout << "K3dGui::~K3dGui(void)" << endl;
00047         DeleteGui();
00048 }
00049 
00051 void K3dGui::DeleteGui()
00052 {
00053         cout << "K3dGui::DeleteGui()" << endl;
00054         if(m_bIsLoadGui == true)
00055         {
00056                 m_bIsGuiDeleted = true;
00057                 unsigned int i=0;
00058                 for(i=0; i<m_tGuiFontArray.size(); i++)
00059                 {
00060                         delete m_tGuiFontArray[i];
00061                 }
00062                 m_tGuiFontArray.clear();
00063                 for(i=0; i<m_tGuiWindowArray.size(); i++)
00064                 {
00065                         delete m_tGuiWindowArray[i];
00066                 }
00067                 m_tGuiWindowArray.clear();
00068                 for(i=0; i<m_tGuiLabelArray.size(); i++)
00069                 {
00070                         delete m_tGuiLabelArray[i];
00071                 }
00072                 m_tGuiLabelArray.clear();
00073                 for(i=0; i<m_tGuiIconArray.size(); i++)
00074                 {
00075                         delete m_tGuiIconArray[i];
00076                 }
00077                 m_tGuiIconArray.clear();
00078                 for(i=0; i<m_tGuiButtonArray.size(); i++)
00079                 {
00080                         delete m_tGuiButtonArray[i];
00081                 }
00082                 m_tGuiButtonArray.clear();
00083                 for(i=0; i<m_tGuiTextFieldArray.size(); i++)
00084                 {
00085                         delete m_tGuiTextFieldArray[i];
00086                 }
00087                 m_tGuiTextFieldArray.clear();
00088                 for(i=0; i<m_tGuiTextBoxArray.size(); i++)
00089                 {
00090                         delete m_tGuiTextBoxArray[i];
00091                 }
00092                 m_tGuiTextBoxArray.clear();
00093                 for(i=0; i<m_tGuiScrollAreaArray.size(); i++)
00094                 {
00095                         delete m_tGuiScrollAreaArray[i];
00096                 }
00097                 m_tGuiScrollAreaArray.clear();
00098                 for(i=0; i<m_tGuiListBoxArray.size(); i++)
00099                 {
00100                         delete m_tGuiListBoxArray[i];
00101                 }
00102                 m_tGuiListBoxArray.clear();
00103                 for(i=0; i<m_tGuiDropDownArray.size(); i++)
00104                 {
00105                         delete m_tGuiDropDownArray[i];
00106                 }
00107                 m_tGuiDropDownArray.clear();
00108                 for(i=0; i<m_tGuiCheckBoxArray.size(); i++)
00109                 {
00110                         delete m_tGuiCheckBoxArray[i];
00111                 }
00112                 m_tGuiCheckBoxArray.clear();
00113                 for(i=0; i<m_tGuiRadioButtonArray.size(); i++)
00114                 {
00115                         delete m_tGuiRadioButtonArray[i];
00116                 }
00117                 m_tGuiRadioButtonArray.clear();
00118                 for(i=0; i<m_tGuiSliderArray.size(); i++)
00119                 {
00120                         delete m_tGuiSliderArray[i];
00121                 }
00122                 m_tGuiSliderArray.clear();
00123                 for(i=0; i<m_tGuiImageArray.size(); i++)
00124                 {
00125                         delete m_tGuiImageArray[i];
00126                 }
00127                 m_tGuiImageArray.clear();
00128                 for(i=0; i<m_tGuiContainerArray.size(); i++)
00129                 {
00130                         delete m_tGuiContainerArray[i];
00131                 }
00132                 m_tGuiContainerArray.clear();
00133                 for(i=0; i<m_tGuiListModelArray.size(); i++)
00134                 {
00135                         delete m_tGuiListModelArray[i];
00136                 }
00137                 m_tGuiListModelArray.clear();
00138                 if(m_pInput)
00139                 {
00140                         delete m_pInput;
00141                         m_pInput = NULL;
00142                 }
00143                 if(m_pGraphics)
00144                 {
00145                         delete m_pGraphics;
00146                         m_pGraphics = NULL;
00147                 }
00148                 if(m_pImageLoader)
00149                 {
00150                         delete m_pImageLoader;
00151                         m_pImageLoader = NULL;
00152                 }
00153                 if(m_pGui)
00154                 {
00155                         delete m_pGui;
00156                         m_pGui = NULL;
00157                 }
00158         }
00159 }
00160 
00162 void K3dGui::DrawGui()
00163 {
00164         if(m_bIsLoadGui == true)
00165         {
00166                 if(m_bIsGuiDeleted == false)
00167                 {
00168                         
00169                         m_pGui->logic();
00170                         
00171                         m_pGui->draw();
00172                 }
00173         }
00174 }
00175 
00177 void K3dGui::SetTargetPlane(const int _iWidth, const int _iHeight)
00178 {
00179         m_pGraphics->setTargetPlane(_iWidth, _iHeight);
00180 }
00181 
00183 void K3dGui::LoadGui()
00184 {
00185         cout << "void K3dGui::LoadGui()" << endl;
00186         m_strFc = "void K3dGui::LoadGui() -- ";
00187         
00188         m_bIsLoadGui = false;
00189         
00190         m_pLua = m_pGameData->GetLua();
00191         m_pLua->LuaGetGlobal(K_STR_LOAD_GUI);
00192     if (!m_pLua->LuaIsBoolean(-1))
00193         {
00194         m_strOut = m_strFc + K_STR_LOAD_GUI;
00195                 m_strOut += " is not a boolean number";
00196                 m_pLua->LuaError(m_strOut.GetString().c_str());
00197     }
00198         m_bIsLoadGui = (bool) m_pLua->LuaToBoolean(-1);
00199         if(m_bIsLoadGui == true)
00200         {
00201                 if(m_pGui == NULL)
00202                 {
00203                         m_pGui = new gcn::Gui;
00204                 }
00205                 TGraphicOption *ptGOption = m_pGameData->GetGraphicOption();
00206                 int iWidth = ptGOption->iWidth;
00207                 int iHeight = ptGOption->iHeight;
00208                 
00209                 SDL_EnableUNICODE(1);
00210                 
00211                 SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
00212                 m_pImageLoader = new gcn::OpenGLSDLImageLoader();
00213                 
00214                 
00215                 gcn::Image::setImageLoader(m_pImageLoader);
00216                 m_pGraphics = new gcn::OpenGLGraphics();
00217                 
00218                 
00219                 m_pGraphics->setTargetPlane(iWidth, iHeight);
00220                 m_pInput = new gcn::SDLInput();
00221                 
00222                 m_pGui->setGraphics(m_pGraphics);
00223                 
00224                 m_pGui->setInput(m_pInput);
00225                 LoadGuiImages();
00226                 LoadGuiIcons();
00227                 LoadGuiFonts();
00228                 LoadGuiLabels();
00229                 LoadGuiButtons();
00230                 LoadGuiTextFields();
00231                 LoadGuiTextBoxes();
00232                 LoadGuiListModels();
00233                 LoadGuiListBoxes();
00234                 LoadGuiDropDown();
00235                 LoadGuiCheckBoxes();
00236                 LoadGuiRadioButtons();
00237                 LoadGuiSliders();
00238                 LoadGuiContainers();
00239                 LoadGuiScrollAreas();
00240                 LoadGuiWindows();
00241                 SetGuiDependencies();
00242                 m_bIsGuiDeleted = false;
00243         }
00244 }
00245 
00247 void K3dGui::LoadGuiImages()
00248 {
00249         cout << "void K3dGui::LoadGuiImages()" << endl;
00250         
00251         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_IMAGES);
00252     if (!m_pLua->LuaIsNumber(-1))
00253         {
00254         m_strOut = m_strFc + K_STR_NUM_GUI_IMAGES;
00255                 m_strOut += " is not a valid number";
00256                 m_pLua->LuaError(m_strOut.GetString().c_str());
00257     }
00258         int iNum = (int) m_pLua->LuaToNumber(-1);
00259         for(int i=0; i<iNum; i++)
00260         {
00261                 K3dString kString(K_STR_GUI_IMAGE);
00262                 
00263                 kString.AddNumber(i);
00264                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00265                 if (!m_pLua->LuaIsTable(-1))
00266                 {
00267                         m_strOut = m_strFc + kString;
00268                         m_strOut += " is not a valid line table";
00269                         m_pLua->LuaError(m_strOut.GetString().c_str());
00270                 }
00271                 const char* strTexture = m_pLua->LuaGetFieldString(K_STR_TEXTURE_TABLE);
00272                 K3dString strTextureName = m_pGameData->GetPath(K_PATH_APP) + strTexture;
00273                 gcn::Image* pImage = gcn::Image::load(strTextureName.GetString().c_str());
00274                 
00275                 K3dGuiImage *pK3dImage = new K3dGuiImage();
00276                 m_tGuiImageArray.push_back(pK3dImage);
00277                 pK3dImage->SetImage(pImage);
00278                 pK3dImage->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00279                 pK3dImage->GetObjectType() = K3D_GUI_IMAGE_OBJ;
00280                 pK3dImage->GetObjectId() = (int) m_tGuiImageArray.size() -1;
00281         }
00282 }
00283 
00285 void K3dGui::LoadGuiIcons()
00286 {
00287         cout << "void K3dGui::LoadGuiIcons()" << endl;
00288         
00289         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_ICONS);
00290     if (!m_pLua->LuaIsNumber(-1))
00291         {
00292         m_strOut = m_strFc + K_STR_NUM_GUI_ICONS;
00293                 m_strOut += " is not a valid number";
00294                 m_pLua->LuaError(m_strOut.GetString().c_str());
00295     }
00296         int iNum = (int) m_pLua->LuaToNumber(-1);
00297         for(int i=0; i<iNum; i++)
00298         {
00299                 K3dString kString(K_STR_GUI_ICON);
00300                 
00301                 kString.AddNumber(i);
00302                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00303                 if (!m_pLua->LuaIsTable(-1))
00304                 {
00305                         m_strOut = m_strFc + kString;
00306                         m_strOut += " is not a valid line table";
00307                         m_pLua->LuaError(m_strOut.GetString().c_str());
00308                 }
00309                 const char* strImage = m_pLua->LuaGetFieldString(K_STR_IMAGE);
00310                 
00311                 K3dGuiImage *pImage = FindImage(strImage);
00312                 if(pImage)
00313                 {
00314                         
00315                         K3dGuiIcon* pIcon = new K3dGuiIcon(pImage->GetImage());
00316                         m_tGuiIconArray.push_back(pIcon);
00317                         pIcon->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00318                         pIcon->GetIsResizeContent() = m_pLua->LuaGetFieldBool(K_STR_RESIZE_CONTENT);
00319                         pIcon->GetObjectType() = K3D_GUI_ICON_OBJ;
00320                         pIcon->GetObjectId() = (int) m_tGuiIconArray.size() -1;
00321                 }
00322                 else
00323                 {
00324                         cerr << "Error :: void K3dGui::LoadGuiIcons() - Image Object " << strImage << " doesn`t exists !!!" << endl;
00325                 }
00326         }
00327 }
00328 
00330 void K3dGui::LoadGuiFonts()
00331 {
00332         cout << "void K3dGui::LoadGuiFonts()" << endl;
00333         
00334         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_FONTS);
00335     if (!m_pLua->LuaIsNumber(-1))
00336         {
00337         m_strOut = m_strFc + K_STR_NUM_GUI_FONTS;
00338                 m_strOut += " is not a valid number";
00339                 m_pLua->LuaError(m_strOut.GetString().c_str());
00340     }
00341         int iNum = (int) m_pLua->LuaToNumber(-1);
00342         for(int i=0; i<iNum; i++)
00343         {
00344                 K3dString kString(K_STR_GUI_FONT);
00345                 
00346                 kString.AddNumber(i);
00347                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00348                 if (!m_pLua->LuaIsTable(-1))
00349                 {
00350                         m_strOut = m_strFc + kString;
00351                         m_strOut += " is not a valid line table";
00352                         m_pLua->LuaError(m_strOut.GetString().c_str());
00353                 }
00354                 const char* strFont = m_pLua->LuaGetFieldString(K_STR_FONT_LOWER);
00355                 const char* strGlyph = m_pLua->LuaGetFieldString(K_STR_GLYPH);
00356                 K3dString strFontName = m_pGameData->GetPath(K_PATH_APP) + strFont;
00357                 
00358                 K3dGuiImageFont *pFont = new K3dGuiImageFont(strFontName.GetString(), strGlyph);
00359                 m_tGuiFontArray.push_back(pFont);
00360                 
00361                 gcn::Widget::setGlobalFont(pFont);
00362                 pFont->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00363                 pFont->GetObjectType() = K3D_GUI_FONT_OBJ;
00364                 pFont->GetObjectId() = (int) m_tGuiFontArray.size() -1;
00365         }
00366 }
00367 
00369 void K3dGui::LoadGuiLabels()
00370 {
00371         cout << "void K3dGui::LoadGuiLabels()" << endl;
00372         
00373         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_LABELS);
00374     if (!m_pLua->LuaIsNumber(-1))
00375         {
00376         m_strOut = m_strFc + K_STR_NUM_GUI_LABELS;
00377                 m_strOut += " is not a valid number";
00378                 m_pLua->LuaError(m_strOut.GetString().c_str());
00379     }
00380         int iNum = (int) m_pLua->LuaToNumber(-1);
00381         for(int i=0; i<iNum; i++)
00382         {
00383                 K3dString kString(K_STR_GUI_LABEL);
00384                 
00385                 kString.AddNumber(i);
00386                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00387                 if (!m_pLua->LuaIsTable(-1))
00388                 {
00389                         m_strOut = m_strFc + kString;
00390                         m_strOut += " is not a valid line table";
00391                         m_pLua->LuaError(m_strOut.GetString().c_str());
00392                 }
00393                 const char* strCaption = m_pLua->LuaGetFieldString(K_STR_CAPTION);
00394                 K3dGuiLabel *pLabel = new K3dGuiLabel(strCaption);
00395                 m_tGuiLabelArray.push_back(pLabel);
00396                 pLabel->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00397                 pLabel->GetPosX() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_X);
00398                 pLabel->GetPosY() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_Y);
00399                 pLabel->GetObjectType() = K3D_GUI_LABEL_OBJ;
00400                 pLabel->GetObjectId() = (int) m_tGuiLabelArray.size() -1;
00401                 cout << "Label Name = " << m_tGuiLabelArray[pLabel->GetObjectId()]->GetName().GetString() << endl;
00402         }
00403 }
00404 
00406 void K3dGui::LoadGuiButtons()
00407 {
00408         cout << "void K3dGui::LoadGuiButtons()" << endl;
00409         
00410         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_BUTTONS);
00411     if (!m_pLua->LuaIsNumber(-1))
00412         {
00413         m_strOut = m_strFc + K_STR_NUM_GUI_BUTTONS;
00414                 m_strOut += " is not a valid number";
00415                 m_pLua->LuaError(m_strOut.GetString().c_str());
00416     }
00417         int iNum = (int) m_pLua->LuaToNumber(-1);
00418         for(int i=0; i<iNum; i++)
00419         {
00420                 K3dString kString(K_STR_GUI_BUTTON);
00421                 
00422                 kString.AddNumber(i);
00423                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00424                 if (!m_pLua->LuaIsTable(-1))
00425                 {
00426                         m_strOut = m_strFc + kString;
00427                         m_strOut += " is not a valid line table";
00428                         m_pLua->LuaError(m_strOut.GetString().c_str());
00429                 }
00430                 const char* strCaption = m_pLua->LuaGetFieldString(K_STR_CAPTION);
00431                 K3dGuiButton *pButton = new K3dGuiButton(strCaption);
00432                 m_tGuiButtonArray.push_back(pButton);
00433                 pButton->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00434                 pButton->setWidth((int) m_pLua->LuaGetFieldNumber(K_STR_WIDTH));
00435                 pButton->setHeight((int) m_pLua->LuaGetFieldNumber(K_STR_HEIGHT));
00436                 pButton->GetPosX() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_X);
00437                 pButton->GetPosY() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_Y);
00438                 pButton->GetObjectType() = K3D_GUI_BUTTON_OBJ;
00439                 pButton->GetObjectId() = (int) m_tGuiButtonArray.size() -1;
00440         }
00441 }
00442 
00444 void K3dGui::LoadGuiTextFields()
00445 {
00446         cout << "void K3dGui::LoadGuiTextFields()" << endl;
00447         
00448         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_TEXT_FIELDS);
00449     if (!m_pLua->LuaIsNumber(-1))
00450         {
00451         m_strOut = m_strFc + K_STR_NUM_GUI_TEXT_FIELDS;
00452                 m_strOut += " is not a valid number";
00453                 m_pLua->LuaError(m_strOut.GetString().c_str());
00454     }
00455         int iNum = (int) m_pLua->LuaToNumber(-1);
00456         for(int i=0; i<iNum; i++)
00457         {
00458                 K3dString kString(K_STR_GUI_TEXT_FIELD);
00459                 
00460                 kString.AddNumber(i);
00461                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00462                 if (!m_pLua->LuaIsTable(-1))
00463                 {
00464                         m_strOut = m_strFc + kString;
00465                         m_strOut += " is not a valid line table";
00466                         m_pLua->LuaError(m_strOut.GetString().c_str());
00467                 }
00468                 const char* strText = m_pLua->LuaGetFieldString(K_STR_TEXT);
00469                 K3dGuiTextField *pTextField = new K3dGuiTextField(strText);
00470                 m_tGuiTextFieldArray.push_back(pTextField);
00471                 pTextField->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00472                 pTextField->GetPosX() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_X);
00473                 pTextField->GetPosY() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_Y);
00474                 pTextField->GetObjectType() = K3D_GUI_TEXT_FIELD_OBJ;
00475                 pTextField->GetObjectId() = (int) m_tGuiTextFieldArray.size() -1;
00476         }
00477 }
00478 
00480 void K3dGui::LoadGuiTextBoxes()
00481 {
00482         cout << "void K3dGui::LoadGuiTextBoxes()" << endl;
00483         
00484         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_TEXT_BOXES);
00485     if (!m_pLua->LuaIsNumber(-1))
00486         {
00487         m_strOut = m_strFc + K_STR_NUM_GUI_TEXT_BOXES;
00488                 m_strOut += " is not a valid number";
00489                 m_pLua->LuaError(m_strOut.GetString().c_str());
00490     }
00491         int iNum = (int) m_pLua->LuaToNumber(-1);
00492         for(int i=0; i<iNum; i++)
00493         {
00494                 K3dString kString(K_STR_GUI_TEXT_BOX);
00495                 
00496                 kString.AddNumber(i);
00497                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00498                 if (!m_pLua->LuaIsTable(-1))
00499                 {
00500                         m_strOut = m_strFc + kString;
00501                         m_strOut += " is not a valid line table";
00502                         m_pLua->LuaError(m_strOut.GetString().c_str());
00503                 }
00504                 const char* strText = m_pLua->LuaGetFieldString(K_STR_TEXT);
00505                 K3dGuiTextBox *pTextBox = new K3dGuiTextBox(strText);
00506                 m_tGuiTextBoxArray.push_back(pTextBox);
00507                 pTextBox->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00508                 pTextBox->GetObjectType() = K3D_GUI_TEXT_BOX_OBJ;
00509                 pTextBox->GetObjectId() = (int) m_tGuiTextBoxArray.size() -1;
00510         }
00511 }
00512 
00514 void K3dGui::LoadGuiScrollAreas()
00515 {
00516         cout << "void K3dGui::LoadGuiScrollAreas()" << endl;
00517         
00518         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_SCROLL_AREAS);
00519     if (!m_pLua->LuaIsNumber(-1))
00520         {
00521         m_strOut = m_strFc + K_STR_NUM_GUI_SCROLL_AREAS;
00522                 m_strOut += " is not a valid number";
00523                 m_pLua->LuaError(m_strOut.GetString().c_str());
00524     }
00525         int iNum = (int) m_pLua->LuaToNumber(-1);
00526         for(int i=0; i<iNum; i++)
00527         {
00528                 K3dString kString(K_STR_GUI_SCROLL_AREA);
00529                 
00530                 kString.AddNumber(i);
00531                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00532                 if (!m_pLua->LuaIsTable(-1))
00533                 {
00534                         m_strOut = m_strFc + kString;
00535                         m_strOut += " is not a valid line table";
00536                         m_pLua->LuaError(m_strOut.GetString().c_str());
00537                 }
00538                 const char* strContent = m_pLua->LuaGetFieldString(K_STR_CONTENT);
00539                 CreateScrollArea(strContent);
00540         }
00541 }
00542 
00544 void K3dGui::CreateScrollArea(const char* _strContent)
00545 {
00546         cout << "void K3dGui::CreateScrollArea(const char* _strContent)" << endl;
00547         K3dGuiScrollArea *pScrollArea;
00548 
00549         K3dGuiObject *pObject = (K3dGuiObject*) FindGuiObject(_strContent);
00550         if(pObject)
00551         {
00552                 EK3dGuiObjType eObjType = pObject->GetObjectType();
00553                 int iObjId = pObject->GetObjectId();
00554                 switch (eObjType)
00555                 {
00556                         case K3D_GUI_TEXT_BOX_OBJ:
00557                                 pScrollArea = new K3dGuiScrollArea(m_tGuiTextBoxArray[iObjId]);
00558                                 pScrollArea->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00559                                 pScrollArea->GetPosX() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_X);
00560                                 pScrollArea->GetPosY() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_Y);
00561                                 m_tGuiScrollAreaArray.push_back(pScrollArea);
00562                                 pScrollArea->setWidth((int) m_pLua->LuaGetFieldNumber(K_STR_WIDTH));
00563                                 pScrollArea->setHeight((int) m_pLua->LuaGetFieldNumber(K_STR_HEIGHT));
00564                                 pScrollArea->setBorderSize((int) m_pLua->LuaGetFieldNumber(K_STR_BORDER_SIZE));
00565                                 break;
00566                         case K3D_GUI_LIST_BOX_OBJ:
00567                                 pScrollArea = new K3dGuiScrollArea(m_tGuiListBoxArray[iObjId]);
00568                                 pScrollArea->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00569                                 pScrollArea->GetPosX() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_X);
00570                                 pScrollArea->GetPosY() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_Y);
00571                                 m_tGuiScrollAreaArray.push_back(pScrollArea);
00572                                 pScrollArea->setWidth((int) m_pLua->LuaGetFieldNumber(K_STR_WIDTH));
00573                                 pScrollArea->setHeight((int) m_pLua->LuaGetFieldNumber(K_STR_HEIGHT));
00574                                 pScrollArea->setBorderSize((int) m_pLua->LuaGetFieldNumber(K_STR_BORDER_SIZE));
00575                                 break;
00576                         case K3D_GUI_CONTAINER_OBJ:
00577                                 pScrollArea = new K3dGuiScrollArea(m_tGuiContainerArray[iObjId]);
00578                                 pScrollArea->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00579                                 pScrollArea->GetPosX() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_X);
00580                                 pScrollArea->GetPosY() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_Y);
00581                                 m_tGuiScrollAreaArray.push_back(pScrollArea);
00582                                 pScrollArea->setWidth((int) m_pLua->LuaGetFieldNumber(K_STR_WIDTH));
00583                                 pScrollArea->setHeight((int) m_pLua->LuaGetFieldNumber(K_STR_HEIGHT));
00584                                 pScrollArea->setBorderSize((int) m_pLua->LuaGetFieldNumber(K_STR_BORDER_SIZE));
00585                                 break;
00586                         default:
00587                                 break;
00588                 }
00589         }
00590         else    
00591         {
00592                 cerr << "Error in void K3dGui::CreateScrollArea(): Object " << _strContent << " doesn`t exist!!!" << endl;
00593         }
00594         
00595         
00596 
00597 
00598 
00599 
00600 
00601 
00602 
00603 
00604 
00605 
00606 
00607 
00608 
00609 
00610 
00611 
00612 
00613 
00614 
00615 
00616 
00617 
00618 
00619 
00620 
00621 
00622 
00623 
00624 
00625 
00626 
00627 
00628 
00629 
00630 
00631 
00632 
00633 
00634 
00635 
00636 
00637 
00638 
00639 
00640 
00641 
00642 
00643 
00644 
00645 
00646 
00647 
00648 
00649 
00650 
00651 
00652 
00653 }
00654 
00657 K3dGuiObject *K3dGui::FindGuiObject(const char* _strName)
00658 {
00659         K3dString kStr = _strName;
00660         unsigned int i=0;
00661         for(i=0; i<m_tGuiTextBoxArray.size(); i++)
00662         {
00663                 if(kStr == m_tGuiTextBoxArray[i]->GetName())
00664                 {
00665                         return m_tGuiTextBoxArray[i];
00666                 }
00667         }
00668         for(i=0; i<m_tGuiListModelArray.size(); i++)
00669         {
00670                 if(kStr == m_tGuiListModelArray[i]->GetName())
00671                 {
00672                         return m_tGuiListModelArray[i];
00673                 }
00674         }
00675         for(i=0; i<m_tGuiWindowArray.size(); i++)
00676         {
00677                 if(kStr == m_tGuiWindowArray[i]->GetName())
00678                 {
00679                         return m_tGuiWindowArray[i];
00680                 }
00681         }
00682         for(i=0; i<m_tGuiLabelArray.size(); i++)
00683         {
00684                 if(kStr == m_tGuiLabelArray[i]->GetName())
00685                 {
00686                         return m_tGuiLabelArray[i];
00687                 }
00688         }
00689         for(i=0; i<m_tGuiIconArray.size(); i++)
00690         {
00691                 if(kStr == m_tGuiIconArray[i]->GetName())
00692                 {
00693                         return m_tGuiIconArray[i];
00694                 }
00695         }
00696         for(i=0; i<m_tGuiButtonArray.size(); i++)
00697         {
00698                 if(kStr == m_tGuiButtonArray[i]->GetName())
00699                 {
00700                         return m_tGuiButtonArray[i];
00701                 }
00702         }
00703         for(i=0; i<m_tGuiFontArray.size(); i++)
00704         {
00705                 if(kStr == m_tGuiFontArray[i]->GetName())
00706                 {
00707                         return m_tGuiFontArray[i];
00708                 }
00709         }
00710         for(i=0; i<m_tGuiTextFieldArray.size(); i++)
00711         {
00712                 if(kStr == m_tGuiTextFieldArray[i]->GetName())
00713                 {
00714                         return m_tGuiTextFieldArray[i];
00715                 }
00716         }
00717         for(i=0; i<m_tGuiScrollAreaArray.size(); i++)
00718         {
00719                 if(kStr == m_tGuiScrollAreaArray[i]->GetName())
00720                 {
00721                         return m_tGuiScrollAreaArray[i];
00722                 }
00723         }
00724         for(i=0; i<m_tGuiListBoxArray.size(); i++)
00725         {
00726                 if(kStr == m_tGuiListBoxArray[i]->GetName())
00727                 {
00728                         return m_tGuiListBoxArray[i];
00729                 }
00730         }
00731         for(i=0; i<m_tGuiDropDownArray.size(); i++)
00732         {
00733                 if(kStr == m_tGuiDropDownArray[i]->GetName())
00734                 {
00735                         return m_tGuiDropDownArray[i];
00736                 }
00737         }
00738         for(i=0; i<m_tGuiCheckBoxArray.size(); i++)
00739         {
00740                 if(kStr == m_tGuiCheckBoxArray[i]->GetName())
00741                 {
00742                         return m_tGuiCheckBoxArray[i];
00743                 }
00744         }
00745         for(i=0; i<m_tGuiRadioButtonArray.size(); i++)
00746         {
00747                 if(kStr == m_tGuiRadioButtonArray[i]->GetName())
00748                 {
00749                         return m_tGuiRadioButtonArray[i];
00750                 }
00751         }
00752         for(i=0; i<m_tGuiSliderArray.size(); i++)
00753         {
00754                 if(kStr == m_tGuiSliderArray[i]->GetName())
00755                 {
00756                         return m_tGuiSliderArray[i];
00757                 }
00758         }
00759         for(i=0; i<m_tGuiImageArray.size(); i++)
00760         {
00761                 if(kStr == m_tGuiImageArray[i]->GetName())
00762                 {
00763                         return m_tGuiImageArray[i];
00764                 }
00765         }
00766         for(i=0; i<m_tGuiContainerArray.size(); i++)
00767         {
00768                 if(kStr == m_tGuiContainerArray[i]->GetName())
00769                 {
00770                         return m_tGuiContainerArray[i];
00771                 }
00772         }
00773         return NULL;
00774 }
00775 
00777 void K3dGui::LoadGuiListModels()
00778 {
00779         cout << "void K3dGui::LoadGuiListModels()" << endl;
00780         
00781         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_LIST_MODELS);
00782     if (!m_pLua->LuaIsNumber(-1))
00783         {
00784         m_strOut = m_strFc + K_STR_NUM_GUI_LIST_MODELS;
00785                 m_strOut += " is not a valid number";
00786                 m_pLua->LuaError(m_strOut.GetString().c_str());
00787     }
00788         int iNum = (int) m_pLua->LuaToNumber(-1);
00789         for(int i=0; i<iNum; i++)
00790         {
00791                 K3dString kString(K_STR_GUI_LIST_MODEL);
00792                 
00793                 kString.AddNumber(i);
00794                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00795                 if (!m_pLua->LuaIsTable(-1))
00796                 {
00797                         m_strOut = m_strFc + kString;
00798                         m_strOut += " is not a valid line table";
00799                         m_pLua->LuaError(m_strOut.GetString().c_str());
00800                 }
00801                 K3dGuiListModel *pListModel = new K3dGuiListModel;
00802                 m_tGuiListModelArray.push_back(pListModel);
00803                 pListModel->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00804                 pListModel->GetObjectType() = K3D_GUI_LIST_MODEL_OBJ;
00805                 pListModel->GetObjectId() = (int) m_tGuiListModelArray.size() -1;
00806                 int iNumElements = (int) m_pLua->LuaGetFieldNumber(K_STR_GUI_NUM_ELEMENTS);
00807                 for(int el=0; el<iNumElements; el++)
00808                 {
00809                         kString.GetString() = K_STR_ELEMENT;
00810                         
00811                         kString.AddNumber(el);
00812                         
00813                         const char* strEl = m_pLua->LuaGetFieldString(kString.GetString().c_str());
00814                         pListModel->AddElement(strEl);
00815                 }
00816         }
00817 }
00818 
00820 void K3dGui::LoadGuiListBoxes()
00821 {
00822         cout << "void K3dGui::LoadGuiListBoxes()" << endl;
00823         
00824         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_LIST_BOXES);
00825     if (!m_pLua->LuaIsNumber(-1))
00826         {
00827         m_strOut = m_strFc + K_STR_NUM_GUI_LIST_BOXES;
00828                 m_strOut += " is not a valid number";
00829                 m_pLua->LuaError(m_strOut.GetString().c_str());
00830     }
00831         int iNum = (int) m_pLua->LuaToNumber(-1);
00832         for(int i=0; i<iNum; i++)
00833         {
00834                 K3dString kString(K_STR_GUI_LIST_BOX);
00835                 
00836                 kString.AddNumber(i);
00837                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00838                 if (!m_pLua->LuaIsTable(-1))
00839                 {
00840                         m_strOut = m_strFc + kString;
00841                         m_strOut += " is not a valid line table";
00842                         m_pLua->LuaError(m_strOut.GetString().c_str());
00843                 }
00844                 const char* strContent = m_pLua->LuaGetFieldString(K_STR_CONTENT);
00845                 CreateListBox(strContent);
00846         }
00847 }
00848 
00850 void K3dGui::CreateListBox(const char* _strContent)
00851 {
00852         cout << "void K3dGui::CreateListBox(const char* _strContent)" << endl;
00853         K3dGuiListModel *pListModel = FindListModel(_strContent);
00854         if(pListModel)
00855         {
00856                 K3dGuiListBox *pListBox = new K3dGuiListBox(pListModel);
00857                 m_tGuiListBoxArray.push_back(pListBox);
00858                 pListBox->setBorderSize((int) m_pLua->LuaGetFieldNumber(K_STR_BORDER_SIZE));
00859                 pListBox->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00860                 pListBox->GetObjectType() = K3D_GUI_LIST_BOX_OBJ;
00861                 pListBox->setWidth((int) m_pLua->LuaGetFieldNumber(K_STR_WIDTH));
00862                 pListBox->setHeight((int) m_pLua->LuaGetFieldNumber(K_STR_HEIGHT));
00863                 pListBox->GetObjectId() = (int) m_tGuiListBoxArray.size() -1;
00864         }
00865         else
00866         {
00867                 cerr << "Error in void K3dGui::CreateListBox(): Object " << _strContent << " doesn`t exist!!!" << endl;
00868         }
00869 }
00870 
00873 K3dGuiListModel *K3dGui::FindListModel(const char* _strName)
00874 {
00875         K3dString kStr = _strName;
00876         for(unsigned int i=0; i<m_tGuiListModelArray.size(); i++)
00877         {
00878                 if(kStr == m_tGuiListModelArray[i]->GetName())
00879                 {
00880                         return m_tGuiListModelArray[i];
00881                 }
00882         }
00883         return NULL;
00884 }
00885 
00887 void K3dGui::LoadGuiDropDown()
00888 {
00889         cout << "void K3dGui::LoadGuiDropDown()" << endl;
00890         
00891         m_pLua->LuaGetGlobal(K_STR_GUI_NUM_DROP_DOWN);
00892     if (!m_pLua->LuaIsNumber(-1))
00893         {
00894         m_strOut = m_strFc + K_STR_GUI_NUM_DROP_DOWN;
00895                 m_strOut += " is not a valid number";
00896                 m_pLua->LuaError(m_strOut.GetString().c_str());
00897     }
00898         int iNum = (int) m_pLua->LuaToNumber(-1);
00899         for(int i=0; i<iNum; i++)
00900         {
00901                 K3dString kString(K_STR_GUI_DROP_DOWN);
00902                 
00903                 kString.AddNumber(i);
00904                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00905                 if (!m_pLua->LuaIsTable(-1))
00906                 {
00907                         m_strOut = m_strFc + kString;
00908                         m_strOut += " is not a valid line table";
00909                         m_pLua->LuaError(m_strOut.GetString().c_str());
00910                 }
00911                 const char* strContent = m_pLua->LuaGetFieldString(K_STR_CONTENT);
00912                 CreateDropDown(strContent);
00913         }
00914 }
00915 
00917 void K3dGui::CreateDropDown(const char* _strContent)
00918 {
00919         cout << "void K3dGui::CreateDropDown(const char* _strContent)" << endl;
00920         
00921         K3dGuiListModel *pListModel = FindListModel(_strContent);
00922         if(pListModel)
00923         {
00924                 K3dGuiDropDown *pDropDown = new K3dGuiDropDown(pListModel);
00925                 m_tGuiDropDownArray.push_back(pDropDown);
00926                 pDropDown->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00927                 pDropDown->GetPosX() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_X);
00928                 pDropDown->GetPosY() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_Y);
00929                 pDropDown->GetObjectType() = K3D_GUI_DROP_DOWN_OBJ;
00930                 pDropDown->GetObjectId() = (int) m_tGuiDropDownArray.size() -1;
00931         }
00932         else
00933         {
00934                 cerr << "Error in void K3dGui::CreateDropDown(): Object " << _strContent << " doesn`t exist!!!" << endl;
00935         }
00936         
00937 
00938 
00939 
00940 
00941 
00942 
00943 
00944 
00945 
00946 
00947 
00948 
00949 
00950 
00951 
00952 
00953 
00954 }
00955 
00957 void K3dGui::LoadGuiCheckBoxes()
00958 {
00959         cout << "void K3dGui::LoadGuiCheckBoxes()" << endl;
00960         
00961         m_pLua->LuaGetGlobal(K_STR_GUI_NUM_CHECK_BOXES);
00962     if (!m_pLua->LuaIsNumber(-1))
00963         {
00964         m_strOut = m_strFc + K_STR_GUI_NUM_CHECK_BOXES;
00965                 m_strOut += " is not a valid number";
00966                 m_pLua->LuaError(m_strOut.GetString().c_str());
00967     }
00968         int iNum = (int) m_pLua->LuaToNumber(-1);
00969         for(int i=0; i<iNum; i++)
00970         {
00971                 K3dString kString(K_STR_GUI_CHECK_BOX);
00972                 
00973                 kString.AddNumber(i);
00974                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
00975                 if (!m_pLua->LuaIsTable(-1))
00976                 {
00977                         m_strOut = m_strFc + kString;
00978                         m_strOut += " is not a valid line table";
00979                         m_pLua->LuaError(m_strOut.GetString().c_str());
00980                 }
00981                 const char* strCaption = m_pLua->LuaGetFieldString(K_STR_CAPTION);
00982                 K3dGuiCheckBox *pCheckBox = new K3dGuiCheckBox(strCaption);
00983                 m_tGuiCheckBoxArray.push_back(pCheckBox);
00984                 pCheckBox->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
00985                 pCheckBox->setMarked(m_pLua->LuaGetFieldBool(K_STR_MARKED));
00986                 pCheckBox->GetPosX() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_X);
00987                 pCheckBox->GetPosY() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_Y);
00988                 pCheckBox->GetObjectType() = K3D_GUI_CHECK_BOX_OBJ;
00989                 pCheckBox->GetObjectId() = (int) m_tGuiCheckBoxArray.size() -1;
00990         }
00991 }
00992 
00994 void K3dGui::LoadGuiRadioButtons()
00995 {
00996         cout << "void K3dGui::LoadGuiRadioButtons()" << endl;
00997         
00998         m_pLua->LuaGetGlobal(K_STR_GUI_NUM_RADIO_BUTTONS);
00999     if (!m_pLua->LuaIsNumber(-1))
01000         {
01001         m_strOut = m_strFc + K_STR_GUI_NUM_RADIO_BUTTONS;
01002                 m_strOut += " is not a valid number";
01003                 m_pLua->LuaError(m_strOut.GetString().c_str());
01004     }
01005         int iNum = (int) m_pLua->LuaToNumber(-1);
01006         for(int i=0; i<iNum; i++)
01007         {
01008                 K3dString kString(K_STR_GUI_RADIO_BUTTON);
01009                 
01010                 kString.AddNumber(i);
01011                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
01012                 if (!m_pLua->LuaIsTable(-1))
01013                 {
01014                         m_strOut = m_strFc + kString;
01015                         m_strOut += " is not a valid line table";
01016                         m_pLua->LuaError(m_strOut.GetString().c_str());
01017                 }
01018                 const char* strCaption = m_pLua->LuaGetFieldString(K_STR_CAPTION);
01019                 const char* strGroup = m_pLua->LuaGetFieldString(K_STR_GROUP);
01020                 bool bIsMarked = m_pLua->LuaGetFieldBool(K_STR_MARKED);
01021                 K3dGuiRadioButton *pRadioButton = new K3dGuiRadioButton(strCaption, strGroup, bIsMarked);
01022                 m_tGuiRadioButtonArray.push_back(pRadioButton);
01023                 pRadioButton->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
01024                 pRadioButton->GetPosX() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_X);
01025                 pRadioButton->GetPosY() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_Y);
01026                 pRadioButton->GetObjectType() = K3D_GUI_RADIO_BUTTON_OBJ;
01027                 pRadioButton->GetObjectId() = (int) m_tGuiRadioButtonArray.size() -1;
01028         }
01029 }
01030 
01032 void K3dGui::LoadGuiSliders()
01033 {
01034         cout << "void K3dGui::LoadGuiSliders()" << endl;
01035         
01036         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_SLIDERS);
01037     if (!m_pLua->LuaIsNumber(-1))
01038         {
01039         m_strOut = m_strFc + K_STR_NUM_SLIDERS;
01040                 m_strOut += " is not a valid number";
01041                 m_pLua->LuaError(m_strOut.GetString().c_str());
01042     }
01043         int iNum = (int) m_pLua->LuaToNumber(-1);
01044         for(int i=0; i<iNum; i++)
01045         {
01046                 K3dString kString(K_STR_GUI_SLIDER);
01047                 
01048                 kString.AddNumber(i);
01049                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
01050                 if (!m_pLua->LuaIsTable(-1))
01051                 {
01052                         m_strOut = m_strFc + kString;
01053                         m_strOut += " is not a valid line table";
01054                         m_pLua->LuaError(m_strOut.GetString().c_str());
01055                 }
01056                 double dScaleStart = m_pLua->LuaGetFieldNumber(K_STR_SCALE_START);
01057                 double dScaleEnd = m_pLua->LuaGetFieldNumber(K_STR_SCALE_END);
01058                 int iWidth = (int) m_pLua->LuaGetFieldNumber(K_STR_WIDTH);
01059                 int iHeight = (int) m_pLua->LuaGetFieldNumber(K_STR_HEIGHT);
01060                 K3dGuiSlider* pSlider = new K3dGuiSlider(dScaleStart, dScaleEnd);
01061                 m_tGuiSliderArray.push_back(pSlider);
01062                 pSlider->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
01063                 pSlider->setSize(iWidth, iHeight);
01064                 pSlider->GetPosX() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_X);
01065                 pSlider->GetPosY() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_Y);
01066                 pSlider->GetObjectType() = K3D_GUI_SLIDER_OBJ;
01067                 pSlider->GetObjectId() = (int) m_tGuiSliderArray.size() -1;
01068         }       
01069 }
01070 
01071 
01073 void K3dGui::LoadGuiContainers()
01074 {
01075         cout << "void K3dGui::LoadGuiContainers()" << endl;
01076         
01077         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_CONTAINERS);
01078     if (!m_pLua->LuaIsNumber(-1))
01079         {
01080         m_strOut = m_strFc + K_STR_NUM_GUI_CONTAINERS;
01081                 m_strOut += " is not a valid number";
01082                 m_pLua->LuaError(m_strOut.GetString().c_str());
01083     }
01084         int iNum = (int) m_pLua->LuaToNumber(-1);
01085         for(int i=0; i<iNum; i++)
01086         {
01087                 K3dString kString(K_STR_GUI_CONTAINER);
01088                 
01089                 kString.AddNumber(i);
01090                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
01091                 if (!m_pLua->LuaIsTable(-1))
01092                 {
01093                         m_strOut = m_strFc + kString;
01094                         m_strOut += " is not a valid line table";
01095                         m_pLua->LuaError(m_strOut.GetString().c_str());
01096                 }
01097                 int x = (int) m_pLua->LuaGetFieldNumber(K_STR_X);
01098                 int y = (int) m_pLua->LuaGetFieldNumber(K_STR_Y);
01099                 int width = (int) m_pLua->LuaGetFieldNumber(K_STR_WIDTH);
01100                 int height = (int) m_pLua->LuaGetFieldNumber(K_STR_HEIGHT);
01101                 K3dGuiContainer *pContainer = new K3dGuiContainer();
01102                 m_tGuiContainerArray.push_back(pContainer);
01103                 pContainer->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
01104                 pContainer->GetObjectType() = K3D_GUI_CONTAINER_OBJ;
01105                 pContainer->GetObjectId() = (int) m_tGuiContainerArray.size() -1;
01106         pContainer->setSize(width, height);
01107                 bool bTop = m_pLua->LuaGetFieldBool(K_STR_TOP);
01108                 
01109                 pContainer->setDimension(gcn::Rectangle(x, y, width, height));
01110                 if(bTop)
01111                 {
01112                         
01113                         if(m_pGui->getTop() == NULL)
01114                         {
01115                                 m_pGui->setTop(pContainer);
01116                         }
01117                 }
01118                 
01119                 int iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_SLIDERS);
01120                 for(int sl=0; sl<iNumObj; sl++)
01121                 {
01122                         
01123                 kString.GetString() = K_STR_SLIDER;
01124                         
01125                         kString.AddNumber(sl);
01126                         const char* strSliderName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01127                         K3dGuiSlider *pSlider = FindSlider(strSliderName);
01128                         pContainer->add(pSlider, pSlider->GetPosX(), pSlider->GetPosY());
01129                 }
01130                 
01131                 iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_WINS);
01132                 const char* strName = "";
01133                 for(int iId = 0; iId<iNumObj; iId++)
01134                 {
01135                         kString.GetString() = K_STR_WIN;
01136                         
01137                         kString.AddNumber(iId);
01138                         strName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01139                         
01140                         pContainer->AddWinName(strName);
01141                 }
01142         }
01143 }
01144 
01147 K3dGuiSlider *K3dGui::FindSlider(const char* _strSliderName)
01148 {
01149         K3dString kStr = _strSliderName;
01150         for(unsigned int i=0; i<m_tGuiSliderArray.size(); i++)
01151         {
01152                 if(kStr == m_tGuiSliderArray[i]->GetName())
01153                 {
01154                         return m_tGuiSliderArray[i];
01155                 }
01156         }
01157         return NULL;
01158 }
01159 
01161 void K3dGui::LoadGuiWindows()
01162 {
01163         cout << "void K3dGui::LoadGuiWindows()" << endl;
01164         
01165         m_pLua->LuaGetGlobal(K_STR_NUM_GUI_WINS);
01166     if (!m_pLua->LuaIsNumber(-1))
01167         {
01168         m_strOut = m_strFc + K_STR_NUM_GUI_WINS;
01169                 m_strOut += " is not a valid number";
01170                 m_pLua->LuaError(m_strOut.GetString().c_str());
01171     }
01172         int iNum = (int) m_pLua->LuaToNumber(-1);
01173         for(int i=0; i<iNum; i++)
01174         {
01175                 K3dString kString(K_STR_GUI_WIN);
01176                 
01177                 kString.AddNumber(i);
01178                 m_pLua->LuaGetGlobal(kString.GetString().c_str());
01179                 if (!m_pLua->LuaIsTable(-1))
01180                 {
01181                         m_strOut = m_strFc + kString;
01182                         m_strOut += " is not a valid line table";
01183                         m_pLua->LuaError(m_strOut.GetString().c_str());
01184                 }
01185                 const char* strTitle = m_pLua->LuaGetFieldString(K_STR_TITLE);
01186                 K3dGuiWindow *pWin = new K3dGuiWindow(strTitle);
01187                 pWin->GetName() = m_pLua->LuaGetFieldString(K_STR_NAME);
01188                 m_tGuiWindowArray.push_back(pWin);
01189                 pWin->GetObjectType() = K3D_GUI_WIN_OBJ;
01190                 pWin->GetObjectId() = (int) m_tGuiWindowArray.size() -1;
01191                 int x = (int) m_pLua->LuaGetFieldNumber(K_STR_X);
01192                 int y = (int) m_pLua->LuaGetFieldNumber(K_STR_Y);
01193                 int width = (int) m_pLua->LuaGetFieldNumber(K_STR_WIDTH);
01194                 int height = (int) m_pLua->LuaGetFieldNumber(K_STR_HEIGHT);
01195                 bool bTop = m_pLua->LuaGetFieldBool(K_STR_TOP);
01196                 
01197                 pWin->setDimension(gcn::Rectangle(x, y, width, height));
01198                 if(bTop)
01199                 {
01200                         
01201                         if(m_pGui->getTop() == NULL)
01202                         {
01203                                 m_pGui->setTop(pWin);
01204                         }
01205                 }
01206                 int r = (int) m_pLua->LuaGetFieldNumber(K_STR_R);
01207                 int g = (int) m_pLua->LuaGetFieldNumber(K_STR_G);
01208                 int b = (int) m_pLua->LuaGetFieldNumber(K_STR_B);
01209                 int a = (int) m_pLua->LuaGetFieldNumber(K_STR_A);
01210                 pWin->setBaseColor(gcn::Color(r, g, b, a));
01211                 pWin->GetPosX() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_X);
01212                 pWin->GetPosY() = (int) m_pLua->LuaGetFieldNumber(K_STR_POS_Y);
01213                 
01214                 
01215                 pWin->setVisible(m_pLua->LuaGetFieldBool(K_STR_VISIBLE));
01216                 
01217                 int iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_ICONS);
01218                 int iId = 0;
01219                 const char* strName;
01220                 for(iId = 0; iId<iNumObj; iId++)
01221                 {
01222                         kString.GetString() = K_STR_ICON;
01223                         
01224                         kString.AddNumber(iId);
01225                         strName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01226                         K3dGuiIcon *pIcon = FindIcon(strName);
01227                         if(pIcon)
01228                         {
01229                                 
01230                                 pWin->add(pIcon);
01231                                 
01232                                 if(pIcon->GetIsResizeContent())
01233                                 {
01234                                         pWin->resizeToContent();
01235                                 }
01236                         }
01237                         else
01238                         {
01239                                 cerr << "Error in void K3dGui::LoadGuiWindows() - Icon Object " << strName << " doesn`t exist !!!" << endl;
01240                         }
01241                 }
01242                 
01243                 iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_LABELS);
01244                 for(iId = 0; iId<iNumObj; iId++)
01245                 {
01246                         kString.GetString() = K_STR_LABEL;
01247                         
01248                         kString.AddNumber(iId);
01249                         strName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01250                         K3dGuiLabel *pLabel = FindLabel(strName);
01251                         if(pLabel)
01252                         {
01253                                 
01254                                 pWin->add(pLabel, pLabel->GetPosX(), pLabel->GetPosY());
01255                         }
01256                         else
01257                         {
01258                                 cerr << "Error in void K3dGui::LoadGuiWindows() - Label Object " << strName << " doesn`t exist !!!" << endl;
01259                         }
01260                 }
01261                 
01262                 iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_BUTTONS);
01263                 for(iId = 0; iId<iNumObj; iId++)
01264                 {
01265                         kString.GetString() = K_STR_BUTTON;
01266                         
01267                         kString.AddNumber(iId);
01268                         strName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01269                         K3dGuiButton *pButton = FindButton(strName);
01270                         if(pButton)
01271                         {
01272                                 
01273                                 pWin->add(pButton, pButton->GetPosX(), pButton->GetPosY());
01274                         }
01275                         else
01276                         {
01277                                 cerr << "Error in void K3dGui::LoadGuiWindows() - Button Object " << strName << " doesn`t exist !!!" << endl;
01278                         }
01279                 }
01280                 
01281                 iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_TEXTFIELDS);
01282                 for(iId = 0; iId<iNumObj; iId++)
01283                 {
01284                         kString.GetString() = K_STR_TEXTFIELD;
01285                         
01286                         kString.AddNumber(iId);
01287                         strName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01288                         K3dGuiTextField *pTextField = FindTextField(strName);
01289                         if(pTextField)
01290                         {
01291                                 
01292                                 pWin->add(pTextField, pTextField->GetPosX(), pTextField->GetPosY());
01293                         }
01294                         else
01295                         {
01296                                 cerr << "Error in void K3dGui::LoadGuiWindows() - Text Field Object " << strName << " doesn`t exist !!!" << endl;
01297                         }
01298                 }
01299                 
01300                 iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_SCROLL_AREAS);
01301                 for(iId = 0; iId<iNumObj; iId++)
01302                 {
01303                         kString.GetString() = K_STR_SCROLL_AREA;
01304                         
01305                         kString.AddNumber(iId);
01306                         strName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01307                         K3dGuiScrollArea *pScrollArea = FindScrollArea(strName);
01308                         if(pScrollArea)
01309                         {
01310                                 
01311                                 pWin->add(pScrollArea, pScrollArea->GetPosX(), pScrollArea->GetPosY());
01312                         }
01313                         else
01314                         {
01315                                 cerr << "Error in void K3dGui::LoadGuiWindows() - Scroll Area Object " << strName << " doesn`t exist !!!" << endl;
01316                         }
01317                 }
01318                 
01319                 iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_DROP_DOWNS);
01320                 for(iId = 0; iId<iNumObj; iId++)
01321                 {
01322                         kString.GetString() = K_STR_DROP_DOWN;
01323                         
01324                         kString.AddNumber(iId);
01325                         strName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01326                         K3dGuiDropDown *pDropDown = FindDropDown(strName);
01327                         if(pDropDown)
01328                         {
01329                                 
01330                                 pWin->add(pDropDown, pDropDown->GetPosX(), pDropDown->GetPosY());
01331                         }
01332                         else
01333                         {
01334                                 cerr << "Error in void K3dGui::LoadGuiWindows() - Drop Down Object " << strName << " doesn`t exist !!!" << endl;
01335                         }
01336                 }
01337                 
01338                 iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_CHECK_BOXES);
01339                 for(iId = 0; iId<iNumObj; iId++)
01340                 {
01341                         kString.GetString() = K_STR_CHECK_BOX;
01342                         
01343                         kString.AddNumber(iId);
01344                         strName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01345                         K3dGuiCheckBox *pCheckBox = FindCheckBox(strName);
01346                         if(pCheckBox)
01347                         {
01348                                 
01349                                 pWin->add(pCheckBox, pCheckBox->GetPosX(), pCheckBox->GetPosY());
01350                         }
01351                         else
01352                         {
01353                                 cerr << "Error in void K3dGui::LoadGuiWindows() - Check Box Object " << strName << " doesn`t exist !!!" << endl;
01354                         }
01355                 }
01356                 
01357                 iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_RADIO_BUTTONS);
01358                 for(iId = 0; iId<iNumObj; iId++)
01359                 {
01360                         kString.GetString() = K_STR_RADIO_BUTTON;
01361                         
01362                         kString.AddNumber(iId);
01363                         strName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01364                         K3dGuiRadioButton *pRadioButton = FindRadioButton(strName);
01365                         if(pRadioButton)
01366                         {
01367                                 
01368                                 pWin->add(pRadioButton, pRadioButton->GetPosX(), pRadioButton->GetPosY());
01369                         }
01370                         else
01371                         {
01372                                 cerr << "Error in void K3dGui::LoadGuiWindows() - Radio Button Object " << strName << " doesn`t exist !!!" << endl;
01373                         }
01374                 }
01375                 
01376                 iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_SLIDERS);
01377                 for(iId = 0; iId<iNumObj; iId++)
01378                 {
01379                         kString.GetString() = K_STR_SLIDER;
01380                         
01381                         kString.AddNumber(iId);
01382                         strName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01383                         K3dGuiSlider *pSlider = FindSlider(strName);
01384                         if(pSlider)
01385                         {
01386                                 
01387                                 pWin->add(pSlider, pSlider->GetPosX(), pSlider->GetPosY());
01388                         }
01389                         else
01390                         {
01391                                 cerr << "Error in void K3dGui::LoadGuiWindows() - Slider Object " << strName << " doesn`t exist !!!" << endl;
01392                         }
01393                 }
01394                 
01395                 iNumObj = (int) m_pLua->LuaGetFieldNumber(K_STR_NUM_WINS);
01396                 for(iId = 0; iId<iNumObj; iId++)
01397                 {
01398                         kString.GetString() = K_STR_WIN;
01399                         
01400                         kString.AddNumber(iId);
01401                         strName = m_pLua->LuaGetFieldString(kString.GetString().c_str());
01402                         
01403                         pWin->AddChildName(strName);
01404                 }
01405         }
01406 }
01407 
01410 K3dGuiIcon *K3dGui::FindIcon(const char* _strName)
01411 {
01412         K3dString kStr = _strName;
01413         for(unsigned int i=0; i<m_tGuiIconArray.size(); i++)
01414         {
01415                 if(kStr == m_tGuiIconArray[i]->GetName())
01416                 {
01417                         return m_tGuiIconArray[i];
01418                 }
01419         }
01420         return NULL;
01421 }
01422 
01425 K3dGuiLabel *K3dGui::FindLabel(const char* _strName)
01426 {
01427         K3dString kStr = _strName;
01428         for(unsigned int i=0; i<m_tGuiLabelArray.size(); i++)
01429         {
01430                 if(kStr == m_tGuiLabelArray[i]->GetName())
01431                 {
01432                         return m_tGuiLabelArray[i];
01433                 }
01434         }
01435         return NULL;
01436 }
01437 
01440 K3dGuiButton *K3dGui::FindButton(const char* _strName)
01441 {
01442         K3dString kStr = _strName;
01443         for(unsigned int i=0; i<m_tGuiButtonArray.size(); i++)
01444         {
01445                 if(kStr == m_tGuiButtonArray[i]->GetName())
01446                 {
01447                         return m_tGuiButtonArray[i];
01448                 }
01449         }
01450         return NULL;
01451 }
01452 
01455 int K3dGui::FindButtonId(const char* _strName)
01456 {
01457         K3dString kStr = _strName;
01458         for(unsigned int i=0; i<m_tGuiButtonArray.size(); i++)
01459         {
01460                 if(kStr == m_tGuiButtonArray[i]->GetName())
01461                 {
01462                         return i;
01463                 }
01464         }
01465         return -1;
01466 }
01467 
01470 int K3dGui::FindWindowId(const char* _strName)
01471 {
01472         K3dString kStr = _strName;
01473         for(unsigned int i=0; i<m_tGuiWindowArray.size(); i++)
01474         {
01475                 if(kStr == m_tGuiWindowArray[i]->GetName())
01476                 {
01477                         return i;
01478                 }
01479         }
01480         return -1;
01481 }
01482 
01485 int K3dGui::FindContainerId(const char* _strName)
01486 {
01487         K3dString kStr = _strName;
01488         for(unsigned int i=0; i<m_tGuiContainerArray.size(); i++)
01489         {
01490                 if(kStr == m_tGuiContainerArray[i]->GetName())
01491                 {
01492                         return i;
01493                 }
01494         }
01495         return -1;
01496 }
01497 
01500 int K3dGui::FindListModelId(const char* _strName)
01501 {
01502         K3dString kStr = _strName;
01503         for(unsigned int i=0; i<m_tGuiListModelArray.size(); i++)
01504         {
01505                 if(kStr == m_tGuiListModelArray[i]->GetName())
01506                 {
01507                         return i;
01508                 }
01509         }
01510         return -1;
01511 }
01512 
01515 int K3dGui::FindListBoxId(const char* _strName)
01516 {
01517         K3dString kStr = _strName;
01518         for(unsigned int i=0; i<m_tGuiListBoxArray.size(); i++)
01519         {
01520                 if(kStr == m_tGuiListBoxArray[i]->GetName())
01521                 {
01522                         return i;
01523                 }
01524         }
01525         return -1;
01526 }
01527 
01532 int K3dGui::FindGuiObjectId(const char* _strName, const int _iObjType )
01533 {
01534         int iId = -1;
01535         switch (_iObjType)
01536         {
01537                 case K3D_GUI_IMAGE_OBJ:
01538                         break;
01539                 case K3D_GUI_WIN_OBJ:
01540                         iId = FindWindowId(_strName);
01541                         break;
01542                 case K3D_GUI_ICON_OBJ:
01543                         break;
01544                 case K3D_GUI_FONT_OBJ:
01545                         break;
01546                 case K3D_GUI_LABEL_OBJ:
01547                         break;
01548                 case K3D_GUI_BUTTON_OBJ:
01549                         iId = FindButtonId(_strName);
01550                         break;
01551                 case K3D_GUI_TEXT_FIELD_OBJ:
01552                         break;
01553                 case K3D_GUI_TEXT_BOX_OBJ:
01554                         break;
01555                 case K3D_GUI_LIST_MODEL_OBJ:
01556                         iId = FindListModelId(_strName);
01557                         break;
01558                 case K3D_GUI_LIST_BOX_OBJ:
01559                         iId = FindListBoxId(_strName);
01560                         break;
01561                 case K3D_GUI_DROP_DOWN_OBJ:
01562                         break;
01563                 case K3D_GUI_SCROLL_AREA_OBJ:
01564                         break;
01565                 case K3D_GUI_CHECK_BOX_OBJ:
01566                         break;
01567                 case K3D_GUI_RADIO_BUTTON_OBJ:
01568                         break;
01569                 case K3D_GUI_SLIDER_OBJ:
01570                         break;
01571                 case K3D_GUI_CONTAINER_OBJ:
01572                         iId = FindContainerId(_strName);
01573                         break;
01574                 default: 
01575                         break;
01576         }
01577         return iId;
01578 }
01579 
01583 void K3dGui::HideGui(const int _iObjId, const int _iObjType)
01584 {
01585         switch (_iObjType)
01586         {
01587                 case K3D_GUI_IMAGE_OBJ:
01588                         break;
01589                 case K3D_GUI_WIN_OBJ:
01590                         HideWindow(_iObjId);
01591                         break;
01592                 case K3D_GUI_ICON_OBJ:
01593                         break;
01594                 case K3D_GUI_FONT_OBJ:
01595                         break;
01596                 case K3D_GUI_LABEL_OBJ:
01597                         break;
01598                 case K3D_GUI_BUTTON_OBJ:
01599                         break;
01600                 case K3D_GUI_TEXT_FIELD_OBJ:
01601                         break;
01602                 case K3D_GUI_TEXT_BOX_OBJ:
01603                         break;
01604                 case K3D_GUI_LIST_MODEL_OBJ:
01605                         break;
01606                 case K3D_GUI_LIST_BOX_OBJ:
01607                         break;
01608                 case K3D_GUI_DROP_DOWN_OBJ:
01609                         break;
01610                 case K3D_GUI_SCROLL_AREA_OBJ:
01611                         break;
01612                 case K3D_GUI_CHECK_BOX_OBJ:
01613                         break;
01614                 case K3D_GUI_RADIO_BUTTON_OBJ:
01615                         break;
01616                 case K3D_GUI_SLIDER_OBJ:
01617                         break;
01618                 case K3D_GUI_CONTAINER_OBJ:
01619                         HideContainer(_iObjId);
01620                         break;
01621                 default: 
01622                         break;
01623         }
01624 }
01625 
01629 void K3dGui::ShowGui(const int _iObjId, const int _iObjType)
01630 {
01631         switch (_iObjType)
01632         {
01633                 case K3D_GUI_IMAGE_OBJ:
01634                         break;
01635                 case K3D_GUI_WIN_OBJ:
01636                         ShowWindow(_iObjId);
01637                         break;
01638                 case K3D_GUI_ICON_OBJ:
01639                         break;
01640                 case K3D_GUI_FONT_OBJ:
01641                         break;
01642                 case K3D_GUI_LABEL_OBJ:
01643                         break;
01644                 case K3D_GUI_BUTTON_OBJ:
01645                         break;
01646                 case K3D_GUI_TEXT_FIELD_OBJ:
01647                         break;
01648                 case K3D_GUI_TEXT_BOX_OBJ:
01649                         break;
01650                 case K3D_GUI_LIST_MODEL_OBJ:
01651                         break;
01652                 case K3D_GUI_LIST_BOX_OBJ:
01653                         break;
01654                 case K3D_GUI_DROP_DOWN_OBJ:
01655                         break;
01656                 case K3D_GUI_SCROLL_AREA_OBJ:
01657                         break;
01658                 case K3D_GUI_CHECK_BOX_OBJ:
01659                         break;
01660                 case K3D_GUI_RADIO_BUTTON_OBJ:
01661                         break;
01662                 case K3D_GUI_SLIDER_OBJ:
01663                         break;
01664                 case K3D_GUI_CONTAINER_OBJ:
01665                         break;
01666                 default: 
01667                         break;
01668         }
01669 }
01670 
01673 void K3dGui::HideWindow(const int _iObjId)
01674 {
01675         K3dGuiWindow *pWin = m_tGuiWindowArray[_iObjId];
01676         if(pWin)
01677         {
01678                 pWin->setVisible(false);
01679         }
01680         else
01681         {
01682                 cerr << "Error :: void HideWindow() -- pWin doesn`t allocated " << endl;
01683         }
01684 }
01685 
01688 void K3dGui::HideContainer(const int _iObjId)
01689 {
01690         K3dGuiContainer *pCont = m_tGuiContainerArray[_iObjId];
01691         if(pCont)
01692         {
01693                 pCont->setVisible(false);
01694         }
01695         else
01696         {
01697                 cerr << "Error -- K3dGui::HideContainer( -- pCont doesn`t allocated " << endl;
01698         }
01699 }
01700 
01703 void K3dGui::ShowWindow(const int _iObjId)
01704 {
01705         K3dGuiWindow *pWin = m_tGuiWindowArray[_iObjId];
01706         if(pWin)
01707         {
01708                 pWin->setVisible(true);
01709         }
01710         else
01711         {
01712                 cerr << "Error :: void ShowWindow() -- pWin doesn`t allocated " << endl;
01713         }
01714 }
01715 
01718 K3dGuiTextField *K3dGui::FindTextField(const char* _strName)
01719 {
01720         K3dString kStr = _strName;
01721         for(unsigned int i=0; i<m_tGuiTextFieldArray.size(); i++)
01722         {
01723                 if(kStr == m_tGuiTextFieldArray[i]->GetName())
01724                 {
01725                         return m_tGuiTextFieldArray[i];
01726                 }
01727         }
01728         return NULL;
01729 }
01730 
01733 K3dGuiScrollArea *K3dGui::FindScrollArea(const char* _strName)
01734 {
01735         K3dString kStr = _strName;
01736         for(unsigned int i=0; i<m_tGuiScrollAreaArray.size(); i++)
01737         {
01738                 if(kStr == m_tGuiScrollAreaArray[i]->GetName())
01739                 {
01740                         return m_tGuiScrollAreaArray[i];
01741                 }
01742         }
01743         return NULL;
01744 }
01745 
01746 
01749 K3dGuiDropDown *K3dGui::FindDropDown(const char* _strName)
01750 {
01751         K3dString kStr = _strName;
01752         for(unsigned int i=0; i<m_tGuiDropDownArray.size(); i++)
01753         {
01754                 if(kStr == m_tGuiDropDownArray[i]->GetName())
01755                 {
01756                         return m_tGuiDropDownArray[i];
01757                 }
01758         }
01759         return NULL;
01760 }
01761 
01762 
01765 K3dGuiCheckBox *K3dGui::FindCheckBox(const char* _strName)
01766 {
01767         K3dString kStr = _strName;
01768         for(unsigned int i=0; i<m_tGuiCheckBoxArray.size(); i++)
01769         {
01770                 if(kStr == m_tGuiCheckBoxArray[i]->GetName())
01771                 {
01772                         return m_tGuiCheckBoxArray[i];
01773                 }
01774         }
01775         return NULL;
01776 }
01777 
01780 K3dGuiRadioButton *K3dGui::FindRadioButton(const char* _strName)
01781 {
01782         K3dString kStr = _strName;
01783         for(unsigned int i=0; i<m_tGuiRadioButtonArray.size(); i++)
01784         {
01785                 if(kStr == m_tGuiRadioButtonArray[i]->GetName())
01786                 {
01787                         return m_tGuiRadioButtonArray[i];
01788                 }
01789         }
01790         return NULL;
01791 }
01792 
01795 K3dGuiImage *K3dGui::FindImage(const char* _strName)
01796 {
01797         K3dString kStr = _strName;
01798         for(unsigned int i=0; i<m_tGuiImageArray.size(); i++)
01799         {
01800                 if(kStr == m_tGuiImageArray[i]->GetName())
01801                 {
01802                         return m_tGuiImageArray[i];
01803                 }
01804         }
01805         return NULL;
01806 }
01807 
01809 void K3dGui::SetGuiDependencies()
01810 {
01811         cout << "void K3dGui::SetGuiDependencies())" << endl;
01812         
01813         for(unsigned int i=0; i<m_tGuiWindowArray.size(); i++)
01814         {
01815                 K3dGuiWindow *pWinParent = m_tGuiWindowArray[i];
01816                 const char* strName = "";
01817                 if(pWinParent)
01818                 {
01819                         
01820                         for(int j=0; j<pWinParent->GetNumChildNames(); j++)
01821                         {
01822                                 strName = pWinParent->GetChildName(j);
01823                                 K3dGuiWindow *pWinChild = FindWindow(strName);
01824                                 if(pWinChild)
01825                                 {
01826                                         
01827                                         pWinParent->add(pWinChild, pWinChild->GetPosX(), pWinChild->GetPosY());
01828                                 }
01829                                 else
01830                                 {
01831                                         cerr << "Error :: void K3dGui::SetGuiDependencies() -- Child window Object " << strName << " doesn`t exist !!!" << endl;
01832                                 }
01833                         }
01834                 }
01835                 else
01836                 {
01837                         cerr << "Error :: void K3dGui::SetGuiDependencies() -- Parent window Object " << strName << " doesn`t exist !!!" << endl;
01838                 }
01839         }
01840         
01841         for(unsigned int i=0; i<m_tGuiContainerArray.size(); i++)
01842         {
01843                 K3dGuiContainer *pContainer = m_tGuiContainerArray[i];
01844                 const char* strName = "";
01845                 if(pContainer)
01846                 {
01847                         
01848                         for( int j=0; j<pContainer->GetNumWinNames(); j++)
01849                         {
01850                                 strName = pContainer->GetWinName(j);
01851                                 K3dGuiWindow *pWinChild = FindWindow(strName);
01852                                 if(pWinChild)
01853                                 {
01854                                         
01855                                         pContainer->add(pWinChild, pWinChild->GetPosX(), pWinChild->GetPosY());
01856                                 }
01857                                 else
01858                                 {
01859                                         cerr << "Error :: void K3dGui::SetGuiDependencies() -- Child window Object " << strName << " doesn`t exist !!!" << endl;
01860                                 }
01861                         }
01862                 }
01863                 else
01864                 {
01865                         cerr << "Error :: void K3dGui::SetGuiDependencies() -- Parent window Object " << strName << " doesn`t exist !!!" << endl;
01866                 }
01867         }
01868 }
01869 
01872 K3dGuiWindow *K3dGui::FindWindow(const char* _strName)
01873 {
01874         K3dString kStr = _strName;
01875         for(unsigned int i=0; i<m_tGuiWindowArray.size(); i++)
01876         {
01877                 if(kStr == m_tGuiWindowArray[i]->GetName())
01878                 {
01879                         return m_tGuiWindowArray[i];
01880                 }
01881         }
01882         return NULL;
01883 }
01884 
01885 
01886 
01887 
01888 
01889