source: git/src/mainfrm.h

walls-data-hanging-as-warning
Last change on this file was 36f0d86, checked in by Olly Betts <olly@…>, 4 years ago

[aven] Support colouring by survey style

  • Property mode set to 100644
File size: 20.8 KB
RevLine 
[5809313]1//
2//  mainfrm.h
3//
4//  Main frame handling for Aven.
5//
[f4c5932]6//  Copyright (C) 2000-2003,2005 Mark R. Shinwell
[672459c]7//  Copyright (C) 2001-2003,2004,2005,2006,2010,2011,2012,2013,2014,2015,2016,2018 Olly Betts
[5809313]8//
9//  This program is free software; you can redistribute it and/or modify
10//  it under the terms of the GNU General Public License as published by
11//  the Free Software Foundation; either version 2 of the License, or
12//  (at your option) any later version.
13//
14//  This program is distributed in the hope that it will be useful,
15//  but WITHOUT ANY WARRANTY; without even the implied warranty of
16//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17//  GNU General Public License for more details.
18//
19//  You should have received a copy of the GNU General Public License
20//  along with this program; if not, write to the Free Software
[ecbc6c18]21//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
[5809313]22//
23
24#ifndef mainfrm_h
25#define mainfrm_h
26
[3ddcad8]27#include "wx.h"
[0580c6a]28#include <wx/docview.h> // for m_FileHistory
[1690fa9]29#include <wx/listctrl.h>
[203d2a7]30#include <wx/notebook.h>
[ce403f1]31#include <wx/print.h>
32#include <wx/printdlg.h>
33
[156dc16]34#include "aventreectrl.h"
[db36155]35#include "gfxcore.h"
[5876fcb]36#include "guicontrol.h"
[a405bc1]37#include "img_hosted.h"
[381ae6e]38#include "labelinfo.h"
[db36155]39#include "message.h"
[bec42b2]40#include "model.h"
[db36155]41#include "vector3.h"
[5627cbb]42#include "aven.h"
[9c3d91e]43//#include "prefsdlg.h"
[156dc16]44
[137bf99]45#include <list>
[3ddcad8]46#include <vector>
[5809313]47
[137bf99]48using namespace std;
[5341d94]49
[f17e6dc6]50#include <math.h>
[f10cf8f]51#include <time.h>
[f17e6dc6]52
[562ca6a]53#ifdef __WXMAC__
[559cd60]54// Currently on macOS, we force use of a generic toolbar, which needs to be put
[562ca6a]55// in a sizer.
56# define USING_GENERIC_TOOLBAR
57#endif
58
[1690fa9]59#define MARK_FIRST 1
60#define MARK_NEXT 2
[128fac4]61#define MARK_PREV 3
[1690fa9]62
[137bf99]63enum {
[d7b53e3]64    menu_FILE_LOG = 1000,
[622460e]65    menu_FILE_OPEN_TERRAIN,
[d7b53e3]66    menu_FILE_PAGE_SETUP,
[045e2af]67    menu_FILE_SCREENSHOT,
[223f1ad]68    menu_FILE_EXPORT,
[549eb37]69    menu_FILE_EXTEND,
[1690fa9]70    menu_PRES_NEW,
71    menu_PRES_OPEN,
72    menu_PRES_SAVE,
73    menu_PRES_SAVE_AS,
74    menu_PRES_MARK,
[6a4cdcb6]75    menu_PRES_EXPORT_MOVIE,
[128fac4]76    menu_PRES_FREWIND,
77    menu_PRES_REWIND,
78    menu_PRES_REVERSE,
79    menu_PRES_PLAY,
80    menu_PRES_FF,
81    menu_PRES_FFF,
82    menu_PRES_PAUSE,
[137bf99]83    menu_ROTATION_START,
84    menu_ROTATION_STOP,
[2d9ed8ad]85    menu_ROTATION_TOGGLE,
[137bf99]86    menu_ROTATION_REVERSE,
87    menu_ORIENT_MOVE_NORTH,
88    menu_ORIENT_MOVE_EAST,
89    menu_ORIENT_MOVE_SOUTH,
90    menu_ORIENT_MOVE_WEST,
91    menu_ORIENT_PLAN,
92    menu_ORIENT_ELEVATION,
93    menu_ORIENT_DEFAULTS,
94    menu_VIEW_SHOW_LEGS,
[9cb97b7]95    menu_VIEW_SPLAYS,
[8666fc7]96    menu_SPLAYS_HIDE,
[b96edeb]97    menu_SPLAYS_SHOW_DASHED,
[8666fc7]98    menu_SPLAYS_SHOW_FADED,
[b49ac56]99    menu_SPLAYS_SHOW_NORMAL,
[e5c5f3c]100    menu_VIEW_DUPES,
101    menu_DUPES_HIDE,
102    menu_DUPES_SHOW_DASHED,
[b96edeb]103    menu_DUPES_SHOW_FADED,
[e5c5f3c]104    menu_DUPES_SHOW_NORMAL,
[137bf99]105    menu_VIEW_SHOW_CROSSES,
106    menu_VIEW_SHOW_NAMES,
107    menu_VIEW_SHOW_SURFACE,
108    menu_VIEW_SHOW_OVERLAPPING_NAMES,
[fe444b8]109    menu_VIEW_SHOW_ENTRANCES,
110    menu_VIEW_SHOW_FIXED_PTS,
111    menu_VIEW_SHOW_EXPORTED_PTS,
[137bf99]112    menu_VIEW_STATUS_BAR,
[c1cf79d]113    menu_VIEW_GRID,
[f4c5932]114    menu_VIEW_BOUNDING_BOX,
[4938bcd]115    menu_VIEW_TERRAIN,
[33b2094]116    menu_VIEW_SHOW_TUBES,
[6abab84]117    menu_VIEW_PERSPECTIVE,
[d67450e]118    menu_VIEW_SMOOTH_SHADING,
[a517825]119    menu_VIEW_TEXTURED,
[c60062d]120    menu_VIEW_FOG,
[db452ae]121    menu_VIEW_SMOOTH_LINES,
[b13aee4]122    menu_VIEW_FULLSCREEN,
[46beda0]123    menu_VIEW_COLOUR_BY,
124    menu_COLOUR_BY_DEPTH,
125    menu_COLOUR_BY_DATE,
126    menu_COLOUR_BY_ERROR,
[fc43dda]127    menu_COLOUR_BY_H_ERROR,
128    menu_COLOUR_BY_V_ERROR,
[46beda0]129    menu_COLOUR_BY_GRADIENT,
130    menu_COLOUR_BY_LENGTH,
[68fb07a]131    menu_COLOUR_BY_SURVEY,
[36f0d86]132    menu_COLOUR_BY_STYLE,
[7a36b67]133    menu_IND_COMPASS,
134    menu_IND_CLINO,
[97ea48d]135    menu_IND_COLOUR_KEY,
[7a36b67]136    menu_IND_SCALE_BAR,
137    menu_CTL_INDICATORS,
138    menu_CTL_SIDE_PANEL,
139    menu_CTL_METRIC,
140    menu_CTL_DEGREES,
[d171c0c]141    menu_CTL_PERCENT,
[7a36b67]142    menu_CTL_REVERSE,
143    menu_CTL_CANCEL_DIST_LINE,
[5e0b9f9d]144    menu_SURVEY_RESTRICT,
145    menu_SURVEY_SHOW_ALL,
[672459c]146    menu_SURVEY_HIDE,
147    menu_SURVEY_SHOW,
148    menu_SURVEY_HIDE_SIBLINGS,
[429465a]149    textctrl_FIND,
[1690fa9]150    button_HIDE,
151    listctrl_PRES
[137bf99]152};
153
[1c6b20d7]154class AvenPresList;
[fa42426]155
[373b738]156class MainFrm : public wxFrame, public Model {
157    wxFileHistory m_history;
158    int m_SashPosition;
159    bool was_showing_sidepanel_before_fullscreen;
[137bf99]160    GfxCore* m_Gfx;
[d7b53e3]161    wxWindow* m_Log;
[5876fcb]162    GUIControl* m_Control;
[156dc16]163    wxSplitterWindow* m_Splitter;
164    AvenTreeCtrl* m_Tree;
165    wxTextCtrl* m_FindBox;
[f315fa7]166    // wxCheckBox* m_RegexpCheckBox;
[203d2a7]167    wxNotebook* m_Notebook;
[1c6b20d7]168    AvenPresList* m_PresList;
[156dc16]169    wxString m_File;
[549eb37]170    // Processed version of data - same as m_File if m_File is processed data.
171    wxString m_FileProcessed;
[5e0b9f9d]172    wxString m_Survey;
[a6f081c]173
[7c29c976]174    // Strings for status bar reporting of distances.
[0633bcc]175    wxString here_text, coords_text, dist_text, distfree_text;
[7c29c976]176
[373b738]177    int m_NumHighlighted = 0;
[bc60689]178    bool pending_find;
179
[b75a37d]180    bool fullscreen_showing_menus;
181
[bc60689]182#ifdef PREFDLG
183    PrefsDlg* m_PrefsDlg;
184#endif
[eef68f9]185
[b88b171]186    bool ProcessSVXFile(const wxString & file);
[c61aa79]187//    void FixLRUD(traverse & centreline);
[137bf99]188
[9d3d8cc]189    void CreateMenuBar();
[242cb07]190    void MakeToolBar();
[9d3d8cc]191    void CreateSidePanel();
192
[7c29c976]193    void UpdateStatusBar();
194
[562ca6a]195#ifdef USING_GENERIC_TOOLBAR
196    wxToolBar * GetToolBar() const {
197        wxSizer * sizer = GetSizer();
198        if (!sizer) return NULL;
199        return (wxToolBar*)sizer->GetItem(size_t(0))->GetWindow();
200    }
201#endif
202
[137bf99]203public:
204    MainFrm(const wxString& title, const wxPoint& pos, const wxSize& size);
[5809313]205
[d7b53e3]206    // public for CavernLog.
207    bool LoadData(const wxString& file, const wxString& prefix);
208    void AddToFileHistory(const wxString & file);
209
[5e0b9f9d]210    void InitialiseAfterLoad(const wxString & file, const wxString & prefix);
[d7b53e3]211    void OnShowLog(wxCommandEvent& event);
[fb5887c]212
[732b9b0]213    void OnMRUFile(wxCommandEvent& event);
[5f06d2c]214    void OpenFile(const wxString& file, const wxString& survey = wxString());
[1690fa9]215
216    void OnPresNewUpdate(wxUpdateUIEvent& event);
217    void OnPresOpenUpdate(wxUpdateUIEvent& event);
218    void OnPresSaveUpdate(wxUpdateUIEvent& event);
219    void OnPresSaveAsUpdate(wxUpdateUIEvent& event);
220    void OnPresMarkUpdate(wxUpdateUIEvent& event);
[128fac4]221    void OnPresFRewindUpdate(wxUpdateUIEvent& event);
222    void OnPresRewindUpdate(wxUpdateUIEvent& event);
223    void OnPresReverseUpdate(wxUpdateUIEvent& event);
224    void OnPresPlayUpdate(wxUpdateUIEvent& event);
225    void OnPresFFUpdate(wxUpdateUIEvent& event);
226    void OnPresFFFUpdate(wxUpdateUIEvent& event);
227    void OnPresPauseUpdate(wxUpdateUIEvent& event);
228    void OnPresStopUpdate(wxUpdateUIEvent& event);
[6a4cdcb6]229    void OnPresExportMovieUpdate(wxUpdateUIEvent& event);
[622460e]230    void OnOpenTerrainUpdate(wxUpdateUIEvent& event);
[137bf99]231
[bc60689]232    void DoFind();
[2a02de2]233    void OnFind(wxCommandEvent& event);
[bc60689]234    void OnIdle(wxIdleEvent& event);
[d1628e8e]235    void OnGotoFound(wxCommandEvent& event);
[2a02de2]236    void OnHide(wxCommandEvent& event);
[429465a]237    void OnHideUpdate(wxUpdateUIEvent& ui);
[2a02de2]238
[5809313]239    void OnOpen(wxCommandEvent& event);
[622460e]240    void OnOpenTerrain(wxCommandEvent&);
[d7b53e3]241    void HideLog(wxWindow * log_window);
[045e2af]242    void OnScreenshot(wxCommandEvent& event);
243    void OnScreenshotUpdate(wxUpdateUIEvent& event);
[02c7c1a]244    void OnFilePreferences(wxCommandEvent& event);
[ce403f1]245    void OnPrint(wxCommandEvent& event);
[4ed8154]246    void PrintAndExit();
[ce403f1]247    void OnPageSetup(wxCommandEvent& event);
[1690fa9]248    void OnPresNew(wxCommandEvent& event);
249    void OnPresOpen(wxCommandEvent& event);
250    void OnPresSave(wxCommandEvent& event);
251    void OnPresSaveAs(wxCommandEvent& event);
252    void OnPresMark(wxCommandEvent& event);
[128fac4]253    void OnPresFRewind(wxCommandEvent& event);
254    void OnPresRewind(wxCommandEvent& event);
255    void OnPresReverse(wxCommandEvent& event);
256    void OnPresPlay(wxCommandEvent& event);
257    void OnPresFF(wxCommandEvent& event);
258    void OnPresFFF(wxCommandEvent& event);
259    void OnPresPause(wxCommandEvent& event);
260    void OnPresStop(wxCommandEvent& event);
[6a4cdcb6]261    void OnPresExportMovie(wxCommandEvent& event);
[223f1ad]262    void OnExport(wxCommandEvent& event);
[549eb37]263    void OnExtend(wxCommandEvent& event);
[5809313]264    void OnQuit(wxCommandEvent& event);
[5ffa439]265
[573f4e9]266    void OnAbout(wxCommandEvent& event);
[137bf99]267    void OnClose(wxCloseEvent&);
268
[b4fe9fb]269    void OnSetFocus(wxFocusEvent &) { if (m_Gfx) m_Gfx->SetFocus(); }
[4b1fc48]270
[26fac5a]271    void OnKeyPress(wxKeyEvent &e) {
272        if (m_Gfx) {
273            m_Gfx->SetFocus();
274            m_Gfx->OnKeyPress(e);
275        }
276    }
277
[4b2d207]278    void OnShowLogUpdate(wxUpdateUIEvent &ui) {
279        ui.Enable(m_Log != NULL || (m_Splitter->GetWindow1() != m_Gfx && m_Splitter->GetWindow2() != m_Gfx));
280        ui.Check(m_Log == NULL);
281    }
[ce403f1]282    void OnPrintUpdate(wxUpdateUIEvent &ui) { ui.Enable(!m_File.empty()); }
[223f1ad]283    void OnExportUpdate(wxUpdateUIEvent &ui) { ui.Enable(!m_File.empty()); }
[373b738]284    void OnExtendUpdate(wxUpdateUIEvent &ui) {
285        ui.Enable(!IsExtendedElevation());
286    }
[223f1ad]287
[137bf99]288    // temporary bodges until event handling problem is sorted out:
[5876fcb]289    void OnDefaultsUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnDefaultsUpdate(event); }
290    void OnPlanUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnPlanUpdate(event); }
291    void OnElevationUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnElevationUpdate(event); }
292    void OnDisplayOverlappingNamesUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnDisplayOverlappingNamesUpdate(event); }
[46beda0]293    void OnColourByUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnColourByUpdate(event); }
[da6c802]294    void OnColourByDepthUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnColourByDepthUpdate(event); }
[d4650b3]295    void OnColourByDateUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnColourByDateUpdate(event); }
[c61aa79]296    void OnColourByErrorUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnColourByErrorUpdate(event); }
[fc43dda]297    void OnColourByHErrorUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnColourByHErrorUpdate(event); }
298    void OnColourByVErrorUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnColourByVErrorUpdate(event); }
[cc9e2c65]299    void OnColourByGradientUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnColourByGradientUpdate(event); }
[af50685]300    void OnColourByLengthUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnColourByLengthUpdate(event); }
[68fb07a]301    void OnColourBySurveyUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnColourBySurveyUpdate(event); }
[36f0d86]302    void OnColourByStyleUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnColourByStyleUpdate(event); }
[5876fcb]303    void OnShowCrossesUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowCrossesUpdate(event); }
304    void OnShowEntrancesUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowEntrancesUpdate(event); }
305    void OnShowFixedPtsUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowFixedPtsUpdate(event); }
306    void OnShowExportedPtsUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowExportedPtsUpdate(event); }
307    void OnShowStationNamesUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowStationNamesUpdate(event); }
308    void OnShowSurveyLegsUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowSurveyLegsUpdate(event); }
[9cb97b7]309    void OnSplaysUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnSplaysUpdate(event); }
[8666fc7]310    void OnHideSplaysUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnHideSplaysUpdate(event); }
[b96edeb]311    void OnShowSplaysDashedUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowSplaysDashedUpdate(event); }
[8666fc7]312    void OnShowSplaysFadedUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowSplaysFadedUpdate(event); }
[b96edeb]313    void OnShowSplaysNormalUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowSplaysNormalUpdate(event); }
[e5c5f3c]314    void OnDupesUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnDupesUpdate(event); }
315    void OnHideDupesUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnHideDupesUpdate(event); }
316    void OnShowDupesDashedUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowDupesDashedUpdate(event); }
[b96edeb]317    void OnShowDupesFadedUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowDupesFadedUpdate(event); }
318    void OnShowDupesNormalUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowDupesNormalUpdate(event); }
[5876fcb]319    void OnShowSurfaceUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnShowSurfaceUpdate(event); }
320    void OnMoveEastUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnMoveEastUpdate(event); }
321    void OnMoveNorthUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnMoveNorthUpdate(event); }
322    void OnMoveSouthUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnMoveSouthUpdate(event); }
323    void OnMoveWestUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnMoveWestUpdate(event); }
324    void OnToggleRotationUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnToggleRotationUpdate(event); }
325    void OnReverseControlsUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnReverseControlsUpdate(event); }
326    void OnToggleScalebarUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnToggleScalebarUpdate(event); }
[97ea48d]327    void OnToggleColourKeyUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnToggleColourKeyUpdate(event); }
[5876fcb]328    void OnViewCompassUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnViewCompassUpdate(event); }
329    void OnViewGridUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnViewGridUpdate(event); }
[f4c5932]330    void OnViewBoundingBoxUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnViewBoundingBoxUpdate(event); }
[4938bcd]331    void OnViewTerrainUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnViewTerrainUpdate(event); }
[5876fcb]332    void OnViewClinoUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnViewClinoUpdate(event); }
[6abab84]333    void OnViewPerspectiveUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnViewPerspectiveUpdate(event); }
[d67450e]334    void OnViewSmoothShadingUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnViewSmoothShadingUpdate(event); }
[a517825]335    void OnViewTexturedUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnViewTexturedUpdate(event); }
[c60062d]336    void OnViewFogUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnViewFogUpdate(event); }
[db452ae]337    void OnViewSmoothLinesUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnViewSmoothLinesUpdate(event); }
[b13aee4]338    void OnViewFullScreenUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnViewFullScreenUpdate(event); }
[5876fcb]339    void OnReverseDirectionOfRotationUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnReverseDirectionOfRotationUpdate(event); }
340    void OnCancelDistLineUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnCancelDistLineUpdate(event); }
341    void OnIndicatorsUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnIndicatorsUpdate(event); }
342
[b4fe9fb]343    void OnDefaults(wxCommandEvent&) { if (m_Control) m_Control->OnDefaults(); }
344    void OnPlan(wxCommandEvent&) { if (m_Control) m_Control->OnPlan(); }
345    void OnElevation(wxCommandEvent&) { if (m_Control) m_Control->OnElevation(); }
346    void OnDisplayOverlappingNames(wxCommandEvent&) { if (m_Control) m_Control->OnDisplayOverlappingNames(); }
[da6c802]347    void OnColourByDepth(wxCommandEvent&) { if (m_Control) m_Control->OnColourByDepth(); }
[d4650b3]348    void OnColourByDate(wxCommandEvent&) { if (m_Control) m_Control->OnColourByDate(); }
[c61aa79]349    void OnColourByError(wxCommandEvent&) { if (m_Control) m_Control->OnColourByError(); }
[fc43dda]350    void OnColourByHError(wxCommandEvent&) { if (m_Control) m_Control->OnColourByHError(); }
351    void OnColourByVError(wxCommandEvent&) { if (m_Control) m_Control->OnColourByVError(); }
[cc9e2c65]352    void OnColourByGradient(wxCommandEvent&) { if (m_Control) m_Control->OnColourByGradient(); }
[af50685]353    void OnColourByLength(wxCommandEvent&) { if (m_Control) m_Control->OnColourByLength(); }
[68fb07a]354    void OnColourBySurvey(wxCommandEvent&) { if (m_Control) m_Control->OnColourBySurvey(); }
[36f0d86]355    void OnColourByStyle(wxCommandEvent&) { if (m_Control) m_Control->OnColourByStyle(); }
[b4fe9fb]356    void OnShowCrosses(wxCommandEvent&) { if (m_Control) m_Control->OnShowCrosses(); }
357    void OnShowEntrances(wxCommandEvent&) { if (m_Control) m_Control->OnShowEntrances(); }
358    void OnShowFixedPts(wxCommandEvent&) { if (m_Control) m_Control->OnShowFixedPts(); }
359    void OnShowExportedPts(wxCommandEvent&) { if (m_Control) m_Control->OnShowExportedPts(); }
360    void OnShowStationNames(wxCommandEvent&) { if (m_Control) m_Control->OnShowStationNames(); }
361    void OnShowSurveyLegs(wxCommandEvent&) { if (m_Control) m_Control->OnShowSurveyLegs(); }
[8666fc7]362    void OnHideSplays(wxCommandEvent&) { if (m_Control) m_Control->OnHideSplays(); }
[b96edeb]363    void OnShowSplaysDashed(wxCommandEvent&) { if (m_Control) m_Control->OnShowSplaysDashed(); }
[8666fc7]364    void OnShowSplaysFaded(wxCommandEvent&) { if (m_Control) m_Control->OnShowSplaysFaded(); }
[b96edeb]365    void OnShowSplaysNormal(wxCommandEvent&) { if (m_Control) m_Control->OnShowSplaysNormal(); }
[e5c5f3c]366    void OnHideDupes(wxCommandEvent&) { if (m_Control) m_Control->OnHideDupes(); }
367    void OnShowDupesDashed(wxCommandEvent&) { if (m_Control) m_Control->OnShowDupesDashed(); }
[b96edeb]368    void OnShowDupesFaded(wxCommandEvent&) { if (m_Control) m_Control->OnShowDupesFaded(); }
369    void OnShowDupesNormal(wxCommandEvent&) { if (m_Control) m_Control->OnShowDupesNormal(); }
[b4fe9fb]370    void OnShowSurface(wxCommandEvent&) { if (m_Control) m_Control->OnShowSurface(); }
371    void OnMoveEast(wxCommandEvent&) { if (m_Control) m_Control->OnMoveEast(); }
372    void OnMoveNorth(wxCommandEvent&) { if (m_Control) m_Control->OnMoveNorth(); }
373    void OnMoveSouth(wxCommandEvent&) { if (m_Control) m_Control->OnMoveSouth(); }
374    void OnMoveWest(wxCommandEvent&) { if (m_Control) m_Control->OnMoveWest(); }
375    void OnToggleRotation(wxCommandEvent&) { if (m_Control) m_Control->OnToggleRotation(); }
376    void OnReverseControls(wxCommandEvent&) { if (m_Control) m_Control->OnReverseControls(); }
377    void OnToggleScalebar(wxCommandEvent&) { if (m_Control) m_Control->OnToggleScalebar(); }
[97ea48d]378    void OnToggleColourKey(wxCommandEvent&) { if (m_Control) m_Control->OnToggleColourKey(); }
[b4fe9fb]379    void OnViewCompass(wxCommandEvent&) { if (m_Control) m_Control->OnViewCompass(); }
380    void OnViewClino(wxCommandEvent&) { if (m_Control) m_Control->OnViewClino(); }
381    void OnViewGrid(wxCommandEvent&) { if (m_Control) m_Control->OnViewGrid(); }
[f4c5932]382    void OnViewBoundingBox(wxCommandEvent&) { if (m_Control) m_Control->OnViewBoundingBox(); }
[4938bcd]383    void OnViewTerrain(wxCommandEvent&) { if (m_Control) m_Control->OnViewTerrain(); }
[6abab84]384    void OnViewPerspective(wxCommandEvent&) { if (m_Control) m_Control->OnViewPerspective(); }
[d67450e]385    void OnViewSmoothShading(wxCommandEvent&) { if (m_Control) m_Control->OnViewSmoothShading(); }
[a517825]386    void OnViewTextured(wxCommandEvent&) { if (m_Control) m_Control->OnViewTextured(); }
[c60062d]387    void OnViewFog(wxCommandEvent&) { if (m_Control) m_Control->OnViewFog(); }
[db452ae]388    void OnViewSmoothLines(wxCommandEvent&) { if (m_Control) m_Control->OnViewSmoothLines(); }
[c60062d]389    void OnViewFullScreen(wxCommandEvent&) { ViewFullScreen(); }
[fdfa926]390    void ViewFullScreen();
[b75a37d]391    bool FullScreenModeShowingMenus() const;
392    void FullScreenModeShowMenus(bool show);
[b4fe9fb]393    void OnReverseDirectionOfRotation(wxCommandEvent&) { if (m_Control) m_Control->OnReverseDirectionOfRotation(); }
394    void OnCancelDistLine(wxCommandEvent&) { if (m_Control) m_Control->OnCancelDistLine(); }
[421b7d2]395
[5876fcb]396    void OnToggleMetric(wxCommandEvent&) { if (m_Control) m_Control->OnToggleMetric(); }
397    void OnToggleDegrees(wxCommandEvent&) { if (m_Control) m_Control->OnToggleDegrees(); }
[d171c0c]398    void OnTogglePercent(wxCommandEvent&) { if (m_Control) m_Control->OnTogglePercent(); }
[33b2094]399    void OnToggleTubes(wxCommandEvent&) { if (m_Control) m_Control->OnToggleTubes(); }
[5757725]400
[5876fcb]401    void OnToggleMetricUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnToggleMetricUpdate(event); }
402    void OnToggleDegreesUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnToggleDegreesUpdate(event); }
[d171c0c]403    void OnTogglePercentUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnTogglePercentUpdate(event); }
[33b2094]404    void OnToggleTubesUpdate(wxUpdateUIEvent& event) { if (m_Control) m_Control->OnToggleTubesUpdate(event); }
[5757725]405
[5876fcb]406    // end of horrible bodges
[f433fda]407
[9059368]408    void OnViewSidePanelUpdate(wxUpdateUIEvent& event);
409    void OnViewSidePanel(wxCommandEvent& event);
[b1de3e0]410    void ToggleSidePanel();
[203d2a7]411    bool ShowingSidePanel();
[137bf99]412
[381ae6e]413    void SelectTreeItem(const LabelInfo* label) {
[6264918]414        if (label->tree_id.IsOk())
415            m_Tree->SelectItem(label->tree_id);
[381ae6e]416        else
417            m_Tree->UnselectAll();
[6264918]418    }
[381ae6e]419
[1fd2edb]420    void ClearTreeSelection();
421
[156dc16]422    void ClearCoords();
[d67450e]423    void SetCoords(const Vector3 &v);
[0633bcc]424    const LabelInfo * GetTreeSelection() const;
[381ae6e]425    void SetCoords(Double x, Double y, const LabelInfo * there);
426    void SetAltitude(Double z, const LabelInfo * there);
[156dc16]427
[381ae6e]428    void ShowInfo(const LabelInfo *here = NULL, const LabelInfo *there = NULL);
429    void DisplayTreeInfo(const wxTreeItemData* data = NULL);
[672459c]430    void TreeItemSelected(const wxTreeItemData* data);
[1690fa9]431    PresentationMark GetPresMark(int which);
[724cd64]432    bool Animating() const { return m_Gfx && m_Gfx->Animating(); }
[8bac36d6]433
[d5fd4f4]434    // Restrict to subsurvey `survey` (or show all if `survey` empty).
[86895ec]435    void RestrictTo(const wxString & survey);
[5e0b9f9d]436
[d5fd4f4]437    wxString GetSurvey() const { return m_Survey; }
438
[373b738]439    int GetNumHighlightedPts() const { return m_NumHighlighted; }
440
[1a46879]441    const SurveyFilter* GetTreeFilter() const { return m_Tree->GetFilter(); }
[672459c]442
443    // Used when the tree filters change.  FIXME: Overkill?
444    void ForceFullRedraw() {
445        m_Gfx->InvalidateAllLists();
446        m_Gfx->ForceRefresh();
447    }
448
[84cab34]449private:
450    DECLARE_EVENT_TABLE()
[5809313]451};
452
453#endif
Note: See TracBrowser for help on using the repository browser.