Release 960324
[wine] / programs / progman / string.c
1 /*
2  * Program Manager
3  *
4  * Copyright 1996 Ulrich Schmid
5  */
6
7 #include <windows.h>
8 #ifdef WINELIB
9 #include <options.h>
10 #endif
11 #include "progman.h"
12
13 /* Class names */
14
15 CHAR STRING_MAIN_WIN_CLASS_NAME[]    = "PMMain";
16 CHAR STRING_MDI_WIN_CLASS_NAME[]     = "MDICLIENT";
17 CHAR STRING_GROUP_WIN_CLASS_NAME[]   = "PMGroup";
18 CHAR STRING_PROGRAM_WIN_CLASS_NAME[] = "PMProgram";
19
20 /* Resource names */
21 /* Xx will be overwritten with En, ... */
22 CHAR STRING_ACCEL[]      = "ACCEL";
23 CHAR STRING_MAIN_Xx[]    = "MENU_Xx";
24 CHAR STRING_NEW_Xx[]     = "DIALOG_NEW_Xx";
25 CHAR STRING_OPEN_Xx[]    = "DIALOG_OPEN_Xx";
26 CHAR STRING_MOVE_Xx[]    = "DIALOG_MOVE_Xx";
27 CHAR STRING_COPY_Xx[]    = "DIALOG_COPY_Xx";
28 CHAR STRING_DELETE_Xx[]  = "DIALOG_DELETE_Xx";
29 CHAR STRING_GROUP_Xx[]   = "DIALOG_GROUP_Xx";
30 CHAR STRING_PROGRAM_Xx[] = "DIALOG_PROGRAM_Xx";
31 CHAR STRING_SYMBOL_Xx[]  = "DIALOG_SYMBOL_Xx";
32 CHAR STRING_EXECUTE_Xx[] = "DIALOG_EXECUTE_Xx";
33
34 static LPCSTR StringTableEn[];
35 static LPCSTR StringTableDe[];
36
37 VOID STRING_SelectLanguage(LPCSTR lang)
38 {
39   HMENU  hMainMenu;
40   HLOCAL hGroup;
41
42   /* Change string table */
43   Globals.StringTable = StringTableEn;
44   if (!lstrcmp(lang, "De")) Globals.StringTable = StringTableDe;
45
46   SetWindowText(Globals.hMainWnd, STRING_PROGRAM_MANAGER);
47
48   /* Change Resource names */
49   lstrcpyn(STRING_MAIN_Xx    + sizeof(STRING_MAIN_Xx)    - 3, lang, 3);
50   lstrcpyn(STRING_NEW_Xx     + sizeof(STRING_NEW_Xx)     - 3, lang, 3);
51   lstrcpyn(STRING_OPEN_Xx    + sizeof(STRING_OPEN_Xx)    - 3, lang, 3);
52   lstrcpyn(STRING_MOVE_Xx    + sizeof(STRING_MOVE_Xx)    - 3, lang, 3);
53   lstrcpyn(STRING_COPY_Xx    + sizeof(STRING_COPY_Xx)    - 3, lang, 3);
54   lstrcpyn(STRING_DELETE_Xx  + sizeof(STRING_DELETE_Xx)  - 3, lang, 3);
55   lstrcpyn(STRING_GROUP_Xx   + sizeof(STRING_GROUP_Xx)   - 3, lang, 3);
56   lstrcpyn(STRING_PROGRAM_Xx + sizeof(STRING_PROGRAM_Xx) - 3, lang, 3);
57   lstrcpyn(STRING_SYMBOL_Xx  + sizeof(STRING_SYMBOL_Xx)  - 3, lang, 3);
58   lstrcpyn(STRING_EXECUTE_Xx + sizeof(STRING_EXECUTE_Xx) - 3, lang, 3);
59
60   /* Create menu */
61   hMainMenu = LoadMenu(Globals.hInstance, STRING_MAIN_Xx);
62   if (hMainMenu)
63   {
64     Globals.hFileMenu    = GetSubMenu(hMainMenu, 0);
65     Globals.hOptionMenu  = GetSubMenu(hMainMenu, 1);
66     Globals.hWindowsMenu = GetSubMenu(hMainMenu, 2);
67
68     if (Globals.hMDIWnd)
69       SendMessage(Globals.hMDIWnd, WM_MDISETMENU,
70                   (WPARAM) hMainMenu,
71                   (LPARAM) Globals.hWindowsMenu);
72     else SetMenu(Globals.hMainWnd, hMainMenu);
73
74     /* Destroy old menu */
75     if (Globals.hMainMenu) DestroyMenu(Globals.hMainMenu);
76     Globals.hMainMenu = hMainMenu;
77   }
78   /* Unsupported language */
79   else if(lstrcmp(lang, "En")) STRING_SelectLanguage("En");
80   else
81   {
82     MessageBox(Globals.hMainWnd, "No language found", "FATAL ERROR", MB_OK);
83     PostQuitMessage(1);
84   }
85
86   /* have to be last because of
87    * the possible recursion */
88   Globals.lpszLanguage = lang;
89 #ifdef WINELIB
90   if (!lstrcmp(lang, "De")) Options.language = LANG_De;
91   if (!lstrcmp(lang, "En")) Options.language = LANG_En;
92   GetSystemMenu(Globals.hMainWnd, TRUE);
93   for (hGroup = GROUP_FirstGroup(); hGroup;
94        hGroup = GROUP_NextGroup(hGroup))
95     {
96       GROUP *group = LocalLock(hGroup);
97       GetSystemMenu(group->hWnd, TRUE);
98     }
99 #endif
100 }
101
102 /* Local Variables:    */
103 /* c-file-style: "GNU" */
104 /* End:                */