ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/Windows/user_strings_windows.cpp
Revision: 1.4
Committed: 2005-11-27T23:54:26Z (19 years ago) by gbeauche
Branch: MAIN
Changes since 1.3: +26 -0 lines
Log Message:
Build Windows GUI with GTK

File Contents

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