add(widget/Spacer): empty widget implementation
All checks were successful
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 32s

This commit is contained in:
2024-11-10 00:13:47 +01:00
parent 04b6df691e
commit b32556720e
3 changed files with 37 additions and 0 deletions

View File

@@ -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();

View File

@@ -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);
};
}

33
src/widget/Spacer.zig Normal file
View File

@@ -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{};
}
};
}