aboutsummaryrefslogtreecommitdiff
path: root/debian
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2009-04-04 15:03:10 +0200
committerGuido Günther <agx@sigxcpu.org>2009-04-04 15:03:10 +0200
commitfea8c760ff658d94b86ba77f9e2ed19788b44b28 (patch)
treee24bb86daebe042367ecc5f098de9128b5b612c6 /debian
parentMerge commit 'upstream/0.8+svn141' (diff)
downloadkrb5-auth-dialog-fea8c760ff658d94b86ba77f9e2ed19788b44b28.tar.gz
krb5-auth-dialog-fea8c760ff658d94b86ba77f9e2ed19788b44b28.tar.bz2
krb5-auth-dialog-fea8c760ff658d94b86ba77f9e2ed19788b44b28.zip
drop patches merges upstream
0002-add-dbus-service-file.patch 0003-add-preferences-dialog.patch
Diffstat (limited to 'debian')
-rw-r--r--debian/patches/0002-add-dbus-service-file.patch56
-rw-r--r--debian/patches/0003-add-preferences-dialog.patch1973
-rw-r--r--debian/patches/series2
3 files changed, 0 insertions, 2031 deletions
diff --git a/debian/patches/0002-add-dbus-service-file.patch b/debian/patches/0002-add-dbus-service-file.patch
deleted file mode 100644
index c61a763..0000000
--- a/debian/patches/0002-add-dbus-service-file.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From: =?utf-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
-Date: Tue, 24 Mar 2009 00:47:10 +0100
-Subject: [PATCH] add dbus service file
-
----
- src/Makefile.am | 12 ++++++++++--
- src/org.gnome.KrbAuthDialog.service.in | 3 +++
- 2 files changed, 13 insertions(+), 2 deletions(-)
- create mode 100644 src/org.gnome.KrbAuthDialog.service.in
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index a0db9ec..1c74c84 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -12,11 +12,18 @@ autostart_DATA = $(autostart_in_files:.desktop.in=.desktop)
-
- schemadir = $(sysconfdir)/gconf/schemas
- schema_in_files = $(PACKAGE).schemas.in
--schema_DATA = $(PACKAGE).schemas
-+schema_DATA = $(schema_in_files:.schemas.in=.schemas)
-
- %.schemas: $(srcdir)/%.schemas.in
- sed -e "s,::PACKAGE::,$(PACKAGE)," < $< > $@
-
-+servicedir = $(datadir)/dbus-1/services
-+service_in_files = org.gnome.KrbAuthDialog.service.in
-+service_DATA = $(service_in_files:.service.in=.service)
-+
-+$(service_DATA): $(service_in_files) Makefile
-+ sed -e "s|\@BINDIR\@|$(bindir)|" $< > $@
-+
- krb5_auth_dialog_SOURCES = \
- krb5-auth-dialog.c \
- krb5-auth-dialog.h \
-@@ -60,9 +67,10 @@ EXTRA_DIST = \
- $(pkgdata_DATA) \
- $(schema_in_files) \
- $(autostart_in_files) \
-+ $(service_in_files) \
- krb5-auth-dialog.1.in
-
--CLEANFILES = $(schema_DATA)
-+CLEANFILES = $(schema_DATA) $(service_DATA)
- DISTCLEANFILES = \
- krb5-auth-dialog.desktop \
- krb5-auth-applet-dbus-glue.h
-diff --git a/src/org.gnome.KrbAuthDialog.service.in b/src/org.gnome.KrbAuthDialog.service.in
-new file mode 100644
-index 0000000..f49546a
---- /dev/null
-+++ b/src/org.gnome.KrbAuthDialog.service.in
-@@ -0,0 +1,3 @@
-+[D-BUS Service]
-+Name=org.gnome.KrbAuthDialog
-+Exec=@BINDIR@/krb5-auth-dialog -A
---
diff --git a/debian/patches/0003-add-preferences-dialog.patch b/debian/patches/0003-add-preferences-dialog.patch
deleted file mode 100644
index bd43749..0000000
--- a/debian/patches/0003-add-preferences-dialog.patch
+++ /dev/null
@@ -1,1973 +0,0 @@
-From: =?utf-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
-Date: Thu, 2 Apr 2009 16:48:38 +0200
-Subject: [PATCH] add preferences dialog
-
-Closes: #521251
----
- Makefile.am | 2 +-
- configure.ac | 1 +
- po/POTFILES.in | 5 +-
- preferences/Makefile.am | 42 ++
- preferences/krb5-auth-dialog-preferences.c | 618 ++++++++++++++++++++
- .../krb5-auth-dialog-preferences.desktop.in | 12 +
- preferences/krb5-auth-dialog-preferences.glade | 565 ++++++++++++++++++
- src/Makefile.am | 2 +
- src/krb5-auth-applet.c | 83 +++-
- src/krb5-auth-dialog.c | 49 ++-
- src/krb5-auth-dialog.schemas.in | 39 ++
- src/krb5-auth-gconf-tools.c | 103 ++++
- src/krb5-auth-gconf-tools.h | 41 ++
- src/krb5-auth-gconf.c | 135 ++---
- 14 files changed, 1594 insertions(+), 103 deletions(-)
- create mode 100644 preferences/Makefile.am
- create mode 100644 preferences/krb5-auth-dialog-preferences.c
- create mode 100644 preferences/krb5-auth-dialog-preferences.desktop.in
- create mode 100644 preferences/krb5-auth-dialog-preferences.glade
- create mode 100644 src/krb5-auth-gconf-tools.c
- create mode 100644 src/krb5-auth-gconf-tools.h
-
-diff --git a/Makefile.am b/Makefile.am
-index 51c4e5b..2be06e7 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,4 +1,4 @@
--SUBDIRS = secmem gtksecentry src po etpo icons
-+SUBDIRS = secmem gtksecentry src po etpo icons preferences
-
- EXTRA_DIST = \
- krb5-auth-dialog.spec
-diff --git a/configure.ac b/configure.ac
-index 89fb2fa..be95999 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -218,6 +218,7 @@ gtksecentry/Makefile
- icons/Makefile
- etpo/Makefile
- po/Makefile.in
-+preferences/Makefile
- ])
-
- AC_MSG_NOTICE([])
-diff --git a/po/POTFILES.in b/po/POTFILES.in
-index 8ee65fd..70977d4 100644
---- a/po/POTFILES.in
-+++ b/po/POTFILES.in
-@@ -4,6 +4,9 @@ src/krb5-auth-pwdialog.c
- src/dummy-strings.c
- src/krb5-auth-applet.c
- src/krb5-auth-dialog.desktop.in
-+src/krb5-auth-dialog.schemas.in
- gtksecentry/gtksecentry.c
- secmem/util.c
--src/krb5-auth-dialog.schemas.in
-+preferences/krb5-auth-dialog-preferences.c
-+preferences/krb5-auth-dialog-preferences.desktop.in
-+preferences/krb5-auth-dialog-preferences.glade
-diff --git a/preferences/Makefile.am b/preferences/Makefile.am
-new file mode 100644
-index 0000000..83541ea
---- /dev/null
-+++ b/preferences/Makefile.am
-@@ -0,0 +1,42 @@
-+NULL =
-+
-+INCLUDES = \
-+ -I $(top_srcdir)/src/ \
-+ -DKA_DATA_DIR=\""$(pkgdatadir)"\" \
-+ -DLOCALE_DIR=\""$(localedir)/"\" \
-+ $(NULL)
-+
-+bin_PROGRAMS = krb5-auth-dialog-preferences
-+
-+schemadir = $(sysconfdir)/gconf/schemas
-+
-+krb5_auth_dialog_preferences_SOURCES = \
-+ krb5-auth-dialog-preferences.c \
-+ ../src/krb5-auth-gconf-tools.c \
-+ ../src/krb5-auth-gconf-tools.h \
-+ $(NULL)
-+
-+krb5_auth_dialog_preferences_LDADD = \
-+ @GCONF_LIBS@ \
-+ @GLADE_LIBS@ \
-+ @GTK_LIBS@ \
-+ $(NULL)
-+
-+desktopdir = $(datadir)/applications
-+desktop_in_files = krb5-auth-dialog-preferences.desktop.in
-+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
-+
-+@INTLTOOL_DESKTOP_RULE@
-+
-+pkgdatadir = $(datadir)/krb5-auth-dialog
-+pkgdata_DATA = \
-+ krb5-auth-dialog-preferences.glade
-+
-+CLEANFILES = \
-+ $(desktop_DATA) \
-+ $(NULL)
-+
-+EXTRA_DIST = \
-+ $(desktop_in_files) \
-+ $(pkgdata_DATA) \
-+ $(NULL)
-diff --git a/preferences/krb5-auth-dialog-preferences.c b/preferences/krb5-auth-dialog-preferences.c
-new file mode 100644
-index 0000000..e4d8a48
---- /dev/null
-+++ b/preferences/krb5-auth-dialog-preferences.c
-@@ -0,0 +1,618 @@
-+/*
-+ * Copyright (C) 2009 Guido Guenther <agx@sigxcup.org>
-+ *
-+ * 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, 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.
-+ *
-+ */
-+
-+#include "config.h"
-+
-+#include <gtk/gtk.h>
-+#include <glib/gi18n.h>
-+#include <glade/glade.h>
-+
-+#include "krb5-auth-gconf-tools.h"
-+
-+#define N_LISTENERS 7
-+
-+typedef struct {
-+ GladeXML *xml;
-+ GConfClient *client;
-+
-+ GtkWidget *dialog;
-+ GtkWidget *principal_entry;
-+ GtkWidget *pkuserid_entry;
-+ GtkWidget *forwardable_toggle;
-+ GtkWidget *proxiable_toggle;
-+ GtkWidget *renewable_toggle;
-+ GtkWidget *trayicon_toggle;
-+ GtkWidget *prompt_mins_entry;
-+
-+ guint listeners [N_LISTENERS];
-+ int n_listeners;
-+} KaPreferencesDialog;
-+
-+
-+static void
-+ka_preferences_principal_notify (GConfClient *client G_GNUC_UNUSED,
-+ guint cnx_id G_GNUC_UNUSED,
-+ GConfEntry *entry,
-+ KaPreferencesDialog *dialog)
-+{
-+ const char *principal;
-+
-+ if (!entry->value || entry->value->type != GCONF_VALUE_STRING)
-+ return;
-+
-+ principal = gconf_value_get_string (entry->value);
-+
-+ if (!principal || !strlen(principal))
-+ gtk_entry_set_text (GTK_ENTRY (dialog->principal_entry), "");
-+ else {
-+ const char *old_principal;
-+
-+ old_principal = gtk_entry_get_text (GTK_ENTRY (dialog->principal_entry));
-+ if (!old_principal || (old_principal && strcmp (old_principal, principal)))
-+ gtk_entry_set_text (GTK_ENTRY (dialog->principal_entry), principal);
-+ }
-+}
-+
-+
-+static void
-+ka_preferences_dialog_principal_changed (GtkEntry *entry,
-+ KaPreferencesDialog *dialog)
-+{
-+ const char *principal;
-+
-+ principal = gtk_entry_get_text (entry);
-+
-+ if (!principal || !strlen(principal))
-+ gconf_client_unset (dialog->client, KA_GCONF_KEY_PRINCIPAL, NULL);
-+ else
-+ gconf_client_set_string (dialog->client, KA_GCONF_KEY_PRINCIPAL, principal, NULL);
-+}
-+
-+
-+static void
-+ka_preferences_dialog_setup_principal_entry (KaPreferencesDialog *dialog)
-+{
-+ char *principal = NULL;
-+
-+ dialog->principal_entry = glade_xml_get_widget (dialog->xml, "principal_entry");
-+ g_assert (dialog->principal_entry != NULL);
-+
-+ if (!ka_gconf_get_string (dialog->client, KA_GCONF_KEY_PRINCIPAL, &principal))
-+ g_warning ("Getting principal failed");
-+
-+ if (principal && strlen(principal))
-+ gtk_entry_set_text (GTK_ENTRY (dialog->principal_entry), principal);
-+ if (principal)
-+ g_free (principal);
-+
-+ g_signal_connect (dialog->principal_entry, "changed",
-+ G_CALLBACK (ka_preferences_dialog_principal_changed), dialog);
-+
-+ if (!gconf_client_key_is_writable (dialog->client, KA_GCONF_KEY_PRINCIPAL, NULL)) {
-+ gtk_widget_set_sensitive (dialog->principal_entry, FALSE);
-+ }
-+
-+ dialog->listeners [dialog->n_listeners] = gconf_client_notify_add (dialog->client,
-+ KA_GCONF_KEY_PRINCIPAL,
-+ (GConfClientNotifyFunc) ka_preferences_principal_notify,
-+ dialog, NULL, NULL);
-+ dialog->n_listeners++;
-+}
-+
-+
-+static void
-+ka_preferences_pkuserid_notify (GConfClient *client G_GNUC_UNUSED,
-+ guint cnx_id G_GNUC_UNUSED,
-+ GConfEntry *entry,
-+ KaPreferencesDialog *dialog)
-+{
-+ const char *pkuserid;
-+
-+ if (!entry->value || entry->value->type != GCONF_VALUE_STRING)
-+ return;
-+
-+ pkuserid = gconf_value_get_string (entry->value);
-+
-+ if (!pkuserid || !strlen(pkuserid))
-+ gtk_entry_set_text (GTK_ENTRY (dialog->pkuserid_entry), "");
-+ else {
-+ const char *old_pkuserid;
-+
-+ old_pkuserid = gtk_entry_get_text (GTK_ENTRY (dialog->pkuserid_entry));
-+ if (!old_pkuserid || (old_pkuserid && strcmp (old_pkuserid, pkuserid)))
-+ gtk_entry_set_text (GTK_ENTRY (dialog->pkuserid_entry), pkuserid);
-+ }
-+}
-+
-+
-+static void
-+ka_preferences_dialog_pkuserid_changed (GtkEntry *entry,
-+ KaPreferencesDialog *dialog)
-+{
-+ const char *pkuserid;
-+
-+ pkuserid = gtk_entry_get_text (entry);
-+
-+ if (!pkuserid || !strlen(pkuserid))
-+ gconf_client_unset (dialog->client, KA_GCONF_KEY_PK_USERID, NULL);
-+ else
-+ gconf_client_set_string (dialog->client, KA_GCONF_KEY_PK_USERID, pkuserid, NULL);
-+}
-+
-+
-+static void
-+ka_preferences_dialog_setup_pkuserid_entry (KaPreferencesDialog *dialog)
-+{
-+ char *pkuserid = NULL;
-+
-+ dialog->pkuserid_entry = glade_xml_get_widget (dialog->xml, "pkuserid_entry");
-+ g_assert (dialog->pkuserid_entry != NULL);
-+
-+ if (!ka_gconf_get_string (dialog->client, KA_GCONF_KEY_PK_USERID, &pkuserid))
-+ g_warning ("Getting pkuserid failed");
-+
-+ if (pkuserid && strlen(pkuserid))
-+ gtk_entry_set_text (GTK_ENTRY (dialog->pkuserid_entry), pkuserid);
-+ if (pkuserid)
-+ g_free (pkuserid);
-+
-+ g_signal_connect (dialog->pkuserid_entry, "changed",
-+ G_CALLBACK (ka_preferences_dialog_pkuserid_changed), dialog);
-+ if (!gconf_client_key_is_writable (dialog->client, KA_GCONF_KEY_PK_USERID, NULL)) {
-+ gtk_widget_set_sensitive (dialog->pkuserid_entry, FALSE);
-+ }
-+
-+ dialog->listeners [dialog->n_listeners] = gconf_client_notify_add (dialog->client,
-+ KA_GCONF_KEY_PK_USERID,
-+ (GConfClientNotifyFunc) ka_preferences_pkuserid_notify,
-+ dialog, NULL, NULL);
-+ dialog->n_listeners++;
-+}
-+
-+
-+static void
-+ka_preferences_dialog_forwardable_toggled (GtkToggleButton *toggle,
-+ KaPreferencesDialog *dialog)
-+{
-+ gboolean forwardable;
-+
-+ forwardable = gtk_toggle_button_get_active (toggle);
-+
-+ gconf_client_set_bool (dialog->client, KA_GCONF_KEY_FORWARDABLE, forwardable, NULL);
-+}
-+
-+
-+static void
-+ka_preferences_dialog_forwardable_notify (GConfClient *client G_GNUC_UNUSED,
-+ guint cnx_id G_GNUC_UNUSED,
-+ GConfEntry *entry,
-+ KaPreferencesDialog *dialog)
-+{
-+ gboolean forwardable;
-+
-+ if (!entry->value || entry->value->type != GCONF_VALUE_BOOL)
-+ return;
-+
-+ forwardable = gconf_value_get_bool (entry->value) != FALSE;
-+
-+ if (forwardable != gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->forwardable_toggle)))
-+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->forwardable_toggle), forwardable);
-+}
-+
-+
-+static gboolean
-+ka_preferences_dialog_setup_forwardable_toggle (KaPreferencesDialog *dialog)
-+{
-+ gboolean forwardable;
-+
-+ dialog->forwardable_toggle = glade_xml_get_widget (dialog->xml, "forwardable_toggle");
-+ g_assert (dialog->forwardable_toggle != NULL);
-+
-+ forwardable = gconf_client_get_bool (dialog->client, KA_GCONF_KEY_FORWARDABLE, NULL);
-+
-+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->forwardable_toggle), forwardable);
-+
-+ g_signal_connect (dialog->forwardable_toggle, "toggled",
-+ G_CALLBACK (ka_preferences_dialog_forwardable_toggled), dialog);
-+
-+ if (!gconf_client_key_is_writable (dialog->client, KA_GCONF_KEY_FORWARDABLE, NULL)) {
-+ gtk_widget_set_sensitive (dialog->forwardable_toggle, FALSE);
-+ }
-+
-+ dialog->listeners [dialog->n_listeners] = gconf_client_notify_add (dialog->client,
-+ KA_GCONF_KEY_FORWARDABLE,
-+ (GConfClientNotifyFunc) ka_preferences_dialog_forwardable_notify,
-+ dialog, NULL, NULL);
-+ dialog->n_listeners++;
-+ return forwardable;
-+}
-+
-+
-+static void
-+ka_preferences_dialog_proxiable_toggled (GtkToggleButton *toggle,
-+ KaPreferencesDialog *dialog)
-+{
-+ gboolean proxiable;
-+
-+ proxiable = gtk_toggle_button_get_active (toggle);
-+
-+ gconf_client_set_bool (dialog->client, KA_GCONF_KEY_PROXIABLE, proxiable, NULL);
-+}
-+
-+
-+static void
-+ka_preferences_dialog_proxiable_notify (GConfClient *client G_GNUC_UNUSED,
-+ guint cnx_id G_GNUC_UNUSED,
-+ GConfEntry *entry,
-+ KaPreferencesDialog *dialog)
-+{
-+ gboolean proxiable;
-+
-+ if (!entry->value || entry->value->type != GCONF_VALUE_BOOL)
-+ return;
-+
-+ proxiable = gconf_value_get_bool (entry->value) != FALSE;
-+
-+ if (proxiable != gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->proxiable_toggle)))
-+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->proxiable_toggle), proxiable);
-+}
-+
-+
-+static gboolean
-+ka_preferences_dialog_setup_proxiable_toggle (KaPreferencesDialog *dialog)
-+{
-+ gboolean proxiable;
-+
-+ dialog->proxiable_toggle = glade_xml_get_widget (dialog->xml, "proxiable_toggle");
-+ g_assert (dialog->proxiable_toggle != NULL);
-+
-+ proxiable = gconf_client_get_bool (dialog->client, KA_GCONF_KEY_PROXIABLE, NULL);
-+
-+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->proxiable_toggle), proxiable);
-+
-+ g_signal_connect (dialog->proxiable_toggle, "toggled",
-+ G_CALLBACK (ka_preferences_dialog_proxiable_toggled), dialog);
-+
-+ if (!gconf_client_key_is_writable (dialog->client, KA_GCONF_KEY_PROXIABLE, NULL)) {
-+ gtk_widget_set_sensitive (dialog->proxiable_toggle, FALSE);
-+ }
-+
-+ dialog->listeners [dialog->n_listeners] = gconf_client_notify_add (dialog->client,
-+ KA_GCONF_KEY_PROXIABLE,
-+ (GConfClientNotifyFunc) ka_preferences_dialog_proxiable_notify,
-+ dialog, NULL, NULL);
-+ dialog->n_listeners++;
-+ return proxiable;
-+}
-+
-+
-+static void
-+ka_preferences_dialog_renewable_toggled (GtkToggleButton *toggle,
-+ KaPreferencesDialog *dialog)
-+{
-+ gboolean renewable;
-+
-+ renewable = gtk_toggle_button_get_active (toggle);
-+
-+ gconf_client_set_bool (dialog->client, KA_GCONF_KEY_RENEWABLE, renewable, NULL);
-+}
-+
-+
-+static void
-+ka_preferences_dialog_renewable_notify (GConfClient *client G_GNUC_UNUSED,
-+ guint cnx_id G_GNUC_UNUSED,
-+ GConfEntry *entry,
-+ KaPreferencesDialog *dialog)
-+{
-+ gboolean renewable;
-+
-+ if (!entry->value || entry->value->type != GCONF_VALUE_BOOL)
-+ return;
-+
-+ renewable = gconf_value_get_bool (entry->value) != FALSE;
-+
-+ if (renewable != gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->renewable_toggle)))
-+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->renewable_toggle), renewable);
-+}
-+
-+
-+static gboolean
-+ka_preferences_dialog_setup_renewable_toggle (KaPreferencesDialog *dialog)
-+{
-+ gboolean renewable;
-+
-+ dialog->renewable_toggle = glade_xml_get_widget (dialog->xml, "renewable_toggle");
-+ g_assert (dialog->renewable_toggle != NULL);
-+
-+ renewable = gconf_client_get_bool (dialog->client, KA_GCONF_KEY_RENEWABLE, NULL);
-+
-+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->renewable_toggle), renewable);
-+
-+ g_signal_connect (dialog->renewable_toggle, "toggled",
-+ G_CALLBACK (ka_preferences_dialog_renewable_toggled), dialog);
-+
-+ if (!gconf_client_key_is_writable (dialog->client, KA_GCONF_KEY_RENEWABLE, NULL)) {
-+ gtk_widget_set_sensitive (dialog->renewable_toggle, FALSE);
-+ }
-+
-+ dialog->listeners [dialog->n_listeners] = gconf_client_notify_add (dialog->client,
-+ KA_GCONF_KEY_RENEWABLE,
-+ (GConfClientNotifyFunc) ka_preferences_dialog_renewable_notify,
-+ dialog, NULL, NULL);
-+ dialog->n_listeners++;
-+ return renewable;
-+}
-+
-+static void
-+ka_preferences_dialog_trayicon_toggled (GtkToggleButton *toggle,
-+ KaPreferencesDialog *dialog)
-+{
-+ gboolean trayicon;
-+
-+ trayicon = gtk_toggle_button_get_active (toggle);
-+ gconf_client_set_bool (dialog->client, KA_GCONF_KEY_SHOW_TRAYICON, trayicon, NULL);
-+}
-+
-+
-+static void
-+ka_preferences_dialog_trayicon_notify (GConfClient *client G_GNUC_UNUSED,
-+ guint cnx_id G_GNUC_UNUSED,
-+ GConfEntry *entry,
-+ KaPreferencesDialog *dialog)
-+{
-+ gboolean trayicon;
-+
-+ if (!entry->value || entry->value->type != GCONF_VALUE_BOOL)
-+ return;
-+
-+ trayicon = gconf_value_get_bool (entry->value) != FALSE;
-+
-+ if (trayicon != gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->trayicon_toggle)))
-+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->trayicon_toggle), trayicon);
-+}
-+
-+
-+static gboolean
-+ka_preferences_dialog_setup_trayicon_toggle (KaPreferencesDialog *dialog)
-+{
-+ gboolean trayicon;
-+
-+ dialog->trayicon_toggle = glade_xml_get_widget (dialog->xml, "trayicon_toggle");
-+ g_assert (dialog->trayicon_toggle != NULL);
-+
-+ trayicon = gconf_client_get_bool (dialog->client, KA_GCONF_KEY_SHOW_TRAYICON, NULL);
-+
-+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->trayicon_toggle), trayicon);
-+
-+ g_signal_connect (dialog->trayicon_toggle, "toggled",
-+ G_CALLBACK (ka_preferences_dialog_trayicon_toggled), dialog);
-+
-+ if (!gconf_client_key_is_writable (dialog->client, KA_GCONF_KEY_SHOW_TRAYICON, NULL)) {
-+ gtk_widget_set_sensitive (dialog->trayicon_toggle, FALSE);
-+ }
-+
-+ dialog->listeners [dialog->n_listeners] = gconf_client_notify_add (dialog->client,
-+ KA_GCONF_KEY_SHOW_TRAYICON,
-+ (GConfClientNotifyFunc) ka_preferences_dialog_trayicon_notify,
-+ dialog, NULL, NULL);
-+ dialog->n_listeners++;
-+ return trayicon;
-+}
-+
-+
-+static void
-+ka_preferences_dialog_prompt_mins_changed (GtkSpinButton *button,
-+ KaPreferencesDialog *dialog)
-+{
-+ gint prompt_mins;
-+
-+ prompt_mins = gtk_spin_button_get_value_as_int (button);
-+ gconf_client_set_int (dialog->client, KA_GCONF_KEY_PROMPT_MINS, prompt_mins, NULL);
-+}
-+
-+
-+static void
-+ka_preferences_dialog_prompt_mins_notify (GConfClient *client G_GNUC_UNUSED,
-+ guint cnx_id G_GNUC_UNUSED,
-+ GConfEntry *entry,
-+ KaPreferencesDialog *dialog)
-+{
-+ gint prompt_mins;
-+
-+ if (!entry->value || entry->value->type != GCONF_VALUE_INT)
-+ return;
-+
-+ prompt_mins = gconf_value_get_int (entry->value);
-+
-+ if (prompt_mins != gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (dialog->prompt_mins_entry)))
-+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (dialog->prompt_mins_entry), prompt_mins);
-+}
-+
-+
-+static gint
-+ka_preferences_dialog_setup_prompt_mins_entry (KaPreferencesDialog *dialog)
-+{
-+ gint prompt_mins;
-+
-+ dialog->prompt_mins_entry = glade_xml_get_widget (dialog->xml, "prompt_mins_entry");
-+ g_assert (dialog->prompt_mins_entry != NULL);
-+
-+ prompt_mins = gconf_client_get_int (dialog->client, KA_GCONF_KEY_PROMPT_MINS, NULL);
-+
-+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (dialog->prompt_mins_entry), prompt_mins);
-+
-+ g_signal_connect (dialog->prompt_mins_entry, "value-changed",
-+ G_CALLBACK (ka_preferences_dialog_prompt_mins_changed), dialog);
-+
-+ if (!gconf_client_key_is_writable (dialog->client, KA_GCONF_KEY_PROMPT_MINS, NULL)) {
-+ gtk_widget_set_sensitive (dialog->prompt_mins_entry, FALSE);
-+ }
-+
-+ dialog->listeners [dialog->n_listeners] = gconf_client_notify_add (dialog->client,
-+ KA_GCONF_KEY_PROMPT_MINS,
-+ (GConfClientNotifyFunc) ka_preferences_dialog_prompt_mins_notify,
-+ dialog, NULL, NULL);
-+ dialog->n_listeners++;
-+ return prompt_mins;
-+}
-+
-+
-+
-+static void
-+ka_preferences_dialog_response (GtkWidget *widget,
-+ int response,
-+ KaPreferencesDialog *dialog)
-+{
-+ GError *error = NULL;
-+
-+ if (response != GTK_RESPONSE_HELP) {
-+ gtk_widget_destroy (widget);
-+ return;
-+ }
-+
-+ gtk_show_uri (gtk_window_get_screen (GTK_WINDOW (dialog->dialog)),
-+ "ghelp:krb5-auth-dialog#preferences",
-+ gtk_get_current_event_time (), &error);
-+
-+ if (error) {
-+ GtkWidget *message_dialog;
-+
-+
-+ message_dialog = gtk_message_dialog_new (GTK_WINDOW (dialog->dialog),
-+ GTK_DIALOG_DESTROY_WITH_PARENT,
-+ GTK_MESSAGE_ERROR,
-+ GTK_BUTTONS_CLOSE,
-+ _("There was an error displaying help:\n%s"),
-+ error->message);
-+ gtk_window_set_resizable (GTK_WINDOW (message_dialog), FALSE);
-+
-+ g_signal_connect (message_dialog, "response",
-+ G_CALLBACK (gtk_widget_destroy),
-+ NULL);
-+
-+ gtk_widget_show (message_dialog);
-+ g_error_free (error);
-+ }
-+}
-+
-+
-+static void
-+ka_preferences_dialog_destroyed (GtkWidget *widget G_GNUC_UNUSED,
-+ KaPreferencesDialog *dialog)
-+{
-+ dialog->dialog = NULL;
-+
-+ gtk_main_quit ();
-+}
-+
-+
-+static gboolean
-+ka_preferences_dialog_init(KaPreferencesDialog* dialog)
-+{
-+ dialog->xml = glade_xml_new (KA_DATA_DIR G_DIR_SEPARATOR_S
-+ PACKAGE "-preferences.glade", NULL, NULL);
-+
-+ dialog->dialog = glade_xml_get_widget (dialog->xml, "krb5_auth_dialog_prefs");
-+ g_assert (dialog->dialog);
-+
-+ g_signal_connect (dialog->dialog, "response",
-+ G_CALLBACK (ka_preferences_dialog_response), dialog);
-+ g_signal_connect (dialog->dialog, "destroy",
-+ G_CALLBACK (ka_preferences_dialog_destroyed), dialog);
-+
-+ dialog->client = gconf_client_get_default ();
-+ gconf_client_add_dir (dialog->client, KA_GCONF_PATH, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
-+
-+ ka_preferences_dialog_setup_principal_entry (dialog);
-+ ka_preferences_dialog_setup_pkuserid_entry (dialog);
-+ ka_preferences_dialog_setup_forwardable_toggle (dialog);
-+ ka_preferences_dialog_setup_proxiable_toggle (dialog);
-+ ka_preferences_dialog_setup_renewable_toggle (dialog);
-+ ka_preferences_dialog_setup_trayicon_toggle (dialog);
-+ ka_preferences_dialog_setup_prompt_mins_entry (dialog);
-+
-+ g_assert (dialog->n_listeners == N_LISTENERS);
-+
-+ gtk_widget_show (dialog->dialog);
-+ return TRUE;
-+}
-+
-+
-+static void
-+ka_preferences_dialog_finalize (KaPreferencesDialog *dialog)
-+{
-+ if (dialog->dialog)
-+ gtk_widget_destroy (dialog->dialog);
-+ dialog->dialog = NULL;
-+
-+ if (dialog->client) {
-+ int i;
-+
-+ for (i = 0; i < dialog->n_listeners; i++) {
-+ if (dialog->listeners [i])
-+ gconf_client_notify_remove (dialog->client, dialog->listeners [i]);
-+ dialog->listeners [i] = 0;
-+ }
-+ dialog->n_listeners = 0;
-+
-+ gconf_client_remove_dir (dialog->client, KA_GCONF_PATH, NULL);
-+
-+ g_object_unref (dialog->client);
-+ dialog->client = NULL;
-+ }
-+
-+ if (dialog->xml)
-+ g_object_unref (dialog->xml);
-+ dialog->xml = NULL;
-+}
-+
-+int
-+main (int argc, char *argv[])
-+{
-+ GOptionContext *context;
-+ GError *error = NULL;
-+ KaPreferencesDialog dialog = { NULL, };
-+
-+ const char *help_msg = "Run '" PACKAGE " --help' to see a full list of available command line options";
-+ const GOptionEntry options [] = {
-+ { NULL, 0, 0, G_OPTION_ARG_NONE, NULL, NULL, NULL }
-+ };
-+
-+ context = g_option_context_new ("- Kerberos Authentication Configuration");
-+ g_option_context_add_main_entries (context, options, NULL);
-+ g_option_context_add_group (context, gtk_get_option_group (TRUE));
-+ g_option_context_parse (context, &argc, &argv, &error);
-+ if (error) {
-+ g_print ("%s\n%s\n",
-+ error->message,
-+ help_msg);
-+ g_error_free (error);
-+ return 1;
-+ }
-+ textdomain (PACKAGE);
-+ bind_textdomain_codeset (PACKAGE, "UTF-8");
-+ bindtextdomain (PACKAGE, LOCALE_DIR);
-+
-+ g_set_application_name (_("Kerberos Authentication Configuration"));
-+
-+ ka_preferences_dialog_init(&dialog);
-+ gtk_main ();
-+ ka_preferences_dialog_finalize(&dialog);
-+ return 0;
-+}
-diff --git a/preferences/krb5-auth-dialog-preferences.desktop.in b/preferences/krb5-auth-dialog-preferences.desktop.in
-new file mode 100644
-index 0000000..d87e1e7
---- /dev/null
-+++ b/preferences/krb5-auth-dialog-preferences.desktop.in
-@@ -0,0 +1,12 @@
-+[Desktop Entry]
-+_Name=Network Authentication
-+_Comment=Set your Kerberos network authenticaion preferences
-+Exec=krb5-auth-dialog-preferences
-+Icon=gtk-dialog-authentication
-+Terminal=false
-+Type=Application
-+StartupNotify=true
-+Categories=GNOME;GTK;Settings;X-GNOME-NetworkSettings;
-+OnlyShowIn=GNOME;
-+X-GNOME-Bugzilla-Bugzilla=GNOME
-+X-GNOME-Bugzilla-Product=krb5-auth-dialog
-diff --git a/preferences/krb5-auth-dialog-preferences.glade b/preferences/krb5-auth-dialog-preferences.glade
-new file mode 100644
-index 0000000..128229d
---- /dev/null
-+++ b/preferences/krb5-auth-dialog-preferences.glade
-@@ -0,0 +1,565 @@
-+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-+<!--Generated with glade3 3.4.5 on Thu Apr 2 16:29:44 2009 -->
-+<glade-interface>
-+ <widget class="GtkDialog" id="krb5_auth_dialog_prefs">
-+ <property name="border_width">5</property>
-+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
-+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-+ <property name="has_separator">False</property>
-+ <child internal-child="vbox">
-+ <widget class="GtkVBox" id="dialog-vbox1">
-+ <property name="visible">True</property>
-+ <property name="spacing">2</property>
-+ <child>
-+ <widget class="GtkNotebook" id="notebook1">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <child>
-+ <widget class="GtkVBox" id="vbox1">
-+ <property name="visible">True</property>
-+ <property name="border_width">12</property>
-+ <property name="spacing">18</property>
-+ <child>
-+ <widget class="GtkVBox" id="vbox2">
-+ <property name="visible">True</property>
-+ <property name="spacing">12</property>
-+ <child>
-+ <widget class="GtkLabel" id="label4">
-+ <property name="visible">True</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">&lt;b&gt;Kerberos User&lt;/b&gt;</property>
-+ <property name="use_markup">True</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkHBox" id="hbox1">
-+ <property name="visible">True</property>
-+ <property name="spacing">12</property>
-+ <child>
-+ <widget class="GtkImage" id="access">
-+ <property name="visible">True</property>
-+ <property name="yalign">0</property>
-+ <property name="icon_size">6</property>
-+ <property name="icon_name">gtk-dialog-authentication</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkVBox" id="vbox5">
-+ <property name="visible">True</property>
-+ <property name="spacing">6</property>
-+ <child>
-+ <widget class="GtkLabel" id="label6">
-+ <property name="visible">True</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">Kerberos principal:</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkHBox" id="hbox5">
-+ <property name="visible">True</property>
-+ <property name="spacing">6</property>
-+ <child>
-+ <widget class="GtkLabel" id="label8">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes"> </property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkEntry" id="principal_entry">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ </widget>
-+ <packing>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkLabel" id="label7">
-+ <property name="visible">True</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">Pkinit userid: </property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="position">2</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkHBox" id="hbox6">
-+ <property name="visible">True</property>
-+ <property name="spacing">6</property>
-+ <child>
-+ <widget class="GtkLabel" id="label9">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes"> </property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkEntry" id="pkuserid_entry">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ </widget>
-+ <packing>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="position">3</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkVBox" id="vbox3">
-+ <property name="visible">True</property>
-+ <property name="spacing">12</property>
-+ <child>
-+ <widget class="GtkLabel" id="label5">
-+ <property name="visible">True</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">&lt;b&gt;Ticket Options&lt;/b&gt;</property>
-+ <property name="use_markup">True</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkHBox" id="hbox2">
-+ <property name="visible">True</property>
-+ <property name="spacing">12</property>
-+ <child>
-+ <widget class="GtkImage" id="image1">
-+ <property name="visible">True</property>
-+ <property name="yalign">0</property>
-+ <property name="icon_size">6</property>
-+ <property name="icon_name">system-lock-screen</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkVBox" id="vbox4">
-+ <property name="visible">True</property>
-+ <property name="spacing">6</property>
-+ <child>
-+ <widget class="GtkLabel" id="label10">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes">Requested Kerberos tickets should be:</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkHBox" id="hbox3">
-+ <property name="visible">True</property>
-+ <child>
-+ <widget class="GtkLabel" id="label11">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes"> </property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkCheckButton" id="forwardable_toggle">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="label" translatable="yes">forwardable</property>
-+ <property name="response_id">0</property>
-+ <property name="draw_indicator">True</property>
-+ </widget>
-+ <packing>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkHBox" id="hbox4">
-+ <property name="visible">True</property>
-+ <child>
-+ <widget class="GtkLabel" id="label12">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes"> </property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkCheckButton" id="renewable_toggle">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="label" translatable="yes">renewable</property>
-+ <property name="response_id">0</property>
-+ <property name="draw_indicator">True</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="position">2</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkHBox" id="hbox11">
-+ <property name="visible">True</property>
-+ <child>
-+ <widget class="GtkLabel" id="label19">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes"> </property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkCheckButton" id="proxiable_toggle">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="label" translatable="yes">proxiable</property>
-+ <property name="response_id">0</property>
-+ <property name="draw_indicator">True</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="position">3</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ </child>
-+ <child>
-+ <widget class="GtkLabel" id="label1">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes">Kerberos</property>
-+ </widget>
-+ <packing>
-+ <property name="type">tab</property>
-+ <property name="tab_fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkVBox" id="vbox9">
-+ <property name="visible">True</property>
-+ <property name="border_width">12</property>
-+ <property name="spacing">18</property>
-+ <child>
-+ <widget class="GtkVBox" id="vbox8">
-+ <property name="visible">True</property>
-+ <property name="spacing">12</property>
-+ <child>
-+ <widget class="GtkLabel" id="label17">
-+ <property name="visible">True</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">&lt;b&gt;Notifications&lt;/b&gt;</property>
-+ <property name="use_markup">True</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkHBox" id="hbox9">
-+ <property name="visible">True</property>
-+ <property name="spacing">12</property>
-+ <child>
-+ <widget class="GtkImage" id="image3">
-+ <property name="visible">True</property>
-+ <property name="yalign">0</property>
-+ <property name="stock">gtk-dialog-warning</property>
-+ <property name="icon_size">6</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkHBox" id="hbox8">
-+ <property name="visible">True</property>
-+ <property name="spacing">6</property>
-+ <child>
-+ <widget class="GtkLabel" id="label14">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes"> </property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkLabel" id="label15">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes">Warn every</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkSpinButton" id="prompt_mins_entry">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="adjustment">0 0 100 1 10 10</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="position">2</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkLabel" id="label16">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes">minutes</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="position">3</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkVBox" id="vbox10">
-+ <property name="visible">True</property>
-+ <property name="spacing">12</property>
-+ <child>
-+ <widget class="GtkLabel" id="label18">
-+ <property name="visible">True</property>
-+ <property name="xalign">0</property>
-+ <property name="label" translatable="yes">&lt;b&gt;Appearance&lt;/b&gt;</property>
-+ <property name="use_markup">True</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkHBox" id="hbox10">
-+ <property name="visible">True</property>
-+ <property name="spacing">12</property>
-+ <child>
-+ <widget class="GtkImage" id="image2">
-+ <property name="visible">True</property>
-+ <property name="xalign">0</property>
-+ <property name="yalign">0</property>
-+ <property name="stock">gtk-zoom-in</property>
-+ <property name="icon_size">6</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkVBox" id="vbox7">
-+ <property name="visible">True</property>
-+ <child>
-+ <widget class="GtkHBox" id="hbox7">
-+ <property name="visible">True</property>
-+ <property name="spacing">6</property>
-+ <child>
-+ <widget class="GtkLabel" id="label13">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes"> </property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkCheckButton" id="trayicon_toggle">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="label" translatable="yes">Show tray icon</property>
-+ <property name="response_id">0</property>
-+ <property name="draw_indicator">True</property>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="fill">False</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ <child>
-+ <widget class="GtkLabel" id="label2">
-+ <property name="visible">True</property>
-+ <property name="label" translatable="yes">Applet</property>
-+ </widget>
-+ <packing>
-+ <property name="type">tab</property>
-+ <property name="position">1</property>
-+ <property name="tab_fill">False</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ <child internal-child="action_area">
-+ <widget class="GtkHButtonBox" id="dialog-action_area1">
-+ <property name="visible">True</property>
-+ <property name="layout_style">GTK_BUTTONBOX_END</property>
-+ <child>
-+ <widget class="GtkButton" id="button2">
-+ <property name="can_focus">True</property>
-+ <property name="receives_default">True</property>
-+ <property name="label" translatable="yes">gtk-help</property>
-+ <property name="use_stock">True</property>
-+ <property name="response_id">-11</property>
-+ </widget>
-+ </child>
-+ <child>
-+ <widget class="GtkButton" id="button1">
-+ <property name="visible">True</property>
-+ <property name="can_focus">True</property>
-+ <property name="receives_default">True</property>
-+ <property name="label" translatable="yes">gtk-close</property>
-+ <property name="use_stock">True</property>
-+ <property name="response_id">0</property>
-+ </widget>
-+ <packing>
-+ <property name="position">1</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ <packing>
-+ <property name="expand">False</property>
-+ <property name="pack_type">GTK_PACK_END</property>
-+ </packing>
-+ </child>
-+ </widget>
-+ </child>
-+ </widget>
-+</glade-interface>
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 1c74c84..4c16102 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -33,6 +33,8 @@ krb5_auth_dialog_SOURCES = \
- krb5-auth-pwdialog.h \
- krb5-auth-gconf.c \
- krb5-auth-gconf.h \
-+ krb5-auth-gconf-tools.c \
-+ krb5-auth-gconf-tools.h \
- krb5-auth-dbus.c \
- krb5-auth-dbus.h \
- dummy-strings.c
-diff --git a/src/krb5-auth-applet.c b/src/krb5-auth-applet.c
-index 34524df..daaef2e 100644
---- a/src/krb5-auth-applet.c
-+++ b/src/krb5-auth-applet.c
-@@ -43,6 +43,9 @@ enum
- KA_PROP_PK_USERID,
- KA_PROP_TRAYICON,
- KA_PROP_PW_PROMPT_MINS,
-+ KA_PROP_TGT_FORWARDABLE,
-+ KA_PROP_TGT_PROXIABLE,
-+ KA_PROP_TGT_RENEWABLE,
- };
-
- struct _KaApplet {
-@@ -73,6 +76,9 @@ struct _KaAppletPrivate
- char* principal; /* the principal to request */
- gboolean renewable; /* credentials renewable? */
- char* pk_userid; /* "userid" for pkint */
-+ gboolean tgt_forwardable; /* request a forwardable ticket */
-+ gboolean tgt_renewable; /* request a renewable ticket */
-+ gboolean tgt_proxiable; /* request a proxiable ticket */
- };
-
- static void
-@@ -106,6 +112,21 @@ ka_applet_set_property (GObject *object,
- KA_DEBUG ("%s: %d", pspec->name, self->priv->pw_prompt_secs/60);
- break;
-
-+ case KA_PROP_TGT_FORWARDABLE:
-+ self->priv->tgt_forwardable = g_value_get_boolean (value);
-+ KA_DEBUG ("%s: %s", pspec->name, self->priv->tgt_forwardable ? "True" : "False");
-+ break;
-+
-+ case KA_PROP_TGT_PROXIABLE:
-+ self->priv->tgt_proxiable = g_value_get_boolean (value);
-+ KA_DEBUG ("%s: %s", pspec->name, self->priv->tgt_proxiable ? "True" : "False");
-+ break;
-+
-+ case KA_PROP_TGT_RENEWABLE:
-+ self->priv->tgt_renewable = g_value_get_boolean (value);
-+ KA_DEBUG ("%s: %s", pspec->name, self->priv->tgt_renewable ? "True" : "False");
-+ break;
-+
- default:
- /* We don't have any other property... */
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-@@ -139,6 +160,18 @@ ka_applet_get_property (GObject *object,
- g_value_set_uint (value, self->priv->pw_prompt_secs / 60);
- break;
-
-+ case KA_PROP_TGT_FORWARDABLE:
-+ g_value_set_boolean (value, self->priv->tgt_forwardable);
-+ break;
-+
-+ case KA_PROP_TGT_PROXIABLE:
-+ g_value_set_boolean (value, self->priv->tgt_proxiable);
-+ break;
-+
-+ case KA_PROP_TGT_RENEWABLE:
-+ g_value_set_boolean (value, self->priv->tgt_renewable);
-+ break;
-+
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
-@@ -203,7 +236,7 @@ ka_applet_class_init(KaAppletClass *klass)
-
- pspec = g_param_spec_string ("principal",
- "Principal",
-- "Get/Set Kerberos Principal",
-+ "Get/Set Kerberos principal",
- "",
- G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
- g_object_class_install_property (object_class,
-@@ -211,7 +244,7 @@ ka_applet_class_init(KaAppletClass *klass)
- pspec);
-
- pspec = g_param_spec_string ("pk-userid",
-- "PKinit Identifier",
-+ "PKinit identifier",
- "Get/Set Pkinit identifier",
- "",
- G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
-@@ -229,13 +262,40 @@ ka_applet_class_init(KaAppletClass *klass)
- pspec);
-
- pspec = g_param_spec_uint ("pw-prompt-mins",
-- "Password Prompting Interval",
-- "Password Prompting Interval in Minutes",
-+ "Password prompting interval",
-+ "Password prompting interval in minutes",
- 0, G_MAXUINT, MINUTES_BEFORE_PROMPTING,
- G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
- g_object_class_install_property (object_class,
- KA_PROP_PW_PROMPT_MINS,
- pspec);
-+
-+ pspec = g_param_spec_boolean("tgt-forwardable",
-+ "Forwardable ticket",
-+ "wether to request forwardable tickets",
-+ FALSE,
-+ G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
-+ g_object_class_install_property (object_class,
-+ KA_PROP_TGT_FORWARDABLE,
-+ pspec);
-+
-+ pspec = g_param_spec_boolean("tgt-proxiable",
-+ "Proxiable ticket",
-+ "wether to request proxiable tickets",
-+ FALSE,
-+ G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
-+ g_object_class_install_property (object_class,
-+ KA_PROP_TGT_PROXIABLE,
-+ pspec);
-+
-+ pspec = g_param_spec_boolean("tgt-renewable",
-+ "Renewable ticket",
-+ "wether to request renewable tickets",
-+ FALSE,
-+ G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
-+ g_object_class_install_property (object_class,
-+ KA_PROP_TGT_RENEWABLE,
-+ pspec);
- }
-
-
-@@ -372,6 +432,13 @@ ka_applet_menu_add_separator_item (GtkWidget* menu)
- gtk_widget_show (menu_item);
- }
-
-+static void
-+ka_applet_cb_preferences (GtkWidget* menuitem G_GNUC_UNUSED,
-+ gpointer user_data G_GNUC_UNUSED)
-+{
-+ g_spawn_command_line_async ("krb5-auth-dialog-preferences", NULL);
-+}
-+
-
- /* Free all resources and quit */
- static void
-@@ -421,6 +488,14 @@ ka_applet_create_context_menu (KaApplet* applet)
-
- ka_applet_menu_add_separator_item (menu);
-
-+ /* Preferences */
-+ menu_item = gtk_image_menu_item_new_with_mnemonic (_("_Preferences"));
-+ g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (ka_applet_cb_preferences), applet);
-+ image = gtk_image_new_from_stock (GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU);
-+ gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), image);
-+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
-+
-+
- /* About item */
- menu_item = gtk_image_menu_item_new_with_mnemonic (_("_About"));
- g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (ka_applet_cb_about_dialog), applet);
-diff --git a/src/krb5-auth-dialog.c b/src/krb5-auth-dialog.c
-index be6c29f..6b48d2b 100644
---- a/src/krb5-auth-dialog.c
-+++ b/src/krb5-auth-dialog.c
-@@ -378,9 +378,40 @@ out:
- }
-
-
-+/*
-+ * set ticket options by looking at krb5.conf and gconf
-+ */
-+static void
-+ka_set_ticket_options(KaApplet* applet,
-+ krb5_get_init_creds_opt *out)
-+{
-+ gboolean flag;
-+
-+#ifdef HAVE_KRB5_GET_INIT_CREDS_OPT_SET_DEFAULT_FLAGS
-+ krb5_get_init_creds_opt_set_default_flags(kcontext, PACKAGE,
-+ krb5_principal_get_realm(kcontext, kprincipal), out);
-+#endif
-+ g_object_get(applet, "tgt-forwardable", &flag, NULL);
-+ if (flag)
-+ krb5_get_init_creds_opt_set_forwardable(out, flag);
-+ g_object_get(applet, "tgt-proxiable", &flag, NULL);
-+ if (flag)
-+ krb5_get_init_creds_opt_set_proxiable(out, flag);
-+ g_object_get(applet, "tgt-renewable", &flag, NULL);
-+ if (flag) {
-+ krb5_deltat r = 3600*24*30; /* 1 month */
-+ krb5_get_init_creds_opt_set_renew_life (out, r);
-+ }
-+}
-+
-+
-+/*
-+ * set ticket options
-+ * by looking at krb5.conf, the passed in creds and gconf
-+ */
- static void
- set_options_from_creds(const KaApplet* applet,
-- krb5_context context G_GNUC_UNUSED,
-+ krb5_context context,
- krb5_creds *in,
- krb5_get_init_creds_opt *out)
- {
-@@ -388,8 +419,8 @@ set_options_from_creds(const KaApplet* applet,
- int flag;
-
- #ifdef HAVE_KRB5_GET_INIT_CREDS_OPT_SET_DEFAULT_FLAGS
-- krb5_get_init_creds_opt_set_default_flags(kcontext, PACKAGE,
-- krb5_principal_get_realm(kcontext, kprincipal), out);
-+ krb5_get_init_creds_opt_set_default_flags(context, PACKAGE,
-+ krb5_principal_get_realm(context, kprincipal), out);
- #endif
-
- flag = get_cred_forwardable(in) != 0;
-@@ -426,7 +457,7 @@ ka_auth_pkinit(KaApplet* applet, krb5_creds* creds, const char* pk_userid)
- retval = krb5_get_init_creds_opt_alloc (kcontext, &opts);
- if (retval)
- goto out;
-- set_options_from_creds (applet, kcontext, creds, opts);
-+ ka_set_ticket_options (applet, opts);
-
- retval = krb5_get_init_creds_opt_set_pkinit(kcontext, opts,
- kprincipal,
-@@ -461,7 +492,7 @@ ka_auth_password(KaApplet* applet, krb5_creds* creds)
- retval = krb5_get_init_creds_opt_alloc (kcontext, &opts);
- if (retval)
- goto out;
-- set_options_from_creds (applet, kcontext, creds, opts);
-+ ka_set_ticket_options (applet, opts);
- retval = krb5_get_init_creds_password(kcontext, creds, kprincipal,
- NULL, auth_dialog_prompter, applet,
- 0, NULL, opts);
-@@ -477,9 +508,7 @@ ka_parse_name(KaApplet* applet, krb5_context krbcontext, krb5_principal* kprinc)
- krb5_error_code ret;
- gchar *principal = NULL;
-
-- g_object_get(applet, "principal", &principal,
-- NULL);
--
-+ g_object_get(applet, "principal", &principal, NULL);
- ret = krb5_parse_name(krbcontext, principal,
- kprinc);
-
-@@ -773,8 +802,7 @@ ka_check_credentials (KaApplet *applet, const char* newprincipal)
- int retval;
- char* principal;
-
-- g_object_get(applet, "principal", &principal,
-- NULL);
-+ g_object_get(applet, "principal", &principal, NULL);
-
- if (strlen(newprincipal)) {
- krb5_principal knewprinc;
-@@ -817,7 +845,6 @@ gboolean
- ka_grab_credentials (KaApplet* applet)
- {
- int retval;
-- gboolean retry;
- int success = FALSE;
- KaPwDialog *pwdialog = ka_applet_get_pwdialog(applet);
-
-diff --git a/src/krb5-auth-dialog.schemas.in b/src/krb5-auth-dialog.schemas.in
-index 2a3a707..13b05b2 100644
---- a/src/krb5-auth-dialog.schemas.in
-+++ b/src/krb5-auth-dialog.schemas.in
-@@ -51,5 +51,44 @@
- <long>Start prompting/displaying notifications that many minutes before expiry</long>
- </locale>
- </schema>
-+
-+ <schema>
-+ <key>/schemas/apps/::PACKAGE::/forwardable</key>
-+ <applyto>/apps/::PACKAGE::/forwardable</applyto>
-+ <owner>::PACKAGE::</owner>
-+ <type>bool</type>
-+ <default>0</default>
-+
-+ <locale name="C">
-+ <short>Forwardable ticket</short>
-+ <long>Requested tickets should be forwardable</long>
-+ </locale>
-+ </schema>
-+
-+ <schema>
-+ <key>/schemas/apps/::PACKAGE::/renewable</key>
-+ <applyto>/apps/::PACKAGE::/renewable</applyto>
-+ <owner>::PACKAGE::</owner>
-+ <type>bool</type>
-+ <default>0</default>
-+
-+ <locale name="C">
-+ <short>Renewable ticket</short>
-+ <long>Requested tickets should be renewable</long>
-+ </locale>
-+ </schema>
-+
-+ <schema>
-+ <key>/schemas/apps/::PACKAGE::/proxiable</key>
-+ <applyto>/apps/::PACKAGE::/proxiable</applyto>
-+ <owner>::PACKAGE::</owner>
-+ <type>bool</type>
-+ <default>0</default>
-+
-+ <locale name="C">
-+ <short>Proxiable ticket</short>
-+ <long>Requested tickets should be proxiable</long>
-+ </locale>
-+ </schema>
- </schemalist>
- </gconfschemafile>
-diff --git a/src/krb5-auth-gconf-tools.c b/src/krb5-auth-gconf-tools.c
-new file mode 100644
-index 0000000..e6541c1
---- /dev/null
-+++ b/src/krb5-auth-gconf-tools.c
-@@ -0,0 +1,103 @@
-+/* Krb5 Auth Applet -- Acquire and release kerberos tickets
-+ *
-+ * (C) 2008,2009 Guido Guenther <agx@sigxcpu.org>
-+ *
-+ * 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.
-+ *
-+ */
-+#include "config.h"
-+
-+#include <gconf/gconf-client.h>
-+#include <krb5-auth-gconf-tools.h>
-+
-+gboolean
-+ka_gconf_get_string (GConfClient* client,
-+ const char* key,
-+ char** value)
-+{
-+ GError* error = NULL;
-+ gboolean success = FALSE;
-+ GConfValue* gc_value;
-+
-+ g_return_val_if_fail (key != NULL, FALSE);
-+ g_return_val_if_fail (*value == NULL, FALSE);
-+
-+ if ((gc_value = gconf_client_get (client, key, &error))) {
-+ if (gc_value->type == GCONF_VALUE_STRING) {
-+ *value = g_strdup (gconf_value_get_string (gc_value));
-+ success = TRUE;
-+ } else if (error) {
-+ g_print (error->message);
-+ g_error_free (error);
-+ }
-+ gconf_value_free (gc_value);
-+ }
-+ return success;
-+}
-+
-+
-+gboolean
-+ka_gconf_get_int (GConfClient* client,
-+ const char* key,
-+ int* value)
-+{
-+ GError* error = NULL;
-+ gboolean success = FALSE;
-+ GConfValue* gc_value;
-+
-+ g_return_val_if_fail (key != NULL, FALSE);
-+ g_return_val_if_fail (value != NULL, FALSE);
-+
-+ if ((gc_value = gconf_client_get (client, key, &error)))
-+ {
-+ if (gc_value->type == GCONF_VALUE_INT) {
-+ *value = gconf_value_get_int (gc_value);
-+ success = TRUE;
-+ } else if (error) {
-+ g_print (error->message);
-+ g_error_free (error);
-+ }
-+ gconf_value_free (gc_value);
-+ }
-+ return success;
-+}
-+
-+
-+gboolean
-+ka_gconf_get_bool (GConfClient* client,
-+ const char* key,
-+ gboolean* value)
-+{
-+ GError* error = NULL;
-+ gboolean success = FALSE;
-+ GConfValue* gc_value;
-+
-+ g_return_val_if_fail (key != NULL, FALSE);
-+ g_return_val_if_fail (value != NULL, FALSE);
-+
-+ if ((gc_value = gconf_client_get (client, key, &error)))
-+ {
-+ if (gc_value->type == GCONF_VALUE_BOOL) {
-+ *value = gconf_value_get_bool (gc_value);
-+ success = TRUE;
-+ } else if (error) {
-+ g_print (error->message);
-+ g_error_free (error);
-+ }
-+ gconf_value_free (gc_value);
-+ }
-+ return success;
-+}
-+
-diff --git a/src/krb5-auth-gconf-tools.h b/src/krb5-auth-gconf-tools.h
-new file mode 100644
-index 0000000..9786b2f
---- /dev/null
-+++ b/src/krb5-auth-gconf-tools.h
-@@ -0,0 +1,41 @@
-+/* Krb5 Auth Applet -- Acquire and release kerberos tickets
-+ *
-+ * (C) 2008,2009 Guido Guenther <agx@sigxcpu.org>
-+ *
-+ * 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.
-+ *
-+ */
-+
-+#ifndef KRB5_AUTH_GCONF_TOOLS_H
-+#define KRB5_AUTH_GCONF_TOOLS_H
-+
-+#include "config.h"
-+
-+#include <gconf/gconf-client.h>
-+
-+#define KA_GCONF_PATH "/apps/" PACKAGE
-+#define KA_GCONF_KEY_PRINCIPAL KA_GCONF_PATH "/principal"
-+#define KA_GCONF_KEY_PK_USERID KA_GCONF_PATH "/pk_userid"
-+#define KA_GCONF_KEY_PROMPT_MINS KA_GCONF_PATH "/prompt_minutes"
-+#define KA_GCONF_KEY_SHOW_TRAYICON KA_GCONF_PATH "/show_trayicon"
-+#define KA_GCONF_KEY_FORWARDABLE KA_GCONF_PATH "/forwardable"
-+#define KA_GCONF_KEY_RENEWABLE KA_GCONF_PATH "/renewable"
-+#define KA_GCONF_KEY_PROXIABLE KA_GCONF_PATH "/proxiable"
-+
-+gboolean ka_gconf_get_string (GConfClient* client, const char* key, char** value);
-+gboolean ka_gconf_get_int (GConfClient* client, const char* key, int* value);
-+gboolean ka_gconf_get_bool (GConfClient* client, const char* key, gboolean* value);
-+
-+#endif
-diff --git a/src/krb5-auth-gconf.c b/src/krb5-auth-gconf.c
-index 1481591..25eb555 100644
---- a/src/krb5-auth-gconf.c
-+++ b/src/krb5-auth-gconf.c
-@@ -22,94 +22,9 @@
- #include <gconf/gconf-client.h>
-
- #include "krb5-auth-applet.h"
-+#include "krb5-auth-gconf-tools.h"
- #include "krb5-auth-gconf.h"
-
--#define KA_GCONF_PATH "/apps/" PACKAGE
--#define KA_GCONF_KEY_PRINCIPAL KA_GCONF_PATH "/principal"
--#define KA_GCONF_KEY_PK_USERID KA_GCONF_PATH "/pk_userid"
--#define KA_GCONF_KEY_PROMPT_MINS KA_GCONF_PATH "/prompt_minutes"
--#define KA_GCONF_KEY_SHOW_TRAYICON KA_GCONF_PATH "/show_trayicon"
--
--static gboolean
--ka_gconf_get_string (GConfClient* client,
-- const char* key,
-- char** value)
--{
-- GError* error = NULL;
-- gboolean success = FALSE;
-- GConfValue* gc_value;
--
-- g_return_val_if_fail (key != NULL, FALSE);
-- g_return_val_if_fail (*value == NULL, FALSE);
--
-- if ((gc_value = gconf_client_get (client, key, &error))) {
-- if (gc_value->type == GCONF_VALUE_STRING) {
-- *value = g_strdup (gconf_value_get_string (gc_value));
-- success = TRUE;
-- } else if (error) {
-- g_print (error->message);
-- g_error_free (error);
-- }
-- gconf_value_free (gc_value);
-- }
-- return success;
--}
--
--
--static gboolean
--ka_gconf_get_int (GConfClient* client,
-- const char* key,
-- int* value)
--{
-- GError* error = NULL;
-- gboolean success = FALSE;
-- GConfValue* gc_value;
--
-- g_return_val_if_fail (key != NULL, FALSE);
-- g_return_val_if_fail (value != NULL, FALSE);
--
-- if ((gc_value = gconf_client_get (client, key, &error)))
-- {
-- if (gc_value->type == GCONF_VALUE_INT) {
-- *value = gconf_value_get_int (gc_value);
-- success = TRUE;
-- } else if (error) {
-- g_print (error->message);
-- g_error_free (error);
-- }
-- gconf_value_free (gc_value);
-- }
-- return success;
--}
--
--
--static gboolean
--ka_gconf_get_bool (GConfClient* client,
-- const char* key,
-- gboolean* value)
--{
-- GError* error = NULL;
-- gboolean success = FALSE;
-- GConfValue* gc_value;
--
-- g_return_val_if_fail (key != NULL, FALSE);
-- g_return_val_if_fail (value != NULL, FALSE);
--
-- if ((gc_value = gconf_client_get (client, key, &error)))
-- {
-- if (gc_value->type == GCONF_VALUE_BOOL) {
-- *value = gconf_value_get_bool (gc_value);
-- success = TRUE;
-- } else if (error) {
-- g_print (error->message);
-- g_error_free (error);
-- }
-- gconf_value_free (gc_value);
-- }
-- return success;
--}
--
--
- static gboolean
- ka_gconf_set_principal (GConfClient* client, KaApplet* applet)
- {
-@@ -164,6 +79,45 @@ ka_gconf_set_show_trayicon (GConfClient* client, KaApplet* applet)
- }
-
-
-+static gboolean
-+ka_gconf_set_tgt_forwardable (GConfClient* client, KaApplet* applet)
-+{
-+ gboolean forwardable = FALSE;
-+
-+ if(!ka_gconf_get_bool(client, KA_GCONF_KEY_FORWARDABLE, &forwardable)) {
-+ forwardable = TRUE;
-+ }
-+ g_object_set(applet, "tgt-forwardable", forwardable, NULL);
-+ return TRUE;
-+}
-+
-+
-+static gboolean
-+ka_gconf_set_tgt_renewable (GConfClient* client, KaApplet* applet)
-+{
-+ gboolean renewable = FALSE;
-+
-+ if(!ka_gconf_get_bool(client, KA_GCONF_KEY_RENEWABLE, &renewable)) {
-+ renewable = TRUE;
-+ }
-+ g_object_set(applet, "tgt-renewable", renewable, NULL);
-+ return TRUE;
-+}
-+
-+
-+static gboolean
-+ka_gconf_set_tgt_proxiable (GConfClient* client, KaApplet* applet)
-+{
-+ gboolean proxiable = FALSE;
-+
-+ if(!ka_gconf_get_bool(client, KA_GCONF_KEY_PROXIABLE, &proxiable)) {
-+ proxiable = TRUE;
-+ }
-+ g_object_set(applet, "tgt-proxiable", proxiable, NULL);
-+ return TRUE;
-+}
-+
-+
- static void
- ka_gconf_key_changed_callback (GConfClient* client,
- guint cnxn_id G_GNUC_UNUSED,
-@@ -186,6 +140,12 @@ ka_gconf_key_changed_callback (GConfClient* client,
- ka_gconf_set_show_trayicon (client, applet);
- } else if (g_strcmp0 (key, KA_GCONF_KEY_PK_USERID) == 0) {
- ka_gconf_set_pk_userid (client, applet);
-+ } else if (g_strcmp0 (key, KA_GCONF_KEY_FORWARDABLE) == 0) {
-+ ka_gconf_set_tgt_forwardable (client, applet);
-+ } else if (g_strcmp0 (key, KA_GCONF_KEY_RENEWABLE) == 0) {
-+ ka_gconf_set_tgt_renewable (client, applet);
-+ } else if (g_strcmp0 (key, KA_GCONF_KEY_PROXIABLE) == 0) {
-+ ka_gconf_set_tgt_proxiable (client, applet);
- } else
- g_warning("Received notification for unknown gconf key %s", key);
- return;
-@@ -216,6 +176,9 @@ ka_gconf_init (KaApplet* applet,
- ka_gconf_set_prompt_mins (client, applet);
- ka_gconf_set_show_trayicon (client, applet);
- ka_gconf_set_pk_userid(client, applet);
-+ ka_gconf_set_tgt_forwardable(client, applet);
-+ ka_gconf_set_tgt_renewable(client, applet);
-+ ka_gconf_set_tgt_proxiable(client, applet);
-
- success = TRUE;
- out:
---
diff --git a/debian/patches/series b/debian/patches/series
index 2036199..ecea154 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1 @@
0001-set-a-more-gnomeisch-invisible-char.patch
-0002-add-dbus-service-file.patch
-0003-add-preferences-dialog.patch
bgstack15