yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
yaze::editor::WindowContent Class Referenceabstract

Base interface for all logical window content components. More...

#include <editor_panel.h>

Inherited by yaze::editor::AboutPanel, yaze::editor::AgentBotProfilesPanel, yaze::editor::AgentBuilderPanel, yaze::editor::AgentChatHistoryPanel, yaze::editor::AgentChatPanel, yaze::editor::AgentConfigurationPanel, yaze::editor::AgentKnowledgeBasePanel, yaze::editor::AgentMesenDebugPanel, yaze::editor::AgentMetricsDashboardPanel, yaze::editor::AgentPromptEditorPanel, yaze::editor::AgentStatusPanel, yaze::editor::AnnotationOverlayPanel, yaze::editor::AnnotationOverlayPanel, yaze::editor::AreaGraphicsPanel, yaze::editor::AreaGraphicsView, yaze::editor::AssemblyBuildOutputPanel, yaze::editor::AssemblyCodeEditorPanel, yaze::editor::AssemblyDisassemblyPanel, yaze::editor::AssemblyFileBrowserPanel, yaze::editor::AssemblySymbolsPanel, yaze::editor::AssemblyToolbarPanel, yaze::editor::ChestEditorPanel, yaze::editor::CustomCollisionPanel, yaze::editor::CustomPalettePanel, yaze::editor::CustomSpriteEditorPanel, yaze::editor::DebugWindowPanel, yaze::editor::DebugWindowView, yaze::editor::DictionaryPanel, yaze::editor::DoorEditorContent, yaze::editor::DungeonEmulatorPreviewPanel, yaze::editor::DungeonEntranceListPanel, yaze::editor::DungeonEntrancesPanel, yaze::editor::DungeonMapPanel, yaze::editor::DungeonMapsPanel, yaze::editor::DungeonSettingsPanel, yaze::editor::DungeonWorkbenchContent, yaze::editor::FeatureFlagEditorEditorPanel, yaze::editor::FontAtlasPanel, yaze::editor::GfxGroupsPanel, yaze::editor::GfxGroupsView, yaze::editor::GraphicsGfxGroupPanel, yaze::editor::GraphicsLinkSpritePanel, yaze::editor::GraphicsPaletteControlsPanel, yaze::editor::GraphicsPalettesetPanel, yaze::editor::GraphicsPixelEditorPanel, yaze::editor::GraphicsPolyhedralPanel, yaze::editor::GraphicsPrototypeViewerPanel, yaze::editor::GraphicsSheetBrowserPanel, yaze::editor::InventoryMenuPanel, yaze::editor::ItemEditorPanel, yaze::editor::LinkSpritePanel, yaze::editor::LinkSpriteView, yaze::editor::ManifestEditorPanel, yaze::editor::MapPropertiesPanel, yaze::editor::MapPropertiesView, yaze::editor::MesenScreenshotEditorPanel, yaze::editor::MessageEditorPanel, yaze::editor::MessageListPanel, yaze::editor::MinecartTrackEditorPanel, yaze::editor::MusicAssemblyPanel, yaze::editor::MusicAudioDebugPanel, yaze::editor::MusicHelpPanel, yaze::editor::MusicInstrumentEditorPanel, yaze::editor::MusicPianoRollPanel, yaze::editor::MusicPlaybackControlPanel, yaze::editor::MusicSampleEditorPanel, yaze::editor::MusicSongBrowserPanel, yaze::editor::NamingScreenPanel, yaze::editor::ObjectEditorContent, yaze::editor::ObjectSelectorContent, yaze::editor::ObjectTileEditorPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleRamPanel, yaze::editor::OracleStateLibraryEditorPanel, yaze::editor::OracleValidationPanel, yaze::editor::OracleValidationPanel, yaze::editor::OverlayManagerPanel, yaze::editor::OverworldCanvasPanel, yaze::editor::OverworldCanvasView, yaze::editor::OverworldEntityWorkbench, yaze::editor::OverworldItemListPanel, yaze::editor::OverworldItemListView, yaze::editor::OverworldMapScreenPanel, yaze::editor::PaletteControlPanel, yaze::editor::PaletteControlsPanel, yaze::editor::PaletteControlsView, yaze::editor::PaletteEditorContent, yaze::editor::PaletteGroupPanel, yaze::editor::PalettesetEditorView, yaze::editor::PixelEditorPanel, yaze::editor::PixelEditorView, yaze::editor::PolyhedralEditorPanel, yaze::editor::PolyhedralEditorView, yaze::editor::ProgressionDashboardPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::PrototypeResearchView, yaze::editor::QuickAccessPalettePanel, yaze::editor::ResourceWindowContent, yaze::editor::ResourceWindowContent, yaze::editor::RoomBrowserContent, yaze::editor::RoomGraphicsContent, yaze::editor::RoomMatrixContent, yaze::editor::RoomTagEditorPanel, yaze::editor::ScratchSpacePanel, yaze::editor::ScratchSpaceView, yaze::editor::ScreenWorkspaceView, yaze::editor::SheetBrowserPanel, yaze::editor::SheetBrowserView, yaze::editor::SpriteEditorPanel, yaze::editor::SramViewerEditorPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::Tile16EditorPanel, yaze::editor::Tile16EditorView, yaze::editor::Tile16SelectorPanel, yaze::editor::Tile16SelectorView, yaze::editor::Tile8SelectorPanel, yaze::editor::Tile8SelectorView, yaze::editor::TitleScreenPanel, yaze::editor::UsageStatisticsPanel, yaze::editor::UsageStatisticsView, yaze::editor::V3SettingsPanel, yaze::editor::V3SettingsView, yaze::editor::VanillaSpriteEditorPanel, yaze::editor::WaterFillPanel, and yaze::editor::workflow::ProjectWorkflowOutputPanel.

Public Member Functions

virtual ~WindowContent ()=default
 
virtual std::string GetId () const =0
 Unique identifier for this panel.
 
virtual std::string GetDisplayName () const =0
 Human-readable name shown in menus and title bars.
 
virtual std::string GetIcon () const =0
 Material Design icon for this panel.
 
virtual std::string GetEditorCategory () const =0
 Editor category this panel belongs to.
 
virtual void Draw (bool *p_open)=0
 Draw the panel content.
 
virtual void OnFirstDraw ()
 Called once before the first Draw() in a session.
 
virtual bool RequiresLazyInit () const
 Whether this panel uses lazy initialization.
 
void InvalidateLazyInit ()
 Reset lazy init state so OnFirstDraw() runs again.
 
virtual void OnOpen ()
 Called when panel becomes visible.
 
virtual void OnClose ()
 Called when panel is hidden.
 
virtual void OnFocus ()
 Called when panel receives focus.
 
virtual WindowLifecycle GetWindowLifecycle () const
 Get the lifecycle category for this window.
 
virtual WindowContextScope GetContextScope () const
 Optional context binding for this window (room/selection/etc)
 
virtual WindowScope GetScope () const
 Get the registration scope for this window.
 
virtual bool IsEnabled () const
 Check if this panel is currently enabled.
 
virtual std::string GetDisabledTooltip () const
 Get tooltip text when panel is disabled.
 
virtual std::string GetShortcutHint () const
 Get keyboard shortcut hint for display.
 
virtual int GetPriority () const
 Get display priority for menu ordering.
 
virtual std::string GetWorkflowGroup () const
 Optional workflow group for hack-centric actions.
 
virtual std::string GetWorkflowLabel () const
 Optional workflow label for menus/command palette.
 
virtual std::string GetWorkflowDescription () const
 Optional workflow description for menus/command palette.
 
virtual int GetWorkflowPriority () const
 Optional workflow ordering priority (lower sorts first).
 
virtual float GetPreferredWidth () const
 Get preferred width for this panel (optional)
 
virtual bool PreferAutoHideTabBar () const
 Whether the dock node hosting this panel should auto-hide its tab bar.
 
virtual bool IsVisibleByDefault () const
 Whether this panel should be visible by default.
 
virtual std::string GetParentPanelId () const
 Get parent panel ID for cascade behavior.
 
virtual bool CascadeCloseChildren () const
 Whether closing this panel should close child panels.
 
void DrawWithLazyInit (bool *p_open)
 Execute lazy initialization if needed, then call Draw()
 

Protected Member Functions

void InvalidateCache ()
 Invalidate all cached computations.
 
template<typename T >
T & GetCached (const std::string &key, std::function< T()> compute)
 Get or compute a cached value.
 
bool IsCacheValid () const
 Check if cache has been invalidated.
 
void ClearCache ()
 Clear all cached values (more aggressive than InvalidateCache)
 

Private Attributes

bool lazy_init_done_ = false
 
bool cache_valid_ = false
 
std::unordered_map< std::string, std::any > cache_
 

Detailed Description

Base interface for all logical window content components.

WindowContent represents a logical UI component that draws content within a panel window. This is distinct from PanelWindow (the ImGui wrapper that draws the window chrome/title bar).

The separation allows:

  • WorkspaceWindowManager to handle window creation/visibility centrally
  • Panel components to focus purely on content drawing
  • Consistent window behavior across all editors

Example

public:
std::string GetId() const override { return "overworld.usage_stats"; }
std::string GetDisplayName() const override { return "Usage Statistics"; }
std::string GetIcon() const override { return ICON_MD_ANALYTICS; }
std::string GetEditorCategory() const override { return "Overworld"; }
void Draw(bool* p_open) override {
// Draw your content here - no ImGui::Begin/End needed
// WorkspaceWindowManager handles the window wrapper
DrawUsageGrid();
DrawUsageStates();
}
};
Displays tile usage statistics across all overworld maps.
Base interface for all logical window content components.
#define ICON_MD_ANALYTICS
Definition icons.h:154
See also
PanelWindow - The ImGui window wrapper (draws chrome)
WorkspaceWindowManager - Central registry that manages panel lifecycle
WindowDescriptor - Metadata struct for window registration

Definition at line 89 of file editor_panel.h.

Constructor & Destructor Documentation

◆ ~WindowContent()

virtual yaze::editor::WindowContent::~WindowContent ( )
virtualdefault

Member Function Documentation

◆ GetId()

virtual std::string yaze::editor::WindowContent::GetId ( ) const
pure virtual

Unique identifier for this panel.

Returns
Panel ID in format "{category}.{name}" (e.g., "dungeon.room_selector")

IDs should be:

  • Lowercase with underscores
  • Prefixed with editor category
  • Unique across all panels

Implemented in yaze::editor::OracleRamPanel, yaze::editor::AgentConfigurationPanel, yaze::editor::AgentStatusPanel, yaze::editor::AgentPromptEditorPanel, yaze::editor::AgentBotProfilesPanel, yaze::editor::AgentChatHistoryPanel, yaze::editor::AgentMetricsDashboardPanel, yaze::editor::AgentBuilderPanel, yaze::editor::AgentMesenDebugPanel, yaze::editor::AgentKnowledgeBasePanel, yaze::editor::AgentChatPanel, yaze::editor::OracleStateLibraryEditorPanel, yaze::editor::FeatureFlagEditorEditorPanel, yaze::editor::ManifestEditorPanel, yaze::editor::SramViewerEditorPanel, yaze::editor::MesenScreenshotEditorPanel, yaze::editor::AssemblyCodeEditorPanel, yaze::editor::AssemblyFileBrowserPanel, yaze::editor::AssemblySymbolsPanel, yaze::editor::AssemblyBuildOutputPanel, yaze::editor::AssemblyDisassemblyPanel, yaze::editor::AssemblyToolbarPanel, yaze::editor::DoorEditorContent, yaze::editor::ObjectEditorContent, yaze::editor::PaletteEditorContent, yaze::editor::ObjectSelectorContent, yaze::editor::ChestEditorPanel, yaze::editor::CustomCollisionPanel, yaze::editor::DungeonEmulatorPreviewPanel, yaze::editor::DungeonEntranceListPanel, yaze::editor::DungeonEntrancesPanel, yaze::editor::DungeonMapPanel, yaze::editor::DungeonSettingsPanel, yaze::editor::ItemEditorPanel, yaze::editor::MinecartTrackEditorPanel, yaze::editor::ObjectTileEditorPanel, yaze::editor::OverlayManagerPanel, yaze::editor::RoomTagEditorPanel, yaze::editor::SpriteEditorPanel, yaze::editor::WaterFillPanel, yaze::editor::DungeonWorkbenchContent, yaze::editor::RoomBrowserContent, yaze::editor::RoomGraphicsContent, yaze::editor::RoomMatrixContent, yaze::editor::LinkSpritePanel, yaze::editor::PaletteControlsPanel, yaze::editor::GraphicsSheetBrowserPanel, yaze::editor::GraphicsPixelEditorPanel, yaze::editor::GraphicsPaletteControlsPanel, yaze::editor::GraphicsLinkSpritePanel, yaze::editor::GraphicsPolyhedralPanel, yaze::editor::GraphicsGfxGroupPanel, yaze::editor::GraphicsPrototypeViewerPanel, yaze::editor::GraphicsPalettesetPanel, yaze::editor::DungeonMapsPanel, yaze::editor::InventoryMenuPanel, yaze::editor::OverworldMapScreenPanel, yaze::editor::TitleScreenPanel, yaze::editor::NamingScreenPanel, yaze::editor::PixelEditorPanel, yaze::editor::PolyhedralEditorPanel, yaze::editor::SheetBrowserPanel, yaze::editor::SheetBrowserView, yaze::editor::PixelEditorView, yaze::editor::PaletteControlsView, yaze::editor::PalettesetEditorView, yaze::editor::PolyhedralEditorView, yaze::editor::PrototypeResearchView, yaze::editor::DungeonMapsView, yaze::editor::InventoryMenuView, yaze::editor::OverworldMapScreenView, yaze::editor::TitleScreenView, yaze::editor::NamingScreenView, yaze::editor::LinkSpriteView, yaze::editor::AnnotationOverlayPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::workflow::ProjectWorkflowOutputPanel, yaze::editor::MessageListPanel, yaze::editor::MessageEditorPanel, yaze::editor::FontAtlasPanel, yaze::editor::DictionaryPanel, yaze::editor::MusicAssemblyPanel, yaze::editor::MusicAudioDebugPanel, yaze::editor::MusicHelpPanel, yaze::editor::MusicInstrumentEditorPanel, yaze::editor::MusicPianoRollPanel, yaze::editor::MusicPlaybackControlPanel, yaze::editor::MusicSampleEditorPanel, yaze::editor::MusicSongBrowserPanel, yaze::editor::AnnotationOverlayPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::OverworldEntityWorkbench, yaze::editor::AreaGraphicsPanel, yaze::editor::DebugWindowPanel, yaze::editor::GfxGroupsPanel, yaze::editor::MapPropertiesPanel, yaze::editor::OverworldCanvasPanel, yaze::editor::OverworldItemListPanel, yaze::editor::ScratchSpacePanel, yaze::editor::Tile16EditorPanel, yaze::editor::Tile16SelectorPanel, yaze::editor::Tile8SelectorPanel, yaze::editor::UsageStatisticsPanel, yaze::editor::V3SettingsPanel, yaze::editor::UsageStatisticsView, yaze::editor::OverworldCanvasView, yaze::editor::DebugWindowView, yaze::editor::AreaGraphicsView, yaze::editor::GfxGroupsView, yaze::editor::OverworldItemListView, yaze::editor::MapPropertiesView, yaze::editor::V3SettingsView, yaze::editor::Tile16EditorView, yaze::editor::Tile16SelectorView, yaze::editor::Tile8SelectorView, yaze::editor::ScratchSpaceView, yaze::editor::PaletteControlPanel, yaze::editor::QuickAccessPalettePanel, yaze::editor::CustomPalettePanel, yaze::editor::PaletteGroupPanel, yaze::editor::AboutPanel, yaze::editor::VanillaSpriteEditorPanel, yaze::editor::CustomSpriteEditorPanel, yaze::editor::ResourceWindowContent, and yaze::editor::ResourceWindowContent.

Referenced by yaze::editor::anonymous_namespace{workspace_window_manager.cc}::BuildDescriptorFromPanel(), yaze::editor::anonymous_namespace{workspace_window_manager_state.cc}::BuildDescriptorFromPanel(), and yaze::editor::WorkspaceWindowManager::RegisterPanelDescriptorForSession().

◆ GetDisplayName()

virtual std::string yaze::editor::WindowContent::GetDisplayName ( ) const
pure virtual

Human-readable name shown in menus and title bars.

Returns
Display name (e.g., "Room Selector")

Implemented in yaze::editor::OracleRamPanel, yaze::editor::AgentConfigurationPanel, yaze::editor::AgentStatusPanel, yaze::editor::AgentPromptEditorPanel, yaze::editor::AgentBotProfilesPanel, yaze::editor::AgentChatHistoryPanel, yaze::editor::AgentMetricsDashboardPanel, yaze::editor::AgentBuilderPanel, yaze::editor::AgentMesenDebugPanel, yaze::editor::AgentKnowledgeBasePanel, yaze::editor::AgentChatPanel, yaze::editor::OracleStateLibraryEditorPanel, yaze::editor::FeatureFlagEditorEditorPanel, yaze::editor::ManifestEditorPanel, yaze::editor::SramViewerEditorPanel, yaze::editor::MesenScreenshotEditorPanel, yaze::editor::AssemblyCodeEditorPanel, yaze::editor::AssemblyFileBrowserPanel, yaze::editor::AssemblySymbolsPanel, yaze::editor::AssemblyBuildOutputPanel, yaze::editor::AssemblyDisassemblyPanel, yaze::editor::AssemblyToolbarPanel, yaze::editor::DoorEditorContent, yaze::editor::ObjectEditorContent, yaze::editor::PaletteEditorContent, yaze::editor::ObjectSelectorContent, yaze::editor::ChestEditorPanel, yaze::editor::CustomCollisionPanel, yaze::editor::DungeonEmulatorPreviewPanel, yaze::editor::DungeonEntranceListPanel, yaze::editor::DungeonEntrancesPanel, yaze::editor::DungeonMapPanel, yaze::editor::DungeonSettingsPanel, yaze::editor::ItemEditorPanel, yaze::editor::MinecartTrackEditorPanel, yaze::editor::ObjectTileEditorPanel, yaze::editor::OverlayManagerPanel, yaze::editor::RoomTagEditorPanel, yaze::editor::SpriteEditorPanel, yaze::editor::WaterFillPanel, yaze::editor::DungeonWorkbenchContent, yaze::editor::RoomBrowserContent, yaze::editor::RoomGraphicsContent, yaze::editor::RoomMatrixContent, yaze::editor::LinkSpritePanel, yaze::editor::PaletteControlsPanel, yaze::editor::GraphicsSheetBrowserPanel, yaze::editor::GraphicsPixelEditorPanel, yaze::editor::GraphicsPaletteControlsPanel, yaze::editor::GraphicsLinkSpritePanel, yaze::editor::GraphicsPolyhedralPanel, yaze::editor::GraphicsGfxGroupPanel, yaze::editor::GraphicsPrototypeViewerPanel, yaze::editor::GraphicsPalettesetPanel, yaze::editor::DungeonMapsPanel, yaze::editor::InventoryMenuPanel, yaze::editor::OverworldMapScreenPanel, yaze::editor::TitleScreenPanel, yaze::editor::NamingScreenPanel, yaze::editor::PixelEditorPanel, yaze::editor::PolyhedralEditorPanel, yaze::editor::SheetBrowserPanel, yaze::editor::SheetBrowserView, yaze::editor::PixelEditorView, yaze::editor::PaletteControlsView, yaze::editor::PalettesetEditorView, yaze::editor::PolyhedralEditorView, yaze::editor::PrototypeResearchView, yaze::editor::DungeonMapsView, yaze::editor::InventoryMenuView, yaze::editor::OverworldMapScreenView, yaze::editor::TitleScreenView, yaze::editor::NamingScreenView, yaze::editor::LinkSpriteView, yaze::editor::AnnotationOverlayPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::workflow::ProjectWorkflowOutputPanel, yaze::editor::MessageListPanel, yaze::editor::MessageEditorPanel, yaze::editor::FontAtlasPanel, yaze::editor::DictionaryPanel, yaze::editor::MusicAssemblyPanel, yaze::editor::MusicAudioDebugPanel, yaze::editor::MusicHelpPanel, yaze::editor::MusicInstrumentEditorPanel, yaze::editor::MusicPianoRollPanel, yaze::editor::MusicPlaybackControlPanel, yaze::editor::MusicSampleEditorPanel, yaze::editor::MusicSongBrowserPanel, yaze::editor::AnnotationOverlayPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::OverworldEntityWorkbench, yaze::editor::AreaGraphicsPanel, yaze::editor::DebugWindowPanel, yaze::editor::GfxGroupsPanel, yaze::editor::MapPropertiesPanel, yaze::editor::OverworldCanvasPanel, yaze::editor::OverworldItemListPanel, yaze::editor::ScratchSpacePanel, yaze::editor::Tile16EditorPanel, yaze::editor::Tile16SelectorPanel, yaze::editor::Tile8SelectorPanel, yaze::editor::UsageStatisticsPanel, yaze::editor::V3SettingsPanel, yaze::editor::UsageStatisticsView, yaze::editor::OverworldCanvasView, yaze::editor::DebugWindowView, yaze::editor::AreaGraphicsView, yaze::editor::GfxGroupsView, yaze::editor::OverworldItemListView, yaze::editor::MapPropertiesView, yaze::editor::V3SettingsView, yaze::editor::Tile16EditorView, yaze::editor::Tile16SelectorView, yaze::editor::Tile8SelectorView, yaze::editor::ScratchSpaceView, yaze::editor::PaletteControlPanel, yaze::editor::QuickAccessPalettePanel, yaze::editor::CustomPalettePanel, yaze::editor::PaletteGroupPanel, yaze::editor::AboutPanel, yaze::editor::VanillaSpriteEditorPanel, yaze::editor::CustomSpriteEditorPanel, yaze::editor::ResourceWindowContent, and yaze::editor::ResourceWindowContent.

Referenced by yaze::editor::anonymous_namespace{workspace_window_manager.cc}::BuildDescriptorFromPanel(), yaze::editor::anonymous_namespace{workspace_window_manager_state.cc}::BuildDescriptorFromPanel(), yaze::editor::WorkspaceWindowManager::DrawAllVisiblePanels(), and GetWorkflowLabel().

◆ GetIcon()

virtual std::string yaze::editor::WindowContent::GetIcon ( ) const
pure virtual

Material Design icon for this panel.

Returns
Icon constant (e.g., ICON_MD_LIST)

Implemented in yaze::editor::OracleRamPanel, yaze::editor::AgentConfigurationPanel, yaze::editor::AgentStatusPanel, yaze::editor::AgentPromptEditorPanel, yaze::editor::AgentBotProfilesPanel, yaze::editor::AgentChatHistoryPanel, yaze::editor::AgentMetricsDashboardPanel, yaze::editor::AgentBuilderPanel, yaze::editor::AgentMesenDebugPanel, yaze::editor::AgentKnowledgeBasePanel, yaze::editor::AgentChatPanel, yaze::editor::OracleStateLibraryEditorPanel, yaze::editor::FeatureFlagEditorEditorPanel, yaze::editor::ManifestEditorPanel, yaze::editor::SramViewerEditorPanel, yaze::editor::MesenScreenshotEditorPanel, yaze::editor::AssemblyCodeEditorPanel, yaze::editor::AssemblyFileBrowserPanel, yaze::editor::AssemblySymbolsPanel, yaze::editor::AssemblyBuildOutputPanel, yaze::editor::AssemblyDisassemblyPanel, yaze::editor::AssemblyToolbarPanel, yaze::editor::DoorEditorContent, yaze::editor::ObjectEditorContent, yaze::editor::PaletteEditorContent, yaze::editor::ObjectSelectorContent, yaze::editor::ChestEditorPanel, yaze::editor::CustomCollisionPanel, yaze::editor::DungeonEmulatorPreviewPanel, yaze::editor::DungeonEntranceListPanel, yaze::editor::DungeonEntrancesPanel, yaze::editor::DungeonMapPanel, yaze::editor::DungeonRoomPanel, yaze::editor::DungeonSettingsPanel, yaze::editor::ItemEditorPanel, yaze::editor::MinecartTrackEditorPanel, yaze::editor::ObjectTileEditorPanel, yaze::editor::OverlayManagerPanel, yaze::editor::RoomTagEditorPanel, yaze::editor::SpriteEditorPanel, yaze::editor::WaterFillPanel, yaze::editor::DungeonWorkbenchContent, yaze::editor::RoomBrowserContent, yaze::editor::RoomGraphicsContent, yaze::editor::RoomMatrixContent, yaze::editor::LinkSpritePanel, yaze::editor::PaletteControlsPanel, yaze::editor::GraphicsSheetBrowserPanel, yaze::editor::GraphicsPixelEditorPanel, yaze::editor::GraphicsPaletteControlsPanel, yaze::editor::GraphicsLinkSpritePanel, yaze::editor::GraphicsPolyhedralPanel, yaze::editor::GraphicsGfxGroupPanel, yaze::editor::GraphicsPrototypeViewerPanel, yaze::editor::GraphicsPalettesetPanel, yaze::editor::DungeonMapsPanel, yaze::editor::InventoryMenuPanel, yaze::editor::OverworldMapScreenPanel, yaze::editor::TitleScreenPanel, yaze::editor::NamingScreenPanel, yaze::editor::PixelEditorPanel, yaze::editor::PolyhedralEditorPanel, yaze::editor::SheetBrowserPanel, yaze::editor::SheetBrowserView, yaze::editor::PixelEditorView, yaze::editor::PaletteControlsView, yaze::editor::PalettesetEditorView, yaze::editor::PolyhedralEditorView, yaze::editor::PrototypeResearchView, yaze::editor::DungeonMapsView, yaze::editor::InventoryMenuView, yaze::editor::OverworldMapScreenView, yaze::editor::TitleScreenView, yaze::editor::NamingScreenView, yaze::editor::LinkSpriteView, yaze::editor::AnnotationOverlayPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::workflow::ProjectWorkflowOutputPanel, yaze::editor::MessageListPanel, yaze::editor::MessageEditorPanel, yaze::editor::FontAtlasPanel, yaze::editor::DictionaryPanel, yaze::editor::MusicAssemblyPanel, yaze::editor::MusicAudioDebugPanel, yaze::editor::MusicHelpPanel, yaze::editor::MusicInstrumentEditorPanel, yaze::editor::MusicPianoRollPanel, yaze::editor::MusicPlaybackControlPanel, yaze::editor::MusicSampleEditorPanel, yaze::editor::MusicSongBrowserPanel, yaze::editor::AnnotationOverlayPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::OverworldEntityWorkbench, yaze::editor::AreaGraphicsPanel, yaze::editor::DebugWindowPanel, yaze::editor::GfxGroupsPanel, yaze::editor::MapPropertiesPanel, yaze::editor::OverworldCanvasPanel, yaze::editor::OverworldItemListPanel, yaze::editor::ScratchSpacePanel, yaze::editor::Tile16EditorPanel, yaze::editor::Tile16SelectorPanel, yaze::editor::Tile8SelectorPanel, yaze::editor::UsageStatisticsPanel, yaze::editor::V3SettingsPanel, yaze::editor::UsageStatisticsView, yaze::editor::OverworldCanvasView, yaze::editor::DebugWindowView, yaze::editor::AreaGraphicsView, yaze::editor::GfxGroupsView, yaze::editor::OverworldItemListView, yaze::editor::MapPropertiesView, yaze::editor::V3SettingsView, yaze::editor::Tile16EditorView, yaze::editor::Tile16SelectorView, yaze::editor::Tile8SelectorView, yaze::editor::ScratchSpaceView, yaze::editor::PaletteControlPanel, yaze::editor::QuickAccessPalettePanel, yaze::editor::CustomPalettePanel, yaze::editor::PaletteGroupPanel, yaze::editor::OverworldMainPalettePanel, yaze::editor::OverworldAnimatedPalettePanel, yaze::editor::DungeonMainPalettePanel, yaze::editor::SpritePalettePanel, yaze::editor::SpritesAux1PalettePanel, yaze::editor::SpritesAux2PalettePanel, yaze::editor::SpritesAux3PalettePanel, yaze::editor::EquipmentPalettePanel, yaze::editor::AboutPanel, yaze::editor::VanillaSpriteEditorPanel, and yaze::editor::CustomSpriteEditorPanel.

Referenced by yaze::editor::anonymous_namespace{workspace_window_manager.cc}::BuildDescriptorFromPanel(), yaze::editor::anonymous_namespace{workspace_window_manager_state.cc}::BuildDescriptorFromPanel(), and yaze::editor::WorkspaceWindowManager::DrawAllVisiblePanels().

◆ GetEditorCategory()

virtual std::string yaze::editor::WindowContent::GetEditorCategory ( ) const
pure virtual

Editor category this panel belongs to.

Returns
Category name matching EditorType (e.g., "Dungeon", "Overworld")

Implemented in yaze::editor::OracleRamPanel, yaze::editor::AgentConfigurationPanel, yaze::editor::AgentStatusPanel, yaze::editor::AgentPromptEditorPanel, yaze::editor::AgentBotProfilesPanel, yaze::editor::AgentChatHistoryPanel, yaze::editor::AgentMetricsDashboardPanel, yaze::editor::AgentBuilderPanel, yaze::editor::AgentMesenDebugPanel, yaze::editor::AgentKnowledgeBasePanel, yaze::editor::AgentChatPanel, yaze::editor::OracleStateLibraryEditorPanel, yaze::editor::FeatureFlagEditorEditorPanel, yaze::editor::ManifestEditorPanel, yaze::editor::SramViewerEditorPanel, yaze::editor::MesenScreenshotEditorPanel, yaze::editor::AssemblyCodeEditorPanel, yaze::editor::AssemblyFileBrowserPanel, yaze::editor::AssemblySymbolsPanel, yaze::editor::AssemblyBuildOutputPanel, yaze::editor::AssemblyDisassemblyPanel, yaze::editor::AssemblyToolbarPanel, yaze::editor::DoorEditorContent, yaze::editor::ObjectEditorContent, yaze::editor::PaletteEditorContent, yaze::editor::ObjectSelectorContent, yaze::editor::ChestEditorPanel, yaze::editor::CustomCollisionPanel, yaze::editor::DungeonEmulatorPreviewPanel, yaze::editor::DungeonEntranceListPanel, yaze::editor::DungeonEntrancesPanel, yaze::editor::DungeonMapPanel, yaze::editor::DungeonRoomPanel, yaze::editor::DungeonSettingsPanel, yaze::editor::ItemEditorPanel, yaze::editor::MinecartTrackEditorPanel, yaze::editor::ObjectTileEditorPanel, yaze::editor::OverlayManagerPanel, yaze::editor::RoomTagEditorPanel, yaze::editor::SpriteEditorPanel, yaze::editor::WaterFillPanel, yaze::editor::DungeonWorkbenchContent, yaze::editor::RoomBrowserContent, yaze::editor::RoomGraphicsContent, yaze::editor::RoomMatrixContent, yaze::editor::LinkSpritePanel, yaze::editor::PaletteControlsPanel, yaze::editor::GraphicsSheetBrowserPanel, yaze::editor::GraphicsPixelEditorPanel, yaze::editor::GraphicsPaletteControlsPanel, yaze::editor::GraphicsLinkSpritePanel, yaze::editor::GraphicsPolyhedralPanel, yaze::editor::GraphicsGfxGroupPanel, yaze::editor::GraphicsPrototypeViewerPanel, yaze::editor::GraphicsPalettesetPanel, yaze::editor::DungeonMapsPanel, yaze::editor::InventoryMenuPanel, yaze::editor::OverworldMapScreenPanel, yaze::editor::TitleScreenPanel, yaze::editor::NamingScreenPanel, yaze::editor::PixelEditorPanel, yaze::editor::PolyhedralEditorPanel, yaze::editor::SheetBrowserPanel, yaze::editor::SheetBrowserView, yaze::editor::PixelEditorView, yaze::editor::PaletteControlsView, yaze::editor::PalettesetEditorView, yaze::editor::PolyhedralEditorView, yaze::editor::PrototypeResearchView, yaze::editor::DungeonMapsView, yaze::editor::InventoryMenuView, yaze::editor::OverworldMapScreenView, yaze::editor::TitleScreenView, yaze::editor::NamingScreenView, yaze::editor::LinkSpriteView, yaze::editor::AnnotationOverlayPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::workflow::ProjectWorkflowOutputPanel, yaze::editor::MessageListPanel, yaze::editor::MessageEditorPanel, yaze::editor::FontAtlasPanel, yaze::editor::DictionaryPanel, yaze::editor::MusicAssemblyPanel, yaze::editor::MusicAudioDebugPanel, yaze::editor::MusicHelpPanel, yaze::editor::MusicInstrumentEditorPanel, yaze::editor::MusicPianoRollPanel, yaze::editor::MusicPlaybackControlPanel, yaze::editor::MusicSampleEditorPanel, yaze::editor::MusicSongBrowserPanel, yaze::editor::AnnotationOverlayPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::OverworldEntityWorkbench, yaze::editor::AreaGraphicsPanel, yaze::editor::DebugWindowPanel, yaze::editor::GfxGroupsPanel, yaze::editor::MapPropertiesPanel, yaze::editor::OverworldCanvasPanel, yaze::editor::OverworldItemListPanel, yaze::editor::ScratchSpacePanel, yaze::editor::Tile16EditorPanel, yaze::editor::Tile16SelectorPanel, yaze::editor::Tile8SelectorPanel, yaze::editor::UsageStatisticsPanel, yaze::editor::V3SettingsPanel, yaze::editor::UsageStatisticsView, yaze::editor::OverworldCanvasView, yaze::editor::DebugWindowView, yaze::editor::AreaGraphicsView, yaze::editor::GfxGroupsView, yaze::editor::OverworldItemListView, yaze::editor::MapPropertiesView, yaze::editor::V3SettingsView, yaze::editor::Tile16EditorView, yaze::editor::Tile16SelectorView, yaze::editor::Tile8SelectorView, yaze::editor::ScratchSpaceView, yaze::editor::PaletteControlPanel, yaze::editor::QuickAccessPalettePanel, yaze::editor::CustomPalettePanel, yaze::editor::PaletteGroupPanel, yaze::editor::AboutPanel, yaze::editor::VanillaSpriteEditorPanel, and yaze::editor::CustomSpriteEditorPanel.

Referenced by yaze::editor::anonymous_namespace{workspace_window_manager.cc}::BuildDescriptorFromPanel(), yaze::editor::anonymous_namespace{workspace_window_manager_state.cc}::BuildDescriptorFromPanel(), yaze::editor::WorkspaceWindowManager::DrawAllVisiblePanels(), and yaze::editor::ResourceWindowContent::GetId().

◆ Draw()

virtual void yaze::editor::WindowContent::Draw ( bool * p_open)
pure virtual

Draw the panel content.

Parameters
p_openPointer to visibility flag (nullptr if not closable)

Called by WorkspaceWindowManager when the panel is visible. Do NOT call ImGui::Begin/End - the PanelWindow wrapper handles that. Just draw your content directly.

Implemented in yaze::editor::AnnotationOverlayPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::AnnotationOverlayPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::OracleRamPanel, yaze::editor::AgentConfigurationPanel, yaze::editor::AgentStatusPanel, yaze::editor::AgentPromptEditorPanel, yaze::editor::AgentBotProfilesPanel, yaze::editor::AgentChatHistoryPanel, yaze::editor::AgentMetricsDashboardPanel, yaze::editor::AgentBuilderPanel, yaze::editor::AgentMesenDebugPanel, yaze::editor::AgentKnowledgeBasePanel, yaze::editor::AgentChatPanel, yaze::editor::OracleStateLibraryEditorPanel, yaze::editor::FeatureFlagEditorEditorPanel, yaze::editor::ManifestEditorPanel, yaze::editor::SramViewerEditorPanel, yaze::editor::MesenScreenshotEditorPanel, yaze::editor::AssemblyCodeEditorPanel, yaze::editor::AssemblyFileBrowserPanel, yaze::editor::AssemblySymbolsPanel, yaze::editor::AssemblyBuildOutputPanel, yaze::editor::AssemblyDisassemblyPanel, yaze::editor::AssemblyToolbarPanel, yaze::editor::DoorEditorContent, yaze::editor::ObjectEditorContent, yaze::editor::PaletteEditorContent, yaze::editor::ObjectSelectorContent, yaze::editor::ChestEditorPanel, yaze::editor::CustomCollisionPanel, yaze::editor::DungeonEmulatorPreviewPanel, yaze::editor::DungeonEntranceListPanel, yaze::editor::DungeonEntrancesPanel, yaze::editor::DungeonMapPanel, yaze::editor::DungeonRoomPanel, yaze::editor::DungeonSettingsPanel, yaze::editor::ItemEditorPanel, yaze::editor::MinecartTrackEditorPanel, yaze::editor::ObjectTileEditorPanel, yaze::editor::OverlayManagerPanel, yaze::editor::RoomTagEditorPanel, yaze::editor::SpriteEditorPanel, yaze::editor::WaterFillPanel, yaze::editor::DungeonWorkbenchContent, yaze::editor::RoomBrowserContent, yaze::editor::RoomGraphicsContent, yaze::editor::RoomMatrixContent, yaze::editor::LinkSpritePanel, yaze::editor::PaletteControlsPanel, yaze::editor::GraphicsSheetBrowserPanel, yaze::editor::GraphicsPixelEditorPanel, yaze::editor::GraphicsPaletteControlsPanel, yaze::editor::GraphicsLinkSpritePanel, yaze::editor::GraphicsPolyhedralPanel, yaze::editor::GraphicsGfxGroupPanel, yaze::editor::GraphicsPrototypeViewerPanel, yaze::editor::GraphicsPalettesetPanel, yaze::editor::DungeonMapsPanel, yaze::editor::InventoryMenuPanel, yaze::editor::OverworldMapScreenPanel, yaze::editor::TitleScreenPanel, yaze::editor::NamingScreenPanel, yaze::editor::PixelEditorPanel, yaze::editor::PolyhedralEditorPanel, yaze::editor::SheetBrowserPanel, yaze::editor::SheetBrowserView, yaze::editor::PixelEditorView, yaze::editor::PaletteControlsView, yaze::editor::PalettesetEditorView, yaze::editor::PolyhedralEditorView, yaze::editor::PrototypeResearchView, yaze::editor::ScreenWorkspaceView, yaze::editor::LinkSpriteView, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::workflow::ProjectWorkflowOutputPanel, yaze::editor::MessageListPanel, yaze::editor::MessageEditorPanel, yaze::editor::FontAtlasPanel, yaze::editor::DictionaryPanel, yaze::editor::MusicAssemblyPanel, yaze::editor::MusicAudioDebugPanel, yaze::editor::MusicHelpPanel, yaze::editor::MusicInstrumentEditorPanel, yaze::editor::MusicPianoRollPanel, yaze::editor::MusicPlaybackControlPanel, yaze::editor::MusicSampleEditorPanel, yaze::editor::MusicSongBrowserPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::OverworldEntityWorkbench, yaze::editor::AreaGraphicsPanel, yaze::editor::DebugWindowPanel, yaze::editor::GfxGroupsPanel, yaze::editor::MapPropertiesPanel, yaze::editor::OverworldCanvasPanel, yaze::editor::OverworldItemListPanel, yaze::editor::ScratchSpacePanel, yaze::editor::Tile16EditorPanel, yaze::editor::Tile16SelectorPanel, yaze::editor::Tile8SelectorPanel, yaze::editor::UsageStatisticsPanel, yaze::editor::V3SettingsPanel, yaze::editor::UsageStatisticsView, yaze::editor::OverworldCanvasView, yaze::editor::DebugWindowView, yaze::editor::AreaGraphicsView, yaze::editor::GfxGroupsView, yaze::editor::OverworldItemListView, yaze::editor::MapPropertiesView, yaze::editor::V3SettingsView, yaze::editor::Tile16EditorView, yaze::editor::Tile16SelectorView, yaze::editor::Tile8SelectorView, yaze::editor::ScratchSpaceView, yaze::editor::PaletteControlPanel, yaze::editor::QuickAccessPalettePanel, yaze::editor::CustomPalettePanel, yaze::editor::PaletteGroupPanel, yaze::editor::AboutPanel, yaze::editor::VanillaSpriteEditorPanel, and yaze::editor::CustomSpriteEditorPanel.

Referenced by DrawWithLazyInit().

◆ OnFirstDraw()

virtual void yaze::editor::WindowContent::OnFirstDraw ( )
inlinevirtual

Called once before the first Draw() in a session.

Use this for expensive one-time initialization that should be deferred until the panel is actually visible. This avoids loading resources for panels that may never be opened.

Note
Reset via InvalidateLazyInit() on session switches if needed.
See also
RequiresLazyInit()

Definition at line 154 of file editor_panel.h.

Referenced by DrawWithLazyInit().

◆ RequiresLazyInit()

virtual bool yaze::editor::WindowContent::RequiresLazyInit ( ) const
inlinevirtual

Whether this panel uses lazy initialization.

Returns
true if OnFirstDraw() should be called before first Draw()

Override to return true if your panel has expensive setup in OnFirstDraw(). When false (default), OnFirstDraw() is skipped for performance.

Definition at line 163 of file editor_panel.h.

Referenced by DrawWithLazyInit().

◆ InvalidateLazyInit()

void yaze::editor::WindowContent::InvalidateLazyInit ( )
inline

Reset lazy init state so OnFirstDraw() runs again.

Call this when panel state needs to be reinitialized (e.g., session switch). The next Draw() will trigger OnFirstDraw() again.

Definition at line 414 of file editor_panel.h.

References lazy_init_done_.

◆ OnOpen()

virtual void yaze::editor::WindowContent::OnOpen ( )
inlinevirtual

Called when panel becomes visible.

Use this to initialize state, load resources, or start animations. Called after the panel is shown but before first Draw().

Reimplemented in yaze::editor::OracleRamPanel, and yaze::editor::ObjectSelectorContent.

Definition at line 179 of file editor_panel.h.

◆ OnClose()

virtual void yaze::editor::WindowContent::OnClose ( )
inlinevirtual

Called when panel is hidden.

Use this to cleanup state, release resources, or save state. Called after the panel is hidden.

Reimplemented in yaze::editor::DoorEditorContent, yaze::editor::ObjectSelectorContent, and yaze::editor::DungeonEmulatorPreviewPanel.

Definition at line 187 of file editor_panel.h.

Referenced by yaze::editor::WorkspaceWindowManager::DrawAllVisiblePanels().

◆ OnFocus()

virtual void yaze::editor::WindowContent::OnFocus ( )
inlinevirtual

Called when panel receives focus.

Use this to update state based on becoming the active panel.

Definition at line 194 of file editor_panel.h.

◆ GetWindowLifecycle()

◆ GetContextScope()

virtual WindowContextScope yaze::editor::WindowContent::GetContextScope ( ) const
inlinevirtual

Optional context binding for this window (room/selection/etc)

Returns
WindowContextScope used by WorkspaceWindowManager policy (default: none)

Definition at line 214 of file editor_panel.h.

References yaze::editor::kNone.

Referenced by yaze::editor::anonymous_namespace{workspace_window_manager.cc}::BuildDescriptorFromPanel(), and yaze::editor::anonymous_namespace{workspace_window_manager_state.cc}::BuildDescriptorFromPanel().

◆ GetScope()

virtual WindowScope yaze::editor::WindowContent::GetScope ( ) const
inlinevirtual

◆ IsEnabled()

virtual bool yaze::editor::WindowContent::IsEnabled ( ) const
inlinevirtual

Check if this panel is currently enabled.

Returns
true if panel can be shown, false if disabled

Disabled panels appear grayed out in menus. Override to implement conditional availability (e.g., requires ROM loaded).

Reimplemented in yaze::editor::ScreenWorkspaceView, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, and yaze::editor::StoryEventGraphPanel.

Definition at line 233 of file editor_panel.h.

◆ GetDisabledTooltip()

◆ GetShortcutHint()

◆ GetPriority()

virtual int yaze::editor::WindowContent::GetPriority ( ) const
inlinevirtual

Get display priority for menu ordering.

Returns
Priority value (lower = higher in list, default 50)

Reimplemented in yaze::editor::AgentConfigurationPanel, yaze::editor::AgentStatusPanel, yaze::editor::AgentPromptEditorPanel, yaze::editor::AgentBotProfilesPanel, yaze::editor::AgentChatHistoryPanel, yaze::editor::AgentMetricsDashboardPanel, yaze::editor::AgentBuilderPanel, yaze::editor::AgentMesenDebugPanel, yaze::editor::AgentKnowledgeBasePanel, yaze::editor::AgentChatPanel, yaze::editor::OracleStateLibraryEditorPanel, yaze::editor::FeatureFlagEditorEditorPanel, yaze::editor::ManifestEditorPanel, yaze::editor::SramViewerEditorPanel, yaze::editor::MesenScreenshotEditorPanel, yaze::editor::AssemblyCodeEditorPanel, yaze::editor::AssemblyFileBrowserPanel, yaze::editor::AssemblySymbolsPanel, yaze::editor::AssemblyBuildOutputPanel, yaze::editor::AssemblyDisassemblyPanel, yaze::editor::AssemblyToolbarPanel, yaze::editor::DoorEditorContent, yaze::editor::ObjectEditorContent, yaze::editor::PaletteEditorContent, yaze::editor::ObjectSelectorContent, yaze::editor::ChestEditorPanel, yaze::editor::DungeonEmulatorPreviewPanel, yaze::editor::DungeonEntranceListPanel, yaze::editor::DungeonEntrancesPanel, yaze::editor::DungeonMapPanel, yaze::editor::DungeonRoomPanel, yaze::editor::ItemEditorPanel, yaze::editor::ObjectTileEditorPanel, yaze::editor::OverlayManagerPanel, yaze::editor::RoomTagEditorPanel, yaze::editor::SpriteEditorPanel, yaze::editor::DungeonWorkbenchContent, yaze::editor::RoomBrowserContent, yaze::editor::RoomGraphicsContent, yaze::editor::RoomMatrixContent, yaze::editor::LinkSpritePanel, yaze::editor::PaletteControlsPanel, yaze::editor::GraphicsSheetBrowserPanel, yaze::editor::GraphicsPixelEditorPanel, yaze::editor::GraphicsPaletteControlsPanel, yaze::editor::GraphicsLinkSpritePanel, yaze::editor::GraphicsPolyhedralPanel, yaze::editor::GraphicsGfxGroupPanel, yaze::editor::GraphicsPrototypeViewerPanel, yaze::editor::GraphicsPalettesetPanel, yaze::editor::DungeonMapsPanel, yaze::editor::InventoryMenuPanel, yaze::editor::OverworldMapScreenPanel, yaze::editor::TitleScreenPanel, yaze::editor::NamingScreenPanel, yaze::editor::PixelEditorPanel, yaze::editor::PolyhedralEditorPanel, yaze::editor::SheetBrowserPanel, yaze::editor::SheetBrowserView, yaze::editor::PixelEditorView, yaze::editor::PaletteControlsView, yaze::editor::PalettesetEditorView, yaze::editor::PolyhedralEditorView, yaze::editor::PrototypeResearchView, yaze::editor::DungeonMapsView, yaze::editor::InventoryMenuView, yaze::editor::OverworldMapScreenView, yaze::editor::TitleScreenView, yaze::editor::NamingScreenView, yaze::editor::LinkSpriteView, yaze::editor::MessageListPanel, yaze::editor::MessageEditorPanel, yaze::editor::FontAtlasPanel, yaze::editor::DictionaryPanel, yaze::editor::MusicAssemblyPanel, yaze::editor::MusicAudioDebugPanel, yaze::editor::MusicHelpPanel, yaze::editor::MusicInstrumentEditorPanel, yaze::editor::MusicPianoRollPanel, yaze::editor::MusicPlaybackControlPanel, yaze::editor::MusicSampleEditorPanel, yaze::editor::MusicSongBrowserPanel, yaze::editor::OverworldCanvasPanel, yaze::editor::OverworldItemListPanel, yaze::editor::Tile16EditorPanel, yaze::editor::OverworldCanvasView, yaze::editor::OverworldItemListView, yaze::editor::Tile16EditorView, yaze::editor::PaletteControlPanel, yaze::editor::QuickAccessPalettePanel, yaze::editor::CustomPalettePanel, yaze::editor::PaletteGroupPanel, yaze::editor::OverworldMainPalettePanel, yaze::editor::OverworldAnimatedPalettePanel, yaze::editor::DungeonMainPalettePanel, yaze::editor::SpritePalettePanel, yaze::editor::SpritesAux1PalettePanel, yaze::editor::SpritesAux2PalettePanel, yaze::editor::SpritesAux3PalettePanel, yaze::editor::EquipmentPalettePanel, yaze::editor::VanillaSpriteEditorPanel, and yaze::editor::CustomSpriteEditorPanel.

Definition at line 251 of file editor_panel.h.

Referenced by yaze::editor::anonymous_namespace{workspace_window_manager.cc}::BuildDescriptorFromPanel(), yaze::editor::anonymous_namespace{workspace_window_manager_state.cc}::BuildDescriptorFromPanel(), and GetWorkflowPriority().

◆ GetWorkflowGroup()

◆ GetWorkflowLabel()

virtual std::string yaze::editor::WindowContent::GetWorkflowLabel ( ) const
inlinevirtual

Optional workflow label for menus/command palette.

Returns
Action label to use when surfacing this panel via workflows.

Reimplemented in yaze::editor::OracleStateLibraryEditorPanel, yaze::editor::OracleValidationPanel, and yaze::editor::OracleValidationPanel.

Definition at line 263 of file editor_panel.h.

References GetDisplayName().

Referenced by yaze::editor::anonymous_namespace{workspace_window_manager.cc}::BuildDescriptorFromPanel(), and yaze::editor::anonymous_namespace{workspace_window_manager_state.cc}::BuildDescriptorFromPanel().

Here is the call graph for this function:

◆ GetWorkflowDescription()

◆ GetWorkflowPriority()

virtual int yaze::editor::WindowContent::GetWorkflowPriority ( ) const
inlinevirtual

Optional workflow ordering priority (lower sorts first).

Reimplemented in yaze::editor::workflow::ProjectWorkflowOutputPanel.

Definition at line 273 of file editor_panel.h.

References GetPriority().

Referenced by yaze::editor::anonymous_namespace{workspace_window_manager.cc}::BuildDescriptorFromPanel(), and yaze::editor::anonymous_namespace{workspace_window_manager_state.cc}::BuildDescriptorFromPanel().

Here is the call graph for this function:

◆ GetPreferredWidth()

virtual float yaze::editor::WindowContent::GetPreferredWidth ( ) const
inlinevirtual

Get preferred width for this panel (optional)

Returns
Preferred width in pixels, or 0 to use default (250px)

Override this to specify content-based sizing. For example, a tile selector with 8 tiles at 16px × 2.0 scale would return ~276px.

Reimplemented in yaze::editor::AssemblyCodeEditorPanel, yaze::editor::AssemblyFileBrowserPanel, yaze::editor::AssemblySymbolsPanel, yaze::editor::AssemblyBuildOutputPanel, yaze::editor::AssemblyDisassemblyPanel, yaze::editor::DoorEditorContent, yaze::editor::ObjectEditorContent, yaze::editor::PaletteEditorContent, yaze::editor::ObjectSelectorContent, yaze::editor::ObjectTileEditorPanel, yaze::editor::RoomGraphicsContent, yaze::editor::RoomMatrixContent, yaze::editor::GraphicsSheetBrowserPanel, yaze::editor::GraphicsPixelEditorPanel, yaze::editor::GraphicsPaletteControlsPanel, yaze::editor::GraphicsLinkSpritePanel, yaze::editor::GraphicsPolyhedralPanel, yaze::editor::GraphicsGfxGroupPanel, yaze::editor::GraphicsPrototypeViewerPanel, yaze::editor::GraphicsPalettesetPanel, yaze::editor::SheetBrowserView, yaze::editor::PixelEditorView, yaze::editor::PaletteControlsView, yaze::editor::PalettesetEditorView, yaze::editor::PrototypeResearchView, yaze::editor::LinkSpriteView, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::OracleMenuInspectorPanel, yaze::editor::OracleValidationPanel, yaze::editor::ProgressionDashboardPanel, yaze::editor::StoryEventGraphPanel, yaze::editor::AreaGraphicsPanel, yaze::editor::MapPropertiesPanel, yaze::editor::OverworldItemListPanel, yaze::editor::Tile16EditorPanel, yaze::editor::Tile16SelectorPanel, yaze::editor::Tile8SelectorPanel, yaze::editor::AreaGraphicsView, yaze::editor::OverworldItemListView, yaze::editor::MapPropertiesView, yaze::editor::Tile16EditorView, yaze::editor::Tile16SelectorView, yaze::editor::Tile8SelectorView, yaze::editor::PaletteControlPanel, yaze::editor::QuickAccessPalettePanel, yaze::editor::CustomPalettePanel, yaze::editor::VanillaSpriteEditorPanel, and yaze::editor::CustomSpriteEditorPanel.

Definition at line 282 of file editor_panel.h.

Referenced by yaze::editor::WorkspaceWindowManager::DrawAllVisiblePanels().

◆ PreferAutoHideTabBar()

virtual bool yaze::editor::WindowContent::PreferAutoHideTabBar ( ) const
inlinevirtual

Whether the dock node hosting this panel should auto-hide its tab bar.

Returns
true to prefer ImGuiDockNodeFlags_AutoHideTabBar

This is a node-level hint applied by LayoutManager during DockBuilder setup. It is best used for primary single-panel work areas where the tab bar should disappear until another panel is docked into the same node.

Reimplemented in yaze::editor::OverworldCanvasView, yaze::editor::MapPropertiesView, and yaze::editor::Tile16SelectorView.

Definition at line 292 of file editor_panel.h.

◆ IsVisibleByDefault()

virtual bool yaze::editor::WindowContent::IsVisibleByDefault ( ) const
inlinevirtual

◆ GetParentPanelId()

virtual std::string yaze::editor::WindowContent::GetParentPanelId ( ) const
inlinevirtual

Get parent panel ID for cascade behavior.

Returns
Parent panel ID, or empty string if no parent

If set, this panel may be automatically closed when parent closes (depending on parent's CascadeCloseChildren() setting).

Definition at line 314 of file editor_panel.h.

◆ CascadeCloseChildren()

virtual bool yaze::editor::WindowContent::CascadeCloseChildren ( ) const
inlinevirtual

Whether closing this panel should close child panels.

Returns
true to cascade close to children, false to leave children open

Only affects panels that have this panel as their parent.

Definition at line 322 of file editor_panel.h.

◆ DrawWithLazyInit()

void yaze::editor::WindowContent::DrawWithLazyInit ( bool * p_open)
inline

Execute lazy initialization if needed, then call Draw()

Parameters
p_openPointer to visibility flag

Called by WorkspaceWindowManager. Handles OnFirstDraw() invocation automatically.

Definition at line 334 of file editor_panel.h.

References Draw(), lazy_init_done_, OnFirstDraw(), and RequiresLazyInit().

Referenced by yaze::editor::WorkspaceWindowManager::DrawAllVisiblePanels().

Here is the call graph for this function:

◆ InvalidateCache()

void yaze::editor::WindowContent::InvalidateCache ( )
inlineprotected

Invalidate all cached computations.

Call this when the underlying data changes and cached values are stale. Common triggers:

  • Session switch (data context changes)
  • ROM data modification
  • Settings changes that affect computed values

Definition at line 356 of file editor_panel.h.

References cache_valid_.

◆ GetCached()

template<typename T >
T & yaze::editor::WindowContent::GetCached ( const std::string & key,
std::function< T()> compute )
inlineprotected

Get or compute a cached value.

Template Parameters
TThe type of the cached value
Parameters
keyUnique identifier for this cached value
computeFunction to compute the value if not cached
Returns
Reference to the cached value

Example usage:

int GetExpensiveResult() {
return GetCached<int>("expensive_result", [this]() {
// Expensive computation here
return ComputeExpensiveValue();
});
}
Note
The cache is invalidated when InvalidateCache() is called.
Values are stored using std::any, so complex types work fine.

Definition at line 379 of file editor_panel.h.

References cache_, and cache_valid_.

◆ IsCacheValid()

bool yaze::editor::WindowContent::IsCacheValid ( ) const
inlineprotected

Check if cache has been invalidated.

Returns
true if cache is valid, false if InvalidateCache() was called

Definition at line 391 of file editor_panel.h.

References cache_valid_.

◆ ClearCache()

void yaze::editor::WindowContent::ClearCache ( )
inlineprotected

Clear all cached values (more aggressive than InvalidateCache)

Use this when you need to free memory, not just mark values as stale. InvalidateCache() just marks the cache as invalid but keeps values for potential debugging or lazy re-computation.

Definition at line 400 of file editor_panel.h.

References cache_, and cache_valid_.

Member Data Documentation

◆ lazy_init_done_

bool yaze::editor::WindowContent::lazy_init_done_ = false
private

Definition at line 406 of file editor_panel.h.

Referenced by DrawWithLazyInit(), and InvalidateLazyInit().

◆ cache_valid_

bool yaze::editor::WindowContent::cache_valid_ = false
private

Definition at line 409 of file editor_panel.h.

Referenced by ClearCache(), GetCached(), InvalidateCache(), and IsCacheValid().

◆ cache_

std::unordered_map<std::string, std::any> yaze::editor::WindowContent::cache_
private

Definition at line 410 of file editor_panel.h.

Referenced by ClearCache(), and GetCached().


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