00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 #include "mmsgui/theme/mmsthememanager.h"
00034 #include "mmsinfo/mmsinfo.h"
00035 #include "mmsconfig/mmsconfigdata.h"
00036 
00037 #define INITCHECK if (!this->initialized) throw MMSThemeManagerError(1, "MMSThemeManager is not initialized!");
00038 
00039 
00040 bool                                MMSThemeManager::initialized = false;
00041 string                              MMSThemeManager::themepath;
00042 vector<MMSTheme*>                   MMSThemeManager::localThemes;
00043 sigc::signal<void, string, bool>    MMSThemeManager::onThemeChanged;
00044 
00045 MMSThemeManager::MMSThemeManager(string themepath, string globalThemeName) {
00046     if (!this->initialized) {
00047         
00048         this->themepath = themepath;
00049         loadGlobalTheme(globalThemeName);
00050         this->initialized = true;
00051     }
00052 }
00053 
00054 MMSThemeManager::MMSThemeManager() {
00055     
00056     INITCHECK;
00057 }
00058 
00059 MMSThemeManager::~MMSThemeManager() {
00060 }
00061 
00062 void MMSThemeManager::loadTheme(string path, string themeName, MMSTheme *theme) {
00063     if (themeName == "")
00064         return;
00065 
00066     if(path == "")
00067         path = this->themepath;
00068 
00069     theme->setTheme(path, themeName);
00070 
00071     
00072     string themefile     = theme->getThemeFile();
00073     string themetafffile = themefile + ".taff";
00074 
00075     
00076     if(!file_exist(themefile))
00077         if(!file_exist(themetafffile))
00078             throw MMSThemeManagerError(1, "theme file (" + themefile + ") not found");
00079 
00080     
00081     MMSTaffFile *tafff = new MMSTaffFile(themetafffile, &mmsgui_taff_description,
00082                                          themefile, MMSTAFF_EXTERNAL_TYPE_XML);
00083 
00084     if (!tafff)
00085         throw MMSThemeManagerError(1, "could not load theme file " + themefile);
00086 
00087     if (!tafff->isLoaded()) {
00088         delete tafff;
00089         throw MMSThemeManagerError(1, "could not load theme file " + themefile);
00090     }
00091 
00092     
00093     int tagid = tafff->getFirstTag();
00094     if (tagid < 0) {
00095         delete tafff;
00096         throw MMSThemeManagerError(1, "invalid taff file " + themetafffile);
00097     }
00098 
00099     
00100     this->throughFile(tafff, theme);
00101 
00102     
00103     delete tafff;
00104 }
00105 
00106 void MMSThemeManager::loadGlobalTheme(string themeName) {
00107 
00108     try {
00109         
00110         loadTheme((string)getPrefix() + "/share/disko", DEFAULT_THEME, globalTheme);
00111 
00112         if (themeName != DEFAULT_THEME) {
00113             
00114             loadTheme((string)getPrefix() + "/share/disko", themeName, globalTheme);
00115         }
00116     } catch(MMSError &error) {}
00117 
00118     
00119     loadTheme("", DEFAULT_THEME, globalTheme);
00120 
00121     if (themeName != DEFAULT_THEME) {
00122         
00123         loadTheme("", themeName, globalTheme);
00124     }
00125 }
00126 
00127 
00128 void MMSThemeManager::loadLocalTheme(MMSTheme *theme, string path, string themeName) {
00129 
00130     
00131     INITCHECK;
00132 
00133     if (themeName == "") {
00134         
00135         themeName = globalTheme->getThemeName();
00136     }
00137 
00138     try {
00139         
00140         loadTheme((string)getPrefix() + "/share/disko", DEFAULT_THEME, theme);
00141 
00142         if (themeName != DEFAULT_THEME) {
00143             
00144             loadTheme((string)getPrefix() + "/share/disko", themeName, theme);
00145         }
00146     } catch(MMSError &error) {}
00147 
00148     
00149     loadTheme("", DEFAULT_THEME, theme);
00150 
00151     if (themeName != DEFAULT_THEME) {
00152         
00153         loadTheme("", themeName, theme);
00154     }
00155 
00156     
00157     loadTheme(path, DEFAULT_THEME, theme);
00158 
00159     if (themeName != DEFAULT_THEME) {
00160         
00161         loadTheme(path, themeName, theme);
00162     }
00163 }
00164 
00165 
00166 MMSTheme *MMSThemeManager::loadLocalTheme(string path, string themeName) {
00167 
00168     
00169     INITCHECK;
00170 
00171     
00172     for(vector<MMSTheme*>::const_iterator i = this->localThemes.begin(); i != this->localThemes.end(); ++i) {
00173         if(((*i)->getPath() == path) && ((*i)->getThemeName() == themeName)) {
00174             
00175             return *i;
00176         }
00177     }
00178 
00179     
00180     MMSConfigData config;
00181     MMSTheme *theme = new MMSTheme(config.getInitialLoad(), config.getDebugFrames());
00182     loadLocalTheme(theme, path, themeName);
00183 
00184     
00185     this->localThemes.push_back(theme);
00186 
00187     return theme;
00188 }
00189 
00190 
00191 void MMSThemeManager::deleteLocalTheme(string path, string themeName) {
00192     for(vector<MMSTheme*>::iterator i = this->localThemes.begin(); i != this->localThemes.end(); ++i) {
00193         if(((*i)->getPath() == path) && ((*i)->getThemeName() == themeName)) {
00194             delete *i;
00195             this->localThemes.erase(i);
00196             break;
00197         }
00198     }
00199 }
00200 
00201 void MMSThemeManager::deleteLocalTheme(MMSTheme **theme) {
00202     for(vector<MMSTheme*>::iterator i = this->localThemes.begin(); i != this->localThemes.end(); ++i) {
00203         if (*i == *theme) {
00204             delete *theme;
00205             this->localThemes.erase(i);
00206             *theme = NULL;
00207             break;
00208         }
00209     }
00210 }
00211 
00212 
00213 void MMSThemeManager::setTheme(string themeName) {
00214     
00215     INITCHECK;
00216 
00217     
00218     if (themeName == globalTheme->getThemeName())
00219         return;
00220 
00221     
00222     globalTheme->theme_tag.unsetAll();
00223 
00224     
00225     loadGlobalTheme(themeName);
00226 
00227     
00228     for (vector<MMSTheme*>::iterator i = this->localThemes.begin(); i != this->localThemes.end(); ++i) {
00229         loadLocalTheme((*i), (*i)->getPath());
00230     }
00231 
00232     
00233     bool fadein = false;
00234     if (globalTheme->theme_tag.isFadeIn())
00235         fadein = globalTheme->theme_tag.getFadeIn();
00236 
00237     
00238     this->onThemeChanged.emit(themeName, fadein);
00239 }
00240 
00241 
00242 void MMSThemeManager::setTheme(string themeName, bool fadein) {
00243     
00244     INITCHECK;
00245 
00246     
00247     if (themeName == globalTheme->getThemeName())
00248         return;
00249 
00250     
00251     globalTheme->theme_tag.unsetAll();
00252 
00253     
00254     loadGlobalTheme(themeName);
00255 
00256     
00257     for (vector<MMSTheme*>::iterator i = this->localThemes.begin(); i != this->localThemes.end(); ++i) {
00258         loadLocalTheme((*i), (*i)->getPath());
00259     }
00260 
00261     
00262     this->onThemeChanged.emit(themeName, fadein);
00263 }
00264 
00265 
00266 #define GET_THEME_CLASS(method) \
00267 class_name = tafff->getAttributeString(MMSGUI_BASE_ATTR::MMSGUI_BASE_ATTR_IDS_name); \
00268 if (class_name) method(tafff, theme, class_name); \
00269 else DEBUGMSG("MMSGUI", "name of class not specified (ignoring)");
00270 
00271 
00272 void MMSThemeManager::throughFile(MMSTaffFile *tafff, MMSTheme *theme) {
00273 
00274     
00275     int currTag = tafff->getCurrentTag();
00276     if (currTag == MMSGUI_TAGTABLE_TAG_MMSTHEME)
00277         getThemeValues(tafff, theme);
00278     else {
00279         DEBUGMSG("MMSGUI", "no valid theme file: %s", theme->getThemeFile().c_str());
00280         return;
00281     }
00282 
00283     
00284     
00285     int depth = 0;
00286     while (1) {
00287         char *class_name;
00288         bool eof;
00289         int tid = tafff->getNextTag(eof);
00290         if (eof) break;
00291         if (tid < 0) {
00292             if (depth==0) break;
00293             depth--;
00294             continue;
00295         }
00296         else {
00297             depth++;
00298             if (depth>1) continue;
00299         }
00300 
00301         switch (tid) {
00302         case MMSGUI_TAGTABLE_TAG_DESCRIPTION:
00303             getDescriptionValues(tafff, theme);
00304             break;
00305         case MMSGUI_TAGTABLE_TAG_MAINWINDOW:
00306             getMainWindowValues(tafff, &(theme->mainWindowClass), theme);
00307             break;
00308         case MMSGUI_TAGTABLE_TAG_CHILDWINDOW:
00309             getChildWindowValues(tafff, &(theme->childWindowClass), theme);
00310             break;
00311         case MMSGUI_TAGTABLE_TAG_POPUPWINDOW:
00312             getPopupWindowValues(tafff, &(theme->popupWindowClass), theme);
00313             break;
00314         case MMSGUI_TAGTABLE_TAG_ROOTWINDOW:
00315             getRootWindowValues(tafff, &(theme->rootWindowClass), theme);
00316             break;
00317         case MMSGUI_TAGTABLE_TAG_LABELWIDGET:
00318             getLabelWidgetValues(tafff, &(theme->labelWidgetClass), theme);
00319             break;
00320         case MMSGUI_TAGTABLE_TAG_IMAGEWIDGET:
00321             getImageWidgetValues(tafff, &(theme->imageWidgetClass), theme);
00322             break;
00323         case MMSGUI_TAGTABLE_TAG_CANVASWIDGET:
00324             getCanvasWidgetValues(tafff, &(theme->canvasWidgetClass), theme);
00325             break;
00326         case MMSGUI_TAGTABLE_TAG_BUTTONWIDGET:
00327             getButtonWidgetValues(tafff, &(theme->buttonWidgetClass), theme);
00328             break;
00329         case MMSGUI_TAGTABLE_TAG_PROGRESSBARWIDGET:
00330             getProgressBarWidgetValues(tafff, &(theme->progressBarWidgetClass), theme);
00331             break;
00332         case MMSGUI_TAGTABLE_TAG_SLIDERWIDGET:
00333             getSliderWidgetValues(tafff, &(theme->sliderWidgetClass), theme);
00334             break;
00335         case MMSGUI_TAGTABLE_TAG_MENUWIDGET:
00336             getMenuWidgetValues(tafff, &(theme->menuWidgetClass), theme);
00337             break;
00338         case MMSGUI_TAGTABLE_TAG_TEXTBOXWIDGET:
00339             getTextBoxWidgetValues(tafff, &(theme->textBoxWidgetClass), theme);
00340             break;
00341         case MMSGUI_TAGTABLE_TAG_ARROWWIDGET:
00342             getArrowWidgetValues(tafff, &(theme->arrowWidgetClass), theme);
00343             break;
00344         case MMSGUI_TAGTABLE_TAG_INPUTWIDGET:
00345             getInputWidgetValues(tafff, &(theme->inputWidgetClass), theme);
00346             break;
00347         case MMSGUI_TAGTABLE_TAG_CHECKBOXWIDGET:
00348             getCheckBoxWidgetValues(tafff, &(theme->checkBoxWidgetClass), theme);
00349             break;
00350         case MMSGUI_TAGTABLE_TAG_CLASS_TEMPLATE:
00351             GET_THEME_CLASS(getTemplateClassValues);
00352             break;
00353         case MMSGUI_TAGTABLE_TAG_CLASS_MAINWINDOW:
00354             GET_THEME_CLASS(getMainWindowClassValues);
00355             break;
00356         case MMSGUI_TAGTABLE_TAG_CLASS_CHILDWINDOW:
00357             GET_THEME_CLASS(getChildWindowClassValues);
00358             break;
00359         case MMSGUI_TAGTABLE_TAG_CLASS_POPUPWINDOW:
00360             GET_THEME_CLASS(getPopupWindowClassValues);
00361             break;
00362         case MMSGUI_TAGTABLE_TAG_CLASS_ROOTWINDOW:
00363             GET_THEME_CLASS(getRootWindowClassValues);
00364             break;
00365         case MMSGUI_TAGTABLE_TAG_CLASS_LABELWIDGET:
00366             GET_THEME_CLASS(getLabelWidgetClassValues);
00367             break;
00368         case MMSGUI_TAGTABLE_TAG_CLASS_IMAGEWIDGET:
00369             GET_THEME_CLASS(getImageWidgetClassValues);
00370             break;
00371         case MMSGUI_TAGTABLE_TAG_CLASS_BUTTONWIDGET:
00372             GET_THEME_CLASS(getButtonWidgetClassValues);
00373             break;
00374         case MMSGUI_TAGTABLE_TAG_CLASS_PROGRESSBARWIDGET:
00375             GET_THEME_CLASS(getProgressBarWidgetClassValues);
00376             break;
00377         case MMSGUI_TAGTABLE_TAG_CLASS_SLIDERWIDGET:
00378             GET_THEME_CLASS(getSliderWidgetClassValues);
00379             break;
00380         case MMSGUI_TAGTABLE_TAG_CLASS_MENUWIDGET:
00381             GET_THEME_CLASS(getMenuWidgetClassValues);
00382             break;
00383         case MMSGUI_TAGTABLE_TAG_CLASS_TEXTBOXWIDGET:
00384             GET_THEME_CLASS(getTextBoxWidgetClassValues);
00385             break;
00386         case MMSGUI_TAGTABLE_TAG_CLASS_ARROWWIDGET:
00387             GET_THEME_CLASS(getArrowWidgetClassValues);
00388             break;
00389         case MMSGUI_TAGTABLE_TAG_CLASS_INPUTWIDGET:
00390             GET_THEME_CLASS(getInputWidgetClassValues);
00391             break;
00392         case MMSGUI_TAGTABLE_TAG_CLASS_CHECKBOXWIDGET:
00393             GET_THEME_CLASS(getCheckBoxWidgetClassValues);
00394             break;
00395         case MMSGUI_TAGTABLE_TAG_CLASS_CANVASWIDGET:
00396             GET_THEME_CLASS(getCanvasWidgetClassValues);
00397             break;
00398         }
00399     }
00400 }
00401 
00402 void MMSThemeManager::getThemeValues(MMSTaffFile *tafff, MMSTheme *theme) {
00403 
00404     theme->theme_tag.setAttributesFromTAFF(tafff);
00405 
00406     if (theme->theme_tag.getName() != "") {
00407         if (theme->themeName != theme->theme_tag.getName()) {
00408             printf("Warning: Inconsistent Theme File '%s'\n>Theme name is set to '%s', but <mmstheme name=\"%s\"/> is specified!\n",
00409                     theme->themeFile.c_str(),
00410                     theme->themeName.c_str(),
00411                     theme->theme_tag.getName().c_str());
00412         }
00413     }
00414 }
00415 
00416 
00417 
00418 void MMSThemeManager::getDescriptionValues(MMSTaffFile *tafff, MMSTheme *theme) {
00419 
00420     theme->description.setAttributesFromTAFF(tafff);
00421 }
00422 
00423 
00424 void  MMSThemeManager::getTemplateValues(MMSTaffFile *tafff, MMSTemplateClass *themeClass) {
00425 
00426     themeClass->setAttributesFromTAFF(tafff);
00427 
00428     themeClass->duplicateTAFF(tafff);
00429 }
00430 
00431 void MMSThemeManager::getMainWindowValues(MMSTaffFile *tafff, MMSMainWindowClass *themeClass, MMSTheme *theme) {
00432 
00433     string themePath = "";
00434     if (theme)
00435         themePath = theme->getThemePath();
00436 
00437     themeClass->windowClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00438 
00439     themeClass->windowClass.setAttributesFromTAFF(tafff, &themePath, true);
00440 
00441     themeClass->setAttributesFromTAFF(tafff, &themePath, true);
00442 }
00443 
00444 void MMSThemeManager::getPopupWindowValues(MMSTaffFile *tafff, MMSPopupWindowClass *themeClass, MMSTheme *theme) {
00445 
00446     string themePath = "";
00447     if (theme)
00448         themePath = theme->getThemePath();
00449 
00450     themeClass->windowClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00451 
00452     themeClass->windowClass.setAttributesFromTAFF(tafff, &themePath, true);
00453 
00454     themeClass->setAttributesFromTAFF(tafff, &themePath, true);
00455 }
00456 
00457 void MMSThemeManager::getRootWindowValues(MMSTaffFile *tafff, MMSRootWindowClass *themeClass, MMSTheme *theme) {
00458 
00459     string themePath = "";
00460     if (theme)
00461         themePath = theme->getThemePath();
00462 
00463     themeClass->windowClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00464 
00465     themeClass->windowClass.setAttributesFromTAFF(tafff, &themePath, true);
00466 
00467     themeClass->setAttributesFromTAFF(tafff, &themePath, true);
00468 }
00469 
00470 
00471 void MMSThemeManager::getChildWindowValues(MMSTaffFile *tafff, MMSChildWindowClass *themeClass, MMSTheme *theme) {
00472 
00473     string themePath = "";
00474     if (theme)
00475         themePath = theme->getThemePath();
00476 
00477     themeClass->windowClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00478 
00479     themeClass->windowClass.setAttributesFromTAFF(tafff, &themePath, true);
00480 
00481     themeClass->setAttributesFromTAFF(tafff, &themePath, true);
00482 }
00483 
00484 
00485 void MMSThemeManager::getLabelWidgetValues(MMSTaffFile *tafff, MMSLabelWidgetClass *themeClass, MMSTheme *theme) {
00486 
00487     string themePath = "";
00488     if (theme)
00489         themePath = theme->getThemePath();
00490 
00491     themeClass->widgetClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00492 
00493     themeClass->widgetClass.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00494 
00495     themeClass->setAttributesFromTAFF(tafff, NULL, &themePath, true);
00496 }
00497 
00498 void  MMSThemeManager::getImageWidgetValues(MMSTaffFile *tafff, MMSImageWidgetClass *themeClass, MMSTheme *theme) {
00499 
00500     string themePath = "";
00501     if (theme)
00502         themePath = theme->getThemePath();
00503 
00504     themeClass->widgetClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00505 
00506     themeClass->widgetClass.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00507 
00508     themeClass->setAttributesFromTAFF(tafff, NULL, &themePath, true);
00509 }
00510 
00511 void  MMSThemeManager::getCanvasWidgetValues(MMSTaffFile *tafff, MMSCanvasWidgetClass *themeClass, MMSTheme *theme) {
00512 
00513     string themePath = "";
00514     if (theme)
00515         themePath = theme->getThemePath();
00516 
00517     themeClass->widgetClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00518     themeClass->widgetClass.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00519 
00520     themeClass->setAttributesFromTAFF(tafff, NULL, &themePath, true);
00521 }
00522 
00523 void  MMSThemeManager::getButtonWidgetValues(MMSTaffFile *tafff, MMSButtonWidgetClass *themeClass, MMSTheme *theme) {
00524 
00525     string themePath = "";
00526     if (theme)
00527         themePath = theme->getThemePath();
00528 
00529     themeClass->widgetClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00530 
00531     themeClass->widgetClass.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00532 
00533     themeClass->setAttributesFromTAFF(tafff, NULL, &themePath, true);
00534 }
00535 
00536 void  MMSThemeManager::getProgressBarWidgetValues(MMSTaffFile *tafff, MMSProgressBarWidgetClass *themeClass, MMSTheme *theme) {
00537 
00538     string themePath = "";
00539     if (theme)
00540         themePath = theme->getThemePath();
00541 
00542     themeClass->widgetClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00543 
00544     themeClass->widgetClass.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00545 
00546     themeClass->setAttributesFromTAFF(tafff, NULL, &themePath, true);
00547 }
00548 
00549 void  MMSThemeManager::getSliderWidgetValues(MMSTaffFile *tafff, MMSSliderWidgetClass *themeClass, MMSTheme *theme) {
00550 
00551     string themePath = "";
00552     if (theme)
00553         themePath = theme->getThemePath();
00554 
00555     themeClass->widgetClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00556 
00557     themeClass->widgetClass.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00558 
00559     themeClass->setAttributesFromTAFF(tafff, NULL, &themePath, true);
00560 }
00561 
00562 void  MMSThemeManager::getMenuWidgetValues(MMSTaffFile *tafff, MMSMenuWidgetClass *themeClass, MMSTheme *theme) {
00563 
00564     string themePath = "";
00565     if (theme)
00566         themePath = theme->getThemePath();
00567 
00568     themeClass->widgetClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00569 
00570     themeClass->widgetClass.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00571 
00572     themeClass->setAttributesFromTAFF(tafff, NULL, &themePath, true);
00573 
00574     themeClass->duplicateTAFF(tafff);
00575 }
00576 
00577 void  MMSThemeManager::getTextBoxWidgetValues(MMSTaffFile *tafff, MMSTextBoxWidgetClass *themeClass, MMSTheme *theme) {
00578 
00579     string themePath = "";
00580     if (theme)
00581         themePath = theme->getThemePath();
00582 
00583     themeClass->widgetClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00584 
00585     themeClass->widgetClass.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00586 
00587     themeClass->setAttributesFromTAFF(tafff, NULL, &themePath, true);
00588 }
00589 
00590 void  MMSThemeManager::getArrowWidgetValues(MMSTaffFile *tafff, MMSArrowWidgetClass *themeClass, MMSTheme *theme) {
00591 
00592     string themePath = "";
00593     if (theme)
00594         themePath = theme->getThemePath();
00595 
00596     themeClass->widgetClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00597 
00598     themeClass->widgetClass.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00599 
00600     themeClass->setAttributesFromTAFF(tafff, NULL, &themePath, true);
00601 }
00602 
00603 void MMSThemeManager::getInputWidgetValues(MMSTaffFile *tafff, MMSInputWidgetClass *themeClass, MMSTheme *theme) {
00604 
00605     string themePath = "";
00606     if (theme)
00607         themePath = theme->getThemePath();
00608 
00609     themeClass->widgetClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00610 
00611     themeClass->widgetClass.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00612 
00613     themeClass->setAttributesFromTAFF(tafff, NULL, &themePath, true);
00614 }
00615 
00616 void MMSThemeManager::getCheckBoxWidgetValues(MMSTaffFile *tafff, MMSCheckBoxWidgetClass *themeClass, MMSTheme *theme) {
00617 
00618     string themePath = "";
00619     if (theme)
00620         themePath = theme->getThemePath();
00621 
00622     themeClass->widgetClass.border.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00623 
00624     themeClass->widgetClass.setAttributesFromTAFF(tafff, NULL, &themePath, true);
00625 
00626     themeClass->setAttributesFromTAFF(tafff, NULL, &themePath, true);
00627 }
00628 
00629 
00630 void MMSThemeManager::getTemplateClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00631     MMSTemplateClass *themeClass = theme->getTemplateClass(className);
00632 
00633     if (!themeClass) {
00634         themeClass = new MMSTemplateClass;
00635         getTemplateValues(tafff, themeClass);
00636         themeClass->setClassName(className);
00637         if (!theme->addTemplateClass(themeClass))
00638             delete themeClass;
00639     }
00640     else {
00641         getTemplateValues(tafff, themeClass);
00642         themeClass->setClassName(className);
00643     }
00644 }
00645 
00646 void MMSThemeManager::getMainWindowClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00647     MMSMainWindowClass *themeClass = theme->getMainWindowClass(className);
00648 
00649     if (!themeClass) {
00650         themeClass = new MMSMainWindowClass;
00651         getMainWindowValues(tafff, themeClass, theme);
00652         themeClass->setClassName(className);
00653         if (!theme->addMainWindowClass(themeClass))
00654             delete themeClass;
00655     }
00656     else {
00657         getMainWindowValues(tafff, themeClass, theme);
00658         themeClass->setClassName(className);
00659     }
00660 }
00661 
00662 void MMSThemeManager::getPopupWindowClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00663     MMSPopupWindowClass *themeClass = theme->getPopupWindowClass(className);
00664 
00665     if (!themeClass) {
00666         themeClass = new MMSPopupWindowClass;
00667         getPopupWindowValues(tafff, themeClass, theme);
00668         themeClass->setClassName(className);
00669         if (!theme->addPopupWindowClass(themeClass))
00670             delete themeClass;
00671     }
00672     else {
00673         getPopupWindowValues(tafff, themeClass, theme);
00674         themeClass->setClassName(className);
00675     }
00676 }
00677 
00678 void MMSThemeManager::getRootWindowClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00679     MMSRootWindowClass *themeClass = theme->getRootWindowClass(className);
00680 
00681     if (!themeClass) {
00682         themeClass = new MMSRootWindowClass;
00683         getRootWindowValues(tafff, themeClass, theme);
00684         themeClass->setClassName(className);
00685         if (!theme->addRootWindowClass(themeClass))
00686             delete themeClass;
00687     }
00688     else {
00689         getRootWindowValues(tafff, themeClass, theme);
00690         themeClass->setClassName(className);
00691     }
00692 }
00693 
00694 void MMSThemeManager::getChildWindowClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00695     MMSChildWindowClass *themeClass = theme->getChildWindowClass(className);
00696 
00697     if (!themeClass) {
00698         themeClass = new MMSChildWindowClass;
00699         getChildWindowValues(tafff, themeClass, theme);
00700         themeClass->setClassName(className);
00701         if (!theme->addChildWindowClass(themeClass))
00702             delete themeClass;
00703     }
00704     else {
00705         getChildWindowValues(tafff, themeClass, theme);
00706         themeClass->setClassName(className);
00707     }
00708 }
00709 
00710 void MMSThemeManager::getLabelWidgetClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00711     MMSLabelWidgetClass *themeClass = theme->getLabelWidgetClass(className);
00712 
00713     if (!themeClass) {
00714         themeClass = new MMSLabelWidgetClass;
00715         getLabelWidgetValues(tafff, themeClass, theme);
00716         themeClass->setClassName(className);
00717         if (!theme->addLabelWidgetClass(themeClass))
00718             delete themeClass;
00719     }
00720     else {
00721         getLabelWidgetValues(tafff, themeClass, theme);
00722         themeClass->setClassName(className);
00723     }
00724 }
00725 
00726 void MMSThemeManager::getImageWidgetClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00727     MMSImageWidgetClass *themeClass = theme->getImageWidgetClass(className);
00728 
00729     if (!themeClass) {
00730         themeClass = new MMSImageWidgetClass;
00731         getImageWidgetValues(tafff, themeClass, theme);
00732         themeClass->setClassName(className);
00733         if (!theme->addImageWidgetClass(themeClass))
00734             delete themeClass;
00735     }
00736     else {
00737         getImageWidgetValues(tafff, themeClass, theme);
00738         themeClass->setClassName(className);
00739     }
00740 }
00741 
00742 void MMSThemeManager::getCanvasWidgetClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00743     MMSCanvasWidgetClass *themeClass = theme->getCanvasWidgetClass(className);
00744 
00745     if (!themeClass) {
00746         themeClass = new MMSCanvasWidgetClass;
00747         getCanvasWidgetValues(tafff, themeClass, theme);
00748         themeClass->setClassName(className);
00749         if (!theme->addCanvasWidgetClass(themeClass))
00750             delete themeClass;
00751     }
00752     else {
00753         getCanvasWidgetValues(tafff, themeClass, theme);
00754         themeClass->setClassName(className);
00755     }
00756 }
00757 
00758 void MMSThemeManager::getButtonWidgetClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00759     MMSButtonWidgetClass *themeClass = theme->getButtonWidgetClass(className);
00760 
00761     if (!themeClass) {
00762         themeClass = new MMSButtonWidgetClass;
00763         getButtonWidgetValues(tafff, themeClass, theme);
00764         themeClass->setClassName(className);
00765         if (!theme->addButtonWidgetClass(themeClass))
00766             delete themeClass;
00767     }
00768     else {
00769         getButtonWidgetValues(tafff, themeClass, theme);
00770         themeClass->setClassName(className);
00771     }
00772 }
00773 
00774 void MMSThemeManager::getProgressBarWidgetClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00775     MMSProgressBarWidgetClass *themeClass = theme->getProgressBarWidgetClass(className);
00776 
00777     if (!themeClass) {
00778         themeClass = new MMSProgressBarWidgetClass;
00779         getProgressBarWidgetValues(tafff, themeClass, theme);
00780         themeClass->setClassName(className);
00781         if (!theme->addProgressBarWidgetClass(themeClass))
00782             delete themeClass;
00783     }
00784     else {
00785         getProgressBarWidgetValues(tafff, themeClass, theme);
00786         themeClass->setClassName(className);
00787     }
00788 }
00789 
00790 void MMSThemeManager::getSliderWidgetClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00791     MMSSliderWidgetClass *themeClass = theme->getSliderWidgetClass(className);
00792 
00793     if (!themeClass) {
00794         themeClass = new MMSSliderWidgetClass;
00795         getSliderWidgetValues(tafff, themeClass, theme);
00796         themeClass->setClassName(className);
00797         if (!theme->addSliderWidgetClass(themeClass))
00798             delete themeClass;
00799     }
00800     else {
00801         getSliderWidgetValues(tafff, themeClass, theme);
00802         themeClass->setClassName(className);
00803     }
00804 }
00805 
00806 void MMSThemeManager::getMenuWidgetClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00807     MMSMenuWidgetClass *themeClass = theme->getMenuWidgetClass(className);
00808 
00809     if (!themeClass) {
00810         themeClass = new MMSMenuWidgetClass;
00811         getMenuWidgetValues(tafff, themeClass, theme);
00812         themeClass->setClassName(className);
00813         if (!theme->addMenuWidgetClass(themeClass))
00814             delete themeClass;
00815     }
00816     else {
00817         getMenuWidgetValues(tafff, themeClass, theme);
00818         themeClass->setClassName(className);
00819     }
00820 }
00821 
00822 void MMSThemeManager::getTextBoxWidgetClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00823     MMSTextBoxWidgetClass *themeClass = theme->getTextBoxWidgetClass(className);
00824 
00825     if (!themeClass) {
00826         themeClass = new MMSTextBoxWidgetClass;
00827         getTextBoxWidgetValues(tafff, themeClass, theme);
00828         themeClass->setClassName(className);
00829         if (!theme->addTextBoxWidgetClass(themeClass))
00830             delete themeClass;
00831     }
00832     else {
00833         getTextBoxWidgetValues(tafff, themeClass, theme);
00834         themeClass->setClassName(className);
00835     }
00836 }
00837 
00838 void MMSThemeManager::getArrowWidgetClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00839     MMSArrowWidgetClass *themeClass = theme->getArrowWidgetClass(className);
00840 
00841     if (!themeClass) {
00842         themeClass = new MMSArrowWidgetClass;
00843         getArrowWidgetValues(tafff, themeClass, theme);
00844         themeClass->setClassName(className);
00845         if (!theme->addArrowWidgetClass(themeClass))
00846             delete themeClass;
00847     }
00848     else {
00849         getArrowWidgetValues(tafff, themeClass, theme);
00850         themeClass->setClassName(className);
00851     }
00852 }
00853 
00854 void MMSThemeManager::getInputWidgetClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00855     MMSInputWidgetClass *themeClass = theme->getInputWidgetClass(className);
00856 
00857     if (!themeClass) {
00858         themeClass = new MMSInputWidgetClass;
00859         getInputWidgetValues(tafff, themeClass, theme);
00860         themeClass->setClassName(className);
00861         if (!theme->addInputWidgetClass(themeClass))
00862             delete themeClass;
00863     }
00864     else {
00865         getInputWidgetValues(tafff, themeClass, theme);
00866         themeClass->setClassName(className);
00867     }
00868 }
00869 
00870 void MMSThemeManager::getCheckBoxWidgetClassValues(MMSTaffFile *tafff, MMSTheme *theme, string className) {
00871     MMSCheckBoxWidgetClass *themeClass = theme->getCheckBoxWidgetClass(className);
00872 
00873     if (!themeClass) {
00874         themeClass = new MMSCheckBoxWidgetClass;
00875         getCheckBoxWidgetValues(tafff, themeClass, theme);
00876         themeClass->setClassName(className);
00877         if (!theme->addCheckBoxWidgetClass(themeClass))
00878             delete themeClass;
00879     }
00880     else {
00881         getCheckBoxWidgetValues(tafff, themeClass, theme);
00882         themeClass->setClassName(className);
00883     }
00884 }
00885 
00886 
00887 
00888 
00889