コード例 #1
0
        public FontChooserPanelWidget()
        {
            this.Build();

            foreach (var desc in FontService.FontDescriptions)
            {
                selectedFonts [desc.Name] = FontService.GetUnderlyingFontName(desc.Name);
                var fontNameLabel = new Label(GettextCatalog.GetString(desc.DisplayName));
                fontNameLabel.Justify = Justification.Left;
                fontNameLabel.Xalign  = 0;
                mainBox.PackStart(fontNameLabel, false, false, 0);
                var hBox          = new HBox();
                var setFontButton = new Button();
                setFontButton.Label = FontService.FilterFontName(GetFont(desc.Name));

                var descStr = GettextCatalog.GetString("Set the font options for {0}", GettextCatalog.GetString(desc.DisplayName));
                setFontButton.Accessible.Description = descStr;
                setFontButton.Clicked += delegate {
                    var selectionDialog = new FontSelectionDialog(GettextCatalog.GetString("Select Font"))
                    {
                        Modal             = true,
                        DestroyWithParent = true,
                        TransientFor      = this.Toplevel as Gtk.Window
                    };
                    MonoDevelop.Components.IdeTheme.ApplyTheme(selectionDialog);
                    try {
                        string fontValue = FontService.FilterFontName(GetFont(desc.Name));
                        selectionDialog.SetFontName(fontValue);
                        if (MessageService.RunCustomDialog(selectionDialog) != (int)Gtk.ResponseType.Ok)
                        {
                            return;
                        }
                        fontValue = selectionDialog.FontName;
                        if (fontValue == FontService.FilterFontName(FontService.GetFont(desc.Name).FontDescription))
                        {
                            fontValue = FontService.GetFont(desc.Name).FontDescription;
                        }
                        SetFont(desc.Name, fontValue);
                        setFontButton.Label = selectionDialog.FontName;
                    } finally {
                        selectionDialog.Destroy();
                        selectionDialog.Dispose();
                    }
                };
                hBox.PackStart(setFontButton, true, true, 0);

                var setDefaultFontButton = new Button();
                setDefaultFontButton.Label    = GettextCatalog.GetString("Set To Default");
                setDefaultFontButton.Clicked += delegate {
                    SetFont(desc.Name, FontService.GetFont(desc.Name).FontDescription);
                    setFontButton.Label = FontService.FilterFontName(GetFont(desc.Name));
                };
                hBox.PackStart(setDefaultFontButton, false, false, 0);
                mainBox.PackStart(hBox, false, false, 0);
            }
            mainBox.ShowAll();
        }
コード例 #2
0
        public FontChooserPanelWidget()
        {
            this.Build();
            fontStore           = new TreeStore(typeof(string), typeof(string), typeof(string));
            treeviewFonts.Model = fontStore;

            treeviewFonts.AppendColumn(GettextCatalog.GetString("Name"), textRenderer, "text", colDisplayName);

            comboRenderer.Edited += delegate(object o, Gtk.EditedArgs args) {
                TreeIter iter;
                if (!fontStore.GetIterFromString(out iter, args.Path))
                {
                    return;
                }
                string fontName = (string)fontStore.GetValue(iter, colName);

                if (args.NewText == GettextCatalog.GetString("Default"))
                {
                    SetFont(fontName, FontService.GetFont(fontName).FontDescription);
                    fontStore.SetValue(iter, colValue, GettextCatalog.GetString("Default"));
                    return;
                }
                var    selectionDialog = new FontSelectionDialog(GettextCatalog.GetString("Select Font"));
                string fontValue       = FontService.FilterFontName(GetFont(fontName));
                selectionDialog.SetFontName(fontValue);
                selectionDialog.OkButton.Clicked += delegate {
                    fontValue = selectionDialog.FontName;
                    if (fontValue == FontService.FilterFontName(FontService.GetFont(fontName).FontDescription))
                    {
                        fontValue = FontService.GetFont(fontName).FontDescription;
                    }
                    SetFont(fontName, fontValue);
                    fontStore.SetValue(iter, colValue, selectionDialog.FontName);
                };
                MessageService.ShowCustomDialog(selectionDialog);
                selectionDialog.Destroy();
            };

            comboRenderer.EditingStarted += delegate(object o, EditingStartedArgs args) {
                TreeIter iter;
                if (!fontStore.GetIterFromString(out iter, args.Path))
                {
                    return;
                }
                string fontName  = (string)fontStore.GetValue(iter, colName);
                string fontValue = GetFont(fontName);
                comboBoxStore.Clear();
                if (fontValue != FontService.GetFont(fontName).FontDescription)
                {
                    comboBoxStore.AppendValues(fontValue);
                }

                comboBoxStore.AppendValues(GettextCatalog.GetString("Default"));
                comboBoxStore.AppendValues(GettextCatalog.GetString("Edit..."));
            };

            var fontCol = new TreeViewColumn();

            fontCol.Title = GettextCatalog.GetString("Font");

            comboRenderer.HasEntry   = false;
            comboRenderer.Mode       = CellRendererMode.Activatable;
            comboRenderer.TextColumn = 0;
            comboRenderer.Editable   = true;
            fontCol.PackStart(comboRenderer, true);
            fontCol.SetCellDataFunc(comboRenderer, delegate(Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter) {
                string fontValue = (string)fontStore.GetValue(iter, colValue);
                string fontName  = (string)fontStore.GetValue(iter, colName);
                var d            = FontService.GetFont(fontName);
                if (d == null || d.FontDescription != fontValue)
                {
                    comboRenderer.Text = fontValue;
                }
                else
                {
                    comboRenderer.Text = GettextCatalog.GetString("Default");
                }
            });

            treeviewFonts.AppendColumn(fontCol);

            comboBoxStore = new ListStore(typeof(string));

            comboRenderer.Model = comboBoxStore;

            LoadFonts();
        }