Gtk3アプリ TreeViewプログラム自動生成ツール
treeview-tutorialで書かれているサンプルを自動生成するツールを作りました。
RiderのエクスプローラーからDbを右クリックしてツールを起動させます。
Sqliteのテーブルからカラムを解析し、TreeView生成プログラムを生成します。ComboViewも生成できます。
Riderの設定画面で外部ツールを登録する
引数を登録する
引数はReadMeを参照してください
エクスプローラーからDbを右クリックしてツールを起動
Table名をクリックするとプログラムが自動生成されます。 書き出したいColum名を制御できます。TreeViewかComboBoxを選択できます。
書き出されるModelの変数名、ListStoreの変数名、サブ名前空間をなどをTableごとに変更できます。
テーブルから生成されるプログラム
TreeViewの他にComobViewも書き出せます。
namespace TreeViewGenerator.SubNameSpace1 {
[UI] private readonly Gtk.TreeView TreeView1 = null;
private void _mkTreeView()
{
Gtk.ListStore ListStore1 = new Gtk.ListStore (typeof (Model1));
Gtk.TreeViewColumn typeColumn = new Gtk.TreeViewColumn ();
typeColumn.Title = "type";
Gtk.CellRendererToggle typeCell = new Gtk.CellRendererToggle();
typeColumn.PackStart(typeCell, true);
typeCell.Toggled += delegate(object o, ToggledArgs args)
{
TreeIter iter;
if ( ListStore1.GetIterFromString(out iter, args.Path))
{
Model1 Model11 = (Model1) ListStore1.GetValue(iter, 0);
Model11.type = Model11.type == true ? false : true;
}
};
List<Model1> Model1Array = new List<Model1>();
foreach (Model1 Model11 in Model1Array) {
ListStore1.AppendValues (Model11);
}
TreeView1.Model = ListStore1;
TreeView1.AppendColumn(typeColumn);
typeColumn.SetCellDataFunc (typeCell, new Gtk.TreeCellDataFunc (Rendertype));
}
private void Rendertype(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.ITreeModel model, Gtk.TreeIter iter)
{
Model1 Model11 = (Model1) model.GetValue (iter, 0);
}
}
書き出すプログラムのテンプレートの編集が可能
ツールのTemplateボタンからテンプレートフォルダが開きます。
T4ファイル形式でテンプレートを編集できます。
追記
ビルドしなおす必要があります
T4テンプレートについて
カスタムテンプレートに設定されているUIライブラリについてはここを使っています