1#ifndef YAZE_APP_EDITOR_MENU_RIGHT_PANEL_MANAGER_H_
2#define YAZE_APP_EDITOR_MENU_RIGHT_PANEL_MANAGER_H_
6#include <unordered_map>
10#include "imgui/imgui.h"
31class SelectionPropertiesPanel;
32class ProjectManagementPanel;
205 std::function<
void(
PanelType,
float)> callback) {
261 bool default_open =
true);
268 const std::string& fallback)
const;
269 void DrawShortcutRow(
const std::string& action,
const char* description,
270 const std::string& fallback);
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Unified Agent Chat Component.
Panel for managing project settings, ROM versions, and snapshots.
ImGui drawer for displaying and managing agent proposals.
Manages right-side sliding panels for agent chat, proposals, settings.
std::string GetShortcutLabel(const std::string &action, const std::string &fallback) const
void SetSettingsPanel(SettingsPanel *panel)
void Draw()
Draw the panel and its contents.
void SetPropertiesPanel(SelectionPropertiesPanel *panel)
void DrawEditorSpecificShortcuts()
std::unordered_map< std::string, float > SerializePanelWidths() const
Persist/restore per-panel widths for user settings.
float notifications_width_
float GetClampedPanelWidth(PanelType type, float viewport_width) const
float GetPanelWidth() const
Get the width of the panel when expanded.
void DrawPropertiesPanel()
ProposalDrawer * proposal_drawer() const
void SetAgentChat(AgentChat *chat)
void ClosePanel()
Close the currently active panel.
void CyclePanel(int direction)
Cycle to the next/previous right panel in header order.
void SetActiveEditor(EditorType type)
Set the active editor for context-aware help content.
AgentChat * agent_chat() const
void DrawPanelValue(const char *label, const char *value)
void NotifyPanelWidthChanged(PanelType type, float width)
void SetPanelWidth(PanelType type, float width)
Set panel width for a specific panel type.
SelectionPropertiesPanel * properties_panel() const
bool DrawAgentQuickActions()
void SetShortcutManager(ShortcutManager *manager)
static constexpr float GetCollapsedWidth()
Get the width of the collapsed panel strip (toggle buttons)
void DrawEditorSpecificHelp()
ToastManager * toast_manager_
~RightPanelManager()=default
void OnHostVisibilityChanged(bool visible)
Snap transient animations when host visibility changes.
RightPanelManager()=default
EditorType active_editor_type_
void TogglePanel(PanelType type)
Toggle a specific panel on/off.
bool BeginPanelSection(const char *label, const char *icon=nullptr, bool default_open=true)
ShortcutManager * shortcut_manager_
PanelType GetActivePanel() const
Get the currently active panel type.
static std::string PanelTypeKey(PanelType type)
std::unordered_map< std::string, PanelSizeLimits > panel_size_limits_
float GetConfiguredPanelWidth(PanelType type) const
ProposalDrawer * proposal_drawer_
SettingsPanel * settings_panel() const
void DrawGlobalShortcuts()
static float GetDefaultPanelWidth(PanelType type, EditorType editor=EditorType::kUnknown)
Get the default width for a specific panel type.
void CycleToPreviousPanel()
void SetPanelSizeLimits(PanelType type, const PanelSizeLimits &limits)
Set sizing constraints for an individual right panel.
void SetProposalDrawer(ProposalDrawer *drawer)
bool IsPanelExpanded() const
Check if any panel is currently expanded (or animating closed)
bool DrawPanelToggleButtons()
Draw toggle buttons for the status cluster.
bool IsPanelActive(PanelType type) const
Check if a specific panel is active.
RightPanelManager & operator=(const RightPanelManager &)=delete
void ResetPanelWidths()
Reset all panel widths to their defaults.
void DrawNotificationsPanel()
void OpenPanel(PanelType type)
Open a specific panel.
void DrawPanelLabel(const char *label)
void DrawProposalsPanel()
SelectionPropertiesPanel * properties_panel_
ProjectManagementPanel * project_panel() const
void SetProjectManagementPanel(ProjectManagementPanel *panel)
void DrawPanelDescription(const char *text)
void DrawEditorContextHeader()
PanelSizeLimits GetPanelSizeLimits(PanelType type) const
void DrawShortcutRow(const std::string &action, const char *description, const std::string &fallback)
RightPanelManager(const RightPanelManager &)=delete
std::function< void(PanelType, float)> on_panel_width_changed_
void DrawPanelHeader(const char *title, const char *icon)
void DrawAgentChatPanel()
ProjectManagementPanel * project_panel_
void SetPanelWidthChangedCallback(std::function< void(PanelType, float)> callback)
void DrawQuickActionButtons()
void RestorePanelWidths(const std::unordered_map< std::string, float > &widths)
void SetToastManager(ToastManager *manager)
SettingsPanel * settings_panel_
Full-editing properties panel for selected entities.
Manages the settings UI displayed in the right sidebar.
const char * GetPanelTypeName(RightPanelManager::PanelType type)
Get the name of a panel type.
const char * GetPanelTypeIcon(RightPanelManager::PanelType type)
Get the icon for a panel type.
static constexpr float kPanelWidthSettings
static constexpr float kPanelWidthHelp
static constexpr float kPanelWidthNotifications
static constexpr float kMaxPanelWidthRatio
static constexpr float kPanelWidthProject
static constexpr float kPanelWidthProposals
static constexpr float kPanelWidthProperties
static constexpr float kPanelWidthAgentChat