4 * Copyright 1998 Marcel Baur <mbaur@g26.ethz.ch>
5 * Copyright 1998 Karl Backström <karl_b@geocities.com>
17 CHAR STRING_MENU_Xx[] = "MENU_Xx";
19 VOID LANGUAGE_UpdateMenuCheckmarks(VOID) {
21 if(Globals.bAnalog == TRUE) {
25 CheckMenuItem(Globals.hPropertiesMenu, CL_ANALOG, \
26 MF_BYCOMMAND | MF_CHECKED);
27 CheckMenuItem(Globals.hPropertiesMenu, CL_DIGITAL, \
28 MF_BYCOMMAND | MF_UNCHECKED);
29 EnableMenuItem(Globals.hPropertiesMenu, CL_FONT, \
30 MF_BYCOMMAND | MF_GRAYED);
37 CheckMenuItem(Globals.hPropertiesMenu, CL_ANALOG, \
38 MF_BYCOMMAND | MF_UNCHECKED);
39 CheckMenuItem(Globals.hPropertiesMenu, CL_DIGITAL, \
40 MF_BYCOMMAND | MF_CHECKED);
41 EnableMenuItem(Globals.hPropertiesMenu, CL_FONT, \
46 CheckMenuItem(Globals.hPropertiesMenu, CL_WITHOUT_TITLE, MF_BYCOMMAND | \
47 (Globals.bWithoutTitle ? MF_CHECKED : MF_UNCHECKED));
48 CheckMenuItem(Globals.hSystemMenu, CL_ON_TOP, MF_BYCOMMAND | \
49 (Globals.bAlwaysOnTop ? MF_CHECKED : MF_UNCHECKED));
50 CheckMenuItem(Globals.hPropertiesMenu, CL_SECONDS, MF_BYCOMMAND | \
51 (Globals.bSeconds ? MF_CHECKED : MF_UNCHECKED));
52 CheckMenuItem(Globals.hPropertiesMenu, CL_DATE, MF_BYCOMMAND | \
53 (Globals.bDate ? MF_CHECKED : MF_UNCHECKED));
56 VOID LANGUAGE_UpdateWindowCaption(VOID) {
58 CHAR szCaption[MAX_STRING_LEN];
59 CHAR szDate[MAX_STRING_LEN];
64 LPSYSTEMTIME lpst = &st;
67 GetDateFormat(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, lpst, NULL, date,
70 /* Set frame caption */
71 LoadString(Globals.hInstance, IDS_CLOCK, szCaption, sizeof(szCaption));
73 lstrcat(szCaption, " - ");
74 lstrcat(szCaption, szDate);
76 SetWindowText(Globals.hMainWnd, szCaption);
82 static BOOL LANGUAGE_LoadStringOther(UINT num, UINT ids, LPSTR str, UINT len)
84 ids -= Globals.wStringTableOffset;
86 return(LoadString(Globals.hInstance, ids, str, len));
89 VOID LANGUAGE_SelectByName(LPCSTR lang)
94 for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
95 if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, szNewLang,
96 sizeof(szNewLang)) && !lstrcmp(lang, szNewLang))
98 LANGUAGE_SelectByNumber(i);
103 for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
104 if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, szNewLang, sizeof(szNewLang)))
106 LANGUAGE_SelectByNumber(i);
110 MessageBox(Globals.hMainWnd, "No language found", "FATAL ERROR", MB_OK);
114 VOID LANGUAGE_SelectByNumber(UINT num)
119 CHAR szItem[MAX_STRING_LEN];
122 /* Select string table */
123 Globals.wStringTableOffset = num * 0x100;
125 /* Get Language id */
126 LoadString(Globals.hInstance, IDS_LANGUAGE_ID, szLanguage, sizeof(szLanguage));
127 Globals.lpszLanguage = szLanguage;
129 /* Change Resource names */
130 lstrcpyn(STRING_MENU_Xx + sizeof(STRING_MENU_Xx) - 3, szLanguage, 3);
133 hMainMenu = LoadMenu(Globals.hInstance, STRING_MENU_Xx);
134 Globals.hPropertiesMenu = GetSubMenu(hMainMenu, 0);
135 Globals.hLanguageMenu = GetSubMenu(hMainMenu, 1);
136 Globals.hInfoMenu = GetSubMenu(hMainMenu, 2);
138 /* Remove dummy item */
139 RemoveMenu(Globals.hLanguageMenu, 0, MF_BYPOSITION);
140 /* Add language items */
141 for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
142 if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_MENU_ITEM, szItem, sizeof(szItem)))
143 AppendMenu(Globals.hLanguageMenu, MF_STRING | MF_BYCOMMAND,
144 CL_FIRST_LANGUAGE + i, szItem);
145 EnableMenuItem(Globals.hLanguageMenu, CL_FIRST_LANGUAGE + num, MF_BYCOMMAND | MF_CHECKED);
147 SetMenu(Globals.hMainWnd, hMainMenu);
149 /* Destroy old menu */
150 if (Globals.hMainMenu) DestroyMenu(Globals.hMainMenu);
151 Globals.hMainMenu = hMainMenu;
153 /* specific for Clock: */
155 LANGUAGE_UpdateMenuCheckmarks();
156 LANGUAGE_UpdateWindowCaption();
158 Globals.hSystemMenu = GetSystemMenu(Globals.hMainWnd, TRUE);
160 /* FIXME: Append a SEPARATOR to Globals.hSystemMenu here */
162 LoadString(Globals.hInstance, IDS_MENU_ON_TOP, szItem, sizeof(szItem));
163 AppendMenu(Globals.hSystemMenu, MF_STRING | MF_BYCOMMAND, 1000, szItem);
166 VOID LANGUAGE_DefaultHandle(WPARAM wParam)
168 if ((wParam >=CL_FIRST_LANGUAGE) && (wParam<=CL_LAST_LANGUAGE))
169 LANGUAGE_SelectByNumber(wParam - CL_FIRST_LANGUAGE);
170 else printf("Unimplemented menu command %i\n", wParam);
173 VOID LANGUAGE_Init(VOID)
175 CHAR szBuffer[MAX_PATHNAME_LEN];
177 if (Globals.lpszLanguage == "En") {
178 PROFILE_GetWineIniString("programs", "language", "En", szBuffer,
180 Globals.lpszLanguage = LocalLock(LocalAlloc(LMEM_FIXED, lstrlen(szBuffer)+1));
182 /* hmemcpy(Globals.lpszLanguage, szBuffer, 1+lstrlen(szBuffer)); */
183 lstrcpyn(Globals.lpszLanguage, szBuffer, strlen(szBuffer)+1);
187 /* Local Variables: */
188 /* c-file-style: "GNU" */