Release 980104
[wine] / programs / notepad / main.c
1 /*
2  * Notepad
3  *
4  * Copyright 1997 Marcel Baur <mbaur@g26.ethz.ch>
5  */
6
7 #include <windows.h>
8
9 #include "main.h"
10 #include "license.h"
11
12 NOTEPAD_GLOBALS Globals;
13
14 CHAR STRING_MENU_Xx[]      = "MENU_En";
15 CHAR STRING_PAGESETUP_Xx[] = "DIALOG_PAGESETUP_En";
16
17 /***********************************************************************
18  *
19  *           NOTEPAD_RegisterLanguages
20  *
21  *  Handle language stuff at startup
22  */
23
24 void NOTEPAD_RegisterLanguages(void) {
25
26   LPCSTR opt_lang = "En";
27   CHAR lang[3];
28   INT langnum;
29   
30  /* Find language specific string table */
31   for (langnum = 0; langnum <= MAX_LANGUAGE_NUMBER; langnum++)
32     {
33       Globals.wStringTableOffset = langnum * 0x100;
34       if (LoadString(Globals.hInstance, IDS_LANGUAGE_ID, lang, 
35             sizeof(lang)) && !lstrcmp(opt_lang, lang))
36       break;
37     }
38   if (langnum > MAX_LANGUAGE_NUMBER)
39     {
40       /* Find fallback language */
41       for (langnum = 0; langnum <= MAX_LANGUAGE_NUMBER; langnum++)
42         {
43           Globals.wStringTableOffset = langnum * 0x100;
44           if (LoadString(Globals.hInstance, IDS_LANGUAGE_ID, lang, sizeof(lang)))
45           break;
46         }
47       if (langnum > MAX_LANGUAGE_NUMBER)
48         {
49         MessageBox(0, "No language found", "FATAL ERROR", MB_OK);
50         return(1);
51         }
52     }
53
54   /* Change Resource names */
55   lstrcpyn(STRING_MENU_Xx + lstrlen(STRING_MENU_Xx) - 2, lang, 3);
56 }
57
58
59 /***********************************************************************
60  *
61  *           NOTEPAD_MenuCommand
62  *
63  *  All handling of main menu events
64  */
65
66 int NOTEPAD_MenuCommand (WPARAM wParam)
67 {  
68    printf("NOTEPAD_MenuCommand()\n");
69
70    switch (wParam) {
71      case NP_FILE_NEW:          break;
72      case NP_FILE_SAVE:         break;
73      case NP_FILE_SAVEAS:       break;
74      case NP_FILE_PRINT:        break;
75      case NP_FILE_PAGESETUP:    break;
76      case NP_FILE_PRINTSETUP:   break;
77
78      case NP_FILE_EXIT:         
79         PostQuitMessage(0);
80         break;
81
82      case NP_EDIT_UNDO:         break;
83      case NP_EDIT_CUT:          break;
84      case NP_EDIT_COPY:         break;
85      case NP_EDIT_PASTE:        break;
86      case NP_EDIT_DELETE:       break;
87      case NP_EDIT_TIMEDATE:     break;
88      case NP_EDIT_WRAP:         break;
89
90      case NP_SEARCH_SEARCH:     break;
91      case NP_SEARCH_NEXT:       break;
92
93      case NP_HELP_CONTENTS:     
94         printf("NP_HELP_CONTENTS\n");
95         WinHelp(Globals.hMainWnd, HELPFILE, HELP_INDEX, 0);
96         break;
97
98      case NP_HELP_SEARCH:       break;
99
100      case NP_HELP_ON_HELP:      
101         printf("NP_HELP_ON_HELP\n");
102         WinHelp(Globals.hMainWnd, HELPFILE, HELP_HELPONHELP, 0);
103         break;
104         
105      case NP_HELP_LICENSE:
106         WineLicense(Globals.hMainWnd, Globals.lpszLanguage);
107         break;
108         
109      case NP_HELP_NO_WARRANTY: 
110         printf("NP_ABOUT_NO_WARRANTY\n");
111         WineWarranty(Globals.hMainWnd, Globals.lpszLanguage);
112         break;
113
114      case NP_HELP_ABOUT_WINE:
115         printf("NP_ABOUT_WINE\n");
116         ShellAbout(Globals.hMainWnd, "WINE", "Notepad", 0);
117         break;
118
119    }
120    return 0;
121 }
122
123
124
125 /***********************************************************************
126  *
127  *           NOTEPAD_WndProc
128  */
129
130 LRESULT NOTEPAD_WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
131 {
132     PAINTSTRUCT ps;
133
134     switch (msg) {
135
136        case WM_CREATE:
137         printf("WM_CREATE\n");
138         break;
139
140         case WM_PAINT:
141           printf("WM_PAINT\n");
142           BeginPaint(hWnd, &ps);
143           EndPaint(hWnd, &ps);
144         break;
145
146        case WM_COMMAND:
147           printf("WM_COMMAND\n");
148           NOTEPAD_MenuCommand(wParam);
149           break;
150
151        case WM_DESTROY:
152           printf("WM_DESTROY\n");
153           PostQuitMessage (0);
154           break;
155
156        default:
157           return DefWindowProc (hWnd, msg, wParam, lParam);
158     }
159     return 0l;
160 }
161
162
163
164 /***********************************************************************
165  *
166  *           WinMain
167  */
168
169 void DumpGlobals(void) {
170
171     printf("DumpGlobals()");
172     printf(" Globals.lpszIniFile: %s\n", Globals.lpszIniFile); 
173     printf(" Globals.lpszIcoFile: %s\n", Globals.lpszIcoFile);
174     printf("Globals.lpszLanguage: %s\n", Globals.lpszLanguage);
175     printf("   Globals.hInstance: %i\n", Globals.hInstance);
176     printf("   Globals.hMainMenu: %i\n", Globals.hMainMenu);
177     
178 }
179  
180 int PASCAL WinMain (HANDLE hInstance, HANDLE prev, LPSTR cmdline, int show)
181 {
182     MSG      msg;
183     WNDCLASS class;
184     char className[] = "NPClass";  /* To make sure className >= 0x10000 */
185     char winName[]   = "Notepad";
186
187     printf("WinMain()\n");
188     
189     /* Setup Globals */
190
191     Globals.lpszIniFile   = "notepad.ini";
192     Globals.lpszIcoFile   = "notepad.ico";
193     Globals.lpszLanguage  = "En";
194     Globals.hInstance     = hInstance;
195     Globals.hMainMenu     = LoadMenu(Globals.hInstance, STRING_MENU_Xx);
196     Globals.hFileMenu     = GetSubMenu(Globals.hMainMenu, 0);
197     Globals.hEditMenu     = GetSubMenu(Globals.hMainMenu, 1);
198     Globals.hSearchMenu   = GetSubMenu(Globals.hMainMenu, 2);
199     Globals.hLanguageMenu = GetSubMenu(Globals.hMainMenu, 3);
200     Globals.hHelpMenu     = GetSubMenu(Globals.hMainMenu, 4);
201     Globals.hMainIcon     = ExtractIcon(Globals.hInstance, 
202                                         Globals.lpszIcoFile, 0);
203     if (!Globals.hMainIcon) Globals.hMainIcon = 
204                                   LoadIcon(0, MAKEINTRESOURCE(DEFAULTICON));
205     
206     DumpGlobals();                                
207                                   
208     if (!prev){
209         class.style = CS_HREDRAW | CS_VREDRAW;
210         class.lpfnWndProc = NOTEPAD_WndProc;
211         class.cbClsExtra = 0;
212         class.cbWndExtra = 0;
213         class.hInstance  = Globals.hInstance;
214         class.hIcon      = LoadIcon (0, IDI_APPLICATION);
215         class.hCursor    = LoadCursor (0, IDC_ARROW);
216         class.hbrBackground = GetStockObject (WHITE_BRUSH);
217         class.lpszMenuName = "bla\0";
218         class.lpszClassName = (SEGPTR)className;
219     }
220     if (!RegisterClass (&class))
221         return FALSE;
222
223     Globals.hMainWnd = CreateWindow (className, winName, WS_OVERLAPPEDWINDOW,
224                         CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 
225                         LoadMenu(Globals.hInstance, STRING_MENU_Xx),
226                         Globals.hInstance, 0);
227
228     SetMenu(Globals.hMainWnd, Globals.hMainMenu);               
229                         
230     ShowWindow (Globals.hMainWnd, show);
231     UpdateWindow (Globals.hMainWnd);
232
233     while (GetMessage (&msg, 0, 0, 0)) {
234         TranslateMessage (&msg);
235         DispatchMessage (&msg);
236     }
237     return 0;
238 }
239
240
241
242
243 /* Local Variables:    */
244 /* c-file-style: "GNU" */
245 /* End:                */