GUIKit`
GUIKit`
"Table"
GUIKitで提供されていた機能は,組込みのWolfram言語にネイティブのインターフェース構造およびコントロール関数で利用できるようになった.
Widget["Table"]
表を表す.
詳細
- Widget["Table"]を使用する際は,まずNeeds["GUIKit`"]を使って GUIKit をロードする必要がある.
- デフォルトでは,すべてのセルが編集可能である.Widget["DisplayOnlyTable"]内のセルはすべて編集不可能である.
- デフォルトで,表中のほとんどのデータは数列でありセル内で左揃えになっている.しかし,チェックボックス,右揃えのテキスト,アイコンをそれぞれについて使って,表中の列からブール値,数値,画像をよりネイティブに制御して取り出すことができる.
- 画像の表示にはもとの画像の破損を防ぐために"columnEditable"をFalseに設定する必要があるだろう.
- 表は現在のところ同じ列内の異なる行の異なるデータタイプの描画をサポートしていないので,指定の列内のすべてのデータが第1行のタイプまたは,指定されているのであれば"prototype"特性タイプにマッチすることが重要である
- 使用可能な特性:
-
"items" {} 表のコンテンツ "tableHeader" Null 表のヘッダ "rowSelectionAllowed" True 行ごとの選択が可能かどうか "columnSelectionAllowed" False 列ごとの選択が可能かどうか "columnEditable" Null 各列内のセルが編集可能かどうか "columnSortable" Null 各列がヘッダのクリックでソートできるかどうか "prototype" Null 典型的なデータの行をどのようにフォーマットするか "model" ユーザインターフェースと表中のデータを仲介するモデル
例題
すべて開く すべて閉じる例 (1)
Needs["GUIKit`"]ref = GUIRun[
Widget["Table", {}, InitialArguments -> {2, 3}]
];GUIScreenShot[ref]ref = GUIRun[
Widget["Panel", {
Widget["ScrollPane", {
"preferredSize" -> Widget["Dimension", {"width" -> 200, "height" -> 110}],
"viewportView" -> Widget["Table", {
"items" -> {{"a1", "b1", "c1"}, {"a2", "b2", "c2"}},
PropertyValue["model", Name -> "myTableModel"]
}, Name -> "myTable"]
}]
}]
]GUIScreenShot[ref]ref @ PropertyValue[{"myTable", "items"}]ref @ SetPropertyValue[{"myTable", "items"},
Table[ToString[{i, j}], {i, 1, 4}, {j, 1, 3}]]GUIScreenShot[ref]ref @ PropertyValue[{"myTable", "item", 2}]ref @ SetPropertyValue[{"myTable", "item", 1},
{"10", "100", "1000"}]GUIScreenShot[ref]ref @ SetPropertyValue[{"myTableModel", "columnIdentifiers"},
{"One", "Two", "Three"}]GUIScreenShot[ref]ref @ InvokeMethod[{"myTableModel", "addRow"}, {"x", "y", "z"}]GUIScreenShot[ref]ref @ InvokeMethod[{"myTableModel", "addColumn"}, "Id", {"1", "2", "3", "4", "5"}]GUIScreenShot[ref]ref @ InvokeMethod[{"myTableModel", "removeRow"}, 0]GUIScreenShot[ref]ref @ InvokeMethod[{"myTableModel", "insertRow"}, 2, {"i", "j", "k"}]GUIScreenShot[ref]ref @ InvokeMethod[{"myTableModel", "getValueAt"}, 1, 1]ref @ InvokeMethod[{"myTableModel", "setValueAt"}, "Test", 1, 1]GUIScreenShot[ref]特性と関係 (4)
表のヘッダ (1)
Needs["GUIKit`"]"tableHeader"特性をNullに設定して列のヘッダが表示されないようにする:
ref = GUIRun[
Widget["Panel", {
Widget["ScrollPane", {
"preferredSize" -> Widget["Dimension", {"width" -> 200, "height" -> 80}],
"viewportView" -> Widget["Table", {
"tableHeader" -> Null,
"items" -> Script[{{"a1", "b1", "c1"}, {"a2", "b2", "c2"}}],
PropertyValue["model", Name -> "myTableModel"]
}, Name -> "myTable"]
}]
}]
]GUIScreenShot[ref]編集可能性 (1)
Needs["GUIKit`"]画像を表示する場合は"columnEditable"を常にFalseにする:
ref = GUIRun[
Widget["Panel", {
Widget["ScrollPane", {
"preferredSize" -> Widget["Dimension", {"width" -> 200, "height" -> 110}],
"viewportView" -> Widget["Table", {
"columnEditable" -> {False, True, True},
"items" -> {
{Widget["Icon", {"path" -> "Wolfram/Example/Play16.gif"}], True, 45.0},
{Widget["Icon", {"data" -> Script[ExportString[ToBoxes[f''[β], TraditionalForm], "GIF", "TransparentColor" -> GrayLevel[1]]]}], False, 67.9}
},
PropertyValue["model", Name -> "myTableModel"]
}, Name -> "myTable"]
}]
}]
]GUIScreenShot[ref]ref = GUIRun[
Widget["Panel", {
Widget["ScrollPane", {
"preferredSize" -> Widget["Dimension", {"width" -> 200, "height" -> 110}],
"viewportView" -> Widget["Table", {
"columnEditable" -> {True, False, False},
"items" -> {{True, "b1", 45.0}, {False, "b2", 67.9}},
PropertyValue["model", Name -> "myTableModel"]
}, Name -> "myTable"]
}]
}]
]GUIScreenShot[ref]ソート (1)
Needs["GUIKit`"]ref = GUIRun[
Widget["Panel", {
Widget["ScrollPane", {
"preferredSize" -> Widget["Dimension", {"width" -> 200, "height" -> 110}],
"viewportView" -> Widget["Table", {
"columnSortable" -> {True, True, False},
"items" -> {{"Alpha", 65, True}, {"Beta", 89, False}, {"Gamma", 40, True}},
PropertyValue["model", Name -> "myTableModel"],
SetPropertyValue[{"myTableModel", "columnIdentifiers"},
{"Name", "Value", "Display"}],
}, Name -> "myTable"]
}
]
}]
]GUIScreenShot[ref]GUIScreenShot[ref]ソート順が変わるたびに新たな順で出力する(外部から保存されたデータをソートし直すのに便利である):
ref = GUIRun[
Widget["Panel", {
Widget["ScrollPane", {
"preferredSize" -> Widget["Dimension", {"width" -> 200, "height" -> 110}],
"viewportView" -> Widget["Table", {
"columnSortable" -> {True, True, False},
"items" -> {{"Alpha", 65, True}, {"Beta", 89, False}, {"Gamma", 40, True}},
PropertyValue["model", Name -> "myTableModel"],
SetPropertyValue[{"myTableModel", "columnIdentifiers"},
{"Name", "Value", "Display"}]
}, Name -> "myTable"]
}],
BindEvent[{"myTableModel", "tableSorted"},
Script[Print[ PropertyValue[{"myTableModel", "ordering"}]]
] ]
}]
]データタイプ (1)
Needs["GUIKit`"]ref = GUIRun[
Widget["Panel", {
Widget["ScrollPane", {
"preferredSize" -> Widget["Dimension", {"width" -> 200, "height" -> 110}],
"viewportView" -> Widget["Table", {
"items" -> {{True, "b1", 45.0}, {False, "b2", 67.9}},
PropertyValue["model", Name -> "myTableModel"]
}, Name -> "myTable"]
}]
}]
]GUIScreenShot[ref]ref @ PropertyValue[{"myTable", "items"}] // InputForm"prototype"特性を使ってデータタイプのデフォルト描画を無効にする:
ref = GUIRun[
Widget["Panel", {
Widget["ScrollPane", {
"preferredSize" -> Widget["Dimension", {"width" -> 200, "height" -> 110}],
"viewportView" -> Widget["Table", {
"prototype" -> {"a", "a", "a"},
"items" -> {{True, "b1", 45.0}, {False, "b2", 67.9}},
PropertyValue["model", Name -> "myTableModel"]
}, Name -> "myTable"]
}]
}]
]GUIScreenShot[ref]インタラクティブな例題 (1)
Needs["GUIKit`"]ref = GUIRun[
Widget["Panel", {
Widget["ScrollPane", {
"preferredSize" -> Widget["Dimension", {"width" -> 300, "height" -> 60}],
"viewportView" -> Widget["Table", {
"tableHeader" -> Null,
"items" -> Script[{{"a1", "b1", "c1"}, {"a2", "b2", "c2"}}],
PropertyValue["model", Name -> "myTableModel"]
}, Name -> "myTable"]
}],
BindEvent[{"myTableModel", "tableChanged"},
Script[
Switch[PropertyValue[{"#", "type"}],
PropertyValue[{"#", "INSERT"}],
InvokeMethod[{"messageArea", "append"}, "inserted "],
PropertyValue[{"#", "UPDATE"}],
InvokeMethod[{"messageArea", "append"}, "updated "],
PropertyValue[{"#", "DELETE"}],
InvokeMethod[{"messageArea", "append"}, "deleted "]
];
InvokeMethod[{"messageArea", "append"}, "from row " <> ToString[PropertyValue[{"#", "firstRow"}] ] <>
" to row " <> ToString[PropertyValue[{"#", "lastRow"}] ] <>
" in column " <> ToString[PropertyValue[{"#", "column"}] ] <> "
"]
]],
Widget["ScrollPane", {
"viewportView" -> Widget["TextArea", {
"columns" -> 20, "rows" -> 5
}, Name -> "messageArea"]
}]
}]
]GUIScreenShot[ref]ref @ InvokeMethod[{"myTableModel", "setValueAt"}, "Test", 1, 1]ref @ InvokeMethod[{"myTableModel", "addRow"}, {"x", "y", "z"}]GUIScreenShot[ref]