356 wxPanel *panel =
new wxPanel(parent, wxID_ANY);
357 panel->SetBackgroundColour(wxColour(50, 50, 50));
358 wxBoxSizer *panelSizer =
new wxBoxSizer(wxVERTICAL);
361 wxStaticBoxSizer *appearanceGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Appearance");
364 wxBoxSizer *themeSizer =
new wxBoxSizer(wxHORIZONTAL);
365 wxStaticText *themeLabel =
new wxStaticText(panel, wxID_ANY,
"Theme:");
366 themeLabel->SetForegroundColour(wxColour(200, 200, 200));
367 themeSizer->Add(themeLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
369 wxArrayString themes;
371 themes.Add(
"Light (Not Implemented)");
374 appearanceGroup->Add(themeSizer, 0, wxEXPAND | wxALL, 5);
377 wxBoxSizer *accentSizer =
new wxBoxSizer(wxHORIZONTAL);
378 wxStaticText *accentLabel =
new wxStaticText(panel, wxID_ANY,
"Accent Color:");
379 accentLabel->SetForegroundColour(wxColour(200, 200, 200));
380 accentSizer->Add(accentLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
384 appearanceGroup->Add(accentSizer, 0, wxEXPAND | wxALL, 5);
386 panelSizer->Add(appearanceGroup, 0, wxEXPAND | wxALL, 5);
389 wxStaticBoxSizer *startupGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Startup");
391 wxBoxSizer *startupModeSizer =
new wxBoxSizer(wxHORIZONTAL);
392 wxStaticText *startupModeLabel =
new wxStaticText(panel, wxID_ANY,
"Window mode on startup:");
393 startupModeLabel->SetForegroundColour(wxColour(200, 200, 200));
394 startupModeSizer->Add(startupModeLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
396 wxArrayString startupModes;
397 startupModes.Add(
"Normal");
398 startupModes.Add(
"Maximized");
401 startupGroup->Add(startupModeSizer, 0, wxEXPAND | wxALL, 5);
403 panelSizer->Add(startupGroup, 0, wxEXPAND | wxALL, 5);
406 wxStaticBoxSizer *fileHotkeysGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"File Menu Hotkeys");
409 auto createHotkeyRow = [&](
const wxString &labelText, wxTextCtrl *&textCtrl, wxButton *&captureBtn) {
410 wxBoxSizer *sizer =
new wxBoxSizer(wxHORIZONTAL);
411 wxStaticText *label =
new wxStaticText(panel, wxID_ANY, labelText, wxDefaultPosition, wxSize(120, -1));
412 label->SetForegroundColour(wxColour(200, 200, 200));
413 sizer->Add(label, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
415 textCtrl =
new wxTextCtrl(panel, wxID_ANY,
"", wxDefaultPosition, wxSize(150, -1), wxTE_READONLY);
416 textCtrl->SetBackgroundColour(wxColour(60, 60, 60));
417 textCtrl->SetForegroundColour(wxColour(200, 200, 200));
419 textCtrl->Bind(wxEVT_LEFT_DOWN, [](wxMouseEvent &e) { });
420 sizer->Add(textCtrl, 1, wxEXPAND);
422 captureBtn =
new wxButton(panel, wxID_ANY,
"Capture", wxDefaultPosition, wxSize(80, -1));
424 sizer->Add(captureBtn, 0, wxLEFT, 5);
430 0, wxEXPAND | wxALL, 3);
431 fileHotkeysGroup->Add(
433 wxEXPAND | wxALL, 3);
435 wxEXPAND | wxALL, 3);
437 wxEXPAND | wxALL, 3);
439 wxEXPAND | wxALL, 3);
441 panelSizer->Add(fileHotkeysGroup, 0, wxEXPAND | wxALL, 5);
444 wxStaticBoxSizer *viewHotkeysGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"View Menu Hotkeys");
446 wxEXPAND | wxALL, 3);
448 wxEXPAND | wxALL, 3);
450 panelSizer->Add(viewHotkeysGroup, 0, wxEXPAND | wxALL, 5);
453 wxStaticBoxSizer *settingsHotkeysGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Settings Menu Hotkeys");
454 settingsHotkeysGroup->Add(
456 wxEXPAND | wxALL, 3);
457 settingsHotkeysGroup->Add(
459 wxEXPAND | wxALL, 3);
461 panelSizer->Add(settingsHotkeysGroup, 0, wxEXPAND | wxALL, 5);
464 wxStaticBoxSizer *windowAppearanceGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Window Appearance");
469 m_showStatusBar->SetToolTip(
"Display the status bar at the bottom of the window");
475 m_showPanelCaptions->SetToolTip(
"Display caption headers above panels (Left Panel, Right Panel, etc.)");
481 m_alwaysOnTop->SetToolTip(
"Keep window above all other windows");
484 panelSizer->Add(windowAppearanceGroup, 0, wxEXPAND | wxALL, 5);
487 wxStaticBoxSizer *constraintsGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Window Constraints");
490 wxStaticText *minSizeLabel =
new wxStaticText(panel, wxID_ANY,
"Minimum Window Size (% of screen):");
491 minSizeLabel->SetForegroundColour(wxColour(200, 200, 200));
492 constraintsGroup->Add(minSizeLabel, 0, wxALL, 5);
494 wxBoxSizer *minSizeSizer =
new wxBoxSizer(wxHORIZONTAL);
495 wxStaticText *minWidthLabel =
new wxStaticText(panel, wxID_ANY,
"Width %:");
496 minWidthLabel->SetForegroundColour(wxColour(200, 200, 200));
497 minSizeSizer->Add(minWidthLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
500 wxSP_ARROW_KEYS, 10, 100, 42);
501 minSizeSizer->Add(
m_minWindowWidth, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
503 wxStaticText *minHeightLabel =
new wxStaticText(panel, wxID_ANY,
"Height %:");
504 minHeightLabel->SetForegroundColour(wxColour(200, 200, 200));
505 minSizeSizer->Add(minHeightLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
508 wxSP_ARROW_KEYS, 10, 100, 56);
511 constraintsGroup->Add(minSizeSizer, 0, wxEXPAND | wxALL, 5);
514 wxStaticText *maxSizeLabel =
new wxStaticText(panel, wxID_ANY,
"Maximum Window Size (% of screen):");
515 maxSizeLabel->SetForegroundColour(wxColour(200, 200, 200));
516 constraintsGroup->Add(maxSizeLabel, 0, wxALL, 5);
522 wxBoxSizer *maxSizeSizer =
new wxBoxSizer(wxHORIZONTAL);
523 wxStaticText *maxWidthLabel =
new wxStaticText(panel, wxID_ANY,
"Width %:");
524 maxWidthLabel->SetForegroundColour(wxColour(200, 200, 200));
525 maxSizeSizer->Add(maxWidthLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
528 wxSP_ARROW_KEYS, -1, 100, -1);
529 maxSizeSizer->Add(
m_maxWindowWidth, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
531 wxStaticText *maxHeightLabel =
new wxStaticText(panel, wxID_ANY,
"Height %:");
532 maxHeightLabel->SetForegroundColour(wxColour(200, 200, 200));
533 maxSizeSizer->Add(maxHeightLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
536 wxSP_ARROW_KEYS, -1, 100, -1);
539 constraintsGroup->Add(maxSizeSizer, 0, wxEXPAND | wxALL, 5);
547 wxBoxSizer *aspectRatioSizer =
new wxBoxSizer(wxHORIZONTAL);
548 wxStaticText *aspectLabel =
new wxStaticText(panel, wxID_ANY,
"Aspect Ratio:");
549 aspectLabel->SetForegroundColour(wxColour(200, 200, 200));
550 aspectRatioSizer->Add(aspectLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
555 wxStaticText *aspectColon =
new wxStaticText(panel, wxID_ANY,
":");
556 aspectColon->SetForegroundColour(wxColour(200, 200, 200));
557 aspectRatioSizer->Add(aspectColon, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
562 wxStaticText *aspectNote =
new wxStaticText(panel, wxID_ANY,
"(e.g., 16:9, 4:3, 21:9)");
563 aspectNote->SetForegroundColour(wxColour(150, 150, 150));
564 aspectRatioSizer->Add(aspectNote, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 10);
566 constraintsGroup->Add(aspectRatioSizer, 0, wxEXPAND | wxALL, 5);
568 panelSizer->Add(constraintsGroup, 0, wxEXPAND | wxALL, 5);
569 panelSizer->AddStretchSpacer();
571 panel->SetSizer(panelSizer);
686 wxPanel *panel =
new wxPanel(parent, wxID_ANY);
687 panel->SetBackgroundColour(wxColour(50, 50, 50));
688 wxBoxSizer *panelSizer =
new wxBoxSizer(wxVERTICAL);
691 wxStaticBoxSizer *zoomGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Zoom & View");
694 wxBoxSizer *zoomSizer =
new wxBoxSizer(wxHORIZONTAL);
695 wxStaticText *zoomLabelText =
new wxStaticText(panel, wxID_ANY,
"Default Zoom:");
696 zoomLabelText->SetForegroundColour(wxColour(200, 200, 200));
697 zoomSizer->Add(zoomLabelText, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
700 new wxSlider(panel,
ID_DEFAULT_ZOOM, 100, 10, 200, wxDefaultPosition, wxSize(200, -1), wxSL_HORIZONTAL);
704 m_zoomLabel =
new wxStaticText(panel, wxID_ANY,
"100%");
705 m_zoomLabel->SetForegroundColour(wxColour(200, 200, 200));
707 zoomSizer->Add(
m_zoomLabel, 0, wxALIGN_CENTER_VERTICAL);
709 zoomGroup->Add(zoomSizer, 0, wxEXPAND | wxALL, 5);
712 wxBoxSizer *zoomStepSizer =
new wxBoxSizer(wxHORIZONTAL);
713 wxStaticText *zoomStepLabel =
new wxStaticText(panel, wxID_ANY,
"Zoom step size:");
714 zoomStepLabel->SetForegroundColour(wxColour(200, 200, 200));
715 zoomStepSizer->Add(zoomStepLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
718 new wxSlider(panel,
ID_ZOOM_STEP_SIZE, 10, 1, 50, wxDefaultPosition, wxSize(200, -1), wxSL_HORIZONTAL);
727 zoomGroup->Add(zoomStepSizer, 0, wxEXPAND | wxALL, 5);
730 wxBoxSizer *wheelSensitivitySizer =
new wxBoxSizer(wxHORIZONTAL);
731 wxStaticText *wheelSensitivityText =
new wxStaticText(panel, wxID_ANY,
"Mouse wheel sensitivity:");
732 wheelSensitivityText->SetForegroundColour(wxColour(200, 200, 200));
733 wheelSensitivitySizer->Add(wheelSensitivityText, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
736 wxSize(200, -1), wxSL_HORIZONTAL);
744 zoomGroup->Add(wheelSensitivitySizer, 0, wxEXPAND | wxALL, 5);
752 wxBoxSizer *resetViewHotkeySizer =
new wxBoxSizer(wxHORIZONTAL);
753 wxStaticText *resetViewHotkeyLabel =
new wxStaticText(panel, wxID_ANY,
"Reset view hotkey:");
754 resetViewHotkeyLabel->SetForegroundColour(wxColour(200, 200, 200));
755 resetViewHotkeySizer->Add(resetViewHotkeyLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
758 wxSize(150, -1), wxTE_READONLY | wxTE_CENTRE);
768 zoomGroup->Add(resetViewHotkeySizer, 0, wxEXPAND | wxALL, 5);
770 panelSizer->Add(zoomGroup, 0, wxEXPAND | wxALL, 5);
773 wxStaticBoxSizer *panGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Panning");
776 wxBoxSizer *panSensitivitySizer =
new wxBoxSizer(wxHORIZONTAL);
777 wxStaticText *panSensitivityText =
new wxStaticText(panel, wxID_ANY,
"Pan sensitivity:");
778 panSensitivityText->SetForegroundColour(wxColour(200, 200, 200));
779 panSensitivitySizer->Add(panSensitivityText, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
782 new wxSlider(panel,
ID_PAN_SENSITIVITY, 151, 10, 200, wxDefaultPosition, wxSize(200, -1), wxSL_HORIZONTAL);
790 panGroup->Add(panSensitivitySizer, 0, wxEXPAND | wxALL, 5);
793 wxBoxSizer *panSmoothnessSizer =
new wxBoxSizer(wxHORIZONTAL);
794 wxStaticText *panSmoothnessText =
new wxStaticText(panel, wxID_ANY,
"Pan smoothness:");
795 panSmoothnessText->SetForegroundColour(wxColour(200, 200, 200));
796 panSmoothnessSizer->Add(panSmoothnessText, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
799 new wxSlider(panel,
ID_PAN_SMOOTHNESS, 30, 0, 100, wxDefaultPosition, wxSize(200, -1), wxSL_HORIZONTAL);
808 panGroup->Add(panSmoothnessSizer, 0, wxEXPAND | wxALL, 5);
811 wxBoxSizer *panStepSizeSizer =
new wxBoxSizer(wxHORIZONTAL);
812 wxStaticText *panStepSizeText =
new wxStaticText(panel, wxID_ANY,
"Pan step size:");
813 panStepSizeText->SetForegroundColour(wxColour(200, 200, 200));
814 panStepSizeSizer->Add(panStepSizeText, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
817 new wxSlider(panel,
ID_PAN_STEP_SIZE, 40, 10, 500, wxDefaultPosition, wxSize(200, -1), wxSL_HORIZONTAL);
820 panStepSizeSizer->Add(
m_panStepSize, 1, wxEXPAND | wxRIGHT, 10);
826 panGroup->Add(panStepSizeSizer, 0, wxEXPAND | wxALL, 5);
834 wxBoxSizer *panKeyHotkeySizer =
new wxBoxSizer(wxHORIZONTAL);
835 wxStaticText *panKeyHotkeyLabel =
new wxStaticText(panel, wxID_ANY,
"Pan key (hold + drag):");
836 panKeyHotkeyLabel->SetForegroundColour(wxColour(200, 200, 200));
837 panKeyHotkeySizer->Add(panKeyHotkeyLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
840 wxTE_READONLY | wxTE_CENTRE);
846 panKeyHotkeySizer->Add(
m_panKeyTextCtrl, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
851 panGroup->Add(panKeyHotkeySizer, 0, wxEXPAND | wxALL, 5);
854 wxBoxSizer *panUpHotkeySizer =
new wxBoxSizer(wxHORIZONTAL);
855 wxStaticText *panUpLabel =
new wxStaticText(panel, wxID_ANY,
"Pan up:");
856 panUpLabel->SetForegroundColour(wxColour(200, 200, 200));
857 panUpHotkeySizer->Add(panUpLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
860 wxTE_READONLY | wxTE_CENTRE);
870 panGroup->Add(panUpHotkeySizer, 0, wxEXPAND | wxALL, 5);
873 wxBoxSizer *panDownHotkeySizer =
new wxBoxSizer(wxHORIZONTAL);
874 wxStaticText *panDownLabel =
new wxStaticText(panel, wxID_ANY,
"Pan down:");
875 panDownLabel->SetForegroundColour(wxColour(200, 200, 200));
876 panDownHotkeySizer->Add(panDownLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
879 wxTE_READONLY | wxTE_CENTRE);
889 panGroup->Add(panDownHotkeySizer, 0, wxEXPAND | wxALL, 5);
892 wxBoxSizer *panLeftHotkeySizer =
new wxBoxSizer(wxHORIZONTAL);
893 wxStaticText *panLeftLabel =
new wxStaticText(panel, wxID_ANY,
"Pan left:");
894 panLeftLabel->SetForegroundColour(wxColour(200, 200, 200));
895 panLeftHotkeySizer->Add(panLeftLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
898 wxTE_READONLY | wxTE_CENTRE);
908 panGroup->Add(panLeftHotkeySizer, 0, wxEXPAND | wxALL, 5);
911 wxBoxSizer *panRightHotkeySizer =
new wxBoxSizer(wxHORIZONTAL);
912 wxStaticText *panRightLabel =
new wxStaticText(panel, wxID_ANY,
"Pan right:");
913 panRightLabel->SetForegroundColour(wxColour(200, 200, 200));
914 panRightHotkeySizer->Add(panRightLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
917 wxSize(150, -1), wxTE_READONLY | wxTE_CENTRE);
927 panGroup->Add(panRightHotkeySizer, 0, wxEXPAND | wxALL, 5);
929 panelSizer->Add(panGroup, 0, wxEXPAND | wxALL, 5);
932 wxStaticBoxSizer *navGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Action Hotkeys");
935 wxBoxSizer *centerHotkeySizer =
new wxBoxSizer(wxHORIZONTAL);
936 wxStaticText *centerHotkeyLabel =
new wxStaticText(panel, wxID_ANY,
"Expand/Collapse:");
937 centerHotkeyLabel->SetForegroundColour(wxColour(200, 200, 200));
938 centerHotkeySizer->Add(centerHotkeyLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
941 wxSize(150, -1), wxTE_READONLY | wxTE_CENTRE);
951 navGroup->Add(centerHotkeySizer, 0, wxEXPAND | wxALL, 5);
954 wxBoxSizer *deleteHotkeySizer =
new wxBoxSizer(wxHORIZONTAL);
955 wxStaticText *deleteHotkeyLabel =
new wxStaticText(panel, wxID_ANY,
"Delete node:");
956 deleteHotkeyLabel->SetForegroundColour(wxColour(200, 200, 200));
957 deleteHotkeySizer->Add(deleteHotkeyLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
960 wxSize(150, -1), wxTE_READONLY | wxTE_CENTRE);
970 navGroup->Add(deleteHotkeySizer, 0, wxEXPAND | wxALL, 5);
972 panelSizer->Add(navGroup, 0, wxEXPAND | wxALL, 5);
975 wxStaticBoxSizer *gridGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Grid");
978 m_showGrid->SetForegroundColour(wxColour(200, 200, 200));
981 wxBoxSizer *gridSizeSizer =
new wxBoxSizer(wxHORIZONTAL);
982 wxStaticText *gridSizeLabel =
new wxStaticText(panel, wxID_ANY,
"Grid size (pixels):");
983 gridSizeLabel->SetForegroundColour(wxColour(200, 200, 200));
984 gridSizeSizer->Add(gridSizeLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
987 new wxSpinCtrl(panel,
ID_GRID_SIZE,
"20", wxDefaultPosition, wxSize(120, -1), wxSP_ARROW_KEYS, 10, 100, 20);
988 gridSizeSizer->Add(
m_gridSize, 0, wxALIGN_CENTER_VERTICAL);
989 gridGroup->Add(gridSizeSizer, 0, wxEXPAND | wxALL, 5);
992 wxBoxSizer *gridBgColorSizer =
new wxBoxSizer(wxHORIZONTAL);
993 wxStaticText *gridBgColorLabel =
new wxStaticText(panel, wxID_ANY,
"Grid background color:");
994 gridBgColorLabel->SetForegroundColour(wxColour(200, 200, 200));
995 gridBgColorSizer->Add(gridBgColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
999 gridGroup->Add(gridBgColorSizer, 0, wxEXPAND | wxALL, 5);
1002 wxBoxSizer *gridLineColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1003 wxStaticText *gridLineColorLabel =
new wxStaticText(panel, wxID_ANY,
"Grid line color:");
1004 gridLineColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1005 gridLineColorSizer->Add(gridLineColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1009 gridGroup->Add(gridLineColorSizer, 0, wxEXPAND | wxALL, 5);
1012 wxBoxSizer *connectionColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1013 wxStaticText *connectionColorLabel =
new wxStaticText(panel, wxID_ANY,
"Connection line color:");
1014 connectionColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1015 connectionColorSizer->Add(connectionColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1019 gridGroup->Add(connectionColorSizer, 0, wxEXPAND | wxALL, 5);
1027 wxBoxSizer *pathHighlightColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1028 wxStaticText *pathHighlightColorLabel =
new wxStaticText(panel, wxID_ANY,
"Path highlight color:");
1029 pathHighlightColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1030 pathHighlightColorSizer->Add(pathHighlightColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1034 gridGroup->Add(pathHighlightColorSizer, 0, wxEXPAND | wxALL, 5);
1036 panelSizer->Add(gridGroup, 0, wxEXPAND | wxALL, 5);
1039 wxStaticBoxSizer *nodeAppearanceGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Node Appearance");
1042 wxStaticBoxSizer *idleNodeGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Idle Node");
1045 wxBoxSizer *idleNodeBgColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1046 wxStaticText *idleNodeBgColorLabel =
new wxStaticText(panel, wxID_ANY,
"Background color:");
1047 idleNodeBgColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1048 idleNodeBgColorSizer->Add(idleNodeBgColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1051 idleNodeGroup->Add(idleNodeBgColorSizer, 0, wxEXPAND | wxALL, 3);
1054 wxBoxSizer *idleNodeBorderColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1055 wxStaticText *idleNodeBorderColorLabel =
new wxStaticText(panel, wxID_ANY,
"Border color:");
1056 idleNodeBorderColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1057 idleNodeBorderColorSizer->Add(idleNodeBorderColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1060 idleNodeGroup->Add(idleNodeBorderColorSizer, 0, wxEXPAND | wxALL, 3);
1063 wxBoxSizer *idleNodeTextColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1064 wxStaticText *idleNodeTextColorLabel =
new wxStaticText(panel, wxID_ANY,
"Text color:");
1065 idleNodeTextColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1066 idleNodeTextColorSizer->Add(idleNodeTextColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1069 idleNodeGroup->Add(idleNodeTextColorSizer, 0, wxEXPAND | wxALL, 3);
1071 nodeAppearanceGroup->Add(idleNodeGroup, 0, wxEXPAND | wxALL, 3);
1074 wxStaticBoxSizer *hoveredNodeGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Hovered Node");
1077 wxBoxSizer *hoveredNodeBgTintSizer =
new wxBoxSizer(wxHORIZONTAL);
1078 wxStaticText *hoveredNodeBgTintText =
new wxStaticText(panel, wxID_ANY,
"Background tint:");
1079 hoveredNodeBgTintText->SetForegroundColour(wxColour(200, 200, 200));
1080 hoveredNodeBgTintSizer->Add(hoveredNodeBgTintText, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1082 wxSize(200, -1), wxSL_HORIZONTAL);
1089 hoveredNodeGroup->Add(hoveredNodeBgTintSizer, 0, wxEXPAND | wxALL, 3);
1092 wxBoxSizer *hoveredNodeColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1093 wxStaticText *hoveredNodeColorLabel =
new wxStaticText(panel, wxID_ANY,
"Border color:");
1094 hoveredNodeColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1095 hoveredNodeColorSizer->Add(hoveredNodeColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1098 hoveredNodeGroup->Add(hoveredNodeColorSizer, 0, wxEXPAND | wxALL, 3);
1101 wxBoxSizer *hoveredNodeTextColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1102 wxStaticText *hoveredNodeTextColorLabel =
new wxStaticText(panel, wxID_ANY,
"Text color:");
1103 hoveredNodeTextColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1104 hoveredNodeTextColorSizer->Add(hoveredNodeTextColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1107 hoveredNodeGroup->Add(hoveredNodeTextColorSizer, 0, wxEXPAND | wxALL, 3);
1110 wxBoxSizer *hoveredNodeInfoColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1111 wxStaticText *hoveredNodeInfoColorLabel =
new wxStaticText(panel, wxID_ANY,
"Info text color:");
1112 hoveredNodeInfoColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1113 hoveredNodeInfoColorSizer->Add(hoveredNodeInfoColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1116 hoveredNodeGroup->Add(hoveredNodeInfoColorSizer, 0, wxEXPAND | wxALL, 3);
1118 nodeAppearanceGroup->Add(hoveredNodeGroup, 0, wxEXPAND | wxALL, 3);
1121 wxStaticBoxSizer *selectedNodeGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Selected Node");
1124 wxBoxSizer *selectedNodeBgTintSizer =
new wxBoxSizer(wxHORIZONTAL);
1125 wxStaticText *selectedNodeBgTintText =
new wxStaticText(panel, wxID_ANY,
"Background tint:");
1126 selectedNodeBgTintText->SetForegroundColour(wxColour(200, 200, 200));
1127 selectedNodeBgTintSizer->Add(selectedNodeBgTintText, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1129 wxSize(200, -1), wxSL_HORIZONTAL);
1136 selectedNodeGroup->Add(selectedNodeBgTintSizer, 0, wxEXPAND | wxALL, 3);
1139 wxBoxSizer *selectedNodeColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1140 wxStaticText *selectedNodeColorLabel =
new wxStaticText(panel, wxID_ANY,
"Border color:");
1141 selectedNodeColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1142 selectedNodeColorSizer->Add(selectedNodeColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1145 selectedNodeGroup->Add(selectedNodeColorSizer, 0, wxEXPAND | wxALL, 3);
1148 wxBoxSizer *selectedNodeTextColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1149 wxStaticText *selectedNodeTextColorLabel =
new wxStaticText(panel, wxID_ANY,
"Text color:");
1150 selectedNodeTextColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1151 selectedNodeTextColorSizer->Add(selectedNodeTextColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1154 selectedNodeGroup->Add(selectedNodeTextColorSizer, 0, wxEXPAND | wxALL, 3);
1157 wxBoxSizer *selectedNodeInfoColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1158 wxStaticText *selectedNodeInfoColorLabel =
new wxStaticText(panel, wxID_ANY,
"Info text color:");
1159 selectedNodeInfoColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1160 selectedNodeInfoColorSizer->Add(selectedNodeInfoColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1163 selectedNodeGroup->Add(selectedNodeInfoColorSizer, 0, wxEXPAND | wxALL, 3);
1165 nodeAppearanceGroup->Add(selectedNodeGroup, 0, wxEXPAND | wxALL, 3);
1167 panelSizer->Add(nodeAppearanceGroup, 0, wxEXPAND | wxALL, 5);
1172 wxStaticBoxSizer *coordInfoGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Coordinate System Info (Zoom & Pan)");
1181 wxBoxSizer *coordFontSizeSizer =
new wxBoxSizer(wxHORIZONTAL);
1182 wxStaticText *coordFontSizeLabel =
new wxStaticText(panel, wxID_ANY,
"Font size:");
1183 if (coordFontSizeLabel) {
1184 coordFontSizeLabel->SetForegroundColour(wxColour(200, 200, 200));
1185 coordFontSizeSizer->Add(coordFontSizeLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1188 wxSize(120, -1), wxSP_ARROW_KEYS, 6, 20, 9);
1192 if (coordFontSizeSizer->GetItemCount() > 0) {
1193 coordInfoGroup->Add(coordFontSizeSizer, 0, wxEXPAND | wxALL, 5);
1197 wxBoxSizer *coordColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1198 wxStaticText *coordColorLabel =
new wxStaticText(panel, wxID_ANY,
"Text color:");
1199 coordColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1200 coordColorSizer->Add(coordColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1203 coordInfoGroup->Add(coordColorSizer, 0, wxEXPAND | wxALL, 5);
1206 wxBoxSizer *coordAnchorSizer =
new wxBoxSizer(wxHORIZONTAL);
1207 wxStaticText *coordAnchorLabel =
new wxStaticText(panel, wxID_ANY,
"Anchor:");
1208 coordAnchorLabel->SetForegroundColour(wxColour(200, 200, 200));
1209 coordAnchorSizer->Add(coordAnchorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1210 wxArrayString anchorChoices;
1211 anchorChoices.Add(
"Top-Left");
1212 anchorChoices.Add(
"Top-Right");
1213 anchorChoices.Add(
"Bottom-Left");
1214 anchorChoices.Add(
"Bottom-Right");
1215 m_coordinateInfoAnchor =
new wxChoice(panel, wxID_ANY, wxDefaultPosition, wxSize(150, -1), anchorChoices);
1218 coordInfoGroup->Add(coordAnchorSizer, 0, wxEXPAND | wxALL, 5);
1221 wxBoxSizer *coordPosSizer =
new wxBoxSizer(wxHORIZONTAL);
1222 wxStaticText *coordPosLabel =
new wxStaticText(panel, wxID_ANY,
"Offset:");
1223 coordPosLabel->SetForegroundColour(wxColour(200, 200, 200));
1224 coordPosSizer->Add(coordPosLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1225 wxStaticText *coordXLabel =
new wxStaticText(panel, wxID_ANY,
"X:");
1226 coordXLabel->SetForegroundColour(wxColour(200, 200, 200));
1227 coordPosSizer->Add(coordXLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
1229 wxSP_ARROW_KEYS, 0, 9999, 10);
1230 coordPosSizer->Add(
m_coordinateInfoX, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1231 wxStaticText *coordYLabel =
new wxStaticText(panel, wxID_ANY,
"Y:");
1232 coordYLabel->SetForegroundColour(wxColour(200, 200, 200));
1233 coordPosSizer->Add(coordYLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
1235 wxSP_ARROW_KEYS, 0, 9999, 10);
1237 coordInfoGroup->Add(coordPosSizer, 0, wxEXPAND | wxALL, 5);
1239 panelSizer->Add(coordInfoGroup, 0, wxEXPAND | wxALL, 5);
1242 wxStaticBoxSizer *selectedInfoGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Selected Node Info");
1249 wxBoxSizer *selFontSizeSizer =
new wxBoxSizer(wxHORIZONTAL);
1250 wxStaticText *selFontSizeLabel =
new wxStaticText(panel, wxID_ANY,
"Font size:");
1251 selFontSizeLabel->SetForegroundColour(wxColour(200, 200, 200));
1252 selFontSizeSizer->Add(selFontSizeLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1254 wxSize(120, -1), wxSP_ARROW_KEYS, 6, 20, 9);
1256 selectedInfoGroup->Add(selFontSizeSizer, 0, wxEXPAND | wxALL, 5);
1259 wxBoxSizer *selColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1260 wxStaticText *selColorLabel =
new wxStaticText(panel, wxID_ANY,
"Text color:");
1261 selColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1262 selColorSizer->Add(selColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1265 selectedInfoGroup->Add(selColorSizer, 0, wxEXPAND | wxALL, 5);
1268 wxBoxSizer *selAnchorSizer =
new wxBoxSizer(wxHORIZONTAL);
1269 wxStaticText *selAnchorLabel =
new wxStaticText(panel, wxID_ANY,
"Anchor:");
1270 selAnchorLabel->SetForegroundColour(wxColour(200, 200, 200));
1271 selAnchorSizer->Add(selAnchorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1275 selectedInfoGroup->Add(selAnchorSizer, 0, wxEXPAND | wxALL, 5);
1278 wxBoxSizer *selPosSizer =
new wxBoxSizer(wxHORIZONTAL);
1279 wxStaticText *selPosLabel =
new wxStaticText(panel, wxID_ANY,
"Offset:");
1280 selPosLabel->SetForegroundColour(wxColour(200, 200, 200));
1281 selPosSizer->Add(selPosLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1282 wxStaticText *selXLabel =
new wxStaticText(panel, wxID_ANY,
"X:");
1283 selXLabel->SetForegroundColour(wxColour(200, 200, 200));
1284 selPosSizer->Add(selXLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
1286 wxSP_ARROW_KEYS, 0, 9999, 10);
1288 wxStaticText *selYLabel =
new wxStaticText(panel, wxID_ANY,
"Y:");
1289 selYLabel->SetForegroundColour(wxColour(200, 200, 200));
1290 selPosSizer->Add(selYLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
1292 wxSP_ARROW_KEYS, 0, 9999, 30);
1294 selectedInfoGroup->Add(selPosSizer, 0, wxEXPAND | wxALL, 5);
1296 panelSizer->Add(selectedInfoGroup, 0, wxEXPAND | wxALL, 5);
1299 wxStaticBoxSizer *treeStatsGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Tree Statistics Info");
1306 wxBoxSizer *treeFontSizeSizer =
new wxBoxSizer(wxHORIZONTAL);
1307 wxStaticText *treeFontSizeLabel =
new wxStaticText(panel, wxID_ANY,
"Font size:");
1308 treeFontSizeLabel->SetForegroundColour(wxColour(200, 200, 200));
1309 treeFontSizeSizer->Add(treeFontSizeLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1311 wxSP_ARROW_KEYS, 6, 20, 9);
1313 treeStatsGroup->Add(treeFontSizeSizer, 0, wxEXPAND | wxALL, 5);
1316 wxBoxSizer *treeColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1317 wxStaticText *treeColorLabel =
new wxStaticText(panel, wxID_ANY,
"Text color:");
1318 treeColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1319 treeColorSizer->Add(treeColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1322 treeStatsGroup->Add(treeColorSizer, 0, wxEXPAND | wxALL, 5);
1325 wxBoxSizer *treeAnchorSizer =
new wxBoxSizer(wxHORIZONTAL);
1326 wxStaticText *treeAnchorLabel =
new wxStaticText(panel, wxID_ANY,
"Anchor:");
1327 treeAnchorLabel->SetForegroundColour(wxColour(200, 200, 200));
1328 treeAnchorSizer->Add(treeAnchorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1329 m_treeInfoAnchor =
new wxChoice(panel, wxID_ANY, wxDefaultPosition, wxSize(150, -1), anchorChoices);
1332 treeStatsGroup->Add(treeAnchorSizer, 0, wxEXPAND | wxALL, 5);
1335 wxBoxSizer *treePosSizer =
new wxBoxSizer(wxHORIZONTAL);
1336 wxStaticText *treePosLabel =
new wxStaticText(panel, wxID_ANY,
"Offset:");
1337 treePosLabel->SetForegroundColour(wxColour(200, 200, 200));
1338 treePosSizer->Add(treePosLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1339 wxStaticText *treeXLabel =
new wxStaticText(panel, wxID_ANY,
"X:");
1340 treeXLabel->SetForegroundColour(wxColour(200, 200, 200));
1341 treePosSizer->Add(treeXLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
1343 new wxSpinCtrl(panel,
ID_TREE_INFO_X,
"10", wxDefaultPosition, wxSize(120, -1), wxSP_ARROW_KEYS, 0, 9999, 10);
1344 treePosSizer->Add(
m_treeInfoX, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1345 wxStaticText *treeYLabel =
new wxStaticText(panel, wxID_ANY,
"Y:");
1346 treeYLabel->SetForegroundColour(wxColour(200, 200, 200));
1347 treePosSizer->Add(treeYLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
1349 new wxSpinCtrl(panel,
ID_TREE_INFO_Y,
"50", wxDefaultPosition, wxSize(120, -1), wxSP_ARROW_KEYS, 0, 9999, 50);
1350 treePosSizer->Add(
m_treeInfoY, 0, wxALIGN_CENTER_VERTICAL);
1351 treeStatsGroup->Add(treePosSizer, 0, wxEXPAND | wxALL, 5);
1353 panelSizer->Add(treeStatsGroup, 0, wxEXPAND | wxALL, 5);
1356 wxStaticBoxSizer *fpsGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"FPS Display");
1358 m_showFPS =
new wxCheckBox(panel, wxID_ANY,
"Show FPS counter");
1359 m_showFPS->SetForegroundColour(wxColour(200, 200, 200));
1363 wxBoxSizer *fpsFontSizeSizer =
new wxBoxSizer(wxHORIZONTAL);
1364 wxStaticText *fpsFontSizeLabel =
new wxStaticText(panel, wxID_ANY,
"Font size:");
1365 fpsFontSizeLabel->SetForegroundColour(wxColour(200, 200, 200));
1366 fpsFontSizeSizer->Add(fpsFontSizeLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1367 m_fpsFontSize =
new wxSpinCtrl(panel, wxID_ANY,
"9", wxDefaultPosition, wxSize(120, -1), wxSP_ARROW_KEYS, 6, 20, 9);
1368 fpsFontSizeSizer->Add(
m_fpsFontSize, 0, wxALIGN_CENTER_VERTICAL);
1369 fpsGroup->Add(fpsFontSizeSizer, 0, wxEXPAND | wxALL, 5);
1372 wxBoxSizer *fpsColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1373 wxStaticText *fpsColorLabel =
new wxStaticText(panel, wxID_ANY,
"Text color:");
1374 fpsColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1375 fpsColorSizer->Add(fpsColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1378 fpsGroup->Add(fpsColorSizer, 0, wxEXPAND | wxALL, 5);
1381 wxBoxSizer *fpsAnchorSizer =
new wxBoxSizer(wxHORIZONTAL);
1382 wxStaticText *fpsAnchorLabel =
new wxStaticText(panel, wxID_ANY,
"Anchor:");
1383 fpsAnchorLabel->SetForegroundColour(wxColour(200, 200, 200));
1384 fpsAnchorSizer->Add(fpsAnchorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1385 m_fpsAnchor =
new wxChoice(panel, wxID_ANY, wxDefaultPosition, wxSize(150, -1), anchorChoices);
1387 fpsAnchorSizer->Add(
m_fpsAnchor, 0, wxALIGN_CENTER_VERTICAL);
1388 fpsGroup->Add(fpsAnchorSizer, 0, wxEXPAND | wxALL, 5);
1391 wxBoxSizer *fpsPosSizer =
new wxBoxSizer(wxHORIZONTAL);
1392 wxStaticText *fpsPosLabel =
new wxStaticText(panel, wxID_ANY,
"Offset:");
1393 fpsPosLabel->SetForegroundColour(wxColour(200, 200, 200));
1394 fpsPosSizer->Add(fpsPosLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1395 wxStaticText *fpsXLabel =
new wxStaticText(panel, wxID_ANY,
"X:");
1396 fpsXLabel->SetForegroundColour(wxColour(200, 200, 200));
1397 fpsPosSizer->Add(fpsXLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
1398 m_fpsX =
new wxSpinCtrl(panel, wxID_ANY,
"10", wxDefaultPosition, wxSize(120, -1), wxSP_ARROW_KEYS, 0, 9999, 10);
1399 fpsPosSizer->Add(
m_fpsX, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1400 wxStaticText *fpsYLabel =
new wxStaticText(panel, wxID_ANY,
"Y:");
1401 fpsYLabel->SetForegroundColour(wxColour(200, 200, 200));
1402 fpsPosSizer->Add(fpsYLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
1403 m_fpsY =
new wxSpinCtrl(panel, wxID_ANY,
"70", wxDefaultPosition, wxSize(120, -1), wxSP_ARROW_KEYS, 0, 9999, 70);
1404 fpsPosSizer->Add(
m_fpsY, 0, wxALIGN_CENTER_VERTICAL);
1405 fpsGroup->Add(fpsPosSizer, 0, wxEXPAND | wxALL, 5);
1407 panelSizer->Add(fpsGroup, 0, wxEXPAND | wxALL, 5);
1410 wxStaticBoxSizer *controlsHelpGroup =
new wxStaticBoxSizer(wxVERTICAL, panel,
"Controls Help Text");
1417 wxBoxSizer *ctrlFontSizeSizer =
new wxBoxSizer(wxHORIZONTAL);
1418 wxStaticText *ctrlFontSizeLabel =
new wxStaticText(panel, wxID_ANY,
"Font size:");
1419 ctrlFontSizeLabel->SetForegroundColour(wxColour(200, 200, 200));
1420 ctrlFontSizeSizer->Add(ctrlFontSizeLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1422 wxSP_ARROW_KEYS, 6, 20, 11);
1424 controlsHelpGroup->Add(ctrlFontSizeSizer, 0, wxEXPAND | wxALL, 5);
1427 wxBoxSizer *ctrlColorSizer =
new wxBoxSizer(wxHORIZONTAL);
1428 wxStaticText *ctrlColorLabel =
new wxStaticText(panel, wxID_ANY,
"Text color:");
1429 ctrlColorLabel->SetForegroundColour(wxColour(200, 200, 200));
1430 ctrlColorSizer->Add(ctrlColorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1433 controlsHelpGroup->Add(ctrlColorSizer, 0, wxEXPAND | wxALL, 5);
1436 wxBoxSizer *ctrlAnchorSizer =
new wxBoxSizer(wxHORIZONTAL);
1437 wxStaticText *ctrlAnchorLabel =
new wxStaticText(panel, wxID_ANY,
"Anchor:");
1438 ctrlAnchorLabel->SetForegroundColour(wxColour(200, 200, 200));
1439 ctrlAnchorSizer->Add(ctrlAnchorLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1440 m_controlsHelpAnchor =
new wxChoice(panel, wxID_ANY, wxDefaultPosition, wxSize(150, -1), anchorChoices);
1443 controlsHelpGroup->Add(ctrlAnchorSizer, 0, wxEXPAND | wxALL, 5);
1446 wxBoxSizer *ctrlPosSizer =
new wxBoxSizer(wxHORIZONTAL);
1447 wxStaticText *ctrlPosLabel =
new wxStaticText(panel, wxID_ANY,
"Offset:");
1448 ctrlPosLabel->SetForegroundColour(wxColour(200, 200, 200));
1449 ctrlPosSizer->Add(ctrlPosLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1450 wxStaticText *ctrlXLabel =
new wxStaticText(panel, wxID_ANY,
"X:");
1451 ctrlXLabel->SetForegroundColour(wxColour(200, 200, 200));
1452 ctrlPosSizer->Add(ctrlXLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
1454 wxSP_ARROW_KEYS, 0, 9999, 10);
1455 ctrlPosSizer->Add(
m_controlsHelpX, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10);
1456 wxStaticText *ctrlYLabel =
new wxStaticText(panel, wxID_ANY,
"Y:");
1457 ctrlYLabel->SetForegroundColour(wxColour(200, 200, 200));
1458 ctrlPosSizer->Add(ctrlYLabel, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 5);
1460 wxSP_ARROW_KEYS, 0, 9999, 25);
1462 controlsHelpGroup->Add(ctrlPosSizer, 0, wxEXPAND | wxALL, 5);
1464 panelSizer->Add(controlsHelpGroup, 0, wxEXPAND | wxALL, 5);
1466 panelSizer->AddStretchSpacer();
1468 panel->SetSizer(panelSizer);
2261 m_themeChoice->SetSelection(
static_cast<int>(prefs.GetWindowSettings().theme));
2262 wxColour accentColor(prefs.GetWindowSettings().accentColor.r, prefs.GetWindowSettings().accentColor.g,
2263 prefs.GetWindowSettings().accentColor.b);
2265 m_startupModeChoice->SetSelection(
static_cast<int>(prefs.GetWindowSettings().startupMode));
2285 m_alwaysOnTop->SetValue(prefs.GetWindowSettings().alwaysOnTop);
2291 (prefs.GetWindowSettings().maxWindowWidthPct == -1 || prefs.GetWindowSettings().maxWindowHeightPct == -1);
2300 float ratio = prefs.GetWindowSettings().aspectRatio;
2302 int width = 16, height = 9;
2303 if (std::abs(ratio - 16.0f / 9.0f) < 0.01f) {
2306 }
else if (std::abs(ratio - 4.0f / 3.0f) < 0.01f) {
2309 }
else if (std::abs(ratio - 21.0f / 9.0f) < 0.01f) {
2317 int zoomPercent =
static_cast<int>(prefs.GetMainPanelSettings().defaultZoomLevel * 100);
2319 m_zoomLabel->SetLabel(wxString::Format(
"%d%%", zoomPercent));
2320 m_showGrid->SetValue(prefs.GetMainPanelSettings().showGrid);
2321 m_gridSize->SetValue(prefs.GetMainPanelSettings().gridSize);
2322 wxColour gridBg(prefs.GetMainPanelSettings().gridBackgroundColor.r,
2323 prefs.GetMainPanelSettings().gridBackgroundColor.g,
2324 prefs.GetMainPanelSettings().gridBackgroundColor.b);
2326 wxColour gridLineColor(prefs.GetMainPanelSettings().gridLineColor.r, prefs.GetMainPanelSettings().gridLineColor.g,
2327 prefs.GetMainPanelSettings().gridLineColor.b);
2329 wxColour canvasBg(prefs.GetMainPanelSettings().canvasBackgroundColor.r,
2330 prefs.GetMainPanelSettings().canvasBackgroundColor.g,
2331 prefs.GetMainPanelSettings().canvasBackgroundColor.b);
2333 wxColour connectionLineColor(prefs.GetMainPanelSettings().connectionLineColor.r,
2334 prefs.GetMainPanelSettings().connectionLineColor.g,
2335 prefs.GetMainPanelSettings().connectionLineColor.b);
2338 wxColour pathHighlightColor(prefs.GetMainPanelSettings().pathHighlightColor.r,
2339 prefs.GetMainPanelSettings().pathHighlightColor.g,
2340 prefs.GetMainPanelSettings().pathHighlightColor.b);
2342 wxColour idleNodeBg(prefs.GetMainPanelSettings().idleNodeBgColor.r, prefs.GetMainPanelSettings().idleNodeBgColor.g,
2343 prefs.GetMainPanelSettings().idleNodeBgColor.b);
2345 wxColour idleNodeBorder(prefs.GetMainPanelSettings().idleNodeBorderColor.r,
2346 prefs.GetMainPanelSettings().idleNodeBorderColor.g,
2347 prefs.GetMainPanelSettings().idleNodeBorderColor.b);
2349 wxColour idleNodeText(prefs.GetMainPanelSettings().idleNodeTextColor.r,
2350 prefs.GetMainPanelSettings().idleNodeTextColor.g,
2351 prefs.GetMainPanelSettings().idleNodeTextColor.b);
2353 int selectedTint =
static_cast<int>(prefs.GetMainPanelSettings().selectedNodeBgTint * 100);
2356 int hoveredTint =
static_cast<int>(prefs.GetMainPanelSettings().hoveredNodeBgTint * 100);
2359 wxColour selectedNode(prefs.GetMainPanelSettings().selectedNodeColor.r,
2360 prefs.GetMainPanelSettings().selectedNodeColor.g,
2361 prefs.GetMainPanelSettings().selectedNodeColor.b);
2363 wxColour hoveredNode(prefs.GetMainPanelSettings().hoveredNodeColor.r,
2364 prefs.GetMainPanelSettings().hoveredNodeColor.g,
2365 prefs.GetMainPanelSettings().hoveredNodeColor.b);
2367 wxColour selectedNodeText(prefs.GetMainPanelSettings().selectedNodeTextColor.r,
2368 prefs.GetMainPanelSettings().selectedNodeTextColor.g,
2369 prefs.GetMainPanelSettings().selectedNodeTextColor.b);
2371 wxColour hoveredNodeText(prefs.GetMainPanelSettings().hoveredNodeTextColor.r,
2372 prefs.GetMainPanelSettings().hoveredNodeTextColor.g,
2373 prefs.GetMainPanelSettings().hoveredNodeTextColor.b);
2375 wxColour selectedNodeInfo(prefs.GetMainPanelSettings().selectedNodeInfoColor.r,
2376 prefs.GetMainPanelSettings().selectedNodeInfoColor.g,
2377 prefs.GetMainPanelSettings().selectedNodeInfoColor.b);
2379 wxColour hoveredNodeInfo(prefs.GetMainPanelSettings().hoveredNodeInfoColor.r,
2380 prefs.GetMainPanelSettings().hoveredNodeInfoColor.g,
2381 prefs.GetMainPanelSettings().hoveredNodeInfoColor.b);
2385 bool scenesUnlimited = (prefs.GetMainPanelSettings().maxScenes == -1);
2387 m_maxScenes->SetValue(prefs.GetMainPanelSettings().maxScenes > 0 ? prefs.GetMainPanelSettings().maxScenes : 10);
2390 m_closeConfirmation->SetSelection(
static_cast<int>(prefs.GetMainPanelSettings().closeConfirmation));
2396 const auto &btViewSettings = prefs.GetBehaviorTreeViewSettings();
2399 int zoomStepPercent =
static_cast<int>(btViewSettings.zoomStepSize * 100);
2403 int wheelSensitivity =
static_cast<int>(btViewSettings.mouseWheelSensitivity * 100);
2410 int panSensitivity =
static_cast<int>(btViewSettings.panSensitivity * 100);
2416 m_panSmoothness->SetValue(
static_cast<int>(btViewSettings.panSmoothness));
2417 m_panSmoothnessLabel->SetLabel(wxString::Format(
"%d%%",
static_cast<int>(btViewSettings.panSmoothness)));
2418 m_panStepSize->SetValue(
static_cast<int>(btViewSettings.panStepSize));
2419 m_panStepSizeLabel->SetLabel(wxString::Format(
"%dpx",
static_cast<int>(btViewSettings.panStepSize)));
2434 btViewSettings.coordinateInfoColor.g,
2435 btViewSettings.coordinateInfoColor.b));
2450 btViewSettings.selectedNodeInfoColor.g,
2451 btViewSettings.selectedNodeInfoColor.b));
2466 wxColour(btViewSettings.treeInfoColor.r, btViewSettings.treeInfoColor.g, btViewSettings.treeInfoColor.b));
2468 m_treeInfoAnchor->SetSelection(
static_cast<int>(btViewSettings.treeInfoAnchor));
2476 m_showFPS->SetValue(btViewSettings.showFPS);
2481 wxColour(btViewSettings.fpsColor.r, btViewSettings.fpsColor.g, btViewSettings.fpsColor.b));
2483 m_fpsAnchor->SetSelection(
static_cast<int>(btViewSettings.fpsAnchor));
2485 m_fpsX->SetValue(btViewSettings.fpsX);
2487 m_fpsY->SetValue(btViewSettings.fpsY);
2496 btViewSettings.controlsHelpColor.g,
2497 btViewSettings.controlsHelpColor.b));
2506 const auto &bottomSettings = prefs.GetBottomPanelSettings();
2523 int startPathModeIndex =
static_cast<int>(bottomSettings.startPathMode);
2526 bool enableCustomPath = (startPathModeIndex == 1);
2533 m_treeSortFilesBy->SetSelection(
static_cast<int>(bottomSettings.treeView.sortFilesBy));
2536 int treeItemSizeIndex = 1;
2537 switch (bottomSettings.treeView.itemSize) {
2539 treeItemSizeIndex = 0;
2542 treeItemSizeIndex = 1;
2545 treeItemSizeIndex = 2;
2553 m_gridSortFilesBy->SetSelection(
static_cast<int>(bottomSettings.gridView.sortFilesBy));
2556 int iconSizeIndex = 1;
2557 switch (bottomSettings.gridView.iconSize) {
2577 int logFontSizeIndex = 1;
2578 switch (bottomSettings.logTab.fontSize) {
2580 logFontSizeIndex = 0;
2583 logFontSizeIndex = 1;
2586 logFontSizeIndex = 2;
2592 m_logTraceColor->SetColour(wxColour(bottomSettings.logTab.traceColor.r, bottomSettings.logTab.traceColor.g,
2593 bottomSettings.logTab.traceColor.b));
2594 m_logInfoColor->SetColour(wxColour(bottomSettings.logTab.infoColor.r, bottomSettings.logTab.infoColor.g,
2595 bottomSettings.logTab.infoColor.b));
2596 m_logWarningColor->SetColour(wxColour(bottomSettings.logTab.warningColor.r, bottomSettings.logTab.warningColor.g,
2597 bottomSettings.logTab.warningColor.b));
2598 m_logErrorColor->SetColour(wxColour(bottomSettings.logTab.errorColor.r, bottomSettings.logTab.errorColor.g,
2599 bottomSettings.logTab.errorColor.b));
2600 m_logCriticalColor->SetColour(wxColour(bottomSettings.logTab.criticalColor.r, bottomSettings.logTab.criticalColor.g,
2601 bottomSettings.logTab.criticalColor.b));
2604 const auto &leftSettings = prefs.GetLeftPanelSettings();
2612 int leftPanelStartupIndex = 0;
2613 switch (leftSettings.panelStartupState) {
2615 leftPanelStartupIndex = 0;
2618 leftPanelStartupIndex = 1;
2621 leftPanelStartupIndex = 2;
2631 const auto &rightSettings = prefs.GetRightPanelSettings();
2639 int rightPanelStartupIndex = 0;
2640 switch (rightSettings.panelStartupState) {
2642 rightPanelStartupIndex = 0;
2645 rightPanelStartupIndex = 1;
2648 rightPanelStartupIndex = 2;
2662 wxString encoding = prefs.GetParserSettings().defaultFileEncoding;
2664 if (encodingIdx != wxNOT_FOUND) {
2671 m_enableVSync->SetValue(prefs.GetPerformanceSettings().enableVSync);
2680 m_fpsLimit->SetSelection(
static_cast<int>(prefs.GetPerformanceSettings().fpsLimit));