public FontChooserPanelWidget()
        {
            this.Build ();

            foreach (var desc in FontService.FontDescriptions) {
                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));
                setFontButton.Clicked += delegate {
                    var selectionDialog = new FontSelectionDialog (GettextCatalog.GetString ("Select Font")) {
                        Modal = true,
                        DestroyWithParent = true,
                        TransientFor = this.Toplevel as Gtk.Window
                    };
                    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 ();
                    }
                };
                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 ();
        }
		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 ();
		}
示例#3
0
		// Font Change handler

		void OnFontButtonClicked (object sender, EventArgs args)
		{
			Gtk.FontSelectionDialog font_dialog =
			        new Gtk.FontSelectionDialog (
			        Catalog.GetString ("Choose Note Font"));

			string font_name = (string)
			                   Preferences.Get (Preferences.CUSTOM_FONT_FACE);
			font_dialog.SetFontName (font_name);

			if ((int) Gtk.ResponseType.Ok == font_dialog.Run ()) {
				if (font_dialog.FontName != font_name) {
					Preferences.Set (Preferences.CUSTOM_FONT_FACE,
					                 font_dialog.FontName);

					UpdateFontButton (font_dialog.FontName);
				}
			}

			font_dialog.Destroy ();
		}
示例#4
0
        protected virtual void OnTextFontBrowseButtonClicked(object sender, System.EventArgs e)
        {
            FontSelectionDialog FontDlg = new FontSelectionDialog("Select I/O Text Font");
             FontDlg.SetFontName(TextFont);

             try
             {
            if (FontDlg.Run() == (int) ResponseType.Ok)
            {
               TextFont = FontDlg.FontName;
            }
             }
             finally
             {
            FontDlg.Destroy();
             }
        }
示例#5
0
	public void OnSettingsSelectFont (object sender, EventArgs args)
	{
		FontSelectionDialog fsd = new FontSelectionDialog ("Select Font");
		try {
			fsd.SetFontName (Font);
			if (fsd.Run () == (int)Gtk.ResponseType.Ok) {
				Font = fsd.FontName;
			}
		}
		finally {
			fsd.Destroy ();
		}
	}