1 /* vim:tabstop=4:expandtab:shiftwidth=4
2 *
3 * Idesk -- DesktopIconConfig.cpp
4 *
5 * Copyright (c) 2002, Chris (nikon) (nikon@sc.rr.com)
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions are met:
10 *
11 * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 *
18 * Neither the name of the <ORGANIZATION> nor the names of its
19 * contributors may be used to endorse or promote products derived from
20 * this software without specific prior written permission.
21 *
22 * (See the included file COPYING / BSD )
23 */
24
25 #include "DesktopIconConfig.h"
26
DesktopIconConfig(const string & fName,CommonOptions * parentData)27 DesktopIconConfig::DesktopIconConfig(const string & fName, CommonOptions * parentData)
28 {
29 iconFilename = fName;
30
31 common = new CommonOptions();
32
33 common->setDefaultsFromParent(*parentData);
34
35 Database db(iconFilename);
36 Table table = db.Query("Icon");
37
38 if(!table.isValid())
39 cout << "No Icon table found in the config file!!\n";
40 else
41 {
42 common->setOptions(table);
43 setIconOptions(table);
44 }
45 }
46
~DesktopIconConfig()47 DesktopIconConfig::~DesktopIconConfig()
48 {
49 }
50
setIconOptions(Table table)51 void DesktopIconConfig::setIconOptions(Table table)
52 {
53 pictureFilename = table.Query("Icon");
54 picExtension = getExtension(pictureFilename);
55 caption = table.Query("Caption");
56 captionTip = table.Query("ToolTip.Caption");
57 x = atoi(table.Query("X").c_str());
58 y = atoi(table.Query("Y").c_str());
59 width = atoi(table.Query("Width").c_str());
60 height = atoi(table.Query("Height").c_str());
61
62 if (table.ArrayExists("Command"))
63 commandArray = table.QueryArray("Command");
64 else if (table.Query("Command") != "") //for a single command (non-array)
65 commandArray.push_back(table.Query("Command"));
66 }
67
saveIcon(int xCord,int yCord)68 void DesktopIconConfig::saveIcon(int xCord, int yCord)
69 {
70 x = xCord;
71 y = yCord;
72
73 Database db(iconFilename);
74 Table & table = db.Query("Icon");
75
76 if(table.isValid())
77 {
78 table.Set("X", itos(xCord));
79 table.Set("Y", itos(yCord));
80
81 db.Write();
82 }
83
84 }
85
getExtension(const string & file)86 string DesktopIconConfig::getExtension(const string & file)
87 {
88 string returnString;
89 int pos = file.rfind('.', file.size() - 1); //search for '.' from the end
90
91 if (pos == string::npos || //no '.' is string
92 pos == (file.size() - 1) || // '.' is at end of string
93 pos == file.size() ) // '.' is at beginning of string
94 {
95 cout << "Cannot determine file extension of: " << file << endl;
96 returnString = "?";
97 }
98 else //grab all of the string that is after the '.'
99 returnString = getUpper(file.substr(pos + 1, file.size() - pos));
100
101 if(returnString.size() > 3){ //remove all white space
102 while(returnString.size() > 3){
103 returnString = returnString.substr(0, returnString.size() - 1);
104 }
105 }
106
107 return returnString;
108 }
109
110 /***************************************************************************\
111 * CommonOptions class *
112 \***************************************************************************/
113
CommonOptions()114 CommonOptions::CommonOptions()
115 {
116 }
117
~CommonOptions()118 CommonOptions::~CommonOptions()
119 {
120 }
121
setCommonDefaults()122 void CommonOptions::setCommonDefaults()
123 {
124
125 fontName = "Arial";
126 fontSize = 16;
127 fontColor = "#ffffff";
128
129 clickDelay = 200;
130
131 shadowColor = "#000000";
132 shadowX = 1;
133 shadowY = 1;
134
135 isBold = false;
136
137 shadowOn = false;
138 snapShadow = false;
139 snapShadowTrans = -1;
140
141 captionOnHover = false;
142 captionPlacement = "Bottom";
143
144 fillStyle = "None";
145
146 cursorOver = XC_hand1;
147 }
148
setDefaultsFromParent(CommonOptions & other)149 void CommonOptions::setDefaultsFromParent(CommonOptions & other)
150 {
151 fontName = other.fontName;
152 fontSize = other.fontSize;
153 fontColor = other.fontColor;
154
155 clickDelay = other.clickDelay;
156
157 shadowColor = other.shadowColor;
158 shadowX = other.shadowX;
159 shadowY = other.shadowY;
160
161 isBold = other.isBold;
162
163 shadowOn = other.shadowOn;
164 snapShadow = other.snapShadow;
165 snapShadowTrans = other.snapShadowTrans;
166
167 captionOnHover = other.captionOnHover;
168
169 captionPlacement = other.captionPlacement;
170
171 cursorOver = other.cursorOver;
172
173 fillStyle = other.fillStyle;
174
175 }
176
setOptions(Table t)177 void CommonOptions::setOptions(Table t)
178 {
179 table = t;
180
181 //font options
182 if (table.Query("FontName") != "")
183 fontName = table.Query("FontName");
184 if (table.Query("FontSize") != "")
185 fontSize = atoi(table.Query("FontSize").c_str());
186 if (fontSize>256)
187 fontSize = 16;
188 if (table.Query("FontColor") != "")
189 fontColor = table.Query("FontColor");
190
191 //click options
192 if (table.Query("ClickDelay") != "")
193 clickDelay = atoi(table.Query("ClickDelay").c_str());
194
195 //shadow fonts
196 if (getUpper(table.Query("Shadow")) == "TRUE")
197 shadowOn = true;
198 else if (getUpper(table.Query("Shadow")) == "FALSE")
199 shadowOn = false;
200
201 if (table.Query("ShadowColor") != "")
202 shadowColor = table.Query("ShadowColor");
203 if (table.Query("ShadowX") != "")
204 shadowX = atoi(table.Query("ShadowX").c_str());
205 if (table.Query("ShadowY") != "")
206 shadowY = atoi(table.Query("ShadowY").c_str());
207
208 //boldness
209 if (getUpper(table.Query( "Bold" )) == "TRUE")
210 isBold = true;
211 else if (getUpper(table.Query( "Bold" )) == "FALSE")
212 isBold = false;
213
214 //snap shadow
215 if (getUpper(table.Query("SnapShadow")) == "TRUE")
216 snapShadow = true;
217 else if (getUpper(table.Query("SnapShadow")) == "FALSE")
218 snapShadow = false;
219
220 if (table.Query("SnapShadowTrans") != "")
221 snapShadowTrans = atoi(table.Query("SnapShadowTrans").c_str());
222
223 //captionOnHover
224 if (getUpper(table.Query("CaptionOnHover")) == "TRUE")
225 captionOnHover = true;
226 else if (getUpper(table.Query("CaptionOnHover")) == "FALSE")
227 captionOnHover = false;
228
229
230 //captionPlacement
231 if (getUpper(table.Query("CaptionPlacement")) == "BOTTOM")
232 captionPlacement = "Bottom";
233 else if (getUpper(table.Query("CaptionPlacement")) == "TOP")
234 captionPlacement = "Top";
235 else if (getUpper(table.Query("CaptionPlacement")) == "LEFT")
236 captionPlacement = "Left";
237 else if (getUpper(table.Query("CaptionPlacement")) == "RIGHT")
238 captionPlacement = "Right";
239
240
241 //fillStyle
242 if (getUpper(table.Query("FillStyle")) == "FILLINVERT")
243 fillStyle = "FillInvert";
244 else if (getUpper(table.Query("FillStyle")) == "FILLHLINE")
245 fillStyle = "FillHLine";
246 else if (getUpper(table.Query("FillStyle")) == "FILLVLINE")
247 fillStyle = "FillVLine";
248 else if (getUpper(table.Query("FillStyle")) == "None")
249 fillStyle = "None";
250
251 //Cursor
252 if (getUpper(table.Query("CursorOver")) == "X_CURSOR")
253 cursorOver = XC_X_cursor;
254 else if (getUpper(table.Query("CursorOver")) == "ARROW")
255 cursorOver = XC_arrow;
256 else if (getUpper(table.Query("CursorOver")) == "BASED_ARROW_DOWN")
257 cursorOver = XC_based_arrow_down;
258 else if (getUpper(table.Query("CursorOver")) == "BASED_ARROW_UP")
259 cursorOver = XC_based_arrow_up;
260 else if (getUpper(table.Query("CursorOver")) == "BOAT")
261 cursorOver = XC_boat;
262 else if (getUpper(table.Query("CursorOver")) == "BOGOSiTY")
263 cursorOver = XC_bogosity;
264 else if (getUpper(table.Query("CursorOver")) == "BOTTOM_LEFT_CORNER")
265 cursorOver = XC_bottom_left_corner;
266 else if (getUpper(table.Query("CursorOver")) == "BOTTOM_RIGHT_CORNER")
267 cursorOver = XC_bottom_right_corner;
268 else if (getUpper(table.Query("CursorOver")) == "BOTTOM_SIDE")
269 cursorOver = XC_bottom_side;
270 else if (getUpper(table.Query("CursorOver")) == "BOTTOM_TEE")
271 cursorOver = XC_bottom_tee;
272 else if (getUpper(table.Query("CursorOver")) == "BOX_SPIRAL")
273 cursorOver = XC_box_spiral;
274 else if (getUpper(table.Query("CursorOver")) == "CENTER_PTR")
275 cursorOver = XC_center_ptr;
276 else if (getUpper(table.Query("CursorOver")) == "CIRCLE")
277 cursorOver = XC_circle;
278 else if (getUpper(table.Query("CursorOver")) == "CLOCK")
279 cursorOver = XC_clock;
280 else if (getUpper(table.Query("CursorOver")) == "COFFE_MUG")
281 cursorOver = XC_coffee_mug;
282 else if (getUpper(table.Query("CursorOver")) == "CROSS")
283 cursorOver = XC_cross;
284 else if (getUpper(table.Query("CursorOver")) == "CROSS_REVERSE")
285 cursorOver = XC_cross_reverse;
286 else if (getUpper(table.Query("CursorOver")) == "CROSSHAIR")
287 cursorOver = XC_crosshair;
288 else if (getUpper(table.Query("CursorOver")) == "DIAMOND_CROSS")
289 cursorOver = XC_diamond_cross;
290 else if (getUpper(table.Query("CursorOver")) == "DOT")
291 cursorOver = XC_dot;
292 else if (getUpper(table.Query("CursorOver")) == "DOTBOX")
293 cursorOver = XC_dotbox;
294 else if (getUpper(table.Query("CursorOver")) == "DOUBLE_ARROW")
295 cursorOver = XC_double_arrow;
296 else if (getUpper(table.Query("CursorOver")) == "DRAFT_LARGE")
297 cursorOver = XC_draft_large;
298 else if (getUpper(table.Query("CursorOver")) == "DRAFT_SMALL")
299 cursorOver = XC_draft_small;
300 else if (getUpper(table.Query("CursorOver")) == "DRAPED_BOX")
301 cursorOver = XC_draped_box;
302 else if (getUpper(table.Query("CursorOver")) == "EXCHANGE")
303 cursorOver = XC_exchange;
304 else if (getUpper(table.Query("CursorOver")) == "FLEUR")
305 cursorOver = XC_fleur;
306 else if (getUpper(table.Query("CursorOver")) == "GOBBLER")
307 cursorOver = XC_gobbler;
308 else if (getUpper(table.Query("CursorOver")) == "GUMBY")
309 cursorOver = XC_gumby;
310 else if (getUpper(table.Query("CursorOver")) == "HAND1")
311 cursorOver = XC_hand1;
312 else if (getUpper(table.Query("CursorOver")) == "HAND2")
313 cursorOver = XC_hand2;
314 else if (getUpper(table.Query("CursorOver")) == "HEART")
315 cursorOver = XC_heart;
316 else if (getUpper(table.Query("CursorOver")) == "ICON")
317 cursorOver = XC_icon;
318 else if (getUpper(table.Query("CursorOver")) == "IRON_CROSS")
319 cursorOver = XC_iron_cross;
320 else if (getUpper(table.Query("CursorOver")) == "LEFT_PTR")
321 cursorOver = XC_left_ptr;
322 else if (getUpper(table.Query("CursorOver")) == "LEFT_PTR")
323 cursorOver = XC_left_side;
324 else if (getUpper(table.Query("CursorOver")) == "LEFT_TEE")
325 cursorOver = XC_left_tee;
326 else if (getUpper(table.Query("CursorOver")) == "LEFFBUTTON")
327 cursorOver = XC_leftbutton;
328 else if (getUpper(table.Query("CursorOver")) == "LL_ANGLE")
329 cursorOver = XC_ll_angle;
330 else if (getUpper(table.Query("CursorOver")) == "LR_ANGLE")
331 cursorOver = XC_lr_angle;
332 else if (getUpper(table.Query("CursorOver")) == "MAN")
333 cursorOver = XC_man;
334 else if (getUpper(table.Query("CursorOver")) == "MIDDLEBUTTON")
335 cursorOver = XC_middlebutton;
336 else if (getUpper(table.Query("CursorOver")) == "MOUSE")
337 cursorOver = XC_mouse;
338 else if (getUpper(table.Query("CursorOver")) == "PENCIL")
339 cursorOver = XC_pencil;
340 else if (getUpper(table.Query("CursorOver")) == "PIRATE")
341 cursorOver = XC_pirate;
342 else if (getUpper(table.Query("CursorOver")) == "PLUS")
343 cursorOver = XC_plus;
344 else if (getUpper(table.Query("CursorOver")) == "QUESTION_ARROW")
345 cursorOver = XC_question_arrow;
346 else if (getUpper(table.Query("CursorOver")) == "RIGHT_PTR")
347 cursorOver = XC_right_ptr;
348 else if (getUpper(table.Query("CursorOver")) == "RIGHT_SIDE")
349 cursorOver = XC_right_side;
350 else if (getUpper(table.Query("CursorOver")) == "RIGHT_TEE")
351 cursorOver = XC_right_tee;
352 else if (getUpper(table.Query("CursorOver")) == "RIGHTBUTTON")
353 cursorOver = XC_rightbutton;
354 else if (getUpper(table.Query("CursorOver")) == "RTL_LOGO")
355 cursorOver = XC_rtl_logo;
356 else if (getUpper(table.Query("CursorOver")) == "SAILBOAT")
357 cursorOver = XC_sailboat;
358 else if (getUpper(table.Query("CursorOver")) == "SB_DOWN_ARROW")
359 cursorOver = XC_sb_down_arrow;
360 else if (getUpper(table.Query("CursorOver")) == "SB_H_DOUBLE_ARROW")
361 cursorOver = XC_sb_h_double_arrow;
362 else if (getUpper(table.Query("CursorOver")) == "SB_LEFT_ARROW")
363 cursorOver = XC_sb_left_arrow;
364 else if (getUpper(table.Query("CursorOver")) == "SB_RIGHT_ARROW")
365 cursorOver = XC_sb_right_arrow;
366 else if (getUpper(table.Query("CursorOver")) == "SB_UP_ARROW")
367 cursorOver = XC_sb_up_arrow;
368 else if (getUpper(table.Query("CursorOver")) == "SB_V_DOUBLE_ARROW")
369 cursorOver = XC_sb_v_double_arrow;
370 else if (getUpper(table.Query("CursorOver")) == "SHUTTLE")
371 cursorOver = XC_shuttle;
372 else if (getUpper(table.Query("CursorOver")) == "SIZING")
373 cursorOver = XC_sizing;
374 else if (getUpper(table.Query("CursorOver")) == "SPIDER")
375 cursorOver = XC_spider;
376 else if (getUpper(table.Query("CursorOver")) == "SPRAYCAN")
377 cursorOver = XC_spraycan;
378 else if (getUpper(table.Query("CursorOver")) == "STAR")
379 cursorOver = XC_star;
380 else if (getUpper(table.Query("CursorOver")) == "TARGET")
381 cursorOver = XC_target;
382 else if (getUpper(table.Query("CursorOver")) == "TCROSS")
383 cursorOver = XC_tcross;
384 else if (getUpper(table.Query("CursorOver")) == "TOP_LEFT_ARROW")
385 cursorOver = XC_top_left_arrow;
386 else if (getUpper(table.Query("CursorOver")) == "TOP_LEFT_CORNER")
387 cursorOver = XC_top_left_corner;
388 else if (getUpper(table.Query("CursorOver")) == "TOP_RIGHT_CORNER")
389 cursorOver = XC_top_right_corner;
390 else if (getUpper(table.Query("CursorOver")) == "TOP_SIDE")
391 cursorOver = XC_top_side;
392 else if (getUpper(table.Query("CursorOver")) == "TOP_TEE")
393 cursorOver = XC_top_tee;
394 else if (getUpper(table.Query("CursorOver")) == "TREK")
395 cursorOver = XC_trek;
396 else if (getUpper(table.Query("CursorOver")) == "UL_ANGLE")
397 cursorOver = XC_ul_angle;
398 else if (getUpper(table.Query("CursorOver")) == "UMBRELLA")
399 cursorOver = XC_umbrella;
400 else if (getUpper(table.Query("CursorOver")) == "UR_ANGLE")
401 cursorOver = XC_ur_angle;
402 else if (getUpper(table.Query("CursorOver")) == "WATCH")
403 cursorOver = XC_watch;
404 else if (getUpper(table.Query("CursorOver")) == "XTERM")
405 cursorOver = XC_xterm;
406 }
407