1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Gtk3アプリ TreeViewプログラム自動生成ツール

Last updated at Posted at 2021-09-24

Gtk3アプリ TreeViewプログラム自動生成ツール

Release

treeview-tutorialで書かれているサンプルを自動生成するツールを作りました。
RiderのエクスプローラーからDbを右クリックしてツールを起動させます。
Sqliteのテーブルからカラムを解析し、TreeView生成プログラムを生成します。ComboViewも生成できます。

Screenshot from 2021-09-24 12-05-10.png

Riderの設定画面で外部ツールを登録する

Screenshot from 2021-09-24 20-03-24.png
引数を登録する
引数はReadMeを参照してください

エクスプローラーからDbを右クリックしてツールを起動

Screenshot from 2021-09-24 12-09-52.png Table名をクリックするとプログラムが自動生成されます。 書き出したいColum名を制御できます。 Screenshot from 2021-09-24 23-46-06.png

TreeViewかComboBoxを選択できます。
書き出されるModelの変数名、ListStoreの変数名、サブ名前空間をなどをTableごとに変更できます。
Screenshot from 2021-09-24 23-48-49.png

テーブルから生成されるプログラム

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ファイル形式でテンプレートを編集できます。
追記
ビルドしなおす必要があります

Screenshot from 2021-09-24 20-08-01.png

T4テンプレートについて

カスタムテンプレートに設定されているUIライブラリについてはここを使っています

Gtk3アプリ ファイルダイアログを利用するへ続く

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?