]>
Commit | Line | Data |
---|---|---|
4b123bb9 HH |
1 | ///////////////////////////////////////////////////////////////////////////// |
2 | // Name: No names yet. | |
3 | // Purpose: Contrib. demo | |
4 | // Author: Aleksandras Gluchovas | |
5 | // Modified by: | |
6 | // Created: 24/04/1999 | |
7 | // RCS-ID: $Id$ | |
8 | // Copyright: (c) Aleskandars Gluchovas | |
9 | // Licence: GNU General Public License | |
10 | ///////////////////////////////////////////////////////////////////////////// | |
11 | #ifndef __WXSDEFS_G__ | |
12 | #define __WXSDEFS_G__ | |
13 | ||
14 | #include <config.h> | |
15 | ||
16 | ||
17 | #include "controlarea.h" | |
18 | ||
19 | #ifdef wxUSE_TEMPLATE_STL | |
20 | #include <vector> | |
21 | #include <map> | |
22 | //using std::map; | |
23 | //using std::vector; | |
24 | using namespace std; | |
25 | #else | |
26 | #include "wxstldefs.h" // imports predefine StrListT, IntListT containers | |
27 | #include "wxstlac.h" | |
28 | #endif | |
29 | class wxsProject; | |
30 | class wxsComponent; | |
31 | class wxsWorkplace; | |
32 | class wxsOpenedFileInfo; | |
33 | class wxsWorkplaceListener; | |
34 | class wxsSourceEditorPlugin; | |
35 | class wxsSourceInfoPlugin; | |
36 | class wxsAppListener; | |
37 | class wxsAppInterface; | |
38 | ||
39 | class wxFrame; | |
40 | ||
41 | typedef wxsWorkplaceListener* wxsWorkplaceListenerPtrT; | |
42 | ||
43 | #ifdef wxUSE_TEMPLATE_STL | |
44 | typedef vector<wxsWorkplaceListenerPtrT> wxsWorkplaceListenerListT; | |
45 | #else | |
46 | typedef WXSTL_VECTOR_SHALLOW_COPY( wxsWorkplaceListenerPtrT ) wxsWorkplaceListenerListT; | |
47 | #endif | |
48 | ||
49 | // IDs for the controls and the menu commands | |
50 | enum | |
51 | { | |
52 | // menu items | |
53 | WXS_Quit = 3300, // FIXEM:: ids.. | |
54 | WXS_About, | |
55 | WXS_Open, | |
56 | WXS_Close, | |
57 | WXS_OpenWorkplace, | |
58 | WXS_Save, | |
59 | WXS_SaveAs, | |
60 | WXS_SaveAll, | |
61 | WXS_CloseWorkplace, | |
62 | WXS_SaveWorkplace, | |
63 | WXS_NewProject, | |
64 | ||
65 | WXS_ShowTips, | |
66 | ||
67 | WXS_Undo = 9000, | |
68 | WXS_NextWindow, | |
69 | WXS_PreviousWindow, | |
70 | WXS_CloseWindow, | |
71 | WXS_ListWindows, | |
72 | WXS_UpdateBrowser, | |
73 | WXS_ToggleWorkplaceWindow, | |
74 | ||
75 | WXS_InsertFiles, | |
76 | WXS_Test, | |
77 | WXS_Settings, | |
78 | ||
79 | WXS_ClassView, | |
80 | WXS_FileView, | |
81 | WXS_GotoEditor, | |
82 | ||
83 | WXS_Test1, | |
84 | WXS_Test2, | |
85 | ||
86 | // controls start here (the numbers are, of course, arbitrary) | |
87 | WXS_Text = 1000, | |
88 | ||
89 | ID_EDIT_UNDO, | |
90 | ID_EDIT_REDO, | |
91 | ID_EDIT_CUT, | |
92 | ID_EDIT_COPY, | |
93 | ID_EDIT_PASTE, | |
94 | ID_EDIT_DELETE, | |
95 | ID_EDIT_SELECT_ALL, | |
96 | ID_EDIT_FIND, | |
97 | ID_EDIT_FIND_NEXT, | |
98 | ID_EDIT_REPLACE, | |
99 | ID_EDIT_GOTO, | |
100 | ID_EDIT_TOGGLE_BM, | |
101 | ID_EDIT_NEXT_BM, | |
102 | ID_EDIT_PREV_BM, | |
103 | ID_EDIT_TOGGLE_BRKPNT, | |
104 | ID_EDIT_BOOKMARKS, | |
105 | ID_EDIT_SETFONT, | |
106 | ID_LEFT_SASH, | |
107 | ID_BOTTOM_SASH | |
108 | }; | |
109 | ||
110 | // bitmaps/icons | |
111 | enum WXS_ICON_ENUM{ | |
112 | WXS_ICON_class = 1, | |
113 | WXS_ICON_priv_mtd, | |
114 | WXS_ICON_prot_mtd, | |
115 | WXS_ICON_pub_mtd, | |
116 | WXS_ICON_priv_mtd_def, | |
117 | WXS_ICON_prot_mtd_def, | |
118 | WXS_ICON_pub_mtd_def, | |
119 | WXS_ICON_priv_var, | |
120 | WXS_ICON_prot_var, | |
121 | WXS_ICON_pub_var, | |
122 | WXS_ICON_pub_pure_mtd, | |
123 | WXS_ICON_file, | |
124 | WXS_ICON_folder, | |
125 | WXS_ICON_mru_folder, | |
126 | WXS_ICON_class_gray, | |
127 | WXS_ICON_file_gray, | |
128 | }; | |
129 | ||
130 | ||
131 | typedef char* CharPtrT; | |
132 | ||
133 | struct UU_cmp | |
134 | { | |
135 | inline int operator()(const CharPtrT x, const CharPtrT y ) const { return 0; } | |
136 | }; | |
137 | ||
138 | typedef wxBitmap* wxBitmapPtrT; | |
139 | #ifdef wxUSE_TEMPLATE_STL | |
140 | typedef map<WXS_ICON_ENUM, wxBitmapPtrT> WXS_BitmapsMapT; | |
141 | #else | |
142 | typedef WXSTL_MAP( WXS_ICON_ENUM, wxBitmapPtrT, | |
143 | LESS_THEN_FUNCTOR(WXS_ICON_ENUM) ) WXS_BitmapsMapT; | |
144 | #endif | |
145 | ||
146 | extern WXS_BitmapsMapT WXS_Bitmaps; | |
147 | #define WXS_ICON(name) (*WXS_Bitmaps[WXS_ICON_##name]) | |
148 | ||
149 | ||
150 | // very general file categories | |
151 | ||
152 | enum WXS_FILE_CATEGORY | |
153 | { | |
154 | WXS_UNKNOWN_FILE, | |
155 | WXS_SOURCE_FILE, | |
156 | WXS_RESOURCE_FILE, | |
157 | WXS_DOCUMENTATION_FILE, | |
158 | WXS_CONFIGURAITON_FILE | |
159 | }; | |
160 | ||
161 | enum WXS_PLUGIN_TYPE | |
162 | { | |
163 | WXS_UNKNOWN_PLUGIN, | |
164 | WXS_EDITOR_PLUGIN, | |
165 | WXS_CLASSINFO_PLUGIN, | |
166 | WXS_CLASSBROWSER_PLUGIN, | |
167 | WXS_FILEBROWSER_PLUGIN, | |
168 | WXS_TOOL_PLUGIN, | |
169 | WXS_OUTPUTTOOL_PLUGIN | |
170 | }; | |
171 | ||
172 | ||
173 | ||
174 | class wxsAppListener | |
175 | { | |
176 | public: | |
177 | virtual void OnWindowSwitched( wxWindow* fromWnd, wxWindow* toWnd ) {}; | |
178 | virtual bool OnCloseWindow( wxWindow* wnd ) { return TRUE; } | |
179 | virtual void OnTabSwitched() {}; | |
180 | virtual void OnPageSwitched() {}; | |
181 | }; | |
182 | ||
183 | class wxsAppInterface | |
184 | { | |
185 | public: | |
186 | virtual void SetAppListener(wxsAppListener* pLsn) = 0; | |
187 | ||
188 | virtual void AddEditor(wxsSourceEditorPlugin* editor,wxString title,wxBitmap* pImage = NULL) = 0; | |
189 | virtual void ActivateEditor( wxsSourceEditorPlugin* editor ) = 0; | |
190 | virtual void CloseEditor( wxsSourceEditorPlugin* editor ) = 0; | |
191 | ||
192 | virtual void ShowNextWindow() = 0; | |
193 | virtual void ShowPreviousWindow() = 0; | |
194 | virtual void CloseActiveWindow() = 0; | |
195 | virtual void CloseWindow( wxWindow* wnd ) = 0; | |
196 | virtual void ShowWindowList() = 0; | |
197 | virtual wxWindow* GetActiveWindow() = 0; | |
198 | virtual wxTabbedWindow* GetTabbedWindow() = 0; | |
199 | virtual void AddTab(wxsComponent* pContent, wxString tabText, wxBitmap* pImage = NULL) = 0; | |
200 | virtual void ShowNextTab() = 0; | |
201 | virtual wxPaggedWindow* GetPaggedWindow() = 0; | |
202 | virtual void AddPage(wxsComponent* pContent, wxString tabText, wxBitmap* pImage = NULL) = 0; | |
203 | virtual void ShowNextPage() = 0; | |
204 | virtual wxFrame* GetMainFrame() = 0; | |
205 | virtual void SetStatusText( const string& text ) = 0; | |
206 | ||
207 | static wxsAppInterface& GetInstance(); | |
208 | ||
209 | protected: | |
210 | static wxsAppInterface* mpInstance; | |
211 | friend wxsAppInterface& wxsGetApp(); | |
212 | }; | |
213 | ||
214 | // short-cut for wxsAppInterface::GetInstance() | |
215 | ||
216 | wxsAppInterface& wxsGetApp(); | |
217 | ||
218 | class wxsWorkplaceListener : public wxObject | |
219 | { | |
220 | public: | |
221 | virtual void OnSubprojectAdded( wxsProject& subPrj, wxsProject& toPrj ) {} | |
222 | virtual void OnSubprojectRemoved( wxsProject& subPrj, wxsProject& fromPrj ) {} | |
223 | virtual void OnProjectCreated( wxsProject& prj ) {} | |
224 | virtual void OnRootProjectLoaded() {} | |
225 | virtual void OnRootProjectClosed() {} | |
226 | virtual void OnFilesAddedToProject( wxsProject& prj, StrListT& files, WXS_FILE_CATEGORY cat ) {} | |
227 | virtual void OnFilesRemovedFromProject( wxsProject& prj, StrListT& files, WXS_FILE_CATEGORY cat ) {} | |
228 | ||
229 | virtual void OnFileContentChanged( wxsProject& prj, const string& file, WXS_FILE_CATEGORY cat, | |
230 | char* newContent, size_t len ) {} | |
231 | ||
232 | virtual void OnFileOpened( wxsOpenedFileInfo& file ) {} | |
233 | }; | |
234 | ||
235 | typedef wxsProject* wxsProjectPtrT; | |
236 | #ifdef wxUSE_TEMPLATE_STL | |
237 | typedef vector<wxsProjectPtrT> wxsProjectListT; | |
238 | #else | |
239 | typedef WXSTL_VECTOR_SHALLOW_COPY( wxsProjectPtrT ) wxsProjectListT; | |
240 | #endif | |
241 | ||
242 | class wxsProject : public wxObject | |
243 | { | |
244 | public: | |
245 | // Basic project info | |
246 | virtual void SetName(const string& name) = 0; | |
247 | virtual void SetFileName(const string& fname) = 0; | |
248 | virtual void SetDescription(const string& desc) = 0; | |
249 | virtual void SetLanguage(const string& lang) = 0; | |
250 | virtual string GetName() = 0; | |
251 | virtual string GetFileName() = 0; | |
252 | virtual string GetDescription() = 0; | |
253 | virtual string GetLanguage() = 0; | |
254 | // File manipulation | |
255 | virtual bool AddFile( const string& file) = 0; | |
256 | virtual bool RemoveFile ( const string& file ) = 0; | |
257 | virtual StrListT GetFiles() = 0; | |
258 | // Sub-Project manipulation | |
259 | virtual void AddSubproject( wxsProject* subPrj) = 0; | |
260 | virtual void RemoveSubproject( wxsProject* subPrj) = 0; | |
261 | virtual wxsProjectListT& GetSubprojects() = 0; | |
262 | // Transient information (parent only exists when loaded | |
263 | virtual void SetParent( wxsProject* parentPrj) = 0; | |
264 | virtual wxsProject* GetParent() = 0; | |
265 | // configuration info storage | |
266 | virtual string CreateConfig ( const string& file = "" ) = 0; | |
267 | virtual bool SetCurrentConfig ( const string& configkey ) = 0; | |
268 | virtual bool AddConfigValue( const string& key, string& value) = 0; | |
269 | virtual bool SetConfigValue( const string& key, string& value) = 0; | |
270 | virtual bool RemoveConfigValue( const string& key ) = 0; | |
271 | virtual string GetConfigValue ( const string& key ) = 0; | |
272 | ||
273 | ||
274 | }; | |
275 | ||
276 | class wxsOpenedFileInfo : public wxObject | |
277 | { | |
278 | public: | |
279 | string mFullName; | |
280 | wxsProject* mpProject; // NULL, if file does not belong to any project | |
281 | wxsSourceEditorPlugin* mpEditor; | |
282 | WXS_FILE_CATEGORY mCategory; | |
283 | bool mIsSaved; | |
284 | ||
285 | public: | |
286 | wxsOpenedFileInfo() : mIsSaved( TRUE ), mpProject( NULL ) {} | |
287 | ||
288 | wxsProject* GetProject() { return mpProject; } | |
289 | const string& GetFullName() { return mFullName; } | |
290 | wxsSourceEditorPlugin& GetEditor() { return *mpEditor; } | |
291 | WXS_FILE_CATEGORY GetCategory() { return mCategory; } | |
292 | }; | |
293 | ||
294 | typedef wxsOpenedFileInfo* wxsOpenedFileInfoPtrT; | |
295 | #ifdef wxUSE_TEMPLATE_STL | |
296 | typedef vector<wxsOpenedFileInfoPtrT> wxsOpenedFileInfoListT; | |
297 | #else | |
298 | typedef WXSTL_VECTOR_SHALLOW_COPY( wxsOpenedFileInfoPtrT ) wxsOpenedFileInfoListT; | |
299 | #endif | |
300 | ||
301 | // abstract interface | |
302 | ||
303 | class wxsWorkplace : public wxObject | |
304 | { | |
305 | public: | |
306 | virtual void CreateProject( const string& name, const string& projectFile, const wxsProject* parent=NULL) = 0; | |
307 | ||
308 | virtual void LoadRootProject( const string& projectFile ) = 0; | |
309 | virtual void SaveProject( wxsProject& prj ) = 0; | |
310 | virtual void CloseRootProject() = 0; | |
311 | ||
312 | virtual wxsProject& GetRootProject() = 0; | |
313 | virtual wxsProject* FindProjectByName( const string& name ) = 0; | |
314 | virtual wxsOpenedFileInfo* FindFileByEditor( wxsSourceEditorPlugin& editor ) = 0; | |
315 | ||
316 | virtual void AddWorkpalceListener( wxsWorkplaceListener* pListener ) = 0; | |
317 | ||
318 | virtual void AddSubproject( wxsProject& intoPrj,const string& projectFile ) = 0; | |
319 | virtual void RemoveSubproject( wxsProject& prj ) = 0; | |
320 | ||
321 | virtual void AddFilesToProject( wxsProject& prj, StrListT& files ) = 0; | |
322 | virtual void RemoveFilesFromProject( wxsProject& prj, StrListT& files ) = 0; | |
323 | ||
324 | virtual void NotifyFileContentChanged( wxsProject& prj, const string& file, | |
325 | char* newContent, size_t len ) = 0; | |
326 | ||
327 | virtual void NotifyFileContentChanged( wxsOpenedFileInfo& info ) = 0; | |
328 | virtual void NotifyEditorDeactivated( wxsSourceEditorPlugin& editor ) = 0; | |
329 | ||
330 | // if pPrj is NULL, the specified file does not belong to any projects, | |
331 | // i.e. it blongs to the workplace | |
332 | ||
333 | virtual wxsOpenedFileInfo* | |
334 | OpenFileInEditor( const string& file, wxsProject* pPrj = NULL, | |
335 | int line = -1, int column = -1) = 0; | |
336 | ||
337 | virtual void GetCurrentFileContent( wxsProject& prj, const string& file, | |
338 | char** buf, size_t& len | |
339 | ) = 0; | |
340 | ||
341 | // returns FALSE, if source was already up-to-date | |
342 | virtual bool SyncSourceInfo() = 0; | |
343 | ||
344 | virtual wxsProject* FindSubproject( wxsProject& parentPrj, const string& prjName ) = 0; | |
345 | virtual wxsOpenedFileInfo* FindOpenedFile( const string& name ) = 0; | |
346 | virtual bool FileIsOpened( wxsProject& prj, const string& file ) = 0; | |
347 | virtual wxsSourceEditorPlugin* GetSourceEditor( wxsProject& prj, const string& file ) = 0; | |
348 | virtual wxsSourceInfoPlugin* GetSourceInfoPlugin() = 0; | |
349 | ||
350 | static wxsWorkplace& GetInstance() { return *wxsWorkplace::mpInstance; } | |
351 | ||
352 | virtual wxsOpenedFileInfoListT& GetOpenedFiles() = 0; | |
353 | virtual wxsOpenedFileInfo* GetActiveFile() = 0; | |
354 | ||
355 | virtual void SaveFile( wxsOpenedFileInfo& info ) = 0; | |
356 | virtual void SaveAllFiles() = 0; | |
357 | ||
358 | virtual bool CloseFile( wxsOpenedFileInfo& info, bool closeWindow = TRUE ) = 0; | |
359 | virtual bool CloseAllFiles() = 0; | |
360 | ||
361 | virtual bool CloseInProgress() = 0; | |
362 | ||
363 | virtual WXS_FILE_CATEGORY GetFileCategory( const string& file ) = 0; | |
364 | ||
365 | protected: | |
366 | static wxsWorkplace* mpInstance; | |
367 | friend wxsWorkplace& wxsGetWorkplace(); | |
368 | }; | |
369 | ||
370 | // short-cut for wxsWorkplace::GetInstance() | |
371 | ||
372 | wxsWorkplace& wxsGetWorkplace(); | |
373 | ||
374 | #endif |