diff --git a/plugins/terminal.koplugin/main.lua b/plugins/terminal.koplugin/main.lua index d74ead149..8f37f17c1 100644 --- a/plugins/terminal.koplugin/main.lua +++ b/plugins/terminal.koplugin/main.lua @@ -21,13 +21,16 @@ function Terminal:init() self.ui.menu:registerToMainMenu(self) end -function Terminal:start() +function Terminal:onTerminalStart() self.input = InputDialog:new{ title = _("Enter a command and press \"Execute\""), input = self.command, para_direction_rtl = false, -- force LTR text_height = math.floor(Screen:getHeight() * 0.4), input_type = "string", + -- allow multiple lines with commands: + allow_newline = true, + cursor_at_end = true, buttons = {{{ text = _("Cancel"), callback = function() @@ -35,7 +38,6 @@ function Terminal:start() end, }, { text = _("Execute"), - is_enter_default = true, callback = function() UIManager:close(self.input) Trapper:wrap(function() @@ -66,12 +68,32 @@ function Terminal:execute() table.insert(entries, _("Execution canceled.")) end UIManager:close(wait_msg) - UIManager:show(TextViewer:new{ + local viewer + viewer = TextViewer:new { title = _("Command output"), text = table.concat(entries, "\n"), justified = false, text_face = Font:getFace("smallinfont"), - }) + -- support re-invoking the terminal with a button: + buttons_table = { + { + { + text = _("Back"), + callback = function() + UIManager:close(viewer) + self:onTerminalStart() + end, + }, + { + text = _("Close"), + callback = function() + UIManager:close(viewer) + end, + }, + }, + }, + } + UIManager:show(viewer) end function Terminal:dump(entries) @@ -90,7 +112,7 @@ function Terminal:addToMainMenu(menu_items) text = _("Terminal emulator"), keep_menu_open = true, callback = function() - self:start() + self:onTerminalStart() end, } end