[NTVDM]
[reactos.git] / base / applications / rapps / rapps.h
1 #define WIN32_NO_STATUS
2 #define _INC_WINDOWS
3 #define COM_NO_WINDOWS_H
4 #include <stdarg.h>
5 #include <windef.h>
6 #include <winbase.h>
7 #include <winreg.h>
8 #include <wingdi.h>
9 #include <winnls.h>
10 #include <winuser.h>
11 #include <wincon.h>
12 #include <richedit.h>
13 #include <shellapi.h>
14 #include <shlwapi.h>
15 #include <shlobj.h>
16 #include <stdio.h>
17
18 #include <rappsmsg.h>
19
20 #include "resource.h"
21
22 #define APPLICATION_DATEBASE_URL L"http://svn.reactos.org/packages/rappmgr.cab"
23
24 #define SPLIT_WIDTH 4
25 #define MAX_STR_LEN 256
26
27 #define LISTVIEW_ICON_SIZE 24
28 #define TREEVIEW_ICON_SIZE 24
29
30 /* EnumType flags for EnumInstalledApplications */
31 #define ENUM_ALL_COMPONENTS 30
32 #define ENUM_APPLICATIONS 31
33 #define ENUM_UPDATES 32
34 /* EnumType flags for EnumAvailableApplications */
35 #define ENUM_ALL_AVAILABLE 0
36 #define ENUM_CAT_AUDIO 1
37 #define ENUM_CAT_VIDEO 2
38 #define ENUM_CAT_GRAPHICS 3
39 #define ENUM_CAT_GAMES 4
40 #define ENUM_CAT_INTERNET 5
41 #define ENUM_CAT_OFFICE 6
42 #define ENUM_CAT_DEVEL 7
43 #define ENUM_CAT_EDU 8
44 #define ENUM_CAT_ENGINEER 9
45 #define ENUM_CAT_FINANCE 10
46 #define ENUM_CAT_SCIENCE 11
47 #define ENUM_CAT_TOOLS 12
48 #define ENUM_CAT_DRIVERS 13
49 #define ENUM_CAT_LIBS 14
50 #define ENUM_CAT_OTHER 15
51
52 #define ENUM_INSTALLED_MIN ENUM_ALL_COMPONENTS
53 #define ENUM_INSTALLED_MAX ENUM_UPDATES
54 #define ENUM_AVAILABLE_MIN ENUM_ALL_AVAILABLE
55 #define ENUM_AVAILABLE_MAX ENUM_CAT_OTHER
56
57 #define IS_INSTALLED_ENUM(a) (a >= ENUM_INSTALLED_MIN && a <= ENUM_INSTALLED_MAX)
58 #define IS_AVAILABLE_ENUM(a) (a >= ENUM_AVAILABLE_MIN && a <= ENUM_AVAILABLE_MAX)
59
60 /* aboutdlg.c */
61 VOID ShowAboutDialog(VOID);
62
63 /* available.c */
64 typedef struct
65 {
66 INT Category;
67 WCHAR szName[MAX_PATH];
68 WCHAR szRegName[MAX_PATH];
69 WCHAR szVersion[MAX_PATH];
70 WCHAR szLicence[MAX_PATH];
71 WCHAR szDesc[MAX_PATH];
72 WCHAR szSize[MAX_PATH];
73 WCHAR szUrlSite[MAX_PATH];
74 WCHAR szUrlDownload[MAX_PATH];
75 WCHAR szCDPath[MAX_PATH];
76
77 } APPLICATION_INFO, *PAPPLICATION_INFO;
78
79 typedef struct
80 {
81 HKEY hRootKey;
82 HKEY hSubKey;
83 WCHAR szKeyName[MAX_PATH];
84
85 } INSTALLED_INFO, *PINSTALLED_INFO;
86
87 typedef struct
88 {
89 BOOL bSaveWndPos;
90 BOOL bUpdateAtStart;
91 BOOL bLogEnabled;
92 WCHAR szDownloadDir[MAX_PATH];
93 BOOL bDelInstaller;
94 /* Window Pos */
95 BOOL Maximized;
96 INT Left;
97 INT Top;
98 INT Right;
99 INT Bottom;
100
101 } SETTINGS_INFO, *PSETTINGS_INFO;
102
103 /* available.c */
104 typedef BOOL (CALLBACK *AVAILENUMPROC)(APPLICATION_INFO Info);
105 BOOL EnumAvailableApplications(INT EnumType, AVAILENUMPROC lpEnumProc);
106 BOOL ShowAvailableAppInfo(INT Index);
107 BOOL UpdateAppsDB(VOID);
108
109 /* installdlg.c */
110 BOOL InstallApplication(INT Index);
111
112 /* installed.c */
113 typedef BOOL (CALLBACK *APPENUMPROC)(INT ItemIndex, LPWSTR lpName, INSTALLED_INFO Info);
114 BOOL EnumInstalledApplications(INT EnumType, BOOL IsUserKey, APPENUMPROC lpEnumProc);
115 BOOL GetApplicationString(HKEY hKey, LPWSTR lpKeyName, LPWSTR lpString);
116 BOOL ShowInstalledAppInfo(INT Index);
117 BOOL UninstallApplication(INT Index, BOOL bModify);
118 BOOL IsInstalledApplication(LPWSTR lpRegName, BOOL IsUserKey);
119 VOID RemoveAppFromRegistry(INT Index);
120
121 /* winmain.c */
122 extern HWND hMainWnd;
123 extern HINSTANCE hInst;
124 extern INT SelectedEnumType;
125 extern SETTINGS_INFO SettingsInfo;
126 VOID SaveSettings(HWND hwnd);
127 VOID FillDefaultSettings(PSETTINGS_INFO pSettingsInfo);
128
129 /* listview.c */
130 extern HWND hListView;
131 extern BOOL bAscending;
132 BOOL CreateListView(HWND hwnd);
133 BOOL ListViewAddColumn(INT Index, LPWSTR lpText, INT Width, INT Format);
134 INT ListViewAddItem(INT ItemIndex, INT IconIndex, LPWSTR lpText, LPARAM lParam);
135 INT CALLBACK ListViewCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
136 PVOID ListViewGetlParam(INT Index);
137
138 /* loaddlg.c */
139 BOOL DownloadApplication(INT Index);
140 VOID DownloadApplicationsDB(LPWSTR lpUrl);
141
142 /* misc.c */
143 INT GetSystemColorDepth(VOID);
144 int GetWindowWidth(HWND hwnd);
145 int GetWindowHeight(HWND hwnd);
146 int GetClientWindowWidth(HWND hwnd);
147 int GetClientWindowHeight(HWND hwnd);
148 VOID CopyTextToClipboard(LPCWSTR lpszText);
149 VOID SetWelcomeText(VOID);
150 VOID ShowPopupMenu(HWND hwnd, UINT MenuID);
151 BOOL StartProcess(LPWSTR lpPath, BOOL Wait);
152 BOOL ExtractFilesFromCab(LPWSTR lpCabName, LPWSTR lpOutputPath);
153 VOID InitLogs(VOID);
154 VOID FreeLogs(VOID);
155 BOOL WriteLogMessage(WORD wType, DWORD dwEventID, LPWSTR lpMsg);
156
157 /* parser.c */
158 INT ParserGetString(LPCWSTR section, LPCWSTR entry, LPWSTR buffer, UINT len, LPCWSTR filename);
159 UINT ParserGetInt(LPCWSTR section, LPCWSTR entry, LPCWSTR filename);
160
161 /* richedit.c */
162 extern HWND hRichEdit;
163 extern PWSTR pLink;
164 BOOL CreateRichEdit(HWND hwnd);
165 VOID RichEditOnLink(HWND hwnd, ENLINK *Link);
166 VOID InsertRichEditText(LPCWSTR lpszText, DWORD dwEffects);
167 VOID NewRichEditText(LPCWSTR lpszText, DWORD dwEffects);
168
169 /* settingsdlg.c */
170 VOID CreateSettingsDlg(HWND hwnd);
171
172 /* splitter.c */
173 extern HWND hVSplitter;
174 extern HWND hHSplitter;
175 BOOL CreateVSplitBar(HWND hwnd);
176 BOOL CreateHSplitBar(HWND hwnd);
177 int GetHSplitterPos(VOID);
178 VOID SetHSplitterPos(int Pos);
179
180 /* statusbar.c */
181 extern HWND hStatusBar;
182 BOOL CreateStatusBar(HWND hwnd);
183 VOID SetStatusBarText(LPCWSTR lpszText);
184
185 /* toolbar.c */
186 extern HWND hToolBar;
187 extern HWND hSearchBar;
188 BOOL CreateToolBar(HWND hwnd);
189 VOID ToolBarOnGetDispInfo(LPTOOLTIPTEXT lpttt);
190
191 /* treeview.c */
192 extern HWND hTreeView;
193 BOOL CreateTreeView(HWND hwnd);
194 HTREEITEM TreeViewAddItem(HTREEITEM hParent, LPWSTR lpText, INT Image, INT SelectedImage, LPARAM lParam);