aboutsummaryrefslogtreecommitdiff
path: root/core/src/UI/UI_Workflows.cpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-06-09 22:18:32 -0700
committerrtk0c <[email protected]>2021-06-09 22:18:32 -0700
commitdc09ba073744292a4d4af0445e5095f424fffa22 (patch)
tree999b3d641502805ddaa6291e95f0443113b8859a /core/src/UI/UI_Workflows.cpp
parent19d8aeb010ffc967bf82986b7586b161364ab82f (diff)
Refactor asset management UI into AssetList
Diffstat (limited to 'core/src/UI/UI_Workflows.cpp')
-rw-r--r--core/src/UI/UI_Workflows.cpp107
1 files changed, 25 insertions, 82 deletions
diff --git a/core/src/UI/UI_Workflows.cpp b/core/src/UI/UI_Workflows.cpp
index 7b2de2a..3c23c30 100644
--- a/core/src/UI/UI_Workflows.cpp
+++ b/core/src/UI/UI_Workflows.cpp
@@ -363,12 +363,18 @@ public:
void UI::WorkflowsTab()
{
auto ls = LocaleStrings::Instance.get();
- auto& gs = GlobalStates::GetInstance();
- auto& project = *gs.GetCurrentProject();
+ auto& project = *GlobalStates::GetInstance().GetCurrentProject();
+
+ enum class PopupType
+ {
+ None,
+ WorkflowSelect,
+ Management,
+ };
- bool openedDummy = true;
static std::unique_ptr<WorkflowUI> openWorkflow;
- static AssetList::ListState state;
+ static AssetList::PopupState popup;
+ static PopupType popupType = PopupType::None;
// Toolbar item: close
if (ImGui::Button(ls->Close.Get(), openWorkflow == nullptr)) {
@@ -378,93 +384,30 @@ void UI::WorkflowsTab()
// Toolbar item: open...
ImGui::SameLine();
if (ImGui::Button(ls->OpenWorkflow.Get())) {
- ImGui::OpenPopup(ls->OpenWorkflowDialogTitle.Get());
- }
- if (ImGui::BeginPopupModal(ls->OpenWorkflowDialogTitle.Get(), &openedDummy, ImGuiWindowFlags_AlwaysAutoResize)) {
- project.Workflows.DrawDetails(state);
-
- if (state.SelectedAsset) {
- auto workflow = project.Workflows.Load(*state.SelectedAsset);
- openWorkflow = std::make_unique<WorkflowUI>(std::move(workflow));
- }
-
- ImGui::EndPopup();
+ project.Workflows.OpenDetailsPopup();
+ popupType = PopupType::WorkflowSelect;
}
// Toolbar item: manage...
ImGui::SameLine();
if (ImGui::Button(ls->ManageWorkflows.Get())) {
- ImGui::OpenPopup(ls->ManageWorkflowsDialogTitle.Get());
+ project.Workflows.OpenDetailsPopup();
+ popupType = PopupType::Management;
}
- if (ImGui::BeginPopupModal(ls->ManageWorkflowsDialogTitle.Get(), &openedDummy, ImGuiWindowFlags_AlwaysAutoResize)) {
- project.Workflows.DrawDetails(state);
-
- enum class NameSelectionError
- {
- None,
- Duplicated,
- Empty,
- };
- static std::string newName;
- static NameSelectionError newNameError;
- if (ImGui::Button(ls->Rename.Get(), state.SelectedAsset == nullptr)) {
- ImGui::OpenPopup("Rename workflow");
- newName.clear();
- }
- if (ImGui::BeginPopupModal("Rename workflow")) {
- if (ImGui::InputText("New name", &newName)) {
- if (newName.empty()) {
- newNameError = NameSelectionError::Empty;
- }
-
- if (project.Workflows.FindByName(newName)) {
- newNameError = NameSelectionError::Duplicated;
- }
- }
-
- if (ImGui::Button(ls->DialogConfirm.Get(), newName.empty())) {
- auto workflow = project.Workflows.Rename(
- state.SelectedAsset->Name,
- newName);
- state.SelectedAsset = workflow;
+ 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));
}
- ImGui::SameLine();
- if (ImGui::Button(ls->DialogCancel.Get())) {
- ImGui::CloseCurrentPopup();
- }
-
- switch (newNameError) {
- case NameSelectionError::None: break;
- case NameSelectionError::Duplicated:
- ImGui::ErrorMessage("Duplicate workflow name");
- break;
- case NameSelectionError::Empty:
- ImGui::ErrorMessage("Workflow name cannot be empty");
- break;
- }
-
- ImGui::EndPopup();
- }
-
- if (ImGui::Button(ls->Delete.Get(), state.SelectedAsset == nullptr)) {
- ImGui::OpenPopup("Delete confirmation");
- }
- if (ImGui::BeginPopupModal("Delete confirmation")) {
- if (ImGui::Button(ls->DialogConfirm.Get())) {
- auto& assetName = state.SelectedAsset->Name;
- project.Workflows.Remove(assetName);
-
- state.SelectedAsset = nullptr;
- }
- ImGui::SameLine();
- if (ImGui::Button(ls->DialogCancel.Get())) {
- ImGui::CloseCurrentPopup();
- }
- ImGui::EndPopup();
- }
+ project.Workflows.DisplayDetailsPopup(popup);
+ break;
- ImGui::EndPopup();
+ default:
+ project.Workflows.DisplayDetailsPopup(popup);
+ break;
}
if (openWorkflow) {