IUP ダイアログの「ヘルパー」関数のセットを構築しています。これは、一貫した方法で頻繁に使用されるインターフェイス機能をすばやく実装するために Lua コードに含めることができるボイラープレートです。
コールバックを使用して「標準」の iup リストを作成する関数があります。
function MakeList(funcSelect)
return iup.list{
valuechanged_cb = function(self)
funcSelect()
end,
sort = "YES", dropdown = "YES", editbox = "NO",
expand = "YES", visibleitems = "5"}
end
しかし、オプションで静的な値のリストを入力するように拡張したいので、たとえばmylist = MakeList(myFunction, {"X", "B", "Q"})
関数仕様がどこにあるかを呼び出してfunction MakeList(funcSelect, tblVals)
、値のテーブルが (同等の) として与えられた場合に入力されたリストを返すことができます
iup.list{"X", "B", "Q";
valuechanged_cb = function(self)
funcSelect()
end,
sort = "YES", dropdown = "YES", editbox = "NO",
expand = "YES", visibleitems = "5"}
しかし、(最終的には) 値のテーブルが指定されていないか空の場合は入力されません。これが問題のステージ 2 です。
リストはマッピングの前に入力されます。を使用してマッピングした後にそれを行う方法を知っていmyList.APPENDITEM
ますが、必要ではないはずの静的リストの場合(そうすべきですか?)
私はもう試した
function MakeStaticList(funcSelect, tblVals)
return iup.list{table.unpack(tblVals);
valuechanged_cb = function(self)
funcSelect()
end,
sort = "YES", dropdown = "YES",
editbox = "NO", expand = "YES", visibleitems = "5"}
end
しかし、それはこの動作につまずきます: Lua unpack() 混乱引数なので、テーブルの最初の項目だけがリストに追加されます。
私も試してみました
function MakeStaticList(funcSelect, tblVals)
l = iup.list{valuechanged_cb = function(self)
funcSelect()
end,
sort = "YES", dropdown = "YES", editbox = "NO", expand = "YES", visibleitems = "5"}
for i, v in ipairs(tblVals) do
l[tostring(i)]=v
end
return l
end
それは機能しますが、それを行うためのよりきちんとした方法はありますか?
最初に人口問題を解決し、その後、値の表のオプション性に移りたいと思います。
環境は、compat-5.3 モジュールを使用した Lua 5.1 です。