|
|
|
|
@ -12,8 +12,8 @@
|
|
|
|
|
|
|
|
|
|
namespace lunarium
|
|
|
|
|
{
|
|
|
|
|
Panel::Panel(std::string name, PanelDockZone dock_zone, bool isOpen)
|
|
|
|
|
: mIsOpen(isOpen), mPanelName(name), mDockZone(dock_zone)
|
|
|
|
|
Panel::Panel(std::string name, PanelDockZone dock_zone, bool isOpen, int window_flags)
|
|
|
|
|
: mIsOpen(isOpen), mPanelName(name), mDockZone(dock_zone), mWindowFlags(window_flags)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@ -33,6 +33,12 @@ namespace lunarium
|
|
|
|
|
return mDockZone;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Panel::SetWindowFlags(int flags)
|
|
|
|
|
{
|
|
|
|
|
mWindowFlags = flags;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Panel::SetOpen(bool isOpen)
|
|
|
|
|
{
|
|
|
|
|
mIsOpen = isOpen;
|
|
|
|
|
@ -42,7 +48,6 @@ namespace lunarium
|
|
|
|
|
{
|
|
|
|
|
return mIsOpen;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Panel::GetPosition(int& x, int& y) const
|
|
|
|
|
{
|
|
|
|
|
@ -55,12 +60,75 @@ namespace lunarium
|
|
|
|
|
w = mWidth;
|
|
|
|
|
h = mHeight;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Panel::SetNumPushedStyles(int num)
|
|
|
|
|
{
|
|
|
|
|
mNumPushedStyles = num;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Panel::Update(float dt)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Panel::PreBegin()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool Panel::OnUIRender()
|
|
|
|
|
{
|
|
|
|
|
if (!mIsOpen)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
PreBegin();
|
|
|
|
|
|
|
|
|
|
if (!ImGui::Begin(GetName(), &mIsOpen, (ImGuiWindowFlags) mWindowFlags))
|
|
|
|
|
{
|
|
|
|
|
ImGui::PopStyleVar(mNumPushedStyles);
|
|
|
|
|
ImGui::End();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ImGui::PopStyleVar(mNumPushedStyles);
|
|
|
|
|
UpdateMetaInfo();
|
|
|
|
|
|
|
|
|
|
DoFrame();
|
|
|
|
|
|
|
|
|
|
RunPopups();
|
|
|
|
|
|
|
|
|
|
ImGui::End();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OpRes Panel::AddPopup(int id, std::string name, std::function<bool(Panel*)> func)
|
|
|
|
|
{
|
|
|
|
|
auto iter = mPopups.find(id);
|
|
|
|
|
if (iter != mPopups.end())
|
|
|
|
|
{
|
|
|
|
|
return OpRes::Fail("A popup with id: %d alread exists. Existing name: %s, New Name: %s",
|
|
|
|
|
iter->first, iter->second->Name.c_str(), name.c_str());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mPopups[id] = new Popup { func, false, name };
|
|
|
|
|
return OpRes::OK();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Panel::RunPopups()
|
|
|
|
|
{
|
|
|
|
|
for (auto iter = mPopups.begin(); iter != mPopups.end(); iter++)
|
|
|
|
|
{
|
|
|
|
|
Popup* ppu = iter->second;
|
|
|
|
|
if (ppu->IsOpen)
|
|
|
|
|
{
|
|
|
|
|
ppu->IsOpen = ppu->PopupFunc(this);
|
|
|
|
|
ImGui::OpenPopup(ppu->Name.c_str());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Panel::UpdateMetaInfo()
|
|
|
|
|
{
|
|
|
|
|
ImVec2 p = ImGui::GetWindowPos();
|
|
|
|
|
|