Updated Finnish language support.
[wine] / programs / notepad / main.c
1 /*
2  *  Notepad
3  *
4  *  Copyright 1997,98 Marcel Baur <mbaur@g26.ethz.ch>
5  *  To be distributed under the Wine License
6  */
7
8 #include <stdio.h>
9 #include "windows.h"
10 #include "shell.h"
11 #include "main.h"
12 #include "license.h"
13 #include "dialog.h"
14 #include "language.h"
15
16 #ifdef WINELIB
17 #include "options.h"
18 #include "resource.h"
19 #include "shell.h"
20 void LIBWINE_Register_Da();
21 void LIBWINE_Register_De();
22 void LIBWINE_Register_En();
23 void LIBWINE_Register_Sw();
24 void LIBWINE_Register_Fi();
25 #endif
26
27 NOTEPAD_GLOBALS Globals;
28
29 /***********************************************************************
30  *
31  *           NOTEPAD_MenuCommand
32  *
33  *  All handling of main menu events
34  */
35
36 int NOTEPAD_MenuCommand (WPARAM wParam)
37 {  
38    switch (wParam) {
39      case NP_FILE_NEW:          DIALOG_FileNew(); break;
40      case NP_FILE_OPEN:         DIALOG_FileOpen(); break;
41      case NP_FILE_SAVE:         DIALOG_FileSave(); break;
42      case NP_FILE_SAVEAS:       DIALOG_FileSaveAs(); break;
43      case NP_FILE_PRINT:        DIALOG_FilePrint(); break;
44      case NP_FILE_PAGESETUP:    DIALOG_FilePageSetup(); break;
45      case NP_FILE_PRINTSETUP:   DIALOG_FilePrinterSetup();break;
46      case NP_FILE_EXIT:         DIALOG_FileExit(); break;
47
48      case NP_EDIT_UNDO:         DIALOG_EditUndo(); break;
49      case NP_EDIT_CUT:          DIALOG_EditCut(); break;
50      case NP_EDIT_COPY:         DIALOG_EditCopy(); break;
51      case NP_EDIT_PASTE:        DIALOG_EditPaste(); break;
52      case NP_EDIT_DELETE:       DIALOG_EditDelete(); break;
53      case NP_EDIT_SELECTALL:    DIALOG_EditSelectAll(); break;
54      case NP_EDIT_TIMEDATE:     DIALOG_EditTimeDate();break;
55      case NP_EDIT_WRAP:         DIALOG_EditWrap(); break;
56
57      case NP_SEARCH_SEARCH:     DIALOG_Search(); break;
58      case NP_SEARCH_NEXT:       DIALOG_SearchNext(); break;
59
60      case NP_HELP_CONTENTS:     DIALOG_HelpContents(); break;
61      case NP_HELP_SEARCH:       DIALOG_HelpSearch(); break;
62      case NP_HELP_ON_HELP:      DIALOG_HelpHelp(); break;
63      case NP_HELP_LICENSE:      DIALOG_HelpLicense(); break;
64      case NP_HELP_NO_WARRANTY:  DIALOG_HelpNoWarranty(); break;
65      case NP_HELP_ABOUT_WINE:   DIALOG_HelpAboutWine(); break;
66      
67      /* Handle languages */
68      default:
69       LANGUAGE_DefaultHandle(wParam);
70    }
71    return 0;
72 }
73
74
75
76 /***********************************************************************
77  *
78  *           NOTEPAD_WndProc
79  */
80
81 LRESULT NOTEPAD_WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
82 {
83     PAINTSTRUCT ps;
84     CHAR szFileName[MAX_STRING_LEN];
85
86     lstrcpy(szFileName, "");
87
88     switch (msg) {
89
90        case WM_CREATE:
91         break;
92
93        case WM_PAINT:
94           BeginPaint(hWnd, &ps);
95           EndPaint(hWnd, &ps);
96         break;
97
98        case WM_COMMAND:
99           NOTEPAD_MenuCommand(wParam);
100           break;
101
102        case WM_DESTROY:
103           PostQuitMessage (0);
104           break;
105
106        case WM_DROPFILES:
107           DragQueryFile(wParam, 0, szFileName, sizeof(szFileName));
108           printf("file %s to be opened by drag and drop !\n", szFileName);
109           DragFinish(wParam);
110           break;
111           
112
113        default:
114           return DefWindowProc (hWnd, msg, wParam, lParam);
115     }
116     return 0l;
117 }
118
119
120
121 /***********************************************************************
122  *
123  *           WinMain
124  */
125
126 int PASCAL WinMain (HANDLE hInstance, HANDLE prev, LPSTR cmdline, int show)
127 {
128     MSG      msg;
129     WNDCLASS class;
130     char className[] = "NPClass";  /* To make sure className >= 0x10000 */
131     char winName[]   = "Notepad";
132
133     #if defined(WINELIB) && !defined(HAVE_WINE_CONSTRUCTOR)
134       /* Register resources */
135       LIBWINE_Register_Da();
136       LIBWINE_Register_De();
137       LIBWINE_Register_En();
138       LIBWINE_Register_Sw();
139       LIBWINE_Register_Fi();
140     #endif
141
142     /* Select Language */
143     LANGUAGE_Init();
144
145
146     /* Setup Globals */
147
148     Globals.lpszIniFile     = "notepad.ini";
149     Globals.lpszIcoFile     = "notepad.ico";
150
151     Globals.hInstance       = hInstance;
152     Globals.hMainIcon       = ExtractIcon(Globals.hInstance, 
153                                         Globals.lpszIcoFile, 0);
154     if (!Globals.hMainIcon) Globals.hMainIcon = 
155                                   LoadIcon(0, MAKEINTRESOURCE(DEFAULTICON));
156
157     lstrcpy(Globals.szFindText,     "");
158     lstrcpy(Globals.szFileName,     "");
159     lstrcpy(Globals.szMarginTop,    "25 mm");
160     lstrcpy(Globals.szMarginBottom, "25 mm");
161     lstrcpy(Globals.szMarginLeft,   "20 mm");
162     lstrcpy(Globals.szMarginRight,  "20 mm");
163     lstrcpy(Globals.szHeader,       "&n");
164     lstrcpy(Globals.szFooter,       "Page &s");
165
166     if (!prev){
167         class.style         = CS_HREDRAW | CS_VREDRAW;
168         class.lpfnWndProc   = NOTEPAD_WndProc;
169         class.cbClsExtra    = 0;
170         class.cbWndExtra    = 0;
171         class.hInstance     = Globals.hInstance;
172         class.hIcon         = LoadIcon (0, IDI_APPLICATION);
173         class.hCursor       = LoadCursor (0, IDC_ARROW);
174         class.hbrBackground = GetStockObject (WHITE_BRUSH);
175         class.lpszMenuName  = 0;
176         class.lpszClassName = className;
177     }
178
179     if (!RegisterClass (&class))
180         return FALSE;
181
182     Globals.hMainWnd = CreateWindow (className, winName, WS_OVERLAPPEDWINDOW,
183                         CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 
184                         LoadMenu(Globals.hInstance, STRING_MENU_Xx),
185                         Globals.hInstance, 0);
186
187     LANGUAGE_SelectByName(Globals.lpszLanguage);
188
189     SetMenu(Globals.hMainWnd, Globals.hMainMenu);               
190                         
191     ShowWindow (Globals.hMainWnd, show);
192     UpdateWindow (Globals.hMainWnd);
193
194     /* now handle command line */
195     
196     while (*cmdline && (*cmdline == ' ' || *cmdline == '-')) 
197     
198     {
199         CHAR   option;
200 /*      LPCSTR topic_id; */
201
202         if (*cmdline++ == ' ') continue;
203
204         option = *cmdline;
205         if (option) cmdline++;
206         while (*cmdline && *cmdline == ' ') cmdline++;
207
208         switch(option)
209         {
210             case 'p':
211             case 'P': printf("Print file: ");
212                       /* Not yet able to print a file */
213                       break;
214         }
215     }
216
217     DragAcceptFiles(Globals.hMainWnd, TRUE);
218
219     /* now enter mesage loop     */
220     
221     while (GetMessage (&msg, 0, 0, 0)) {
222         TranslateMessage (&msg);
223         DispatchMessage (&msg);
224     }
225     return 0;
226 }
227
228 /* Local Variables:    */
229 /* c-file-style: "GNU" */
230 /* End:                */