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