ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/Windows/user_strings_windows.cpp
Revision: 1.8
Committed: 2005-11-20T23:55:17Z (18 years, 6 months ago) by gbeauche
Branch: MAIN
CVS Tags: nigel-build-17
Changes since 1.7: +2 -2 lines
Log Message:
Try to be a bit more descriptive

File Contents

# User Rev Content
1 gbeauche 1.1 /*
2     * user_strings_windows.cpp - Windows-specific localizable strings
3     *
4 gbeauche 1.4 * Basilisk II (C) 1997-2005 Christian Bauer
5 gbeauche 1.1 *
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 gbeauche 1.2 {STR_SIG_INSTALL_ERR, "Cannot install %s handler (%s)."},
38 gbeauche 1.1 {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 gbeauche 1.3 {STR_NO_WIN32_NT_4, "Basilisk II does not run on Windows NT versions less than 4.0"},
44 gbeauche 1.1
45 gbeauche 1.5 {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 gbeauche 1.8 {STR_POLLMEDIA_CTRL, "Try to automatically detect new removable media (enable polling)"},
67     {STR_EXTFS_ENABLE_CTRL, "Enable \"My Computer\" icon on your Mac desktop (external file system)"},
68 gbeauche 1.6 {STR_EXTFS_DRIVES_CTRL, "Mount drives"},
69 gbeauche 1.7 {STR_ETHER_FTP_PORT_LIST_CTRL, "FTP ports"},
70     {STR_ETHER_TCP_PORT_LIST_CTRL, "Server ports"},
71 gbeauche 1.5
72     {STR_IGNORESEGV_CTRL, "Ignore Illegal Memory Accesses"},
73    
74 gbeauche 1.1 {-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     }