diff --git a/plugins/lua/hotkeys.lua b/plugins/lua/hotkeys.lua index 7173bed80..4169d439a 100644 --- a/plugins/lua/hotkeys.lua +++ b/plugins/lua/hotkeys.lua @@ -17,8 +17,8 @@ end function should_hide_armok(cmdline) local command = get_command(cmdline) return dfhack.getHideArmokTools() and - helpdb.is_entry(command) and - helpdb.get_entry_tags(command).armok + helpdb.is_entry(command) and + helpdb.get_entry_tags(command).armok end -- ----------------- -- @@ -26,11 +26,11 @@ end -- ----------------- -- HotspotMenuWidget = defclass(HotspotMenuWidget, overlay.OverlayWidget) -HotspotMenuWidget.ATTRS{ - default_pos={x=5,y=1}, - default_enabled=true, - version=2, - viewscreens={ +HotspotMenuWidget.ATTRS { + default_pos = { x = 5, y = 1 }, + default_enabled = true, + version = 2, + viewscreens = { 'adopt_region', 'choose_game_type', -- 'choose_start_site', -- conflicts with vanilla panel layouts @@ -48,51 +48,51 @@ HotspotMenuWidget.ATTRS{ 'update_region', 'world' }, - frame={w=4, h=3} + frame = { w = 4, h = 3 } } function HotspotMenuWidget:init() local to_pen = dfhack.pen.parse local function tp(idx, ch) - return to_pen{ - tile=function() return dfhack.textures.getTexposByHandle(logo_textures[idx]) end, - ch=ch, - fg=COLOR_GREY, + return to_pen { + tile = function() return dfhack.textures.getTexposByHandle(logo_textures[idx]) end, + ch = ch, + fg = COLOR_GREY, } end local function tph(idx, ch) - return to_pen{ - tile=function() return dfhack.textures.getTexposByHandle(logo_hovered_textures[idx]) end, - ch=ch, - fg=COLOR_WHITE, + return to_pen { + tile = function() return dfhack.textures.getTexposByHandle(logo_hovered_textures[idx]) end, + ch = ch, + fg = COLOR_WHITE, } end local function get_tile_token(idx, ch) return { - tile=tp(idx, ch), - htile=tph(idx, ch), - width=1, + tile = tp(idx, ch), + htile = tph(idx, ch), + width = 1, } end - self:addviews{ - widgets.Label{ - text={ + self:addviews { + widgets.Label { + text = { get_tile_token(1, '!'), get_tile_token(2, 'D'), get_tile_token(3, 'F'), get_tile_token(4, '!'), NEWLINE, get_tile_token(5, '!'), get_tile_token(6, 'H'), get_tile_token(7, 'a'), get_tile_token(8, '!'), NEWLINE, get_tile_token(9, '!'), get_tile_token(10, 'c'), get_tile_token(11, 'k'), get_tile_token(12, '!'), }, - on_click=function() dfhack.run_command('hotkeys') end, + on_click = function() dfhack.run_command('hotkeys') end, }, } end function HotspotMenuWidget:overlay_trigger() - return MenuScreen{hotspot=self}:show() + return MenuScreen { hotspot = self }:show() end -- register the menu hotspot with the overlay -OVERLAY_WIDGETS = {menu=HotspotMenuWidget} +OVERLAY_WIDGETS = { menu = HotspotMenuWidget } -- ---- -- -- Menu -- @@ -103,15 +103,15 @@ local MAX_LIST_WIDTH = 45 local MAX_LIST_HEIGHT = 15 Menu = defclass(Menu, widgets.Panel) -Menu.ATTRS{ - hotspot=DEFAULT_NIL, +Menu.ATTRS { + hotspot = DEFAULT_NIL, } -- get a map from the binding string to a list of hotkey strings that all -- point to that binding local function get_bindings_to_hotkeys(hotkeys, bindings) local bindings_to_hotkeys = {} - for _,hotkey in ipairs(hotkeys) do + for _, hotkey in ipairs(hotkeys) do local binding = bindings[hotkey] table.insert(ensure_key(bindings_to_hotkeys, binding), hotkey) end @@ -126,17 +126,17 @@ local function get_choices(hotkeys, bindings, is_inverted) local bindings_to_hotkeys = get_bindings_to_hotkeys(hotkeys, bindings) -- build list choices - for _,hotkey in ipairs(hotkeys) do + for _, hotkey in ipairs(hotkeys) do local command = bindings[hotkey] if seen[command] then goto continue end seen[command] = true local hk_width, tokens = 0, {} - for _,hk in ipairs(bindings_to_hotkeys[command]) do + for _, hk in ipairs(bindings_to_hotkeys[command]) do if hk_width ~= 0 then table.insert(tokens, ', ') hk_width = hk_width + 2 end - table.insert(tokens, {text=hk, pen=COLOR_LIGHTGREEN}) + table.insert(tokens, { text = hk, pen = COLOR_LIGHTGREEN }) hk_width = hk_width + #hk end local command_str = command @@ -144,16 +144,20 @@ local function get_choices(hotkeys, bindings, is_inverted) local max_command_len = MAX_LIST_WIDTH - hk_width - LIST_BUFFER command_str = command:sub(1, max_command_len - 3) .. '...' end - table.insert(tokens, 1, {text=command_str}) - local choice = {icon=ARROW, command=command, text=tokens, - hk_width=hk_width} + table.insert(tokens, 1, { text = command_str }) + local choice = { + icon = ARROW, + command = command, + text = tokens, + hk_width = hk_width + } max_width = math.max(max_width, hk_width + #command_str + LIST_BUFFER) table.insert(choices, is_inverted and 1 or #choices + 1, choice) ::continue:: end -- adjust width of command fields so the hotkey tokens are right justified - for _,choice in ipairs(choices) do + for _, choice in ipairs(choices) do local command_token = choice.text[1] command_token.width = max_width - choice.hk_width - (LIST_BUFFER - 1) end @@ -164,17 +168,17 @@ end function Menu:init() local hotkeys, bindings = getHotkeys() if #hotkeys == 0 then - hotkeys = {''} - bindings = {['']='gui/launcher'} + hotkeys = { '' } + bindings = { [''] = 'gui/launcher' } end local is_inverted = not not self.hotspot.frame.b - local choices,list_width = get_choices(hotkeys, bindings, is_inverted) + local choices, list_width = get_choices(hotkeys, bindings, is_inverted) list_width = math.max(35, list_width) local list_frame = copyall(self.hotspot.frame) - local list_widget_frame = {h=math.min(#choices, MAX_LIST_HEIGHT)} + local list_widget_frame = { h = math.min(#choices, MAX_LIST_HEIGHT) } local quickstart_frame = {} list_frame.w = list_width + 2 list_frame.h = list_widget_frame.h + 4 @@ -193,51 +197,51 @@ function Menu:init() list_frame.r = math.max(0, list_frame.r + 5) end - local help_frame = {w=list_frame.w, l=list_frame.l, r=list_frame.r} + local help_frame = { w = list_frame.w, l = list_frame.l, r = list_frame.r } if list_frame.t then help_frame.t = list_frame.t + list_frame.h else help_frame.b = list_frame.b + list_frame.h end - self:addviews{ - widgets.Panel{ - view_id='list_panel', - frame=list_frame, - frame_style=gui.PANEL_FRAME, - frame_background=gui.CLEAR_PEN, - subviews={ - widgets.List{ - view_id='list', - frame=list_widget_frame, - choices=choices, - icon_width=2, - on_select=self:callback('onSelect'), - on_submit=self:callback('onSubmit'), - on_submit2=self:callback('onSubmit2'), + self:addviews { + widgets.Panel { + view_id = 'list_panel', + frame = list_frame, + frame_style = gui.PANEL_FRAME, + frame_background = gui.CLEAR_PEN, + subviews = { + widgets.List { + view_id = 'list', + frame = list_widget_frame, + choices = choices, + icon_width = 2, + on_select = self:callback('onSelect'), + on_submit = self:callback('onSubmit'), + on_submit2 = self:callback('onSubmit2'), }, - widgets.Panel{frame={h=1}}, - widgets.HotkeyLabel{ - frame=quickstart_frame, - label='Quickstart guide', - key='STRING_A063', - on_activate=function() - self:onSubmit(nil, {command='quickstart-guide'}) + widgets.Panel { frame = { h = 1 } }, + widgets.HotkeyLabel { + frame = quickstart_frame, + label = 'Quickstart guide', + key = 'STRING_A063', + on_activate = function() + self:onSubmit(nil, { command = 'quickstart-guide' }) end, }, }, }, - widgets.ResizingPanel{ - view_id='help_panel', - autoarrange_subviews=true, - frame=help_frame, - frame_style=gui.PANEL_FRAME, - frame_background=gui.CLEAR_PEN, - subviews={ - widgets.WrappedLabel{ - view_id='help', - text_to_wrap='', - scroll_keys={}, + widgets.ResizingPanel { + view_id = 'help_panel', + autoarrange_subviews = true, + frame = help_frame, + frame_style = gui.PANEL_FRAME, + frame_background = gui.CLEAR_PEN, + subviews = { + widgets.WrappedLabel { + view_id = 'help', + text_to_wrap = '', + scroll_keys = {}, }, }, }, @@ -252,7 +256,7 @@ function Menu:onSelect(_, choice) if not choice or #self.subviews == 0 then return end local command = get_command(choice.command) self.subviews.help.text_to_wrap = helpdb.is_entry(command) and - helpdb.get_entry_short_help(command) or 'Command not found' + helpdb.get_entry_short_help(command) or 'Command not found' self.subviews.help_panel:updateLayout() end @@ -302,7 +306,7 @@ end function Menu:getMouseFramePos() return self.subviews.list_panel:getMouseFramePos() or - self.subviews.help_panel:getMouseFramePos() + self.subviews.help_panel:getMouseFramePos() end function Menu:onRenderBody(dc) @@ -324,14 +328,14 @@ end MenuScreen = defclass(MenuScreen, gui.ZScreen) MenuScreen.ATTRS { - focus_path='hotkeys/menu', - initial_pause=false, - hotspot=DEFAULT_NIL, + focus_path = 'hotkeys/menu', + initial_pause = false, + hotspot = DEFAULT_NIL, } function MenuScreen:init() - self:addviews{ - Menu{hotspot=self.hotspot}, + self:addviews { + Menu { hotspot = self.hotspot }, } end @@ -339,4 +343,4 @@ function MenuScreen:onDismiss() cleanupHotkeys() end -return _ENV \ No newline at end of file +return _ENV