aboutsummaryrefslogtreecommitdiff
path: root/source/30-game/EditorCommandPalette.hpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2023-10-19 22:50:07 -0700
committerrtk0c <[email protected]>2023-10-19 22:50:07 -0700
commit2c92e07f337e42cf58970443f9de678f85a9b2a4 (patch)
tree075d5407e1e12a9d35cbee6e4c20ad34e0765c42 /source/30-game/EditorCommandPalette.hpp
parent615809c036f604bce4582cea8ad49c64693f4f45 (diff)
The great renaming: switch to "module style"
Diffstat (limited to 'source/30-game/EditorCommandPalette.hpp')
-rw-r--r--source/30-game/EditorCommandPalette.hpp94
1 files changed, 0 insertions, 94 deletions
diff --git a/source/30-game/EditorCommandPalette.hpp b/source/30-game/EditorCommandPalette.hpp
deleted file mode 100644
index 101344d..0000000
--- a/source/30-game/EditorCommandPalette.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-#pragma once
-
-#include <imgui.h>
-#include <cstddef>
-#include <functional>
-#include <string>
-#include <string_view>
-
-class EditorCommandExecuteContext;
-class EditorCommand {
-public:
- std::string name;
- std::function<void(EditorCommandExecuteContext& ctx)> callback;
- std::function<void(EditorCommandExecuteContext& ctx, size_t selectedOptionId)> subsequentCallback;
- std::function<void()> terminate;
-};
-
-class EditorCommandExecuteContext {
- friend class EditorCommandPalette;
-
-private:
- const EditorCommand* mCommand = nullptr;
- std::vector<std::string> mCurrentOptions;
- int mDepth = 0;
-
-public:
- bool IsInitiated() const;
- const EditorCommand* GetCurrentCommand() const;
- void Initiate(const EditorCommand& command);
-
- void Prompt(std::vector<std::string> options);
- void Finish();
-
- /// Return the number of prompts that the user is currently completing. For example, when the user opens command
- /// palette fresh and selects a command, 0 is returned. If the command asks some prompt, and then the user selects
- /// again, 1 is returned.
- int GetExecutionDepth() const;
-};
-
-class EditorCommandPalette {
-private:
- struct SearchResult;
- struct Item;
-
- std::vector<EditorCommand> mCommands;
- std::vector<Item> mItems;
- std::vector<SearchResult> mSearchResults;
- std::string mSearchText;
- EditorCommandExecuteContext mExeCtx;
- int mFocusedItemId = 0;
- bool mFocusSearchBox = false;
- bool mShouldCloseNextFrame = false;
-
-public:
- EditorCommandPalette();
- ~EditorCommandPalette();
-
- EditorCommandPalette(const EditorCommandPalette&) = delete;
- EditorCommandPalette& operator=(const EditorCommandPalette&) = delete;
- EditorCommandPalette(EditorCommandPalette&&) = default;
- EditorCommandPalette& operator=(EditorCommandPalette&&) = default;
-
- void AddCommand(std::string_view category, std::string_view name, EditorCommand command);
- void RemoveCommand(std::string_view category, std::string_view name);
- void RemoveCommand(const std::string& commandName);
-
- void Show(bool* open = nullptr);
-
- enum ItemType {
- CommandItem,
- CommandOptionItem,
- };
-
- enum IndexType {
- DirectIndex,
- SearchResultIndex,
- };
-
- struct ItemInfo {
- const char* text;
- const EditorCommand* command;
- int itemId;
- ItemType itemType;
- IndexType indexType;
- };
-
- size_t GetItemCount() const;
- ItemInfo GetItem(size_t idx) const;
-
- void SelectFocusedItem();
-
-private:
- void InvalidateSearchResults();
-};