5 * Copyright (C) 2010-2011 Scott Smith
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
25 CConfig::CConfig() : CBase(),
42 UnusedKeysLaunch (false),
43 UnusedJoysLaunch (false),
44 ReloadLauncher (true),
45 TextScrollOption (true),
47 FilenameArgNoExt (false),
48 FilenameAbsPath (true),
49 EntryFastMode (ENTRY_FAST_MODE_FILTER),
50 MaxEntries (MAX_ENTRIES),
51 ColorButton (COLOR_BLUE),
52 ColorFontButton (COLOR_WHITE),
53 ColorBackground (COLOR_WHITE),
54 ColorFontFiles (COLOR_BLACK),
55 ColorFontFolders (COLOR_RED),
56 AnalogDeadZone (DEAD_ZONE),
57 ScreenWidth (SCREEN_WIDTH),
58 ScreenHeight (SCREEN_HEIGHT),
59 ScreenDepth (SCREEN_DEPTH),
60 CPUClock (CPU_CLOCK_DEF),
61 ScrollSpeed (SCROLL_SPEED),
62 ScrollPauseSpeed (SCROLL_PAUSE_SPEED),
69 ButtonHeightRight (0),
72 DisplayListMaxWidth (0),
82 ScreenRatioW ((float)ScreenWidth/(float)BASE_WIDTH),
83 ScreenRatioH ((float)ScreenHeight/(float)BASE_HEIGHT),
85 PreviewsPath ("previews"),
86 PathFont ("DejaVuSansMono-Bold.ttf"),
87 PathBackground ("images/background.png"),
88 PathPointer ("images/pointer.png"),
89 PathSelectPointer ("images/selectpointer.png"),
90 Delimiter (DELIMITER),
91 ButtonModesLeftEnable (),
92 ButtonModesRightEnable (),
107 void CConfig::SetDefaults( void )
109 ButtonModesLeftEnable.resize( BUTTONS_MAX_LEFT, true );
110 ButtonModesRightEnable.resize( BUTTONS_MAX_RIGHT, true );
112 KeyMaps.resize(EVENT_TOTAL);
113 KeyMaps.at(EVENT_ONE_UP) = SDLK_UP;
114 KeyMaps.at(EVENT_ONE_DOWN) = SDLK_DOWN;
115 KeyMaps.at(EVENT_PAGE_UP) = SDLK_LEFT;
116 KeyMaps.at(EVENT_PAGE_DOWN) = SDLK_RIGHT;
117 KeyMaps.at(EVENT_DIR_UP) = SDLK_LCTRL;
118 KeyMaps.at(EVENT_DIR_DOWN) = SDLK_RSHIFT;
119 KeyMaps.at(EVENT_CFG_APP) = SDLK_1;
120 KeyMaps.at(EVENT_CFG_ITEM) = SDLK_2;
121 KeyMaps.at(EVENT_SET_ONE) = SDLK_3;
122 KeyMaps.at(EVENT_SET_ALL) = SDLK_4;
123 KeyMaps.at(EVENT_SELECT) = SDLK_RETURN;
124 KeyMaps.at(EVENT_BACK) = SDLK_LCTRL;
125 KeyMaps.at(EVENT_QUIT) = SDLK_ESCAPE;
127 JoyMaps.resize(EVENT_TOTAL);
128 JoyMaps.at(EVENT_ONE_UP) = 0;
129 JoyMaps.at(EVENT_ONE_DOWN) = 1;
130 JoyMaps.at(EVENT_PAGE_UP) = 2;
131 JoyMaps.at(EVENT_PAGE_DOWN) = 3;
132 JoyMaps.at(EVENT_DIR_UP) = 4;
133 JoyMaps.at(EVENT_DIR_DOWN) = 5;
134 JoyMaps.at(EVENT_CFG_APP) = 6;
135 JoyMaps.at(EVENT_CFG_ITEM) = 7;
136 JoyMaps.at(EVENT_SET_ONE) = 8;
137 JoyMaps.at(EVENT_SET_ALL) = 9;
138 JoyMaps.at(EVENT_SELECT) = 10;
139 JoyMaps.at(EVENT_BACK) = 11;
140 JoyMaps.at(EVENT_QUIT) = 12;
142 PathButtons.resize(EVENT_TOTAL);
143 PathButtons.at(EVENT_ONE_UP) = "images/button_oneup.png";
144 PathButtons.at(EVENT_ONE_DOWN) = "images/button_onedn.png";
145 PathButtons.at(EVENT_PAGE_UP) = "images/button_pageup.png";
146 PathButtons.at(EVENT_PAGE_DOWN) = "images/button_pagedn.png";
147 PathButtons.at(EVENT_DIR_UP) = "images/button_dirup.png";
148 PathButtons.at(EVENT_DIR_DOWN) = "images/button_dirdn.png";
149 PathButtons.at(EVENT_ZIP_MODE) = "images/button_zipmode.png";
150 PathButtons.at(EVENT_CFG_APP) = "images/button_cfg_app.png";
151 PathButtons.at(EVENT_CFG_ITEM) = "images/button_cfg_item.png";
152 PathButtons.at(EVENT_SET_ONE) = "images/button_set_one.png";
153 PathButtons.at(EVENT_SET_ALL) = "images/button_set_all.png";
154 PathButtons.at(EVENT_BACK) = "images/button_back.png";
155 PathButtons.at(EVENT_SELECT) = "images/button_select.png";
156 PathButtons.at(EVENT_QUIT) = "images/button_quit.png";
158 Colors.resize(COLOR_TOTAL);
159 ColorNames.resize(COLOR_TOTAL);
160 ColorNames.at(COLOR_WHITE) = "white"; Colors.at(COLOR_WHITE).r = 255; Colors.at(COLOR_WHITE).g = 255; Colors.at(COLOR_WHITE).b = 255;
161 ColorNames.at(COLOR_YELLOW) = "yellow"; Colors.at(COLOR_YELLOW).r = 255; Colors.at(COLOR_YELLOW).g = 255; Colors.at(COLOR_YELLOW).b = 0;
162 ColorNames.at(COLOR_FUCHSIA) = "fushsia"; Colors.at(COLOR_FUCHSIA).r = 255; Colors.at(COLOR_FUCHSIA).g = 0; Colors.at(COLOR_FUCHSIA).b = 255;
163 ColorNames.at(COLOR_RED) = "red"; Colors.at(COLOR_RED).r = 255; Colors.at(COLOR_RED).g = 0; Colors.at(COLOR_RED).b = 0;
164 ColorNames.at(COLOR_SILVER) = "silver"; Colors.at(COLOR_SILVER).r = 192; Colors.at(COLOR_SILVER).g = 192; Colors.at(COLOR_SILVER).b = 192;
165 ColorNames.at(COLOR_GRAY) = "gray"; Colors.at(COLOR_GRAY).r = 128; Colors.at(COLOR_GRAY).g = 128; Colors.at(COLOR_GRAY).b = 128;
166 ColorNames.at(COLOR_OLIVE) = "olive"; Colors.at(COLOR_OLIVE).r = 128; Colors.at(COLOR_OLIVE).g = 128; Colors.at(COLOR_OLIVE).b = 0;
167 ColorNames.at(COLOR_PURPLE) = "purple"; Colors.at(COLOR_PURPLE).r = 128; Colors.at(COLOR_PURPLE).g = 0; Colors.at(COLOR_PURPLE).b = 128;
168 ColorNames.at(COLOR_MAROON) = "maroon"; Colors.at(COLOR_MAROON).r = 128; Colors.at(COLOR_MAROON).g = 0; Colors.at(COLOR_MAROON).b = 0;
169 ColorNames.at(COLOR_AQUA) = "aqua"; Colors.at(COLOR_AQUA).r = 0; Colors.at(COLOR_AQUA).g = 255; Colors.at(COLOR_AQUA).b = 255;
170 ColorNames.at(COLOR_LIME) = "lime"; Colors.at(COLOR_LIME).r = 0; Colors.at(COLOR_LIME).g = 255; Colors.at(COLOR_LIME).b = 0;
171 ColorNames.at(COLOR_TEAL) = "teal"; Colors.at(COLOR_TEAL).r = 0; Colors.at(COLOR_TEAL).g = 128; Colors.at(COLOR_TEAL).b = 128;
172 ColorNames.at(COLOR_GREEN) = "green"; Colors.at(COLOR_GREEN).r = 0; Colors.at(COLOR_GREEN).g = 128; Colors.at(COLOR_GREEN).b = 0;
173 ColorNames.at(COLOR_BLUE) = "blue"; Colors.at(COLOR_BLUE).r = 0; Colors.at(COLOR_BLUE).g = 0; Colors.at(COLOR_BLUE).b = 255;
174 ColorNames.at(COLOR_NAVY) = "navy"; Colors.at(COLOR_NAVY).r = 0; Colors.at(COLOR_NAVY).g = 0; Colors.at(COLOR_NAVY).b = 128;
175 ColorNames.at(COLOR_BLACK) = "black"; Colors.at(COLOR_BLACK).r = 0; Colors.at(COLOR_BLACK).g = 0; Colors.at(COLOR_BLACK).b = 0;
177 FontSizes.resize(FONT_SIZE_TOTAL, 0);
178 FontSizes.at(FONT_SIZE_SMALL) = (int16_t)( 8*ScreenRatioH);
179 FontSizes.at(FONT_SIZE_MEDIUM) = (int16_t)(12*ScreenRatioH);
180 FontSizes.at(FONT_SIZE_LARGE) = (int16_t)(14*ScreenRatioH);
182 EntryYDelta = ENTRY_Y_DELTA;
183 EntryXOffset = ENTRY_X_OFFSET;
184 EntryYOffset = ENTRY_Y_OFFSET;
185 ButtonWidthLeft = BUTTON_W_LEFT;
186 ButtonHeightLeft = BUTTON_H_LEFT;
187 ButtonWidthRight = BUTTON_W_RIGHT;
188 ButtonHeightRight = BUTTON_H_RIGHT;
189 PreviewWidth = PREVIEW_W;
190 PreviewHeight = PREVIEW_H;
191 DisplayListMaxWidth = ENTRY_MAX_W;
192 FilePathMaxWidth = FILEPATH_MAX_W;
195 #define LOAD_INT(X,Y) if (UnprefixString( line, line, X ) == true) { Y = a_to_i(line); }
196 #define LOAD_KEY(X,Y) if (UnprefixString( line, line, X ) == true) { Y = (SDLKey)a_to_i(line); }
197 #define LOAD_STR(X,Y) if (UnprefixString( Y, line, X ) == true) {}
199 int8_t CConfig::Load( const string& location )
206 fin.open(location.c_str(), ios_base::in);
210 Log( "Failed to open config\n" );
211 return 0; // Dont stop the app if it cant be opened, default values will be used and then save to file.
214 // Read in the profile
222 Log( "%s\n", line.c_str() );
225 if (line.length() > 0)
227 LOAD_INT( OPT_SCREEN_WIDTH, ScreenWidth );
228 LOAD_INT( OPT_SCREEN_HEIGHT, ScreenHeight );
229 LOAD_INT( OPT_SCREEN_DEPTH, ScreenDepth );
230 LOAD_INT( OPT_FULLSCREEN, Fullscreen );
231 LOAD_INT( OPT_CPU_CLOCK, CPUClock );
232 LOAD_INT( OPT_USEZIPSUPPORT, UseZipSupport );
233 LOAD_INT( OPT_SHOWEXTS, ShowExts );
234 LOAD_INT( OPT_SHOWHIDDEN, ShowHidden );
235 LOAD_INT( OPT_SHOWPOINTER, ShowPointer );
236 LOAD_INT( OPT_SHOWLABELS, ShowLabels );
237 LOAD_INT( OPT_UNUSED_KEYS_SELECT, UnusedKeysLaunch );
238 LOAD_INT( OPT_UNUSED_JOYS_SELECT, UnusedJoysLaunch );
239 LOAD_INT( OPT_RELOAD_LAUNCHER, ReloadLauncher );
240 LOAD_INT( OPT_TEXT_SCROLL_OPTION, TextScrollOption );
241 LOAD_INT( OPT_FILENAMEARGNOEXT, FilenameArgNoExt );
242 LOAD_INT( OPT_FILEABSPATH, FilenameAbsPath );
243 LOAD_INT( OPT_FONT_SIZE_SMALL, FontSizes.at(FONT_SIZE_SMALL) );
244 LOAD_INT( OPT_FONT_SIZE_MEDIUM, FontSizes.at(FONT_SIZE_MEDIUM) );
245 LOAD_INT( OPT_FONT_SIZE_LARGE, FontSizes.at(FONT_SIZE_LARGE) );
246 LOAD_INT( OPT_ENTRY_FAST_MODE, EntryFastMode );
247 LOAD_INT( OPT_MAX_ENTRIES, MaxEntries );
248 LOAD_INT( OPT_SCROLL_SPEED, ScrollSpeed );
249 LOAD_INT( OPT_SCROLL_PAUSE_SPEED, ScrollPauseSpeed );
250 LOAD_STR( OPT_PROFILE_DELIMITER, Delimiter );
252 LOAD_INT( OPT_AUTOLAYOUT, AutoLayout );
253 LOAD_INT( OPT_POSX_TITLE, PosX_Title );
254 LOAD_INT( OPT_POSY_TITLE, PosY_Title );
255 LOAD_INT( OPT_POSX_BTNLEFT, PosX_ButtonLeft );
256 LOAD_INT( OPT_POSY_BTNLEFT, PosY_ButtonLeft );
257 LOAD_INT( OPT_POSX_BTNRIGHT, PosX_ButtonRight );
258 LOAD_INT( OPT_POSY_BTNRIGHT, PosY_ButtonRight );
259 LOAD_INT( OPT_POSX_LISTNAMES, PosX_ListNames );
260 LOAD_INT( OPT_POSY_LISTNAMES, PosY_ListNames );
262 LOAD_INT( OPT_ENTRY_Y_DELTA, EntryYDelta );
263 LOAD_INT( OPT_ENTRY_X_OFFSET, EntryXOffset );
264 LOAD_INT( OPT_ENTRY_Y_OFFSET, EntryYOffset );
265 LOAD_INT( OPT_BUTTON_W_LEFT, ButtonWidthLeft );
266 LOAD_INT( OPT_BUTTON_H_LEFT, ButtonHeightLeft );
267 LOAD_INT( OPT_BUTTON_W_RIGHT, ButtonWidthRight );
268 LOAD_INT( OPT_BUTTON_H_RIGHT, ButtonHeightRight );
269 LOAD_INT( OPT_PREVIEW_W, PreviewWidth );
270 LOAD_INT( OPT_PREVIEW_H, PreviewHeight );
271 LOAD_INT( OPT_ENTRY_MAX_W, DisplayListMaxWidth );
272 LOAD_INT( OPT_FILEPATH_MAX_W, FilePathMaxWidth );
274 for (i=0; i<ButtonModesLeftEnable.size(); i++)
276 label = string(OPT_BUTTONLEFT_ENABLED) + "_"+ i_to_a(i);
277 LOAD_INT( label, ButtonModesLeftEnable.at(i) );
279 for (i=0; i<ButtonModesRightEnable.size(); i++)
281 label = string(OPT_BUTTONRIGHT_ENABLED) + "_"+ i_to_a(i);
282 LOAD_INT( label, ButtonModesRightEnable.at(i) );
285 LOAD_STR( OPT_PATH_ZIPTEMP, ZipPath );
286 LOAD_STR( OPT_PATH_PREVIEWS, PreviewsPath );
287 LOAD_STR( OPT_PATH_FONT, PathFont );
288 LOAD_STR( OPT_PATH_BACKGND, PathBackground );
289 LOAD_STR( OPT_PATH_POINTER, PathPointer );
290 LOAD_STR( OPT_PATH_POINTER, PathPointer );
291 LOAD_STR( OPT_PATH_ONEUP, PathButtons.at(EVENT_ONE_UP) );
292 LOAD_STR( OPT_PATH_ONEDN, PathButtons.at(EVENT_ONE_DOWN) );
293 LOAD_STR( OPT_PATH_PGUP, PathButtons.at(EVENT_PAGE_UP) );
294 LOAD_STR( OPT_PATH_PGDN, PathButtons.at(EVENT_PAGE_DOWN) );
295 LOAD_STR( OPT_PATH_DIRUP, PathButtons.at(EVENT_DIR_UP) );
296 LOAD_STR( OPT_PATH_DIRDN, PathButtons.at(EVENT_DIR_DOWN) );
297 LOAD_STR( OPT_PATH_CFG_APP, PathButtons.at(EVENT_CFG_APP) );
298 LOAD_STR( OPT_PATH_CFG_ITEM, PathButtons.at(EVENT_CFG_ITEM) );
299 LOAD_STR( OPT_PATH_SELECT, PathButtons.at(EVENT_SELECT) );
300 LOAD_STR( OPT_PATH_QUIT, PathButtons.at(EVENT_QUIT) );
302 LOAD_INT( OPT_COLOR_BUTTON, ColorButton );
303 LOAD_INT( OPT_COLOR_FONTBUTTON, ColorFontButton );
304 LOAD_INT( OPT_COLOR_BACKGND, ColorBackground );
305 LOAD_INT( OPT_COLOR_FONTFILES, ColorFontFiles );
306 LOAD_INT( OPT_COLOR_FONTFOLDERS, ColorFontFolders );
308 LOAD_KEY( OPT_KEYUP, KeyMaps.at(EVENT_ONE_UP) );
309 LOAD_KEY( OPT_KEYDOWN, KeyMaps.at(EVENT_ONE_DOWN) );
310 LOAD_KEY( OPT_KEYLEFT , KeyMaps.at(EVENT_PAGE_UP) );
311 LOAD_KEY( OPT_KEYRIGHT, KeyMaps.at(EVENT_PAGE_DOWN) );
312 LOAD_KEY( OPT_KEYDIRUP, KeyMaps.at(EVENT_DIR_UP) );
313 LOAD_KEY( OPT_KEYDIRDOWN, KeyMaps.at(EVENT_DIR_DOWN) );
314 LOAD_KEY( OPT_KEYCFGAPP, KeyMaps.at(EVENT_CFG_APP) );
315 LOAD_KEY( OPT_KEYCFGENTRY, KeyMaps.at(EVENT_CFG_ITEM) );
316 LOAD_KEY( OPT_KEYSETONE, KeyMaps.at(EVENT_SET_ONE) );
317 LOAD_KEY( OPT_KEYSETALL, KeyMaps.at(EVENT_SET_ALL) );
318 LOAD_KEY( OPT_KEYSELECT, KeyMaps.at(EVENT_SELECT) );
319 LOAD_KEY( OPT_KEYBACK, KeyMaps.at(EVENT_BACK) );
320 LOAD_KEY( OPT_KEYQUIT, KeyMaps.at(EVENT_QUIT) );
322 LOAD_INT( OPT_JOYUP, JoyMaps.at(EVENT_ONE_UP) );
323 LOAD_INT( OPT_JOYDOWN, JoyMaps.at(EVENT_ONE_DOWN) );
324 LOAD_INT( OPT_JOYLEFT, JoyMaps.at(EVENT_PAGE_UP) );
325 LOAD_INT( OPT_JOYRIGHT, JoyMaps.at(EVENT_PAGE_DOWN) );
326 LOAD_INT( OPT_JOYDIRUP, JoyMaps.at(EVENT_DIR_UP) );
327 LOAD_INT( OPT_JOYDIRDOWN, JoyMaps.at(EVENT_DIR_DOWN) );
328 LOAD_INT( OPT_JOYCFGAPP, JoyMaps.at(EVENT_CFG_APP) );
329 LOAD_INT( OPT_JOYCFGENTRY, JoyMaps.at(EVENT_CFG_ITEM) );
330 LOAD_INT( OPT_JOYSETONE, JoyMaps.at(EVENT_SET_ONE) );
331 LOAD_INT( OPT_JOYSETALL, JoyMaps.at(EVENT_SET_ALL) );
332 LOAD_INT( OPT_JOYSELECT, JoyMaps.at(EVENT_SELECT) );
333 LOAD_INT( OPT_JOYBACK, JoyMaps.at(EVENT_BACK) );
334 LOAD_INT( OPT_JOYQUIT, JoyMaps.at(EVENT_QUIT) );
335 // Analog joystick mappings
336 LOAD_INT( OPT_DEADZONE, AnalogDeadZone );
343 Log( "Failed to open config\n" );
347 ScreenRatioW = (float)ScreenWidth/(float)BASE_WIDTH;
348 ScreenRatioH = (float)ScreenHeight/(float)BASE_HEIGHT;
350 if (ResetGUI == true)
358 #define SAVE_LBL(X) fout << endl << X << endl;
359 #define SAVE_INT(X,H,V) fout << setw(CFG_LBL_W) << X << "= " << setw(CFG_VAL_W) << i_to_a(V) << "# " << H << endl
360 #define SAVE_STR(X,H,V) fout << setw(CFG_LBL_W) << X << "= " << setw(CFG_VAL_W) << V << "# " << H << endl
361 #define GET_KEY_NAME(X) SDL_GetKeyName(KeyMaps.at(X))
363 int8_t CConfig::Save( const string& location )
369 fout.open(location.c_str(), ios_base::trunc);
373 Log( "Failed to open profile\n" );
377 // Write out the profile
380 fout.setf( ios::left, ios::adjustfield );
381 SAVE_LBL( "# General Settings" );
382 SAVE_INT( OPT_SCREEN_WIDTH, HELP_SCREEN_WIDTH, ScreenWidth );
383 SAVE_INT( OPT_SCREEN_HEIGHT, HELP_SCREEN_HEIGHT, ScreenHeight );
384 SAVE_INT( OPT_SCREEN_DEPTH, HELP_SCREEN_DEPTH, ScreenDepth );
385 SAVE_INT( OPT_FULLSCREEN, HELP_FULLSCREEN, Fullscreen );
386 SAVE_INT( OPT_CPU_CLOCK, HELP_CPU_CLOCK, CPUClock );
387 SAVE_INT( OPT_USEZIPSUPPORT, HELP_USEZIPSUPPORT, UseZipSupport );
388 SAVE_INT( OPT_SHOWEXTS, HELP_SHOWEXTS, ShowExts );
389 SAVE_INT( OPT_SHOWHIDDEN, HELP_SHOWHIDDEN, ShowHidden );
390 SAVE_INT( OPT_SHOWPOINTER, HELP_SHOWPOINTER, ShowPointer );
391 SAVE_INT( OPT_SHOWLABELS, HELP_SHOWLABELS, ShowLabels );
392 SAVE_INT( OPT_UNUSED_KEYS_SELECT, HELP_UNUSED_KEYS_SELECT, UnusedKeysLaunch );
393 SAVE_INT( OPT_UNUSED_JOYS_SELECT, HELP_UNUSED_JOYS_SELECT, UnusedJoysLaunch );
394 SAVE_INT( OPT_RELOAD_LAUNCHER, HELP_RELOAD_LAUNCHER, ReloadLauncher );
395 SAVE_INT( OPT_TEXT_SCROLL_OPTION, HELP_TEXT_SCROLL_OPTION, TextScrollOption );
396 SAVE_INT( OPT_FILENAMEARGNOEXT, HELP_FILENAMEARGNOEXT, FilenameArgNoExt );
397 SAVE_INT( OPT_FILEABSPATH, HELP_FILEABSPATH, FilenameAbsPath );
398 SAVE_INT( OPT_FONT_SIZE_SMALL, HELP_FONT_SIZE_SMALL, FontSizes.at(FONT_SIZE_SMALL) );
399 SAVE_INT( OPT_FONT_SIZE_MEDIUM, HELP_FONT_SIZE_MEDIUM, FontSizes.at(FONT_SIZE_MEDIUM) );
400 SAVE_INT( OPT_FONT_SIZE_LARGE, HELP_FONT_SIZE_LARGE, FontSizes.at(FONT_SIZE_LARGE) );
401 SAVE_INT( OPT_ENTRY_FAST_MODE, HELP_ENTRY_FAST_MODE, EntryFastMode );
402 SAVE_INT( OPT_MAX_ENTRIES, HELP_MAX_ENTRIES, MaxEntries );
403 SAVE_INT( OPT_SCROLL_SPEED, HELP_SCROLL_SPEED, ScrollSpeed );
404 SAVE_INT( OPT_SCROLL_PAUSE_SPEED, HELP_SCROLL_PAUSE_SPEED, ScrollPauseSpeed );
405 SAVE_STR( OPT_PROFILE_DELIMITER, HELP_PROFILE_DELIMITER, Delimiter );
406 SAVE_LBL( "# GUI Positions" );
407 SAVE_INT( OPT_AUTOLAYOUT, HELP_AUTOLAYOUT, AutoLayout );
408 SAVE_INT( OPT_POSX_TITLE, HELP_POSX_TITLE, PosX_Title );
409 SAVE_INT( OPT_POSY_TITLE, HELP_POSY_TITLE, PosY_Title );
410 SAVE_INT( OPT_POSX_BTNLEFT, HELP_POSX_BTNLEFT, PosX_ButtonLeft );
411 SAVE_INT( OPT_POSY_BTNLEFT, HELP_POSY_BTNLEFT, PosY_ButtonLeft );
412 SAVE_INT( OPT_POSX_BTNRIGHT, HELP_POSX_BTNRIGHT, PosX_ButtonRight );
413 SAVE_INT( OPT_POSY_BTNRIGHT, HELP_POSY_BTNRIGHT, PosY_ButtonRight );
414 SAVE_INT( OPT_POSX_LISTNAMES, HELP_POSX_LISTNAMES, PosX_ListNames );
415 SAVE_INT( OPT_POSY_LISTNAMES, HELP_POSY_LISTNAMES, PosY_ListNames );
416 SAVE_LBL( "# GUI Options" );
417 SAVE_INT( OPT_ENTRY_Y_DELTA, HELP_ENTRY_Y_DELTA, EntryYDelta );
418 SAVE_INT( OPT_ENTRY_X_OFFSET, HELP_ENTRY_X_OFFSET, EntryXOffset );
419 SAVE_INT( OPT_ENTRY_Y_OFFSET, HELP_ENTRY_Y_OFFSET, EntryYOffset );
420 SAVE_INT( OPT_BUTTON_W_LEFT, HELP_BUTTON_W_LEFT, ButtonWidthLeft );
421 SAVE_INT( OPT_BUTTON_H_LEFT, HELP_BUTTON_H_LEFT, ButtonHeightLeft );
422 SAVE_INT( OPT_BUTTON_W_RIGHT, HELP_BUTTON_W_RIGHT, ButtonWidthRight );
423 SAVE_INT( OPT_BUTTON_H_RIGHT, HELP_BUTTON_H_RIGHT, ButtonHeightRight );
424 SAVE_INT( OPT_PREVIEW_W, HELP_PREVIEW_W, PreviewWidth );
425 SAVE_INT( OPT_PREVIEW_H, HELP_PREVIEW_H, PreviewHeight );
426 SAVE_INT( OPT_ENTRY_MAX_W, HELP_ENTRY_MAX_W, DisplayListMaxWidth );
427 SAVE_INT( OPT_FILEPATH_MAX_W, HELP_FILEPATH_MAX_W, FilePathMaxWidth );
428 SAVE_LBL( "# Button Enable Options" );
429 for (i=0; i<ButtonModesLeftEnable.size(); i++)
431 label = string(OPT_BUTTONLEFT_ENABLED) + "_"+ i_to_a(i);
432 SAVE_INT( label, HELP_DEFAULT, ButtonModesLeftEnable.at(i) );
434 for (i=0; i<ButtonModesRightEnable.size(); i++)
436 label = string(OPT_BUTTONRIGHT_ENABLED) + "_"+ i_to_a(i);
437 SAVE_INT( label, HELP_DEFAULT, ButtonModesRightEnable.at(i) );
439 SAVE_LBL( "# Paths" );
440 SAVE_STR( OPT_PATH_ZIPTEMP, HELP_PATH_ZIPTEMP, ZipPath );
441 SAVE_STR( OPT_PATH_PREVIEWS, HELP_PATH_PREVIEWS, PreviewsPath );
442 SAVE_STR( OPT_PATH_FONT, HELP_PATH_FONT, PathFont );
443 SAVE_STR( OPT_PATH_BACKGND, HELP_PATH_BACKGND, PathBackground );
444 SAVE_STR( OPT_PATH_POINTER, HELP_PATH_POINTER, PathPointer );
445 SAVE_STR( OPT_PATH_SELECTPOINTER, HELP_PATH_SELECTPOINTER, PathSelectPointer );
446 SAVE_STR( OPT_PATH_ONEUP, HELP_PATH_ONEUP, PathButtons.at(EVENT_ONE_UP) );
447 SAVE_STR( OPT_PATH_ONEDN, HELP_PATH_ONEDN, PathButtons.at(EVENT_ONE_DOWN) );
448 SAVE_STR( OPT_PATH_PGUP, HELP_PATH_PGUP, PathButtons.at(EVENT_PAGE_UP) );
449 SAVE_STR( OPT_PATH_PGDN, HELP_PATH_PGDN, PathButtons.at(EVENT_PAGE_DOWN) );
450 SAVE_STR( OPT_PATH_DIRUP, HELP_PATH_DIRUP, PathButtons.at(EVENT_DIR_UP) );
451 SAVE_STR( OPT_PATH_DIRDN, HELP_PATH_DIRDN, PathButtons.at(EVENT_DIR_DOWN) );
452 SAVE_STR( OPT_PATH_CFG_APP, HELP_PATH_CFG_APP, PathButtons.at(EVENT_CFG_APP) );
453 SAVE_STR( OPT_PATH_CFG_ITEM, HELP_PATH_CFG_ITEM, PathButtons.at(EVENT_CFG_ITEM) );
454 SAVE_STR( OPT_PATH_SELECT, HELP_PATH_SELECT, PathButtons.at(EVENT_SELECT) );
455 SAVE_STR( OPT_PATH_QUIT, HELP_PATH_QUIT, PathButtons.at(EVENT_QUIT) );
456 SAVE_LBL( "# Colors" );
458 for (i=0; i<ColorNames.size(); i++)
460 fout << setw(4) << i_to_a(i) << setw(20) << ColorNames.at(i);
463 fout << endl << "# ";
467 SAVE_INT( OPT_COLOR_BUTTON, HELP_COLOR_BUTTON, ColorButton );
468 SAVE_INT( OPT_COLOR_FONTBUTTON, HELP_COLOR_FONTBUTTON, ColorFontButton );
469 SAVE_INT( OPT_COLOR_BACKGND, HELP_COLOR_BACKGND, ColorBackground );
470 SAVE_INT( OPT_COLOR_FONTFILES, HELP_COLOR_FONTFILES, ColorFontFiles );
471 SAVE_INT( OPT_COLOR_FONTFOLDERS, HELP_COLOR_FONTFOLDERS, ColorFontFolders );
472 SAVE_LBL( "# Controls" );
473 SAVE_LBL( "# Keyboard" );
474 SAVE_STR( OPT_KEYUP, GET_KEY_NAME(EVENT_ONE_UP), KeyMaps.at(EVENT_ONE_UP) );
475 SAVE_STR( OPT_KEYDOWN, GET_KEY_NAME(EVENT_ONE_DOWN), KeyMaps.at(EVENT_ONE_DOWN) );
476 SAVE_STR( OPT_KEYLEFT, GET_KEY_NAME(EVENT_PAGE_UP), KeyMaps.at(EVENT_PAGE_UP) );
477 SAVE_STR( OPT_KEYRIGHT, GET_KEY_NAME(EVENT_PAGE_DOWN), KeyMaps.at(EVENT_PAGE_DOWN) );
478 SAVE_STR( OPT_KEYDIRUP, GET_KEY_NAME(EVENT_DIR_UP), KeyMaps.at(EVENT_DIR_UP) );
479 SAVE_STR( OPT_KEYDIRDOWN, GET_KEY_NAME(EVENT_DIR_DOWN), KeyMaps.at(EVENT_DIR_DOWN) );
480 SAVE_STR( OPT_KEYCFGAPP, GET_KEY_NAME(EVENT_CFG_APP), KeyMaps.at(EVENT_CFG_APP) );
481 SAVE_STR( OPT_KEYCFGENTRY, GET_KEY_NAME(EVENT_CFG_ITEM), KeyMaps.at(EVENT_CFG_ITEM) );
482 SAVE_STR( OPT_KEYSETONE, GET_KEY_NAME(EVENT_SET_ONE), KeyMaps.at(EVENT_SET_ONE) );
483 SAVE_STR( OPT_KEYSETALL, GET_KEY_NAME(EVENT_SET_ALL), KeyMaps.at(EVENT_SET_ALL) );
484 SAVE_STR( OPT_KEYSELECT, GET_KEY_NAME(EVENT_SELECT), KeyMaps.at(EVENT_SELECT) );
485 SAVE_STR( OPT_KEYBACK, GET_KEY_NAME(EVENT_BACK), KeyMaps.at(EVENT_BACK) );
486 SAVE_STR( OPT_KEYQUIT, GET_KEY_NAME(EVENT_QUIT), KeyMaps.at(EVENT_QUIT) );
487 SAVE_LBL( "# Joystick" );
488 SAVE_INT( OPT_JOYUP, HELP_DEFAULT, JoyMaps.at(EVENT_ONE_UP) );
489 SAVE_INT( OPT_JOYDOWN, HELP_DEFAULT, JoyMaps.at(EVENT_ONE_DOWN) );
490 SAVE_INT( OPT_JOYLEFT, HELP_DEFAULT, JoyMaps.at(EVENT_PAGE_UP) );
491 SAVE_INT( OPT_JOYRIGHT, HELP_DEFAULT, JoyMaps.at(EVENT_PAGE_DOWN) );
492 SAVE_INT( OPT_JOYDIRUP, HELP_DEFAULT, JoyMaps.at(EVENT_DIR_UP) );
493 SAVE_INT( OPT_JOYDIRDOWN, HELP_DEFAULT, JoyMaps.at(EVENT_DIR_DOWN) );
494 SAVE_INT( OPT_JOYCFGAPP, HELP_DEFAULT, JoyMaps.at(EVENT_CFG_APP) );
495 SAVE_INT( OPT_JOYCFGENTRY, HELP_DEFAULT, JoyMaps.at(EVENT_CFG_ITEM) );
496 SAVE_INT( OPT_JOYSETONE, HELP_DEFAULT, JoyMaps.at(EVENT_SET_ONE) );
497 SAVE_INT( OPT_JOYSETALL, HELP_DEFAULT, JoyMaps.at(EVENT_SET_ALL) );
498 SAVE_INT( OPT_JOYSELECT, HELP_DEFAULT, JoyMaps.at(EVENT_SELECT) );
499 SAVE_INT( OPT_JOYBACK, HELP_DEFAULT, JoyMaps.at(EVENT_BACK) );
500 SAVE_INT( OPT_JOYQUIT, HELP_DEFAULT, JoyMaps.at(EVENT_QUIT) );
501 SAVE_INT( OPT_DEADZONE, HELP_DEADZONE, AnalogDeadZone );
506 Log( "Failed to open profile\n" );