From ff128913a45eb3ab20283d4e8ef038d65c55ee7b Mon Sep 17 00:00:00 2001 From: Lauris Kaplinski Date: Tue, 26 Mar 2002 22:56:20 +0000 Subject: [PATCH] Moved font capplet backt o original GUI and made it to work otherwise --- capplets/font/ChangeLog | 15 +- capplets/font/font-properties.glade | 218 +++++++--------------------- capplets/font/main.c | 156 ++++++++++++++++---- 3 files changed, 194 insertions(+), 195 deletions(-) diff --git a/capplets/font/ChangeLog b/capplets/font/ChangeLog index 855972c40..90b2b6101 100644 --- a/capplets/font/ChangeLog +++ b/capplets/font/ChangeLog @@ -1,6 +1,17 @@ -2002-03-17 Jonathan Blandford +2002-03-27 Lauris Kaplinski - reviewed by: + * main.c (response_cb): No responses here + (font_capplet_custom_toggled): New signal handler + (font_capplet_font_set): Ditto + (font_capplet_value_notify): Ditto + (setup_dialog): Removed peditor stuff, as I do not know, how to + mix it with NULL == unset, string == set + (main): Get GConfClient and activate directory + + * font-properties.glade: Reverted to original version, + added label telling about applying + +2002-03-17 Jonathan Blandford * font-properties.glade: * main.c: (setup_dialog): diff --git a/capplets/font/font-properties.glade b/capplets/font/font-properties.glade index 4816b65f6..40a286074 100644 --- a/capplets/font/font-properties.glade +++ b/capplets/font/font-properties.glade @@ -1,177 +1,69 @@ - + - - + + - Font Preferences - GTK_WINDOW_TOPLEVEL - no - no - no + Font properties yes - GTK_WIN_POS_NONE + + + - - no - 0 - yes - - - - GTK_BUTTONBOX_END - 8 - yes - - - - yes - yes - yes - gtk-close - yes - yes - - - - - 0 - no - yes - GTK_PACK_END - - - + + 4 - - 10 - no - 10 + + Use a custom font. + yes + + + no + + + + + font-info + yes + yes + + + no + + + + + Font settings only apply to new programs. + GTK_JUSTIFY_LEFT + yes + 0 + 0 + 0 + 0 + yes + + + yes + yes + + + + + + + + + + gtk-close + yes + yes + 2 yes - - - - Desktop Font - 0 - 250 - GTK_SHADOW_NONE - yes - - - - no - 10 - yes - - - - yes - Select the desktop font - AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz - GNOME_FONT_PICKER_MODE_FONT_INFO - yes - 14 - yes - yes - - - 0 - yes - yes - - - - - - yes - Set to Default - GTK_RELIEF_NORMAL - yes - - - 0 - no - no - - - - - - - 0 - yes - yes - - - - - - File Manager Font - 0 - GTK_SHADOW_NONE - yes - - - - no - 10 - yes - - - - yes - Pick a Font - AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz - GNOME_FONT_PICKER_MODE_FONT_INFO - yes - 14 - yes - yes - - - 0 - yes - yes - - - - - - yes - Set to Default - GTK_RELIEF_NORMAL - yes - - - 0 - no - no - - - - - - - 0 - yes - yes - - - - 0 - yes - yes - - - 4 - yes - yes - - + diff --git a/capplets/font/main.c b/capplets/font/main.c index 3a8ac81fc..36c26045f 100644 --- a/capplets/font/main.c +++ b/capplets/font/main.c @@ -1,56 +1,150 @@ +#define __GPM_PRINTER_C__ + +/* + * GNOME Print Manager + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Authors: + * + * Lauris Kaplinski + * + * Copyright (C) 2002 Ximian, Inc. and authors + */ + #include -#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -#include "gconf-property-editor.h" +#include "activate-settings-daemon.h" static GladeXML *xml; -static GConfChangeSet *changeset; +#define FONT_CAPPLET_DIR "/desktop/gnome/interface" +#define FONT_CAPPLET_KEY_FONT_NAME "/desktop/gnome/interface/font_name" #define WID(w) (glade_xml_get_widget (xml, (w))) -enum -{ - RESPONSE_APPLY = 1, - RESPONSE_CLOSE -}; - void response_cb (GtkDialog *dialog, gint r, gpointer data) { - switch (r) - { - case RESPONSE_APPLY: - gconf_client_commit_change_set (gconf_client_get_default (), changeset, TRUE, NULL); - - /* We may want to revert to the default schema-ed value */ - if (!gconf_client_get_bool (gconf_client_get_default (), "/desktop/gnome/interface/use_custom_font", NULL)) - { - g_print ("Unsetting\n"); - gconf_client_unset (gconf_client_get_default (), "/desktop/gnome/interface/font_name", NULL); - } - - break; - case RESPONSE_CLOSE: - gtk_main_quit (); - break; + gtk_main_quit (); +} + +static void +font_capplet_custom_toggled (GtkToggleButton *tb, GConfClient *client) +{ + gchar *sval; + + sval = gconf_client_get_string (client, FONT_CAPPLET_KEY_FONT_NAME, NULL); + + if (gtk_toggle_button_get_active (tb)) { + const gchar *fontname; + /* Use custom font */ + fontname = gnome_font_picker_get_font_name (GNOME_FONT_PICKER (WID ("font_picker"))); + if (fontname) { + /* We are really nice here */ + if (!sval || strcmp (fontname, sval)) { + gconf_client_set_string (client, FONT_CAPPLET_KEY_FONT_NAME, fontname, NULL); + } + } + } else { + /* Do not use custom font */ + if (sval) { + gconf_client_unset (client, FONT_CAPPLET_KEY_FONT_NAME, NULL); + } + } + + gtk_widget_set_sensitive (WID ("font_picker"), gtk_toggle_button_get_active (tb)); + + if (sval) g_free (sval); +} + +static void +font_capplet_font_set (GnomeFontPicker *fp, const gchar *fontname, GConfClient *client) +{ + gchar *sval; + + sval = gconf_client_get_string (client, FONT_CAPPLET_KEY_FONT_NAME, NULL); + + if (fontname) { + if (!sval || strcmp (fontname, sval)) { + gconf_client_set_string (client, FONT_CAPPLET_KEY_FONT_NAME, fontname, NULL); + } + } + + if (sval) g_free (sval); +} + +static void +font_capplet_value_notify (GConfClient *client, guint id, GConfEntry *entry, gpointer data) +{ + if (entry->value) { + const gchar *sval; + /* We have value set */ + sval = gconf_value_get_string (entry->value); + if (sval) { + gnome_font_picker_set_font_name (GNOME_FONT_PICKER (WID ("font_picker")), sval); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (WID ("custom_check")), TRUE); + } + } else { + /* No value set */ + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (WID ("custom_check")), FALSE); } } static void -setup_dialog (void) +setup_dialog (GConfClient *client) { + gchar *sval; +#if 0 GObject *peditor; peditor = gconf_peditor_new_boolean (NULL, /*changeset,*/ "/desktop/gnome/interface/use_custom_font", WID ("custom_check"), NULL); gconf_peditor_widget_set_guard (GCONF_PROPERTY_EDITOR (peditor), WID ("font_picker")); peditor = gconf_peditor_new_font (NULL, /*changeset,*/ "/desktop/gnome/interface/font_name", WID ("font_picker"), NULL); +#endif + + /* Set initial values */ + sval = gconf_client_get_string (client, FONT_CAPPLET_KEY_FONT_NAME, NULL); + if (sval) gnome_font_picker_set_font_name (GNOME_FONT_PICKER (WID ("font_picker")), sval); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (WID ("custom_check")), sval != NULL); + gtk_widget_set_sensitive (WID ("font_picker"), sval != NULL); + if (sval) g_free (sval); + + g_signal_connect (G_OBJECT (WID ("custom_check")), "toggled", G_CALLBACK (font_capplet_custom_toggled), client); + g_signal_connect (G_OBJECT (WID ("font_picker")), "font_set", G_CALLBACK (font_capplet_font_set), client); + gconf_client_notify_add (client, FONT_CAPPLET_KEY_FONT_NAME, font_capplet_value_notify, NULL, NULL, NULL); } int main (int argc, char **argv) { + GConfClient *client; + bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); @@ -60,13 +154,15 @@ main (int argc, char **argv) xml = glade_xml_new (GNOMECC_DATA_DIR "/interfaces/font-properties.glade", NULL, NULL); - changeset = gconf_change_set_new (); - setup_dialog (); + activate_settings_daemon (); + + client = gconf_client_get_default (); + gconf_client_add_dir (client, FONT_CAPPLET_DIR, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); + + setup_dialog (client); glade_xml_signal_autoconnect (xml); gtk_main (); - - gconf_change_set_unref (changeset); return 0; }