Compare commits

...

3 Commits

10 changed files with 94 additions and 19 deletions

View File

@ -4,7 +4,7 @@
#include <imgui.h>
#include <studio/imguiuitl.hpp>
#include <studio/imguiutil.hpp>
#include "aboutpopup.hpp"
namespace olympic {

View File

@ -48,7 +48,7 @@ static ox::Error runApp(
turbine::setUpdateHandler(*ctx, updateHandler);
turbine::setKeyEventHandler(*ctx, keyEventHandler);
turbine::setConstantRefresh(*ctx, false);
studio::StudioContext studioCtx;
studio::StudioContext studioCtx(*ctx);
turbine::setApplicationData(*ctx, &studioCtx);
StudioUI ui(*ctx, projectDataDir);
studioCtx.ui = &ui;

View File

@ -6,7 +6,7 @@
#include <imgui.h>
#include <studio/imguiuitl.hpp>
#include <studio/imguiutil.hpp>
#include "newmenu.hpp"

View File

@ -4,7 +4,7 @@
#include <imgui.h>
#include <studio/imguiuitl.hpp>
#include <studio/imguiutil.hpp>
#include <utility>
#include "filedialogmanager.hpp"

View File

@ -6,6 +6,8 @@
#include <ox/event/signal.hpp>
#include <turbine/context.hpp>
#include "project.hpp"
namespace studio {
@ -13,6 +15,8 @@ namespace studio {
struct StudioContext {
class StudioUI *ui = nullptr;
Project *project = nullptr;
turbine::Context &tctx;
inline explicit StudioContext(turbine::Context &pTctx) noexcept: tctx(pTctx) {}
};
}

View File

@ -1,13 +0,0 @@
/*
* Copyright 2016 - 2024 Gary Talent (gary@drinkingtea.net). All rights reserved.
*/
#include <imgui.h>
#include <turbine/context.hpp>
namespace studio::ig {
void centerNextWindow(turbine::Context &ctx) noexcept;
}

View File

@ -0,0 +1,43 @@
/*
* Copyright 2016 - 2024 Gary Talent (gary@drinkingtea.net). All rights reserved.
*/
#pragma once
#include <imgui.h>
#include <turbine/context.hpp>
namespace studio::ig {
inline constexpr auto BtnSz = ImVec2{50, 22};
template<typename T>
class IDStackItem {
private:
T m_id;
public:
explicit IDStackItem(T id) noexcept: m_id(id) {
ImGui::PushID(m_id);
}
~IDStackItem() noexcept {
ImGui::PopID();
}
};
void centerNextWindow(turbine::Context &ctx) noexcept;
bool PushButton(ox::CStringView lbl, ImVec2 const&btnSz = BtnSz) noexcept;
void PopupBtns(float popupWidth, bool &popupOpen);
/**
*
* @param lbl
* @param list
* @param selectedIdx
* @return true if new value selected, false otherwise
*/
bool ComboBox(ox::CStringView lbl, ox::SpanView<ox::String> list, size_t &selectedIdx) noexcept;
}

View File

@ -7,7 +7,7 @@
#include <studio/context.hpp>
#include <studio/editor.hpp>
#include <studio/filedialog.hpp>
#include <studio/imguiuitl.hpp>
#include <studio/imguiutil.hpp>
#include <studio/module.hpp>
#include <studio/itemmaker.hpp>
#include <studio/popup.hpp>

View File

@ -6,6 +6,8 @@
#include <turbine/gfx.hpp>
#include <studio/imguiutil.hpp>
namespace studio::ig {
void centerNextWindow(turbine::Context &ctx) noexcept {
@ -16,4 +18,43 @@ void centerNextWindow(turbine::Context &ctx) noexcept {
ImGui::SetNextWindowPos(ImVec2(screenW / mod, screenH / mod), ImGuiCond_Always, ImVec2(0.5f, 0.5f));
}
bool PushButton(ox::CStringView lbl, ImVec2 const&btnSz) noexcept {
return ImGui::Button(lbl.c_str(), btnSz);
}
void PopupBtns(float popupWidth, bool &popupOpen) {
constexpr auto btnSz = ImVec2{50, BtnSz.y};
ImGui::Separator();
ImGui::SetCursorPosX(popupWidth - 118);
if (ImGui::Button("OK", btnSz)) {
ImGui::CloseCurrentPopup();
popupOpen = false;
}
ImGui::SameLine();
if (ImGui::Button("Cancel", btnSz)) {
ImGui::CloseCurrentPopup();
popupOpen = false;
}
}
bool ComboBox(
ox::CStringView lbl,
ox::SpanView<ox::String> list,
size_t &selectedIdx) noexcept {
bool out{};
auto const first = selectedIdx < list.size() ? list[selectedIdx].c_str() : "";
if (ImGui::BeginCombo(lbl.c_str(), first, 0)) {
for (auto i = 0u; i < list.size(); ++i) {
const auto selected = (selectedIdx == i);
if (ImGui::Selectable(list[i].c_str(), selected) && selectedIdx != i) {
selectedIdx = i;
//oxLogError(m_model.setPalette(list[n]));
out = true;
}
}
ImGui::EndCombo();
}
return out;
}
}

View File

@ -2,7 +2,7 @@
* Copyright 2016 - 2024 Gary Talent (gary@drinkingtea.net). All rights reserved.
*/
#include <studio/imguiuitl.hpp>
#include <studio/imguiutil.hpp>
#include <studio/popup.hpp>
namespace studio {