4 * Copyright 1998 Marcel Baur <mbaur@g26.ethz.ch>
5 * Copyright 1998 Karl Backström <karl_b@geocities.com>
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28 CHAR STRING_MENU_Xx[] = "MENU_Xx";
30 VOID LANGUAGE_UpdateMenuCheckmarks(VOID) {
32 if(Globals.bAnalog == TRUE) {
36 CheckMenuItem(Globals.hPropertiesMenu, CL_ANALOG, \
37 MF_BYCOMMAND | MF_CHECKED);
38 CheckMenuItem(Globals.hPropertiesMenu, CL_DIGITAL, \
39 MF_BYCOMMAND | MF_UNCHECKED);
40 EnableMenuItem(Globals.hPropertiesMenu, CL_FONT, \
41 MF_BYCOMMAND | MF_GRAYED);
48 CheckMenuItem(Globals.hPropertiesMenu, CL_ANALOG, \
49 MF_BYCOMMAND | MF_UNCHECKED);
50 CheckMenuItem(Globals.hPropertiesMenu, CL_DIGITAL, \
51 MF_BYCOMMAND | MF_CHECKED);
52 EnableMenuItem(Globals.hPropertiesMenu, CL_FONT, \
57 CheckMenuItem(Globals.hPropertiesMenu, CL_WITHOUT_TITLE, MF_BYCOMMAND | \
58 (Globals.bWithoutTitle ? MF_CHECKED : MF_UNCHECKED));
59 CheckMenuItem(Globals.hSystemMenu, CL_ON_TOP, MF_BYCOMMAND | \
60 (Globals.bAlwaysOnTop ? MF_CHECKED : MF_UNCHECKED));
61 CheckMenuItem(Globals.hPropertiesMenu, CL_SECONDS, MF_BYCOMMAND | \
62 (Globals.bSeconds ? MF_CHECKED : MF_UNCHECKED));
63 CheckMenuItem(Globals.hPropertiesMenu, CL_DATE, MF_BYCOMMAND | \
64 (Globals.bDate ? MF_CHECKED : MF_UNCHECKED));
67 VOID LANGUAGE_UpdateWindowCaption(VOID) {
69 CHAR szCaption[MAX_STRING_LEN];
70 CHAR szDate[MAX_STRING_LEN];
75 LPSYSTEMTIME lpst = &st;
78 GetDateFormat(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, lpst, NULL, date,
81 /* Set frame caption */
82 LoadString(Globals.hInstance, IDS_CLOCK, szCaption, sizeof(szCaption));
84 lstrcat(szCaption, " - ");
85 lstrcat(szCaption, szDate);
87 SetWindowText(Globals.hMainWnd, szCaption);
93 static BOOL LANGUAGE_LoadStringOther(UINT num, UINT ids, LPSTR str, UINT len)
95 ids -= Globals.wStringTableOffset;
97 return(LoadString(Globals.hInstance, ids, str, len));
100 VOID LANGUAGE_SelectByName(LPCSTR lang)
105 for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
106 if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, szNewLang,
107 sizeof(szNewLang)) && !lstrcmp(lang, szNewLang))
109 LANGUAGE_SelectByNumber(i);
114 for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
115 if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, szNewLang, sizeof(szNewLang)))
117 LANGUAGE_SelectByNumber(i);
121 MessageBox(Globals.hMainWnd, "No language found", "FATAL ERROR", MB_OK);
125 VOID LANGUAGE_SelectByNumber(UINT num)
130 CHAR szItem[MAX_STRING_LEN];
133 /* Select string table */
134 Globals.wStringTableOffset = num * 0x100;
136 /* Get Language id */
137 LoadString(Globals.hInstance, IDS_LANGUAGE_ID, szLanguage, sizeof(szLanguage));
139 /* Change Resource names */
140 lstrcpyn(STRING_MENU_Xx + sizeof(STRING_MENU_Xx) - 3, szLanguage, 3);
143 hMainMenu = LoadMenu(Globals.hInstance, STRING_MENU_Xx);
144 Globals.hPropertiesMenu = GetSubMenu(hMainMenu, 0);
145 Globals.hLanguageMenu = GetSubMenu(hMainMenu, 1);
146 Globals.hInfoMenu = GetSubMenu(hMainMenu, 2);
148 /* Remove dummy item */
149 RemoveMenu(Globals.hLanguageMenu, 0, MF_BYPOSITION);
150 /* Add language items */
151 for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
152 if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_MENU_ITEM, szItem, sizeof(szItem)))
153 AppendMenu(Globals.hLanguageMenu, MF_STRING | MF_BYCOMMAND,
154 CL_FIRST_LANGUAGE + i, szItem);
155 EnableMenuItem(Globals.hLanguageMenu, CL_FIRST_LANGUAGE + num, MF_BYCOMMAND | MF_CHECKED);
157 SetMenu(Globals.hMainWnd, hMainMenu);
159 /* Destroy old menu */
160 if (Globals.hMainMenu) DestroyMenu(Globals.hMainMenu);
161 Globals.hMainMenu = hMainMenu;
163 /* specific for Clock: */
165 LANGUAGE_UpdateMenuCheckmarks();
166 LANGUAGE_UpdateWindowCaption();
168 Globals.hSystemMenu = GetSystemMenu(Globals.hMainWnd, TRUE);
170 /* FIXME: Append a SEPARATOR to Globals.hSystemMenu here */
172 LoadString(Globals.hInstance, IDS_MENU_ON_TOP, szItem, sizeof(szItem));
173 AppendMenu(Globals.hSystemMenu, MF_STRING | MF_BYCOMMAND, 1000, szItem);
176 VOID LANGUAGE_DefaultHandle(WPARAM wParam)
178 if ((wParam >=CL_FIRST_LANGUAGE) && (wParam<=CL_LAST_LANGUAGE))
179 LANGUAGE_SelectByNumber(wParam - CL_FIRST_LANGUAGE);
180 else printf("Unimplemented menu command %i\n", wParam);
183 /* Local Variables: */
184 /* c-file-style: "GNU" */