From 6032ae108064650324b2c45352e1baa5b36961cc Mon Sep 17 00:00:00 2001 From: rtk0c Date: Mon, 29 Mar 2021 13:47:55 -0700 Subject: Project tab --- core/src/UI/Localization.hpp | 11 ++++---- core/src/UI/States.cpp | 13 +++++++++ core/src/UI/States.hpp | 14 ++++++++++ core/src/UI/UI_MainWindow.cpp | 64 ++++++++++++++++++++++++++++--------------- core/src/UI/fwd.hpp | 3 ++ 5 files changed, 78 insertions(+), 27 deletions(-) create mode 100644 core/src/UI/States.cpp create mode 100644 core/src/UI/States.hpp (limited to 'core/src/UI') diff --git a/core/src/UI/Localization.hpp b/core/src/UI/Localization.hpp index a2ac09b..648dd6d 100644 --- a/core/src/UI/Localization.hpp +++ b/core/src/UI/Localization.hpp @@ -12,13 +12,14 @@ public: static std::unique_ptr Instance; public: - BasicTranslation MenuBarFile{ "MenuBar.File"sv }; - BasicTranslation MenuBarNewWindow{ "MenuBar.File.NewWindow"sv }; - BasicTranslation MenuBarNewProject{ "MenuBar.File.NewProject"sv }; - BasicTranslation MenuBarOpenProject{ "MenuBar.File.OpenProject"sv }; - BasicTranslation TabSettings{ "MainWindow.Tab.Settings"sv }; + BasicTranslation TabProject{ "MainWindow.Tab.Project"sv }; BasicTranslation TabDatabaseView{ "MainWindow.Tab.DatabaseView"sv }; BasicTranslation TabItems{ "MainWindow.Tab.Items"sv }; BasicTranslation TabExport{ "MainWindow.Tab.Exports"sv }; + + BasicTranslation NewProject{ "Project.NewProject"sv }; + BasicTranslation OpenProject{ "Project.OpenProject"sv }; + BasicTranslation Recents{ "Project.Recents"sv }; + BasicTranslation ClearRecents{ "Project.ClearRecents"sv }; }; diff --git a/core/src/UI/States.cpp b/core/src/UI/States.cpp new file mode 100644 index 0000000..efae152 --- /dev/null +++ b/core/src/UI/States.cpp @@ -0,0 +1,13 @@ +#include "States.hpp" + +#include "Model/Project.hpp" + +static std::unique_ptr uiStateInstance; + +void UIState::Init() { + uiStateInstance = std::make_unique(); +} + +UIState& UIState::GetInstance() { + return *uiStateInstance; +} diff --git a/core/src/UI/States.hpp b/core/src/UI/States.hpp new file mode 100644 index 0000000..d1c1faf --- /dev/null +++ b/core/src/UI/States.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include "cplt_fwd.hpp" + +#include + +class UIState { +public: + static void Init(); + static UIState& GetInstance(); + +public: + std::unique_ptr CurrentProject; +}; diff --git a/core/src/UI/UI_MainWindow.cpp b/core/src/UI/UI_MainWindow.cpp index 8b1e71d..0c8e7b9 100644 --- a/core/src/UI/UI_MainWindow.cpp +++ b/core/src/UI/UI_MainWindow.cpp @@ -1,38 +1,44 @@ #include "UI.hpp" +#include "Model/Project.hpp" #include "UI/Localization.hpp" +#include "UI/States.hpp" #include -void UI::MainWindow() { +namespace { +void ProjectTab_Normal() { + // TODO +} + +void ProjectTab_NoProject() { auto ls = LocaleStrings::Instance.get(); - float menuBarHeight; - ImGui::BeginMainMenuBar(); - { - menuBarHeight = ImGui::GetWindowHeight(); + if (ImGui::Button(ls->NewProject.Get())) { + // TODO + } + if (ImGui::Button(ls->OpenProject.Get())) { + // TODO + } - if (ImGui::BeginMenu(ls->MenuBarFile.Get())) { - if (ImGui::MenuItem(ls->MenuBarNewWindow.Get())) { - // TODO - } - if (ImGui::MenuItem(ls->MenuBarNewProject.Get())) { - // TODO - } + ImGui::Separator(); + ImGui::Text(ls->Recents.Get()); + ImGui::SameLine(); + if (ImGui::Button(ls->ClearRecents.Get())) { + // TODO + } - ImGui::Separator(); - if (ImGui::MenuItem(ls->MenuBarOpenProject.Get())) { - // TODO - } + // TODO +} +} // namespace - ImGui::EndMenu(); - } - } - ImGui::EndMainMenuBar(); +void UI::MainWindow() { + auto ls = LocaleStrings::Instance.get(); + auto& uis = UIState::GetInstance(); auto windowSize = ImGui::GetMainViewport()->Size; - ImGui::SetNextWindowSize({ windowSize.x, windowSize.y - menuBarHeight }); - ImGui::SetNextWindowPos({ 0, menuBarHeight }); + ImGui::SetNextWindowSize({ windowSize.x, windowSize.y }); + ImGui::SetNextWindowPos({ 0, 0 }); ImGui::Begin("##MainWindow", nullptr, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize); if (ImGui::BeginTabBar("##MainWindowTabs")) { if (ImGui::BeginTabItem(ls->TabSettings.Get())) { @@ -40,6 +46,19 @@ void UI::MainWindow() { ImGui::EndTabItem(); } + if (ImGui::BeginTabItem(ls->TabProject.Get())) { + if (uis.CurrentProject) { + ProjectTab_Normal(); + } else { + ProjectTab_NoProject(); + } + ImGui::EndTabItem(); + } + if (!uis.CurrentProject) { + // No project open, simply skip all project specific tabs + goto endTab; + } + if (ImGui::BeginTabItem(ls->TabDatabaseView.Get())) { UI::DatabaseViewTab(); ImGui::EndTabItem(); @@ -55,6 +74,7 @@ void UI::MainWindow() { ImGui::EndTabItem(); } + endTab: ImGui::EndTabBar(); } ImGui::End(); diff --git a/core/src/UI/fwd.hpp b/core/src/UI/fwd.hpp index 714a443..e412524 100644 --- a/core/src/UI/fwd.hpp +++ b/core/src/UI/fwd.hpp @@ -2,3 +2,6 @@ // Localization.hpp class LocaleStrings; + +// States.hpp +class UIState; -- cgit v1.2.3-70-g09d2