refactor: merge expander and spacer status bar widgets
This commit is contained in:
parent
0b42308321
commit
fa5da6e6d9
3 changed files with 20 additions and 56 deletions
49
src/tui/status/blank.zig
Normal file
49
src/tui/status/blank.zig
Normal file
|
@ -0,0 +1,49 @@
|
|||
const std = @import("std");
|
||||
const tp = @import("thespian");
|
||||
const Plane = @import("renderer").Plane;
|
||||
|
||||
const Widget = @import("../Widget.zig");
|
||||
|
||||
plane: Plane,
|
||||
layout: Widget.Layout,
|
||||
on_event: ?Widget.EventHandler,
|
||||
|
||||
const Self = @This();
|
||||
|
||||
pub fn Create(comptime layout_: Widget.Layout) @import("widget.zig").CreateFunction {
|
||||
return struct {
|
||||
fn create(a: std.mem.Allocator, parent: Plane, event_handler: ?Widget.EventHandler) @import("widget.zig").CreateError!Widget {
|
||||
const self: *Self = try a.create(Self);
|
||||
self.* = .{
|
||||
.plane = try Plane.init(&(Widget.Box{}).opts(@typeName(Self)), parent),
|
||||
.layout = layout_,
|
||||
.on_event = event_handler,
|
||||
};
|
||||
return Widget.to(self);
|
||||
}
|
||||
}.create;
|
||||
}
|
||||
|
||||
pub fn deinit(self: *Self, a: std.mem.Allocator) void {
|
||||
self.plane.deinit();
|
||||
a.destroy(self);
|
||||
}
|
||||
|
||||
pub fn layout(self: *Self) Widget.Layout {
|
||||
return self.layout;
|
||||
}
|
||||
|
||||
pub fn render(self: *Self, theme: *const Widget.Theme) bool {
|
||||
self.plane.set_base_style(" ", theme.statusbar);
|
||||
self.plane.erase();
|
||||
return false;
|
||||
}
|
||||
|
||||
pub fn receive(self: *Self, from: tp.pid_ref, m: tp.message) error{Exit}!bool {
|
||||
var btn: u32 = 0;
|
||||
if (try m.match(.{ "D", tp.any, tp.extract(&btn), tp.more })) {
|
||||
if (self.on_event) |h| h.send(from, m) catch {};
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue