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/mmsarrowwidgetclass.h" 00034 #include <string.h> 00035 00036 //store attribute descriptions here 00037 TAFF_ATTRDESC MMSGUI_ARROWWIDGET_ATTR_I[] = MMSGUI_ARROWWIDGET_ATTR_INIT; 00038 00039 // address attribute names 00040 #define GETATTRNAME(aname) MMSGUI_ARROWWIDGET_ATTR_I[MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_##aname].name 00041 00042 // address attribute types 00043 #define GETATTRTYPE(aname) MMSGUI_ARROWWIDGET_ATTR_I[MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_##aname].type 00044 00045 00046 MMSArrowWidgetClass::MMSArrowWidgetClass() { 00047 unsetAll(); 00048 } 00049 00050 void MMSArrowWidgetClass::unsetAll() { 00051 this->className = ""; 00052 unsetColor(); 00053 unsetSelColor(); 00054 unsetDirection(); 00055 unsetCheckSelected(); 00056 } 00057 00058 void MMSArrowWidgetClass::setAttributesFromTAFF(MMSTaffFile *tafff, string *prefix, string *path, bool reset_paths) { 00059 MMSFBColor color; 00060 00061 if (!prefix) { 00062 startTAFFScan 00063 { 00064 switch (attrid) { 00065 case MMSGUI_BASE_ATTR::MMSGUI_BASE_ATTR_IDS_class: 00066 setClassName(attrval_str); 00067 break; 00068 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_color: 00069 setColor(MMSFBColor((unsigned int)attrval_int)); 00070 break; 00071 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_color_a: 00072 color.a = color.r = color.g = color.b = 0; 00073 if (isColor()) color = getColor(); 00074 color.a = attrval_int; 00075 setColor(color); 00076 break; 00077 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_color_r: 00078 color.a = color.r = color.g = color.b = 0; 00079 if (isColor()) color = getColor(); 00080 color.r = attrval_int; 00081 setColor(color); 00082 break; 00083 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_color_g: 00084 color.a = color.r = color.g = color.b = 0; 00085 if (isColor()) color = getColor(); 00086 color.g = attrval_int; 00087 setColor(color); 00088 break; 00089 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_color_b: 00090 color.a = color.r = color.g = color.b = 0; 00091 if (isColor()) color = getColor(); 00092 color.b = attrval_int; 00093 setColor(color); 00094 break; 00095 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_selcolor: 00096 setSelColor(MMSFBColor((unsigned int)attrval_int)); 00097 break; 00098 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_selcolor_a: 00099 color.a = color.r = color.g = color.b = 0; 00100 if (isSelColor()) color = getSelColor(); 00101 color.a = attrval_int; 00102 setSelColor(color); 00103 break; 00104 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_selcolor_r: 00105 color.a = color.r = color.g = color.b = 0; 00106 if (isSelColor()) color = getSelColor(); 00107 color.r = attrval_int; 00108 setSelColor(color); 00109 break; 00110 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_selcolor_g: 00111 color.a = color.r = color.g = color.b = 0; 00112 if (isSelColor()) color = getSelColor(); 00113 color.g = attrval_int; 00114 setSelColor(color); 00115 break; 00116 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_selcolor_b: 00117 color.a = color.r = color.g = color.b = 0; 00118 if (isSelColor()) color = getSelColor(); 00119 color.b = attrval_int; 00120 setSelColor(color); 00121 break; 00122 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_direction: 00123 setDirection(getDirectionFromString(attrval_str)); 00124 break; 00125 case MMSGUI_ARROWWIDGET_ATTR::MMSGUI_ARROWWIDGET_ATTR_IDS_check_selected: 00126 setCheckSelected((attrval_int) ? true : false); 00127 break; 00128 } 00129 } 00130 endTAFFScan 00131 } 00132 else { 00133 unsigned int pl = strlen(prefix->c_str()); 00134 00135 startTAFFScan_WITHOUT_ID 00136 { 00137 // check if attrname has correct prefix 00138 if (pl >= strlen(attrname)) 00139 continue; 00140 if (memcmp(attrname, prefix->c_str(), pl)!=0) 00141 continue; 00142 attrname = &attrname[pl]; 00143 00144 // special storage for macros 00145 bool attrval_str_valid; 00146 bool int_val_set; 00147 bool byte_val_set; 00148 int *p_int_val = &attrval_int; 00149 00150 // okay, correct prefix, check attributes now 00151 if (ISATTRNAME(color)) { 00152 setColor(MMSFBColor((unsigned int)attrval_int)); 00153 } 00154 else 00155 if (ISATTRNAME(color_a)) { 00156 color.a = color.r = color.g = color.b = 0; 00157 if (isColor()) color = getColor(); 00158 color.a = attrval_int; 00159 setColor(color); 00160 } 00161 else 00162 if (ISATTRNAME(color_r)) { 00163 color.a = color.r = color.g = color.b = 0; 00164 if (isColor()) color = getColor(); 00165 color.r = attrval_int; 00166 setColor(color); 00167 } 00168 else 00169 if (ISATTRNAME(color_g)) { 00170 color.a = color.r = color.g = color.b = 0; 00171 if (isColor()) color = getColor(); 00172 color.g = attrval_int; 00173 setColor(color); 00174 } 00175 else 00176 if (ISATTRNAME(color_b)) { 00177 color.a = color.r = color.g = color.b = 0; 00178 if (isColor()) color = getColor(); 00179 color.b = attrval_int; 00180 setColor(color); 00181 } 00182 else 00183 if (ISATTRNAME(selcolor)) { 00184 setSelColor(MMSFBColor((unsigned int)attrval_int)); 00185 } 00186 else 00187 if (ISATTRNAME(selcolor_a)) { 00188 color.a = color.r = color.g = color.b = 0; 00189 if (isSelColor()) color = getSelColor(); 00190 color.a = attrval_int; 00191 setSelColor(color); 00192 } 00193 else 00194 if (ISATTRNAME(selcolor_r)) { 00195 color.a = color.r = color.g = color.b = 0; 00196 if (isSelColor()) color = getSelColor(); 00197 color.r = attrval_int; 00198 setSelColor(color); 00199 } 00200 else 00201 if (ISATTRNAME(selcolor_g)) { 00202 color.a = color.r = color.g = color.b = 0; 00203 if (isSelColor()) color = getSelColor(); 00204 color.g = attrval_int; 00205 setSelColor(color); 00206 } 00207 else 00208 if (ISATTRNAME(selcolor_b)) { 00209 color.a = color.r = color.g = color.b = 0; 00210 if (isSelColor()) color = getSelColor(); 00211 color.b = attrval_int; 00212 setSelColor(color); 00213 } 00214 else 00215 if (ISATTRNAME(direction)) { 00216 setDirection(getDirectionFromString(attrval_str)); 00217 } 00218 else 00219 if (ISATTRNAME(check_selected)) { 00220 setCheckSelected((attrval_int) ? true : false); 00221 } 00222 } 00223 endTAFFScan_WITHOUT_ID 00224 } 00225 } 00226 00227 void MMSArrowWidgetClass::setClassName(string className) { 00228 this->className = className; 00229 } 00230 00231 string MMSArrowWidgetClass::getClassName() { 00232 return this->className; 00233 } 00234 00235 bool MMSArrowWidgetClass::isColor() { 00236 return this->iscolor; 00237 } 00238 00239 void MMSArrowWidgetClass::setColor(MMSFBColor color) { 00240 this->color = color; 00241 this->iscolor = true; 00242 } 00243 00244 void MMSArrowWidgetClass::unsetColor() { 00245 this->iscolor = false; 00246 } 00247 00248 MMSFBColor MMSArrowWidgetClass::getColor() { 00249 return this->color; 00250 } 00251 00252 bool MMSArrowWidgetClass::isSelColor() { 00253 return this->isselcolor; 00254 } 00255 00256 void MMSArrowWidgetClass::setSelColor(MMSFBColor selcolor) { 00257 this->selcolor = selcolor; 00258 this->isselcolor = true; 00259 } 00260 00261 void MMSArrowWidgetClass::unsetSelColor() { 00262 this->isselcolor = false; 00263 } 00264 00265 MMSFBColor MMSArrowWidgetClass::getSelColor() { 00266 return this->selcolor; 00267 } 00268 00269 bool MMSArrowWidgetClass::isDirection() { 00270 return this->isdirection; 00271 } 00272 00273 void MMSArrowWidgetClass::setDirection(MMSDIRECTION direction) { 00274 this->direction = direction; 00275 this->isdirection = true; 00276 } 00277 00278 void MMSArrowWidgetClass::unsetDirection() { 00279 this->isdirection = false; 00280 } 00281 00282 MMSDIRECTION MMSArrowWidgetClass::getDirection() { 00283 return this->direction; 00284 } 00285 00286 bool MMSArrowWidgetClass::isCheckSelected() { 00287 return this->ischeckselected; 00288 } 00289 00290 void MMSArrowWidgetClass::setCheckSelected(bool checkselected) { 00291 this->checkselected = checkselected; 00292 this->ischeckselected = true; 00293 } 00294 00295 void MMSArrowWidgetClass::unsetCheckSelected() { 00296 this->ischeckselected = false; 00297 } 00298 00299 bool MMSArrowWidgetClass::getCheckSelected() { 00300 return this->checkselected; 00301 } 00302