#include "PanelManagementContext.h" #include "../Panels/BrushesPanel.h" #include "../Panels/ColorsPanel.h" #include "../Panels/LayersPanel.h" #include "../Panels/SettingsPanel.h" std::stack PanelManagementContext::modes; std::map PanelManagementContext::panels = { { BRUSHES, new BrushesPanel() }, { COLORS, new ColorsPanel() }, { LAYERS, new LayersPanel() }, { SETTINGS, new SettingsPanel() } }; void PanelManagementContext::Open(Panels panel) { panels.at(panel)->OnActivate(); modes.push(CONFIGURE); } void PanelManagementContext::Close(Panel* panel) { panel->OnDeactivate(); if (modes.size() > 0 && modes.top() != DEFAULT) { modes.pop(); } } void PanelManagementContext::CloseAll() { for (auto panel : panels) { panel.second->OnDeactivate(); } while (!modes.empty()) { modes.pop(); } } bool PanelManagementContext::IsOpen(Panels panel) { return panels.at(panel)->GetState() == OPEN; } void PanelManagementContext::PopMode() { modes.pop(); } void PanelManagementContext::PushMode(PanelManagementMode mode) { modes.push(mode); } PanelManagementMode PanelManagementContext::GetMode() { if (modes.empty()) { return DEFAULT; } return modes.top(); } void PanelManagementContext::OnRender() { for (auto panel : panels) { panel.second->OnRender(); } }