A session-aware status bar displayed at the bottom of the application. More...
#include <status_bar.h>

Public Member Functions | |
| StatusBar ()=default | |
| ~StatusBar ()=default | |
| void | Initialize (GlobalEditorContext *context) |
| void | SetEnabled (bool enabled) |
| Enable or disable the status bar. | |
| bool | IsEnabled () const |
| void | SetRom (Rom *rom) |
| Set the current ROM for dirty status and filename display. | |
| void | SetSessionInfo (size_t session_id, size_t total_sessions) |
| Set session information. | |
| void | SetCursorPosition (int x, int y, const char *label="Pos") |
| Set cursor/mouse position in editor coordinates. | |
| void | ClearCursorPosition () |
| Clear cursor position (no cursor in editor) | |
| void | SetSelection (int count, int width=0, int height=0) |
| Set selection information. | |
| void | ClearSelection () |
| Clear selection info. | |
| void | SetZoom (float level) |
| Set current zoom level. | |
| void | ClearZoom () |
| Clear zoom display. | |
| void | SetEditorMode (const std::string &mode) |
| Set the current editor mode or tool. | |
| void | ClearEditorMode () |
| Clear editor mode display. | |
| void | SetCustomSegment (const std::string &key, const std::string &value) |
| Set a custom segment with key-value pair. | |
| void | ClearCustomSegment (const std::string &key) |
| Remove a custom segment. | |
| void | ClearAllContext () |
| Clear all context (cursor, selection, zoom, mode, custom) | |
| void | Draw () |
| Draw the status bar. | |
| float | GetHeight () const |
| Get the height of the status bar. | |
Static Public Attributes | |
| static constexpr float | kStatusBarHeight = 24.0f |
Private Member Functions | |
| void | HandleStatusUpdate (const StatusUpdateEvent &event) |
| void | DrawRomSegment () |
| void | DrawSessionSegment () |
| void | DrawCursorSegment () |
| void | DrawSelectionSegment () |
| void | DrawZoomSegment () |
| void | DrawModeSegment () |
| void | DrawCustomSegments () |
| void | DrawSeparator () |
Private Attributes | |
| GlobalEditorContext * | context_ = nullptr |
| bool | enabled_ = false |
| Rom * | rom_ = nullptr |
| size_t | session_id_ = 0 |
| size_t | total_sessions_ = 1 |
| bool | has_cursor_ = false |
| int | cursor_x_ = 0 |
| int | cursor_y_ = 0 |
| std::string | cursor_label_ = "Pos" |
| bool | has_selection_ = false |
| int | selection_count_ = 0 |
| int | selection_width_ = 0 |
| int | selection_height_ = 0 |
| bool | has_zoom_ = false |
| float | zoom_level_ = 1.0f |
| bool | has_mode_ = false |
| std::string | editor_mode_ |
| std::unordered_map< std::string, std::string > | custom_segments_ |
A session-aware status bar displayed at the bottom of the application.
The StatusBar sits outside the ImGui dockspace (like the sidebars) and displays:
Each editor can update its relevant segments by calling the Set* methods or publishing StatusUpdateEvents to the event bus.
Usage:
Definition at line 38 of file status_bar.h.
|
default |
|
default |
| void yaze::editor::StatusBar::Initialize | ( | GlobalEditorContext * | context | ) |
Definition at line 13 of file status_bar.cc.
References context_, yaze::editor::GlobalEditorContext::GetEventBus(), HandleStatusUpdate(), and yaze::EventBus::Subscribe().
Referenced by yaze::editor::EditorManager::EditorManager().

|
inline |
Enable or disable the status bar.
Definition at line 52 of file status_bar.h.
References enabled_.
Referenced by yaze::editor::MenuOrchestrator::AddViewMenuItems(), yaze::editor::SettingsPanel::DrawAppearanceSettings(), and yaze::editor::EditorManager::LoadAssets().
|
inline |
Definition at line 53 of file status_bar.h.
References enabled_.
|
inline |
Set the current ROM for dirty status and filename display.
Definition at line 58 of file status_bar.h.
References rom_.
Referenced by yaze::editor::EditorManager::Update().
| void yaze::editor::StatusBar::SetSessionInfo | ( | size_t | session_id, |
| size_t | total_sessions ) |
Set session information.
| session_id | Current session index (0-based) |
| total_sessions | Total number of open sessions |
Definition at line 43 of file status_bar.cc.
References session_id_, and total_sessions_.
Referenced by yaze::editor::EditorManager::Update().
| void yaze::editor::StatusBar::SetCursorPosition | ( | int | x, |
| int | y, | ||
| const char * | label = "Pos" ) |
Set cursor/mouse position in editor coordinates.
| x | X coordinate (tile, pixel, or editor-specific) |
| y | Y coordinate (tile, pixel, or editor-specific) |
| label | Optional label (e.g., "Tile", "Pos", "Map") |
Definition at line 48 of file status_bar.cc.
References cursor_label_, cursor_x_, cursor_y_, and has_cursor_.
Referenced by HandleStatusUpdate().
| void yaze::editor::StatusBar::ClearCursorPosition | ( | ) |
Clear cursor position (no cursor in editor)
Definition at line 55 of file status_bar.cc.
References has_cursor_.
Referenced by ClearAllContext().
| void yaze::editor::StatusBar::SetSelection | ( | int | count, |
| int | width = 0, | ||
| int | height = 0 ) |
Set selection information.
| count | Number of selected items |
| width | Width of selection (optional, 0 to hide) |
| height | Height of selection (optional, 0 to hide) |
Definition at line 59 of file status_bar.cc.
References has_selection_, selection_count_, selection_height_, and selection_width_.
Referenced by HandleStatusUpdate().
| void yaze::editor::StatusBar::ClearSelection | ( | ) |
Clear selection info.
Definition at line 66 of file status_bar.cc.
References has_selection_.
Referenced by ClearAllContext().
| void yaze::editor::StatusBar::SetZoom | ( | float | level | ) |
Set current zoom level.
| level | Zoom multiplier (e.g., 1.0, 2.0, 0.5) |
Definition at line 70 of file status_bar.cc.
References has_zoom_, and zoom_level_.
Referenced by HandleStatusUpdate().
| void yaze::editor::StatusBar::ClearZoom | ( | ) |
Clear zoom display.
Definition at line 75 of file status_bar.cc.
References has_zoom_.
Referenced by ClearAllContext().
| void yaze::editor::StatusBar::SetEditorMode | ( | const std::string & | mode | ) |
Set the current editor mode or tool.
| mode | Mode string (e.g., "Draw", "Select", "Entity") |
Definition at line 79 of file status_bar.cc.
References editor_mode_, and has_mode_.
Referenced by HandleStatusUpdate().
| void yaze::editor::StatusBar::ClearEditorMode | ( | ) |
Clear editor mode display.
Definition at line 84 of file status_bar.cc.
References editor_mode_, and has_mode_.
Referenced by ClearAllContext().
| void yaze::editor::StatusBar::SetCustomSegment | ( | const std::string & | key, |
| const std::string & | value ) |
Set a custom segment with key-value pair.
| key | Segment identifier |
| value | Value to display |
Definition at line 89 of file status_bar.cc.
References custom_segments_.
| void yaze::editor::StatusBar::ClearCustomSegment | ( | const std::string & | key | ) |
| void yaze::editor::StatusBar::ClearAllContext | ( | ) |
Clear all context (cursor, selection, zoom, mode, custom)
Definition at line 98 of file status_bar.cc.
References ClearCursorPosition(), ClearEditorMode(), ClearSelection(), ClearZoom(), and custom_segments_.
Referenced by HandleStatusUpdate().

| void yaze::editor::StatusBar::Draw | ( | ) |
Draw the status bar.
Should be called each frame. The status bar positions itself at the bottom of the viewport, outside the dockspace.
Definition at line 106 of file status_bar.cc.
References DrawCursorSegment(), DrawCustomSegments(), DrawModeSegment(), DrawRomSegment(), DrawSelectionSegment(), DrawSeparator(), DrawSessionSegment(), DrawZoomSegment(), editor_mode_, enabled_, yaze::gui::ThemeManager::Get(), yaze::gui::ThemeManager::GetCurrentTheme(), yaze::gui::GetOutlineVec4(), yaze::gui::GetSurfaceContainerVec4(), has_cursor_, has_mode_, has_selection_, has_zoom_, kStatusBarHeight, and total_sessions_.
Referenced by yaze::editor::EditorManager::Update().
|
inline |
Get the height of the status bar.
Definition at line 152 of file status_bar.h.
References enabled_, and kStatusBarHeight.
Referenced by yaze::editor::LayoutCoordinator::GetBottomLayoutOffset().
|
private |
Definition at line 21 of file status_bar.cc.
References yaze::editor::StatusUpdateEvent::Clear, ClearAllContext(), yaze::editor::StatusUpdateEvent::count, yaze::editor::StatusUpdateEvent::Cursor, yaze::editor::StatusUpdateEvent::height, yaze::editor::StatusUpdateEvent::Mode, yaze::editor::StatusUpdateEvent::Selection, SetCursorPosition(), SetEditorMode(), SetSelection(), SetZoom(), yaze::editor::StatusUpdateEvent::text, yaze::editor::StatusUpdateEvent::type, yaze::editor::StatusUpdateEvent::width, yaze::editor::StatusUpdateEvent::x, yaze::editor::StatusUpdateEvent::y, yaze::editor::StatusUpdateEvent::Zoom, and yaze::editor::StatusUpdateEvent::zoom.
Referenced by Initialize().
|
private |
Definition at line 196 of file status_bar.cc.
References yaze::gui::ConvertColorToImVec4(), yaze::Rom::dirty(), yaze::gui::ThemeManager::Get(), yaze::gui::ThemeManager::GetCurrentTheme(), yaze::gui::GetTextSecondaryVec4(), ICON_MD_DESCRIPTION, ICON_MD_FIBER_MANUAL_RECORD, yaze::Rom::is_loaded(), rom_, and yaze::Rom::short_name().
Referenced by Draw().
|
private |
Definition at line 223 of file status_bar.cc.
References yaze::gui::GetTextSecondaryVec4(), ICON_MD_LAYERS, session_id_, and total_sessions_.
Referenced by Draw().

|
private |
Definition at line 233 of file status_bar.cc.
References cursor_label_, cursor_x_, cursor_y_, and yaze::gui::GetTextSecondaryVec4().
Referenced by Draw().

|
private |
Definition at line 239 of file status_bar.cc.
References yaze::gui::GetTextSecondaryVec4(), ICON_MD_SELECT_ALL, selection_count_, selection_height_, and selection_width_.
Referenced by Draw().

|
private |
Definition at line 252 of file status_bar.cc.
References yaze::gui::GetTextSecondaryVec4(), ICON_MD_ZOOM_IN, and zoom_level_.
Referenced by Draw().

|
private |
Definition at line 265 of file status_bar.cc.
References editor_mode_, and yaze::gui::GetTextSecondaryVec4().
Referenced by Draw().

|
private |
Definition at line 271 of file status_bar.cc.
References custom_segments_, DrawSeparator(), and yaze::gui::GetTextSecondaryVec4().
Referenced by Draw().

|
private |
Definition at line 280 of file status_bar.cc.
References yaze::gui::GetOutlineVec4().
Referenced by Draw(), and DrawCustomSegments().

|
staticconstexpr |
Definition at line 154 of file status_bar.h.
Referenced by Draw(), and GetHeight().
|
private |
Definition at line 168 of file status_bar.h.
Referenced by Initialize().
|
private |
Definition at line 169 of file status_bar.h.
Referenced by Draw(), GetHeight(), IsEnabled(), and SetEnabled().
|
private |
Definition at line 170 of file status_bar.h.
Referenced by DrawRomSegment(), and SetRom().
|
private |
Definition at line 173 of file status_bar.h.
Referenced by DrawSessionSegment(), and SetSessionInfo().
|
private |
Definition at line 174 of file status_bar.h.
Referenced by Draw(), DrawSessionSegment(), and SetSessionInfo().
|
private |
Definition at line 177 of file status_bar.h.
Referenced by ClearCursorPosition(), Draw(), and SetCursorPosition().
|
private |
Definition at line 178 of file status_bar.h.
Referenced by DrawCursorSegment(), and SetCursorPosition().
|
private |
Definition at line 179 of file status_bar.h.
Referenced by DrawCursorSegment(), and SetCursorPosition().
|
private |
Definition at line 180 of file status_bar.h.
Referenced by DrawCursorSegment(), and SetCursorPosition().
|
private |
Definition at line 183 of file status_bar.h.
Referenced by ClearSelection(), Draw(), and SetSelection().
|
private |
Definition at line 184 of file status_bar.h.
Referenced by DrawSelectionSegment(), and SetSelection().
|
private |
Definition at line 185 of file status_bar.h.
Referenced by DrawSelectionSegment(), and SetSelection().
|
private |
Definition at line 186 of file status_bar.h.
Referenced by DrawSelectionSegment(), and SetSelection().
|
private |
Definition at line 189 of file status_bar.h.
Referenced by ClearZoom(), Draw(), and SetZoom().
|
private |
Definition at line 190 of file status_bar.h.
Referenced by DrawZoomSegment(), and SetZoom().
|
private |
Definition at line 193 of file status_bar.h.
Referenced by ClearEditorMode(), Draw(), and SetEditorMode().
|
private |
Definition at line 194 of file status_bar.h.
Referenced by ClearEditorMode(), Draw(), DrawModeSegment(), and SetEditorMode().
|
private |
Definition at line 197 of file status_bar.h.
Referenced by ClearAllContext(), ClearCustomSegment(), DrawCustomSegments(), and SetCustomSegment().