Release 980315
[wine/gsoc_dplay.git] / programs / clock / language.c
blobc5683d6793f3f7ea09f7940057eaf9aa5d7de704
1 /*
2 * Clock
4 * Copyright 1998 Marcel Baur <mbaur@g26.ethz.ch>
5 * Copyright 1998 Karl Backström <karl_b@geocities.com>
6 */
8 #include <stdio.h>
9 #include "windows.h"
10 #include "main.h"
11 #include "language.h"
12 #ifdef WINELIB
13 #include "options.h"
14 #endif
16 CHAR STRING_MENU_Xx[] = "MENU_Xx";
18 static BOOL LANGUAGE_LoadStringOther(UINT num, UINT ids, LPSTR str, UINT len)
20 ids -= Globals.wStringTableOffset;
21 ids += num * 0x100;
22 return(LoadString(Globals.hInstance, ids, str, len));
25 VOID LANGUAGE_SelectByName(LPCSTR lang)
27 INT i;
28 CHAR newlang[3];
30 for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
31 if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang)) &&
32 !lstrcmp(lang, newlang))
34 LANGUAGE_SelectByNumber(i);
35 return;
38 /* Fallback */
39 for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
40 if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang)))
42 LANGUAGE_SelectByNumber(i);
43 return;
46 MessageBox(Globals.hMainWnd, "No language found", "FATAL ERROR", MB_OK);
47 PostQuitMessage(1);
50 VOID LANGUAGE_SelectByNumber(UINT num)
52 INT i;
53 CHAR lang[3];
54 CHAR caption[MAX_STRING_LEN];
55 CHAR item[MAX_STRING_LEN];
56 HMENU hMainMenu;
58 /* Select string table */
59 Globals.wStringTableOffset = num * 0x100;
61 /* Get Language id */
62 LoadString(Globals.hInstance, IDS_LANGUAGE_ID, lang, sizeof(lang));
63 Globals.lpszLanguage = lang;
65 /* Set frame caption */
66 LoadString(Globals.hInstance, IDS_CLOCK, caption, sizeof(caption));
67 SetWindowText(Globals.hMainWnd, caption);
69 /* Change Resource names */
70 lstrcpyn(STRING_MENU_Xx + sizeof(STRING_MENU_Xx) - 3, lang, 3);
72 /* Create menu */
73 hMainMenu = LoadMenu(Globals.hInstance, STRING_MENU_Xx);
74 Globals.hPropertiesMenu = GetSubMenu(hMainMenu, 0);
75 Globals.hLanguageMenu = GetSubMenu(hMainMenu, 1);
76 Globals.hInfoMenu = GetSubMenu(hMainMenu, 2);
78 /* Remove dummy item */
79 RemoveMenu(Globals.hLanguageMenu, 0, MF_BYPOSITION);
80 /* Add language items */
81 for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
82 if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_MENU_ITEM, item, sizeof(item)))
83 AppendMenu(Globals.hLanguageMenu, MF_STRING | MF_BYCOMMAND,
84 CL_FIRST_LANGUAGE + i, item);
86 SetMenu(Globals.hMainWnd, hMainMenu);
88 /* Destroy old menu */
89 if (Globals.hMainMenu) DestroyMenu(Globals.hMainMenu);
90 Globals.hMainMenu = hMainMenu;
92 #ifdef WINELIB
93 /* Update system menus */
94 for (i = 0; Languages[i].name && lstrcmp(lang, Languages[i].name);) i++;
95 if (Languages[i].name) Options.language = i;
97 #endif
99 /* Specific for clock */
100 if(Globals.bAnalog == TRUE) {
101 CheckMenuItem(Globals.hPropertiesMenu, CL_ANALOG, \
102 MF_BYCOMMAND | MF_CHECKED);
103 CheckMenuItem(Globals.hPropertiesMenu, CL_DIGITAL, \
104 MF_BYCOMMAND | MF_UNCHECKED);
105 EnableMenuItem(Globals.hPropertiesMenu, CL_FONT, \
106 MF_BYCOMMAND | MF_GRAYED);
108 else {
109 CheckMenuItem(Globals.hPropertiesMenu, CL_ANALOG, \
110 MF_BYCOMMAND | MF_UNCHECKED);
111 CheckMenuItem(Globals.hPropertiesMenu, CL_DIGITAL, \
112 MF_BYCOMMAND | MF_CHECKED);
114 CheckMenuItem(Globals.hPropertiesMenu, CL_WITHOUT_TITLE, MF_BYCOMMAND | \
115 (Globals.bWithoutTitle ? MF_CHECKED : MF_UNCHECKED));
116 CheckMenuItem(Globals.hPropertiesMenu, CL_ON_TOP, MF_BYCOMMAND | \
117 (Globals.bAlwaysOnTop ? MF_CHECKED : MF_UNCHECKED));
118 CheckMenuItem(Globals.hPropertiesMenu, CL_SECONDS, MF_BYCOMMAND | \
119 (Globals.bSeconds ? MF_CHECKED : MF_UNCHECKED));
120 CheckMenuItem(Globals.hPropertiesMenu, CL_DATE, MF_BYCOMMAND | \
121 (Globals.bDate ? MF_CHECKED : MF_UNCHECKED));
124 VOID LANGUAGE_DefaultHandle(WPARAM wParam)
126 if ((wParam >=CL_FIRST_LANGUAGE) && (wParam<=CL_LAST_LANGUAGE))
127 LANGUAGE_SelectByNumber(wParam - CL_FIRST_LANGUAGE);
128 else printf("Unimplemented menu command %i\n", wParam);
131 VOID LANGUAGE_Init(VOID)
133 #ifdef WINELIB
134 Globals.lpszLanguage = Languages[Options.language].name;
135 #endif
136 // #else
137 printf("Globals.lpszLanguage == %s\n", Globals.lpszLanguage);
138 if (Globals.lpszLanguage == "En") {
139 CHAR buffer[MAX_PATHNAME_LEN], *p;
140 printf("Muu\n");
141 PROFILE_GetWineIniString("programs", "language", "En",
142 buffer, sizeof(buffer));
143 Globals.lpszLanguage = p = LocalLock(LocalAlloc(LMEM_FIXED, lstrlen(buffer)));
144 hmemcpy(p, buffer, 1 + lstrlen(buffer)); }
145 // #endif
146 // if (!Globals.lpszLanguage) Globals.lpszLanguage = "En";
149 /* Local Variables: */
150 /* c-file-style: "GNU" */
151 /* End: */