7#include <wx/listctrl.h>
8#include <wx/notebook.h>
9#include <wx/scrolwin.h>
10#include <wx/splitter.h>
11#include <wx/stc/stc.h>
13#include <wx/treectrl.h>
40 std::shared_ptr<EmberCore::BehaviorTreeProject> project =
nullptr);
83 void OnCreate(wxCommandEvent &event);
84 void OnCancel(wxCommandEvent &event);
85 void OnSave(wxCommandEvent &event);
98 void LoadXMLPreview(
const std::string &filepath,
int highlightLine = -1);
99 void LoadTreePreview(
const std::string &filepath,
const std::string &treeId);
108 wxColour
InterpolateColor(
const wxColour &color1,
const wxColour &color2,
float t);
119 std::shared_ptr<EmberCore::BehaviorTreeProject>
m_project;
void UpdateCreateButtonState()
BehaviorTreeProjectDialog(wxWindow *parent, std::shared_ptr< EmberCore::BehaviorTreeProject > project=nullptr)
Construct a new dialog for creating/editing a project.
void DrawBlackboardDiagram(wxDC &dc)
static wxString s_lastUsedDirectory
void OnResourceSelected(wxListEvent &event)
void SetResourceItemStatus(long item, bool valid, int treeCount)
void OnProfileSelected(wxCommandEvent &event)
void LoadTreePreview(const std::string &filepath, const std::string &treeId)
void OnClearFiles(wxCommandEvent &event)
void PopulateFromProject()
void UpdateFieldHighlighting()
wxPanel * CreatePreviewTab(wxNotebook *notebook)
wxPanel * CreateValidationTab(wxNotebook *notebook)
wxButton * m_removeFilesBtn
wxTextCtrl * m_projectName
wxCheckBox * m_showErrorsCheckBox
void OnValidate(wxCommandEvent &event)
wxButton * m_addFolderBtn
wxString m_lastValidatedParserProfile
wxColour InterpolateColor(const wxColour &color1, const wxColour &color2, float t)
void UpdateResourceList()
~BehaviorTreeProjectDialog()
wxPanel * CreateBlackboardTab(wxNotebook *notebook)
void OnDescriptionChanged(wxCommandEvent &event)
wxStaticText * m_validationProgressText
wxPanel * CreateRightPanel(wxWindow *parent)
void OnCancel(wxCommandEvent &event)
wxTextCtrl * m_validationReport
void OnSave(wxCommandEvent &event)
wxChoice * m_parserProfile
wxStaticText * m_resourceCountLabel
void OnPulseTimer(wxTimerEvent &event)
void OnProjectNameChanged(wxCommandEvent &event)
std::vector< ClickableItem > m_clickableItems
void OnStructurePanelClick(wxMouseEvent &event)
wxStyledTextCtrl * m_xmlPreviewPanel
void OnResourceActivated(wxListEvent &event)
wxScrolledWindow * m_blackboardPanel
wxStaticText * m_validationStatus
void OnRefreshPreview(wxCommandEvent &event)
void LoadBlackboardPreview(const std::string &filepath, const std::string &blackboardId)
wxTextCtrl * m_projectDescription
std::unique_ptr< EmberCore::ProjectValidationReport > m_lastValidationReport
void GenerateColoredValidationReport(const EmberCore::ProjectValidationReport &report)
wxListCtrl * m_resourceList
void LoadXMLPreview(const std::string &filepath, int highlightLine=-1)
void UpdateBlackboardTab()
wxCheckBox * m_showBlackboardsCheckBox
wxCheckBox * m_showFilesCheckBox
wxCheckBox * m_showProjectIssuesCheckBox
void OnCreate(wxCommandEvent &event)
wxTextCtrl * m_warningDetailsPanel
bool IsProjectValid() const
Check if the project configuration is valid.
void OnPreviewFilterChanged(wxCommandEvent &event)
std::shared_ptr< EmberCore::BehaviorTreeProject > m_project
wxGauge * m_validationProgress
void DrawFileStructureDiagram(wxDC &dc)
void OnAddFolder(wxCommandEvent &event)
wxCheckBox * m_showTreesCheckBox
std::shared_ptr< EmberCore::BehaviorTreeProject > GetProject() const
Get the configured project (after dialog is closed with OK)
wxPanel * CreateLeftPanel(wxWindow *parent)
wxButton * m_refreshPreviewBtn
bool IsValidProjectName(const wxString &name) const
wxPanel * CreateResourcesTab(wxNotebook *notebook)
void ValidateAndUpdateUI()
wxStaticText * m_treeCountLabel
wxImageList * m_resourceImageList
void UpdateValidationReport()
wxScrolledWindow * m_fileStructurePanel
void OnAddFiles(wxCommandEvent &event)
wxString GetResourceStatusIcon(bool valid) const
wxStaticBitmap * m_validationIcon
wxCheckBox * m_showWarningsCheckBox
wxButton * m_clearFilesBtn
void OnRemoveFiles(wxCommandEvent &event)
Represents a BehaviorTree project containing multiple XML resources.
DPI-aware dialog base class for scalable layouts.
Main types header for EmberCore.
Complete validation report for a project.