4 * Copyright 1998 Marcel Baur <mbaur@g26.ethz.ch>
5 * Copyright 1998 Karl Backström <karl_b@geocities.com>
16 CHAR STRING_MENU_Xx
[] = "MENU_Xx";
18 static BOOL
LANGUAGE_LoadStringOther(UINT num
, UINT ids
, LPSTR str
, UINT len
)
20 ids
-= Globals
.wStringTableOffset
;
22 return(LoadString(Globals
.hInstance
, ids
, str
, len
));
25 VOID
LANGUAGE_SelectByName(LPCSTR lang
)
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
);
39 for (i
= 0; i
<= MAX_LANGUAGE_NUMBER
; i
++)
40 if (LANGUAGE_LoadStringOther(i
, IDS_LANGUAGE_ID
, newlang
, sizeof(newlang
)))
42 LANGUAGE_SelectByNumber(i
);
46 MessageBox(Globals
.hMainWnd
, "No language found", "FATAL ERROR", MB_OK
);
50 VOID
LANGUAGE_SelectByNumber(UINT num
)
54 CHAR caption
[MAX_STRING_LEN
];
55 CHAR item
[MAX_STRING_LEN
];
58 /* Select string table */
59 Globals
.wStringTableOffset
= num
* 0x100;
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);
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
;
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
;
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
);
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
)
134 Globals
.lpszLanguage
= Languages
[Options
.language
].name
;
137 printf("Globals.lpszLanguage == %s\n", Globals
.lpszLanguage
);
138 if (Globals
.lpszLanguage
== "En") {
139 CHAR buffer
[MAX_PATHNAME_LEN
], *p
;
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
)); }
146 // if (!Globals.lpszLanguage) Globals.lpszLanguage = "En";
149 /* Local Variables: */
150 /* c-file-style: "GNU" */