6#include "Tabs/PropertiesTab.h"
14 LOG_ERROR(
"TabFactory",
"Cannot create tab: parent window is null");
21 LOG_INFO(
"TabFactory",
"Creating Properties tab");
22 auto tab = std::make_unique<PropertiesTab>(parent, mainFrame);
33 LOG_INFO(
"TabFactory",
"Creating Log tab");
34 return std::make_unique<LogTab>(parent);
38 LOG_INFO(
"TabFactory",
"Creating Performance tab");
39 return std::make_unique<EmberForge::PerformancePanel>(parent);
43 LOG_INFO(
"TabFactory",
"Creating File Explorer tab");
44 return std::make_unique<FileExplorerTab>(parent);
48 LOG_INFO(
"TabFactory",
"Creating Navigator tab");
49 auto tab = std::make_unique<ForgeNavigatorTab>(parent, mainFrame);
59 LOG_ERROR(
"TabFactory",
"Unknown tab type requested: " + std::to_string(
static_cast<int>(type)));
62 }
catch (
const std::exception &e) {
63 LOG_ERROR(
"TabFactory",
"Exception while creating tab: " + std::string(e.what()));
66 LOG_ERROR(
"TabFactory",
"Unknown exception while creating tab");
80 return "File Explorer";
91 return "View and edit object properties";
93 return "View application logs and debug information";
95 return "Monitor application performance metrics";
97 return "Browse and manage project files";
99 return "Browse trees, navigate node hierarchy, and search across the project";
101 return "Unknown tab type";
188 return "Performance";
190 return "FileExplorer";
194 return "FileExplorer";
200 if (str ==
"SceneHierarchy" || str ==
"TreeSelector")
204 if (str ==
"Properties")
208 if (str ==
"Performance")
210 if (str ==
"FileExplorer")
212 if (str ==
"Navigator")
#define LOG_ERROR(category, message)
#define LOG_INFO(category, message)
static wxString GetTabDisplayName(TabType type)
Get the display name for a tab type.
static wxString GetTabTooltip(TabType type)
Get the tooltip text for a tab type.
static std::unique_ptr< ITab > CreateTab(TabType type, wxWindow *parent, MainFrame *mainFrame=nullptr)
Create a tab of the specified type.
static std::vector< TabType > GetSidePanelTabTypes()
Get tab types supported by the side panels.
static std::string TabTypeToString(TabType type)
Convert tab type to string identifier (for preferences storage)
static int GetMaxGlobalInstances(TabType type)
Get the maximum number of instances allowed globally across all panels.
static std::vector< TabType > GetAvailableTabTypes()
Get all available tab types.
static bool IsTabAllowedInPanel(TabType tabType, EmberForge::PanelType panelType)
Check if a tab type is allowed in a specific panel type.
static bool AllowMultipleInstances(TabType type)
Check if a tab type can be created multiple times within a single panel.
static TabType StringToTabType(const std::string &str)
Convert string identifier to tab type.
static std::vector< TabType > GetBottomPanelTabTypes()
Get tab types supported by the bottom panel.
Main application window for EmberForge.
void UpdatePropertiesTabReference(PropertiesTab *propertiesTab)
void UpdateNavigatorTabReference(ForgeNavigatorTab *navigatorTab)
PanelType
Defines the type of panel in the UI hierarchy.
TabType
Enumeration of available tab types.