-
Notifications
You must be signed in to change notification settings - Fork 14
/
imcmd_command_palette.h
78 lines (63 loc) · 2.11 KB
/
imcmd_command_palette.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#pragma once
#include <imgui.h>
#include <cstddef>
#include <cstdint>
#include <functional>
#include <string>
#include <vector>
// TODO support std::string_view
// TODO support function pointer callback in addition to std::function
enum ImCmdTextType
{
ImCmdTextType_Regular,
ImCmdTextType_Highlight,
ImCmdTextType_COUNT,
};
enum ImCmdTextFlag
{
/// Whether the text is underlined. Default false.
ImCmdTextFlag_Underline,
ImCmdTextFlag_COUNT,
};
namespace ImCmd
{
struct Command
{
std::string Name;
std::function<void()> InitialCallback;
std::function<void(int selected_option)> SubsequentCallback;
std::function<void()> TerminatingCallback;
};
// Initialization
struct Context;
/// Create a new context object. If there is currently no context bound, it will also be bound as the current context.
Context* CreateContext();
/// Destroys the currently bound context.
void DestroyContext();
void DestroyContext(Context* context);
void SetCurrentContext(Context* context);
Context* GetCurrentContext();
// Command management
void AddCommand(Command command);
void RemoveCommand(const char* name);
// Styling
bool GetStyleFlag(ImCmdTextType type, ImCmdTextFlag flag);
void SetStyleFlag(ImCmdTextType type, ImCmdTextFlag flag, bool enabled);
ImFont* GetStyleFont(ImCmdTextType type);
void SetStyleFont(ImCmdTextType type, ImFont* font);
ImU32 GetStyleColor(ImCmdTextType type);
void SetStyleColor(ImCmdTextType type, ImU32 color);
void ClearStyleColor(ImCmdTextType type); //< Clear the style color for the given type, defaulting to ImGuiCol_Text
// Command palette widget
void SetNextCommandPaletteSearch(const char* text);
void SetNextCommandPaletteSearchBoxFocused();
void CommandPalette(const char* name);
bool IsAnyItemSelected();
void RemoveCache(const char* name);
void RemoveAllCaches();
// Command palette widget in a window helper
void SetNextWindowAffixedTop(ImGuiCond cond = 0);
void CommandPaletteWindow(const char* name, bool* p_open);
// Command responses, only call these in command callbacks (except TerminatingCallback)
void Prompt(std::vector<std::string> options);
} // namespace ImCmd