4 * Copyright 1996 Ulrich Schmid
5 * Copyright 2002 Sylvain Petreolle
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.
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.
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
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
27 #define WIN32_NO_STATUS
33 #define MAX_STRING_LEN 255
34 #define MAX_PATHNAME_LEN 1024
35 #define MAX_LANGUAGE_NUMBER (PM_LAST_LANGUAGE - PM_FIRST_LANGUAGE)
40 #define DEFAULTICON OIC_WINLOGO
42 /* Icon index in MS Windows' progman.exe */
43 #define PROGMAN_ICON_INDEX 0
44 #define GROUP_ICON_INDEX 6
45 #define DEFAULT_ICON_INDEX 7
47 #define DEF_GROUP_WIN_XPOS 100
48 #define DEF_GROUP_WIN_YPOS 100
49 #define DEF_GROUP_WIN_WIDTH 300
50 #define DEF_GROUP_WIN_HEIGHT 200
58 /**/ /* Numbers are byte indexes in *.grp */
60 /**/ /* Program entry */
62 INT nIconIndex
; /* 4 - 5 */
64 /* icon flags ??? */ /* 6 - 7 */
65 /* iconANDsize */ /* 8 - 9 */
66 /* iconXORsize */ /* 10 - 11 */
67 /* pointer to IconInfo */ /* 12 - 13 */
68 /* pointer to iconXORbits */ /* 14 - 15 */ /* sometimes iconANDbits ?! */
69 /* pointer to iconANDbits */ /* 16 - 17 */ /* sometimes iconXORbits ?! */
70 HLOCAL hName
; /* 18 - 19 */
71 HLOCAL hCmdLine
; /* 20 - 21 */
72 HLOCAL hIconFile
; /* 22 - 23 */
73 HLOCAL hWorkDir
; /* Extension 0x8101 */
74 INT nHotKey
; /* Extension 0x8102 */
75 /* Modifier: bit 8... */
76 INT nCmdShow
; /* Extension 0x8103 */
79 /* HotSpot x ??? */ /* 0 - 1 */
80 /* HotSpot y ??? */ /* 2 - 3 */
81 /* Width */ /* 4 - 5 */
82 /* Height */ /* 6 - 7 */
83 /* WidthBytes ??? */ /* 8 - 9 */
84 /* Planes */ /* 10 - 10 */
85 /* BitsPerPixel */ /* 11 - 11 */
94 HLOCAL hActiveProgram
;
95 BOOL bFileNameModified
;
96 BOOL bOverwriteFileOk
;
100 /* magic `PMCC' */ /* 0 - 3 */
101 /* checksum */ /* 4 - 5 */
102 /* Extension ptr */ /* 6 - 7 */
103 INT nCmdShow
; /* 8 - 9 */
104 INT x
, y
; /* 10 - 13 */
105 INT width
, height
; /* 14 - 17 */
106 INT iconx
, icony
; /* 18 - 21 */
107 HLOCAL hName
; /* 22 - 23 */
108 /* unknown */ /* 24 - 31 */
109 /* number of programs */ /* 32 - 33 */
110 HLOCAL hPrograms
; /* 34 ... */
112 /**/ /* Extensions */
113 /* Extension type */ /* 0 - 1 */
114 /* Program number */ /* 2 - 3 */
115 /* Size of entry */ /* 4 - 5 */
116 /* Data */ /* 6 ... */
118 /* magic `PMCC' */ /* Extension 0x8000 */
119 /* End of Extensions */ /* Extension 0xffff */
147 extern GLOBALS Globals
;
149 INT
MAIN_MessageBoxIDS(UINT ids_text
, UINT ids_title
, WORD type
);
150 INT
MAIN_MessageBoxIDS_s(UINT ids_text_s
, LPCSTR str
, UINT ids_title
, WORD type
);
151 VOID
MAIN_ReplaceString(HLOCAL
*handle
, LPSTR replacestring
);
153 HLOCAL
GRPFILE_ReadGroupFile(const char* path
);
154 BOOL
GRPFILE_WriteGroupFile(HLOCAL hGroup
);
156 ATOM
GROUP_RegisterGroupWinClass(void);
157 HLOCAL
GROUP_AddGroup(LPCSTR lpszName
, LPCSTR lpszGrpFile
, INT nCmdShow
,
158 INT x
, INT y
, INT width
, INT height
,
159 INT iconx
, INT icony
,
160 BOOL bFileNameModified
, BOOL bOverwriteFileOk
,
161 /* FIXME shouldn't be necessary */
162 BOOL bSuppressShowWindow
);
163 VOID
GROUP_NewGroup(void);
164 VOID
GROUP_ModifyGroup(HLOCAL hGroup
);
165 VOID
GROUP_DeleteGroup(HLOCAL hGroup
);
166 /* FIXME shouldn't be necessary */
167 VOID
GROUP_ShowGroupWindow(HLOCAL hGroup
);
168 HLOCAL
GROUP_FirstGroup(void);
169 HLOCAL
GROUP_NextGroup(HLOCAL hGroup
);
170 HLOCAL
GROUP_ActiveGroup(void);
171 HWND
GROUP_GroupWnd(HLOCAL hGroup
);
172 LPCSTR
GROUP_GroupName(HLOCAL hGroup
);
174 ATOM
PROGRAM_RegisterProgramWinClass(void);
175 HLOCAL
PROGRAM_AddProgram(HLOCAL hGroup
, HICON hIcon
, LPCSTR lpszName
,
176 INT x
, INT y
, LPCSTR lpszCmdLine
,
177 LPCSTR lpszIconFile
, INT nIconIndex
,
178 LPCSTR lpszWorkDir
, INT nHotKey
, INT nCmdShow
);
179 VOID
PROGRAM_NewProgram(HLOCAL hGroup
);
180 VOID
PROGRAM_ModifyProgram(HLOCAL hProgram
);
181 VOID
PROGRAM_CopyMoveProgram(HLOCAL hProgram
, BOOL bMove
);
182 VOID
PROGRAM_DeleteProgram(HLOCAL hProgram
, BOOL BUpdateGrpFile
);
183 HLOCAL
PROGRAM_FirstProgram(HLOCAL hGroup
);
184 HLOCAL
PROGRAM_NextProgram(HLOCAL hProgram
);
185 HLOCAL
PROGRAM_ActiveProgram(HLOCAL hGroup
);
186 LPCSTR
PROGRAM_ProgramName(HLOCAL hProgram
);
187 VOID
PROGRAM_ExecuteProgram(HLOCAL hLocal
);
189 INT
DIALOG_New(INT nDefault
);
190 HLOCAL
DIALOG_CopyMove(LPCSTR lpszProgramName
, LPCSTR lpszGroupName
, BOOL bMove
);
191 BOOL
DIALOG_Delete(UINT ids_format_s
, LPCSTR lpszName
);
192 BOOL
DIALOG_GroupAttributes(LPSTR lpszTitle
, LPSTR lpszPath
, INT nSize
);
193 BOOL
DIALOG_ProgramAttributes(LPSTR lpszTitle
, LPSTR lpszCmdLine
,
194 LPSTR lpszWorkDir
, LPSTR lpszIconFile
,
195 HICON
*lphIcon
, INT
*nIconIndex
,
196 INT
*lpnHotKey
, INT
*lpnCmdShow
, INT nSize
);
197 VOID
DIALOG_Execute(void);
199 VOID
STRING_LoadMenus(VOID
);
202 extern WCHAR STRING_MAIN_WIN_CLASS_NAME
[];
203 extern WCHAR STRING_MDI_WIN_CLASS_NAME
[];
204 extern WCHAR STRING_GROUP_WIN_CLASS_NAME
[];
205 extern WCHAR STRING_PROGRAM_WIN_CLASS_NAME
[];
207 #endif /* PROGMAN_H */
209 /* Local Variables: */
210 /* c-file-style: "GNU" */