Merge pull request #2694 from myk002/myk_orders_overlay
first attempt at a manager orders overlaydevelop
						commit
						7e51d3e5aa
					
				| @ -0,0 +1,100 @@ | ||||
| local _ENV = mkmodule('plugins.orders') | ||||
| 
 | ||||
| local dialogs = require('gui.dialogs') | ||||
| local gui = require('gui') | ||||
| local overlay = require('plugins.overlay') | ||||
| local widgets = require('gui.widgets') | ||||
| 
 | ||||
| -- | ||||
| -- OrdersOverlay | ||||
| -- | ||||
| 
 | ||||
| local function is_orders_panel_visible() | ||||
|     local info = df.global.game.main_interface.info | ||||
|     return info.open and info.current_mode == df.info_interface_mode_type.WORK_ORDERS | ||||
| end | ||||
| 
 | ||||
| local function do_sort() | ||||
|     dfhack.run_command('orders', 'sort') | ||||
| end | ||||
| 
 | ||||
| local function do_clear() | ||||
|     dialogs.showYesNoPrompt('Clear manager orders?', | ||||
|         'Are you sure you want to clear the manager orders?', nil, | ||||
|         function() dfhack.run_command('orders', 'clear') end) | ||||
| end | ||||
| 
 | ||||
| local function do_import() | ||||
|     local output = dfhack.run_command_silent('orders', 'list') | ||||
|     dialogs.ListBox{ | ||||
|         frame_title='Import Manager Orders', | ||||
|         with_filter=true, | ||||
|         choices=output:split('\n'), | ||||
|         on_select=function(idx, choice) | ||||
|             dfhack.run_command('orders', 'import', choice.text) | ||||
|         end, | ||||
|     }:show() | ||||
| end | ||||
| 
 | ||||
| local function do_export() | ||||
|     dialogs.InputBox{ | ||||
|         frame_title='Export Manager Orders', | ||||
|         on_input=function(text) | ||||
|             dfhack.run_command('orders', 'export', text) | ||||
|         end | ||||
|     }:show() | ||||
| end | ||||
| 
 | ||||
| OrdersOverlay = defclass(OrdersOverlay, overlay.OverlayWidget) | ||||
| OrdersOverlay.ATTRS{ | ||||
|     default_pos={x=61,y=-6}, | ||||
|     viewscreens='dwarfmode', | ||||
|     frame={w=30, h=4}, | ||||
|     frame_style=gui.GREY_LINE_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, | ||||
|         }, | ||||
|         widgets.HotkeyLabel{ | ||||
|             frame={t=1, l=15}, | ||||
|             label='clear', | ||||
|             key='CUSTOM_CTRL_C', | ||||
|             on_activate=do_clear, | ||||
|         }, | ||||
|     } | ||||
| end | ||||
| 
 | ||||
| function OrdersOverlay:render(dc) | ||||
|     if not is_orders_panel_visible() then return false end | ||||
|     OrdersOverlay.super.render(self, dc) | ||||
| end | ||||
| 
 | ||||
| function OrdersOverlay:onInput(keys) | ||||
|     if not is_orders_panel_visible() then return false end | ||||
|     OrdersOverlay.super.onInput(self, keys) | ||||
| end | ||||
| 
 | ||||
| OVERLAY_WIDGETS = { | ||||
|     overlay=OrdersOverlay, | ||||
| } | ||||
| 
 | ||||
| return _ENV | ||||
		Loading…
	
		Reference in New Issue