diff options
author | rtk0c <[email protected]> | 2023-10-19 22:50:07 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2023-10-19 22:50:07 -0700 |
commit | 2c92e07f337e42cf58970443f9de678f85a9b2a4 (patch) | |
tree | 075d5407e1e12a9d35cbee6e4c20ad34e0765c42 /source/30-game/EditorCommandPalette.hpp | |
parent | 615809c036f604bce4582cea8ad49c64693f4f45 (diff) |
The great renaming: switch to "module style"
Diffstat (limited to 'source/30-game/EditorCommandPalette.hpp')
-rw-r--r-- | source/30-game/EditorCommandPalette.hpp | 94 |
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(); -}; |