From 7872223c2464afb7d04a01d90cf0a94f5568c11b Mon Sep 17 00:00:00 2001 From: Yves Biener Date: Sun, 10 Nov 2024 15:19:15 +0100 Subject: [PATCH] mod(main): improve ergonomics of example src/main.zig implementation --- src/main.zig | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/main.zig b/src/main.zig index 9c066e6..aef550e 100644 --- a/src/main.zig +++ b/src/main.zig @@ -7,6 +7,8 @@ const App = zterm.App( true, ); const Key = zterm.Key; +const Layout = App.Layout; +const Widget = App.Widget; const log = std.log.scoped(.default); @@ -28,22 +30,27 @@ pub fn main() !void { // FIX: when not running fullscreen, the application needs to screen down accordingly to display the contents // -> size hint how much should it use? - const mainFile = try std.fs.cwd().openFile("./src/main.zig", .{}); - var mainFileText = App.Widget.RawText.init(allocator, mainFile); - mainFile.close(); - - const appFile = try std.fs.cwd().openFile("./src/app.zig", .{}); - var appFileText = App.Widget.RawText.init(allocator, appFile); - appFile.close(); - - var spacer = App.Widget.Spacer.init(); - // TODO: corresponding contents need to be filled out by the layout accordingly! - var vstack = App.Layout.VStack.init(allocator, .{ - App.Widget.createFrom(&appFileText), - App.Widget.createFrom(&spacer), - App.Widget.createFrom(&mainFileText), + var layout = Layout.createFrom(layout: { + var vstack = Layout.VStack.init(allocator, .{ + Widget.createFrom(blk: { + const file = try std.fs.cwd().openFile("./src/app.zig", .{}); + defer file.close(); + var widget = Widget.RawText.init(allocator, file); + break :blk &widget; + }), + Widget.createFrom(blk: { + var spacer = Widget.Spacer.init(); + break :blk &spacer; + }), + Widget.createFrom(blk: { + const file = try std.fs.cwd().openFile("./src/main.zig", .{}); + defer file.close(); + var widget = Widget.RawText.init(allocator, file); + break :blk &widget; + }), + }); + break :layout &vstack; }); - var layout = App.Layout.createFrom(&vstack); defer layout.deinit(); try app.start();