示例#1
0
        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);
            }
        }
示例#2
0
        /*
         * 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();
            }
        }
示例#3
0
        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;
        }