LTUI v2.2がリリースされ、luaベースのクロスプラットフォームキャラクターターミナルUIインターフェイスライブラリ

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
ステータスバー
選択ボックス
デスクトップ

メニュー構成

入力ボックス

テキストエリア

ウィンドウズ

Termux

https://tboox.org/cn/2020/10/19/ltui-v2.2/

おすすめ

転載: blog.csdn.net/waruqi/article/details/109155453