Replaced calls to OpenFile with the equivalent call to
[wine] / programs / notepad / language.c
1 /*
2  *  Notepad
3  *
4  *  Copyright 1997,98 Marcel Baur <mbaur@g26.ethz.ch>
5  *  Copyright 1998 Karl Backstr\94m <karl_b@geocities.com>
6  */
7
8 #include <stdio.h>
9 #include "windows.h"
10 #include "main.h"
11 #include "language.h"
12
13 CHAR STRING_MENU_Xx[]      = "MENU_Xx";
14 CHAR STRING_PAGESETUP_Xx[] = "DIALOG_PAGESETUP_Xx";
15
16 void LANGUAGE_UpdateWindowCaption(void) {
17   /* Sets the caption of the main window according to Globals.szFileName:
18       Notepad - (untitled)      if no file is open
19       Notepad - [filename]      if a file is given
20   */
21   
22   CHAR szCaption[MAX_STRING_LEN];
23   CHAR szUntitled[MAX_STRING_LEN];
24
25   LoadString(Globals.hInstance, IDS_NOTEPAD, szCaption, sizeof(szCaption));
26   
27   if (strlen(Globals.szFileName)>0) {
28       lstrcat(szCaption, " - [");
29       lstrcat(szCaption, Globals.szFileName);
30       lstrcat(szCaption, "]");
31   }
32   else
33   {
34       LoadString(Globals.hInstance, IDS_UNTITLED, szUntitled, sizeof(szUntitled));
35       lstrcat(szCaption, " - ");
36       lstrcat(szCaption, szUntitled);
37   }
38     
39   SetWindowText(Globals.hMainWnd, szCaption);
40   
41 }
42
43
44
45 static BOOL LANGUAGE_LoadStringOther(UINT num, UINT ids, LPSTR str, UINT len)
46 {
47   BOOL bOk;
48
49   ids -= Globals.wStringTableOffset;
50   ids += num * 0x100;
51
52   bOk = LoadString(Globals.hInstance, ids, str, len);
53
54   return(bOk);
55 }
56
57
58
59 VOID LANGUAGE_SelectByName(LPCSTR lang)
60 {
61   INT i;
62   CHAR newlang[3];
63
64   for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
65     if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang)) &&
66         !lstrcmp(lang, newlang))
67       {
68         LANGUAGE_SelectByNumber(i);
69         return;
70       }
71
72   /* Fallback */
73     for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
74     if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang)))
75       {
76         LANGUAGE_SelectByNumber(i);
77         return;
78       }
79
80   MessageBox(Globals.hMainWnd, "No language found", "FATAL ERROR", MB_OK);
81   PostQuitMessage(1);
82 }
83
84 VOID LANGUAGE_SelectByNumber(UINT num)
85 {
86   INT    i;
87   CHAR   lang[3];
88   CHAR   item[MAX_STRING_LEN];
89   HMENU  hMainMenu;
90
91   /* Select string table */
92   Globals.wStringTableOffset = num * 0x100;
93
94   /* Get Language id */
95   LoadString(Globals.hInstance, IDS_LANGUAGE_ID, lang, sizeof(lang));
96
97   /* Set frame caption */
98   LANGUAGE_UpdateWindowCaption();
99   
100   /* Change Resource names */
101   lstrcpyn(STRING_MENU_Xx      + sizeof(STRING_MENU_Xx)      - 3, lang, 3);
102   lstrcpyn(STRING_PAGESETUP_Xx + sizeof(STRING_PAGESETUP_Xx) - 3, lang, 3);
103
104   /* Create menu */
105   hMainMenu = LoadMenu(Globals.hInstance, STRING_MENU_Xx);
106     Globals.hFileMenu     = GetSubMenu(hMainMenu, 0);
107     Globals.hEditMenu     = GetSubMenu(hMainMenu, 1);
108     Globals.hSearchMenu   = GetSubMenu(hMainMenu, 2);
109     Globals.hLanguageMenu = GetSubMenu(hMainMenu, 3);
110     Globals.hHelpMenu     = GetSubMenu(hMainMenu, 4);
111
112   /* Remove dummy item */
113   RemoveMenu(Globals.hLanguageMenu, 0, MF_BYPOSITION);
114   /* Add language items */
115   for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++)
116     if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_MENU_ITEM, item, sizeof(item)))
117       AppendMenu(Globals.hLanguageMenu, MF_STRING | MF_BYCOMMAND,
118                  NP_FIRST_LANGUAGE + i, item);
119
120   SetMenu(Globals.hMainWnd, hMainMenu);
121
122   /* Destroy old menu */
123   if (Globals.hMainMenu) DestroyMenu(Globals.hMainMenu);
124   Globals.hMainMenu = hMainMenu;
125 }
126
127 VOID LANGUAGE_DefaultHandle(WPARAM wParam)
128 {
129   if ((wParam >=NP_FIRST_LANGUAGE) && (wParam<=NP_LAST_LANGUAGE))
130           LANGUAGE_SelectByNumber(wParam - NP_FIRST_LANGUAGE);
131      else printf("Unimplemented menu command %i\n", wParam);
132 }