public PropertyGridTable () { Build(); items = new List<TreeItem> (); pitems = new List<TreeItem> (); eitems = new List<EventItem> (); nulliter = new TreeIter (); sortgroup = true; var column1 = new TreeViewColumn (); column1.Sizing = TreeViewColumnSizing.Fixed; column1.FixedWidth = 100; column1.Resizable = true; column1.Title = "Name"; var textCell1 = new CellRendererText (); textCell1.Underline = Pango.Underline.Single; column1.PackStart (textCell1, false); var textCell2 = new CellRendererText (); column1.PackStart (textCell2, false); var idCell = new CellRendererText (); idCell.Visible = false; column1.PackStart (idCell, false); treeview1.AppendColumn (column1); var column2 = new TreeViewColumn (); column2.Sizing = TreeViewColumnSizing.Fixed; column2.Resizable = true; column2.Title = "Value"; var editTextCell = new CellRendererText (); editTextCell.Edited += delegate(object o, EditedArgs args) { #if GTK2 TreeModel model; #elif GTK3 ITreeModel model; #endif TreeIter iter; if (treeview1.Selection.GetSelected (out model, out iter)) { int id = Convert.ToInt32(model.GetValue(iter, 11)); for(int i = 0;i < eitems.Count;i++) { if(eitems[i].id == id) { if(eitems[i].eventHandler != null) { var fwidget = new FalseWidget(args.NewText); eitems[i].eventHandler(fwidget, EventArgs.Empty); model.SetValue(iter, 4, args.NewText); break; } } } } }; column2.PackStart (editTextCell, false); var editTextCell2 = new CellRendererText (); editTextCell2.Editable = true; editTextCell2.EditingStarted += delegate { #if GTK2 TreeModel model; #elif GTK3 ITreeModel model; #endif TreeIter iter; if (treeview1.Selection.GetSelected (out model, out iter)) { var dialog = new CollectionEditorDialog(model.GetValue(iter, 14).ToString(), window); dialog.TransientFor = window; if(dialog.Run() == (int)ResponseType.Ok) { int id = Convert.ToInt32(model.GetValue(iter, 11)); for(int i = 0;i < eitems.Count;i++) { if(eitems[i].id == id) { if(eitems[i].eventHandler != null) { var fwidget = new FalseWidget(dialog.text); eitems[i].eventHandler(fwidget, EventArgs.Empty); model.SetValue(iter, 14, dialog.text); break; } } } } } }; column2.PackStart (editTextCell2, false); var editTextCell4 = new CellRendererText (); editTextCell4.Editable = true; editTextCell4.EditingStarted += delegate { #if GTK2 TreeModel model; #elif GTK3 ITreeModel model; #endif TreeIter iter; if (treeview1.Selection.GetSelected (out model, out iter)) { var dialog = new ColorPickerDialog(model.GetValue(iter, 15).ToString()); dialog.TransientFor = window; if(dialog.Run() == (int)ResponseType.Ok) { int id = Convert.ToInt32(model.GetValue(iter, 11)); for(int i = 0;i < eitems.Count;i++) { if(eitems[i].id == id) { if(eitems[i].eventHandler != null) { var fwidget = new FalseWidget(dialog.data); eitems[i].eventHandler(fwidget, EventArgs.Empty); model.SetValue(iter, 15, dialog.data); break; } } } } } }; column2.PackStart (editTextCell4, false); var editTextCell3 = new CellRendererText (); editTextCell3.Visible = false; column2.PackStart (editTextCell3, false); var comboCell = new CellRendererCombo (); comboCell.TextColumn = 0; comboCell.IsExpanded = true; comboCell.Editable = true; comboCell.HasEntry = false; comboCell.Edited += delegate(object o, EditedArgs args) { #if GTK2 TreeModel model; #elif GTK3 ITreeModel model; #endif TreeIter iter; if (treeview1.Selection.GetSelected (out model, out iter)) { int id = Convert.ToInt32(model.GetValue(iter, 11)); for(int i = 0;i < eitems.Count;i++) { if(eitems[i].id == id) { if(eitems[i].eventHandler != null && args.NewText != null && args.NewText != "") { var fwidget = new FalseWidget(args.NewText); eitems[i].eventHandler(fwidget, EventArgs.Empty); model.SetValue(iter, 8, args.NewText); break; } } } } }; column2.PackStart (comboCell , false); var editFilePathCell = new CellRendererText(); editFilePathCell.Editable = true; editFilePathCell.EditingStarted += delegate(object o, EditingStartedArgs args) { #if GTK2 TreeModel model; #elif GTK3 ITreeModel model; #endif TreeIter iter; if (treeview1.Selection.GetSelected (out model, out iter)) { var dialog = new FileChooserDialog("Add Content Folder", window, FileChooserAction.SelectFolder, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept); dialog.SetCurrentFolder (window._controller.GetFullPath(model.GetValue(iter, 17).ToString())); int responseid = dialog.Run(); string fileName = dialog.Filename; dialog.Destroy(); if(responseid == (int)ResponseType.Accept) { int id = Convert.ToInt32(model.GetValue(iter, 11)); for(int i = 0;i < eitems.Count;i++) { if(eitems[i].id == id) { if(eitems[i].eventHandler != null) { string pl = ((PipelineController)window._controller).ProjectLocation; if (!pl.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString())) pl += System.IO.Path.DirectorySeparatorChar; Uri folderUri = new Uri(pl); Uri pathUri = new Uri(fileName); string newpath = Uri.UnescapeDataString(folderUri.MakeRelativeUri(pathUri).ToString().Replace('/', System.IO.Path.DirectorySeparatorChar)); var fwidget = new FalseWidget(newpath); eitems[i].eventHandler(fwidget, EventArgs.Empty); model.SetValue(iter, 17, newpath); break; } } } } } }; column2.PackStart (editFilePathCell, false); treeview1.AppendColumn (column2); column1.AddAttribute (textCell1, "text", 0); column1.AddAttribute (textCell1, "visible", 1); column1.AddAttribute (textCell2, "text", 2); column1.AddAttribute (textCell2, "visible", 3); column2.AddAttribute (editTextCell, "text", 4); column2.AddAttribute (editTextCell, "visible", 5); column2.AddAttribute (editTextCell, "editable", 6); column2.AddAttribute (comboCell, "model", 7); column2.AddAttribute (comboCell, "text", 8); column2.AddAttribute (comboCell, "editable", 9); column2.AddAttribute (comboCell, "visible", 10); column1.AddAttribute (idCell, "text", 11); column2.AddAttribute (editTextCell2, "text", 12); column2.AddAttribute (editTextCell2, "visible", 13); column2.AddAttribute (editTextCell3, "text", 14); column2.AddAttribute (editTextCell4, "text", 15); column2.AddAttribute (editTextCell4, "visible", 16); column2.AddAttribute (editFilePathCell, "text", 17); column2.AddAttribute (editFilePathCell, "visible", 18); listStore = new TreeStore (typeof (string), typeof(bool), typeof (string), typeof(bool), typeof (string), typeof(bool), typeof(bool), typeof(TreeStore), typeof(string), typeof(bool), typeof(bool), typeof(string), typeof(string), typeof(bool), typeof(string), typeof(string), typeof(bool), typeof(string), typeof(bool)); treeview1.Model = listStore; }
public PropertyGridTable () { Build(); items = new List<TreeItem> (); pitems = new List<TreeItem> (); eitems = new List<EventItem> (); nulliter = new TreeIter (); sortgroup = true; var column1 = new TreeViewColumn (); column1.Sizing = TreeViewColumnSizing.Fixed; column1.FixedWidth = 100; column1.Resizable = true; column1.Title = "Name"; var textCell1 = new CellRendererText (); textCell1.Underline = Pango.Underline.Single; column1.PackStart (textCell1, false); var textCell2 = new CellRendererText (); column1.PackStart (textCell2, false); var idCell = new CellRendererText (); idCell.Visible = false; column1.PackStart (idCell, false); treeview1.AppendColumn (column1); var column2 = new TreeViewColumn (); column2.Sizing = TreeViewColumnSizing.Fixed; column2.Resizable = true; column2.Title = "Value"; var editTextCell = new CellRendererText (); editTextCell.Edited += delegate(object o, EditedArgs args) { TreeModel model; TreeIter iter; if (treeview1.Selection.GetSelected (out model, out iter)) { int id = Convert.ToInt32(model.GetValue(iter, 11)); for(int i = 0;i < eitems.Count;i++) { if(eitems[i].id == id) { if(eitems[i].eventHandler != null) { var fwidget = new FalseWidget(args.NewText); eitems[i].eventHandler(fwidget, EventArgs.Empty); model.SetValue(iter, 4, args.NewText); break; } } } } }; column2.PackStart (editTextCell, false); var editTextCell2 = new CellRendererText (); editTextCell2.Editable = true; editTextCell2.EditingStarted += delegate { TreeModel model; TreeIter iter; if (treeview1.Selection.GetSelected (out model, out iter)) { var dialog = new CollectionEditorDialog(model.GetValue(iter, 14).ToString()); dialog.TransientFor = window; if(dialog.Run() == (int)ResponseType.Ok) { int id = Convert.ToInt32(model.GetValue(iter, 11)); for(int i = 0;i < eitems.Count;i++) { if(eitems[i].id == id) { if(eitems[i].eventHandler != null) { var fwidget = new FalseWidget(dialog.text); eitems[i].eventHandler(fwidget, EventArgs.Empty); model.SetValue(iter, 14, dialog.text); break; } } } } } }; column2.PackStart (editTextCell2, false); var editTextCell4 = new CellRendererText (); editTextCell4.Editable = true; editTextCell4.EditingStarted += delegate { TreeModel model; TreeIter iter; if (treeview1.Selection.GetSelected (out model, out iter)) { var dialog = new ColorPickerDialog(model.GetValue(iter, 15).ToString()); dialog.TransientFor = window; if(dialog.Run() == (int)ResponseType.Ok) { int id = Convert.ToInt32(model.GetValue(iter, 11)); for(int i = 0;i < eitems.Count;i++) { if(eitems[i].id == id) { if(eitems[i].eventHandler != null) { var fwidget = new FalseWidget(dialog.data); eitems[i].eventHandler(fwidget, EventArgs.Empty); model.SetValue(iter, 15, dialog.data); break; } } } } } }; column2.PackStart (editTextCell4, false); var editTextCell3 = new CellRendererText (); editTextCell3.Visible = false; column2.PackStart (editTextCell3, false); var comboCell = new CellRendererCombo (); comboCell.TextColumn = 0; comboCell.IsExpanded = true; comboCell.Editable = true; comboCell.HasEntry = false; comboCell.Edited += delegate(object o, EditedArgs args) { TreeModel model; TreeIter iter; if (treeview1.Selection.GetSelected (out model, out iter)) { int id = Convert.ToInt32(model.GetValue(iter, 11)); for(int i = 0;i < eitems.Count;i++) { if(eitems[i].id == id) { if(eitems[i].eventHandler != null && args.NewText != null && args.NewText != "") { var fwidget = new FalseWidget(args.NewText); eitems[i].eventHandler(fwidget, EventArgs.Empty); model.SetValue(iter, 8, args.NewText); break; } } } } }; column2.PackStart (comboCell , false); treeview1.AppendColumn (column2); column1.AddAttribute (textCell1, "text", 0); column1.AddAttribute (textCell1, "visible", 1); column1.AddAttribute (textCell2, "text", 2); column1.AddAttribute (textCell2, "visible", 3); column2.AddAttribute (editTextCell, "text", 4); column2.AddAttribute (editTextCell, "visible", 5); column2.AddAttribute (editTextCell, "editable", 6); column2.AddAttribute (comboCell, "model", 7); column2.AddAttribute (comboCell, "text", 8); column2.AddAttribute (comboCell, "editable", 9); column2.AddAttribute (comboCell, "visible", 10); column1.AddAttribute (idCell, "text", 11); column2.AddAttribute (editTextCell2, "text", 12); column2.AddAttribute (editTextCell2, "visible", 13); column2.AddAttribute (editTextCell3, "text", 14); column2.AddAttribute (editTextCell4, "text", 15); column2.AddAttribute (editTextCell4, "visible", 16); listStore = new TreeStore (typeof (string), typeof(bool), typeof (string), typeof(bool), typeof (string), typeof(bool), typeof(bool), typeof(TreeStore), typeof(string), typeof(bool), typeof(bool), typeof(string), typeof(string), typeof(bool), typeof(string), typeof(string), typeof(bool)); treeview1.Model = listStore; }