mirror of https://github.com/fairyglade/ly.git
Remove cornersContain()
Signed-off-by: AnErrupTion <anerruption@disroot.org>
This commit is contained in:
parent
e4e399cd07
commit
a41ebe8f6f
143
src/main.zig
143
src/main.zig
|
|
@ -101,12 +101,6 @@ const UiState = struct {
|
||||||
password_label: Label,
|
password_label: Label,
|
||||||
version_label: Label,
|
version_label: Label,
|
||||||
bigclock_label: BigLabel,
|
bigclock_label: BigLabel,
|
||||||
show_tty: bool,
|
|
||||||
hide_numlock: bool,
|
|
||||||
hide_capslock: bool,
|
|
||||||
hide_version_string: bool,
|
|
||||||
hide_labels: bool,
|
|
||||||
hide_binds: bool,
|
|
||||||
box: Box,
|
box: Box,
|
||||||
info_line: InfoLine,
|
info_line: InfoLine,
|
||||||
animate: bool,
|
animate: bool,
|
||||||
|
|
@ -419,13 +413,6 @@ pub fn main(init: std.process.Init) !void {
|
||||||
};
|
};
|
||||||
std.posix.sigaction(std.posix.SIG.TERM, &act, null);
|
std.posix.sigaction(std.posix.SIG.TERM, &act, null);
|
||||||
|
|
||||||
state.show_tty = cornersContain(state, "tty");
|
|
||||||
state.hide_numlock = !cornersContain(state, "numlock");
|
|
||||||
state.hide_capslock = !cornersContain(state, "capslock");
|
|
||||||
state.hide_version_string = !cornersContain(state, "version");
|
|
||||||
state.hide_labels = !cornersContain(state, "labels") and !cornersContain(state, "lbl:");
|
|
||||||
state.hide_binds = !cornersContain(state, "binds") and !cornersContain(state, "cmd:");
|
|
||||||
|
|
||||||
// Initialize components
|
// Initialize components
|
||||||
state.shutdown_label = Label.init(
|
state.shutdown_label = Label.init(
|
||||||
"",
|
"",
|
||||||
|
|
@ -1197,81 +1184,55 @@ pub fn main(init: std.process.Init) !void {
|
||||||
item.lbl.deinit();
|
item.lbl.deinit();
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!state.hide_labels) {
|
var lblIter = custom.labels.iterator();
|
||||||
var lblIter = custom.labels.iterator();
|
// NOTE: Because widgets have a pointer to the underlying Label, we have to ensure
|
||||||
// NOTE: Because widgets have a pointer to the underlying Label, we have to ensure
|
// that the ArrayList doesn't allocate more memory than what we ensured. Otherwise
|
||||||
// that the ArrayList doesn't allocate more memory than what we ensured. Otherwise
|
// the pointer to the Label becomes invalid.
|
||||||
// the pointer to the Label becomes invalid.
|
try state.custom_info.ensureTotalCapacity(state.allocator, @intCast(custom.labels.count()));
|
||||||
try state.custom_info.ensureTotalCapacity(state.allocator, @intCast(custom.labels.count()));
|
while (lblIter.next()) |i| {
|
||||||
while (lblIter.next()) |i| {
|
try state.custom_info.append(state.allocator, .{
|
||||||
try state.custom_info.append(state.allocator, .{
|
.info = i.value_ptr.*,
|
||||||
.info = i.value_ptr.*,
|
.lbl = .init("", null, state.buffer.fg, state.buffer.bg, updateCustomInfo, null),
|
||||||
.lbl = .init("", null, state.buffer.fg, state.buffer.bg, updateCustomInfo, null),
|
});
|
||||||
});
|
var latest = &state.custom_info.items[state.custom_info.items.len - 1];
|
||||||
var latest = &state.custom_info.items[state.custom_info.items.len - 1];
|
latest.info.id = latest.lbl.widget().id;
|
||||||
latest.info.id = latest.lbl.widget().id;
|
latest.info.counter = 1;
|
||||||
latest.info.counter = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!state.hide_binds) {
|
var iter = custom.binds.iterator();
|
||||||
var iter = custom.binds.iterator();
|
while (iter.next()) |i| {
|
||||||
while (iter.next()) |i| {
|
var concat = try std.mem.concat(state.allocator, u8, &[_][]const u8{ i.key_ptr.*, " ", i.value_ptr.name });
|
||||||
var concat = try std.mem.concat(state.allocator, u8, &[_][]const u8{ i.key_ptr.*, " ", i.value_ptr.name });
|
inline for (@typeInfo(Lang).@"struct".fields) |lang_key| {
|
||||||
inline for (@typeInfo(Lang).@"struct".fields) |lang_key| {
|
const new = try std.mem.replaceOwned(u8, state.allocator, concat, "$" ++ lang_key.name, @field(state.lang, lang_key.name));
|
||||||
const new = try std.mem.replaceOwned(u8, state.allocator, concat, "$" ++ lang_key.name, @field(state.lang, lang_key.name));
|
state.allocator.free(concat);
|
||||||
state.allocator.free(concat);
|
concat = new;
|
||||||
concat = new;
|
|
||||||
}
|
|
||||||
try state.custom_binds.append(state.allocator, .{
|
|
||||||
.lbl = .init(
|
|
||||||
concat,
|
|
||||||
null,
|
|
||||||
state.buffer.fg,
|
|
||||||
state.buffer.bg,
|
|
||||||
null,
|
|
||||||
null,
|
|
||||||
),
|
|
||||||
.cmd = i.value_ptr.*,
|
|
||||||
.key = i.key_ptr.*,
|
|
||||||
.io = state.io,
|
|
||||||
});
|
|
||||||
state.custom_binds.items[state.custom_binds.items.len - 1].lbl.allocator = state.allocator;
|
|
||||||
}
|
}
|
||||||
|
try state.custom_binds.append(state.allocator, .{
|
||||||
|
.lbl = .init(
|
||||||
|
concat,
|
||||||
|
null,
|
||||||
|
state.buffer.fg,
|
||||||
|
state.buffer.bg,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
),
|
||||||
|
.cmd = i.value_ptr.*,
|
||||||
|
.key = i.key_ptr.*,
|
||||||
|
.io = state.io,
|
||||||
|
});
|
||||||
|
state.custom_binds.items[state.custom_binds.items.len - 1].lbl.allocator = state.allocator;
|
||||||
}
|
}
|
||||||
if (state.config.shutdown_key != null) {
|
try layer2.append(state.allocator, state.shutdown_label.widget());
|
||||||
try layer2.append(state.allocator, state.shutdown_label.widget());
|
try layer2.append(state.allocator, state.restart_label.widget());
|
||||||
}
|
try layer2.append(state.allocator, state.toggle_password_label.widget());
|
||||||
if (state.config.restart_key != null) {
|
try layer2.append(state.allocator, state.brightness_down_label.widget());
|
||||||
try layer2.append(state.allocator, state.restart_label.widget());
|
try layer2.append(state.allocator, state.brightness_up_label.widget());
|
||||||
}
|
try layer2.append(state.allocator, state.battery_label.widget());
|
||||||
if (state.config.show_password_key != null) {
|
try layer2.append(state.allocator, state.clock_label.widget());
|
||||||
try layer2.append(state.allocator, state.toggle_password_label.widget());
|
try layer2.append(state.allocator, state.tty_label.widget());
|
||||||
}
|
try layer2.append(state.allocator, state.bigclock_label.widget());
|
||||||
if (state.config.brightness_down_key != null) {
|
try layer2.append(state.allocator, state.numlock_label.widget());
|
||||||
try layer2.append(state.allocator, state.brightness_down_label.widget());
|
try layer2.append(state.allocator, state.capslock_label.widget());
|
||||||
}
|
|
||||||
if (state.config.brightness_up_key != null) {
|
|
||||||
try layer2.append(state.allocator, state.brightness_up_label.widget());
|
|
||||||
}
|
|
||||||
if (state.config.battery_id != null) {
|
|
||||||
try layer2.append(state.allocator, state.battery_label.widget());
|
|
||||||
}
|
|
||||||
if (state.config.clock != null) {
|
|
||||||
try layer2.append(state.allocator, state.clock_label.widget());
|
|
||||||
}
|
|
||||||
if (state.show_tty) {
|
|
||||||
try layer2.append(state.allocator, state.tty_label.widget());
|
|
||||||
}
|
|
||||||
if (state.config.bigclock != .none) {
|
|
||||||
try layer2.append(state.allocator, state.bigclock_label.widget());
|
|
||||||
}
|
|
||||||
if (!state.hide_numlock) {
|
|
||||||
try layer2.append(state.allocator, state.numlock_label.widget());
|
|
||||||
}
|
|
||||||
if (!state.hide_capslock) {
|
|
||||||
try layer2.append(state.allocator, state.capslock_label.widget());
|
|
||||||
}
|
|
||||||
try layer2.append(state.allocator, state.box.widget());
|
try layer2.append(state.allocator, state.box.widget());
|
||||||
try layer2.append(state.allocator, info_line_widget);
|
try layer2.append(state.allocator, info_line_widget);
|
||||||
try layer2.append(state.allocator, state.session_specifier_label.widget());
|
try layer2.append(state.allocator, state.session_specifier_label.widget());
|
||||||
|
|
@ -1280,9 +1241,7 @@ pub fn main(init: std.process.Init) !void {
|
||||||
try layer2.append(state.allocator, login_widget);
|
try layer2.append(state.allocator, login_widget);
|
||||||
try layer2.append(state.allocator, state.password_label.widget());
|
try layer2.append(state.allocator, state.password_label.widget());
|
||||||
try layer2.append(state.allocator, state.password_widget);
|
try layer2.append(state.allocator, state.password_widget);
|
||||||
if (!state.hide_version_string) {
|
try layer2.append(state.allocator, state.version_label.widget());
|
||||||
try layer2.append(state.allocator, state.version_label.widget());
|
|
||||||
}
|
|
||||||
|
|
||||||
for (state.custom_binds.items) |*item| {
|
for (state.custom_binds.items) |*item| {
|
||||||
try layer2.append(state.allocator, item.lbl.widget());
|
try layer2.append(state.allocator, item.lbl.widget());
|
||||||
|
|
@ -1370,15 +1329,6 @@ pub fn main(init: std.process.Init) !void {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cornersContain(state: UiState, text: []const u8) bool {
|
|
||||||
const top_left = std.mem.containsAtLeast(u8, state.config.corner_top_left, 1, text);
|
|
||||||
const top_right = std.mem.containsAtLeast(u8, state.config.corner_top_right, 1, text);
|
|
||||||
const bottom_left = std.mem.containsAtLeast(u8, state.config.corner_bottom_left, 1, text);
|
|
||||||
const bottom_right = std.mem.containsAtLeast(u8, state.config.corner_bottom_right, 1, text);
|
|
||||||
|
|
||||||
return top_left or top_right or bottom_left or bottom_right;
|
|
||||||
}
|
|
||||||
|
|
||||||
fn maxWidths(labels: [][]const u8) usize {
|
fn maxWidths(labels: [][]const u8) usize {
|
||||||
var max_width: usize = 0;
|
var max_width: usize = 0;
|
||||||
|
|
||||||
|
|
@ -2256,6 +2206,7 @@ fn positionWidgets(ptr: *anyopaque) !void {
|
||||||
state.brightness_down_label.positionXY(offscreen);
|
state.brightness_down_label.positionXY(offscreen);
|
||||||
state.brightness_up_label.positionXY(offscreen);
|
state.brightness_up_label.positionXY(offscreen);
|
||||||
state.clock_label.positionXY(offscreen);
|
state.clock_label.positionXY(offscreen);
|
||||||
|
state.bigclock_label.positionXY(offscreen);
|
||||||
state.tty_label.positionXY(offscreen);
|
state.tty_label.positionXY(offscreen);
|
||||||
state.battery_label.positionXY(offscreen);
|
state.battery_label.positionXY(offscreen);
|
||||||
state.version_label.positionXY(offscreen);
|
state.version_label.positionXY(offscreen);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue