@ -52,60 +52,52 @@ namespace lunarium { namespace editor
}
}
OpRes PanelManager : : AddPanel ( gui : : Panel * panel )
OpRes PanelManager : : AddPanel ( gui : : Panel * panel , uint32_t & id )
{
{
if ( mPanels . find ( panel - > Get Typ e( ) ) ! = mPanels . end ( ) )
if ( mPanels ByName . find ( panel - > Get Nam e( ) ) ! = mPanels ByName . end ( ) )
{
{
return OpRes : : Fail ( " Cannot add panel - panel already exists. Panel Name: %s " , panel - > GetName ( ) ) ;
return OpRes : : Fail ( " Cannot add panel - panel already exists. Panel Name: %s " , panel - > GetName ( ) ) ;
}
}
mPanels [ panel - > GetType ( ) ] = panel ;
mPanelsByName [ panel - > GetName ( ) ] = panel ;
mPanels . push_back ( panel ) ;
id = mPanels . size ( ) - 1 ;
return OpRes : : OK ( ) ;
return OpRes : : OK ( ) ;
}
}
void PanelManager : : OpenPanel ( PanelType type )
void PanelManager : : OpenPanel ( uint32_t id )
{
Panel * p = GetPanel ( type ) ;
if ( ! p | | p - > IsOpen ( ) )
{
{
if ( mPanels . size ( ) > = id | | id < 0 )
return ;
return ;
}
p - > SetOpen ( true ) ;
mPanels[ id ] - > SetOpen ( true ) ;
}
}
void PanelManager : : ClosePanel ( PanelType type )
void PanelManager : : ClosePanel ( uint32_t id )
{
Panel * p = GetPanel ( type ) ;
if ( ! p | | ! p - > IsOpen ( ) )
{
{
if ( mPanels . size ( ) > = id | | id < 0 )
return ;
return ;
}
p - > SetOpen ( false ) ;
mPanels[ id ] - > SetOpen ( false ) ;
}
}
bool PanelManager : : IsOpen ( PanelType type )
bool PanelManager : : IsOpen ( uint32_t id )
{
Panel * p = GetPanel ( type ) ;
if ( ! p )
{
{
if ( mPanels . size ( ) > = id | | id < 0 )
return false ;
return false ;
}
return p - > IsOpen ( ) ;
return mPanels[ id ] - > IsOpen ( ) ;
}
}
Panel * PanelManager : : GetPanel ( PanelType type )
Panel * PanelManager : : GetPanel ( uint32_t id )
{
{
auto iter = mPanels . find ( type ) ;
if ( id > = 0 & & id < mPanels . size ( ) )
if ( iter ! = mPanels . end ( ) )
{
{
return iter- > second ;
return mPanels[ id ] ;
}
}
Logger : : Log ( mpEditor - > GetLogCat ( ) , LogLevel : : WARNING , " Requested panel not found: %d " , type ) ;
Logger : : Log ( mpEditor - > GetLogCat ( ) , LogLevel : : WARNING , " Requested panel not found: %d " , id ) ;
return nullptr ;
return nullptr ;
}
}
@ -134,55 +126,21 @@ namespace lunarium { namespace editor
{
{
for ( auto iter = mPanels . begin ( ) ; iter ! = mPanels . end ( ) ; iter + + )
for ( auto iter = mPanels . begin ( ) ; iter ! = mPanels . end ( ) ; iter + + )
{
{
if ( iter - > second - > IsOpen ( ) )
if ( ( * iter ) - > IsOpen ( ) )
{
{
iter - > second - > Update ( delta ) ;
( * iter ) - > Update ( delta ) ;
}
}
}
}
}
}
// void PanelManager::OnRender(lunarium::IGraphics* g)
// {
// // mpMainPanel->DoFrame();
// //ImGuiViewport* Viewport = ImGui::GetMainViewport();
// ImGuiViewport* Viewport = ImGui::GetWindowViewport();
// ImGui::SetNextWindowPos( Viewport->WorkPos );
// ImGui::SetNextWindowSize( Viewport->WorkSize );
// ImGui::SetNextWindowViewport( Viewport->ID );
// ImGuiWindowFlags WindowFlags = 0;
// WindowFlags |= ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoDocking;
// WindowFlags |= ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus;
// ImGui::PushStyleVar( ImGuiStyleVar_WindowRounding, 0.0f );
// ImGui::PushStyleVar( ImGuiStyleVar_WindowBorderSize, 0.0f );
// ImGui::PushStyleVar( ImGuiStyleVar_WindowPadding, ImVec2( 0.0f, 0.0f ) );
// ImGui::Begin(mName.c_str(), nullptr, WindowFlags);
// ImGui::PopStyleVar(3);
// MakeDockSpaces();
// ImGui::End();
// for (auto iter = mPanels.begin(); iter != mPanels.end(); iter++)
// {
// if (iter->second->IsOpen())
// {
// ImGui::SetNextWindowClass(&mWindowClass);
// iter->second->DoFrame();
// }
// }
// }
void PanelManager : : RenderPanels ( )
void PanelManager : : RenderPanels ( )
{
{
for ( auto iter = mPanels . begin ( ) ; iter ! = mPanels . end ( ) ; iter + + )
for ( auto iter = mPanels . begin ( ) ; iter ! = mPanels . end ( ) ; iter + + )
{
{
if ( iter - > second - > IsOpen ( ) )
if ( ( * iter ) - > IsOpen ( ) )
{
{
ImGui : : SetNextWindowClass ( & mWindowClass ) ;
ImGui : : SetNextWindowClass ( & mWindowClass ) ;
iter - > second - > DoFrame ( ) ;
( * iter ) - > DoFrame ( ) ;
}
}
}
}
}
}
@ -194,7 +152,7 @@ namespace lunarium { namespace editor
{
{
for ( auto iter = mPanels . begin ( ) ; iter ! = mPanels . end ( ) ; iter + + )
for ( auto iter = mPanels . begin ( ) ; iter ! = mPanels . end ( ) ; iter + + )
{
{
delete iter - > second ;
delete ( * iter ) ;
}
}
mPanels . clear ( ) ;
mPanels . clear ( ) ;
@ -232,7 +190,7 @@ namespace lunarium { namespace editor
// Dock Panels
// Dock Panels
for ( auto iter = mPanels . begin ( ) ; iter ! = mPanels . end ( ) ; iter + + )
for ( auto iter = mPanels . begin ( ) ; iter ! = mPanels . end ( ) ; iter + + )
{
{
PanelDockZone dz = iter - > second - > GetDockZone ( ) ;
PanelDockZone dz = ( * iter ) - > GetDockZone ( ) ;
if ( dz ! = PanelDockZone : : DDZ_NONE )
if ( dz ! = PanelDockZone : : DDZ_NONE )
{
{
// If the panel expects the bottom node to be split but it isn't
// If the panel expects the bottom node to be split but it isn't
@ -251,7 +209,7 @@ namespace lunarium { namespace editor
dz = PanelDockZone : : DDZ_BOT_LEFT ;
dz = PanelDockZone : : DDZ_BOT_LEFT ;
}
}
ImGui : : DockBuilderDockWindow ( iter - > second - > GetName ( ) , mDockZoneIDs [ dz ] ) ;
ImGui : : DockBuilderDockWindow ( ( * iter ) - > GetName ( ) , mDockZoneIDs [ dz ] ) ;
}
}
}
}
}
}