regedit: Convert open/save dialogues to unicode.
[wine] / programs / progman / progman.h
CommitLineData
02ed4c23
AJ
1/*
2 * Program Manager
3 *
4 * Copyright 1996 Ulrich Schmid
4eeadac1 5 * Copyright 2002 Sylvain Petreolle
0799c1a7
AJ
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
360a3f91 19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
02ed4c23
AJ
20 */
21
22#ifndef PROGMAN_H
23#define PROGMAN_H
24
c981d0bf
AJ
25#define MAX_STRING_LEN 255
26#define MAX_PATHNAME_LEN 1024
27#define MAX_LANGUAGE_NUMBER (PM_LAST_LANGUAGE - PM_FIRST_LANGUAGE)
28
02ed4c23
AJ
29#include "windows.h"
30
02ed4c23 31/* Fallback icon */
8bb7fb96 32#define DEFAULTICON OIC_WINLOGO
02ed4c23
AJ
33
34/* Icon index in M$ Window's progman.exe */
35#define PROGMAN_ICON_INDEX 0
36#define GROUP_ICON_INDEX 6
37#define DEFAULT_ICON_INDEX 7
38
39#define DEF_GROUP_WIN_XPOS 100
40#define DEF_GROUP_WIN_YPOS 100
41#define DEF_GROUP_WIN_WIDTH 300
42#define DEF_GROUP_WIN_HEIGHT 200
43
44typedef struct
45{
46 HLOCAL hGroup;
47 HLOCAL hPrior;
48 HLOCAL hNext;
49 HWND hWnd;
50 /**/ /* Numbers are byte indexes in *.grp */
51
52 /**/ /* Program entry */
53 INT x, y; /* 0 - 3 */
54 INT nIconIndex; /* 4 - 5 */
55 HICON hIcon;
56 /* icon flags ??? */ /* 6 - 7 */
57 /* iconANDsize */ /* 8 - 9 */
58 /* iconXORsize */ /* 10 - 11 */
59 /* pointer to IconInfo */ /* 12 - 13 */
60 /* pointer to iconXORbits */ /* 14 - 15 */ /* sometimes iconANDbits ?! */
61 /* pointer to iconANDbits */ /* 16 - 17 */ /* sometimes iconXORbits ?! */
62 HLOCAL hName; /* 18 - 19 */
63 HLOCAL hCmdLine; /* 20 - 21 */
9a624916 64 HLOCAL hIconFile; /* 22 - 23 */
02ed4c23
AJ
65 HLOCAL hWorkDir; /* Extension 0x8101 */
66 INT nHotKey; /* Extension 0x8102 */
67 /* Modifier: bit 8... */
68 INT nCmdShow; /* Extension 0x8103 */
69
70 /**/ /* IconInfo */
71 /* HotSpot x ??? */ /* 0 - 1 */
72 /* HotSpot y ??? */ /* 2 - 3 */
73 /* Width */ /* 4 - 5 */
74 /* Height */ /* 6 - 7 */
75 /* WidthBytes ??? */ /* 8 - 9 */
76 /* Planes */ /* 10 - 10 */
77 /* BitsPerPixel */ /* 11 - 11 */
78} PROGRAM;
79
80typedef struct
81{
82 HLOCAL hPrior;
83 HLOCAL hNext;
84 HWND hWnd;
85 HLOCAL hGrpFile;
86 HLOCAL hActiveProgram;
87 BOOL bFileNameModified;
88 BOOL bOverwriteFileOk;
89 INT seqnum;
90
91 /**/ /* Absolute */
92 /* magic `PMCC' */ /* 0 - 3 */
93 /* checksum */ /* 4 - 5 */
94 /* Extension ptr */ /* 6 - 7 */
95 INT nCmdShow; /* 8 - 9 */
96 INT x, y; /* 10 - 13 */
97 INT width, height; /* 14 - 17 */
98 INT iconx, icony; /* 18 - 21 */
99 HLOCAL hName; /* 22 - 23 */
100 /* unknown */ /* 24 - 31 */
101 /* number of programs */ /* 32 - 33 */
102 HLOCAL hPrograms; /* 34 ... */
103
104 /**/ /* Extensions */
9a624916 105 /* Extension type */ /* 0 - 1 */
02ed4c23
AJ
106 /* Program number */ /* 2 - 3 */
107 /* Size of entry */ /* 4 - 5 */
108 /* Data */ /* 6 ... */
109
110 /* magic `PMCC' */ /* Extension 0x8000 */
111 /* End of Extensions */ /* Extension 0xffff */
95105908 112} PROGGROUP;
02ed4c23
AJ
113
114typedef struct
115{
116 HANDLE hInstance;
117 HANDLE hAccel;
118 HWND hMainWnd;
119 HWND hMDIWnd;
120 HICON hMainIcon;
121 HICON hGroupIcon;
122 HICON hDefaultIcon;
123 HMENU hMainMenu;
124 HMENU hFileMenu;
125 HMENU hOptionMenu;
126 HMENU hWindowsMenu;
c981d0bf 127 HMENU hLanguageMenu;
02ed4c23
AJ
128 LPCSTR lpszIniFile;
129 LPCSTR lpszIcoFile;
130 BOOL bAutoArrange;
131 BOOL bSaveSettings;
132 BOOL bMinOnRun;
133 HLOCAL hGroups;
02ed4c23
AJ
134 HLOCAL hActiveGroup;
135} GLOBALS;
136
137extern GLOBALS Globals;
138
c981d0bf
AJ
139INT MAIN_MessageBoxIDS(UINT ids_text, UINT ids_title, WORD type);
140INT MAIN_MessageBoxIDS_s(UINT ids_text_s, LPCSTR str, UINT ids_title, WORD type);
02ed4c23 141VOID MAIN_ReplaceString(HLOCAL *handle, LPSTR replacestring);
02ed4c23
AJ
142
143HLOCAL GRPFILE_ReadGroupFile(const char* path);
144BOOL GRPFILE_WriteGroupFile(HLOCAL hGroup);
145
146ATOM GROUP_RegisterGroupWinClass(void);
147HLOCAL GROUP_AddGroup(LPCSTR lpszName, LPCSTR lpszGrpFile, INT showcmd,
148 INT x, INT y, INT width, INT heiht,
149 INT iconx, INT icony,
150 BOOL bModifiedFileName, BOOL bOverwriteFileOk,
151 /* FIXME shouldn't be necessary */
152 BOOL bSuppressShowWindow);
153VOID GROUP_NewGroup(void);
154VOID GROUP_ModifyGroup(HLOCAL hGroup);
155VOID GROUP_DeleteGroup(HLOCAL hGroup);
156/* FIXME shouldn't be necessary */
157VOID GROUP_ShowGroupWindow(HLOCAL hGroup);
158HLOCAL GROUP_FirstGroup(void);
159HLOCAL GROUP_NextGroup(HLOCAL hGroup);
160HLOCAL GROUP_ActiveGroup(void);
161HWND GROUP_GroupWnd(HLOCAL hGroup);
162LPCSTR GROUP_GroupName(HLOCAL hGroup);
163
164ATOM PROGRAM_RegisterProgramWinClass(void);
165HLOCAL PROGRAM_AddProgram(HLOCAL hGroup, HICON hIcon, LPCSTR lpszName,
166 INT x, INT y, LPCSTR lpszCmdLine,
167 LPCSTR lpszIconFile, INT nIconIndex,
168 LPCSTR lpszWorkDir, INT nHotKey, INT nCmdShow);
169VOID PROGRAM_NewProgram(HLOCAL hGroup);
170VOID PROGRAM_ModifyProgram(HLOCAL hProgram);
171VOID PROGRAM_CopyMoveProgram(HLOCAL hProgram, BOOL bMove);
172VOID PROGRAM_DeleteProgram(HLOCAL hProgram, BOOL BUpdateGrpFile);
173HLOCAL PROGRAM_FirstProgram(HLOCAL hGroup);
174HLOCAL PROGRAM_NextProgram(HLOCAL hProgram);
175HLOCAL PROGRAM_ActiveProgram(HLOCAL hGroup);
176LPCSTR PROGRAM_ProgramName(HLOCAL hProgram);
177VOID PROGRAM_ExecuteProgram(HLOCAL hLocal);
178
179INT DIALOG_New(INT nDefault);
180HLOCAL DIALOG_CopyMove(LPCSTR lpszProgramName, LPCSTR lpszGroupName, BOOL bMove);
c981d0bf 181BOOL DIALOG_Delete(UINT ids_format_s, LPCSTR lpszName);
02ed4c23
AJ
182BOOL DIALOG_GroupAttributes(LPSTR lpszTitle, LPSTR lpszPath, INT nSize);
183BOOL DIALOG_ProgramAttributes(LPSTR lpszTitle, LPSTR lpszCmdLine,
184 LPSTR lpszWorkDir, LPSTR lpszIconFile,
185 HICON *lphIcon, INT *nIconIndex,
186 INT *lpnHotKey, INT *lpnCmdShow, INT nSize);
187VOID DIALOG_Symbol(HICON *lphIcon, LPSTR lpszIconFile,
188 INT *lpnIconIndex, INT nSize);
189VOID DIALOG_Execute(void);
190
4eeadac1 191VOID STRING_LoadMenus(VOID);
02ed4c23
AJ
192
193/* Class names */
194extern CHAR STRING_MAIN_WIN_CLASS_NAME[];
195extern CHAR STRING_MDI_WIN_CLASS_NAME[];
196extern CHAR STRING_GROUP_WIN_CLASS_NAME[];
197extern CHAR STRING_PROGRAM_WIN_CLASS_NAME[];
198
199/* Resource names */
200extern CHAR STRING_ACCEL[];
4eeadac1
SP
201extern CHAR STRING_MAIN[];
202extern CHAR STRING_NEW[];
203extern CHAR STRING_OPEN[];
204extern CHAR STRING_MOVE[];
205extern CHAR STRING_COPY[];
206extern CHAR STRING_DELETE[];
207extern CHAR STRING_GROUP[];
208extern CHAR STRING_PROGRAM[];
209extern CHAR STRING_SYMBOL[];
210extern CHAR STRING_EXECUTE[];
02ed4c23 211
c981d0bf 212/* Stringtable index */
4eeadac1
SP
213#define IDS_PROGRAM_MANAGER 0x02
214#define IDS_ERROR 0x03
215#define IDS_WARNING 0x04
216#define IDS_INFO 0x05
217#define IDS_DELETE 0x06
218#define IDS_DELETE_GROUP_s 0x07
219#define IDS_DELETE_PROGRAM_s 0x08
220#define IDS_NOT_IMPLEMENTED 0x09
221#define IDS_FILE_READ_ERROR_s 0x0a
222#define IDS_FILE_WRITE_ERROR_s 0x0b
223#define IDS_GRPFILE_READ_ERROR_s 0x0c
224#define IDS_OUT_OF_MEMORY 0x0d
225#define IDS_WINHELP_ERROR 0x0e
226#define IDS_UNKNOWN_FEATURE_s 0x0f
227#define IDS_FILE_NOT_OVERWRITTEN_s 0x10
228#define IDS_SAVE_GROUP_AS_s 0x11
229#define IDS_NO_HOT_KEY 0x12
230#define IDS_ALL_FILES 0x13
231#define IDS_PROGRAMS 0x14
232#define IDS_LIBRARIES_DLL 0x15
233#define IDS_SYMBOL_FILES 0x16
234#define IDS_SYMBOLS_ICO 0x17
02ed4c23 235
a100e6b7
MM
236#define IDS_LICENSE_CAPTION 0x20
237#define IDS_LICENSE 0x21
238#define IDS_WARRANTY_CAPTION 0x22
239#define IDS_WARRANTY 0x23
240
02ed4c23
AJ
241/* Menu */
242
4eeadac1
SP
243#define MAIN_MENU 0x109
244#define PM_NEW 0x100
245#define PM_OPEN 0x101
246#define PM_MOVE 0x102
247#define PM_COPY 0x103
248#define PM_DELETE 0x104
249#define PM_ATTRIBUTES 0x105
250#define PM_EXECUTE 0x107
251#define PM_EXIT 0x108
252
253#define PM_AUTO_ARRANGE 0x110
254#define PM_MIN_ON_RUN 0x111
255#define PM_SAVE_SETTINGS 0x113
256
257#define PM_OVERLAP 0x120
258#define PM_SIDE_BY_SIDE 0x121
259#define PM_ARRANGE 0x122
260#define PM_FIRST_CHILD 0x3030
02ed4c23 261
4eeadac1
SP
262/*
263 *#define PM_FIRST_LANGUAGE 0x400
264 *#define PM_LAST_LANGUAGE 0x499
265 */
02ed4c23 266
4eeadac1
SP
267#define PM_CONTENTS 0x131
268#define PM_SEARCH 0x132
269#define PM_HELPONHELP 0x133
270#define PM_TUTORIAL 0x134
02ed4c23 271
4eeadac1
SP
272#define PM_LICENSE 0x140
273#define PM_NO_WARRANTY 0x141
274#define PM_ABOUT_WINE 0x142
02ed4c23
AJ
275
276/* Dialog `New' */
277
278/* RADIOBUTTON: The next two must be in sequence */
4eeadac1
SP
279#define PM_NEW_GROUP 0x150
280#define PM_NEW_PROGRAM 0x151
281#define PM_NEW_GROUP_TXT 0x152
282#define PM_NEW_PROGRAM_TXT 0x153
02ed4c23
AJ
283
284/* Dialogs `Copy', `Move' */
285
4eeadac1
SP
286#define PM_PROGRAM 0x160
287#define PM_FROM_GROUP 0x161
288#define PM_TO_GROUP 0x162
289#define PM_TO_GROUP_TXT 0x163
02ed4c23
AJ
290
291/* Dialogs `Group attributes' */
292
4eeadac1
SP
293#define PM_DESCRIPTION 0x170
294#define PM_DESCRIPTION_TXT 0x171
295#define PM_FILE 0x172
296#define PM_FILE_TXT 0x173
02ed4c23
AJ
297
298/* Dialogs `Program attributes' */
4eeadac1
SP
299#define PM_COMMAND_LINE 0x180
300#define PM_COMMAND_LINE_TXT 0x181
301#define PM_DIRECTORY 0x182
302#define PM_DIRECTORY_TXT 0x183
303#define PM_HOT_KEY 0x184
304#define PM_HOT_KEY_TXT 0x185
305#define PM_ICON 0x186
306#define PM_OTHER_SYMBOL 0x187
02ed4c23
AJ
307
308/* Dialog `Symbol' */
309
4eeadac1
SP
310#define PM_ICON_FILE 0x190
311#define PM_ICON_FILE_TXT 0x191
312#define PM_SYMBOL_LIST 0x192
313#define PM_SYMBOL_LIST_TXT 0x193
02ed4c23
AJ
314
315/* Dialog `Execute' */
316
4eeadac1
SP
317#define PM_COMMAND 0x1a0
318#define PM_SYMBOL 0x1a1
319#define PM_BROWSE 0x1a2
320#define PM_HELP 0x1a3
02ed4c23
AJ
321
322#endif /* PROGMAN_H */
323
324/* Local Variables: */
325/* c-file-style: "GNU" */
326/* End: */