Ember
Loading...
Searching...
No Matches
EmberForge::ui::TabContainer Class Reference

Generic container for managing tabbed UI components. More...

#include <TabContainer.h>

Inheritance diagram for EmberForge::ui::TabContainer:

Classes

struct  TabInfo

Public Types

enum class  TabState {
  Active , Inactive , Modified , Loading ,
  Error
}
using TabActivatedCallback = std::function<void(ITab *tab, int index)>
using TabClosedCallback = std::function<void(ITab *tab, int index)>
using TabCreatedCallback = std::function<void(ITab *tab, int index)>

Public Member Functions

 TabContainer (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxNB_TOP)
virtual ~TabContainer ()
int AddTab (std::unique_ptr< ITab > tab, const wxString &title, const wxString &tooltip=wxEmptyString)
bool RemoveTab (int index)
bool RemoveTab (ITab *tab)
void RemoveAllTabs ()
ITabGetTab (int index) const
ITabGetActiveTab () const
int GetTabCount () const
int GetTabIndex (ITab *tab) const
void SetTabTitle (int index, const wxString &title)
wxString GetTabTitle (int index) const
void SetTabTooltip (int index, const wxString &tooltip)
wxString GetTabTooltip (int index) const
void SetTabState (int index, TabState state)
TabState GetTabState (int index) const
void SetTabClosable (int index, bool closable)
bool IsTabClosable (int index) const
void SetActiveTab (int index)
void SetActiveTab (ITab *tab)
int GetActiveTabIndex () const
void NextTab ()
void PrevTab ()
void RefreshTab (int index)
void RefreshAllTabs ()
bool CanCloseTab (int index)
bool CanCloseAllTabs ()
void SetTabActivatedCallback (TabActivatedCallback callback)
void SetTabClosedCallback (TabClosedCallback callback)
void SetTabCreatedCallback (TabCreatedCallback callback)
void SetTabUserData (int index, void *userData)
void * GetTabUserData (int index) const
bool SerializeState (wxString &data) const
bool DeserializeState (const wxString &data)

Protected Member Functions

void OnTabChanged (wxBookCtrlEvent &event)
void OnTabChanging (wxBookCtrlEvent &event)
void OnTabRightClick (wxMouseEvent &event)
void OnTabMiddleClick (wxMouseEvent &event)
void UpdateTabAppearance (int index)
void CreateTabContextMenu (int index)
bool ValidateTabIndex (int index) const
void NotifyTabActivated (int index)
void NotifyTabClosed (int index)
void NotifyTabCreated (int index)

Private Attributes

std::vector< TabInfom_tabs
TabActivatedCallback m_tabActivatedCallback
TabClosedCallback m_tabClosedCallback
TabCreatedCallback m_tabCreatedCallback
int m_activeTabIndex
bool m_allowTabReorder
bool m_showCloseButton

Detailed Description

Generic container for managing tabbed UI components.

TabContainer provides a reusable, feature-rich tab management system built on wxNotebook. It handles tab lifecycle, state tracking, event callbacks, and serialization for ITab-based components.

Features

  • Tab lifecycle management: Add, remove, activate, and refresh tabs
  • State tracking: Track tab states (Active, Inactive, Modified, Loading, Error)
  • Event callbacks: Notify listeners of tab activation, closure, and creation
  • Navigation: Keyboard-friendly next/previous tab navigation
  • Serialization: Save and restore tab state for session persistence
  • Context menus: Right-click support for tab operations

Tab States

State Description
Active Currently selected and visible
Inactive Not currently selected
Modified Has unsaved changes
Loading Content is being loaded
Error Tab encountered an error

Usage

// Create a tab container
auto container = new TabContainer(parent);
// Add a tab
auto tab = std::make_unique<PropertiesTab>(container);
int index = container->AddTab(std::move(tab), "Properties", "Edit node properties");
// Set up event callbacks
container->SetTabActivatedCallback([](ITab* tab, int index) {
// Handle tab activation
});
// Navigate tabs
container->NextTab();
TabContainer(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxNB_TOP)
Interface for tab-based UI components in the application.
Definition ITab.h:7
See also
ITab, SidePanel, BottomPanel

Definition at line 58 of file TabContainer.h.

Member Typedef Documentation

◆ TabActivatedCallback

using EmberForge::ui::TabContainer::TabActivatedCallback = std::function<void(ITab *tab, int index)>

Definition at line 61 of file TabContainer.h.

◆ TabClosedCallback

using EmberForge::ui::TabContainer::TabClosedCallback = std::function<void(ITab *tab, int index)>

Definition at line 62 of file TabContainer.h.

◆ TabCreatedCallback

using EmberForge::ui::TabContainer::TabCreatedCallback = std::function<void(ITab *tab, int index)>

Definition at line 63 of file TabContainer.h.

Member Enumeration Documentation

◆ TabState

Enumerator
Active 
Inactive 
Modified 
Loading 
Error 

Definition at line 66 of file TabContainer.h.

Constructor & Destructor Documentation

◆ TabContainer()

EmberForge::ui::TabContainer::TabContainer ( wxWindow * parent,
wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = wxNB_TOP )

◆ ~TabContainer()

EmberForge::ui::TabContainer::~TabContainer ( )
virtual

Definition at line 18 of file TabContainer.cpp.

Member Function Documentation

◆ AddTab()

int EmberForge::ui::TabContainer::AddTab ( std::unique_ptr< ITab > tab,
const wxString & title,
const wxString & tooltip = wxEmptyString )

Definition at line 20 of file TabContainer.cpp.

◆ CanCloseAllTabs()

bool EmberForge::ui::TabContainer::CanCloseAllTabs ( )

Definition at line 234 of file TabContainer.cpp.

◆ CanCloseTab()

bool EmberForge::ui::TabContainer::CanCloseTab ( int index)

Definition at line 226 of file TabContainer.cpp.

◆ CreateTabContextMenu()

void EmberForge::ui::TabContainer::CreateTabContextMenu ( int index)
protected

Definition at line 330 of file TabContainer.cpp.

◆ DeserializeState()

bool EmberForge::ui::TabContainer::DeserializeState ( const wxString & data)

Definition at line 268 of file TabContainer.cpp.

◆ GetActiveTab()

ITab * EmberForge::ui::TabContainer::GetActiveTab ( ) const

Definition at line 109 of file TabContainer.cpp.

◆ GetActiveTabIndex()

int EmberForge::ui::TabContainer::GetActiveTabIndex ( ) const

Definition at line 193 of file TabContainer.cpp.

◆ GetTab()

ITab * EmberForge::ui::TabContainer::GetTab ( int index) const

Definition at line 102 of file TabContainer.cpp.

◆ GetTabCount()

int EmberForge::ui::TabContainer::GetTabCount ( ) const

Definition at line 111 of file TabContainer.cpp.

◆ GetTabIndex()

int EmberForge::ui::TabContainer::GetTabIndex ( ITab * tab) const

Definition at line 113 of file TabContainer.cpp.

◆ GetTabState()

TabContainer::TabState EmberForge::ui::TabContainer::GetTabState ( int index) const

Definition at line 158 of file TabContainer.cpp.

◆ GetTabTitle()

wxString EmberForge::ui::TabContainer::GetTabTitle ( int index) const

Definition at line 129 of file TabContainer.cpp.

◆ GetTabTooltip()

wxString EmberForge::ui::TabContainer::GetTabTooltip ( int index) const

Definition at line 144 of file TabContainer.cpp.

◆ GetTabUserData()

void * EmberForge::ui::TabContainer::GetTabUserData ( int index) const

Definition at line 255 of file TabContainer.cpp.

◆ IsTabClosable()

bool EmberForge::ui::TabContainer::IsTabClosable ( int index) const

Definition at line 171 of file TabContainer.cpp.

◆ NextTab()

void EmberForge::ui::TabContainer::NextTab ( )

Definition at line 195 of file TabContainer.cpp.

◆ NotifyTabActivated()

void EmberForge::ui::TabContainer::NotifyTabActivated ( int index)
protected

Definition at line 348 of file TabContainer.cpp.

◆ NotifyTabClosed()

void EmberForge::ui::TabContainer::NotifyTabClosed ( int index)
protected

Definition at line 354 of file TabContainer.cpp.

◆ NotifyTabCreated()

void EmberForge::ui::TabContainer::NotifyTabCreated ( int index)
protected

Definition at line 360 of file TabContainer.cpp.

◆ OnTabChanged()

void EmberForge::ui::TabContainer::OnTabChanged ( wxBookCtrlEvent & event)
protected

Definition at line 274 of file TabContainer.cpp.

◆ OnTabChanging()

void EmberForge::ui::TabContainer::OnTabChanging ( wxBookCtrlEvent & event)
protected

Definition at line 281 of file TabContainer.cpp.

◆ OnTabMiddleClick()

void EmberForge::ui::TabContainer::OnTabMiddleClick ( wxMouseEvent & event)
protected

Definition at line 295 of file TabContainer.cpp.

◆ OnTabRightClick()

void EmberForge::ui::TabContainer::OnTabRightClick ( wxMouseEvent & event)
protected

Definition at line 286 of file TabContainer.cpp.

◆ PrevTab()

void EmberForge::ui::TabContainer::PrevTab ( )

Definition at line 203 of file TabContainer.cpp.

◆ RefreshAllTabs()

void EmberForge::ui::TabContainer::RefreshAllTabs ( )

Definition at line 220 of file TabContainer.cpp.

◆ RefreshTab()

void EmberForge::ui::TabContainer::RefreshTab ( int index)

Definition at line 211 of file TabContainer.cpp.

◆ RemoveAllTabs()

void EmberForge::ui::TabContainer::RemoveAllTabs ( )

Definition at line 96 of file TabContainer.cpp.

◆ RemoveTab() [1/2]

bool EmberForge::ui::TabContainer::RemoveTab ( int index)

Definition at line 57 of file TabContainer.cpp.

◆ RemoveTab() [2/2]

bool EmberForge::ui::TabContainer::RemoveTab ( ITab * tab)

Definition at line 88 of file TabContainer.cpp.

◆ SerializeState()

bool EmberForge::ui::TabContainer::SerializeState ( wxString & data) const

Definition at line 262 of file TabContainer.cpp.

◆ SetActiveTab() [1/2]

void EmberForge::ui::TabContainer::SetActiveTab ( int index)

Definition at line 178 of file TabContainer.cpp.

◆ SetActiveTab() [2/2]

void EmberForge::ui::TabContainer::SetActiveTab ( ITab * tab)

Definition at line 186 of file TabContainer.cpp.

◆ SetTabActivatedCallback()

void EmberForge::ui::TabContainer::SetTabActivatedCallback ( TabActivatedCallback callback)

Definition at line 243 of file TabContainer.cpp.

◆ SetTabClosable()

void EmberForge::ui::TabContainer::SetTabClosable ( int index,
bool closable )

Definition at line 165 of file TabContainer.cpp.

◆ SetTabClosedCallback()

void EmberForge::ui::TabContainer::SetTabClosedCallback ( TabClosedCallback callback)

Definition at line 245 of file TabContainer.cpp.

◆ SetTabCreatedCallback()

void EmberForge::ui::TabContainer::SetTabCreatedCallback ( TabCreatedCallback callback)

Definition at line 247 of file TabContainer.cpp.

◆ SetTabState()

void EmberForge::ui::TabContainer::SetTabState ( int index,
TabState state )

Definition at line 151 of file TabContainer.cpp.

◆ SetTabTitle()

void EmberForge::ui::TabContainer::SetTabTitle ( int index,
const wxString & title )

Definition at line 122 of file TabContainer.cpp.

◆ SetTabTooltip()

void EmberForge::ui::TabContainer::SetTabTooltip ( int index,
const wxString & tooltip )

Definition at line 136 of file TabContainer.cpp.

◆ SetTabUserData()

void EmberForge::ui::TabContainer::SetTabUserData ( int index,
void * userData )

Definition at line 249 of file TabContainer.cpp.

◆ UpdateTabAppearance()

void EmberForge::ui::TabContainer::UpdateTabAppearance ( int index)
protected

Definition at line 305 of file TabContainer.cpp.

◆ ValidateTabIndex()

bool EmberForge::ui::TabContainer::ValidateTabIndex ( int index) const
protected

Definition at line 346 of file TabContainer.cpp.

Member Data Documentation

◆ m_activeTabIndex

int EmberForge::ui::TabContainer::m_activeTabIndex
private

Definition at line 158 of file TabContainer.h.

◆ m_allowTabReorder

bool EmberForge::ui::TabContainer::m_allowTabReorder
private

Definition at line 159 of file TabContainer.h.

◆ m_showCloseButton

bool EmberForge::ui::TabContainer::m_showCloseButton
private

Definition at line 160 of file TabContainer.h.

◆ m_tabActivatedCallback

TabActivatedCallback EmberForge::ui::TabContainer::m_tabActivatedCallback
private

Definition at line 153 of file TabContainer.h.

◆ m_tabClosedCallback

TabClosedCallback EmberForge::ui::TabContainer::m_tabClosedCallback
private

Definition at line 154 of file TabContainer.h.

◆ m_tabCreatedCallback

TabCreatedCallback EmberForge::ui::TabContainer::m_tabCreatedCallback
private

Definition at line 155 of file TabContainer.h.

◆ m_tabs

std::vector<TabInfo> EmberForge::ui::TabContainer::m_tabs
private

Definition at line 150 of file TabContainer.h.


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