Plan canvas toolbar bindings

This commit is contained in:
2026-06-05 07:52:58 +02:00
parent 062fdaa982
commit 5def47cdcc
8 changed files with 241 additions and 97 deletions

View File

@@ -1526,6 +1526,20 @@ const char* canvas_tool_operation_name(pp::app::CanvasToolOperation operation) n
return "select-mode";
}
const char* canvas_tool_toolbar_action_name(pp::app::CanvasToolToolbarAction action) noexcept
{
switch (action) {
case pp::app::CanvasToolToolbarAction::select_mode:
return "select-mode";
case pp::app::CanvasToolToolbarAction::toggle_picking:
return "toggle-picking";
case pp::app::CanvasToolToolbarAction::toggle_touch_lock:
return "toggle-touch-lock";
}
return "select-mode";
}
const char* canvas_tool_mode_name(pp::app::CanvasToolMode mode) noexcept
{
switch (mode) {
@@ -2210,6 +2224,7 @@ void print_help()
<< " plan-stroke-composite [--width N] [--height N] [--layer-blend N] [--stroke-blend N] [--dual-blend] [--pattern-blend] [--framebuffer-fetch] [--texture-copy] [--blit] [--explicit-transitions] [--render-only] [--depth]\n"
<< " plan-canvas-hotkey --event key-down|key-up|touch-tap --key e|z|s|tab|alt|android-back|bracket-left|bracket-right [--ctrl] [--shift] [--mouse-focus] [--undo-count N] [--redo-count N] [--touch-fingers N]\n"
<< " plan-canvas-tool --kind draw|erase|line|camera|grid|copy|cut|fill|mask-free|mask-line|bucket|pick|touch-lock [--current-mode-draw]\n"
<< " plan-canvas-tool-toolbar\n"
<< " plan-canvas-tool-state [--mode draw|erase|line|camera|grid|copy|cut|fill|mask-free|mask-line|bucket] [--picking] [--touch-lock]\n"
<< " plan-canvas-camera-reset\n"
<< " plan-canvas-view-density [--density N] [--bad-float]\n"
@@ -7666,6 +7681,34 @@ int plan_canvas_tool(int argc, char** argv)
return 0;
}
int plan_canvas_tool_toolbar(int argc, char** argv)
{
if (argc > 2) {
print_error("plan-canvas-tool-toolbar", "unknown option");
return 2;
}
const auto toolbar = pp::app::plan_canvas_tool_toolbar();
std::cout << "{\"ok\":true,\"command\":\"plan-canvas-tool-toolbar\""
<< ",\"defaultMode\":\"" << canvas_tool_mode_name(toolbar.default_mode)
<< "\",\"bindingCount\":" << toolbar.bindings.size()
<< ",\"bindings\":[";
for (std::size_t i = 0; i < toolbar.bindings.size(); ++i) {
const auto& binding = toolbar.bindings[i];
if (i > 0) {
std::cout << ",";
}
std::cout << "{\"id\":\"" << json_escape(binding.button_id)
<< "\",\"action\":\"" << canvas_tool_toolbar_action_name(binding.action)
<< "\",\"mode\":\"" << canvas_tool_mode_name(binding.mode)
<< "\",\"customButton\":" << json_bool(binding.custom_button)
<< ",\"defaultOnInit\":" << json_bool(binding.applies_default_on_init)
<< "}";
}
std::cout << "]}\n";
return 0;
}
pp::foundation::Result<pp::app::CanvasHotkeyEvent> parse_canvas_hotkey_event(std::string_view event)
{
if (event == "key-down") {
@@ -11172,6 +11215,10 @@ int main(int argc, char** argv)
return plan_canvas_tool(argc, argv);
}
if (command == "plan-canvas-tool-toolbar") {
return plan_canvas_tool_toolbar(argc, argv);
}
if (command == "plan-canvas-tool-state") {
return plan_canvas_tool_state(argc, argv);
}