Skip to content
Draft
Changes from 1 commit
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
d4c4421
devel/dflayout: gui.dflayout fort toolbars demo
ChrisJohnsen Apr 6, 2025
6c26925
gui/mass-remove.toolbar: adopt gui.dflayout for positioning calculation
ChrisJohnsen Apr 6, 2025
9d5cbd9
devel/dflayout: use top-level gui.widgets module
ChrisJohnsen Apr 14, 2025
cc9f9d4
devel/dflayout: use globals for defclass
ChrisJohnsen Apr 14, 2025
61c793d
devel/dflayout: remove do-based scopes
ChrisJohnsen Apr 14, 2025
291d727
devel/dflayout: docs: shrink summary
ChrisJohnsen Apr 14, 2025
dd799bd
devel/dflayout: use global for ZScreen, provide focus_path
ChrisJohnsen Apr 14, 2025
8812284
devel/dflayout: docs: do not link to gui.dflayout
ChrisJohnsen Apr 14, 2025
91a06d3
devel/dflayout: provide Demo type
ChrisJohnsen Apr 15, 2025
e83410e
devel/dflayout: fix interface percentage change detection
ChrisJohnsen Apr 15, 2025
c2001bb
devel/dflayout: rework fort toolbar demos
ChrisJohnsen Apr 15, 2025
462fde5
devel/dflayout: cleanup focus checking and updating chaining
ChrisJohnsen Apr 15, 2025
062c7e7
devel/dflayout: use a global for visible_when_not_focused
ChrisJohnsen Apr 15, 2025
a0c2ccb
devel/dflayout: check interface percentage whenever demos are visible
ChrisJohnsen Apr 15, 2025
7a63210
devel/dflayout: move Window and ZScreen classes to end
ChrisJohnsen Apr 15, 2025
eef4fc5
devel/dflayout: provide on_render hook to demos
ChrisJohnsen Apr 15, 2025
df96afc
adapt to gui.dflayout overhaul
ChrisJohnsen Apr 23, 2025
8e8b0ea
Merge remote-tracking branch 'origin/master' into cj/mr-button/pr
ChrisJohnsen Apr 23, 2025
dc4e998
adapt gui/mass-remove.toolbar and devel/dflayout to latest gui.dflayout
ChrisJohnsen Apr 30, 2025
cfb6989
devel/dflayout: remove Demo.update
ChrisJohnsen Apr 30, 2025
012593f
Merge remote-tracking branch 'origin/master' into cj/mr-button/pr
ChrisJohnsen Apr 30, 2025
fe80662
devel/dflayout: use getUIElementStateChecker
ChrisJohnsen Apr 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
devel/dflayout: provide Demo type
Makes explicit the fields required from each "demo".

Remove demo_available(), just use demo.available() directly. ("Always
available if .available is nil" seems a bit awkward)
  • Loading branch information
ChrisJohnsen committed Apr 15, 2025
commit 91a06d3e2891cc2b5e969534ecbffcdd33a80a9e
16 changes: 10 additions & 6 deletions devel/dflayout.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@ local utils = require('utils')

--- Demo Control Window and Screen ---

local function demo_available(demo)
if not demo.available then return true end
return demo.available()
end
---@class Demo
---@field text string text displayed in main window demo list
---@field available fun(): boolean? return true if demo is available in current context
---@field active? boolean whether the main window has enabled this demo (managed by main window)
---@field views gui.View[] list of views to add to main ZScreen
---@field update fun() called by main window to recompute demo frames

local visible_when_not_focused = true
function visible()
Expand All @@ -26,6 +28,7 @@ DemoWindow.ATTRS{
autoarrange_gap = 1,
}

---@param args { demos: Demo[] }
function DemoWindow:init(args)
self.demos = args.demos
self:addviews{
Expand All @@ -43,7 +46,7 @@ function DemoWindow:init(args)
icon_width = 3,
on_submit = function(index, item)
local demo = self.demos[index]
demo.active = demo_available(demo) and not demo.active
demo.active = demo.available() and not demo.active
self:refresh()
end
},
Expand All @@ -56,7 +59,7 @@ function DemoWindow:refresh()
local choices = {}
for _, demo in ipairs(self.demos) do
local icon
if not demo_available(demo) then
if not demo.available() then
icon = '-'
elseif demo.active then
icon = CHECK
Expand Down Expand Up @@ -117,6 +120,7 @@ end

--- Fort Toolbar Demo ---

---@class FortToolbarsDemo: Demo
local fort_toolbars_demo = {
text = 'fort toolbars',
available = dfhack.world.isFortressMode,
Expand Down