aboutsummaryrefslogtreecommitdiff
path: root/core/src/UI
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-06-10 18:07:30 -0700
committerrtk0c <[email protected]>2021-06-10 18:07:30 -0700
commit222cfec6ad882196d8927f73e30d905daae89556 (patch)
tree9347bb0ebf99cc79e4ee629d0edf7fd744bdeb1b /core/src/UI
parentdc09ba073744292a4d4af0445e5095f424fffa22 (diff)
Polish UI and add translations
Diffstat (limited to 'core/src/UI')
-rw-r--r--core/src/UI/Localization.hpp29
-rw-r--r--core/src/UI/UI_Items.cpp12
-rw-r--r--core/src/UI/UI_MainWindow.cpp4
-rw-r--r--core/src/UI/UI_Templates.cpp49
-rw-r--r--core/src/UI/UI_Workflows.cpp50
5 files changed, 71 insertions, 73 deletions
diff --git a/core/src/UI/Localization.hpp b/core/src/UI/Localization.hpp
index 43ee23b..3474053 100644
--- a/core/src/UI/Localization.hpp
+++ b/core/src/UI/Localization.hpp
@@ -21,9 +21,19 @@ public:
BasicTranslation Delete{ "Generic.Delete"sv };
BasicTranslation Rename{ "Generic.Rename"sv };
BasicTranslation Disconnect{ "Generic.Disconnect"sv };
+ BasicTranslation Open{ "Generic.Open"sv };
BasicTranslation Close{ "Generic.Close"sv };
- BasicTranslation DialogConfirm{ "Generic.Dialog.Confirm"sv };
- BasicTranslation DialogCancel{ "Generic.Dialog.Cancel"sv };
+ BasicTranslation Confirm{ "Generic.Confirm"sv };
+ BasicTranslation Cancel{ "Generic.Cancel"sv };
+ BasicTranslation Name{ "Generic.Name"sv };
+ BasicTranslation Type{ "Generic.Type"sv };
+
+ BasicTranslation AddDialogTitle{ "Generic.Add.DialogTitle"sv };
+ BasicTranslation DeleteDialogTitle{ "Generic.Delete.DialogTitle"sv };
+ BasicTranslation RenameDialogTitle{ "Generic.Rename.DialogTitle"sv };
+
+ BasicTranslation EmptyNameError{ "Generic.EmptyNameError"sv };
+ BasicTranslation DuplicateNameError{ "Generic.DuplicateNameError"sv };
/* Main window */
@@ -101,13 +111,16 @@ public:
BasicTranslation ItemStockColumn{ "Item.Column.Stock"sv };
BasicTranslation ItemPriceColumn{ "Item.Column.Price"sv };
- BasicTranslation EmptyItemNameError{ "Item.EmptyNameError"sv };
- BasicTranslation DuplicateItemNameError{ "Item.DuplicateNameError"sv };
+ /* Assets */
+
+ BasicTranslation OpenAsset{ "Asset.Open"sv };
+ BasicTranslation OpenAssetDialogTitle{ "Asset.Open.DialogTitle"sv };
+ BasicTranslation ManageAssets{ "Asset.Manage"sv };
+ BasicTranslation ManageAssetsDialogTitle{ "Asset.Manage.DialogTitle"sv };
/* Workflow tab */
- BasicTranslation OpenWorkflow{ "Workflow.Open"sv };
- BasicTranslation OpenWorkflowDialogTitle{ "Workflow.Open.DialogTitle"sv };
- BasicTranslation ManageWorkflows{ "Workflow.Manage"sv };
- BasicTranslation ManageWorkflowsDialogTitle{ "Workflow.Manage.DialogTitle"sv };
+ /* Templates tab */
+
+ BasicTranslation InvalidTemplateTypeError{ "Template.InvalidTypeError"sv };
};
diff --git a/core/src/UI/UI_Items.cpp b/core/src/UI/UI_Items.cpp
index d006166..6887f23 100644
--- a/core/src/UI/UI_Items.cpp
+++ b/core/src/UI/UI_Items.cpp
@@ -57,16 +57,16 @@ ActionResult ItemEditor(ItemList<T>& list, T* item)
if constexpr (kHasEmail) ImGui::InputText(ls->ItemEmailColumn.Get(), &email);
if (name.empty()) {
- ImGui::ErrorMessage("%s", ls->EmptyItemNameError.Get());
+ ImGui::ErrorMessage("%s", ls->EmptyNameError.Get());
}
if (duplicateName) {
- ImGui::ErrorMessage("%s", ls->DuplicateItemNameError.Get());
+ ImGui::ErrorMessage("%s", ls->DuplicateNameError.Get());
}
// Return Value
auto rv = ActionResult::Pending;
- if (ImGui::Button(ls->DialogConfirm.Get(), name.empty() || duplicateName)) {
+ if (ImGui::Button(ls->Confirm.Get(), name.empty() || duplicateName)) {
if (item->GetName() != name) {
item->SetName(std::move(name));
}
@@ -85,7 +85,7 @@ ActionResult ItemEditor(ItemList<T>& list, T* item)
}
ImGui::SameLine();
- if (ImGui::Button(ls->DialogCancel.Get())) {
+ if (ImGui::Button(ls->Cancel.Get())) {
ImGui::CloseCurrentPopup();
ClearStates();
rv = ActionResult::Canceled;
@@ -221,12 +221,12 @@ void ItemListEditor(ItemList<T>& list)
if (ImGui::BeginPopupModal(ls->DeleteItemDialogTitle.Get(), &opened, ImGuiWindowFlags_AlwaysAutoResize)) {
ImGui::TextUnformatted(ls->DeleteItemDialogMessage.Get());
- if (ImGui::Button(ls->DialogConfirm.Get())) {
+ if (ImGui::Button(ls->Confirm.Get())) {
ImGui::CloseCurrentPopup();
}
ImGui::SameLine();
- if (ImGui::Button(ls->DialogCancel.Get())) {
+ if (ImGui::Button(ls->Cancel.Get())) {
ImGui::CloseCurrentPopup();
}
diff --git a/core/src/UI/UI_MainWindow.cpp b/core/src/UI/UI_MainWindow.cpp
index 18f6731..8131508 100644
--- a/core/src/UI/UI_MainWindow.cpp
+++ b/core/src/UI/UI_MainWindow.cpp
@@ -84,7 +84,7 @@ void ProjectTab_NoProject()
ImGui::Spacing();
- if (ImGui::Button(ls->DialogConfirm.Get(), !dirNameIsValid || projectName.empty())) {
+ if (ImGui::Button(ls->Confirm.Get(), !dirNameIsValid || projectName.empty())) {
ImGui::CloseCurrentPopup();
gs.SetCurrentProject(std::make_unique<Project>(std::move(dirPath), std::move(projectName)));
@@ -97,7 +97,7 @@ void ProjectTab_NoProject()
}
ImGui::SameLine();
- if (ImGui::Button(ls->DialogCancel.Get())) {
+ if (ImGui::Button(ls->Cancel.Get())) {
ImGui::CloseCurrentPopup();
}
diff --git a/core/src/UI/UI_Templates.cpp b/core/src/UI/UI_Templates.cpp
index d48e8bf..b3a1e05 100644
--- a/core/src/UI/UI_Templates.cpp
+++ b/core/src/UI/UI_Templates.cpp
@@ -137,16 +137,9 @@ void UI::TemplatesTab()
auto ls = LocaleStrings::Instance.get();
auto& project = *GlobalStates::GetInstance().GetCurrentProject();
- enum class PopupType
- {
- None,
- TemplateSelect,
- Management,
- };
-
static std::unique_ptr<TemplateUI> openTemplate;
- static AssetList::PopupState popup;
- static PopupType popupType = PopupType::None;
+ static AssetList::ListState state;
+ bool openedDummy = true;
// Toolbar item: close
if (ImGui::Button(ls->Close.Get(), openTemplate == nullptr)) {
@@ -155,30 +148,30 @@ void UI::TemplatesTab()
// Toolbar item: open...
ImGui::SameLine();
- if (ImGui::Button("Open...")) {
- project.Templates.OpenDetailsPopup();
- popupType = PopupType::TemplateSelect;
+ if (ImGui::Button(ls->OpenAsset.Get())) {
+ ImGui::OpenPopup(ls->OpenAssetDialogTitle.Get());
+ }
+ if (ImGui::BeginPopupModal(ls->OpenAssetDialogTitle.Get(), &openedDummy, ImGuiWindowFlags_AlwaysAutoResize)) {
+ if (ImGui::Button(ls->Open.Get(), state.SelectedAsset == nullptr)) {
+ auto kind = static_cast<Template::Kind>(state.SelectedAsset->Payload);
+ openTemplate = TemplateUI::CreateByKind(kind);
+ }
+ ImGui::SameLine();
+ project.Templates.DisplayControls(state);
+ project.Templates.DisplayDetailsList(state);
+
+ ImGui::EndPopup();
}
// Toolbar item: manage...
ImGui::SameLine();
- if (ImGui::Button("Manage...")) {
- project.Templates.OpenDetailsPopup();
- popupType = PopupType::Management;
+ if (ImGui::Button(ls->ManageAssets.Get())) {
+ ImGui::OpenPopup(ls->ManageAssetsDialogTitle.Get());
}
-
- switch (popupType) {
- case PopupType::TemplateSelect:
- if (ImGui::Button("Open", popup.SelectedAsset == nullptr)) {
- auto kind = static_cast<Template::Kind>(popup.SelectedAsset->Payload);
- openTemplate = TemplateUI::CreateByKind(kind);
- }
- project.Templates.DisplayDetailsPopup(popup);
- break;
-
- default:
- project.Templates.DisplayDetailsPopup(popup);
- break;
+ if (ImGui::BeginPopupModal(ls->ManageAssetsDialogTitle.Get(), &openedDummy, ImGuiWindowFlags_AlwaysAutoResize)) {
+ project.Templates.DisplayControls(state);
+ project.Templates.DisplayDetailsList(state);
+ ImGui::EndPopup();
}
if (openTemplate) {
diff --git a/core/src/UI/UI_Workflows.cpp b/core/src/UI/UI_Workflows.cpp
index 3c23c30..3230cf9 100644
--- a/core/src/UI/UI_Workflows.cpp
+++ b/core/src/UI/UI_Workflows.cpp
@@ -365,16 +365,9 @@ void UI::WorkflowsTab()
auto ls = LocaleStrings::Instance.get();
auto& project = *GlobalStates::GetInstance().GetCurrentProject();
- enum class PopupType
- {
- None,
- WorkflowSelect,
- Management,
- };
-
static std::unique_ptr<WorkflowUI> openWorkflow;
- static AssetList::PopupState popup;
- static PopupType popupType = PopupType::None;
+ static AssetList::ListState state;
+ bool openedDummy = true;
// Toolbar item: close
if (ImGui::Button(ls->Close.Get(), openWorkflow == nullptr)) {
@@ -383,31 +376,30 @@ void UI::WorkflowsTab()
// Toolbar item: open...
ImGui::SameLine();
- if (ImGui::Button(ls->OpenWorkflow.Get())) {
- project.Workflows.OpenDetailsPopup();
- popupType = PopupType::WorkflowSelect;
+ if (ImGui::Button(ls->OpenAsset.Get())) {
+ ImGui::OpenPopup(ls->OpenAssetDialogTitle.Get());
+ }
+ if (ImGui::BeginPopupModal(ls->OpenAssetDialogTitle.Get(), &openedDummy, ImGuiWindowFlags_AlwaysAutoResize)) {
+ if (ImGui::Button(ls->Open.Get(), state.SelectedAsset == nullptr)) {
+ auto workflow = project.Workflows.Load(*state.SelectedAsset);
+ openWorkflow = std::make_unique<WorkflowUI>(std::move(workflow));
+ }
+ ImGui::SameLine();
+ project.Workflows.DisplayControls(state);
+ project.Workflows.DisplayDetailsList(state);
+
+ ImGui::EndPopup();
}
// Toolbar item: manage...
ImGui::SameLine();
- if (ImGui::Button(ls->ManageWorkflows.Get())) {
- project.Workflows.OpenDetailsPopup();
- popupType = PopupType::Management;
+ if (ImGui::Button(ls->ManageAssets.Get())) {
+ ImGui::OpenPopup(ls->ManageAssetsDialogTitle.Get());
}
-
- project.Workflows.DisplayDetailsPopup(popup);
- switch (popupType) {
- case PopupType::WorkflowSelect:
- if (ImGui::Button("Open", popup.SelectedAsset == nullptr)) {
- auto workflow = project.Workflows.Load(*popup.SelectedAsset);
- openWorkflow = std::make_unique<WorkflowUI>(std::move(workflow));
- }
- project.Workflows.DisplayDetailsPopup(popup);
- break;
-
- default:
- project.Workflows.DisplayDetailsPopup(popup);
- break;
+ if (ImGui::BeginPopupModal(ls->ManageAssetsDialogTitle.Get(), &openedDummy, ImGuiWindowFlags_AlwaysAutoResize)) {
+ project.Workflows.DisplayControls(state);
+ project.Workflows.DisplayDetailsList(state);
+ ImGui::EndPopup();
}
if (openWorkflow) {