diff --git a/docs/changelog.txt b/docs/changelog.txt index 2b88261f8..cbc38fab7 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -42,6 +42,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences: ## Misc Improvements - `automelt`: now allows metal chests to be melted (workaround for DF bug 2493 is no longer needed) +- `orders`: add minimize button to overlay panel so you can get it out of the way to read long statue descriptions when choosing a subject in the details screen ## Documentation diff --git a/docs/plugins/orders.rst b/docs/plugins/orders.rst index 6fe159899..08e05c6ca 100644 --- a/docs/plugins/orders.rst +++ b/docs/plugins/orders.rst @@ -48,8 +48,11 @@ is open via an `overlay` widget. There are hotkeys assigned to export, import, sort, and clear. You can also click on the hotkey hints as if they were buttons. Clearing will ask for confirmation before acting. -If you want to change where the hotkey hints appear, you can move them via -`gui/overlay`. +If you want to change where the overlay panel appears, you can move it via +`gui/overlay`. If you just need to get the overlay out of the way temporarily, +for example to read a long description of a historical figure when choosing a +subject for a statue, click on the small arrow in the upper right corner of the +overlay panel. Click on the arrow again to restore the panel. The orders library ------------------ diff --git a/plugins/lua/orders.lua b/plugins/lua/orders.lua index 72bb6185e..6f5bc677a 100644 --- a/plugins/lua/orders.lua +++ b/plugins/lua/orders.lua @@ -46,37 +46,87 @@ OrdersOverlay.ATTRS{ default_enabled=true, viewscreens='dwarfmode/Info/WORK_ORDERS', frame={w=30, h=4}, - frame_style=gui.MEDIUM_FRAME, - frame_background=gui.CLEAR_PEN, } function OrdersOverlay:init() - self:addviews{ - widgets.HotkeyLabel{ - frame={t=0, l=0}, - label='import', - key='CUSTOM_CTRL_I', - on_activate=do_import, - }, - widgets.HotkeyLabel{ - frame={t=1, l=0}, - label='export', - key='CUSTOM_CTRL_E', - on_activate=do_export, - }, - widgets.HotkeyLabel{ - frame={t=0, l=15}, - label='sort', - key='CUSTOM_CTRL_O', - on_activate=do_sort, + self.minimized = false + + local main_panel = widgets.Panel{ + frame={t=0, l=0, r=0, h=4}, + frame_style=gui.MEDIUM_FRAME, + frame_background=gui.CLEAR_PEN, + visible=function() return not self.minimized end, + subviews={ + widgets.HotkeyLabel{ + frame={t=0, l=0}, + label='import', + key='CUSTOM_CTRL_I', + auto_width=true, + on_activate=do_import, + }, + widgets.HotkeyLabel{ + frame={t=1, l=0}, + label='export', + key='CUSTOM_CTRL_E', + auto_width=true, + on_activate=do_export, + }, + widgets.HotkeyLabel{ + frame={t=0, l=15}, + label='sort', + key='CUSTOM_CTRL_O', + auto_width=true, + on_activate=do_sort, + }, + widgets.HotkeyLabel{ + frame={t=1, l=15}, + label='clear', + key='CUSTOM_CTRL_C', + auto_width=true, + on_activate=do_clear, + }, }, - widgets.HotkeyLabel{ - frame={t=1, l=15}, - label='clear', - key='CUSTOM_CTRL_C', - on_activate=do_clear, + } + + local minimized_panel = widgets.Panel{ + frame={t=0, r=0, w=3, h=1}, + subviews={ + widgets.Label{ + frame={t=0, l=0, w=1, h=1}, + text='[', + text_pen=COLOR_RED, + visible=function() return self.minimized end, + }, + widgets.Label{ + frame={t=0, l=1, w=1, h=1}, + text={{text=function() return self.minimized and string.char(31) or string.char(30) end}}, + text_pen=dfhack.pen.parse{fg=COLOR_BLACK, bg=COLOR_GREY}, + text_hpen=dfhack.pen.parse{fg=COLOR_BLACK, bg=COLOR_WHITE}, + on_click=function() self.minimized = not self.minimized end, + }, + widgets.Label{ + frame={t=0, r=0, w=1, h=1}, + text=']', + text_pen=COLOR_RED, + visible=function() return self.minimized end, + }, }, } + + self:addviews{ + main_panel, + minimized_panel, + } +end + +function OrdersOverlay:onInput(keys) + if keys.CUSTOM_ALT_M then + self.minimized = not self.minimized + return true + end + if OrdersOverlay.super.onInput(self, keys) then + return true + end end OVERLAY_WIDGETS = {