Первая версия тулбара

This commit is contained in:
2026-02-25 21:13:38 +03:00
parent 0d546782bb
commit 9202b527e4
9 changed files with 143 additions and 4 deletions

36
src/Toolbar.zig Normal file
View File

@@ -0,0 +1,36 @@
//! Структура тулбара инструментов. Жизненный цикл совпадает с Canvas.
const tool_interface = @import("tool_interface.zig");
const Toolbar = @This();
/// Описание одного инструмента для тулбара.
pub const ToolDescriptor = struct {
name: []const u8,
/// Иконка в формате TVG (байты).
icon_tvg: []const u8,
/// Реализация интерфейса инструмента (своя для каждого инструмента в tools/).
implementation: *const tool_interface.Tool,
};
/// Вертикальный тулбар инструментов.
tools: []const ToolDescriptor,
selected_index: usize,
pub fn init(tools_list: []const ToolDescriptor) Toolbar {
return .{
.tools = tools_list,
.selected_index = 0,
};
}
pub fn deinit(_: *Toolbar) void {}
pub fn currentDescriptor(self: *const Toolbar) ?*const ToolDescriptor {
if (self.tools.len == 0) return null;
return &self.tools[self.selected_index];
}
pub fn select(self: *Toolbar, index: usize) void {
if (index < self.tools.len) self.selected_index = index;
}