summaryrefslogtreecommitdiff
path: root/core/src/UI
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/UI')
-rw-r--r--core/src/UI/Localization.hpp11
-rw-r--r--core/src/UI/States.cpp13
-rw-r--r--core/src/UI/States.hpp14
-rw-r--r--core/src/UI/UI_MainWindow.cpp64
-rw-r--r--core/src/UI/fwd.hpp3
5 files changed, 78 insertions, 27 deletions
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<LocaleStrings> 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<UIState> uiStateInstance;
+
+void UIState::Init() {
+ uiStateInstance = std::make_unique<UIState>();
+}
+
+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 <memory>
+
+class UIState {
+public:
+ static void Init();
+ static UIState& GetInstance();
+
+public:
+ std::unique_ptr<Project> 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 <imgui.h>
-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;