ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Windows/user_strings_windows.cpp
Revision: 1.7
Committed: 2005-11-20T23:47:42Z (18 years, 6 months ago) by gbeauche
Branch: MAIN
Changes since 1.6: +2 -0 lines
Log Message:
Windows GUI: disable SCSI settings for now since they are not merged yet,
handle Ethernet (NAT/Router module, None) and actually execute BasiliskII.exe

File Contents

# Content
1 /*
2 * user_strings_windows.cpp - Windows-specific localizable strings
3 *
4 * Basilisk II (C) 1997-2005 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 #include "user_strings.h"
23
24 #define WIN32_LEAN_AND_MEAN
25 #include <windows.h>
26
27
28 // Platform-specific string definitions
29 user_string_def platform_strings[] = {
30 // Common strings that have a platform-specific variant
31 {STR_VOLUME_IS_MOUNTED_WARN, "The volume '%s' is mounted under Unix. Basilisk II will try to unmount it."},
32 {STR_EXTFS_VOLUME_NAME, "My Computer"},
33
34 // Purely platform-specific strings
35 {STR_NO_XVISUAL_ERR, "Cannot obtain appropriate X visual."},
36 {STR_VOSF_INIT_ERR, "Cannot initialize Video on SEGV signals."},
37 {STR_SIG_INSTALL_ERR, "Cannot install %s handler (%s)."},
38 {STR_TICK_THREAD_ERR, "Cannot create 60Hz thread (%s)."},
39 {STR_NO_AUDIO_WARN, "No audio device found, audio output will be disabled."},
40 {STR_KEYCODE_FILE_WARN, "Cannot open keycode translation file %s (%s)."},
41 {STR_KEYCODE_VENDOR_WARN, "Cannot find vendor '%s' in keycode translation file %s."},
42 {STR_WINDOW_TITLE_GRABBED, "Basilisk II (mouse grabbed, press Ctrl-F5 to release)"},
43 {STR_NO_WIN32_NT_4, "Basilisk II does not run on Windows NT versions less than 4.0"},
44
45 {STR_PREFS_MENU_FILE_GTK, "/_File"},
46 {STR_PREFS_ITEM_START_GTK, "/File/_Start Basilisk II"},
47 {STR_PREFS_ITEM_ZAP_PRAM_GTK, "/File/_Zap PRAM File"},
48 {STR_PREFS_ITEM_SEPL_GTK, "/File/sepl"},
49 {STR_PREFS_ITEM_QUIT_GTK, "/File/_Quit Basilisk II"},
50 {STR_HELP_MENU_GTK, "/_Help"},
51 {STR_HELP_ITEM_ABOUT_GTK, "/Help/_About Basilisk II"},
52
53 {STR_ABOUT_BUTTON, "About"},
54 {STR_FILE_CTRL, "File"},
55 {STR_BROWSE_TITLE, "Browse file"},
56 {STR_BROWSE_CTRL, "Browse..."},
57 {STR_SERIAL_PANE_TITLE, "Serial"},
58 {STR_NETWORK_PANE_TITLE, "Network"},
59 {STR_INPUT_PANE_TITLE, "Keyboard/Mouse"},
60 {STR_KEYCODES_CTRL, "Use Raw Keycodes"},
61 {STR_KEYCODE_FILE_CTRL, "Keycode Translation File"},
62 {STR_MOUSEWHEELMODE_CTRL, "Mouse Wheel Function"},
63 {STR_MOUSEWHEELMODE_PAGE_LAB, "Page Up/Down"},
64 {STR_MOUSEWHEELMODE_CURSOR_LAB, "Cursor Up/Down"},
65 {STR_MOUSEWHEELLINES_CTRL, "Lines To Scroll"},
66 {STR_POLLMEDIA_CTRL, "Enable polling"},
67 {STR_EXTFS_ENABLE_CTRL, "Enable external file system"},
68 {STR_EXTFS_DRIVES_CTRL, "Mount drives"},
69 {STR_ETHER_FTP_PORT_LIST_CTRL, "FTP ports"},
70 {STR_ETHER_TCP_PORT_LIST_CTRL, "Server ports"},
71
72 {STR_IGNORESEGV_CTRL, "Ignore Illegal Memory Accesses"},
73
74 {-1, NULL} // End marker
75 };
76
77
78 /*
79 * Search for main volume name
80 */
81
82 static const char *get_volume_name(void)
83 {
84 HKEY hHelpKey;
85 DWORD key_type, cbData;
86
87 static char volume[256];
88 memset(volume, 0, sizeof(volume));
89
90 // Try Windows 2000 key first
91 if (ERROR_SUCCESS == RegOpenKey(
92 HKEY_CURRENT_USER,
93 "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}",
94 &hHelpKey))
95 {
96 cbData = sizeof(volume);
97 RegQueryValueEx( hHelpKey, 0, NULL, &key_type, (unsigned char *)volume, &cbData );
98 RegCloseKey(hHelpKey);
99 }
100
101 if (volume[0] == 0 &&
102 ERROR_SUCCESS == RegOpenKey(
103 HKEY_CURRENT_USER,
104 "Software\\Classes\\CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}",
105 &hHelpKey))
106 {
107 cbData = sizeof(volume);
108 RegQueryValueEx( hHelpKey, 0, NULL, &key_type, (unsigned char *)volume, &cbData );
109 RegCloseKey(hHelpKey);
110 }
111
112 if (volume[0] == 0 &&
113 ERROR_SUCCESS == RegOpenKey(
114 HKEY_CLASSES_ROOT,
115 "CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}",
116 &hHelpKey))
117 {
118 cbData = sizeof(volume);
119 RegQueryValueEx( hHelpKey, 0, NULL, &key_type, (unsigned char *)volume, &cbData );
120 RegCloseKey(hHelpKey);
121 }
122
123 // Fix the error that some "tweak" apps do.
124 if (stricmp(volume, "%USERNAME% on %COMPUTER%") == 0)
125 volume[0] = '\0';
126
127 // No volume name found, default to "My Computer"
128 if (volume[0] == 0)
129 strcpy(volume, "My Computer");
130
131 return volume;
132 }
133
134
135 /*
136 * Fetch pointer to string, given the string number
137 */
138
139 const char *GetString(int num)
140 {
141 // First, search for platform-specific variable string
142 switch (num) {
143 case STR_EXTFS_VOLUME_NAME:
144 return get_volume_name();
145 }
146
147 // Next, search for platform-specific constant string
148 int i = 0;
149 while (platform_strings[i].num >= 0) {
150 if (platform_strings[i].num == num)
151 return platform_strings[i].str;
152 i++;
153 }
154
155 // Not found, search for common string
156 i = 0;
157 while (common_strings[i].num >= 0) {
158 if (common_strings[i].num == num)
159 return common_strings[i].str;
160 i++;
161 }
162 return NULL;
163 }