resize program

This commit is contained in:
ruki
2020-05-05 00:39:55 +08:00
parent e7f865d394
commit db81539967
3 changed files with 118 additions and 67 deletions

View File

@@ -46,49 +46,89 @@ function demo:init()
-- init background
self:background_set("blue")
-- read help content
local helptext = nil
local file = io.open("./LICENSE.md", 'r')
if file then
helptext = file:read("*a")
file:close()
end
-- init help dialog
local dialog_help = textdialog:new("dialog.help", rect {1, 1, self:width() - 1, self:height() - 1}, "README")
if helptext then
dialog_help:text():text_set(helptext)
end
dialog_help:button_add("exit", "< Exit >", function (v) self:remove(dialog_help) end)
-- init main dialog
local dialog_main = boxdialog:new("dialog.main", rect {1, 1, self:width() - 1, self:height() - 1}, "main dialog")
dialog_main:text():text_set("The project focuses on making development and building easier and provides many features (.e.g package, install, plugin, macro, action, option, task ...), so that any developer can quickly pick it up and enjoy the productivity boost when developing and building project.")
dialog_main:button_add("tips", "< Tips >", function (v) self:view("dialog.tips"):show(true, {focused = true}) end)
dialog_main:button_add("input", "< Input >", function (v) self:view("dialog.input"):show(true, {focused = true}) end)
dialog_main:button_add("help", "< Help >", function (v) self:insert(dialog_help) end)
dialog_main:button_add("quit", "< Quit >", "cm_quit")
self:insert(dialog_main)
self:insert(self:dialog_main())
-- init input dialog
local dialog_input = inputdialog:new("dialog.input", rect {0, 0, 50, 8}):background_set(dialog_main:frame():background())
dialog_input:frame():background_set("cyan")
dialog_input:text():text_set("please input text:"):textattr_set("red")
dialog_input:button_add("no", "< No >", function (v) dialog_input:show(false) end)
dialog_input:button_add("yes", "< Yes >", function (v)
dialog_main:text():text_set(dialog_input:textedit():text())
dialog_input:show(false)
end)
self:insert(dialog_input, {centerx = true, centery = true})
dialog_input:show(false)
self:insert(self:dialog_input(), {centerx = true, centery = true})
-- init tips dialog
local dialog_tips = textdialog:new("dialog.tips", rect {0, 0, 50, 8}):background_set(dialog_main:frame():background())
dialog_tips:frame():background_set("cyan")
dialog_tips:text():text_set("hello ltui! (https://tboox.org)\nA cross-platform terminal ui library based on Lua"):textattr_set("red")
dialog_tips:button_add("yes", "< Yes >", function (v) dialog_tips:show(false) end)
dialog_tips:button_add("no", "< No >", function (v) dialog_tips:show(false) end)
self:insert(dialog_tips, {centerx = true, centery = true})
self:insert(self:dialog_tips(), {centerx = true, centery = true})
end
-- main dialog
function demo:dialog_main()
local dialog_main = self._DIALOG_MAIN
if not dialog_main then
dialog_main = boxdialog:new("dialog.main", rect {1, 1, self:width() - 1, self:height() - 1}, "main dialog")
dialog_main:text():text_set("The project focuses on making development and building easier and provides many features (.e.g package, install, plugin, macro, action, option, task ...), so that any developer can quickly pick it up and enjoy the productivity boost when developing and building project.")
dialog_main:button_add("tips", "< Tips >", function (v) self:view("dialog.tips"):show(true, {focused = true}) end)
dialog_main:button_add("input", "< Input >", function (v) self:view("dialog.input"):show(true, {focused = true}) end)
dialog_main:button_add("help", "< Help >", function (v) self:insert(self:dialog_help()) end)
dialog_main:button_add("quit", "< Quit >", "cm_quit")
self._DIALOG_MAIN = dialog_main
end
return dialog_main
end
-- help dialog
function demo:dialog_help()
local dialog_help = self._DIALOG_HELP
if not dialog_help then
dialog_help = textdialog:new("dialog.help", rect {1, 1, self:width() - 1, self:height() - 1}, "README")
local helptext = nil
local file = io.open("./LICENSE.md", 'r')
if file then
helptext = file:read("*a")
file:close()
end
if helptext then
dialog_help:text():text_set(helptext)
end
dialog_help:button_add("exit", "< Exit >", function (v) self:remove(dialog_help) end)
self._DIALOG_HELP = dialog_help
end
return dialog_help
end
-- input dialog
function demo:dialog_input()
local dialog_input = self._DIALOG_INPUT
if not dialog_input then
dialog_input = inputdialog:new("dialog.input", rect {0, 0, 50, 8}):background_set(self:dialog_main():frame():background())
dialog_input:frame():background_set("cyan")
dialog_input:text():text_set("please input text:"):textattr_set("red")
dialog_input:button_add("no", "< No >", function (v) dialog_input:show(false) end)
dialog_input:button_add("yes", "< Yes >", function (v)
self:dialog_main():text():text_set(dialog_input:textedit():text())
dialog_input:show(false)
end)
dialog_input:show(false)
self._DIALOG_INPUT = dialog_input
end
return dialog_input
end
-- tips dialog
function demo:dialog_tips()
local dialog_tips = self._DIALOG_TIPS
if not dialog_tips then
dialog_tips = textdialog:new("dialog.tips", rect {0, 0, 50, 8}):background_set(self:dialog_main():frame():background())
dialog_tips:frame():background_set("cyan")
dialog_tips:text():text_set("hello ltui! (https://tboox.org)\nA cross-platform terminal ui library based on Lua"):textattr_set("red")
dialog_tips:button_add("yes", "< Yes >", function (v) dialog_tips:show(false) end)
dialog_tips:button_add("no", "< No >", function (v) dialog_tips:show(false) end)
self._DIALOG_TIPS = dialog_tips
end
return dialog_tips
end
-- resize dialog
function demo:resize()
self:dialog_main():bounds_set(rect {1, 1, self:width() - 1, self:height() - 1})
self:center(self:dialog_input(), {centerx = true, centery = true})
self:center(self:dialog_tips(), {centerx = true, centery = true})
application.resize(self)
end
-- run demo