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 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=53,y=-6},
    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,
        },
        widgets.HotkeyLabel{
            frame={t=1, l=15},
            label='clear',
            key='CUSTOM_CTRL_C',
            on_activate=do_clear,
        },
    }
end

OVERLAY_WIDGETS = {
    overlay=OrdersOverlay,
}

return _ENV