Skip to content

Commit

Permalink
[editor] simplified MenuBar and fixed the y padding of it within the …
Browse files Browse the repository at this point in the history
…editor viewport
  • Loading branch information
PanosK92 committed Dec 19, 2024
1 parent c2fb6c2 commit 2279b79
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 41 deletions.
26 changes: 9 additions & 17 deletions editor/Editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,9 @@ using namespace std;

namespace
{
float font_size = 18.0f;
float font_scale = 1.0f;
MenuBar* widget_menu_bar = nullptr;
Widget* widget_world = nullptr;
float font_size = 18.0f;
float font_scale = 1.0f;
Widget* widget_world = nullptr;

void process_event(Spartan::sp_variant data)
{
Expand Down Expand Up @@ -104,8 +103,7 @@ Editor::Editor(const vector<string>& args)
m_widgets.emplace_back(make_shared<Properties>(this));
m_widgets.emplace_back(make_shared<WorldViewer>(this));
widget_world = m_widgets.back().get();
m_widgets.emplace_back(make_shared<MenuBar>(this));
widget_menu_bar = static_cast<MenuBar*>(m_widgets.back().get());
MenuBar::Initialize(this);

// allow imgui to get event's from the engine's event processing loop
SP_SUBSCRIBE_TO_EVENT(Spartan::EventType::Sdl, SP_EVENT_HANDLER_VARIANT_STATIC(process_event));
Expand Down Expand Up @@ -156,6 +154,7 @@ void Editor::Tick()
{
widget->Tick();
}
MenuBar::Tick();

ImGui::End();

Expand Down Expand Up @@ -198,22 +197,15 @@ void Editor::BeginWindow()
ImGuiWindowFlags_NoBringToFrontOnFocus |
ImGuiWindowFlags_NoNavFocus;

ImGuiStyle& style = ImGui::GetStyle();

// set window position and size
// set window position and size - this keeps the MenuBar in the right place and at the right size
const ImGuiViewport* viewport = ImGui::GetMainViewport();
const float padding_offset = 2.0f * (style.FramePadding.y - MenuBar::GetPadding().y) - 1.0f;
const float offset_y = widget_menu_bar ? widget_menu_bar->GetHeight() + padding_offset : 0;

ImGui::SetNextWindowPos(ImVec2(viewport->Pos.x, viewport->Pos.y - offset_y));
ImGui::SetNextWindowSize(ImVec2(viewport->Size.x, viewport->Size.y - offset_y));
ImGui::SetNextWindowViewport(viewport->ID);

ImGui::SetNextWindowPos(ImVec2(viewport->Pos.x, viewport->Pos.y));
ImGui::SetNextWindowSize(ImVec2(viewport->Size.x, viewport->Size.y));

// set window style
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f));
ImGui::SetNextWindowBgAlpha(0.0f);

// begin window
std::string name = "##main_window";
Expand Down
33 changes: 19 additions & 14 deletions editor/Widgets/MenuBar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ namespace

const ImGuiStyle& style = ImGui::GetStyle();
const float size_avail_y = 2.0f * style.FramePadding.y + button_size;
const float button_size_y = button_size + 2.0f * MenuBar::GetPadding().y;
const float button_size_y = button_size + 2.0f * MenuBar::GetPaddingY();
const float offset_y = (button_size_y - size_avail_y) * 0.5f;

ImGui::SetCursorPosY(offset_y);
Expand All @@ -262,14 +262,14 @@ namespace
{
const ImGuiViewport* viewport = ImGui::GetMainViewport();
const float size_avail_x = viewport->Size.x;
const float button_size_final = button_size * Spartan::Window::GetDpiScale() + MenuBar::GetPadding().x * 2.0f;
const float button_size_final = button_size * Spartan::Window::GetDpiScale() + MenuBar::GetPaddingX() * 2.0f;
float num_buttons = 1.0f;
float size_toolbar = num_buttons * button_size_final;
float cursor_pos_x = (size_avail_x - size_toolbar) * 0.5f;

// play button
{
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, { 18.0f, MenuBar::GetPadding().y - 5.0f });
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, { 18.0f, MenuBar::GetPaddingY() - 5.0f });

toolbar_button(
IconType::Button_Play, "Play",
Expand All @@ -282,7 +282,7 @@ namespace
}

// all the other buttons
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, { MenuBar::GetPadding().x - 1.0f, MenuBar::GetPadding().y - 5.0f });
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, { MenuBar::GetPaddingX() - 1.0f, MenuBar::GetPaddingY() - 5.0f });
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, { 4.0f , 0.0f });
{
num_buttons = 6.0f;
Expand Down Expand Up @@ -360,10 +360,8 @@ namespace
}
}

MenuBar::MenuBar(Editor* _editor) : Widget(_editor)
void MenuBar::Initialize(Editor* _editor)
{
m_title = "menu_bar";
m_is_window = false;
editor = _editor;
file_dialog = make_unique<FileDialog>(true, FileDialog_Type_FileSelection, FileDialog_Op_Open, FileDialog_Filter_World);

Expand All @@ -376,17 +374,24 @@ MenuBar::MenuBar(Editor* _editor) : Widget(_editor)
Spartan::Engine::SetFlag(Spartan::EngineMode::Playing, false);
}

void MenuBar::OnTick()
void MenuBar::Tick()
{
// menu
if (ImGui::BeginMainMenuBar())
{
buttons_menu::world();
buttons_menu::view();
buttons_menu::help();
buttons_toolbar::tick();
ImGuiStyle& style = ImGui::GetStyle();
ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(style.FramePadding.x, 8.0f));

ImGui::EndMainMenuBar();
if (ImGui::BeginMainMenuBar())
{
buttons_menu::world();
buttons_menu::view();
buttons_menu::help();
buttons_toolbar::tick();

ImGui::EndMainMenuBar();
}

ImGui::PopStyleVar();
}

// windows
Expand Down
20 changes: 10 additions & 10 deletions editor/Widgets/MenuBar.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,19 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

#pragma once

//= INCLUDES ======
#include "Widget.h"
//=================
// FWD DECLARATIONS =
class Editor;
//===================

class MenuBar : public Widget
class MenuBar
{
public:
MenuBar(Editor* editor);
static void Initialize(Editor* editor);
static void Tick();

void OnTick() override;
static void ShowWorldSaveDialog();
static void ShowWorldLoadDialog();

void ShowWorldSaveDialog();
void ShowWorldLoadDialog();

static ImVec2 GetPadding() { return { 14.0f, 8.0f }; }
static float GetPaddingX() { return 14.0f; }
static float GetPaddingY() { return 8.0f; }
};

0 comments on commit 2279b79

Please sign in to comment.