╭ changed ───────────────╮ │src/ui/Repo/Settings.zig│ ╰────────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭────────────────────────────────────────────────────╮ │13 const Focus = xitui.focus.Focus; │ │14 │ │15 const Members = @import("./Members.zig"); │ │16 +const Branches = @import("./Branches.zig"); │ │17 │ │18 const wasm = builtin.target.cpu.arch == .wasm32;│ │19 │ ╰────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────╮ │30 patch_role: ?evt.Repo.Role, │ │31 hash_kind: hash.HashKind, │ │32 // the sub tab the route names │ │32 -view: enum { settings, members }, │ │33 +view: enum { settings, members, branches },│ │34 members: Members, │ │35 +branches: Branches, │ │36 │ │37 const Self = @This(); │ │38 │ ╰───────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────╮ │62 return error.InvalidRole; │ │63 } │ │64 │ │63 -// the repo settings and members sub tabs over their content │ │65 +// the repo settings, members and branches sub tabs over their content│ │66 pub const View = struct { │ │67 box: wgt.Box(ui.Widget), │ │68 │ ╰──────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │77 var header = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .direction = .horiz }); │ │78 errdefer header.deinit(allocator); │ │79 const on_tab = switch (session.data.current_page) { │ │78 - .repo_settings, .repo_members => true, │ │80 + .repo_settings, .repo_members, .repo_branches => true, │ │81 else => false, │ │82 }; │ │81 - const routes = [_]?ui.RoutablePage{ ui.RoutablePage.repoSettingsRoute(data.identity), ui.RoutablePage.repoMembersRoute(data.identity, 0) }; │ │82 - for ([_]@FieldType(Self, "view"){ .settings, .members }, [_][]const u8{ "repo settings", "members" }, routes) |view, label, route| { │ │83 + const routes = [_]?ui.RoutablePage{ ui.RoutablePage.repoSettingsRoute(data.identity), ui.RoutablePage.repoMembersRoute(data.identity, 0), ui.RoutablePage.repoBranchesRoute(data.identity) };│ │84 + for ([_]@FieldType(Self, "view"){ .settings, .members, .branches }, [_][]const u8{ "repo settings", "members", "branches" }, routes) |view, label, route| { │ │85 var tab = try wgt.TextBox.init(allocator, label, .{ .border = .hidden, .round_corners = true, .wrap_kind = .none }); │ │86 errdefer tab.deinit(allocator); │ │87 tab.getFocus().mode = .all; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │105 var members = try Members.View.init(allocator, &data.members, session); │ │106 errdefer members.deinit(allocator); │ │107 try stack.children.put(allocator, members.getFocus().id, .{ .repo_members = members }); │ │108 + } │ │109 + { │ │110 + var branches = try Branches.View.init(allocator, &data.branches, session); │ │111 + errdefer branches.deinit(allocator); │ │112 + try stack.children.put(allocator, branches.getFocus().id, .{ .repo_branches = branches }); │ │113 } │ │114 stack.getFocus().child_id = stack.children.keys()[@backingInt(data.view)]; │ │115 try box.children.put(allocator, stack.getFocus().id, .{ .widget = .{ .stack = stack }, .rect = null, .min_size = null });│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯