4 * Copyright 1998 Marcel Baur <mbaur@g26.ethz.ch>
5 * Copyright 1998 Karl Backström <karl_b@geocities.com>
14 CHAR STRING_MENU_Xx
[] = "MENU_Xx";
16 VOID
LANGUAGE_UpdateMenuCheckmarks(VOID
) {
18 if(Globals
.bAnalog
== TRUE
) {
22 CheckMenuItem(Globals
.hPropertiesMenu
, CL_ANALOG
, \
23 MF_BYCOMMAND
| MF_CHECKED
);
24 CheckMenuItem(Globals
.hPropertiesMenu
, CL_DIGITAL
, \
25 MF_BYCOMMAND
| MF_UNCHECKED
);
26 EnableMenuItem(Globals
.hPropertiesMenu
, CL_FONT
, \
27 MF_BYCOMMAND
| MF_GRAYED
);
34 CheckMenuItem(Globals
.hPropertiesMenu
, CL_ANALOG
, \
35 MF_BYCOMMAND
| MF_UNCHECKED
);
36 CheckMenuItem(Globals
.hPropertiesMenu
, CL_DIGITAL
, \
37 MF_BYCOMMAND
| MF_CHECKED
);
38 EnableMenuItem(Globals
.hPropertiesMenu
, CL_FONT
, \
43 CheckMenuItem(Globals
.hPropertiesMenu
, CL_WITHOUT_TITLE
, MF_BYCOMMAND
| \
44 (Globals
.bWithoutTitle
? MF_CHECKED
: MF_UNCHECKED
));
45 CheckMenuItem(Globals
.hSystemMenu
, CL_ON_TOP
, MF_BYCOMMAND
| \
46 (Globals
.bAlwaysOnTop
? MF_CHECKED
: MF_UNCHECKED
));
47 CheckMenuItem(Globals
.hPropertiesMenu
, CL_SECONDS
, MF_BYCOMMAND
| \
48 (Globals
.bSeconds
? MF_CHECKED
: MF_UNCHECKED
));
49 CheckMenuItem(Globals
.hPropertiesMenu
, CL_DATE
, MF_BYCOMMAND
| \
50 (Globals
.bDate
? MF_CHECKED
: MF_UNCHECKED
));
53 VOID
LANGUAGE_UpdateWindowCaption(VOID
) {
55 CHAR szCaption
[MAX_STRING_LEN
];
56 CHAR szDate
[MAX_STRING_LEN
];
61 LPSYSTEMTIME lpst
= &st
;
64 GetDateFormat(LOCALE_USER_DEFAULT
, LOCALE_SLONGDATE
, lpst
, NULL
, date
,
67 /* Set frame caption */
68 LoadString(Globals
.hInstance
, IDS_CLOCK
, szCaption
, sizeof(szCaption
));
70 lstrcat(szCaption
, " - ");
71 lstrcat(szCaption
, szDate
);
73 SetWindowText(Globals
.hMainWnd
, szCaption
);
79 static BOOL
LANGUAGE_LoadStringOther(UINT num
, UINT ids
, LPSTR str
, UINT len
)
81 ids
-= Globals
.wStringTableOffset
;
83 return(LoadString(Globals
.hInstance
, ids
, str
, len
));
86 VOID
LANGUAGE_SelectByName(LPCSTR lang
)
91 for (i
= 0; i
<= MAX_LANGUAGE_NUMBER
; i
++)
92 if (LANGUAGE_LoadStringOther(i
, IDS_LANGUAGE_ID
, szNewLang
,
93 sizeof(szNewLang
)) && !lstrcmp(lang
, szNewLang
))
95 LANGUAGE_SelectByNumber(i
);
100 for (i
= 0; i
<= MAX_LANGUAGE_NUMBER
; i
++)
101 if (LANGUAGE_LoadStringOther(i
, IDS_LANGUAGE_ID
, szNewLang
, sizeof(szNewLang
)))
103 LANGUAGE_SelectByNumber(i
);
107 MessageBox(Globals
.hMainWnd
, "No language found", "FATAL ERROR", MB_OK
);
111 VOID
LANGUAGE_SelectByNumber(UINT num
)
116 CHAR szItem
[MAX_STRING_LEN
];
119 /* Select string table */
120 Globals
.wStringTableOffset
= num
* 0x100;
122 /* Get Language id */
123 LoadString(Globals
.hInstance
, IDS_LANGUAGE_ID
, szLanguage
, sizeof(szLanguage
));
125 /* Change Resource names */
126 lstrcpyn(STRING_MENU_Xx
+ sizeof(STRING_MENU_Xx
) - 3, szLanguage
, 3);
129 hMainMenu
= LoadMenu(Globals
.hInstance
, STRING_MENU_Xx
);
130 Globals
.hPropertiesMenu
= GetSubMenu(hMainMenu
, 0);
131 Globals
.hLanguageMenu
= GetSubMenu(hMainMenu
, 1);
132 Globals
.hInfoMenu
= GetSubMenu(hMainMenu
, 2);
134 /* Remove dummy item */
135 RemoveMenu(Globals
.hLanguageMenu
, 0, MF_BYPOSITION
);
136 /* Add language items */
137 for (i
= 0; i
<= MAX_LANGUAGE_NUMBER
; i
++)
138 if (LANGUAGE_LoadStringOther(i
, IDS_LANGUAGE_MENU_ITEM
, szItem
, sizeof(szItem
)))
139 AppendMenu(Globals
.hLanguageMenu
, MF_STRING
| MF_BYCOMMAND
,
140 CL_FIRST_LANGUAGE
+ i
, szItem
);
141 EnableMenuItem(Globals
.hLanguageMenu
, CL_FIRST_LANGUAGE
+ num
, MF_BYCOMMAND
| MF_CHECKED
);
143 SetMenu(Globals
.hMainWnd
, hMainMenu
);
145 /* Destroy old menu */
146 if (Globals
.hMainMenu
) DestroyMenu(Globals
.hMainMenu
);
147 Globals
.hMainMenu
= hMainMenu
;
149 /* specific for Clock: */
151 LANGUAGE_UpdateMenuCheckmarks();
152 LANGUAGE_UpdateWindowCaption();
154 Globals
.hSystemMenu
= GetSystemMenu(Globals
.hMainWnd
, TRUE
);
156 /* FIXME: Append a SEPARATOR to Globals.hSystemMenu here */
158 LoadString(Globals
.hInstance
, IDS_MENU_ON_TOP
, szItem
, sizeof(szItem
));
159 AppendMenu(Globals
.hSystemMenu
, MF_STRING
| MF_BYCOMMAND
, 1000, szItem
);
162 VOID
LANGUAGE_DefaultHandle(WPARAM wParam
)
164 if ((wParam
>=CL_FIRST_LANGUAGE
) && (wParam
<=CL_LAST_LANGUAGE
))
165 LANGUAGE_SelectByNumber(wParam
- CL_FIRST_LANGUAGE
);
166 else printf("Unimplemented menu command %i\n", wParam
);
169 /* Local Variables: */
170 /* c-file-style: "GNU" */