LTUIは、luaベースのクロスプラットフォームの文字端末UIインターフェイスライブラリです。
このフレームワークは、コンパイルパラメータを構成するLinuxカーネルのmenuconfと同様に、xmakeのグラフィカルメニュー構成の要件から派生しているため、cursesとluaに基づいて、クロスプラットフォームの文字端末uiライブラリのセットが実装されます。
また、スタイルスタイルは基本的にkconfig-frontendsを完全に参照します。もちろん、ユーザーはさまざまなuiスタイルを自分でカスタマイズすることもできます。
さらに、LTUIは完全にクロスプラットフォームであり、Windowsのターミナルターミナルも完全にサポートされています。Windowsでは、ltuiはpdcursesを使用してウィンドウを描画します。
コンテンツを更新する
新しいバージョンでは、主にマウスイベントのサポートが追加されました。curses/ ncursesに加えて、Windowsでのpdcursesもサポートされています。ここでは、@ laelnasanの貢献に非常に感謝しています。
さらにtests/events.lua
、さまざまな入力イベントをテストするように設計された新しいテストを追加します。
$ xmake run test events
このテスト例を通じて、ユーザーのすべてのマウス入力イベントを取得して表示できます。
カスタムビューon_event
を書き直して、すべてのマウス入力イベントを含むすべてのイベント入力を取得できます。
local demo = application()
function demo:init()
application.init(self, "demo")
self:background_set("black")
end
function demo:on_event(e)
if e.type == "btn_code" then
print(e.btn_name, e.x, e.y)
end
application.on_event(self, e)
end
demo:run()
インストールして使用する
$ luarocks install ltui
組み込みテストを実行する場合は、luaまたはluajitプログラムをインストールして、ltuiソースコードリポジトリにテストプログラムをロードして実行する必要があります。
$ lua tests/dialog.lua
$ lua tests/window.lua
$ lua tests/desktop.lua
$ lua tests/inputdialog.lua
$ lua tests/mconfdialog.lua
または
$ luajit tests/dialog.lua
$ luajit tests/window.lua
$ luajit tests/desktop.lua
$ luajit tests/inputdialog.lua
$ luajit tests/mconfdialog.lua
ソースコードのコンパイル
通常、luarocksはインストール後に使用できます。ローカルでデバッグする場合は、ソースコードのコンパイル直後にテストを実行することもできます。まず、クロスプラットフォームビルドツールxmakeをインストールする必要があります。
$ xmake
xmakeは、lua、ncurses、およびその他の関連する依存関係を自動的にダウンロードしxmake run
、関連するテストプログラムを直接ロードできます。
$ xmake run test dialog
$ xmake run test window
$ xmake run test desktop
$ xmake run test inputdialog
$ xmake run test mconfdialog
応用
local ltui = require("ltui")
local application = ltui.application
local event = ltui.event
local rect = ltui.rect
local window = ltui.window
local demo = application()
function demo:init()
application.init(self, "demo")
self:background_set("blue")
self:insert(window:new("window.main", rect {
1, 1, self:width() - 1, self:height() - 1}, "main window", true))
end
demo:run()
ラベル
local lab = label:new("title", rect {
0, 0, 12, 1}, "hello ltui!"):textattr_set("white")
ボタン
local btn = button:new("yes", rect {
0, 1, 7, 2}, "< Yes >"):textattr_set("white")
入力ボックス
function demo:init()
-- ...
local dialog_input = inputdialog:new("dialog.input", rect {
0, 0, 50, 8})
dialog_input:text():text_set("please input text:")
dialog_input:button_add("no", "< No >", function (v) dialog_input:quit() end)
dialog_input:button_add("yes", "< Yes >", function (v) dialog_input:quit() end)
self:insert(dialog_input, {
centerx = true, centery = true})
end
成分
見る | ダイアログボックス | その他 |
---|---|---|
見る | ダイアログ | イベント |
パネル | boxdialog | アクション |
ラベル | textdialog | キャンバス |
ボタン | inputdialog | レース |
境界 | mconfdialog | プログラム |
窓 | choicedialog | 応用 |
メニューバー | ポイント | |
menuconf | 長方形 | |
テキストエディット | オブジェクト | |
textarea | ||
ステータスバー | ||
選択ボックス | ||
デスクトップ |