Logo
  • Main Page
  • Related Pages
  • Modules
  • Classes
  • Files

mmsthememanager.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2005-2007 Stefan Schwarzer, Jens Schneider,             *
00003  *                           Matthias Hardt, Guido Madaus                  *
00004  *                                                                         *
00005  *   Copyright (C) 2007-2008 BerLinux Solutions GbR                        *
00006  *                           Stefan Schwarzer & Guido Madaus               *
00007  *                                                                         *
00008  *   Copyright (C) 2009-2013 BerLinux Solutions GmbH                       *
00009  *                                                                         *
00010  *   Authors:                                                              *
00011  *      Stefan Schwarzer   <stefan.schwarzer@diskohq.org>,                 *
00012  *      Matthias Hardt     <matthias.hardt@diskohq.org>,                   *
00013  *      Jens Schneider     <jens.schneider@diskohq.org>,                   *
00014  *      Guido Madaus       <guido.madaus@diskohq.org>,                     *
00015  *      Patrick Helterhoff <patrick.helterhoff@diskohq.org>,               *
00016  *      René Bählkow       <rene.baehlkow@diskohq.org>                     *
00017  *                                                                         *
00018  *   This library is free software; you can redistribute it and/or         *
00019  *   modify it under the terms of the GNU Lesser General Public            *
00020  *   License version 2.1 as published by the Free Software Foundation.     *
00021  *                                                                         *
00022  *   This library is distributed in the hope that it will be useful,       *
00023  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00024  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00025  *   Lesser General Public License for more details.                       *
00026  *                                                                         *
00027  *   You should have received a copy of the GNU Lesser General Public      *
00028  *   License along with this library; if not, write to the                 *
00029  *   Free Software Foundation, Inc.,                                       *
00030  *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
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 // static variables
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         // init the first time, save the path to the global theme and load it
00048         this->themepath = themepath;
00049         loadGlobalTheme(globalThemeName);
00050         this->initialized = true;
00051     }
00052 }
00053 
00054 MMSThemeManager::MMSThemeManager() {
00055     // check if initialized
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     /* get files */
00072     string themefile     = theme->getThemeFile();
00073     string themetafffile = themefile + ".taff";
00074 
00075     //check for file
00076     if(!file_exist(themefile))
00077         if(!file_exist(themetafffile))
00078             throw MMSThemeManagerError(1, "theme file (" + themefile + ") not found");
00079 
00080     /* open the taff file */
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     /* get root tag */
00093     int tagid = tafff->getFirstTag();
00094     if (tagid < 0) {
00095         delete tafff;
00096         throw MMSThemeManagerError(1, "invalid taff file " + themetafffile);
00097     }
00098 
00099     /* through the file */
00100     this->throughFile(tafff, theme);
00101 
00102     /* free the document */
00103     delete tafff;
00104 }
00105 
00106 void MMSThemeManager::loadGlobalTheme(string themeName) {
00107 
00108     try {
00109         // load global default theme delivered with the disko framework
00110         loadTheme((string)getPrefix() + "/share/disko", DEFAULT_THEME, globalTheme);
00111 
00112         if (themeName != DEFAULT_THEME) {
00113             // overload with special theme delivered with the disko framework
00114             loadTheme((string)getPrefix() + "/share/disko", themeName, globalTheme);
00115         }
00116     } catch(MMSError &error) {}
00117 
00118     // load global default theme
00119     loadTheme("", DEFAULT_THEME, globalTheme);
00120 
00121     if (themeName != DEFAULT_THEME) {
00122         // overload global default theme with global theme
00123         loadTheme("", themeName, globalTheme);
00124     }
00125 }
00126 
00127 
00128 void MMSThemeManager::loadLocalTheme(MMSTheme *theme, string path, string themeName) {
00129 
00130     // check if initialized
00131     INITCHECK;
00132 
00133     if (themeName == "") {
00134         // use the name from already loaded global theme
00135         themeName = globalTheme->getThemeName();
00136     }
00137 
00138     try {
00139         // load global default theme delivered with the disko framework
00140         loadTheme((string)getPrefix() + "/share/disko", DEFAULT_THEME, theme);
00141 
00142         if (themeName != DEFAULT_THEME) {
00143             // overload with special theme delivered with the disko framework
00144             loadTheme((string)getPrefix() + "/share/disko", themeName, theme);
00145         }
00146     } catch(MMSError &error) {}
00147 
00148     // load global default theme
00149     loadTheme("", DEFAULT_THEME, theme);
00150 
00151     if (themeName != DEFAULT_THEME) {
00152         // overload global default theme with global theme
00153         loadTheme("", themeName, theme);
00154     }
00155 
00156     // overload global theme with local default theme
00157     loadTheme(path, DEFAULT_THEME, theme);
00158 
00159     if (themeName != DEFAULT_THEME) {
00160         // overload global theme with local theme
00161         loadTheme(path, themeName, theme);
00162     }
00163 }
00164 
00165 
00166 MMSTheme *MMSThemeManager::loadLocalTheme(string path, string themeName) {
00167 
00168     // check if initialized
00169     INITCHECK;
00170 
00171     // check if theme is already loaded
00172     for(vector<MMSTheme*>::const_iterator i = this->localThemes.begin(); i != this->localThemes.end(); ++i) {
00173         if(((*i)->getPath() == path) && ((*i)->getThemeName() == themeName)) {
00174             // already loaded
00175             return *i;
00176         }
00177     }
00178 
00179     // load new theme
00180     MMSConfigData config;
00181     MMSTheme *theme = new MMSTheme(config.getInitialLoad(), config.getDebugFrames());
00182     loadLocalTheme(theme, path, themeName);
00183 
00184     // add theme to list
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     // check if initialized
00215     INITCHECK;
00216 
00217     // check if requested theme is equal to current theme
00218     if (themeName == globalTheme->getThemeName())
00219         return;
00220 
00221     // reset the global theme_tag (<mmstheme/> attributes)
00222     globalTheme->theme_tag.unsetAll();
00223 
00224     // load new global theme
00225     loadGlobalTheme(themeName);
00226 
00227     // reload the local themes
00228     for (vector<MMSTheme*>::iterator i = this->localThemes.begin(); i != this->localThemes.end(); ++i) {
00229         loadLocalTheme((*i), (*i)->getPath());
00230     }
00231 
00232     // have to fade?
00233     bool fadein = false;
00234     if (globalTheme->theme_tag.isFadeIn())
00235         fadein = globalTheme->theme_tag.getFadeIn();
00236 
00237     // inform attached callbacks
00238     this->onThemeChanged.emit(themeName, fadein);
00239 }
00240 
00241 
00242 void MMSThemeManager::setTheme(string themeName, bool fadein) {
00243     // check if initialized
00244     INITCHECK;
00245 
00246     // check if requested theme is equal to current theme
00247     if (themeName == globalTheme->getThemeName())
00248         return;
00249 
00250     // reset the global theme_tag (<mmstheme/> attributes)
00251     globalTheme->theme_tag.unsetAll();
00252 
00253     // load new theme
00254     loadGlobalTheme(themeName);
00255 
00256     // reload the local themes
00257     for (vector<MMSTheme*>::iterator i = this->localThemes.begin(); i != this->localThemes.end(); ++i) {
00258         loadLocalTheme((*i), (*i)->getPath());
00259     }
00260 
00261     // inform attached callbacks
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     /* check if the correct tag */
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     /* iterate through childs */
00284     // bool returntag = true;
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 

Generated by doxygen