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();
        }