From bca66e381553752423be99555b7da581424e8c36 Mon Sep 17 00:00:00 2001 From: Roman Pytkov Date: Wed, 10 Dec 2025 00:28:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D0=B1=D1=80=D0=BE=D1=81=D0=BA?= =?UTF-8?q?=D0=B8=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.zig | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/main.zig b/src/main.zig index 321e9a9..c3570e7 100644 --- a/src/main.zig +++ b/src/main.zig @@ -2,6 +2,9 @@ const std = @import("std"); const builtin = @import("builtin"); const dvui = @import("dvui"); const SDLBackend = @import("sdl-backend"); +const sdl_c = SDLBackend.c; +const Allocator = std.mem.Allocator; +const Color = dvui.Color; pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; @@ -21,6 +24,7 @@ pub fn main() !void { .dark => dvui.Theme.builtin.adwaita_dark, }, }); + defer win.deinit(); var interrupted = false; @@ -61,5 +65,51 @@ pub fn main() !void { } fn gui_frame() bool { + for (dvui.events()) |*e| { + if (e.evt == .window and e.evt.window.action == .close) return false; + if (e.evt == .app and e.evt.app.action == .quit) return false; + } + + const root = dvui.box( + @src(), + .{ .dir = .horizontal }, + .{ .expand = .both, .background = true, .style = .window }, + ); + defer root.deinit(); + + // Левая панель с фиксированной шириной + { + var left_panel = dvui.box(@src(), .{ .dir = .vertical }, .{ .expand = .vertical, .min_size_content = .{ .w = 200 }, .background = true }); + defer left_panel.deinit(); + + dvui.label(@src(), "Tools", .{}, .{}); + _ = dvui.button(@src(), "Button", .{}, .{}); + } + + // Правая панель - занимает оставшееся пространство + { + const back = dvui.box( + @src(), + .{ .dir = .horizontal }, + .{ .expand = .both, .padding = dvui.Rect.all(12), .background = true }, + ); + defer back.deinit(); + + const fill_color = Color.white.opacity(0.5); + var right_panel = dvui.box( + @src(), + .{ .dir = .vertical }, + .{ + .expand = .both, + .background = true, + .corner_radius = dvui.Rect.all(10), + .color_fill = fill_color, + }, + ); + defer right_panel.deinit(); + + dvui.label(@src(), "Canvas", .{}, .{ .gravity_x = 0.5 }); + } + return true; }