ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Windows/prefs_windows.cpp
Revision: 1.5
Committed: 2004-12-05T15:05:25Z (19 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.4: +3 -0 lines
Log Message:
merge in "pollmedia" prefs item

File Contents

# User Rev Content
1 gbeauche 1.1 /*
2 gbeauche 1.2 * prefs_windows.cpp - Preferences handling, Windows specific stuff
3 gbeauche 1.1 *
4     * Basilisk II (C) 1997-2004 Christian Bauer
5     *
6     * This program is free software; you can redistribute it and/or modify
7     * it under the terms of the GNU General Public License as published by
8     * the Free Software Foundation; either version 2 of the License, or
9     * (at your option) any later version.
10     *
11     * This program is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14     * GNU General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with this program; if not, write to the Free Software
18     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19     */
20    
21     #include "sysdeps.h"
22    
23     #define WIN32_LEAN_AND_MEAN
24     #include <windows.h>
25    
26     #include <stdio.h>
27     #include <stdlib.h>
28    
29     #include <string>
30     using std::string;
31    
32     #include "prefs.h"
33    
34    
35     // Platform-specific preferences items
36     prefs_desc platform_prefs_items[] = {
37     {"keycodes", TYPE_BOOLEAN, false, "use keycodes rather than keysyms to decode keyboard"},
38     {"keycodefile", TYPE_STRING, false, "path of keycode translation file"},
39     {"mousewheelmode", TYPE_INT32, false, "mouse wheel support mode (0=page up/down, 1=cursor up/down)"},
40     {"mousewheellines", TYPE_INT32, false, "number of lines to scroll in mouse wheel mode 1"},
41     #ifdef HAVE_SIGSEGV_SKIP_INSTRUCTION
42     {"ignoresegv", TYPE_BOOLEAN, false, "ignore illegal memory accesses"},
43     #endif
44 gbeauche 1.3 {"enableextfs", TYPE_BOOLEAN, false, "enable extfs system"},
45 gbeauche 1.4 {"debugextfs", TYPE_BOOLEAN, false, "debug extfs system"},
46     {"extdrives", TYPE_STRING, false, "define allowed extfs drives"},
47 gbeauche 1.5 {"pollmedia", TYPE_BOOLEAN, false, "poll for new media (e.g. cd, floppy)"},
48    
49 gbeauche 1.1 {NULL, TYPE_END, false, NULL} // End of list
50     };
51    
52    
53     // Prefs file name and path
54     const char PREFS_FILE_NAME[] = "BasiliskII_prefs";
55     string UserPrefsPath;
56     static string prefs_path;
57    
58    
59     /*
60     * Load preferences from settings file
61     */
62    
63     void LoadPrefs(void)
64     {
65     // Construct prefs path
66     if (UserPrefsPath.empty()) {
67     int pwd_len = GetCurrentDirectory(0, NULL);
68     char *pwd = new char[pwd_len];
69     if (GetCurrentDirectory(pwd_len, pwd) == pwd_len - 1)
70     prefs_path = string(pwd) + '\\';
71     delete[] pwd;
72     prefs_path += PREFS_FILE_NAME;
73     } else
74     prefs_path = UserPrefsPath;
75    
76     // Read preferences from settings file
77     FILE *f = fopen(prefs_path.c_str(), "r");
78     if (f != NULL) {
79    
80     // Prefs file found, load settings
81     LoadPrefsFromStream(f);
82     fclose(f);
83    
84     } else {
85    
86     // No prefs file, save defaults
87     SavePrefs();
88     }
89     }
90    
91    
92     /*
93     * Save preferences to settings file
94     */
95    
96     void SavePrefs(void)
97     {
98     FILE *f;
99     if ((f = fopen(prefs_path.c_str(), "w")) != NULL) {
100     SavePrefsToStream(f);
101     fclose(f);
102     }
103     }
104    
105    
106     /*
107     * Add defaults of platform-specific prefs items
108     * You may also override the defaults set in PrefsInit()
109     */
110    
111     void AddPlatformPrefsDefaults(void)
112     {
113     PrefsAddBool("keycodes", false);
114 gbeauche 1.5 PrefsReplaceBool("pollmedia", true);
115 gbeauche 1.4 PrefsReplaceBool("enableextfs", false);
116 gbeauche 1.1 PrefsReplaceString("extfs", "");
117 gbeauche 1.4 PrefsReplaceString("extdrives", "CDEFGHIJKLMNOPQRSTUVWXYZ");
118 gbeauche 1.1 PrefsReplaceInt32("mousewheelmode", 1);
119     PrefsReplaceInt32("mousewheellines", 3);
120     #ifdef HAVE_SIGSEGV_SKIP_INSTRUCTION
121     PrefsAddBool("ignoresegv", false);
122     #endif
123     }