summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-01-26 00:27:24 +0800
committerruki <[email protected]>2018-01-25 20:44:24 +0800
commitd537a382ef3575f888c75cddc7930c911c67a600 (patch)
treed7f454f4aed54c2249f3ae27a3718d3b74d6141b
parenta23ecbf53f72198bce71795839d80c10134781cd (diff)
add some ui apps
-rw-r--r--xmake/core/ui/application.lua8
-rw-r--r--xmake/core/ui/program.lua8
-rw-r--r--xmake/modules/ui/app/showfile.lua65
-rw-r--r--xmake/modules/ui/app/version.lua60
4 files changed, 133 insertions, 8 deletions
diff --git a/xmake/core/ui/application.lua b/xmake/core/ui/application.lua
index 000294c64..bc645588c 100644
--- a/xmake/core/ui/application.lua
+++ b/xmake/core/ui/application.lua
@@ -37,7 +37,7 @@ local statusbar = require("ui/statusbar")
local application = application or program()
-- init application
-function application:init(name)
+function application:init(name, argv)
-- init log
log:clear()
@@ -47,7 +47,7 @@ function application:init(name)
log:print("<application: %s>: init ..", name)
-- init program
- program.init(self, name)
+ program.init(self, name, argv)
-- trace
log:print("<application: %s>: init ok", name)
@@ -100,9 +100,9 @@ function application:run(...)
local runner = function ()
-- new an application
- local app = self:new()
+ local app = self:new(argv)
if app then
- app:loop(argv)
+ app:loop()
app:exit()
end
end
diff --git a/xmake/core/ui/program.lua b/xmake/core/ui/program.lua
index 8407d3e6b..d1099fb32 100644
--- a/xmake/core/ui/program.lua
+++ b/xmake/core/ui/program.lua
@@ -39,7 +39,7 @@ local curses = require("ui/curses")
local program = program or panel()
-- init program
-function program:init(name)
+function program:init(name, argv)
-- init main window
local main_window = self:main_window()
@@ -78,6 +78,9 @@ function program:init(name)
-- get 8-bits character for getch()
main_window:meta(true)
+ -- save the current arguments
+ self._ARGV = argv
+
-- init panel
panel.init(self, name, rect {0, 0, curses.columns(), curses.lines()})
@@ -196,9 +199,6 @@ end
-- run program loop
function program:loop(argv)
- -- save the current arguments
- self._ARGV = argv
-
-- do message loop
local e = nil
local sleep = true
diff --git a/xmake/modules/ui/app/showfile.lua b/xmake/modules/ui/app/showfile.lua
new file mode 100644
index 000000000..f00c680db
--- /dev/null
+++ b/xmake/modules/ui/app/showfile.lua
@@ -0,0 +1,65 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you under the Apache License, showfile 2.0 (the
+-- "License"); you may not use this file except in compliance
+-- with the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015 - 2018, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file showfile.lua
+--
+
+-- imports
+import("core.ui.log")
+import("core.ui.rect")
+import("core.ui.event")
+import("core.ui.textdialog")
+import("core.ui.application")
+
+-- the application
+local app = application()
+
+-- init app
+function app:init(argv)
+
+ -- init name
+ application.init(self, "app", argv)
+
+ -- init background
+ self:background_set("blue")
+
+ -- get file
+ local file = argv[1]
+
+ -- read file content
+ local content = nil
+ if file then
+ content = os.isfile(file) and io.readfile(file) or nil
+ else
+ content = "please input file path!"
+ end
+
+ -- init main dialog
+ local dialog_main = textdialog:new("dialog.main", rect {1, 1, self:width() - 1, self:height() - 1}, "showfile: " .. (file and path.filename(file) or ""))
+ dialog_main:text():text_set(content or string.format("cannot read file(%s)!", file))
+ dialog_main:button_add("exit", "< Exit >", function (v) self:quit() end)
+ self:insert(dialog_main)
+end
+
+-- main entry
+function main(...)
+ app:run(...)
+end
diff --git a/xmake/modules/ui/app/version.lua b/xmake/modules/ui/app/version.lua
new file mode 100644
index 000000000..7bb91561a
--- /dev/null
+++ b/xmake/modules/ui/app/version.lua
@@ -0,0 +1,60 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you under the Apache License, Version 2.0 (the
+-- "License"); you may not use this file except in compliance
+-- with the License. You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015 - 2018, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file version.lua
+--
+
+-- imports
+import("core.ui.log")
+import("core.ui.rect")
+import("core.ui.event")
+import("core.ui.textdialog")
+import("core.ui.application")
+
+-- the application
+local app = application()
+
+-- init app
+function app:init()
+
+ -- init name
+ application.init(self, "app")
+
+ -- init background
+ self:background_set("blue")
+
+ -- disable color code output
+ os.setenv("COLORTERM", "nocolor")
+
+ -- get version info
+ local version = os.iorun("xmake --version")
+
+ -- init main dialog
+ local dialog_main = textdialog:new("dialog.main", rect {1, 1, self:width() - 1, self:height() - 1}, "version info")
+ dialog_main:text():text_set(version or "unknown version!")
+ dialog_main:button_add("exit", "< Exit >", function (v) self:quit() end)
+ self:insert(dialog_main)
+end
+
+-- main entry
+function main(...)
+ app:run(...)
+end