ToolMap
Loading...
Searching...
No Matches
toolmap.h
1/***************************************************************************
2 toolmap.h
3 main file for toolmap 2, contain app and main frame
4 -------------------
5 copyright : (C) 2007 CREALP Lucien Schreiber
6 ***************************************************************************/
7
8/***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16
78#ifndef TOOLMAP_H
79#define TOOLMAP_H
80
81// For compilers that support precompilation, includes "wx/wx.h".
82#include <wx/wxprec.h>
83
84// Include wxWidgets' headers
85#ifndef WX_PRECOMP
86#include <wx/wx.h>
87#endif
88
89#include <wx/sysopt.h> // for dealing with systemoptions
90#include <wx/toolbar.h>
91
92#include "../gui/logwindow_dlg.h" // log window definition
93#include "../gui/project_def_dlg.h" // project definition dialog
94#include "../gui/tocwindow_dlg.h" // Table of content (TOC) definition
95// #include "../database/db_project.h"
96#include "../gui/menumanager.h" // for menu management (enable / diable)
97
98// GIS Includes
99#include "../gis/tmlayermanager.h" // gis central manager
100
101// #include "../gui/attribution_obj_type.h"
102#include <wx/fileconf.h> // for using file configuration even on windows
103
104#include "../gis/tmattributionmanager.h" // attribution manager
105#include "../gis/tmeditmanager.h" // for editing manager
106#include "../gis/tmgisdata.h" // for GIS data access
107#include "../gis/tmscalectrl.h" // for GIS scale control combo box
108#include "../gui/main_panel.h"
109#include "../gui/openerror_dlg.h" // open error dlg
110#include "../gui/queries_panel.h" // for queries panel
111#include "../gui/shortcut_panel.h" // for shortcut panel
112#include "../gui/snapping_panel.h" // for snapping panel
113#include "../gui/tmtoolmanager.h" // for tools
114#include "projectmanager.h"
115#include "tmexportmanager.h" // export manager
116#include "tmwindowposition.h" // saving window position
117
119#include "diroperation.h"
121
122#include "../gui/tmabout_dlg.h"
123
124class MenuManager;
125class ToolbarManager;
126class ProjectManager;
128class tmStatsManager;
130
131#include <wx/mstream.h>
132
133// items from menu project.
134#define ID_MENU_NEW_PRJ_EMPTY 10300
135#define ID_MENU_NEW_PRJ_EXISTING 10301
136#define ID_MENU_OPEN_PRJ 10302
137#define ID_MENU_RECENT 10303
138#define ID_MENU_PRJ_BACKUP 10304
139#define ID_MENU_PRJ_BACKUP_MANAGER 10305
140#define ID_MENU_PRJ_SAVE_TEMPLATE 10306
141#define ID_MENU_PRJ_MERGE 10307
142#define ID_MENU_EXPORT 10307
143#define ID_MENU_EXPORT_LAYER 10308
144// #define ID_MENU_EXPORT_FULL 10309
145#define ID_MENU_PRJ_EDIT 10309
146#define ID_MENU_PRJ_DEF 10310
147#define ID_MENU_OBJ_DEF 10311
148#define ID_MENU_OBJ_ATTRIB_DEF 10312
149#define ID_MENU_PRJ_SETTINGS 10313
150
151#define ID_MENU_STATISTICS 10350
152
153#define ID_MENU_ADD_SPATIAL_DATA 10022
154#define ID_MENU_IMPORT_GIS_DATA 10112
155#define ID_MENU_EXPORT_GIS_GEOMETRIES 10113
156#define ID_MENU_ADD_GROUP 10114
157
158// #define ID_MENU_ZOOM_PREVIOUS 10313
159#define ID_MENU_ZOOM 10315
160#define ID_MENU_PAN 10316
161#define ID_MENU_ZOOM_FIT 10317
162#define ID_MENU_ZOOM_GIVEN_SCALE 10318
163#define ID_MENU_ZOOM_COORDINATE 10319
164#define ID_MENU_ZOOM_NEXT_SCALE 10320
165#define ID_MENU_PREVIOUS_SCALE 10321
166#define ID_MENU_ZOOM_SELECTED_LAYER 10322
167
168#define ID_MENU_SELECTION 10323
169
170#define ID_MENU_UNDO 10179
171// #define ID_MENU_REDO 10180
172#define ID_MENU_DRAW 10176
173#define ID_MENU_DRAW_BEZIER 10191
174#define ID_MENU_MODIFY_BEZIER 10192
175#define ID_MENU_MODIFY 10177
176#define ID_MENU_MODIFY_SHARED 10200
177#define ID_MENU_CUT_LINES 10178
178#define ID_MENU_EDIT_VERTEX_POS 10211
179#define ID_MENU_VERTEX_INSERT 10212
180#define ID_MENU_VERTEX_DELETE 10213
181#define ID_MENU_MERGE_LINES 10003
182#define ID_MENU_CREATE_INTERSECTIONS 10174
183#define ID_MENU_FLIP_LINE 10004
184#define ID_MENU_SMOOTH_LINE 10024
185#define ID_MENU_DELETE_OBJ 10122
186#define ID_MENU_ORIENT_POINT 10190
187#define ID_MENU_ADJUST_SNAPPING 10001
188#define ID_MENU_SHOW_BEZIER_SETTINGS 10078
189// #define ID_MENU_SNAPPING_ADD 10168
190// #define ID_MENU_SNAPPING_REMOVE 10169
191#define ID_MENU_SNAPPING_SHOWONMAP 10170
192#define ID_MENU_ATTRIB_TYPES 10166
193#define ID_MENU_ATTRIB_ATTRIBUTES 10175
194#define ID_MENU_ATTRIB_BATCH 10167
195#define ID_MENU_COPY_PASTE_ATTRIB 10231
196#define ID_MENU_SHORTCUTS 10183
197#define ID_MENU_CHECK_GEOM 10123
198#define ID_MENU_TOOL_DANGLING 10048
199#define ID_MENU_SELECT 10163
200#define ID_MENU_SELECT_BY_OID 10162
201#define ID_MENU_SELECT_NONE 10160
202#define ID_MENU_SELECT_INVERSE 10161
203#define ID_MENU_QUERIES 10019
204// #define ID_MENU_QUERIES_RUN 10020
205#define ID_MENUITEM11 10046
206#define ID_MENUITEM12 10047
207#define ID_MENU_TOC_WINDOW 10037
208#define ID_MENU_INFO_WINDOW 10140
209#define ID_MENU_LOG_WINDOW 10207
210#define ID_MENU_CHECK_UPDATE 10125
211#define ID_MENU_COMPONENTS 10126
212#define ID_MENU_CONTACT_US 10128
213#define ID_MENU_USER_MANUAL 10130
214#define ID_MENU_EXPORT_MODEL 10077
215
216#define ID_TOOLBAR_ZOOM 10252
217
218#define ID_CTXT_FULL_ATTRIB 21000
219#define ID_CTXT_FILTER 21001
220#define ID_CTXT_AUTODISPLAY_ATTRIB 21002
221#define ID_CTXT_EMPTY_LIST_AFTER_ATTRIB 21003
222
223const int ID_MENU_LAYOUT_DEFAULT = 15201;
224const int ID_MENU_LAYOUT_VERTICAL = 15202;
225const int ID_MENU_LAYOUT_HORIZONTAL = 15203;
226const int ID_MENU_VALIDITY = 15204;
227
228const int ID_MENU_EXPORT_CONCATENATED = wxWindow::NewControlId();
229const int ID_MENU_ZOOM_FRAME = wxWindow::NewControlId();
230const int ID_MENU_ADD_WEBDATA = wxWindow::NewControlId();
231const int ID_MENU_LOAD_WMS_DATA = wxWindow::NewControlId();
232
233const wxString g_ProgName = _T("ToolMap");
234
235// define perspectives for auimanager
236enum tmPERSPECTIVE_MODE {
237 tmPERSPECTIVE_MODE_DEFAULT = 0,
238 tmPERSPECTIVE_MODE_VERTICAL,
239 tmPERSPECTIVE_MODE_HORIZONTAL
240};
241
242/***************************************************************************/
247class ToolMapApp : public wxApp {
248 private:
249 void _RemoveLogFile();
250
251 public:
252 ToolMapApp();
253
254 virtual bool OnInit();
255
256 virtual void OnFatalException();
257};
258
259DECLARE_APP(ToolMapApp);
260
261/***************************************************************************/
266class ToolMapFrame;
267
268class tmDropFiles : public wxFileDropTarget {
269 private:
270 ToolMapFrame* m_Frame;
271
272 public:
273 tmDropFiles(ToolMapFrame* parent);
274
275 virtual bool OnDropFiles(wxCoord x, wxCoord y, const wxArrayString& filenames);
276};
277
278/***************************************************************************/
285class ToolMapFrame : public wxFrame {
286 private:
287 wxMenuBar* m_MenuBar;
288 wxAcceleratorTable* m_MenuBarAcceleratorTable;
289
290 wxAuiManager* m_AuiManager;
291 AttribObjType_PANEL* m_AttribObjPanel;
292 Main_PANEL* m_MainPanel;
293 Queries_PANEL* m_QueriesPanel;
294 Shortcuts_PANEL* m_ShortCutPanel;
295 Snapping_PANEL* m_SnappingPanel;
296
297 ProjectManager* m_PManager;
298 MenuManager* m_MManager;
299
300 tmLayerManager* m_LayerManager;
301 tmScaleCtrlCombo* m_ScaleCombo;
302
303 tmAttributionManager* m_AttribManager;
304
305 tmEditManager* m_EditManager;
306 tmToolManager* m_ToolManager;
307 WebUpdateInformationBar* m_InfoBar;
308
309 tmStatsManager* m_StatManager;
310
311 wxLogWindow* m_LogWindow;
312 TocWindowDlgGen* m_TocWindow;
313 wxArrayString m_Perspectives;
314
315 void SaveAcceleratorTable();
316
317 void DisableAcceleratorTable(wxCommandEvent& event);
318
319 void EnableAcceleratorTable(wxCommandEvent& event);
320
321 void OnQuit(wxCommandEvent& event);
322
323 void OnClose(wxCloseEvent& event);
324
325 void OnAbout(wxCommandEvent& event);
326
327 void OnNewProject(wxCommandEvent& event);
328
329 void OnNewProjectExisting(wxCommandEvent& event);
330
331 void OnOpenProject(wxCommandEvent& event);
332
333 void OnOpenRecentProject(wxCommandEvent& event);
334
335 void OnEditProjectObjects(wxCommandEvent& event);
336
337 void OnEditProjectSettings(wxCommandEvent& event);
338
339 void OnEditObjectAttributes(wxCommandEvent& event);
340
341 void OnEditProject(wxCommandEvent& event);
342
343 void OnExportProjectModel(wxCommandEvent& event);
344
345 void OnLogWindow(wxCommandEvent& event);
346
347 void OnTocWindow(wxCommandEvent& event);
348
349 void OnShowObjectAttributionWindow(wxCommandEvent& event);
350
351 void OnShowQueriesWindow(wxCommandEvent& event);
352
353 void OnProjectBackup(wxCommandEvent& event);
354
355 void OnProjectBackupManage(wxCommandEvent& event);
356
357 void OnProjectSaveTemplate(wxCommandEvent& event);
358
359 void OnProjectMerge(wxCommandEvent& event);
360
361 void OnToolChanged(wxCommandEvent& event);
362
363 void OnZoomPrevious(wxCommandEvent& event);
364
365 void OnZoomToSelectedLayer(wxCommandEvent& event);
366
367 void OnZoomToFrame(wxCommandEvent& event);
368
369 void OnExportSelected(wxCommandEvent& event);
370
371 // void OnExportAll (wxCommandEvent & event);
372 void OnExportConcatenated(wxCommandEvent& event);
373
374 void OnShowShortcutWindow(wxCommandEvent& event);
375
376 void OnShowSnappingWindow(wxCommandEvent& event);
377
378 void OnShowSnappingOnMap(wxCommandEvent& event);
379
380 void OnEditSwitch(wxCommandEvent& event);
381
382 void OnEditDeleteSelected(wxCommandEvent& event);
383
384 void OnEditUndo(wxCommandEvent& event);
385
386 void OnCreateIntersections(wxCommandEvent& event);
387
388 void OnEditVertexPosition(wxCommandEvent& event);
389
390 void OnMergeSelectedLines(wxCommandEvent& event);
391
392 void OnShowAAttributionWindow(wxCommandEvent& event);
393
394 void OnAAttributionBatchWindow(wxCommandEvent& event);
395
396 void OnShowInformationDialog(wxCommandEvent& event);
397
398 void OnBezierSettings(wxCommandEvent& event);
399
400 // void OnMenuHighlightOn (wxMenuEvent & event);
401 // void OnMenuHighligntOff(wxMenuEvent & event);
402 void OnCheckUpdates(wxCommandEvent& event);
403
404 void OnContactUs(wxCommandEvent& event);
405
406 void OnImportGISData(wxCommandEvent& event);
407
408 void OnExportSelectedGISData(wxCommandEvent& event);
409
410 void OnUserManual(wxCommandEvent& event);
411
412 void OnFlipLine(wxCommandEvent& event);
413
414 void OnSmoothLine(wxCommandEvent& event);
415
416 void OnPreferences(wxCommandEvent& event);
417
418 void OnRefreshView(wxCommandEvent& event);
419
420 // selection
421 void OnSelectNone(wxCommandEvent& event);
422
423 void OnSelectByOid(wxCommandEvent& event);
424
425 void OnSelectInvert(wxCommandEvent& event);
426
427 // changing status function
428 void OnUpdateSelection(wxCommandEvent& event);
429
430 void OnEditObjectFrequency(wxCommandEvent& event);
431
432 // GIS functions
433 void OnAddGisData(wxCommandEvent& event);
434
435 void OnAddWebData(wxCommandEvent& event);
436
437 void OnLoadWMSData(wxCommandEvent& event);
438
439 void OnAddGroup(wxCommandEvent& event);
440
441 void OnShortcutAttributionDone(wxCommandEvent& event);
442
443 // ToolsFunction
444 void OnDanglingNodes(wxCommandEvent& event);
445
446 void OnGeometryValidity(wxCommandEvent& event);
447
448 void OnCloseManagedPane(wxAuiManagerEvent& event);
449
450 void OnStatisticsUpdate(wxCommandEvent& event);
451
452 void OnStatisticsDialog(wxCommandEvent& event);
453
454 // child event function
455 // void OnMenuZoomPreviousChange(wxCommandEvent & event);
456 void _CheckUpdates(bool ismanual = false);
457
458 // view layout
459 void OnLayoutDefault(wxCommandEvent& event);
460
461 void OnLayoutVertical(wxCommandEvent& event);
462
463 void OnLayoutHorizontal(wxCommandEvent& event);
464
465 // update menu functions
466 void OnUpdateMenuProject(wxUpdateUIEvent& event);
467
468 void OnUpdateMenuPreviousZoom(wxUpdateUIEvent& event);
469
470 void OnUpdateMenuEditUndo(wxUpdateUIEvent& event);
471
472 void OnUpdateMenuEditDraw(wxUpdateUIEvent& event);
473
474 void OnUpdateMenuEditModify(wxUpdateUIEvent& event);
475
476 void OnUpdateMenuEditBezierDraw(wxUpdateUIEvent& event);
477
478 void OnUpdateMenuEditBezierModify(wxUpdateUIEvent& event);
479
480 void OnUpdateMenuBezierSettings(wxUpdateUIEvent& event);
481
482 void OnUpdateMenuEditDelete(wxUpdateUIEvent& event);
483
484 void OnUpdateMenuVertexInsert(wxUpdateUIEvent& event);
485
486 void OnUpdateMenuVertexDelete(wxUpdateUIEvent& event);
487
488 void OnUpdateMenuEditMerge(wxUpdateUIEvent& event);
489
490 void OnUpdateMenuEditPointOrient(wxUpdateUIEvent& event);
491
492 void OnUpdateMenuEditClearSelection(wxUpdateUIEvent& event);
493
494 void OnUpdateMenuEditQueryRun(wxUpdateUIEvent& event);
495
496 void OnUpdateMenuEditQueryAdd(wxUpdateUIEvent& event);
497
498 void OnUpdateMenuSnappingShowPanel(wxUpdateUIEvent& event);
499
500 void OnUpdateMenuSnappingShowOnMap(wxUpdateUIEvent& event);
501
502 void OnUpdateMenuShowShortcuts(wxUpdateUIEvent& event);
503
504 void OnUpdateMenuShowQuery(wxUpdateUIEvent& event);
505
506 void OnUpdateMenuShowTOC(wxUpdateUIEvent& event);
507
508 void OnUpdateMenuShowLog(wxUpdateUIEvent& event);
509
510 void OnUpdateMenuShowInfo(wxUpdateUIEvent& event);
511
512 void OnUpdateMenuFlipLine(wxUpdateUIEvent& event);
513
514 void OnUpdateMenuSmoothLine(wxUpdateUIEvent& event);
515
516 void OnUpdateMenuEditSharedNode(wxUpdateUIEvent& event);
517
518 void OnUpdateStatisticsDialog(wxUpdateUIEvent& event);
519
520 void OnUpdateGeometryValidity(wxUpdateUIEvent& event);
521
522 void OnUpdateMenuZoomLayer(wxUpdateUIEvent& event);
523
524 void OnSysColourChanged(wxSysColourChangedEvent& event);
525
526 void _CreateMenu();
527
528 void _CreateToolBar();
529
530 void _LoadPreference(bool reload);
531
532 void _CreatePerspectives();
533
534 DECLARE_EVENT_TABLE();
535 DECLARE_DYNAMIC_CLASS(ToolMapFrame)
536
537 public:
538 ToolMapFrame();
539
540 ToolMapFrame(wxFrame* frame, const wxString& title, wxPoint pos, wxSize size, const wxString& name);
541
543
544 bool AddLayers(const wxArrayString& filenames);
545};
546
547#endif
Definition attribution_obj_type.h:71
Definition main_panel.h:36
Deals with Recent files.
Definition menumanager.h:47
Project operations (new, open,...)
Definition projectmanager.h:68
Display the Queries Panel.
Definition queries_panel.h:103
Definition shortcut_panel.h:87
The panel used for setting the snapping.
Definition snapping_panel.h:75
Definition tocwindow_dlg.h:78
Implement the Application.
Definition toolmap.h:247
All frame's related stuff.
Definition toolmap.h:285
Definition update.h:29
Central point for object attribution.
Definition tmattributionmanager.h:57
Definition toolmap.h:268
Deals with editing data.
Definition tmeditmanager.h:87
GIS class for dealing with layers.
Definition tmlayermanager.h:57
Definition tmscalectrl.h:31
Statistics manager, link event to data and database records.
Definition tmstats.h:60
Definition tmtoolmanager.h:34
Definition of the Log window dialog.
Deals with menu activation.
Definition of the Project definition dialog.
Deals with project operations.