grids
Source
Implementation
pub fn grids() void {
const GridType = enum {
styling,
layout,
scrolling,
row_heights,
selection,
navigation,
const num_grids = @typeInfo(@This()).@"enum".fields.len;
};
const local = struct {
var active_grid: GridType = .styling;
fn tabSelected(grid_type: GridType) bool {
return active_grid == grid_type;
}
fn tabName(grid_type: GridType) []const u8 {
return switch (grid_type) {
.styling => "Styling and\nsorting",
.layout => "Layouts and\ndata",
.scrolling => "Virtual\nscrolling",
.row_heights => "Variable row\nheights",
.selection => "Selection\n ",
.navigation => "Keyboard\nnavigation",
};
}
};
var tbox = dvui.box(@src(), .{}, .{ .border = Rect.all(1), .expand = .both });
defer tbox.deinit();
{
var tabs = dvui.tabs(@src(), .{ .dir = .horizontal }, .{ .expand = .horizontal });
defer tabs.deinit();
for (0..GridType.num_grids) |tab_num| {
const this_tab: GridType = @enumFromInt(tab_num);
if (tabs.addTabLabel(local.tabSelected(this_tab), local.tabName(this_tab), .{})) {
local.active_grid = this_tab;
}
}
}
switch (local.active_grid) {
.styling => gridStyling(),
.layout => gridLayouts(),
.scrolling => gridVirtualScrolling(),
.row_heights => gridVariableRowHeights(),
.selection => gridSelection(),
.navigation => gridNavigation(),
}
}