diff --git a/src/main.zig b/src/main.zig index 409f5dd..100633d 100644 --- a/src/main.zig +++ b/src/main.zig @@ -34,15 +34,18 @@ pub fn main() !void { var appFileText = App.Widget.RawText.init(allocator, appFile); appFile.close(); + var spacer = App.Widget.Spacer.init(); var framing = App.Layout.Framing.init(allocator, .{ .widget = App.Widget.createFrom(&mainFileText), }); var hstack = App.Layout.HStack.init(allocator, .{ App.Layout.createFrom(&framing), }); + // TODO: corresponding contents need to be filled out by the layout accordingly! var vstack = App.Layout.VStack.init(allocator, .{ App.Widget.createFrom(&appFileText), App.Layout.createFrom(&hstack), + App.Widget.createFrom(&spacer), }); var layout = App.Layout.createFrom(&vstack); defer layout.deinit(); diff --git a/src/widget.zig b/src/widget.zig index 6cf43a0..ca26adf 100644 --- a/src/widget.zig +++ b/src/widget.zig @@ -74,5 +74,6 @@ pub fn Widget(comptime Event: type) type { // TODO: import and export of `Widget` implementations (with corresponding initialization using `Event`) pub const RawText = @import("widget/RawText.zig").Widget(Event); + pub const Spacer = @import("widget/Spacer.zig").Widget(Event); }; } diff --git a/src/widget/Spacer.zig b/src/widget/Spacer.zig new file mode 100644 index 0000000..888eaca --- /dev/null +++ b/src/widget/Spacer.zig @@ -0,0 +1,33 @@ +const std = @import("std"); +const terminal = @import("../terminal.zig"); + +const isTaggedUnion = @import("../event.zig").isTaggedUnion; +const Error = @import("../event.zig").Error; + +const log = std.log.scoped(.widget_spacer); + +pub fn Widget(comptime Event: type) type { + if (!isTaggedUnion(Event)) { + @compileError("Provided user event `Event` for `Layout(comptime Event: type)` is not of type `union(enum)`."); + } + return struct { + pub fn init() @This() { + return .{}; + } + + pub fn deinit(this: *@This()) void { + this.* = undefined; + } + + pub fn handle(this: *@This(), event: Event) ?Event { + _ = this; + _ = event; + return null; + } + + pub fn content(this: *@This()) ![]u8 { + _ = this; + return &[0]u8{}; + } + }; +}