diff --git a/data/dfhack-config/overlay.json b/data/dfhack-config/overlay.json deleted file mode 100644 index 7ebae0948..000000000 --- a/data/dfhack-config/overlay.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "hotkeys.menu": { - "enabled": true - }, - "unsuspend.overlay": { - "enabled": true - } -} diff --git a/docs/dev/overlay-dev-guide.rst b/docs/dev/overlay-dev-guide.rst index 50998530a..c7e094299 100644 --- a/docs/dev/overlay-dev-guide.rst +++ b/docs/dev/overlay-dev-guide.rst @@ -96,6 +96,9 @@ The ``overlay.OverlayWidget`` superclass defines the following class attributes: mean for the position. Players can change the widget position at any time via the `overlay position ` command, so don't assume that your widget will always be at the default position. +- ``default_enabled`` (default: ``false``) + Override this attribute if the overlay should be enabled by default if it + does not already have a state stored in ``dfhack-config/overlay.json``. - ``viewscreens`` (default: ``{}``) The list of viewscreens that this widget should be associated with. When one of these viewscreens is on top of the viewscreen stack, your widget's diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index c377666c2..163091318 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -12,6 +12,7 @@ local widgets = require('gui.widgets') HotspotMenuWidget = defclass(HotspotMenuWidget, overlay.OverlayWidget) HotspotMenuWidget.ATTRS{ default_pos={x=2,y=2}, + default_enabled=true, hotspot=true, viewscreens='all', overlay_onupdate_max_freq_seconds=0, diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index 282b5997d..972edcfea 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -48,6 +48,7 @@ end OrdersOverlay = defclass(OrdersOverlay, overlay.OverlayWidget) OrdersOverlay.ATTRS{ default_pos={x=53,y=-6}, + default_enabled=true, viewscreens='dwarfmode', frame={w=30, h=4}, frame_style=gui.MEDIUM_FRAME, diff --git a/plugins/lua/overlay.lua b/plugins/lua/overlay.lua index b90c1c651..bf944d7e9 100644 --- a/plugins/lua/overlay.lua +++ b/plugins/lua/overlay.lua @@ -249,6 +249,9 @@ local function load_widget(name, widget_class) } if not overlay_config[name] then overlay_config[name] = {} end local config = overlay_config[name] + if config.enabled == nil then + config.enabled = widget.default_enabled + end config.pos = sanitize_pos(config.pos or widget.default_pos) widget.frame = make_frame(config.pos, widget.frame) if config.enabled then @@ -487,6 +490,7 @@ OverlayWidget = defclass(OverlayWidget, widgets.Panel) OverlayWidget.ATTRS{ name=DEFAULT_NIL, -- this is set by the framework to the widget name default_pos={x=DEFAULT_X_POS, y=DEFAULT_Y_POS}, -- 1-based widget screen pos + default_enabled=false, -- initial enabled state if not in config overlay_only=false, -- true if there is no widget to reposition hotspot=false, -- whether to call overlay_onupdate on all screens viewscreens={}, -- override with associated viewscreen or list of viewscrens