void AppendCategory(Gtk.TreeStore store, TreeIter iter, CodeFormatCategory category) { TreeIter categoryIter = iter.Equals(TreeIter.Zero) ? store.AppendValues(GettextCatalog.GetString(category.DisplayName), null, null, category) : store.AppendValues(iter, GettextCatalog.GetString(category.DisplayName), null, null, category); foreach (CodeFormatOption option in category.Options) { CodeFormatType type = description.GetCodeFormatType(settings, option); KeyValuePair <string, string> val = description.GetValue(settings, option); bool isBool = type.Name == "Bool"; bool boolVal = isBool && val.Value == "True"; store.AppendValues(categoryIter, GettextCatalog.GetString(option.DisplayName), val.Key, GettextCatalog.GetString(val.Value), option, null, boolVal, isBool, !isBool); } foreach (CodeFormatCategory s in category.SubCategories) { AppendCategory(store, categoryIter, s); } }
/* * void AddCategoryPage (CodeFormatCategory category) * { * Gtk.Label label = new Gtk.Label (GettextCatalog.GetString (category.DisplayName)); * * foreach (CodeFormatCategory cat in category.SubCategories) { * AppendCategory (store, TreeIter.Zero, cat); * } * Gtk.TreeView tree = new Gtk.TreeView (store); * tree.AppendColumn (GettextCatalog.GetString ("Key"), new CellRendererText (), "text", keyColumn); * tree.AppendColumn (GettextCatalog.GetString ("Value"), new CellRendererText (), "text", valueDisplayTextColumn); * * ScrolledWindow sw = new ScrolledWindow (); * sw.Child = tree; * NotebookCategories.AppendPage (sw, label); * }*/ void TreeSelectionChanged(object sender, EventArgs e) { Gtk.TreeSelection treeSelection = (Gtk.TreeSelection)sender; if (treeSelection.GetSelected(out model, out iter)) { option = model.GetValue(iter, objectColumn) as CodeFormatOption; this.store = model as TreeStore; if (option == null) { texteditor1.Document.Text = ""; return; } CodeFormatType type = description.GetCodeFormatType(settings, option); texteditor1.Document.Text = option.Example; comboBoxStore.Clear(); foreach (KeyValuePair <string, string> v in type.Values) { comboBoxStore.AppendValues(v.Key, GettextCatalog.GetString(v.Value)); } UpdateExample(); } }
public TypedCodeFormattingPolicyPanelWidget() { store = new Gtk.TreeStore(typeof(string), typeof(string), typeof(string), typeof(object), typeof(string), typeof(bool), typeof(bool), typeof(bool)); TreeViewColumn column = new TreeViewColumn(); // pixbuf column pixbufCellRenderer = new CellRendererPixbuf(); column.PackStart(pixbufCellRenderer, false); column.SetCellDataFunc(pixbufCellRenderer, new Gtk.TreeCellDataFunc(RenderIcon)); // text column CellRendererText cellRendererText = new CellRendererText(); cellRendererText.Ypad = 1; column.PackStart(cellRendererText, true); column.SetAttributes(cellRendererText, "text", keyColumn); TreeviewCategories.AppendColumn(column); column = new TreeViewColumn(); CellRendererCombo cellRendererCombo = new CellRendererCombo(); cellRendererCombo.Ypad = 1; cellRendererCombo.Mode = CellRendererMode.Editable; cellRendererCombo.TextColumn = 1; cellRendererCombo.Model = comboBoxStore; cellRendererCombo.HasEntry = false; cellRendererCombo.Editable = true; column.PackStart(cellRendererCombo, false); column.SetAttributes(cellRendererCombo, "markup", valueDisplayTextColumn, "visible", comboVisibleColumn); CellRendererToggle cellRendererToggle = new CellRendererToggle(); cellRendererToggle.Ypad = 1; cellRendererToggle.Toggled += CellRendererToggleToggled; column.PackStart(cellRendererToggle, false); column.SetAttributes(cellRendererToggle, "active", toggleColumn, "visible", toggleVisibleColumn); TreeviewCategories.AppendColumn(column); cellRendererCombo.EditingStarted += delegate(object o, EditingStartedArgs args) { CodeFormatType type = description.GetCodeFormatType(settings, option); comboBoxStore.Clear(); foreach (KeyValuePair <string, string> v in type.Values) { comboBoxStore.AppendValues(v.Key, GettextCatalog.GetString(v.Value)); } }; cellRendererCombo.Edited += delegate(object o, EditedArgs args) { CodeFormatType type = description.GetCodeFormatType(settings, option); foreach (KeyValuePair <string, string> v in type.Values) { if (args.NewText == GettextCatalog.GetString(v.Value)) { description.SetValue(settings, option, v.Key); TreeIter iter; if (store.GetIterFromString(out iter, args.Path)) { store.SetValue(iter, valueColumn, v.Key); store.SetValue(iter, valueDisplayTextColumn, args.NewText); } break; } } UpdateExample(); }; TreeviewCategories.HeadersVisible = false; TreeviewCategories.Selection.Changed += TreeSelectionChanged; TreeviewCategories.Model = store; }