Ember
Loading...
Searching...
No Matches
PreferencesDialog.h
Go to the documentation of this file.
1#pragma once
2
14
16#include <wx/checkbox.h>
17#include <wx/choice.h>
18#include <wx/clrpicker.h>
19#include <wx/scrolwin.h>
20#include <wx/slider.h>
21#include <wx/spinctrl.h>
22#include <wx/splitter.h>
23#include <wx/treectrl.h>
24#include <wx/wx.h>
25
35 public:
36 explicit PreferencesDialog(wxWindow *parent);
37 ~PreferencesDialog() = default;
38
44 bool SelectSection(const wxString &sectionName);
45
46 private:
47 // UI Creation methods
48 void CreateLayout();
51
52 // Section panel creation methods
53 wxPanel *CreateWindowSettings(wxWindow *parent);
54 wxPanel *CreateMainPanelSettings(wxWindow *parent);
55 wxPanel *CreateBehaviorTreeViewSettings(wxWindow *parent);
56 wxPanel *CreateBottomPanelSettings(wxWindow *parent);
57 wxPanel *CreateFileExplorerTabSettings(wxWindow *parent);
58 wxPanel *CreateLogTabSettings(wxWindow *parent);
59 wxPanel *CreateSidePanelSettings(wxWindow *parent);
60 wxPanel *CreateLeftPanelSettings(wxWindow *parent);
61 wxPanel *CreateRightPanelSettings(wxWindow *parent);
62 wxPanel *CreateTabsSubSettings(wxWindow *parent);
63 wxPanel *CreateParserSettings(wxWindow *parent);
64 wxPanel *CreatePerformanceSettings(wxWindow *parent);
65
66 // Event handlers
67 void OnSectionSelected(wxTreeEvent &event);
68 void OnOK(wxCommandEvent &event);
69 void OnCancel(wxCommandEvent &event);
70 void OnApply(wxCommandEvent &event);
71 void OnRestoreDefaults(wxCommandEvent &event);
72 void OnConfigureParser(wxCommandEvent &event);
73 void OnZoomSliderChanged(wxCommandEvent &event);
74 void OnMouseWheelSensitivityChanged(wxCommandEvent &event);
75 void OnPanSensitivityChanged(wxCommandEvent &event);
76 void OnStartPathModeChanged(wxCommandEvent &event);
77 void OnBrowseStartPath(wxCommandEvent &event);
78 void OnPanSmoothnessChanged(wxCommandEvent &event);
79 void OnPanStepSizeChanged(wxCommandEvent &event);
80 void OnMaxWindowUnlimitedChanged(wxCommandEvent &event);
81 void OnMaxScenesUnlimitedChanged(wxCommandEvent &event);
82 void OnBottomPanelHeightEnabledChanged(wxCommandEvent &event);
83 void OnBottomPanelMinHeightEnabledChanged(wxCommandEvent &event);
84 void OnLeftPanelWidthEnabledChanged(wxCommandEvent &event);
85 void OnLeftPanelMinWidthEnabledChanged(wxCommandEvent &event);
86 void OnRightPanelWidthEnabledChanged(wxCommandEvent &event);
87 void OnRightPanelMinWidthEnabledChanged(wxCommandEvent &event);
88 void OnHotkeyCaptureClicked(wxCommandEvent &event);
89 void OnHotkeyTextKeyDown(wxKeyEvent &event);
90 void OnDialogMouseDown(wxMouseEvent &event);
91 void OnSliderMouseWheel(wxMouseEvent &event);
92
93 // Settings management
95 void ApplySettings();
96 void RestoreDefaults();
97 void ShowPanel(wxPanel *panel);
98
99 // UI Components
100 wxSplitterWindow *m_splitter;
101 wxTreeCtrl *m_sectionTree;
102 wxScrolledWindow *m_settingsPanel;
103 wxBoxSizer *m_settingsSizer;
104
105 // Section panels (created once, shown/hidden as needed)
112 wxPanel *m_sidePanelPanel; // Global side panel settings (parent node)
113 wxPanel *m_leftPanelPanel; // Left panel specific settings
114 wxPanel *m_rightPanelPanel; // Right panel specific settings
115 wxPanel *m_tabsSubPanel; // Submenu for Tabs (Scene Hierarchy, etc.)
118
119 // Window Settings Controls
120 wxChoice *m_themeChoice;
121 wxColourPickerCtrl *m_accentColorPicker;
123 // File menu hotkeys
134
135 // View menu hotkeys
140
141 // Settings menu hotkeys
146
147 // Window appearance
148 wxCheckBox *m_showStatusBar;
150 wxCheckBox *m_alwaysOnTop;
151
152 // Window constraints
153 wxSpinCtrl *m_minWindowWidth;
154 wxSpinCtrl *m_minWindowHeight;
155 wxSpinCtrl *m_maxWindowWidth;
156 wxSpinCtrl *m_maxWindowHeight;
161
162 // Main Panel Settings Controls
164 wxStaticText *m_zoomLabel;
165 wxCheckBox *m_showGrid;
166 wxSpinCtrl *m_gridSize;
167 wxColourPickerCtrl *m_gridBackgroundPicker;
168 wxColourPickerCtrl *m_gridLineColorPicker;
169 wxColourPickerCtrl *m_canvasBackgroundPicker;
170 wxColourPickerCtrl *m_connectionLineColorPicker;
172 wxColourPickerCtrl *m_pathHighlightColorPicker;
173 wxColourPickerCtrl *m_idleNodeBgColorPicker;
174 wxColourPickerCtrl *m_idleNodeBorderColorPicker;
175 wxColourPickerCtrl *m_idleNodeTextColorPicker;
180 wxColourPickerCtrl *m_selectedNodeColorPicker;
181 wxColourPickerCtrl *m_hoveredNodeColorPicker;
182 wxColourPickerCtrl *m_selectedNodeTextColorPicker;
183 wxColourPickerCtrl *m_hoveredNodeTextColorPicker;
184 wxColourPickerCtrl *m_selectedNodeInfoColorPicker;
185 wxColourPickerCtrl *m_hoveredNodeInfoColorPicker;
186 wxSpinCtrl *m_maxScenes;
193
194 // Behavior Tree View Settings Controls
195 wxSlider *m_zoomStepSize;
196 wxStaticText *m_zoomStepSizeLabel;
204 wxTextCtrl *m_panKeyTextCtrl;
208 wxStaticText *m_panSmoothnessLabel;
209 wxSlider *m_panStepSize;
210 wxStaticText *m_panStepSizeLabel;
223
224 // Debug Text Settings - Coordinate System Info
227 wxColourPickerCtrl *m_coordinateInfoColorPicker;
229 wxSpinCtrl *m_coordinateInfoX;
230 wxSpinCtrl *m_coordinateInfoY;
231
232 // Debug Text Settings - Selected Node Info
239
240 // Debug Text Settings - Tree Statistics Info
241 wxCheckBox *m_showTreeInfo;
243 wxColourPickerCtrl *m_treeInfoColorPicker;
245 wxSpinCtrl *m_treeInfoX;
246 wxSpinCtrl *m_treeInfoY;
247
248 // Debug Text Settings - FPS Display
249 wxCheckBox *m_showFPS;
250 wxSpinCtrl *m_fpsFontSize;
251 wxColourPickerCtrl *m_fpsColorPicker;
252 wxChoice *m_fpsAnchor;
253 wxSpinCtrl *m_fpsX;
254 wxSpinCtrl *m_fpsY;
255
256 // Debug Text Settings - Controls Help Text
259 wxColourPickerCtrl *m_controlsHelpColorPicker;
261 wxSpinCtrl *m_controlsHelpX;
262 wxSpinCtrl *m_controlsHelpY;
263
264 // Bottom Panel Settings Controls
271 wxCheckBox *m_rememberLastTab;
273
274 // File Explorer Tab General Settings Controls
275 wxCheckBox *m_showBreadcrumb;
276 wxCheckBox *m_showHistory;
278 wxTextCtrl *m_customStartPath;
280
281 // Tree View Settings Controls
285 wxChoice *m_treeItemSize;
286
287 // Grid View Settings Controls
291 wxChoice *m_gridIconSize;
292
293 // Log Tab Settings Controls
296 wxSpinCtrl *m_logMaxEntries;
297 wxChoice *m_logFontSize;
300 wxColourPickerCtrl *m_logTraceColor;
301 wxColourPickerCtrl *m_logInfoColor;
302 wxColourPickerCtrl *m_logWarningColor;
303 wxColourPickerCtrl *m_logErrorColor;
304 wxColourPickerCtrl *m_logCriticalColor;
305
306 // Side Panel Settings Controls (global - currently empty)
307
308 // Left Panel Settings Controls
310 wxSpinCtrl *m_leftPanelWidth;
317
318 // Right Panel Settings Controls
320 wxSpinCtrl *m_rightPanelWidth;
327
328 // Parser Settings Controls
330 wxChoice *m_fileEncoding;
333
334 // Performance Settings Controls
335 wxCheckBox *m_enableVSync;
336 wxChoice *m_fpsLimit;
346
347 // Buttons
348 wxButton *m_okButton;
349 wxButton *m_cancelButton;
350 wxButton *m_applyButton;
352
353 // Mouse capture tracking
355
357
358 // Control IDs
359 enum {
364
365 // Window settings
388
389 // Main panel settings
413
414 // Behavior tree view settings
438
439 // Debug text settings - Coordinate System Info
445
446 // Debug text settings - Selected Node Info
452
453 // Debug text settings - Tree Statistics Info
459
460 // Debug text settings - Controls Help Text
466
467 // Bottom panel settings
470
471 // Tree View IDs
476
477 // Grid View IDs
482
483 // File Explorer General IDs
487
488 // Left panel settings
491
492 // Right panel settings
495
496 // Scene Hierarchy Tab settings
501
502 // Parser settings
506
507 // Performance settings
517 };
518};
DPI-aware dialog base class for scalable layouts.
wxTextCtrl * m_customStartPath
wxSlider * m_hoveredNodeBgTint
wxCheckBox * m_treeShowHiddenFiles
wxCheckBox * m_rightPanelShowTabCloseButtons
wxButton * m_preferencesHotkeyCaptureButton
void CreateSectionList()
wxPanel * CreateParserSettings(wxWindow *parent)
wxCheckBox * m_allowPanelCollapse
wxCheckBox * m_zoomFollowsCursor
wxSpinCtrl * m_coordinateInfoX
wxColourPickerCtrl * m_coordinateInfoColorPicker
wxChoice * m_startupModeChoice
wxCheckBox * m_rightPanelWidthEnabled
wxCheckBox * m_showPanelCaptions
wxCheckBox * m_leftPanelRememberLastTab
void OnCancel(wxCommandEvent &event)
wxBoxSizer * m_settingsSizer
wxCheckBox * m_logAutoScrollEnabled
wxCheckBox * m_leftPanelWidthEnabled
wxColourPickerCtrl * m_hoveredNodeTextColorPicker
wxColourPickerCtrl * m_treeInfoColorPicker
void OnLeftPanelMinWidthEnabledChanged(wxCommandEvent &event)
wxTextCtrl * m_panUpHotkeyTextCtrl
wxChoice * m_rightPanelStartup
wxPanel * CreateRightPanelSettings(wxWindow *parent)
wxSpinCtrl * m_minWindowHeight
wxColourPickerCtrl * m_logErrorColor
wxButton * m_previousSceneHotkeyCaptureButton
wxSpinCtrl * m_bottomPanelMinHeight
wxChoice * m_selectedNodeInfoAnchor
wxCheckBox * m_enableAntiAliasing
wxCheckBox * m_bottomPanelMinHeightEnabled
wxPanel * CreateLogTabSettings(wxWindow *parent)
void OnPanSensitivityChanged(wxCommandEvent &event)
wxTextCtrl * m_aspectRatioHeight
void OnApply(wxCommandEvent &event)
wxStaticText * m_hoveredNodeBgTintLabel
wxColourPickerCtrl * m_canvasBackgroundPicker
wxCheckBox * m_showTreeInfo
wxCheckBox * m_logEnableGuiColors
wxButton * m_panRightHotkeyCaptureButton
void OnDialogMouseDown(wxMouseEvent &event)
wxSpinCtrl * m_rightPanelMinWidth
wxButton * m_centerOnNodeHotkeyCaptureButton
wxCheckBox * m_autoLoadLastFile
wxTextCtrl * m_preferencesHotkeyTextCtrl
wxButton * m_maximizeHotkeyCaptureButton
wxButton * m_nextSceneHotkeyCaptureButton
wxCheckBox * m_leftPanelMinWidthEnabled
wxColourPickerCtrl * m_controlsHelpColorPicker
wxSpinCtrl * m_controlsHelpFontSize
void OnBrowseStartPath(wxCommandEvent &event)
wxStaticText * m_panSmoothnessLabel
wxCheckBox * m_showControlsHelp
wxCheckBox * m_showSelectedNodeInfo
void OnPanSmoothnessChanged(wxCommandEvent &event)
wxColourPickerCtrl * m_logInfoColor
wxColourPickerCtrl * m_gridBackgroundPicker
wxTextCtrl * m_centerOnNodeHotkeyTextCtrl
void ShowPanel(wxPanel *panel)
wxCheckBox * m_showHistory
wxTextCtrl * m_previousSceneHotkeyTextCtrl
wxStaticText * m_selectedNodeBgTintLabel
wxChoice * m_controlsHelpAnchor
wxColourPickerCtrl * m_logTraceColor
wxColourPickerCtrl * m_idleNodeTextColorPicker
wxButton * m_resetViewHotkeyCaptureButton
wxColourPickerCtrl * m_hoveredNodeColorPicker
wxCheckBox * m_showCoordinateInfo
wxCheckBox * m_maxScenesUnlimited
wxCheckBox * m_hardwareAcceleration
wxSpinCtrl * m_coordinateInfoFontSize
wxColourPickerCtrl * m_idleNodeBorderColorPicker
wxButton * m_newProjectHotkeyCaptureButton
wxCheckBox * m_alwaysOnTop
void OnPanStepSizeChanged(wxCommandEvent &event)
wxButton * m_panLeftHotkeyCaptureButton
void OnMaxScenesUnlimitedChanged(wxCommandEvent &event)
wxSpinCtrl * m_controlsHelpX
wxButton * m_panUpHotkeyCaptureButton
wxButton * m_configureParserButton
PreferencesDialog(wxWindow *parent)
wxCheckBox * m_rightPanelMinWidthEnabled
wxChoice * m_coordinateInfoAnchor
wxSpinCtrl * m_selectedNodeInfoY
wxSpinCtrl * m_maxWindowWidth
wxSpinCtrl * m_selectedNodeInfoX
wxButton * m_panKeyCaptureButton
wxColourPickerCtrl * m_pathHighlightColorPicker
wxTextCtrl * m_parserConfigHotkeyTextCtrl
wxTextCtrl * m_maximizeHotkeyTextCtrl
wxCheckBox * m_leftPanelShowTabCloseButtons
wxSpinCtrl * m_selectedNodeInfoFontSize
wxStaticText * m_zoomStepSizeLabel
wxCheckBox * m_enforceAspectRatio
wxStaticText * m_mouseWheelSensitivityLabel
wxCheckBox * m_treeShowFileExtensions
wxCheckBox * m_enableIdleProcessing
void OnMaxWindowUnlimitedChanged(wxCommandEvent &event)
wxPanel * CreateTabsSubSettings(wxWindow *parent)
void OnStartPathModeChanged(wxCommandEvent &event)
wxCheckBox * m_highlightPathToSelected
wxTextCtrl * m_panDownHotkeyTextCtrl
wxCheckBox * m_showParseWarnings
wxCheckBox * m_bottomPanelHeightEnabled
wxSlider * m_mouseWheelSensitivity
wxButton * m_parserConfigHotkeyCaptureButton
void OnHotkeyTextKeyDown(wxKeyEvent &event)
wxColourPickerCtrl * m_logCriticalColor
void OnHotkeyCaptureClicked(wxCommandEvent &event)
void OnSectionSelected(wxTreeEvent &event)
wxColourPickerCtrl * m_hoveredNodeInfoColorPicker
wxCheckBox * m_enableTextAntiAliasing
wxCheckBox * m_enableVSync
wxStaticText * m_panStepSizeLabel
wxSpinCtrl * m_rightPanelWidth
wxButton * m_resetUIHotkeyCaptureButton
void OnOK(wxCommandEvent &event)
wxButton * m_openFileHotkeyCaptureButton
wxColourPickerCtrl * m_fpsColorPicker
wxCheckBox * m_logEnableConsoleColors
wxPanel * CreatePerformanceSettings(wxWindow *parent)
wxSlider * m_selectedNodeBgTint
wxTextCtrl * m_panLeftHotkeyTextCtrl
wxButton * m_deleteNodeHotkeyCaptureButton
wxTextCtrl * m_openProjectHotkeyTextCtrl
void OnRightPanelMinWidthEnabledChanged(wxCommandEvent &event)
wxPanel * CreateBehaviorTreeViewSettings(wxWindow *parent)
wxTextCtrl * m_saveAsHotkeyTextCtrl
wxCheckBox * m_leftPanelAllowCollapse
wxTextCtrl * m_panKeyTextCtrl
wxCheckBox * m_enableDoubleBuffering
~PreferencesDialog()=default
wxCheckBox * m_maxWindowUnlimited
bool SelectSection(const wxString &sectionName)
Select a section in the preferences tree by name.
wxColourPickerCtrl * m_selectedNodeInfoColorPicker
wxPanel * CreateMainPanelSettings(wxWindow *parent)
wxCheckBox * m_enableBackgroundErase
void OnBottomPanelHeightEnabledChanged(wxCommandEvent &event)
wxPanel * CreateBottomPanelSettings(wxWindow *parent)
wxStaticText * m_panSensitivityLabel
wxSpinCtrl * m_leftPanelMinWidth
wxPanel * CreateSidePanelSettings(wxWindow *parent)
wxCheckBox * m_gridShowFileExtensions
wxPanel * m_behaviorTreeViewPanel
wxColourPickerCtrl * m_accentColorPicker
wxTextCtrl * m_capturingTextCtrl
wxChoice * m_closeConfirmation
wxTextCtrl * m_resetViewHotkeyTextCtrl
wxColourPickerCtrl * m_selectedNodeDebugInfoColorPicker
wxColourPickerCtrl * m_selectedNodeTextColorPicker
wxScrolledWindow * m_settingsPanel
wxButton * m_openProjectHotkeyCaptureButton
wxSpinCtrl * m_coordinateInfoY
void OnLeftPanelWidthEnabledChanged(wxCommandEvent &event)
wxCheckBox * m_showTabCloseButtons
wxTextCtrl * m_resetUIHotkeyTextCtrl
wxButton * m_panDownHotkeyCaptureButton
wxColourPickerCtrl * m_selectedNodeColorPicker
wxButton * m_restoreDefaultsButton
wxButton * m_saveAsHotkeyCaptureButton
wxTextCtrl * m_nextSceneHotkeyTextCtrl
wxCheckBox * m_gridShowHiddenFiles
wxSpinCtrl * m_minWindowWidth
wxTextCtrl * m_panRightHotkeyTextCtrl
wxChoice * m_bottomPanelStartup
wxSpinCtrl * m_fpsFontSize
wxTextCtrl * m_saveHotkeyTextCtrl
void OnZoomSliderChanged(wxCommandEvent &event)
void OnBottomPanelMinHeightEnabledChanged(wxCommandEvent &event)
wxSpinCtrl * m_maxWindowHeight
wxSplitterWindow * m_splitter
wxSpinCtrl * m_viewportCullingMargin
wxSpinCtrl * m_controlsHelpY
wxSpinCtrl * m_leftPanelWidth
wxTextCtrl * m_newProjectHotkeyTextCtrl
wxSlider * m_defaultZoomSlider
wxColourPickerCtrl * m_idleNodeBgColorPicker
wxColourPickerCtrl * m_logWarningColor
wxButton * m_saveHotkeyCaptureButton
wxCheckBox * m_showStatusBar
wxTextCtrl * m_aspectRatioWidth
wxPanel * CreateFileExplorerTabSettings(wxWindow *parent)
wxChoice * m_leftPanelStartup
wxTreeCtrl * m_sectionTree
wxTextCtrl * m_openFileHotkeyTextCtrl
void OnConfigureParser(wxCommandEvent &event)
wxCheckBox * m_enableSmoothPanning
wxCheckBox * m_rightPanelAllowCollapse
wxColourPickerCtrl * m_gridLineColorPicker
wxTextCtrl * m_deleteNodeHotkeyTextCtrl
wxCheckBox * m_rightPanelRememberLastTab
wxStaticText * m_zoomLabel
wxSpinCtrl * m_treeInfoFontSize
wxCheckBox * m_showBreadcrumb
void OnRightPanelWidthEnabledChanged(wxCommandEvent &event)
void OnMouseWheelSensitivityChanged(wxCommandEvent &event)
wxCheckBox * m_rememberLastTab
void OnRestoreDefaults(wxCommandEvent &event)
wxCheckBox * m_enableViewportCulling
wxSpinCtrl * m_bottomPanelHeight
wxCheckBox * m_enablePartialRedraws
wxPanel * CreateLeftPanelSettings(wxWindow *parent)
wxSpinCtrl * m_logMaxEntries
wxColourPickerCtrl * m_connectionLineColorPicker
void OnSliderMouseWheel(wxMouseEvent &event)
wxPanel * CreateWindowSettings(wxWindow *parent)
wxChoice * m_logDefaultLevelFilter