Ember
Loading...
Searching...
No Matches
MainFrame Class Reference

Main application window for EmberForge. More...

#include <MainFrame.h>

Inheritance diagram for MainFrame:

Public Member Functions

 MainFrame (const wxString &title, const wxPoint &pos, const wxSize &size, long style=wxDEFAULT_FRAME_STYLE)
 Construct the main frame.
virtual ~MainFrame ()
 Destructor - cleans up AUI manager and panels.
void LogMessage (const wxString &message)
void OnHierarchySelectionChanged (EmberCore::ITreeNode *selectedNode)
void OnSceneSelectionChanged (EmberCore::ITreeNode *selectedNode)
void CenterOnNode (EmberCore::ITreeNode *node)
void InvalidateCanvasLayout ()
void RefreshHierarchyTree ()
void SyncSelection (EmberCore::ITreeNode *selectedNode)
std::shared_ptr< EmberCore::NodeGetSharedBehaviorTree () const
void UpdatePropertiesTabReference (PropertiesTab *propertiesTab)
void UpdateNavigatorTabReference (ForgeNavigatorTab *navigatorTab)
void OnNavigatorTabClosed ()
void OnPropertiesTabClosed ()
wxAuiManager * GetAuiManager ()
void LoadXMLFile (const wxString &filePath, bool confirmOverride=false)
void LoadXMLFileInNewScene (const wxString &filePath)
void OpenTreeInNewScene (const std::string &treeId)
bool IsActiveSceneBehaviorTree () const
void NewProject ()
void OpenProject ()
void OpenProject (const wxString &projectPath)
void CloseProject ()
void SaveProject ()
void ShowProjectSettings ()
bool HasActiveProject () const
std::shared_ptr< EmberCore::BehaviorTreeProjectGetActiveProject () const
void RefreshPreferences ()
void UpdatePanelToggleButtons ()
int CountTabGlobally (const wxString &tabName) const
void RefreshCanvasVisualization ()
void LoadTreeIntoScene (const std::string &treeId)
void UpdateTreeSelector ()
const std::string & GetCurrentTreeId () const
void NavigateToBlackboard (const std::string &bbId)

Private Member Functions

void OnExit (wxCommandEvent &event)
void OnAbout (wxCommandEvent &event)
void OnLoadXML (wxCommandEvent &event)
void OnSaveXML (wxCommandEvent &event)
void OnSaveAsXML (wxCommandEvent &event)
void OnNewProject (wxCommandEvent &event)
void OnOpenProject (wxCommandEvent &event)
void OnCloseProject (wxCommandEvent &event)
void OnSaveProject (wxCommandEvent &event)
void OnProjectSettings (wxCommandEvent &event)
void OnToggleMaximize (wxCommandEvent &event)
void OnNextScene (wxCommandEvent &event)
void OnPreviousScene (wxCommandEvent &event)
void OnResetZoom (wxCommandEvent &event)
void OnResetUI (wxCommandEvent &event)
void OnPreferences (wxCommandEvent &event)
void OnParserConfig (wxCommandEvent &event)
void OnEditorTool (wxCommandEvent &event)
void OnMonitorTool (wxCommandEvent &event)
void OnLogReplayTool (wxCommandEvent &event)
void OnToggleLeftPanel (wxCommandEvent &event)
void OnToggleBottomPanel (wxCommandEvent &event)
void OnToggleRightPanel (wxCommandEvent &event)
void OnPaint (wxPaintEvent &event)
void OnIdle (wxIdleEvent &event)
void OnFrameResize (wxSizeEvent &event)
void CreateMenuAndStatusBar ()
void CreatePanelToggleToolbar ()
void InitializeConfigurationMenu ()
void CreatePanelLayout ()
void RefreshMenuHotkeys ()
void DoSaveXML (const wxString &filePath)
void CreateProjectOverviewScene ()
 wxDECLARE_EVENT_TABLE ()

Private Attributes

wxAuiManager * m_auiManager
LeftSidePanelm_leftPanel
RightSidePanelm_rightPanel
BottomPanelm_bottomPanel
PropertiesTabm_propertiesTab
ForgeNavigatorTabm_navigatorTab
MainPanelm_scenePanel
wxToolBar * m_panelToggleToolbar
wxString m_currentFilePath
bool m_treeModified = false
std::shared_ptr< EmberCore::BehaviorTreeProjectm_activeProject
std::map< std::string, std::shared_ptr< EmberCore::BehaviorTree > > m_projectTrees
std::map< std::string, std::shared_ptr< EmberCore::Blackboard > > m_projectBlackboards
std::map< std::string, std::vector< std::string > > m_blackboardIncludesMap
BlackboardScenem_blackboardScene = nullptr
std::string m_currentTreeId
std::string m_mainTreeName
EmberUI::ProportionalLayout m_layout
wxSize m_lastClientSize
bool m_isUpdatingFromHierarchy = false
bool m_isUpdatingFromScene = false

Detailed Description

Main application window for EmberForge.

MainFrame is the primary window that contains all UI elements:

  • Menu bar and toolbar
  • Dockable panel layout (left, right, bottom, center)
  • Scene visualization canvas
  • Status bar

It coordinates communication between panels and manages:

  • File operations (open, save, new)
  • Project management (multi-file projects)
  • Selection synchronization between hierarchy and canvas
  • Panel visibility and layout

Panel Layout

The window uses wxAuiManager for flexible docking:

  • Left Panel: File explorer and scene hierarchy
  • Center Panel: Behavior tree visualization
  • Right Panel: Properties editor
  • Bottom Panel: Logs and output

Selection Flow

When a node is selected (in hierarchy or canvas):

  1. Selection callback notifies MainFrame
  2. MainFrame calls SyncSelection()
  3. All panels update to show the selected node

Definition at line 67 of file MainFrame.h.

Constructor & Destructor Documentation

◆ MainFrame()

MainFrame::MainFrame ( const wxString & title,
const wxPoint & pos,
const wxSize & size,
long style = wxDEFAULT_FRAME_STYLE )

Construct the main frame.

Parameters
titleWindow title
posInitial window position
sizeInitial window size
stylewxWidgets frame style flags

◆ ~MainFrame()

MainFrame::~MainFrame ( )
virtual

Destructor - cleans up AUI manager and panels.

Definition at line 198 of file MainFrame.cpp.

Member Function Documentation

◆ CenterOnNode()

void MainFrame::CenterOnNode ( EmberCore::ITreeNode * node)

Definition at line 1978 of file MainFrame.cpp.

◆ CloseProject()

void MainFrame::CloseProject ( )

Definition at line 2675 of file MainFrame.cpp.

◆ CountTabGlobally()

int MainFrame::CountTabGlobally ( const wxString & tabName) const

Definition at line 1518 of file MainFrame.cpp.

◆ CreateMenuAndStatusBar()

void MainFrame::CreateMenuAndStatusBar ( )
private

Definition at line 256 of file MainFrame.cpp.

◆ CreatePanelLayout()

void MainFrame::CreatePanelLayout ( )
private

Definition at line 647 of file MainFrame.cpp.

◆ CreatePanelToggleToolbar()

void MainFrame::CreatePanelToggleToolbar ( )
private

Definition at line 346 of file MainFrame.cpp.

◆ CreateProjectOverviewScene()

void MainFrame::CreateProjectOverviewScene ( )
private

Definition at line 2563 of file MainFrame.cpp.

◆ DoSaveXML()

void MainFrame::DoSaveXML ( const wxString & filePath)
private

Definition at line 1255 of file MainFrame.cpp.

◆ GetActiveProject()

std::shared_ptr< EmberCore::BehaviorTreeProject > MainFrame::GetActiveProject ( ) const

Definition at line 2791 of file MainFrame.cpp.

◆ GetAuiManager()

wxAuiManager * MainFrame::GetAuiManager ( )
inline

Definition at line 111 of file MainFrame.h.

◆ GetCurrentTreeId()

const std::string & MainFrame::GetCurrentTreeId ( ) const
inline

Definition at line 147 of file MainFrame.h.

◆ GetSharedBehaviorTree()

std::shared_ptr< EmberCore::Node > MainFrame::GetSharedBehaviorTree ( ) const

Definition at line 1924 of file MainFrame.cpp.

◆ HasActiveProject()

bool MainFrame::HasActiveProject ( ) const

Definition at line 2789 of file MainFrame.cpp.

◆ InitializeConfigurationMenu()

void MainFrame::InitializeConfigurationMenu ( )
private

Definition at line 406 of file MainFrame.cpp.

◆ InvalidateCanvasLayout()

void MainFrame::InvalidateCanvasLayout ( )

Definition at line 2011 of file MainFrame.cpp.

◆ IsActiveSceneBehaviorTree()

bool MainFrame::IsActiveSceneBehaviorTree ( ) const

Definition at line 2510 of file MainFrame.cpp.

◆ LoadTreeIntoScene()

void MainFrame::LoadTreeIntoScene ( const std::string & treeId)

Definition at line 2454 of file MainFrame.cpp.

◆ LoadXMLFile()

void MainFrame::LoadXMLFile ( const wxString & filePath,
bool confirmOverride = false )

Definition at line 1004 of file MainFrame.cpp.

◆ LoadXMLFileInNewScene()

void MainFrame::LoadXMLFileInNewScene ( const wxString & filePath)

Definition at line 1207 of file MainFrame.cpp.

◆ LogMessage()

void MainFrame::LogMessage ( const wxString & message)

Definition at line 1701 of file MainFrame.cpp.

◆ NavigateToBlackboard()

void MainFrame::NavigateToBlackboard ( const std::string & bbId)

Definition at line 1907 of file MainFrame.cpp.

◆ NewProject()

void MainFrame::NewProject ( )

Definition at line 2099 of file MainFrame.cpp.

◆ OnAbout()

void MainFrame::OnAbout ( wxCommandEvent & event)
private

Definition at line 971 of file MainFrame.cpp.

◆ OnCloseProject()

void MainFrame::OnCloseProject ( wxCommandEvent & event)
private

Definition at line 2090 of file MainFrame.cpp.

◆ OnEditorTool()

void MainFrame::OnEditorTool ( wxCommandEvent & event)
private

Definition at line 1546 of file MainFrame.cpp.

◆ OnExit()

void MainFrame::OnExit ( wxCommandEvent & event)
private

Definition at line 969 of file MainFrame.cpp.

◆ OnFrameResize()

void MainFrame::OnFrameResize ( wxSizeEvent & event)
private

Definition at line 957 of file MainFrame.cpp.

◆ OnHierarchySelectionChanged()

void MainFrame::OnHierarchySelectionChanged ( EmberCore::ITreeNode * selectedNode)

Definition at line 1712 of file MainFrame.cpp.

◆ OnIdle()

void MainFrame::OnIdle ( wxIdleEvent & event)
private

Definition at line 945 of file MainFrame.cpp.

◆ OnLoadXML()

void MainFrame::OnLoadXML ( wxCommandEvent & event)
private

Definition at line 977 of file MainFrame.cpp.

◆ OnLogReplayTool()

void MainFrame::OnLogReplayTool ( wxCommandEvent & event)
private

Definition at line 1558 of file MainFrame.cpp.

◆ OnMonitorTool()

void MainFrame::OnMonitorTool ( wxCommandEvent & event)
private

Definition at line 1552 of file MainFrame.cpp.

◆ OnNavigatorTabClosed()

void MainFrame::OnNavigatorTabClosed ( )

Definition at line 1919 of file MainFrame.cpp.

◆ OnNewProject()

void MainFrame::OnNewProject ( wxCommandEvent & event)
private

Definition at line 2086 of file MainFrame.cpp.

◆ OnNextScene()

void MainFrame::OnNextScene ( wxCommandEvent & event)
private

Definition at line 1578 of file MainFrame.cpp.

◆ OnOpenProject()

void MainFrame::OnOpenProject ( wxCommandEvent & event)
private

Definition at line 2088 of file MainFrame.cpp.

◆ OnPaint()

void MainFrame::OnPaint ( wxPaintEvent & event)
private

Definition at line 940 of file MainFrame.cpp.

◆ OnParserConfig()

void MainFrame::OnParserConfig ( wxCommandEvent & event)
private

Definition at line 1532 of file MainFrame.cpp.

◆ OnPreferences()

void MainFrame::OnPreferences ( wxCommandEvent & event)
private

Definition at line 1374 of file MainFrame.cpp.

◆ OnPreviousScene()

void MainFrame::OnPreviousScene ( wxCommandEvent & event)
private

Definition at line 1584 of file MainFrame.cpp.

◆ OnProjectSettings()

void MainFrame::OnProjectSettings ( wxCommandEvent & event)
private

Definition at line 2094 of file MainFrame.cpp.

◆ OnPropertiesTabClosed()

void MainFrame::OnPropertiesTabClosed ( )

Definition at line 1872 of file MainFrame.cpp.

◆ OnResetUI()

void MainFrame::OnResetUI ( wxCommandEvent & event)
private

Definition at line 1611 of file MainFrame.cpp.

◆ OnResetZoom()

void MainFrame::OnResetZoom ( wxCommandEvent & event)
private

Definition at line 1590 of file MainFrame.cpp.

◆ OnSaveAsXML()

void MainFrame::OnSaveAsXML ( wxCommandEvent & event)
private

Definition at line 1244 of file MainFrame.cpp.

◆ OnSaveProject()

void MainFrame::OnSaveProject ( wxCommandEvent & event)
private

Definition at line 2092 of file MainFrame.cpp.

◆ OnSaveXML()

void MainFrame::OnSaveXML ( wxCommandEvent & event)
private

Definition at line 1233 of file MainFrame.cpp.

◆ OnSceneSelectionChanged()

void MainFrame::OnSceneSelectionChanged ( EmberCore::ITreeNode * selectedNode)

Definition at line 1815 of file MainFrame.cpp.

◆ OnToggleBottomPanel()

void MainFrame::OnToggleBottomPanel ( wxCommandEvent & event)
private

Definition at line 1415 of file MainFrame.cpp.

◆ OnToggleLeftPanel()

void MainFrame::OnToggleLeftPanel ( wxCommandEvent & event)
private

Definition at line 1390 of file MainFrame.cpp.

◆ OnToggleMaximize()

void MainFrame::OnToggleMaximize ( wxCommandEvent & event)
private

Definition at line 1565 of file MainFrame.cpp.

◆ OnToggleRightPanel()

void MainFrame::OnToggleRightPanel ( wxCommandEvent & event)
private

Definition at line 1440 of file MainFrame.cpp.

◆ OpenProject() [1/2]

void MainFrame::OpenProject ( )

Definition at line 2146 of file MainFrame.cpp.

◆ OpenProject() [2/2]

void MainFrame::OpenProject ( const wxString & projectPath)

Definition at line 2157 of file MainFrame.cpp.

◆ OpenTreeInNewScene()

void MainFrame::OpenTreeInNewScene ( const std::string & treeId)

Definition at line 2517 of file MainFrame.cpp.

◆ RefreshCanvasVisualization()

void MainFrame::RefreshCanvasVisualization ( )

Definition at line 511 of file MainFrame.cpp.

◆ RefreshHierarchyTree()

void MainFrame::RefreshHierarchyTree ( )

Definition at line 2029 of file MainFrame.cpp.

◆ RefreshMenuHotkeys()

void MainFrame::RefreshMenuHotkeys ( )
private

Definition at line 411 of file MainFrame.cpp.

◆ RefreshPreferences()

void MainFrame::RefreshPreferences ( )

Definition at line 541 of file MainFrame.cpp.

◆ SaveProject()

void MainFrame::SaveProject ( )

Definition at line 2742 of file MainFrame.cpp.

◆ ShowProjectSettings()

void MainFrame::ShowProjectSettings ( )

Definition at line 2772 of file MainFrame.cpp.

◆ SyncSelection()

void MainFrame::SyncSelection ( EmberCore::ITreeNode * selectedNode)

Definition at line 2035 of file MainFrame.cpp.

◆ UpdateNavigatorTabReference()

void MainFrame::UpdateNavigatorTabReference ( ForgeNavigatorTab * navigatorTab)

Definition at line 1877 of file MainFrame.cpp.

◆ UpdatePanelToggleButtons()

void MainFrame::UpdatePanelToggleButtons ( )

Definition at line 1465 of file MainFrame.cpp.

◆ UpdatePropertiesTabReference()

void MainFrame::UpdatePropertiesTabReference ( PropertiesTab * propertiesTab)

Definition at line 1951 of file MainFrame.cpp.

◆ UpdateTreeSelector()

void MainFrame::UpdateTreeSelector ( )

Definition at line 2668 of file MainFrame.cpp.

◆ wxDECLARE_EVENT_TABLE()

MainFrame::wxDECLARE_EVENT_TABLE ( )
private

Member Data Documentation

◆ m_activeProject

std::shared_ptr<EmberCore::BehaviorTreeProject> MainFrame::m_activeProject
private

Definition at line 217 of file MainFrame.h.

◆ m_auiManager

wxAuiManager* MainFrame::m_auiManager
private

Definition at line 203 of file MainFrame.h.

◆ m_blackboardIncludesMap

std::map<std::string, std::vector<std::string> > MainFrame::m_blackboardIncludesMap
private

Definition at line 220 of file MainFrame.h.

◆ m_blackboardScene

BlackboardScene* MainFrame::m_blackboardScene = nullptr
private

Definition at line 221 of file MainFrame.h.

◆ m_bottomPanel

BottomPanel* MainFrame::m_bottomPanel
private

Definition at line 206 of file MainFrame.h.

◆ m_currentFilePath

wxString MainFrame::m_currentFilePath
private

Definition at line 213 of file MainFrame.h.

◆ m_currentTreeId

std::string MainFrame::m_currentTreeId
private

Definition at line 222 of file MainFrame.h.

◆ m_isUpdatingFromHierarchy

bool MainFrame::m_isUpdatingFromHierarchy = false
private

Definition at line 230 of file MainFrame.h.

◆ m_isUpdatingFromScene

bool MainFrame::m_isUpdatingFromScene = false
private

Definition at line 231 of file MainFrame.h.

◆ m_lastClientSize

wxSize MainFrame::m_lastClientSize
private

Definition at line 227 of file MainFrame.h.

◆ m_layout

EmberUI::ProportionalLayout MainFrame::m_layout
private

Definition at line 226 of file MainFrame.h.

◆ m_leftPanel

LeftSidePanel* MainFrame::m_leftPanel
private

Definition at line 204 of file MainFrame.h.

◆ m_mainTreeName

std::string MainFrame::m_mainTreeName
private

Definition at line 223 of file MainFrame.h.

◆ m_navigatorTab

ForgeNavigatorTab* MainFrame::m_navigatorTab
private

Definition at line 208 of file MainFrame.h.

◆ m_panelToggleToolbar

wxToolBar* MainFrame::m_panelToggleToolbar
private

Definition at line 210 of file MainFrame.h.

◆ m_projectBlackboards

std::map<std::string, std::shared_ptr<EmberCore::Blackboard> > MainFrame::m_projectBlackboards
private

Definition at line 219 of file MainFrame.h.

◆ m_projectTrees

std::map<std::string, std::shared_ptr<EmberCore::BehaviorTree> > MainFrame::m_projectTrees
private

Definition at line 218 of file MainFrame.h.

◆ m_propertiesTab

PropertiesTab* MainFrame::m_propertiesTab
private

Definition at line 207 of file MainFrame.h.

◆ m_rightPanel

RightSidePanel* MainFrame::m_rightPanel
private

Definition at line 205 of file MainFrame.h.

◆ m_scenePanel

MainPanel* MainFrame::m_scenePanel
private

Definition at line 209 of file MainFrame.h.

◆ m_treeModified

bool MainFrame::m_treeModified = false
private

Definition at line 214 of file MainFrame.h.


The documentation for this class was generated from the following files: