Skip to content
This repository has been archived by the owner on Dec 15, 2020. It is now read-only.

Commit

Permalink
Add CMake script, fix indentation.
Browse files Browse the repository at this point in the history
  • Loading branch information
expwnent committed Sep 24, 2015
1 parent ca2b0ee commit 8cffa12
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 121 deletions.
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
DFHACK_SCRIPTS(gui/quickcmd.lua SUBDIRECTORY gui)
DFHACK_SCRIPTS(LICENSE SUBDIRECTORY gui/quickcmdlicense)
242 changes: 121 additions & 121 deletions gui/quickcmd.lua
Original file line number Diff line number Diff line change
Expand Up @@ -12,148 +12,148 @@ local HOTKEYS = 'asdfghjklqwertyuiopzxcvbnm'
QCMDDialog = defclass(QCMDDialog, gui.FramedScreen)
QCMDDialog.focus_path = 'QuickCMDDialog'
QCMDDialog.ATTRS {
frame_title = 'Quick Command',
frame_title = 'Quick Command',
}

function QCMDDialog:init(info)
self:addviews{
widgets.Panel{
frame = { t = 0, r = 0, b = 0, l = 0 },
frame_inset = 1,
subviews = {
widgets.Label{
frame = { t = 0 },
text = {
{ text = 'Hotkey', width = HOTKEYWIDTH }, ' ',
{ text = 'Command', width = COMMANDWIDTH },
},
},
widgets.List{
view_id = 'list',
frame = { t = 2, b = 3 },
not_found_label = 'Command list is empty.',
},
widgets.Label{
frame = { b = 0, h = 2 },
text = {
{ key = 'CUSTOM_SHIFT_A', text = ': Add command',
on_activate = self:callback('onAddCommand') }, ' ',
{ key = 'CUSTOM_SHIFT_D', text = ': Delete command',
on_activate = self:callback('onDelCommand') }, NEWLINE,
{ key = 'CUSTOM_SHIFT_E', text = ': Edit command',
on_activate = self:callback('onEditCommand') }, ' ',
},
}
},
},
}

self:updateList()
self:addviews{
widgets.Panel{
frame = { t = 0, r = 0, b = 0, l = 0 },
frame_inset = 1,
subviews = {
widgets.Label{
frame = { t = 0 },
text = {
{ text = 'Hotkey', width = HOTKEYWIDTH }, ' ',
{ text = 'Command', width = COMMANDWIDTH },
},
},
widgets.List{
view_id = 'list',
frame = { t = 2, b = 3 },
not_found_label = 'Command list is empty.',
},
widgets.Label{
frame = { b = 0, h = 2 },
text = {
{ key = 'CUSTOM_SHIFT_A', text = ': Add command',
on_activate = self:callback('onAddCommand') }, ' ',
{ key = 'CUSTOM_SHIFT_D', text = ': Delete command',
on_activate = self:callback('onDelCommand') }, NEWLINE,
{ key = 'CUSTOM_SHIFT_E', text = ': Edit command',
on_activate = self:callback('onEditCommand') }, ' ',
},
}
},
},
}

self:updateList()
end

function QCMDDialog:updateList()
-- Get the stored commands.
local entries = dfhack.persistent.get_all(STORAGEKEY) or {}

-- Build the list entries.
self.commands = {}
for i, entry in ipairs(entries) do
-- Get the hotkey for this entry.
local hotkey = nil
if i <= HOTKEYS:len() then
hotkey = HOTKEYS:sub(i, i)
end

-- Store the entry.
table.insert(self.commands, {
text = {
{ text = hotkey or '', width = HOTKEYWIDTH }, ' ',
{ text = entry.value, width = COMMANDWIDTH },
},
entry = entry,
command = entry.value,
hotkey = 'CUSTOM_' .. hotkey:upper(),
})
end
self.subviews.list:setChoices(self.commands);
-- Get the stored commands.
local entries = dfhack.persistent.get_all(STORAGEKEY) or {}

-- Build the list entries.
self.commands = {}
for i, entry in ipairs(entries) do
-- Get the hotkey for this entry.
local hotkey = nil
if i <= HOTKEYS:len() then
hotkey = HOTKEYS:sub(i, i)
end

-- Store the entry.
table.insert(self.commands, {
text = {
{ text = hotkey or '', width = HOTKEYWIDTH }, ' ',
{ text = entry.value, width = COMMANDWIDTH },
},
entry = entry,
command = entry.value,
hotkey = 'CUSTOM_' .. hotkey:upper(),
})
end
self.subviews.list:setChoices(self.commands);
end

function QCMDDialog:getWantedFrameSize(rect)
return 40, 28
return 40, 28
end

function QCMDDialog:onInput(keys)
if keys.LEAVESCREEN then
self:dismiss()
else
-- If the pressed key is a hotkey, perform that command and close.
for _, command in pairs(self.commands) do
if keys[command.hotkey] then
dfhack.run_command(command.command)
self:dismiss()
return
end
end

-- Else, let the parent handle it.
QCMDDialog.super.onInput(self, keys)
end
if keys.LEAVESCREEN then
self:dismiss()
else
-- If the pressed key is a hotkey, perform that command and close.
for _, command in pairs(self.commands) do
if keys[command.hotkey] then
dfhack.run_command(command.command)
self:dismiss()
return
end
end

-- Else, let the parent handle it.
QCMDDialog.super.onInput(self, keys)
end
end

function QCMDDialog:onAddCommand()
dlg.showInputPrompt(
'Add command',
'Enter new command:',
COLOR_GREEN,
'',
function(command)
dfhack.persistent.save({
key = STORAGEKEY,
value = command
}, true)
self:updateList()
end
)
dlg.showInputPrompt(
'Add command',
'Enter new command:',
COLOR_GREEN,
'',
function(command)
dfhack.persistent.save({
key = STORAGEKEY,
value = command
}, true)
self:updateList()
end
)
end

function QCMDDialog:onDelCommand()
-- Get the selected command.
local index, item = self.subviews.list:getSelected()
if not item then
return
end

-- Prompt for confirmation.
dlg.showYesNoPrompt(
'Delete command',
'Are you sure you want to delete this command: ' .. NEWLINE .. item.entry.value,
COLOR_GREEN,
function()
item.entry:delete()
self:updateList()
end
)
-- Get the selected command.
local index, item = self.subviews.list:getSelected()
if not item then
return
end

-- Prompt for confirmation.
dlg.showYesNoPrompt(
'Delete command',
'Are you sure you want to delete this command: ' .. NEWLINE .. item.entry.value,
COLOR_GREEN,
function()
item.entry:delete()
self:updateList()
end
)
end

function QCMDDialog:onEditCommand()
-- Get the selected command.
local index, item = self.subviews.list:getSelected()
if not item then
return
end

-- Prompt for new value.
dlg.showInputPrompt(
'Edit command',
'Enter command:',
COLOR_GREEN,
item.entry.value,
function(command)
item.entry.value = command
item.entry:save()
self:updateList()
end
)
-- Get the selected command.
local index, item = self.subviews.list:getSelected()
if not item then
return
end

-- Prompt for new value.
dlg.showInputPrompt(
'Edit command',
'Enter command:',
COLOR_GREEN,
item.entry.value,
function(command)
item.entry.value = command
item.entry:save()
self:updateList()
end
)
end

local screen = QCMDDialog{}
Expand Down

0 comments on commit 8cffa12

Please sign in to comment.