diff options
author | Guido Günther <agx@sigxcpu.org> | 2011-02-14 21:00:53 +0100 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2011-02-14 21:00:53 +0100 |
commit | c646d52761bf59f014b9c385d15309880cc5309c (patch) | |
tree | 7bb2fa05f721ca1d6263c9b33c3a8e1488d902fd | |
parent | New upstream version 0.17 (diff) | |
download | krb5-auth-dialog-c646d52761bf59f014b9c385d15309880cc5309c.tar.gz krb5-auth-dialog-c646d52761bf59f014b9c385d15309880cc5309c.tar.bz2 krb5-auth-dialog-c646d52761bf59f014b9c385d15309880cc5309c.zip |
New upstream version 2.91.6
62 files changed, 6755 insertions, 7632 deletions
@@ -1,5 +1,475 @@ # Generated by Makefile. Do not edit. +commit 1c8b99d5acc234896017d32087ff0204bf56d5ea +Author: Guido Günther <agx@sigxcpu.org> +Date: Mon Feb 14 08:35:35 2011 +0100 + + Bump version to 2.91.6 to follow the GNOME versioning + + and update NEWS file + + NEWS | 23 +++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 24 insertions(+), 1 deletions(-) + +commit 1374a17d8a5b6e65514a6eda9c86fed74ffa62cd +Author: Guido Günther <agx@sigxcpu.org> +Date: Mon Feb 14 18:54:58 2011 +0100 + + Use KA_NAME instead of PACKAGENAME + + for a translatable application name in the notification area + + src/ka-applet.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit d13c9fdb2723d32b9d2cef3c2b0ab58020050511 +Author: Guido Günther <agx@sigxcpu.org> +Date: Mon Feb 14 09:28:25 2011 +0100 + + No need for the tray_icon listener + + cc-panel/cc-ka-panel.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit 2f6eaf384d526ed39c3ae2ae819f45aeb4389cb1 +Author: Guido Günther <agx@sigxcpu.org> +Date: Mon Feb 14 08:32:11 2011 +0100 + + Switch build default to GTK+ 3.0 + + configure.ac | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +commit bf3647e817c249fa21ec89dd6698a0dd139565af +Author: Guido Günther <agx@sigxcpu.org> +Date: Sun Feb 13 20:03:52 2011 +0100 + + Rename "Network Authentication" to "Kerberos Authentication" + + since that's what it is. + + Debian Bug #593543 + + src/ka-applet-priv.h | 4 ++-- + src/krb5-auth-dialog.desktop.in | 2 +- + src/krb5-auth-dialog.xml | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +commit b9981fa9471800191714453bc5b5d3dbeb02efdd +Author: Guido Günther <agx@sigxcpu.org> +Date: Sun Feb 13 20:02:49 2011 +0100 + + Install desktop file in $(datadir)/applications + + so the shell can find it to display the correct icon. + + src/Makefile.am | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +commit 8adc15960af67e293f5b4cda332ac6d94eb07a98 +Author: Guido Günther <agx@sigxcpu.org> +Date: Sun Feb 13 19:52:22 2011 +0100 + + Add Icon to desktop file + + src/krb5-auth-dialog.desktop.in | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +commit a71381d6e26bb93cfe6edad284567b0bf5d68584 +Author: Guido Günther <agx@sigxcpu.org> +Date: Sun Feb 13 19:41:53 2011 +0100 + + Open gnome control center panel for preferences + + src/ka-applet.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit dc5a7e55dc5e6dd7ac17a00c430bc7fa9dd26ae5 +Author: Guido Günther <agx@sigxcpu.org> +Date: Sun Feb 13 17:53:20 2011 +0100 + + Add "list tickets" action to notifications + + and add the 'remove ccache' action to the "credentials refreshed" + notification. + + This is a temporary measure until we moved this over into the cc-panel. + + src/ka-applet.c | 60 ++++++++++++++++++++++++++++++++++++++++-------------- + 1 files changed, 44 insertions(+), 16 deletions(-) + +commit 5e30a6d5bc6b2b35aefe8f3f98ee2b5ec6b881b4 +Author: Guido Günther <agx@sigxcpu.org> +Date: Sat Feb 12 16:56:04 2011 +0100 + + Remove "show trayicon" property altogether + + The tray icon is now always enabled if the notification server doesn't + support persistence. + + cc-panel/cc-ka-panel.c | 59 ------------------------ + cc-panel/ka-panel.ui | 96 --------------------------------------- + src/ka-applet.c | 42 +----------------- + src/ka-gconf.c | 16 ------- + src/krb5-auth-dialog.schemas.in | 13 ----- + 5 files changed, 1 insertions(+), 225 deletions(-) + +commit b7aaa4b6f869fa2dfd1b78b25ab9448773c46333 +Author: Guido Günther <agx@sigxcpu.org> +Date: Sat Feb 12 16:39:50 2011 +0100 + + Disable tray icon if the notification server supports persistent notifications + + BZ: #633420 + + configure.ac | 3 +- + src/ka-applet.c | 195 +++++++++++++++++++++++++++++++++++++++---------------- + 2 files changed, 140 insertions(+), 58 deletions(-) + +commit 61e967ec63309dc3a1629f140c4f63c5186e3b8c +Author: Guido Günther <agx@sigxcpu.org> +Date: Sat Feb 12 15:40:16 2011 +0100 + + Remove has_separator property. + + It doesn't exist in GTK+ 3 + + src/krb5-auth-dialog.xml | 2 -- + 1 files changed, 0 insertions(+), 2 deletions(-) + +commit 1b921c629cb7a5a104afb577d3fd6f56d20b5932 +Author: Guido Günther <agx@sigxcpu.org> +Date: Fri Feb 11 17:06:52 2011 +0100 + + Require libnotify and drop old no tray-icon mode + + that simply pops up a dialog. Libnotify supports persistent + notifications for this now. + + configure.ac | 45 ++++++++++----------------------------------- + src/ka-applet.c | 16 ---------------- + src/ka-dialog.c | 32 +++++--------------------------- + 3 files changed, 15 insertions(+), 78 deletions(-) + +commit 68f52116adfe4b014cb8c4e2e146b377e71a5f3f +Author: Matej Urbančič <mateju@svn.gnome.org> +Date: Thu Jan 27 20:50:52 2011 +0100 + + Updated Slovenian translation + + po/sl.po | 175 +++++++++++++++++++++++++++++++------------------------------ + 1 files changed, 89 insertions(+), 86 deletions(-) + +commit 605184d1595ec6c2e6d2cb292850a896de6557ac +Author: Bruno Brouard <annoa.b@gmail.com> +Date: Wed Jan 26 22:02:33 2011 +0100 + + Updated French translation + + po/fr.po | 152 ++++++++++++++++++++++++++++++-------------------------------- + 1 files changed, 74 insertions(+), 78 deletions(-) + +commit f558698ee9ac819a9a7ce9c7fcb76cd48e97f0bf +Author: Daniel Mustieles <daniel.mustieles@gmail.com> +Date: Wed Jan 26 20:44:25 2011 +0100 + + Updated Spanish translation + + po/es.po | 159 +++++++++++++++++++++++++++++++------------------------------ + 1 files changed, 81 insertions(+), 78 deletions(-) + +commit 65571eaf1adb79151c9a6ecc1bd7caef42d9e3bf +Author: Guido Günther <agx@sigxcpu.org> +Date: Tue Jan 25 14:18:52 2011 +0100 + + Drop old preferences applet + + Makefile.am | 2 +- + configure.ac | 2 - + po/POTFILES.in | 3 - + preferences/.gitignore | 3 - + preferences/Makefile.am | 55 -- + preferences/ka-preferences.c | 843 -------------------- + preferences/krb5-auth-dialog-preferences.1.in | 22 - + .../krb5-auth-dialog-preferences.desktop.in | 13 - + preferences/krb5-auth-dialog-preferences.xml | 721 ----------------- + 9 files changed, 1 insertions(+), 1663 deletions(-) + +commit 0d489eac9ce9b7d7d4ef401e88afc5370c16fe39 +Author: Guido Günther <agx@sigxcpu.org> +Date: Tue Jan 25 14:25:01 2011 +0100 + + Add gnome-control-center panel + + .gitignore | 2 + + Makefile.am | 2 +- + cc-panel/.gitignore | 2 + + cc-panel/Makefile.am | 55 +++ + cc-panel/cc-ka-panel.c | 843 ++++++++++++++++++++++++++++++++++++ + cc-panel/cc-ka-panel.h | 45 ++ + cc-panel/gnome-ka-panel.desktop.in | 17 + + cc-panel/ka-module.c | 20 + + cc-panel/ka-panel.ui | 675 +++++++++++++++++++++++++++++ + configure.ac | 9 + + po/POTFILES.in | 3 + + 11 files changed, 1672 insertions(+), 1 deletions(-) + +commit d8680960e21a5aaa3b32b2b9a56223cc0f742d0c +Author: Guido Günther <agx@sigxcpu.org> +Date: Sat Dec 25 23:38:04 2010 +0100 + + Only update the expiry time if we succesfully renewed the ticket + + src/ka-dialog.c | 3 ++- + 1 files changed, 2 insertions(+), 1 deletions(-) + +commit 0e7067cf6ad3f02f17f8246e800f6e596d09f6ec +Author: Djavan Fagundes <djavan@comum.org> +Date: Mon Dec 20 11:59:22 2010 -0200 + + Added Brazilian Portuguese translation + + po/pt_BR.po | 1712 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 1712 insertions(+), 0 deletions(-) + +commit 7a0849edfc20b4c18e5e12945e0781e22a585c90 +Author: Djavan Fagundes <djavan@comum.org> +Date: Mon Dec 20 11:56:28 2010 -0200 + + Added pt_BR to LINGUAS + + po/LINGUAS | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit 019cdc6b54a5ab420927495676acb694c6055891 +Author: Guido Günther <agx@sigxcpu.org> +Date: Mon Dec 13 21:11:44 2010 +0100 + + Add missing prototype + + src/ka-applet-priv.h | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +commit c6406d4b0441e02f861a1d919529c760305a5c0c +Author: Guido Günther <agx@sigxcpu.org> +Date: Mon Dec 13 21:04:07 2010 +0100 + + Reindent + + src/ka-applet-priv.h | 35 ++++++++++++++++------------------- + 1 files changed, 16 insertions(+), 19 deletions(-) + +commit 75d4a8c6d7265835702931e5f645198db2e16b7e +Author: Guido Günther <agx@sigxcpu.org> +Date: Mon Dec 13 20:53:37 2010 +0100 + + Print the banner returned by Kerberos + + instead of our static message when acquiring a ticket. This makes + passwort expiration prompts visible. + + src/ka-applet.c | 19 ++++++++++++++++++- + src/ka-dialog.c | 3 +++ + 2 files changed, 21 insertions(+), 1 deletions(-) + +commit 266f97ec422bd743b2d2c56074c0e9f98be278b7 +Author: Andre Klapper <a9016009@gmx.de> +Date: Tue Nov 9 21:06:08 2010 +0100 + + Remove non-existing file to make intltool-update/gettext work + + po/POTFILES.in | 1 - + 1 files changed, 0 insertions(+), 1 deletions(-) + +commit 3dabce3c1cd248bfb8799c6a60cb3bda0bf97e06 +Author: Guido Günther <agx@sigxcpu.org> +Date: Mon Nov 1 17:35:31 2010 +0100 + + Check for notify_notification_new_with_status_icon + + to fix build with recent libnotify (>= 0.7). We keep the old code for + the GTK+2 build. + + configure.ac | 9 +++++++++ + src/ka-applet.c | 4 ++++ + 2 files changed, 13 insertions(+), 0 deletions(-) + +commit e81c6d7a0468a116f30ff6e5e3020aa401da2313 +Author: Guido Günther <agx@sigxcpu.org> +Date: Mon Nov 1 17:41:43 2010 +0100 + + Add typenames + + CodingStyle | 12 ++++++++++-- + 1 files changed, 10 insertions(+), 2 deletions(-) + +commit 34b14dc1d2e17051d0626a012d867f878cd7d8b1 +Author: Bruno Brouard <annoa.b@gmail.com> +Date: Thu Oct 28 21:24:41 2010 +0200 + + Updated French translation + + po/fr.po | 34 ++++++++++++++++++---------------- + 1 files changed, 18 insertions(+), 16 deletions(-) + +commit a59cc19e4c9a9d65bde7050f2c2d13430f97f922 +Author: Matej Urbančič <mateju@svn.gnome.org> +Date: Fri Oct 22 14:46:52 2010 +0200 + + Added sl for Slovenian translation + + help/Makefile.am | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +commit a3a493a93bf84ae8c39a325a70f5128c6ec1fa8c +Author: Matej Urbančič <mateju@svn.gnome.org> +Date: Fri Oct 22 14:46:38 2010 +0200 + + Added Slovenian translation + + help/sl/sl.po | 350 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 350 insertions(+), 0 deletions(-) + +commit f89596d6f3fc1061a8732643f59a0bf01284beb9 +Author: Maxim V. Dziumanenko <dziumanenko@gmail.com> +Date: Wed Oct 13 15:21:55 2010 +0300 + + Updated Ukrainian translation + + po/uk.po | 161 ++++++++++++++++++++++++++++++++++--------------------------- + 1 files changed, 90 insertions(+), 71 deletions(-) + +commit 93f214594009fef14339c8e97e1b2e2c7d5ca9df +Author: Andrej Žnidaršič <andrej.znidarsic@gmail.com> +Date: Sat Oct 9 19:51:46 2010 +0200 + + Updated Slovenian translation + + po/sl.po | 57 ++++++++++++++++++++++++++++++--------------------------- + 1 files changed, 30 insertions(+), 27 deletions(-) + +commit 6cb6617fd0c765835b9665739025a63f15eb2a57 +Author: Jorge González <jorgegonz@svn.gnome.org> +Date: Thu Oct 7 14:31:28 2010 +0200 + + Updated Spanish translation + + po/es.po | 38 ++++++++++++++++++++------------------ + 1 files changed, 20 insertions(+), 18 deletions(-) + +commit 58737bd969b6bff566bc8995f41796b15bb62227 +Author: Mario Blättermann <mariobl@gnome.org> +Date: Wed Oct 6 21:13:44 2010 +0200 + + [i18n] Updated German translation + + po/de.po | 36 +++++++++++++++++++----------------- + 1 files changed, 19 insertions(+), 17 deletions(-) + +commit 0da797ca572f411cab3b29bafdf4d4636e5adc32 +Author: Guido Günther <agx@sigxcpu.org> +Date: Tue Oct 5 17:03:06 2010 +0200 + + Drop URL hook + + not needed with GTK+ >= 2.18 + + src/ka-applet.c | 30 ------------------------------ + 1 files changed, 0 insertions(+), 30 deletions(-) + +commit cda21c8444b0f4e7096a0a5415faef9e19b43ee9 +Author: Guido Günther <agx@sigxcpu.org> +Date: Tue Oct 5 16:28:09 2010 +0200 + + Drop gtksecentry + + Use our own entry buffer using the secmem functions but derived from + GtkEntryBuffer instead. This fixes the build with GTK+ 3 and gets us the + unicode and input method handling for free. + + Makefile.am | 2 +- + configure.ac | 3 +- + gtksecentry/Makefile.am | 12 - + gtksecentry/gseal-gtk-compat.h | 61 - + gtksecentry/gtksecentry.c | 3364 ---------------------------------------- + gtksecentry/gtksecentry.h | 190 --- + src/Makefile.am | 5 +- + src/ka-dialog.c | 1 - + src/ka-entry-buffer.c | 229 +++ + src/ka-entry-buffer.h | 58 + + src/ka-pwdialog.c | 18 +- + src/ka-pwdialog.h | 2 +- + 12 files changed, 300 insertions(+), 3645 deletions(-) + +commit 78e3cbe853b988e6d3fb002a6d9102f39bb19d7f +Author: Guido Günther <agx@sigxcpu.org> +Date: Tue Oct 5 14:30:09 2010 +0200 + + Add "Get Ticket" button to pop notifications + + this makes us less dependant on the tray icon. + + src/ka-applet.c | 37 ++++++++++++++++++++++++++++++++----- + 1 files changed, 32 insertions(+), 5 deletions(-) + +commit 19427a839f90f2e30c0184c4ee90d1fe26c7017c +Author: Guido Günther <agx@sigxcpu.org> +Date: Tue Oct 5 13:11:57 2010 +0200 + + Fix translated strings + + src/ka-applet.c | 12 ++++-------- + 1 files changed, 4 insertions(+), 8 deletions(-) + +commit 459ef5f45d99d8b2a27a7618942920dbc29918b6 +Author: Guido Günther <agx@sigxcpu.org> +Date: Tue Oct 5 12:56:52 2010 +0200 + + Add indent expression + + CodingStyle | 16 ++++++++++++++-- + 1 files changed, 14 insertions(+), 2 deletions(-) + +commit 6da93e8ccce3ad5a020027854317115d89cb46ab +Author: Guido Günther <agx@sigxcpu.org> +Date: Tue Oct 5 12:52:35 2010 +0200 + + Reindent + + src/ka-applet.c | 1313 +++++++++++++++++++++++++++---------------------------- + 1 files changed, 654 insertions(+), 659 deletions(-) + +commit b780009127e58ced43eb49e6f8f6e00a114c59c3 +Author: Guido Günther <agx@sigxcpu.org> +Date: Thu Sep 30 10:01:49 2010 +0200 + + Add CodingStyle for new code + + CodingStyle | 13 +++++++++++++ + Makefile.am | 1 + + 2 files changed, 14 insertions(+), 0 deletions(-) + +commit 1807b5c43f84a2fde21c27353688dbb6cc235e0f +Author: Guido Günther <agx@sigxcpu.org> +Date: Thu Sep 30 09:30:23 2010 +0200 + + Use NMClient GObject + + instead of the deprecated libnm_glib_* functions + + src/ka-dialog.c | 82 +++++++++++++++++++++++++++---------------------------- + 1 files changed, 40 insertions(+), 42 deletions(-) + +commit 174d4d3582a6b36b94b7b282a805440b76a017e3 +Author: Mario Blättermann <mariobl@gnome.org> +Date: Wed Sep 22 21:48:14 2010 +0200 + + [i18n] Updated German doc translation + + help/de/de.po | 232 +++++++++++++++++++++++++++++++++++--------------------- + 1 files changed, 145 insertions(+), 87 deletions(-) + commit 7c9386dbac2fee761a09044158c8cdccd742310a Author: Guido Günther <agx@sigxcpu.org> Date: Sun Sep 12 13:59:10 2010 +0200 @@ -2052,11 +2522,11 @@ Date: Fri May 15 18:33:07 2009 +0200 update translatable strings ChangeLog | 7 + - po/de.po | 2786 ++++++++++------------------------------------- - po/krb5-auth-dialog.pot | 2729 ++++++++++------------------------------------ - po/nb.po | 2657 +++++++++++---------------------------------- - po/sv.po | 2769 ++++++++++------------------------------------ - 5 files changed, 2376 insertions(+), 8572 deletions(-) + po/de.po | 3344 ++++++++++++----------------------------------- + po/krb5-auth-dialog.pot | 3243 ++++++++++++---------------------------------- + po/nb.po | 3219 +++++++++++++-------------------------------- + po/sv.po | 3283 ++++++++++++---------------------------------- + 5 files changed, 3450 insertions(+), 9646 deletions(-) commit 0ed20a2f652ab45c57c9369b8dad08ae2edb3605 Author: Guido Günther <agx@sigxcpu.org> diff --git a/CodingStyle b/CodingStyle new file mode 100644 index 0000000..81fa5e1 --- /dev/null +++ b/CodingStyle @@ -0,0 +1,33 @@ +CodingStyle +----------- +- secmem/ keeps it's CodingStyle so we can merge easily with pinentry-gtk +- Public functions start with ka_ +- The object in instance methods is called self +- Indent in four space units, no tabs + + /* + * vim: set tabstop=4: + * vim: set shiftwidth=4: + * vim: set expandtab: + */ + +- The following indent expression is a good approximation: + indent --no-tabs \ + --indent-level4 \ + --space-after-procedure-calls \ + --space-after-for \ + --space-after-if \ + --space-after-while \ + --cuddle-else \ + --braces-on-if-line \ + --procnames-start-lines \ + --braces-on-struct-decl-line \ + --braces-after-func-def-line \ + --blank-lines-after-declarations \ + -Tgchar -Tgpointer -TG_MODULE_EXPORT \ + -TGParamSpec -TGValue -TGObject \ + -TGtkWidget -TGtkMenuItem \ + -TKaPlugin -TKaApplet -TKaAppletClass \ + -TKaPluginDummy -TKaPluginDummyClass \ + -TKaPluginPam -TKaPluginPamClass \ + -TKaPluginAfs -TKaPluginAfsClass diff --git a/Makefile.am b/Makefile.am index 6a9ff8b..2ca6c50 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,10 +1,11 @@ NULL = -SUBDIRS = secmem gtksecentry src po etpo icons preferences help examples plugins +SUBDIRS = secmem src po etpo icons help examples plugins cc-panel EXTRA_DIST = \ krb5-auth-dialog.spec \ MAINTAINERS \ + CodingStyle \ gnome-doc-utils.make \ $(NULL) diff --git a/Makefile.in b/Makefile.in index d4511ad..cd96018 100644 --- a/Makefile.in +++ b/Makefile.in @@ -126,6 +126,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -213,6 +215,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ @@ -290,10 +293,11 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = -SUBDIRS = secmem gtksecentry src po etpo icons preferences help examples plugins +SUBDIRS = secmem src po etpo icons help examples plugins cc-panel EXTRA_DIST = \ krb5-auth-dialog.spec \ MAINTAINERS \ + CodingStyle \ gnome-doc-utils.make \ $(NULL) @@ -1,3 +1,26 @@ +=============== +Version 2.91.6 +=============== +* Add "Get ticket" button to notifications +* Disable tray icon if the notification server supports persistent notificaions +* Move preferences to cc-panel +* Display account expiry prompts returned by the KDC +* Drop gtksecentry and use GtkEntryBuffer with secmem instead +* Use NMClient GObject instead of deprecated functions +* Install desktop file to /u/s/applications so GNOME shell can find the icons +* UI translations: + Andrej Žnidaršič (sl) + Bruno Brouard (fr) + Daniel Mustieles (es) + Djavan Fagundes (pt_BR) + Jorge González (es) + Mario Blättermann (de) + Matej Urbančič (sl) + Maxim V. Dziumanenko (uk) +* Doc translations: + Mario Blättermann (de) + Matej Urbančič (sl) + ============ Version 0.17 ============ @@ -346,7 +346,7 @@ msgstr "" dnl These rules are solely for the distribution goal. While doing this dnl we only have to keep exactly one list of the available catalogs - dnl in configure.in. + dnl in configure.ac. for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" @@ -475,7 +475,7 @@ AC_DEFINE_UNQUOTED($1, "$localedir", dnl dnl Now the definitions that aclocal will find dnl -ifdef(glib_configure_in,[],[ +ifdef(glib_configure_ac,[],[ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)]) AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)]) ])dnl @@ -8827,7 +8827,7 @@ $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. -_PKG_TEXT])dnl +_PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) @@ -8838,7 +8838,7 @@ path to pkg-config. _PKG_TEXT -To get pkg-config, see <http://pkg-config.freedesktop.org/>.])dnl +To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS diff --git a/cc-panel/Makefile.am b/cc-panel/Makefile.am new file mode 100644 index 0000000..d4d412c --- /dev/null +++ b/cc-panel/Makefile.am @@ -0,0 +1,55 @@ +NULL = + +ccpanelsdir = $(PANELS_DIR) +ccpanels_LTLIBRARIES = libka.la + +libka_la_SOURCES = \ + ka-module.c \ + cc-ka-panel.c \ + $(top_srcdir)/src/ka-gconf-tools.c \ + $(top_srcdir)/src/ka-gconf-tools.h \ + $(top_srcdir)/src/ka-tools.c \ + $(top_srcdir)/src/ka-tools.h \ + cc-ka-panel.h + +INCLUDES = \ + -I$(top_srcdir)/src \ + $(GTK_CFLAGS) \ + $(GCONF_CFLAGS) \ + $(CONTROL_CENTER_CFLAGS) \ + $(WARN_CFLAGS) \ + $(AM_CFLAGS) \ + -DKA_DATA_DIR=\""$(pkgdatadir)"\" \ + -DDATA_DIR=\""$(datadir)"\" \ + -DLOCALE_DIR=\""$(localedir)/"\" \ + $(NULL) + +libka_la_LIBADD = \ + $(GCONF_LIBS) \ + $(GTK_LIBS) \ + $(CONTROL_CENTER_LIBS) \ + $(NULL) + +AM_CPPFLAGS = \ + $(DISABLE_DEPRECATED) \ + $(NULL) + +libka_la_LDFLAGS = -export_dynamic -avoid-version -module -no-undefined -export-symbols-regex '^g_io_module_(load|unload)' + +desktopdir = $(datadir)/applications +desktop_in_files = gnome-ka-panel.desktop.in +desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) + +@INTLTOOL_DESKTOP_RULE@ + +pkgdatadir = $(datadir)/krb5-auth-dialog +pkgdata_DATA = \ + ka-panel.ui \ + $(NULL) + +CLEANFILES = $(desktop_DATA) + +EXTRA_DIST = \ + $(desktop_in_files) \ + $(pkgdata_DATA) \ + $(NULL) diff --git a/gtksecentry/Makefile.in b/cc-panel/Makefile.in index 56746df..e786c21 100644 --- a/gtksecentry/Makefile.in +++ b/cc-panel/Makefile.in @@ -15,8 +15,8 @@ @SET_MAKE@ + VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ @@ -34,7 +34,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -subdir = gtksecentry +subdir = cc-panel DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ @@ -46,27 +46,48 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = -LIBRARIES = $(noinst_LIBRARIES) -ARFLAGS = cru -AM_V_AR = $(am__v_AR_$(V)) -am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) -am__v_AR_0 = @echo " AR " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -libgtksecentry_a_AR = $(AR) $(ARFLAGS) -libgtksecentry_a_LIBADD = -am_libgtksecentry_a_OBJECTS = gtksecentry.$(OBJEXT) -libgtksecentry_a_OBJECTS = $(am_libgtksecentry_a_OBJECTS) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(ccpanelsdir)" "$(DESTDIR)$(desktopdir)" \ + "$(DESTDIR)$(pkgdatadir)" +LTLIBRARIES = $(ccpanels_LTLIBRARIES) +am__DEPENDENCIES_1 = +libka_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am_libka_la_OBJECTS = ka-module.lo cc-ka-panel.lo ka-gconf-tools.lo \ + ka-tools.lo +libka_la_OBJECTS = $(am_libka_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +libka_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libka_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) -am__v_lt_0 = --silent LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ @@ -74,6 +95,9 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ @@ -84,11 +108,13 @@ am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libgtksecentry_a_SOURCES) -DIST_SOURCES = $(libgtksecentry_a_SOURCES) +SOURCES = $(libka_la_SOURCES) +DIST_SOURCES = $(libka_la_SOURCES) +DATA = $(desktop_DATA) $(pkgdata_DATA) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +pkgdatadir = $(datadir)/krb5-auth-dialog ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ @@ -104,6 +130,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -191,6 +219,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ @@ -268,14 +297,52 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = -AM_CPPFLAGS = $(GTK_CFLAGS) \ - -I$(top_srcdir)/secmem -I$(top_srcdir)/gtksecentry - -noinst_LIBRARIES = libgtksecentry.a -libgtksecentry_a_SOURCES = \ - gtksecentry.c \ - gtksecentry.h \ - gseal-gtk-compat.h +ccpanelsdir = $(PANELS_DIR) +ccpanels_LTLIBRARIES = libka.la +libka_la_SOURCES = \ + ka-module.c \ + cc-ka-panel.c \ + $(top_srcdir)/src/ka-gconf-tools.c \ + $(top_srcdir)/src/ka-gconf-tools.h \ + $(top_srcdir)/src/ka-tools.c \ + $(top_srcdir)/src/ka-tools.h \ + cc-ka-panel.h + +INCLUDES = \ + -I$(top_srcdir)/src \ + $(GTK_CFLAGS) \ + $(GCONF_CFLAGS) \ + $(CONTROL_CENTER_CFLAGS) \ + $(WARN_CFLAGS) \ + $(AM_CFLAGS) \ + -DKA_DATA_DIR=\""$(pkgdatadir)"\" \ + -DDATA_DIR=\""$(datadir)"\" \ + -DLOCALE_DIR=\""$(localedir)/"\" \ + $(NULL) + +libka_la_LIBADD = \ + $(GCONF_LIBS) \ + $(GTK_LIBS) \ + $(CONTROL_CENTER_LIBS) \ + $(NULL) + +AM_CPPFLAGS = \ + $(DISABLE_DEPRECATED) \ + $(NULL) + +libka_la_LDFLAGS = -export_dynamic -avoid-version -module -no-undefined -export-symbols-regex '^g_io_module_(load|unload)' +desktopdir = $(datadir)/applications +desktop_in_files = gnome-ka-panel.desktop.in +desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) +pkgdata_DATA = \ + ka-panel.ui \ + $(NULL) + +CLEANFILES = $(desktop_DATA) +EXTRA_DIST = \ + $(desktop_in_files) \ + $(pkgdata_DATA) \ + $(NULL) all: all-am @@ -290,9 +357,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gtksecentry/Makefile'; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cc-panel/Makefile'; \ $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu gtksecentry/Makefile + $(AUTOMAKE) --gnu cc-panel/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -311,13 +378,39 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): +install-ccpanelsLTLIBRARIES: $(ccpanels_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(ccpanelsdir)" || $(MKDIR_P) "$(DESTDIR)$(ccpanelsdir)" + @list='$(ccpanels_LTLIBRARIES)'; test -n "$(ccpanelsdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(ccpanelsdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(ccpanelsdir)"; \ + } + +uninstall-ccpanelsLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(ccpanels_LTLIBRARIES)'; test -n "$(ccpanelsdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(ccpanelsdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(ccpanelsdir)/$$f"; \ + done -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -libgtksecentry.a: $(libgtksecentry_a_OBJECTS) $(libgtksecentry_a_DEPENDENCIES) - $(AM_V_at)-rm -f libgtksecentry.a - $(AM_V_AR)$(libgtksecentry_a_AR) libgtksecentry.a $(libgtksecentry_a_OBJECTS) $(libgtksecentry_a_LIBADD) - $(AM_V_at)$(RANLIB) libgtksecentry.a +clean-ccpanelsLTLIBRARIES: + -test -z "$(ccpanels_LTLIBRARIES)" || rm -f $(ccpanels_LTLIBRARIES) + @list='$(ccpanels_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libka.la: $(libka_la_OBJECTS) $(libka_la_DEPENDENCIES) + $(AM_V_CCLD)$(libka_la_LINK) -rpath $(ccpanelsdir) $(libka_la_OBJECTS) $(libka_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -325,7 +418,10 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtksecentry.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cc-ka-panel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ka-gconf-tools.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ka-module.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ka-tools.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @@ -351,11 +447,67 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +ka-gconf-tools.lo: $(top_srcdir)/src/ka-gconf-tools.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ka-gconf-tools.lo -MD -MP -MF $(DEPDIR)/ka-gconf-tools.Tpo -c -o ka-gconf-tools.lo `test -f '$(top_srcdir)/src/ka-gconf-tools.c' || echo '$(srcdir)/'`$(top_srcdir)/src/ka-gconf-tools.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ka-gconf-tools.Tpo $(DEPDIR)/ka-gconf-tools.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(top_srcdir)/src/ka-gconf-tools.c' object='ka-gconf-tools.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ka-gconf-tools.lo `test -f '$(top_srcdir)/src/ka-gconf-tools.c' || echo '$(srcdir)/'`$(top_srcdir)/src/ka-gconf-tools.c + +ka-tools.lo: $(top_srcdir)/src/ka-tools.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ka-tools.lo -MD -MP -MF $(DEPDIR)/ka-tools.Tpo -c -o ka-tools.lo `test -f '$(top_srcdir)/src/ka-tools.c' || echo '$(srcdir)/'`$(top_srcdir)/src/ka-tools.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ka-tools.Tpo $(DEPDIR)/ka-tools.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(top_srcdir)/src/ka-tools.c' object='ka-tools.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ka-tools.lo `test -f '$(top_srcdir)/src/ka-tools.c' || echo '$(srcdir)/'`$(top_srcdir)/src/ka-tools.c + mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs +install-desktopDATA: $(desktop_DATA) + @$(NORMAL_INSTALL) + test -z "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)" + @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \ + done + +uninstall-desktopDATA: + @$(NORMAL_UNINSTALL) + @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(desktopdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(desktopdir)" && rm -f $$files +install-pkgdataDATA: $(pkgdata_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" + @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ + done + +uninstall-pkgdataDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -441,8 +593,11 @@ distdir: $(DISTFILES) done check-am: all-am check: check-am -all-am: Makefile $(LIBRARIES) +all-am: Makefile $(LTLIBRARIES) $(DATA) installdirs: + for dir in "$(DESTDIR)$(ccpanelsdir)" "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(pkgdatadir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done install: install-am install-exec: install-exec-am install-data: install-data-am @@ -460,6 +615,7 @@ install-strip: mostlyclean-generic: clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) @@ -470,7 +626,7 @@ maintainer-clean-generic: @echo "it deletes files that may require special tools to rebuild." clean: clean-am -clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ +clean-am: clean-ccpanelsLTLIBRARIES clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am @@ -491,7 +647,8 @@ info: info-am info-am: -install-data-am: +install-data-am: install-ccpanelsLTLIBRARIES install-desktopDATA \ + install-pkgdataDATA install-dvi: install-dvi-am @@ -537,23 +694,29 @@ ps: ps-am ps-am: -uninstall-am: +uninstall-am: uninstall-ccpanelsLTLIBRARIES uninstall-desktopDATA \ + uninstall-pkgdataDATA .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - +.PHONY: CTAGS GTAGS all all-am check check-am clean \ + clean-ccpanelsLTLIBRARIES clean-generic clean-libtool ctags \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am \ + install-ccpanelsLTLIBRARIES install-data install-data-am \ + install-desktopDATA install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-pkgdataDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-ccpanelsLTLIBRARIES \ + uninstall-desktopDATA uninstall-pkgdataDATA + + +@INTLTOOL_DESKTOP_RULE@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/cc-panel/cc-ka-panel.c b/cc-panel/cc-ka-panel.c new file mode 100644 index 0000000..c63e4e3 --- /dev/null +++ b/cc-panel/cc-ka-panel.c @@ -0,0 +1,784 @@ +/* + * Copyright (C) 2011 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, 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 "cc-ka-panel.h" + +#include "ka-gconf-tools.h" +#include "ka-tools.h" + +#include <glib/gi18n.h> + +G_DEFINE_DYNAMIC_TYPE (CcKaPanel, cc_ka_panel, CC_TYPE_PANEL) + +#define GET_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), CC_TYPE_KA_PANEL, CcKaPanelPrivate)) + +#define WID(b, w) (GtkWidget *) gtk_builder_get_object (b, w) + +#define PKINIT_SMARTCARD "PKCS11:" SC_PKCS11 +#define PKINIT_FILE "FILE:" + +#define N_LISTENERS 7 + +typedef struct _CcKaPanelPrivate CcKaPanelPrivate; + +struct _CcKaPanelPrivate { + GtkBuilder *builder; + + GConfClient *client; + + GtkWidget *notebook; + GtkWidget *principal_entry; + GtkWidget *pkuserid_entry; + GtkWidget *pkuserid_button; + GtkWidget *smartcard_toggle; + GtkWidget *pkanchors_entry; + GtkWidget *pkanchors_button; + GtkWidget *forwardable_toggle; + GtkWidget *proxiable_toggle; + GtkWidget *renewable_toggle; + GtkWidget *prompt_mins_entry; + + guint listeners [N_LISTENERS]; + int n_listeners; +}; + +static void +cc_ka_panel_principal_notify (GConfClient *client G_GNUC_UNUSED, + guint cnx_id G_GNUC_UNUSED, + GConfEntry *entry, + CcKaPanelPrivate *priv) +{ + 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 (priv->principal_entry), ""); + else { + const char *old_principal; + + old_principal = gtk_entry_get_text (GTK_ENTRY (priv->principal_entry)); + if (!old_principal || (old_principal && strcmp (old_principal, principal))) + gtk_entry_set_text (GTK_ENTRY (priv->principal_entry), principal); + } +} + +static void +cc_ka_panel_principal_changed (GtkEntry *entry, + CcKaPanelPrivate *priv) +{ + const char *principal; + + principal = gtk_entry_get_text (entry); + + if (!principal || !strlen(principal)) + gconf_client_unset (priv->client, KA_GCONF_KEY_PRINCIPAL, NULL); + else + gconf_client_set_string (priv->client, KA_GCONF_KEY_PRINCIPAL, principal, NULL); +} + + +static void +cc_ka_panel_setup_principal_entry (CcKaPanelPrivate *priv) +{ + char *principal = NULL; + + priv->principal_entry = WID (priv->builder, "principal_entry"); + g_assert (priv->principal_entry != NULL); + + if (!ka_gconf_get_string (priv->client, KA_GCONF_KEY_PRINCIPAL, &principal)) + g_warning ("Getting principal failed"); + + if (principal && strlen(principal)) + gtk_entry_set_text (GTK_ENTRY (priv->principal_entry), principal); + if (principal) + g_free (principal); + + g_signal_connect (priv->principal_entry, "changed", + G_CALLBACK (cc_ka_panel_principal_changed), priv); + + if (!gconf_client_key_is_writable (priv->client, KA_GCONF_KEY_PRINCIPAL, NULL)) { + gtk_widget_set_sensitive (priv->principal_entry, FALSE); + } + + priv->listeners [priv->n_listeners] = + gconf_client_notify_add (priv->client, + KA_GCONF_KEY_PRINCIPAL, + (GConfClientNotifyFunc) cc_ka_panel_principal_notify, + priv, NULL, NULL); + priv->n_listeners++; +} + + +static void +cc_ka_panel_pkuserid_notify (GConfClient *client G_GNUC_UNUSED, + guint cnx_id G_GNUC_UNUSED, + GConfEntry *entry, + CcKaPanelPrivate *priv) +{ + 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 (priv->pkuserid_entry), ""); + else { + const char *old_pkuserid; + + old_pkuserid = gtk_entry_get_text (GTK_ENTRY (priv->pkuserid_entry)); + if (!old_pkuserid || (old_pkuserid && strcmp (old_pkuserid, pkuserid))) + gtk_entry_set_text (GTK_ENTRY (priv->pkuserid_entry), pkuserid); + } +} + + +static void +cc_ka_panel_pkuserid_changed (GtkEntry *entry, + CcKaPanelPrivate *priv) +{ + const char *pkuserid; + + pkuserid = gtk_entry_get_text (entry); + + if (!pkuserid || !strlen(pkuserid)) + gconf_client_unset (priv->client, KA_GCONF_KEY_PK_USERID, NULL); + else + gconf_client_set_string (priv->client, KA_GCONF_KEY_PK_USERID, pkuserid, NULL); +} + + +static void +cc_ka_panel_setup_pkuserid_entry (CcKaPanelPrivate *priv) +{ + char *pkuserid = NULL; + + priv->pkuserid_entry = WID(priv->builder, "pkuserid_entry"); + g_assert (priv->pkuserid_entry != NULL); + + if (!ka_gconf_get_string (priv->client, KA_GCONF_KEY_PK_USERID, &pkuserid)) + g_warning ("Getting pkuserid failed"); + + if (pkuserid && strlen(pkuserid)) + gtk_entry_set_text (GTK_ENTRY (priv->pkuserid_entry), pkuserid); + if (pkuserid) + g_free (pkuserid); + + g_signal_connect (priv->pkuserid_entry, "changed", + G_CALLBACK (cc_ka_panel_pkuserid_changed), priv); + if (!gconf_client_key_is_writable (priv->client, KA_GCONF_KEY_PK_USERID, NULL)) { + gtk_widget_set_sensitive (priv->pkuserid_entry, FALSE); + } + + priv->listeners [priv->n_listeners] = + gconf_client_notify_add (priv->client, + KA_GCONF_KEY_PK_USERID, + (GConfClientNotifyFunc) cc_ka_panel_pkuserid_notify, + priv, NULL, NULL); + priv->n_listeners++; +} + + +static void +ka_preferences_pkanchors_notify (GConfClient *client G_GNUC_UNUSED, + guint cnx_id G_GNUC_UNUSED, + GConfEntry *entry, + CcKaPanelPrivate *priv) +{ + const char *pkanchors; + + if (!entry->value || entry->value->type != GCONF_VALUE_STRING) + return; + + pkanchors = gconf_value_get_string (entry->value); + + if (!pkanchors || !strlen(pkanchors)) + gtk_entry_set_text (GTK_ENTRY (priv->pkanchors_entry), ""); + else { + const char *old_pkanchors; + + old_pkanchors = gtk_entry_get_text (GTK_ENTRY (priv->pkanchors_entry)); + if (!old_pkanchors || (old_pkanchors && strcmp (old_pkanchors, pkanchors))) + gtk_entry_set_text (GTK_ENTRY (priv->pkanchors_entry), pkanchors); + } +} + + +static void +cc_ka_panel_pkanchors_changed (GtkEntry *entry, + CcKaPanelPrivate *priv) +{ + const char *pkanchors; + + pkanchors = gtk_entry_get_text (entry); + + if (!pkanchors || !strlen(pkanchors)) + gconf_client_unset (priv->client, KA_GCONF_KEY_PK_ANCHORS, NULL); + else + gconf_client_set_string (priv->client, KA_GCONF_KEY_PK_ANCHORS, + pkanchors, NULL); +} + + +static void +cc_ka_panel_setup_pkanchors_entry (CcKaPanelPrivate *priv) +{ + char *pkanchors = NULL; + + priv->pkanchors_entry = WID(priv->builder, "pkanchors_entry"); + g_assert (priv->pkanchors_entry != NULL); + + if (!ka_gconf_get_string (priv->client, KA_GCONF_KEY_PK_ANCHORS, &pkanchors)) + g_warning ("Getting pkanchors failed"); + + if (pkanchors && strlen(pkanchors)) + gtk_entry_set_text (GTK_ENTRY (priv->pkanchors_entry), pkanchors); + if (pkanchors) + g_free (pkanchors); + + g_signal_connect (priv->pkanchors_entry, "changed", + G_CALLBACK (cc_ka_panel_pkanchors_changed), priv); + if (!gconf_client_key_is_writable (priv->client, KA_GCONF_KEY_PK_ANCHORS, NULL)) { + gtk_widget_set_sensitive (priv->pkanchors_entry, FALSE); + } + + priv->listeners [priv->n_listeners] = + gconf_client_notify_add (priv->client, + KA_GCONF_KEY_PK_ANCHORS, + (GConfClientNotifyFunc) ka_preferences_pkanchors_notify, + priv, NULL, NULL); + priv->n_listeners++; +} + + +static void +ka_preferences_toggle_pkuserid_entry (gboolean state, CcKaPanelPrivate *priv) +{ + gtk_widget_set_sensitive (priv->pkuserid_entry, state); + gtk_widget_set_sensitive (priv->pkuserid_button, state); +} + + +static void +cc_ka_panel_smartcard_toggled (GtkToggleButton *toggle, + CcKaPanelPrivate *priv) +{ + gboolean smartcard = gtk_toggle_button_get_active (toggle); + static gchar *old_path = NULL; + + if (smartcard) { + const char *path; + + path = gtk_entry_get_text (GTK_ENTRY(priv->pkuserid_entry)); + if (g_strcmp0 (path, PKINIT_SMARTCARD)) { + g_free (old_path); + old_path = g_strdup (path); + } + ka_preferences_toggle_pkuserid_entry (FALSE, priv); + gconf_client_set_string (priv->client, KA_GCONF_KEY_PK_USERID, PKINIT_SMARTCARD, NULL); + } else { + ka_preferences_toggle_pkuserid_entry (TRUE, priv); + if (old_path) + gconf_client_set_string (priv->client, KA_GCONF_KEY_PK_USERID, old_path, NULL); + else + gconf_client_unset (priv->client, KA_GCONF_KEY_PK_USERID, NULL); + } +} + + +static void +cc_ka_panel_setup_smartcard_toggle(CcKaPanelPrivate *priv) +{ + char *pkuserid = NULL; + + priv->smartcard_toggle = WID (priv->builder, "smartcard_toggle"); + g_assert (priv->smartcard_toggle != NULL); + + if (!ka_gconf_get_string (priv->client, KA_GCONF_KEY_PK_USERID, &pkuserid)) + g_warning ("Getting pkanchors failed"); + + g_signal_connect (priv->smartcard_toggle, "toggled", + G_CALLBACK (cc_ka_panel_smartcard_toggled), priv); + + if (!g_strcmp0 (pkuserid, PKINIT_SMARTCARD)) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->smartcard_toggle), TRUE); + else + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->smartcard_toggle), FALSE); + + if (pkuserid) + g_free (pkuserid); +} + + +static void +cc_ka_panel_browse_certs (CcKaPanelPrivate *priv, GtkEntry *entry) +{ + GtkWidget *filechooser; + GtkFileFilter *cert_filter, *all_filter; + gchar *filename = NULL; + const gchar *current; + gint ret; + + filechooser = gtk_file_chooser_dialog_new(_("Choose Certificate"), + GTK_WINDOW (gtk_widget_get_toplevel (priv->notebook)), + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + NULL); + + current = gtk_entry_get_text (entry); + if (current && g_str_has_prefix (current, PKINIT_FILE) && + strlen(current) > strlen (PKINIT_FILE)) { + gtk_file_chooser_select_filename (GTK_FILE_CHOOSER(filechooser), + (const gchar*)¤t[strlen(PKINIT_FILE)]); + } + + cert_filter = g_object_ref_sink (gtk_file_filter_new ()); + gtk_file_filter_add_mime_type (cert_filter, "application/x-x509-ca-cert"); + gtk_file_filter_set_name (cert_filter, _("X509 Certificates")); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (filechooser), cert_filter); + all_filter = g_object_ref_sink (gtk_file_filter_new ()); + gtk_file_filter_add_pattern (all_filter, "*"); + gtk_file_filter_set_name (all_filter, _("all files")); + gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (filechooser), all_filter); + + ret = gtk_dialog_run (GTK_DIALOG(filechooser)); + if (ret == GTK_RESPONSE_ACCEPT) + filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(filechooser)); + gtk_widget_destroy (GTK_WIDGET(filechooser)); + + if (filename) { + gchar *cert = g_strconcat( PKINIT_FILE, filename, NULL); + gtk_entry_set_text (entry, cert); + g_free (filename); + g_free (cert); + } + g_object_unref (cert_filter); + g_object_unref (all_filter); +} + +static void +cc_ka_panel_browse_pkuserids (GtkButton *button G_GNUC_UNUSED, + CcKaPanelPrivate *priv) +{ + cc_ka_panel_browse_certs (priv, + GTK_ENTRY(priv->pkuserid_entry)); +} + +static void +cc_ka_panel_browse_pkanchors(GtkButton *button G_GNUC_UNUSED, + CcKaPanelPrivate *priv) +{ + cc_ka_panel_browse_certs (priv, + GTK_ENTRY(priv->pkanchors_entry)); +} + +static void +cc_ka_panel_setup_pkuserid_button (CcKaPanelPrivate *priv) +{ + priv->pkuserid_button = WID (priv->builder, "pkuserid_button"); + g_assert (priv->pkuserid_button != NULL); + + g_signal_connect (priv->pkuserid_button, "clicked", + G_CALLBACK (cc_ka_panel_browse_pkuserids), priv); + +} + +static void +cc_ka_panel_setup_pkanchors_button (CcKaPanelPrivate *priv) +{ + priv->pkanchors_button = WID (priv->builder, "pkanchors_button"); + g_assert (priv->pkanchors_button != NULL); + + g_signal_connect (priv->pkanchors_button, "clicked", + G_CALLBACK (cc_ka_panel_browse_pkanchors), priv); + +} + + +static void +cc_ka_panel_forwardable_toggled (GtkToggleButton *toggle, + CcKaPanelPrivate *priv) +{ + gboolean forwardable; + + forwardable = gtk_toggle_button_get_active (toggle); + + gconf_client_set_bool (priv->client, KA_GCONF_KEY_FORWARDABLE, forwardable, NULL); +} + + +static void +cc_ka_panel_forwardable_notify (GConfClient *client G_GNUC_UNUSED, + guint cnx_id G_GNUC_UNUSED, + GConfEntry *entry, + CcKaPanelPrivate *priv) +{ + 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 (priv->forwardable_toggle))) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->forwardable_toggle), forwardable); +} + + +static gboolean +cc_ka_panel_setup_forwardable_toggle (CcKaPanelPrivate *priv) +{ + gboolean forwardable; + + priv->forwardable_toggle = WID (priv->builder, "forwardable_toggle"); + g_assert (priv->forwardable_toggle != NULL); + + forwardable = gconf_client_get_bool (priv->client, KA_GCONF_KEY_FORWARDABLE, NULL); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->forwardable_toggle), forwardable); + + g_signal_connect (priv->forwardable_toggle, "toggled", + G_CALLBACK (cc_ka_panel_forwardable_toggled), priv); + + if (!gconf_client_key_is_writable (priv->client, KA_GCONF_KEY_FORWARDABLE, NULL)) { + gtk_widget_set_sensitive (priv->forwardable_toggle, FALSE); + } + + priv->listeners [priv->n_listeners] = + gconf_client_notify_add (priv->client, + KA_GCONF_KEY_FORWARDABLE, + (GConfClientNotifyFunc) cc_ka_panel_forwardable_notify, + priv, NULL, NULL); + priv->n_listeners++; + return forwardable; +} + + +static void +cc_ka_panel_proxiable_toggled (GtkToggleButton *toggle, + CcKaPanelPrivate *priv) +{ + gboolean proxiable; + + proxiable = gtk_toggle_button_get_active (toggle); + + gconf_client_set_bool (priv->client, KA_GCONF_KEY_PROXIABLE, proxiable, NULL); +} + + +static void +cc_ka_panel_proxiable_notify (GConfClient *client G_GNUC_UNUSED, + guint cnx_id G_GNUC_UNUSED, + GConfEntry *entry, + CcKaPanelPrivate *priv) +{ + 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 (priv->proxiable_toggle))) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->proxiable_toggle), proxiable); +} + + +static gboolean +cc_ka_panel_setup_proxiable_toggle (CcKaPanelPrivate *priv) +{ + gboolean proxiable; + + priv->proxiable_toggle = WID (priv->builder, "proxiable_toggle"); + g_assert (priv->proxiable_toggle != NULL); + + proxiable = gconf_client_get_bool (priv->client, KA_GCONF_KEY_PROXIABLE, NULL); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->proxiable_toggle), proxiable); + + g_signal_connect (priv->proxiable_toggle, "toggled", + G_CALLBACK (cc_ka_panel_proxiable_toggled), priv); + + if (!gconf_client_key_is_writable (priv->client, KA_GCONF_KEY_PROXIABLE, NULL)) { + gtk_widget_set_sensitive (priv->proxiable_toggle, FALSE); + } + + priv->listeners [priv->n_listeners] = + gconf_client_notify_add (priv->client, + KA_GCONF_KEY_PROXIABLE, + (GConfClientNotifyFunc) cc_ka_panel_proxiable_notify, + priv, NULL, NULL); + priv->n_listeners++; + return proxiable; +} + + +static void +cc_ka_panel_renewable_toggled (GtkToggleButton *toggle, + CcKaPanelPrivate *priv) +{ + gboolean renewable; + + renewable = gtk_toggle_button_get_active (toggle); + + gconf_client_set_bool (priv->client, KA_GCONF_KEY_RENEWABLE, renewable, NULL); +} + + +static void +cc_ka_panel_renewable_notify (GConfClient *client G_GNUC_UNUSED, + guint cnx_id G_GNUC_UNUSED, + GConfEntry *entry, + CcKaPanelPrivate *priv) +{ + 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 (priv->renewable_toggle))) + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->renewable_toggle), renewable); +} + + +static gboolean +cc_ka_panel_setup_renewable_toggle (CcKaPanelPrivate *priv) +{ + gboolean renewable; + + priv->renewable_toggle = WID (priv->builder, "renewable_toggle"); + g_assert (priv->renewable_toggle != NULL); + + renewable = gconf_client_get_bool (priv->client, KA_GCONF_KEY_RENEWABLE, NULL); + + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->renewable_toggle), renewable); + + g_signal_connect (priv->renewable_toggle, "toggled", + G_CALLBACK (cc_ka_panel_renewable_toggled), priv); + + if (!gconf_client_key_is_writable (priv->client, KA_GCONF_KEY_RENEWABLE, NULL)) { + gtk_widget_set_sensitive (priv->renewable_toggle, FALSE); + } + + priv->listeners [priv->n_listeners] = + gconf_client_notify_add (priv->client, + KA_GCONF_KEY_RENEWABLE, + (GConfClientNotifyFunc) cc_ka_panel_renewable_notify, + priv, NULL, NULL); + priv->n_listeners++; + return renewable; +} + + +static void +cc_ka_panel_prompt_mins_changed (GtkSpinButton *button, + CcKaPanelPrivate *priv) +{ + gint prompt_mins; + + prompt_mins = gtk_spin_button_get_value_as_int (button); + gconf_client_set_int (priv->client, KA_GCONF_KEY_PROMPT_MINS, prompt_mins, NULL); +} + + +static void +cc_ka_panel_prompt_mins_notify (GConfClient *client G_GNUC_UNUSED, + guint cnx_id G_GNUC_UNUSED, + GConfEntry *entry, + CcKaPanelPrivate *priv) +{ + 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 (priv->prompt_mins_entry))) + gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->prompt_mins_entry), prompt_mins); +} + + +static gint +cc_ka_panel_setup_prompt_mins_entry (CcKaPanelPrivate *priv) +{ + gint prompt_mins; + + priv->prompt_mins_entry = WID (priv->builder, "prompt_mins_entry"); + g_assert (priv->prompt_mins_entry != NULL); + + prompt_mins = gconf_client_get_int (priv->client, KA_GCONF_KEY_PROMPT_MINS, NULL); + + gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->prompt_mins_entry), prompt_mins); + + g_signal_connect (priv->prompt_mins_entry, "value-changed", + G_CALLBACK (cc_ka_panel_prompt_mins_changed), priv); + + if (!gconf_client_key_is_writable (priv->client, KA_GCONF_KEY_PROMPT_MINS, NULL)) { + gtk_widget_set_sensitive (priv->prompt_mins_entry, FALSE); + } + + priv->listeners [priv->n_listeners] = + gconf_client_notify_add (priv->client, + KA_GCONF_KEY_PROMPT_MINS, + (GConfClientNotifyFunc) cc_ka_panel_prompt_mins_notify, + priv, NULL, NULL); + priv->n_listeners++; + return prompt_mins; +} + +static void +cc_ka_panel_get_property (GObject *self, + guint property_id, + GValue *value G_GNUC_UNUSED, + GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (self, property_id, pspec); + } +} + +static void +cc_ka_panel_set_property (GObject *self, + guint property_id, + const GValue *value G_GNUC_UNUSED, + GParamSpec *pspec) +{ + switch (property_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (self, property_id, pspec); + } +} + +static void +cc_ka_panel_dispose (GObject *self) +{ + CcKaPanelPrivate *priv = GET_PRIVATE (self); + + if (priv->builder != NULL) { + g_object_unref (priv->builder); + priv->builder = NULL; + } + G_OBJECT_CLASS (cc_ka_panel_parent_class)->dispose (self); +} + +static void +cc_ka_panel_finalize (GObject *self) +{ + CcKaPanelPrivate *priv = GET_PRIVATE (self); + + if (priv->client) { + int i; + + for (i = 0; i < priv->n_listeners; i++) { + if (priv->listeners [i]) + gconf_client_notify_remove (priv->client, priv->listeners [i]); + priv->listeners [i] = 0; + } + priv->n_listeners = 0; + + gconf_client_remove_dir (priv->client, KA_GCONF_PATH, NULL); + + g_object_unref (priv->client); + priv->client = NULL; + } + + G_OBJECT_CLASS (cc_ka_panel_parent_class)->finalize (self); +} + +static void +cc_ka_panel_class_init (CcKaPanelClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (klass, sizeof (CcKaPanelPrivate)); + + object_class->get_property = cc_ka_panel_get_property; + object_class->set_property = cc_ka_panel_set_property; + object_class->dispose = cc_ka_panel_dispose; + object_class->finalize = cc_ka_panel_finalize; +} + +static void +cc_ka_panel_class_finalize (CcKaPanelClass *klass G_GNUC_UNUSED) +{ +} + +static void +cc_ka_panel_init (CcKaPanel *self) +{ + GError *error = NULL; + + CcKaPanelPrivate *priv = GET_PRIVATE (self); + + priv->builder = gtk_builder_new (); + gtk_builder_add_from_file(priv->builder, KA_DATA_DIR G_DIR_SEPARATOR_S + "ka-panel.ui", &error); + if (error != NULL) { + g_warning ("Could not load interface file: %s", error->message); + g_error_free (error); + return; + + } + priv->client = gconf_client_get_default (); + gconf_client_add_dir (priv->client, KA_GCONF_PATH, + GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); + + cc_ka_panel_setup_principal_entry (priv); + cc_ka_panel_setup_pkuserid_entry (priv); + cc_ka_panel_setup_pkuserid_button (priv); + cc_ka_panel_setup_smartcard_toggle (priv); + cc_ka_panel_setup_pkanchors_entry(priv); + cc_ka_panel_setup_pkanchors_button (priv); + cc_ka_panel_setup_forwardable_toggle (priv); + cc_ka_panel_setup_proxiable_toggle (priv); + cc_ka_panel_setup_renewable_toggle (priv); + cc_ka_panel_setup_prompt_mins_entry (priv); + + g_assert (priv->n_listeners == N_LISTENERS); + + priv->notebook = WID (priv->builder, "ka_notebook"); + gtk_widget_reparent (priv->notebook, (GtkWidget *) self); + + gtk_widget_show (priv->notebook); +} + +void +cc_ka_panel_register (GIOModule *module) +{ + cc_ka_panel_register_type (G_TYPE_MODULE (module)); + g_io_extension_point_implement (CC_SHELL_PANEL_EXTENSION_POINT, + CC_TYPE_KA_PANEL, + "ka-panel", 0); +} + +/* + * vim:ts:sts=4:sw=4:et: + */ diff --git a/cc-panel/cc-ka-panel.h b/cc-panel/cc-ka-panel.h new file mode 100644 index 0000000..d8fdda0 --- /dev/null +++ b/cc-panel/cc-ka-panel.h @@ -0,0 +1,45 @@ +/* cc-ka-panel.h */ + +#ifndef _CC_KA_PANEL +#define _CC_KA_PANEL + +#include <libgnome-control-center/cc-panel.h> + +G_BEGIN_DECLS + +#define CC_TYPE_KA_PANEL cc_ka_panel_get_type() + +#define CC_KA_PANEL(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj),CC_TYPE_KA_PANEL, CcKaPanel)) + +#define CC_KA_PANEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), CC_TYPE_KA_PANEL, CcKaPanelClass)) + +#define CC_IS_KA_PANEL(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CC_TYPE_KA_PANEL)) + +#define CC_IS_KA_PANEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), CC_TYPE_KA_PANEL)) + +#define CC_KA_PANEL_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), CC_TYPE_KA_PANEL, CcKaPanelClass)) + +typedef struct { + CcPanel parent; +} CcKaPanel; + +typedef struct { + CcPanelClass parent_class; +} CcKaPanelClass; + +GType cc_ka_panel_get_type (void) G_GNUC_CONST; + +void cc_ka_panel_register (GIOModule *module); + +G_END_DECLS + +#endif /* _CC_KA_PANEL */ + +/* + * vim:ts:sts=4:sw=4:et: + */ diff --git a/cc-panel/gnome-ka-panel.desktop.in b/cc-panel/gnome-ka-panel.desktop.in new file mode 100644 index 0000000..f7105c5 --- /dev/null +++ b/cc-panel/gnome-ka-panel.desktop.in @@ -0,0 +1,17 @@ +[Desktop Entry] +_Name=Kerberos Authentication +_Comment=Set your Kerberos network authentication preferences +Exec=gnome-ka-properties +Icon=krb-valid-ticket +Terminal=false +Type=Application +StartupNotify=true +# The X-GNOME-Settings-Panel is necessary to show in the main shell UI +Categories=GNOME;GTK;Settings;DesktopSettings;X-GNOME-Settings-Panel; +OnlyShowIn=GNOME; +X-GNOME-Settings-Panel=ka-panel +X-GNOME-Bugzilla-Bugzilla=GNOME +X-GNOME-Bugzilla-Product=krb5-auth-dialog +X-GNOME-Bugzilla-Component=general +# Translators: those are keywords for the example control-center panel +_X-GNOME-Keywords=Kerberos;Authentication diff --git a/cc-panel/ka-module.c b/cc-panel/ka-module.c new file mode 100644 index 0000000..17ab5bd --- /dev/null +++ b/cc-panel/ka-module.c @@ -0,0 +1,20 @@ +#include <config.h> + +#include "cc-ka-panel.h" + +#include <glib/gi18n.h> + +void +g_io_module_load (GIOModule *module) +{ + bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + + /* register the panel */ + cc_ka_panel_register (module); +} + +void +g_io_module_unload (GIOModule *module G_GNUC_UNUSED) +{ +} diff --git a/cc-panel/ka-panel.ui b/cc-panel/ka-panel.ui new file mode 100644 index 0000000..0081a40 --- /dev/null +++ b/cc-panel/ka-panel.ui @@ -0,0 +1,579 @@ +<?xml version="1.0"?> +<interface> + <requires lib="gtk+" version="2.16"/> + <!-- interface-naming-policy project-wide --> + <object class="GtkWindow" id="window1"> + <child> + <object class="GtkNotebook" id="ka_notebook"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <child> + <object class="GtkVBox" id="vbox1"> + <property name="visible">True</property> + <property name="border_width">12</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <object class="GtkVBox" id="vbox2"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="label4"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Kerberos User</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox1"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="access"> + <property name="visible">True</property> + <property name="yalign">0</property> + <property name="icon_name">krb-valid-ticket</property> + <property name="icon-size">6</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="vbox5"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkFrame" id="frame4"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment4"> + <property name="visible">True</property> + <property name="left_padding">12</property> + <child> + <object class="GtkEntry" id="principal_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">●</property> + <property name="activates_default">True</property> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label3"> + <property name="visible">True</property> + <property name="label" translatable="yes">Kerberos principal:</property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frame1"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment1"> + <property name="visible">True</property> + <property name="left_padding">12</property> + <child> + <object class="GtkVBox" id="vbox6"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkFrame" id="frame2"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment2"> + <property name="visible">True</property> + <property name="left_padding">24</property> + <child> + <object class="GtkVBox" id="vbox11"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkCheckButton" id="smartcard_toggle"> + <property name="label" translatable="yes">Use Smartcard</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_text" translatable="yes">If checked, use a security token (Smartcard) to authenticate.</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox13"> + <property name="visible">True</property> + <child> + <object class="GtkEntry" id="pkuserid_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">Certificate and private key used for authentication</property> + <property name="invisible_char">●</property> + <property name="activates_default">True</property> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="pkuserid_button"> + <property name="label" translatable="yes">_Browse...</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label21"> + <property name="visible">True</property> + <property name="label" translatable="yes">Userid:</property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frame3"> + <property name="visible">True</property> + <property name="label_xalign">0</property> + <property name="shadow_type">none</property> + <child> + <object class="GtkAlignment" id="alignment3"> + <property name="visible">True</property> + <property name="left_padding">24</property> + <child> + <object class="GtkHBox" id="hbox6"> + <property name="visible">True</property> + <child> + <object class="GtkEntry" id="pkanchors_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">●</property> + <property name="activates_default">True</property> + </object> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="pkanchors_button"> + <property name="label" translatable="yes">_Browse...</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="label22"> + <property name="visible">True</property> + <property name="label" translatable="yes">X509 trust anchors:</property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel" id="fram1"> + <property name="visible">True</property> + <property name="label" translatable="yes">PKINIT:</property> + </object> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="vbox3"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="label5"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Ticket Options</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox2"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="image1"> + <property name="visible">True</property> + <property name="yalign">0</property> + <property name="icon_name">system-lock-screen</property> + <property name="icon-size">6</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="vbox4"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label10"> + <property name="visible">True</property> + <property name="label" translatable="yes">Requested Kerberos tickets should be:</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox3"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="label11"> + <property name="visible">True</property> + <property name="label"> </property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="forwardable_toggle"> + <property name="label" translatable="yes">forwardable</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_text" translatable="yes">If checked, request forwardable tickets</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox4"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="label12"> + <property name="visible">True</property> + <property name="label"> </property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="renewable_toggle"> + <property name="label" translatable="yes">renewable</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_text" translatable="yes">If checked, request renewable tickets</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox11"> + <property name="visible">True</property> + <child> + <object class="GtkLabel" id="label19"> + <property name="visible">True</property> + <property name="label"> </property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="proxiable_toggle"> + <property name="label" translatable="yes">proxiable</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="tooltip_text" translatable="yes">If checked, request proxiable tickets</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">3</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + <child type="tab"> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="label" translatable="yes">Kerberos</property> + </object> + <packing> + <property name="tab_fill">False</property> + </packing> + </child> + <child> + <object class="GtkVBox" id="vbox9"> + <property name="visible">True</property> + <property name="border_width">12</property> + <property name="orientation">vertical</property> + <property name="spacing">18</property> + <child> + <object class="GtkVBox" id="vbox8"> + <property name="visible">True</property> + <property name="orientation">vertical</property> + <property name="spacing">12</property> + <child> + <object class="GtkLabel" id="label17"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Notifications</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox9"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object 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> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkHBox" id="hbox8"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="label14"> + <property name="visible">True</property> + <property name="label"> </property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label15"> + <property name="visible">True</property> + <property name="label" translatable="yes" comments="Used in combination: 'Warn x minutes before expiry'">Warn</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="prompt_mins_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="tooltip_text" translatable="yes">Send notification about ticket expiry that many minutes before it finally expires</property> + <property name="invisible_char">●</property> + <property name="snap_to_ticks">True</property> + <property name="numeric">True</property> + <property name="adjustment">adjustment1</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label16"> + <property name="visible">True</property> + <property name="label" translatable="yes" comments="Used in combination: 'Warn x minutes before expiry'">minutes before expiry</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="position">1</property> + </packing> + </child> + <child type="tab"> + <object class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="label" translatable="yes">Applet</property> + </object> + <packing> + <property name="position">1</property> + <property name="tab_fill">False</property> + </packing> + </child> + </object> + </child> + </object> + <object class="GtkAdjustment" id="adjustment1"> + <property name="upper">1000</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + <property name="page_size">10</property> + </object> +</interface> diff --git a/config.h.in b/config.h.in index a95567b..908fe5d 100644 --- a/config.h.in +++ b/config.h.in @@ -93,9 +93,6 @@ /* Define if your <locale.h> file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES -/* use libnotify for status messages */ -#undef HAVE_LIBNOTIFY - /* Define to 1 if you have the `pam' library (-lpam). */ #undef HAVE_LIBPAM @@ -114,6 +111,13 @@ /* Define to 1 if you have the `mmap' function. */ #undef HAVE_MMAP +/* Define to 1 if you have the `notify_notification_new_with_status_icon' + function. */ +#undef HAVE_NOTIFY_NOTIFICATION_NEW_WITH_STATUS_ICON + +/* Define to 1 if you have the `notify_notification_set_hint' function. */ +#undef HAVE_NOTIFY_NOTIFICATION_SET_HINT + /* Define to 1 if you have the `plock' function. */ #undef HAVE_PLOCK @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.67 for krb5-auth-dialog 0.17. +# Generated by GNU Autoconf 2.67 for krb5-auth-dialog 2.91.6. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -698,8 +698,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='krb5-auth-dialog' PACKAGE_TARNAME='krb5-auth-dialog' -PACKAGE_VERSION='0.17' -PACKAGE_STRING='krb5-auth-dialog 0.17' +PACKAGE_VERSION='2.91.6' +PACKAGE_STRING='krb5-auth-dialog 2.91.6' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -752,10 +752,9 @@ minimum_lifetime check_interval LIBCAP SETCAP -HAVE_LIBNOTIFY_FALSE -HAVE_LIBNOTIFY_TRUE -LIBNOTIFY_LIBS -LIBNOTIFY_CFLAGS +PANELS_DIR +CONTROL_CENTER_LIBS +CONTROL_CENTER_CFLAGS ENABLE_NETWORK_MANAGER_FALSE ENABLE_NETWORK_MANAGER_TRUE NETWORK_MANAGER_LIBS @@ -771,6 +770,8 @@ GCONF_SCHEMAS_INSTALL_FALSE GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMA_CONFIG_SOURCE +LIBNOTIFY_LIBS +LIBNOTIFY_CFLAGS GMODULE_LIBS GMODULE_CFLAGS GIO_LIBS @@ -979,7 +980,6 @@ enable_debug with_pkcs11 enable_pkinit enable_network_manager -with_libnotify with_libcap with_pam ' @@ -1007,10 +1007,12 @@ GIO_CFLAGS GIO_LIBS GMODULE_CFLAGS GMODULE_LIBS +LIBNOTIFY_CFLAGS +LIBNOTIFY_LIBS NETWORK_MANAGER_CFLAGS NETWORK_MANAGER_LIBS -LIBNOTIFY_CFLAGS -LIBNOTIFY_LIBS' +CONTROL_CENTER_CFLAGS +CONTROL_CENTER_LIBS' # Initialize some variables set by options. @@ -1553,7 +1555,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures krb5-auth-dialog 0.17 to adapt to many kinds of systems. +\`configure' configures krb5-auth-dialog 2.91.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1624,7 +1626,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of krb5-auth-dialog 0.17:";; + short | recursive ) echo "Configuration of krb5-auth-dialog 2.91.6:";; esac cat <<\_ACEOF @@ -1666,14 +1668,13 @@ Optional Packages: --with-omf-dir=DIR path to OMF files --with-help-formats=FORMATS list of formats - --with-gtk=2.0|3.0 which gtk+ version to compile against (default: 2.0) + --with-gtk=2.0|3.0 which gtk+ version to compile against (default: 3.0) --with-gconf-source=sourceaddress Config database for installing schema files. --with-gconf-schema-file-dir=dir Directory for installing schema files. --with-pkcs11 set path of PKCS11 smartcard helper [default=/usr/lib/opensc/opensc-pkcs11.so] - --with-libnotify use libnotify for status messages --without-libcap Disable support for capabilities library --with-pam use PAM [default=check] @@ -1709,14 +1710,18 @@ Some influential environment variables: C compiler flags for GMODULE, overriding pkg-config GMODULE_LIBS linker flags for GMODULE, overriding pkg-config - NETWORK_MANAGER_CFLAGS - C compiler flags for NETWORK_MANAGER, overriding pkg-config - NETWORK_MANAGER_LIBS - linker flags for NETWORK_MANAGER, overriding pkg-config LIBNOTIFY_CFLAGS C compiler flags for LIBNOTIFY, overriding pkg-config LIBNOTIFY_LIBS linker flags for LIBNOTIFY, overriding pkg-config + NETWORK_MANAGER_CFLAGS + C compiler flags for NETWORK_MANAGER, overriding pkg-config + NETWORK_MANAGER_LIBS + linker flags for NETWORK_MANAGER, overriding pkg-config + CONTROL_CENTER_CFLAGS + C compiler flags for CONTROL_CENTER, overriding pkg-config + CONTROL_CENTER_LIBS + linker flags for CONTROL_CENTER, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1784,7 +1789,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -krb5-auth-dialog configure 0.17 +krb5-auth-dialog configure 2.91.6 generated by GNU Autoconf 2.67 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2206,7 +2211,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by krb5-auth-dialog $as_me 0.17, which was +It was created by krb5-auth-dialog $as_me 2.91.6, which was generated by GNU Autoconf 2.67. Invocation command line was $ $0 $@ @@ -3022,7 +3027,7 @@ fi # Define the identity of the package. PACKAGE='krb5-auth-dialog' - VERSION='0.17' + VERSION='2.91.6' cat >>confdefs.h <<_ACEOF @@ -7135,13 +7140,13 @@ if test "${lt_cv_nm_interface+set}" = set; then : else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:7138: $ac_compile\"" >&5) + (eval echo "\"\$as_me:7143: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:7141: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:7146: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:7144: output\"" >&5) + (eval echo "\"\$as_me:7149: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -8346,7 +8351,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 8349 "configure"' > conftest.$ac_ext + echo '#line 8354 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -9604,11 +9609,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9607: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9612: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9611: \$? = $ac_status" >&5 + echo "$as_me:9616: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9943,11 +9948,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9946: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9951: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9950: \$? = $ac_status" >&5 + echo "$as_me:9955: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -10048,11 +10053,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10051: $lt_compile\"" >&5) + (eval echo "\"\$as_me:10056: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:10055: \$? = $ac_status" >&5 + echo "$as_me:10060: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -10103,11 +10108,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:10106: $lt_compile\"" >&5) + (eval echo "\"\$as_me:10111: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:10110: \$? = $ac_status" >&5 + echo "$as_me:10115: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -12487,7 +12492,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12490 "configure" +#line 12495 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12583,7 +12588,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12586 "configure" +#line 12591 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -13502,7 +13507,7 @@ if test "${with_gtk+set}" = set; then : *) as_fn_error $? "invalid gtk version specified" "$LINENO" 5 ;; esac else - with_gtk=2.0 + with_gtk=3.0 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_gtk" >&5 @@ -13510,7 +13515,7 @@ $as_echo "$with_gtk" >&6; } case "$with_gtk" in 2.0) GTK_API_VERSION=2.0 - GTK_REQUIRED=2.16.0 + GTK_REQUIRED=2.18.0 GLIB_REQUIRED=2.16.0 DBUS_REQUIRED=0.60 GCONF_REQUIRED=2.8 @@ -13971,6 +13976,95 @@ $as_echo "yes" >&6; } fi +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNOTIFY" >&5 +$as_echo_n "checking for LIBNOTIFY... " >&6; } + +if test -n "$LIBNOTIFY_CFLAGS"; then + pkg_cv_LIBNOTIFY_CFLAGS="$LIBNOTIFY_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnotify >= \$LIBNOTIFY_REQUIRED\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnotify >= $LIBNOTIFY_REQUIRED") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBNOTIFY_CFLAGS=`$PKG_CONFIG --cflags "libnotify >= $LIBNOTIFY_REQUIRED" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBNOTIFY_LIBS"; then + pkg_cv_LIBNOTIFY_LIBS="$LIBNOTIFY_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnotify >= \$LIBNOTIFY_REQUIRED\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnotify >= $LIBNOTIFY_REQUIRED") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBNOTIFY_LIBS=`$PKG_CONFIG --libs "libnotify >= $LIBNOTIFY_REQUIRED" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBNOTIFY_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnotify >= $LIBNOTIFY_REQUIRED" 2>&1` + else + LIBNOTIFY_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnotify >= $LIBNOTIFY_REQUIRED" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBNOTIFY_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (libnotify >= $LIBNOTIFY_REQUIRED) were not met: + +$LIBNOTIFY_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables LIBNOTIFY_CFLAGS +and LIBNOTIFY_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables LIBNOTIFY_CFLAGS +and LIBNOTIFY_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see <http://pkg-config.freedesktop.org/>. +See \`config.log' for more details" "$LINENO" 5 ; } +else + LIBNOTIFY_CFLAGS=$pkg_cv_LIBNOTIFY_CFLAGS + LIBNOTIFY_LIBS=$pkg_cv_LIBNOTIFY_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then @@ -14449,49 +14543,65 @@ else fi -LIBNOTIFY_CFLAGS= -LIBNOTIFY_LIBS= -# Check whether --with-libnotify was given. -if test "${with_libnotify+set}" = set; then : - withval=$with_libnotify; -else - with_libnotify=check +savedCFLAGS="$CFLAGS" +savedLIBS="$LIBS" +CFLAGS="$LIBNOTIFY_CFLAGS $CFLAGS" +LIBS="$LIBNOTIFY_LIBS $LIBS" +for ac_func in notify_notification_new_with_status_icon \ + notify_notification_set_hint +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + fi +done + +CFLAGS="$savedCFLAGS" +LIBS="$savedLIBS" -if test "x$with_libnotify" = "xyes" -o "x$with_libnotify" = "xcheck"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNOTIFY" >&5 -$as_echo_n "checking for LIBNOTIFY... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CONTROL_CENTER" >&5 +$as_echo_n "checking for CONTROL_CENTER... " >&6; } -if test -n "$LIBNOTIFY_CFLAGS"; then - pkg_cv_LIBNOTIFY_CFLAGS="$LIBNOTIFY_CFLAGS" +if test -n "$CONTROL_CENTER_CFLAGS"; then + pkg_cv_CONTROL_CENTER_CFLAGS="$CONTROL_CENTER_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnotify >= \$LIBNOTIFY_REQUIRED\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libnotify >= $LIBNOTIFY_REQUIRED") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" + libgnome-control-center >= 2.31.4\""; } >&5 + ($PKG_CONFIG --exists --print-errors " + libgnome-control-center >= 2.31.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LIBNOTIFY_CFLAGS=`$PKG_CONFIG --cflags "libnotify >= $LIBNOTIFY_REQUIRED" 2>/dev/null` + pkg_cv_CONTROL_CENTER_CFLAGS=`$PKG_CONFIG --cflags " + libgnome-control-center >= 2.31.4" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi -if test -n "$LIBNOTIFY_LIBS"; then - pkg_cv_LIBNOTIFY_LIBS="$LIBNOTIFY_LIBS" +if test -n "$CONTROL_CENTER_LIBS"; then + pkg_cv_CONTROL_CENTER_LIBS="$CONTROL_CENTER_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnotify >= \$LIBNOTIFY_REQUIRED\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libnotify >= $LIBNOTIFY_REQUIRED") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" + libgnome-control-center >= 2.31.4\""; } >&5 + ($PKG_CONFIG --exists --print-errors " + libgnome-control-center >= 2.31.4") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LIBNOTIFY_LIBS=`$PKG_CONFIG --libs "libnotify >= $LIBNOTIFY_REQUIRED" 2>/dev/null` + pkg_cv_CONTROL_CENTER_LIBS=`$PKG_CONFIG --libs " + libgnome-control-center >= 2.31.4" 2>/dev/null` else pkg_failed=yes fi @@ -14511,55 +14621,49 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - LIBNOTIFY_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnotify >= $LIBNOTIFY_REQUIRED" 2>&1` + CONTROL_CENTER_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors " + libgnome-control-center >= 2.31.4" 2>&1` else - LIBNOTIFY_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnotify >= $LIBNOTIFY_REQUIRED" 2>&1` + CONTROL_CENTER_PKG_ERRORS=`$PKG_CONFIG --print-errors " + libgnome-control-center >= 2.31.4" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$LIBNOTIFY_PKG_ERRORS" >&5 + echo "$CONTROL_CENTER_PKG_ERRORS" >&5 + as_fn_error $? "Package requirements ( + libgnome-control-center >= 2.31.4) were not met: - if test "x$with_libnotify" = "xcheck" ; then - with_libnotify=no - else - as_fn_error $? "You must install libnotify >= $LIBNOTIFY_REQUIRED to compile krb5-auth-dialog" "$LINENO" 5 - fi +$CONTROL_CENTER_PKG_ERRORS +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables CONTROL_CENTER_CFLAGS +and CONTROL_CENTER_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. - if test "x$with_libnotify" = "xcheck" ; then - with_libnotify=no - else - as_fn_error $? "You must install libnotify >= $LIBNOTIFY_REQUIRED to compile krb5-auth-dialog" "$LINENO" 5 - fi +Alternatively, you may set the environment variables CONTROL_CENTER_CFLAGS +and CONTROL_CENTER_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +To get pkg-config, see <http://pkg-config.freedesktop.org/>. +See \`config.log' for more details" "$LINENO" 5 ; } else - LIBNOTIFY_CFLAGS=$pkg_cv_LIBNOTIFY_CFLAGS - LIBNOTIFY_LIBS=$pkg_cv_LIBNOTIFY_LIBS + CONTROL_CENTER_CFLAGS=$pkg_cv_CONTROL_CENTER_CFLAGS + CONTROL_CENTER_LIBS=$pkg_cv_CONTROL_CENTER_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - with_libnotify=yes -fi - if test "x$with_libnotify" = "xyes" ; then -cat >>confdefs.h <<_ACEOF -#define HAVE_LIBNOTIFY 1 -_ACEOF - - fi fi - if test "x$with_libnotify" = "xyes"; then - HAVE_LIBNOTIFY_TRUE= - HAVE_LIBNOTIFY_FALSE='#' -else - HAVE_LIBNOTIFY_TRUE='#' - HAVE_LIBNOTIFY_FALSE= -fi - - - +PANELS_DIR="${libdir}/control-center-1/panels" for ac_func in seteuid stpcpy mmap @@ -15088,7 +15192,7 @@ else fi -ac_config_files="$ac_config_files Makefile krb5-auth-dialog.spec src/Makefile src/krb5-auth-dialog.1 secmem/Makefile gtksecentry/Makefile icons/Makefile icons/22x22/Makefile icons/48x48/Makefile icons/scalable/Makefile etpo/Makefile po/Makefile.in preferences/Makefile preferences/krb5-auth-dialog-preferences.1 help/Makefile examples/Makefile plugins/Makefile" +ac_config_files="$ac_config_files Makefile krb5-auth-dialog.spec src/Makefile src/krb5-auth-dialog.1 secmem/Makefile icons/Makefile icons/22x22/Makefile icons/48x48/Makefile icons/scalable/Makefile etpo/Makefile po/Makefile.in help/Makefile examples/Makefile plugins/Makefile cc-panel/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -15236,10 +15340,6 @@ if test -z "${ENABLE_NETWORK_MANAGER_TRUE}" && test -z "${ENABLE_NETWORK_MANAGER as_fn_error $? "conditional \"ENABLE_NETWORK_MANAGER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${HAVE_LIBNOTIFY_TRUE}" && test -z "${HAVE_LIBNOTIFY_FALSE}"; then - as_fn_error $? "conditional \"HAVE_LIBNOTIFY\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${ENABLE_PAM_PLUGIN_TRUE}" && test -z "${ENABLE_PAM_PLUGIN_FALSE}"; then as_fn_error $? "conditional \"ENABLE_PAM_PLUGIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -15652,7 +15752,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by krb5-auth-dialog $as_me 0.17, which was +This file was extended by krb5-auth-dialog $as_me 2.91.6, which was generated by GNU Autoconf 2.67. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15718,7 +15818,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -krb5-auth-dialog config.status 0.17 +krb5-auth-dialog config.status 2.91.6 configured by $0, generated by GNU Autoconf 2.67, with options \\"\$ac_cs_config\\" @@ -16112,18 +16212,16 @@ do "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/krb5-auth-dialog.1") CONFIG_FILES="$CONFIG_FILES src/krb5-auth-dialog.1" ;; "secmem/Makefile") CONFIG_FILES="$CONFIG_FILES secmem/Makefile" ;; - "gtksecentry/Makefile") CONFIG_FILES="$CONFIG_FILES gtksecentry/Makefile" ;; "icons/Makefile") CONFIG_FILES="$CONFIG_FILES icons/Makefile" ;; "icons/22x22/Makefile") CONFIG_FILES="$CONFIG_FILES icons/22x22/Makefile" ;; "icons/48x48/Makefile") CONFIG_FILES="$CONFIG_FILES icons/48x48/Makefile" ;; "icons/scalable/Makefile") CONFIG_FILES="$CONFIG_FILES icons/scalable/Makefile" ;; "etpo/Makefile") CONFIG_FILES="$CONFIG_FILES etpo/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; - "preferences/Makefile") CONFIG_FILES="$CONFIG_FILES preferences/Makefile" ;; - "preferences/krb5-auth-dialog-preferences.1") CONFIG_FILES="$CONFIG_FILES preferences/krb5-auth-dialog-preferences.1" ;; "help/Makefile") CONFIG_FILES="$CONFIG_FILES help/Makefile" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "plugins/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;; + "cc-panel/Makefile") CONFIG_FILES="$CONFIG_FILES cc-panel/Makefile" ;; "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; @@ -17545,6 +17643,8 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: Network Manager: no" >&5 $as_echo "$as_me: Network Manager: no" >&6;} fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: gnome-cc: $CONTROL_CENTER_CFLAGS $CONTROL_CENTER_LIBS" >&5 +$as_echo "$as_me: gnome-cc: $CONTROL_CENTER_CFLAGS $CONTROL_CENTER_LIBS" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5 $as_echo "$as_me: " >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: Miscellaneous" >&5 diff --git a/configure.ac b/configure.ac index c96302d..b61a720 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([krb5-auth-dialog], [0.17]) +AC_INIT([krb5-auth-dialog], [2.91.6]) AC_CONFIG_SRCDIR(src/ka-dialog.c) dnl Make automake keep quiet about wildcards & other GNUmake-isms AM_INIT_AUTOMAKE([-Wno-portability]) @@ -29,17 +29,17 @@ GNOME_DOC_INIT AC_MSG_CHECKING([which gtk+ version to compile against]) AC_ARG_WITH([gtk], - [AS_HELP_STRING([--with-gtk=2.0|3.0],[which gtk+ version to compile against (default: 2.0)])], + [AS_HELP_STRING([--with-gtk=2.0|3.0],[which gtk+ version to compile against (default: 3.0)])], [case "$with_gtk" in 2.0|3.0) ;; *) AC_MSG_ERROR([invalid gtk version specified]) ;; esac], - [with_gtk=2.0]) + [with_gtk=3.0]) AC_MSG_RESULT([$with_gtk]) case "$with_gtk" in 2.0) GTK_API_VERSION=2.0 - GTK_REQUIRED=2.16.0 + GTK_REQUIRED=2.18.0 GLIB_REQUIRED=2.16.0 DBUS_REQUIRED=0.60 GCONF_REQUIRED=2.8 @@ -59,6 +59,7 @@ PKG_CHECK_MODULES(DBUS, dbus-glib-1 >= $DBUS_REQUIRED) PKG_CHECK_MODULES(GCONF, gconf-2.0 >= $GCONF_REQUIRED) PKG_CHECK_MODULES(GIO, [gio-2.0, gio-unix-2.0]) PKG_CHECK_MODULES(GMODULE, gmodule-2.0) +PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= $LIBNOTIFY_REQUIRED) dnl check for deprecated symbols: dnl GNOME_MAINTAINER_MODE_DEFINES @@ -184,33 +185,24 @@ if test "x$enable_network_manager" = "xyes"; then fi AM_CONDITIONAL([ENABLE_NETWORK_MANAGER],[test "x$enable_network_manager" = "xyes"]) + dnl libnotify -LIBNOTIFY_CFLAGS= -LIBNOTIFY_LIBS= -AC_ARG_WITH(libnotify, - [ --with-libnotify use libnotify for status messages], - [], - [with_libnotify=check]) - -if test "x$with_libnotify" = "xyes" -o "x$with_libnotify" = "xcheck"; then - PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= $LIBNOTIFY_REQUIRED, - [with_libnotify=yes], [ - if test "x$with_libnotify" = "xcheck" ; then - with_libnotify=no - else - AC_MSG_ERROR( - [You must install libnotify >= $LIBNOTIFY_REQUIRED to compile krb5-auth-dialog]) - fi - ]) - if test "x$with_libnotify" = "xyes" ; then - AC_DEFINE_UNQUOTED(HAVE_LIBNOTIFY, 1, - [use libnotify for status messages]) - fi -fi -AM_CONDITIONAL(HAVE_LIBNOTIFY, [test "x$with_libnotify" = "xyes"]) -AC_SUBST(LIBNOTIFY_CFLAGS) -AC_SUBST(LIBNOTIFY_LIBS) +savedCFLAGS="$CFLAGS" +savedLIBS="$LIBS" +CFLAGS="$LIBNOTIFY_CFLAGS $CFLAGS" +LIBS="$LIBNOTIFY_LIBS $LIBS" +AC_CHECK_FUNCS([notify_notification_new_with_status_icon \ + notify_notification_set_hint]) +CFLAGS="$savedCFLAGS" +LIBS="$savedLIBS" + +dnl libgnome-control-center +dnl for the new panel +PKG_CHECK_MODULES(CONTROL_CENTER, [ + libgnome-control-center >= 2.31.4]) +PANELS_DIR="${libdir}/control-center-1/panels" +AC_SUBST(PANELS_DIR) dnl secmem dnl Checks for library functions. @@ -281,18 +273,16 @@ krb5-auth-dialog.spec src/Makefile src/krb5-auth-dialog.1 secmem/Makefile -gtksecentry/Makefile icons/Makefile icons/22x22/Makefile icons/48x48/Makefile icons/scalable/Makefile etpo/Makefile po/Makefile.in -preferences/Makefile -preferences/krb5-auth-dialog-preferences.1 help/Makefile examples/Makefile plugins/Makefile +cc-panel/Makefile ]) AC_MSG_NOTICE([]) @@ -316,6 +306,7 @@ AC_MSG_NOTICE([ Network Manager: $NETWORK_MANAGER_CFLAGS $NETWORK_MANAGER_LIBS] else AC_MSG_NOTICE([ Network Manager: no]) fi +AC_MSG_NOTICE([ gnome-cc: $CONTROL_CENTER_CFLAGS $CONTROL_CENTER_LIBS]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Miscellaneous]) AC_MSG_NOTICE([]) diff --git a/etpo/Makefile.in b/etpo/Makefile.in index 3d0aebc..0171af7 100644 --- a/etpo/Makefile.in +++ b/etpo/Makefile.in @@ -116,6 +116,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -203,6 +205,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ diff --git a/examples/Makefile.in b/examples/Makefile.in index 33148b6..27aa765 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -69,6 +69,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -156,6 +158,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ diff --git a/gtksecentry/Makefile.am b/gtksecentry/Makefile.am deleted file mode 100644 index 2daf7ed..0000000 --- a/gtksecentry/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -NULL = - -AM_CPPFLAGS = $(GTK_CFLAGS) \ - -I$(top_srcdir)/secmem -I$(top_srcdir)/gtksecentry - -noinst_LIBRARIES = libgtksecentry.a - -libgtksecentry_a_SOURCES = \ - gtksecentry.c \ - gtksecentry.h \ - gseal-gtk-compat.h - diff --git a/gtksecentry/gseal-gtk-compat.h b/gtksecentry/gseal-gtk-compat.h deleted file mode 100644 index bbad970..0000000 --- a/gtksecentry/gseal-gtk-compat.h +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ -/* - * Copyright © 2009 Thomas H.P. Andersen <phomes@gmail.com>, - * 2009 Javier Jardón <jjardon@gnome.org> - * 2010 Guido Günther <agx@sigxcpu.org> - * - * This runtime is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation; either version 2.1, or (at your option) - * any later version. - * - * This runtime is distributed in the hope runtime 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 Lesser General Public License - * along with this runtime; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifndef GSEAL_GTK_COMPAT_H -#define GSEAL_GTK_COMPAT_H - -G_BEGIN_DECLS - -#if !GTK_CHECK_VERSION (2, 20, 0) -#define gtk_widget_get_realized(widget) GTK_WIDGET_REALIZED(widget) -#define gtk_widget_get_mapped(widget) GTK_WIDGET_MAPPED(widget) -#endif /* GTK < 2.20.0 */ - -#if !GTK_CHECK_VERSION (2, 18, 0) -#define gtk_cell_renderer_get_alignment(cell, xalign, yalign) g_object_get (cell, "xalign", xalign, "yalign", yalign, NULL) -#define gtk_cell_renderer_get_padding(cell, xpad, ypad) g_object_get (cell, "xpad", xpad, "ypad", ypad, NULL) -#define gtk_cell_renderer_set_padding(cell, xpad, ypad) g_object_set (cell, "xpad", xpad, "ypad", ypad, NULL) -#define gtk_widget_get_allocation(widget, alloc) (*(alloc)=(widget)->allocation) -#define gtk_widget_set_allocation(widget, alloc) ((widget)->allocation=*(alloc)) -#define gtk_widget_get_app_paintable(widget) (GTK_WIDGET_APP_PAINTABLE (widget)) -#define gtk_widget_set_can_default(widget, can_default) ((can_default) ? (GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_DEFAULT)) : (GTK_WIDGET_UNSET_FLAGS (widget, GTK_CAN_DEFAULT))) -#define gtk_widget_set_can_focus(widget, can_focus) ((can_focus) ? (GTK_WIDGET_SET_FLAGS (widget, GTK_CAN_FOCUS)) : (GTK_WIDGET_UNSET_FLAGS (widget, GTK_CAN_FOCUS))) -#define gtk_widget_set_double_buffered(widget, double_buffered) ((double_buffered) ? (GTK_WIDGET_SET_FLAGS (widget, GTK_DOUBLE_BUFFERED)) : (GTK_WIDGET_UNSET_FLAGS (widget, GTK_DOUBLE_BUFFERED))) -#define gtk_widget_is_drawable(widget) (GTK_WIDGET_DRAWABLE (widget)) -#define gtk_widget_is_sensitive(widget) (GTK_WIDGET_IS_SENSITIVE(widget)) -#define gtk_widget_has_focus(widget) (GTK_WIDGET_HAS_FOCUS (widget)) -#define gtk_widget_get_has_window(widget) (!GTK_WIDGET_NO_WINDOW (widget)) -#define gtk_widget_get_sensitive(widget) (GTK_WIDGET_SENSITIVE(widget)) -#define gtk_widget_get_state(widget) ((widget)->state) -#define gtk_widget_get_visible(widget) (GTK_WIDGET_VISIBLE (widget)) -#define gtk_widget_set_window(widget, _window) ((widget)->window=_window) -#define gtk_widget_set_realized(widget, realized) ((realized) ? (GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED)) : (GTK_WIDGET_UNSET_FLAGS (widget, GTK_REALIZED))) -#endif /* GTK+ < 2.18.0 */ - -#if !GTK_CHECK_VERSION (2, 14, 0) -#define gtk_window_get_default_widget(window) ((window)->default_widget) -#define gtk_widget_get_window(widget) ((widget)->window) -#endif /* GTK+ < 2.14.0 */ - -G_END_DECLS - -#endif /* GSEAL_GTK_COMPAT_H */ -/* ex:ts=8:noet: */ diff --git a/gtksecentry/gtksecentry.c b/gtksecentry/gtksecentry.c deleted file mode 100644 index f68f094..0000000 --- a/gtksecentry/gtksecentry.c +++ /dev/null @@ -1,3364 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * Copyright (C) 2004 Albrecht Dre - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -/* - * Heavily stripped down for use in pinentry-gtk-2 by Albrecht Dre - * <albrecht.dress@arcor.de> Feb. 2004: - * - * The entry is now always invisible, uses secure memory methods to - * allocate the text memory, and all potentially dangerous methods - * (copy & paste, popup, etc.) have been removed. - */ - -#include <stdlib.h> -#include <string.h> -#include <gdk/gdkkeysyms.h> -#include <gtk/gtk.h> - -#include "gtksecentry.h" -#include "memory.h" - -#define MIN_SECURE_ENTRY_WIDTH 150 -#define DRAW_TIMEOUT 20 -#define INNER_BORDER 2 - -/* Initial size of buffer, in bytes */ -#define MIN_SIZE 16 - -/* Maximum size of text buffer, in bytes */ -#define MAX_SIZE G_MAXUSHORT - -enum { - ACTIVATE, - MOVE_CURSOR, - INSERT_AT_CURSOR, - DELETE_FROM_CURSOR, - LAST_SIGNAL -}; - -enum { - PROP_0, - PROP_CURSOR_POSITION, - PROP_SELECTION_BOUND, - PROP_MAX_LENGTH, - PROP_HAS_FRAME, - PROP_INVISIBLE_CHAR, - PROP_ACTIVATES_DEFAULT, - PROP_WIDTH_CHARS, - PROP_SCROLL_OFFSET, - PROP_TEXT -}; - -static guint signals[LAST_SIGNAL] = { 0 }; - -/* GObject, GtkObject methods - */ -static void gtk_secure_entry_class_init(GtkSecureEntryClass * klass); -static void gtk_secure_entry_editable_init(GtkEditableClass * iface); -static void gtk_secure_entry_cell_editable_init(GtkCellEditableIface * - iface); -static void gtk_secure_entry_init(GtkSecureEntry * entry); -static void gtk_secure_entry_set_property(GObject * object, - guint prop_id, - const GValue * value, - GParamSpec * pspec); -static void gtk_secure_entry_get_property(GObject * object, - guint prop_id, - GValue * value, - GParamSpec * pspec); -static void gtk_secure_entry_finalize(GObject * object); - -/* GtkWidget methods - */ -static void gtk_secure_entry_realize(GtkWidget * widget); -static void gtk_secure_entry_unrealize(GtkWidget * widget); -static void gtk_secure_entry_size_request(GtkWidget * widget, - GtkRequisition * requisition); -static void gtk_secure_entry_size_allocate(GtkWidget * widget, - GtkAllocation * allocation); -static void gtk_secure_entry_draw_frame(GtkWidget * widget); -static gint gtk_secure_entry_expose(GtkWidget * widget, - GdkEventExpose * event); -static gint gtk_secure_entry_button_press(GtkWidget * widget, - GdkEventButton * event); -static gint gtk_secure_entry_button_release(GtkWidget * widget, - GdkEventButton * event); -static gint gtk_secure_entry_motion_notify(GtkWidget * widget, - GdkEventMotion * event); -static gint gtk_secure_entry_key_press(GtkWidget * widget, - GdkEventKey * event); -static gint gtk_secure_entry_key_release(GtkWidget * widget, - GdkEventKey * event); -static gint gtk_secure_entry_focus_in(GtkWidget * widget, - GdkEventFocus * event); -static gint gtk_secure_entry_focus_out(GtkWidget * widget, - GdkEventFocus * event); -static void gtk_secure_entry_grab_focus(GtkWidget * widget); -static void gtk_secure_entry_style_set(GtkWidget * widget, - GtkStyle * previous_style); -static void gtk_secure_entry_direction_changed(GtkWidget * widget, - GtkTextDirection - previous_dir); -static void gtk_secure_entry_state_changed(GtkWidget * widget, - GtkStateType previous_state); -static void gtk_secure_entry_screen_changed(GtkWidget * widget, - GdkScreen * old_screen); - -/* GtkEditable method implementations - */ -static void gtk_secure_entry_insert_text(GtkEditable * editable, - const gchar * new_text, - gint new_text_length, - gint * position); -static void gtk_secure_entry_delete_text(GtkEditable * editable, - gint start_pos, gint end_pos); -static void gtk_secure_entry_real_set_position(GtkEditable * editable, - gint position); -static gint gtk_secure_entry_get_position(GtkEditable * editable); -static void gtk_secure_entry_set_selection_bounds(GtkEditable * editable, - gint start, gint end); -static gboolean gtk_secure_entry_get_selection_bounds(GtkEditable * - editable, - gint * start, - gint * end); - -/* GtkCellEditable method implementations - */ -static void gtk_secure_entry_start_editing(GtkCellEditable * cell_editable, - GdkEvent * event); - -/* Default signal handlers - */ -static void gtk_secure_entry_real_insert_text(GtkEditable * editable, - const gchar * new_text, - gint new_text_length, - gint * position); -static void gtk_secure_entry_real_delete_text(GtkEditable * editable, - gint start_pos, - gint end_pos); -static void gtk_secure_entry_move_cursor(GtkSecureEntry * entry, - GtkMovementStep step, - gint count, - gboolean extend_selection); -static void gtk_secure_entry_insert_at_cursor(GtkSecureEntry * entry, - const gchar * str); -static void gtk_secure_entry_delete_from_cursor(GtkSecureEntry * entry, - GtkDeleteType type, - gint count); -static void gtk_secure_entry_real_activate(GtkSecureEntry * entry); - -static void gtk_secure_entry_keymap_direction_changed(GdkKeymap * keymap, - GtkSecureEntry * - entry); -/* IM Context Callbacks - */ -static void gtk_secure_entry_commit_cb(GtkIMContext * context, - const gchar * str, - GtkSecureEntry * entry); -static void gtk_secure_entry_preedit_changed_cb(GtkIMContext * context, - GtkSecureEntry * entry); -static gboolean gtk_secure_entry_retrieve_surrounding_cb(GtkIMContext * - context, - GtkSecureEntry * - entry); -static gboolean gtk_secure_entry_delete_surrounding_cb(GtkIMContext * - context, - gint offset, - gint n_chars, - GtkSecureEntry * - entry); - -/* Internal routines - */ -static void gtk_secure_entry_enter_text(GtkSecureEntry * entry, - const gchar * str); -static void gtk_secure_entry_set_positions(GtkSecureEntry * entry, - gint current_pos, - gint selection_bound); -static void gtk_secure_entry_draw_text(GtkSecureEntry * entry); -static void gtk_secure_entry_draw_cursor(GtkSecureEntry * entry); -static PangoLayout *gtk_secure_entry_ensure_layout(GtkSecureEntry * entry, - gboolean - include_preedit); -static void gtk_secure_entry_reset_layout(GtkSecureEntry * entry); -static void gtk_secure_entry_queue_draw(GtkSecureEntry * entry); -static void gtk_secure_entry_reset_im_context(GtkSecureEntry * entry); -static void gtk_secure_entry_recompute(GtkSecureEntry * entry); -static gint gtk_secure_entry_find_position(GtkSecureEntry * entry, gint x); -static void gtk_secure_entry_get_cursor_locations(GtkSecureEntry * entry, - gint * strong_x, - gint * weak_x); -static void gtk_secure_entry_adjust_scroll(GtkSecureEntry * entry); -static gint gtk_secure_entry_move_visually(GtkSecureEntry * editable, - gint start, gint count); -static gint gtk_secure_entry_move_logically(GtkSecureEntry * entry, - gint start, gint count); -static gboolean gtk_secure_entry_mnemonic_activate(GtkWidget * widget, - gboolean group_cycling); -static void gtk_secure_entry_check_cursor_blink(GtkSecureEntry * entry); -static void gtk_secure_entry_pend_cursor_blink(GtkSecureEntry * entry); -static void get_text_area_size(GtkSecureEntry * entry, - gint * x, - gint * y, gint * width, gint * height); -static void get_widget_window_size(GtkSecureEntry * entry, - gint * x, - gint * y, gint * width, gint * height); - - - -#define _gtk_marshal_VOID__VOID g_cclosure_marshal_VOID__VOID -#define _gtk_marshal_VOID__STRING g_cclosure_marshal_VOID__STRING -static void _gtk_marshal_VOID__ENUM_INT_BOOLEAN(GClosure * closure, - GValue * return_value, - guint n_param_values, - const GValue * - param_values, - gpointer invocation_hint, - gpointer marshal_data); -static void _gtk_marshal_VOID__ENUM_INT(GClosure * closure, - GValue * return_value, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint, - gpointer marshal_data); - - -static GtkWidgetClass *parent_class = NULL; - -gboolean g_use_secure_mem = FALSE; - -# define g_sec_new(type, count) \ - ((type *) g_sec_malloc ((unsigned) sizeof (type) * (count))) - -#define WITH_SECURE_MEM(EXP) do { \ - gboolean tmp = g_use_secure_mem; \ - g_use_secure_mem = TRUE; \ - EXP; \ - g_use_secure_mem = tmp; \ - } while(0) - - -gpointer -g_malloc(gsize size) -{ - gpointer p; - - if (size == 0) - return NULL; - - if (g_use_secure_mem) - p = (gpointer) secmem_malloc(size); - else - p = (gpointer) malloc(size); - if (!p) - g_error("could not allocate %"G_GSIZE_FORMAT" bytes", size); - - return p; -} - -gpointer -g_malloc0(gsize size) -{ - gpointer p; - - if (size == 0) - return NULL; - - if (g_use_secure_mem) { - p = (gpointer) secmem_malloc(size); - if (p) - memset(p, 0, size); - } else - p = (gpointer) calloc(size, 1); - if (!p) - g_error("could not allocate %"G_GSIZE_FORMAT" bytes", size); - - return p; -} - -gpointer -g_realloc(gpointer mem, gsize size) -{ - gpointer p; - - if (size == 0) { - g_free(mem); - - return NULL; - } - - if (!mem) { - if (g_use_secure_mem) - p = (gpointer) secmem_malloc(size); - else - p = (gpointer) malloc(size); - } else { - if (g_use_secure_mem) { - g_assert(m_is_secure(mem)); - p = (gpointer) secmem_realloc(mem, size); - } else - p = (gpointer) realloc(mem, size); - } - - if (!p) - g_error("could not reallocate %lu bytes", (gulong) size); - - return p; -} - -void -g_free(gpointer mem) -{ - if (mem) { - if (m_is_secure(mem)) - secmem_free(mem); - else - free(mem); - } -} - -GType -gtk_secure_entry_get_type(void) -{ - static GType entry_type = 0; - - if (!entry_type) { - static const GTypeInfo entry_info = { - sizeof(GtkSecureEntryClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) gtk_secure_entry_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof(GtkSecureEntry), - 0, /* n_preallocs */ - (GInstanceInitFunc) gtk_secure_entry_init, - NULL, - }; - - static const GInterfaceInfo editable_info = { - (GInterfaceInitFunc) gtk_secure_entry_editable_init, /* interface_init */ - NULL, /* interface_finalize */ - NULL /* interface_data */ - }; - - static const GInterfaceInfo cell_editable_info = { - (GInterfaceInitFunc) gtk_secure_entry_cell_editable_init, /* interface_init */ - NULL, /* interface_finalize */ - NULL /* interface_data */ - }; - - entry_type = - g_type_register_static(GTK_TYPE_WIDGET, "GtkSecureEntry", - &entry_info, 0); - - g_type_add_interface_static(entry_type, - GTK_TYPE_EDITABLE, &editable_info); - g_type_add_interface_static(entry_type, - GTK_TYPE_CELL_EDITABLE, - &cell_editable_info); - } - - return entry_type; -} - -static void -add_move_binding(GtkBindingSet * binding_set, - guint keyval, - guint modmask, GtkMovementStep step, gint count) -{ - g_return_if_fail((modmask & GDK_SHIFT_MASK) == 0); - - gtk_binding_entry_add_signal(binding_set, keyval, modmask, - "move_cursor", 3, - G_TYPE_ENUM, step, - G_TYPE_INT, count, G_TYPE_BOOLEAN, FALSE); - - /* Selection-extending version */ - gtk_binding_entry_add_signal(binding_set, keyval, - modmask | GDK_SHIFT_MASK, "move_cursor", - 3, G_TYPE_ENUM, step, G_TYPE_INT, count, - G_TYPE_BOOLEAN, TRUE); -} - -static void -gtk_secure_entry_class_init(GtkSecureEntryClass * class) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS(class); - GtkWidgetClass *widget_class; - GtkBindingSet *binding_set; - - widget_class = (GtkWidgetClass *) class; - parent_class = g_type_class_peek_parent(class); - - gobject_class->finalize = gtk_secure_entry_finalize; - gobject_class->set_property = gtk_secure_entry_set_property; - gobject_class->get_property = gtk_secure_entry_get_property; - - widget_class->realize = gtk_secure_entry_realize; - widget_class->unrealize = gtk_secure_entry_unrealize; - widget_class->size_request = gtk_secure_entry_size_request; - widget_class->size_allocate = gtk_secure_entry_size_allocate; - widget_class->expose_event = gtk_secure_entry_expose; - widget_class->button_press_event = gtk_secure_entry_button_press; - widget_class->button_release_event = gtk_secure_entry_button_release; - widget_class->motion_notify_event = gtk_secure_entry_motion_notify; - widget_class->key_press_event = gtk_secure_entry_key_press; - widget_class->key_release_event = gtk_secure_entry_key_release; - widget_class->focus_in_event = gtk_secure_entry_focus_in; - widget_class->focus_out_event = gtk_secure_entry_focus_out; - widget_class->grab_focus = gtk_secure_entry_grab_focus; - widget_class->style_set = gtk_secure_entry_style_set; - widget_class->direction_changed = gtk_secure_entry_direction_changed; - widget_class->state_changed = gtk_secure_entry_state_changed; - widget_class->screen_changed = gtk_secure_entry_screen_changed; - widget_class->mnemonic_activate = gtk_secure_entry_mnemonic_activate; - - class->move_cursor = gtk_secure_entry_move_cursor; - class->insert_at_cursor = gtk_secure_entry_insert_at_cursor; - class->delete_from_cursor = gtk_secure_entry_delete_from_cursor; - class->activate = gtk_secure_entry_real_activate; - - g_object_class_install_property(gobject_class, - PROP_CURSOR_POSITION, - g_param_spec_int("cursor_position", - "Cursor Position", - "The current position of the insertion cursor in chars", - 0, MAX_SIZE, 0, - G_PARAM_READABLE)); - - g_object_class_install_property(gobject_class, - PROP_SELECTION_BOUND, - g_param_spec_int("selection_bound", - "Selection Bound", - "The position of the opposite end of the selection from the cursor in chars", - 0, MAX_SIZE, 0, - G_PARAM_READABLE)); - - g_object_class_install_property(gobject_class, - PROP_MAX_LENGTH, - g_param_spec_int("max_length", - "Maximum length", - "Maximum number of characters for this entry. Zero if no maximum", - 0, MAX_SIZE, 0, - G_PARAM_READABLE | - G_PARAM_WRITABLE)); - - g_object_class_install_property(gobject_class, - PROP_HAS_FRAME, - g_param_spec_boolean("has_frame", - "Has Frame", - "FALSE removes outside bevel from entry", - TRUE, - G_PARAM_READABLE | - G_PARAM_WRITABLE)); - - g_object_class_install_property(gobject_class, - PROP_INVISIBLE_CHAR, - g_param_spec_unichar("invisible_char", - "Invisible character", - "The character to use when masking entry contents (in \"password mode\")", - '*', - G_PARAM_READABLE | - G_PARAM_WRITABLE)); - - g_object_class_install_property(gobject_class, - PROP_ACTIVATES_DEFAULT, - g_param_spec_boolean - ("activates_default", - "Activates default", - "Whether to activate the default widget (such as the default button in a dialog) when Enter is pressed", - FALSE, - G_PARAM_READABLE | G_PARAM_WRITABLE)); - g_object_class_install_property(gobject_class, PROP_WIDTH_CHARS, - g_param_spec_int("width_chars", - "Width in chars", - "Number of characters to leave space for in the entry", - -1, G_MAXINT, -1, - G_PARAM_READABLE | - G_PARAM_WRITABLE)); - - g_object_class_install_property(gobject_class, - PROP_SCROLL_OFFSET, - g_param_spec_int("scroll_offset", - "Scroll offset", - "Number of pixels of the entry scrolled off the screen to the left", - 0, G_MAXINT, 0, - G_PARAM_READABLE)); - - g_object_class_install_property(gobject_class, - PROP_TEXT, - g_param_spec_string("text", - "Text", - "The contents of the entry", - "", - G_PARAM_READABLE | - G_PARAM_WRITABLE)); - - /* Action signals */ - - signals[ACTIVATE] = - g_signal_new("activate", - G_OBJECT_CLASS_TYPE(gobject_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET(GtkSecureEntryClass, activate), - NULL, NULL, _gtk_marshal_VOID__VOID, G_TYPE_NONE, 0); - widget_class->activate_signal = signals[ACTIVATE]; - - signals[MOVE_CURSOR] = - g_signal_new("move_cursor", - G_OBJECT_CLASS_TYPE(gobject_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET(GtkSecureEntryClass, move_cursor), - NULL, NULL, - _gtk_marshal_VOID__ENUM_INT_BOOLEAN, - G_TYPE_NONE, 3, - GTK_TYPE_MOVEMENT_STEP, G_TYPE_INT, G_TYPE_BOOLEAN); - - signals[INSERT_AT_CURSOR] = - g_signal_new("insert_at_cursor", - G_OBJECT_CLASS_TYPE(gobject_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET(GtkSecureEntryClass, - insert_at_cursor), NULL, NULL, - _gtk_marshal_VOID__STRING, G_TYPE_NONE, 1, - G_TYPE_STRING); - - signals[DELETE_FROM_CURSOR] = - g_signal_new("delete_from_cursor", - G_OBJECT_CLASS_TYPE(gobject_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET(GtkSecureEntryClass, - delete_from_cursor), NULL, NULL, - _gtk_marshal_VOID__ENUM_INT, G_TYPE_NONE, 2, - GTK_TYPE_DELETE_TYPE, G_TYPE_INT); - - /* - * Key bindings - */ - - binding_set = gtk_binding_set_by_class(class); - - /* Moving the insertion point */ - add_move_binding(binding_set, GDK_Right, 0, - GTK_MOVEMENT_VISUAL_POSITIONS, 1); - - add_move_binding(binding_set, GDK_Left, 0, - GTK_MOVEMENT_VISUAL_POSITIONS, -1); - - add_move_binding(binding_set, GDK_KP_Right, 0, - GTK_MOVEMENT_VISUAL_POSITIONS, 1); - - add_move_binding(binding_set, GDK_KP_Left, 0, - GTK_MOVEMENT_VISUAL_POSITIONS, -1); - - add_move_binding(binding_set, GDK_Right, GDK_CONTROL_MASK, - GTK_MOVEMENT_WORDS, 1); - - add_move_binding(binding_set, GDK_Left, GDK_CONTROL_MASK, - GTK_MOVEMENT_WORDS, -1); - - add_move_binding(binding_set, GDK_KP_Right, GDK_CONTROL_MASK, - GTK_MOVEMENT_WORDS, 1); - - add_move_binding(binding_set, GDK_KP_Left, GDK_CONTROL_MASK, - GTK_MOVEMENT_WORDS, -1); - - add_move_binding(binding_set, GDK_Home, 0, - GTK_MOVEMENT_DISPLAY_LINE_ENDS, -1); - - add_move_binding(binding_set, GDK_End, 0, - GTK_MOVEMENT_DISPLAY_LINE_ENDS, 1); - - add_move_binding(binding_set, GDK_KP_Home, 0, - GTK_MOVEMENT_DISPLAY_LINE_ENDS, -1); - - add_move_binding(binding_set, GDK_KP_End, 0, - GTK_MOVEMENT_DISPLAY_LINE_ENDS, 1); - - add_move_binding(binding_set, GDK_Home, GDK_CONTROL_MASK, - GTK_MOVEMENT_BUFFER_ENDS, -1); - - add_move_binding(binding_set, GDK_End, GDK_CONTROL_MASK, - GTK_MOVEMENT_BUFFER_ENDS, 1); - - add_move_binding(binding_set, GDK_KP_Home, GDK_CONTROL_MASK, - GTK_MOVEMENT_BUFFER_ENDS, -1); - - add_move_binding(binding_set, GDK_KP_End, GDK_CONTROL_MASK, - GTK_MOVEMENT_BUFFER_ENDS, 1); - - /* Select all - */ - gtk_binding_entry_add_signal(binding_set, GDK_a, GDK_CONTROL_MASK, - "move_cursor", 3, - GTK_TYPE_MOVEMENT_STEP, - GTK_MOVEMENT_BUFFER_ENDS, G_TYPE_INT, -1, - G_TYPE_BOOLEAN, FALSE); - gtk_binding_entry_add_signal(binding_set, GDK_a, GDK_CONTROL_MASK, - "move_cursor", 3, GTK_TYPE_MOVEMENT_STEP, - GTK_MOVEMENT_BUFFER_ENDS, G_TYPE_INT, 1, - G_TYPE_BOOLEAN, TRUE); - - - /* Activate - */ - gtk_binding_entry_add_signal(binding_set, GDK_Return, 0, - "activate", 0); - gtk_binding_entry_add_signal(binding_set, GDK_KP_Enter, 0, - "activate", 0); - - /* Deleting text */ - gtk_binding_entry_add_signal(binding_set, GDK_Delete, 0, - "delete_from_cursor", 2, - G_TYPE_ENUM, GTK_DELETE_CHARS, - G_TYPE_INT, 1); - - gtk_binding_entry_add_signal(binding_set, GDK_KP_Delete, 0, - "delete_from_cursor", 2, - G_TYPE_ENUM, GTK_DELETE_CHARS, - G_TYPE_INT, 1); - - gtk_binding_entry_add_signal(binding_set, GDK_BackSpace, 0, - "delete_from_cursor", 2, - G_TYPE_ENUM, GTK_DELETE_CHARS, - G_TYPE_INT, -1); - - /* Make this do the same as Backspace, to help with mis-typing */ - gtk_binding_entry_add_signal(binding_set, GDK_BackSpace, - GDK_SHIFT_MASK, "delete_from_cursor", 2, - G_TYPE_ENUM, GTK_DELETE_CHARS, G_TYPE_INT, - -1); - - gtk_binding_entry_add_signal(binding_set, GDK_Delete, GDK_CONTROL_MASK, - "delete_from_cursor", 2, - G_TYPE_ENUM, GTK_DELETE_WORD_ENDS, - G_TYPE_INT, 1); - - gtk_binding_entry_add_signal(binding_set, GDK_KP_Delete, - GDK_CONTROL_MASK, "delete_from_cursor", 2, - G_TYPE_ENUM, GTK_DELETE_WORD_ENDS, - G_TYPE_INT, 1); - - gtk_binding_entry_add_signal(binding_set, GDK_BackSpace, - GDK_CONTROL_MASK, "delete_from_cursor", 2, - G_TYPE_ENUM, GTK_DELETE_WORD_ENDS, - G_TYPE_INT, -1); -} - -static void -gtk_secure_entry_editable_init(GtkEditableClass * iface) -{ - iface->do_insert_text = gtk_secure_entry_insert_text; - iface->do_delete_text = gtk_secure_entry_delete_text; - iface->insert_text = gtk_secure_entry_real_insert_text; - iface->delete_text = gtk_secure_entry_real_delete_text; - iface->set_selection_bounds = gtk_secure_entry_set_selection_bounds; - iface->get_selection_bounds = gtk_secure_entry_get_selection_bounds; - iface->set_position = gtk_secure_entry_real_set_position; - iface->get_position = gtk_secure_entry_get_position; -} - -static void -gtk_secure_entry_cell_editable_init(GtkCellEditableIface * iface) -{ - iface->start_editing = gtk_secure_entry_start_editing; -} - -static void -gtk_secure_entry_set_property(GObject * object, - guint prop_id, - const GValue * value, GParamSpec * pspec) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(object); - - switch (prop_id) { - case PROP_MAX_LENGTH: - gtk_secure_entry_set_max_length(entry, g_value_get_int(value)); - break; - - case PROP_HAS_FRAME: - gtk_secure_entry_set_has_frame(entry, g_value_get_boolean(value)); - break; - - case PROP_INVISIBLE_CHAR: - gtk_secure_entry_set_invisible_char(entry, - g_value_get_uint(value)); - break; - - case PROP_ACTIVATES_DEFAULT: - gtk_secure_entry_set_activates_default(entry, - g_value_get_boolean(value)); - break; - - case PROP_WIDTH_CHARS: - gtk_secure_entry_set_width_chars(entry, g_value_get_int(value)); - break; - - case PROP_TEXT: - gtk_secure_entry_set_text(entry, g_value_get_string(value)); - break; - - case PROP_SCROLL_OFFSET: - case PROP_CURSOR_POSITION: - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} - -static void -gtk_secure_entry_get_property(GObject * object, - guint prop_id, - GValue * value, GParamSpec * pspec) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(object); - - switch (prop_id) { - case PROP_CURSOR_POSITION: - g_value_set_int(value, entry->current_pos); - break; - case PROP_SELECTION_BOUND: - g_value_set_int(value, entry->selection_bound); - break; - case PROP_MAX_LENGTH: - g_value_set_int(value, entry->text_max_length); - break; - case PROP_HAS_FRAME: - g_value_set_boolean(value, entry->has_frame); - break; - case PROP_INVISIBLE_CHAR: - g_value_set_uint(value, entry->invisible_char); - break; - case PROP_ACTIVATES_DEFAULT: - g_value_set_boolean(value, entry->activates_default); - break; - case PROP_WIDTH_CHARS: - g_value_set_int(value, entry->width_chars); - break; - case PROP_SCROLL_OFFSET: - g_value_set_int(value, entry->scroll_offset); - break; - case PROP_TEXT: - g_value_set_string(value, gtk_secure_entry_get_text(entry)); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); - break; - } -} - -static void -gtk_secure_entry_init(GtkSecureEntry * entry) -{ - gtk_widget_set_can_focus (GTK_WIDGET(entry), TRUE); - - entry->text_size = MIN_SIZE; - WITH_SECURE_MEM(entry->text = g_malloc(entry->text_size)); - entry->text[0] = '\0'; - - entry->invisible_char = '*'; - entry->width_chars = -1; - entry->is_cell_renderer = FALSE; - entry->editing_canceled = FALSE; - entry->has_frame = TRUE; - - /* This object is completely private. No external entity can gain a reference - * to it; so we create it here and destroy it in finalize(). - */ - entry->im_context = gtk_im_multicontext_new(); - - g_signal_connect(entry->im_context, "commit", - G_CALLBACK(gtk_secure_entry_commit_cb), entry); - g_signal_connect(entry->im_context, "preedit_changed", - G_CALLBACK(gtk_secure_entry_preedit_changed_cb), - entry); - g_signal_connect(entry->im_context, "retrieve_surrounding", - G_CALLBACK(gtk_secure_entry_retrieve_surrounding_cb), - entry); - g_signal_connect(entry->im_context, "delete_surrounding", - G_CALLBACK(gtk_secure_entry_delete_surrounding_cb), - entry); -} - -static void -gtk_secure_entry_finalize(GObject * object) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(object); - - if (entry->cached_layout) - g_object_unref(entry->cached_layout); - - g_object_unref(entry->im_context); - - if (entry->blink_timeout) - g_source_remove(entry->blink_timeout); - - if (entry->recompute_idle) - g_source_remove(entry->recompute_idle); - - entry->text_size = 0; - - if (entry->text) - WITH_SECURE_MEM(g_free(entry->text)); - entry->text = NULL; - - G_OBJECT_CLASS(parent_class)->finalize(object); -} - -static void -gtk_secure_entry_realize(GtkWidget * widget) -{ - GtkSecureEntry *entry; - GtkEditable *editable; - GdkWindow *window; - GtkStyle *style; - GdkWindowAttr attributes; - gint attributes_mask; - - gtk_widget_set_realized (widget, TRUE); - - entry = GTK_SECURE_ENTRY(widget); - editable = GTK_EDITABLE(widget); - - attributes.window_type = GDK_WINDOW_CHILD; - - get_widget_window_size(entry, &attributes.x, &attributes.y, - &attributes.width, &attributes.height); - - attributes.wclass = GDK_INPUT_OUTPUT; - attributes.visual = gtk_widget_get_visual(widget); - attributes.colormap = gtk_widget_get_colormap(widget); - attributes.event_mask = gtk_widget_get_events(widget); - attributes.event_mask |= (GDK_EXPOSURE_MASK | - GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON1_MOTION_MASK | - GDK_BUTTON3_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK | - GDK_POINTER_MOTION_MASK | - GDK_ENTER_NOTIFY_MASK | - GDK_LEAVE_NOTIFY_MASK); - attributes_mask = - GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - - window = gdk_window_new(gtk_widget_get_parent_window(widget), - &attributes, attributes_mask); - gtk_widget_set_window (widget, window); - gdk_window_set_user_data(window, entry); - - get_text_area_size(entry, &attributes.x, &attributes.y, - &attributes.width, &attributes.height); - - attributes.cursor = - gdk_cursor_new_for_display(gtk_widget_get_display(widget), - GDK_XTERM); - attributes_mask |= GDK_WA_CURSOR; - - entry->text_area = - gdk_window_new(window, &attributes, attributes_mask); - gdk_window_set_user_data(entry->text_area, entry); - - gdk_cursor_unref(attributes.cursor); - - style = gtk_widget_get_style (widget); - style = gtk_style_attach(style, window); - gtk_widget_set_style (widget, style); - - gdk_window_set_background(window, - &style->base[gtk_widget_get_state (widget)]); - gdk_window_set_background(entry->text_area, - &style->base[gtk_widget_get_state (widget)]); - - gdk_window_show(entry->text_area); - - gtk_im_context_set_client_window(entry->im_context, entry->text_area); - - gtk_secure_entry_adjust_scroll(entry); -} - -static void -gtk_secure_entry_unrealize(GtkWidget * widget) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - - gtk_secure_entry_reset_layout(entry); - - gtk_im_context_set_client_window(entry->im_context, NULL); - - if (entry->text_area) { - gdk_window_set_user_data(entry->text_area, NULL); - gdk_window_destroy(entry->text_area); - entry->text_area = NULL; - } - - if (GTK_WIDGET_CLASS(parent_class)->unrealize) - (*GTK_WIDGET_CLASS(parent_class)->unrealize) (widget); -} - -static void -get_borders(GtkSecureEntry * entry, gint * xborder, gint * yborder) -{ - GtkWidget *widget = GTK_WIDGET(entry); - GtkStyle *style; - gint focus_width; - gboolean interior_focus; - - gtk_widget_style_get(widget, - "interior-focus", &interior_focus, - "focus-line-width", &focus_width, NULL); - - style = gtk_widget_get_style (widget); - if (entry->has_frame) { - *xborder = style->xthickness; - *yborder = style->ythickness; - } else { - *xborder = 0; - *yborder = 0; - } - - if (!interior_focus) { - *xborder += focus_width; - *yborder += focus_width; - } -} - -static void -gtk_secure_entry_size_request(GtkWidget * widget, - GtkRequisition * requisition) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - GtkStyle *style; - PangoFontMetrics *metrics; - gint xborder, yborder; - PangoContext *context; - - style = gtk_widget_get_style (widget); - context = gtk_widget_get_pango_context(widget); - metrics = pango_context_get_metrics(context, - style->font_desc, - pango_context_get_language - (context)); - - entry->ascent = pango_font_metrics_get_ascent(metrics); - entry->descent = pango_font_metrics_get_descent(metrics); - - get_borders(entry, &xborder, &yborder); - - xborder += INNER_BORDER; - yborder += INNER_BORDER; - - if (entry->width_chars < 0) - requisition->width = MIN_SECURE_ENTRY_WIDTH + xborder * 2; - else { - gint char_width = - pango_font_metrics_get_approximate_char_width(metrics); - gint digit_width = - pango_font_metrics_get_approximate_digit_width(metrics); - gint char_pixels = - (MAX(char_width, digit_width) + PANGO_SCALE - 1) / PANGO_SCALE; - - requisition->width = - char_pixels * entry->width_chars + xborder * 2; - } - - requisition->height = - PANGO_PIXELS(entry->ascent + entry->descent) + yborder * 2; - - pango_font_metrics_unref(metrics); -} - -static void -get_text_area_size(GtkSecureEntry * entry, - gint * x, gint * y, gint * width, gint * height) -{ - gint xborder, yborder; - GtkRequisition requisition; - GtkWidget *widget = GTK_WIDGET(entry); - GtkAllocation allocation; - - gtk_widget_get_child_requisition(widget, &requisition); - gtk_widget_get_allocation (GTK_WIDGET(entry), &allocation); - - get_borders(entry, &xborder, &yborder); - - if (x) - *x = xborder; - - if (y) - *y = yborder; - - if (width) - *width = allocation.width - xborder * 2; - - if (height) - *height = requisition.height - yborder * 2; -} - -static void -get_widget_window_size(GtkSecureEntry * entry, - gint * x, gint * y, gint * width, gint * height) -{ - GtkRequisition requisition; - GtkWidget *widget = GTK_WIDGET(entry); - GtkAllocation allocation; - - gtk_widget_get_child_requisition(widget, &requisition); - gtk_widget_get_allocation (GTK_WIDGET(entry), &allocation); - - if (x) - *x = allocation.x; - - if (y) { - if (entry->is_cell_renderer) - *y = allocation.y; - else - *y = allocation.y + (allocation.height - - requisition.height) / 2; - } - - if (width) - *width = allocation.width; - - if (height) { - if (entry->is_cell_renderer) - *height = allocation.height; - else - *height = requisition.height; - } -} - -static void -gtk_secure_entry_size_allocate(GtkWidget * widget, - GtkAllocation * allocation) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - - gtk_widget_set_allocation (widget, allocation); - - if (gtk_widget_get_realized (widget)) { - /* We call gtk_widget_get_child_requisition, since we want (for - * backwards compatibility reasons) the realization here to - * be affected by the usize of the entry, if set - */ - gint x, y, width, height; - - get_widget_window_size(entry, &x, &y, &width, &height); - - gdk_window_move_resize(gtk_widget_get_window (widget), - x, y, width, height); - - get_text_area_size(entry, &x, &y, &width, &height); - - gdk_window_move_resize(entry->text_area, x, y, width, height); - - gtk_secure_entry_recompute(entry); - } -} - -static void -gtk_secure_entry_draw_frame(GtkWidget * widget) -{ - GtkStyle *style; - GdkWindow *window; - gint x = 0, y = 0; - gint width, height; - gboolean interior_focus; - gint focus_width; - - gtk_widget_style_get(widget, - "interior-focus", &interior_focus, - "focus-line-width", &focus_width, NULL); - - window = gtk_widget_get_window (widget); - gdk_drawable_get_size(window, &width, &height); - - if (gtk_widget_has_focus (widget) && !interior_focus) { - x += focus_width; - y += focus_width; - width -= 2 * focus_width; - height -= 2 * focus_width; - } - - style = gtk_widget_get_style (widget); - gtk_paint_shadow(style, window, - GTK_STATE_NORMAL, GTK_SHADOW_IN, - NULL, widget, "entry", x, y, width, height); - - if (gtk_widget_has_focus (widget) && !interior_focus) { - x -= focus_width; - y -= focus_width; - width += 2 * focus_width; - height += 2 * focus_width; - - gtk_paint_focus(style, window, - gtk_widget_get_state (widget), NULL, widget, "entry", 0, - 0, width, height); - } -} - -static gint -gtk_secure_entry_expose(GtkWidget * widget, GdkEventExpose * event) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - GtkStyle *style; - - if (gtk_widget_get_window (widget) == event->window) - gtk_secure_entry_draw_frame(widget); - else if (entry->text_area == event->window) { - gint area_width, area_height; - - get_text_area_size(entry, NULL, NULL, &area_width, &area_height); - - - style = gtk_widget_get_style (widget); - gtk_paint_flat_box(style, entry->text_area, - gtk_widget_get_state (widget), GTK_SHADOW_NONE, - NULL, widget, "entry_bg", - 0, 0, area_width, area_height); - - if ((entry->invisible_char != 0) && - gtk_widget_has_focus (widget) && - entry->selection_bound == entry->current_pos - && entry->cursor_visible) - gtk_secure_entry_draw_cursor(GTK_SECURE_ENTRY(widget)); - - gtk_secure_entry_draw_text(GTK_SECURE_ENTRY(widget)); - } - - return FALSE; -} - -static gint -gtk_secure_entry_button_press(GtkWidget * widget, GdkEventButton * event) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - gint tmp_pos; - - if (event->window != entry->text_area || - (entry->button && event->button != entry->button)) - return FALSE; - - entry->button = event->button; - - if (!gtk_widget_has_focus (widget)) { - entry->in_click = TRUE; - gtk_widget_grab_focus(widget); - entry->in_click = FALSE; - } - - tmp_pos = - gtk_secure_entry_find_position(entry, - event->x + entry->scroll_offset); - - if (event->button == 1) { - switch (event->type) { - case GDK_BUTTON_PRESS: - gtk_secure_entry_set_positions(entry, tmp_pos, tmp_pos); - break; - - default: - break; - } - - return TRUE; - } - - return FALSE; -} - -static gint -gtk_secure_entry_button_release(GtkWidget * widget, GdkEventButton * event) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - - if (event->window != entry->text_area - || entry->button != event->button) - return FALSE; - - entry->button = 0; - - return TRUE; -} - -static gint -gtk_secure_entry_motion_notify(GtkWidget * widget, GdkEventMotion * event) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - gint tmp_pos; - - if (entry->mouse_cursor_obscured) { - GdkCursor *cursor; - - cursor = - gdk_cursor_new_for_display(gtk_widget_get_display(widget), - GDK_XTERM); - gdk_window_set_cursor(entry->text_area, cursor); - gdk_cursor_unref(cursor); - entry->mouse_cursor_obscured = FALSE; - } - - if (event->window != entry->text_area || entry->button != 1) - return FALSE; - - if (event->is_hint || (entry->text_area != event->window)) - gdk_window_get_pointer(entry->text_area, NULL, NULL, NULL); - - { - gint height; - gdk_drawable_get_size(entry->text_area, NULL, &height); - - if (event->y < 0) - tmp_pos = 0; - else if (event->y >= height) - tmp_pos = entry->text_length; - else - tmp_pos = - gtk_secure_entry_find_position(entry, - event->x + - entry->scroll_offset); - - gtk_secure_entry_set_positions(entry, tmp_pos, -1); - } - - return TRUE; -} - -static void -set_invisible_cursor(GdkWindow * window) -{ - GdkBitmap *empty_bitmap; - GdkCursor *cursor; - GdkColor useless; - char invisible_cursor_bits[] = { 0x0 }; - - useless.red = useless.green = useless.blue = 0; - useless.pixel = 0; - - empty_bitmap = gdk_bitmap_create_from_data(window, - invisible_cursor_bits, 1, - 1); - - cursor = gdk_cursor_new_from_pixmap(empty_bitmap, - empty_bitmap, - &useless, &useless, 0, 0); - - gdk_window_set_cursor(window, cursor); - - gdk_cursor_unref(cursor); - - g_object_unref(empty_bitmap); -} - -static void -gtk_secure_entry_obscure_mouse_cursor(GtkSecureEntry * entry) -{ - if (entry->mouse_cursor_obscured) - return; - - set_invisible_cursor(entry->text_area); - - entry->mouse_cursor_obscured = TRUE; -} - -static gint -gtk_secure_entry_key_press(GtkWidget * widget, GdkEventKey * event) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - - gtk_secure_entry_pend_cursor_blink(entry); - - if (gtk_im_context_filter_keypress(entry->im_context, event)) { - gtk_secure_entry_obscure_mouse_cursor(entry); - entry->need_im_reset = TRUE; - return TRUE; - } - - if (GTK_WIDGET_CLASS(parent_class)->key_press_event(widget, event)) - /* Activate key bindings - */ - return TRUE; - - return FALSE; -} - -static gint -gtk_secure_entry_key_release(GtkWidget * widget, GdkEventKey * event) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - - if (gtk_im_context_filter_keypress(entry->im_context, event)) { - entry->need_im_reset = TRUE; - return TRUE; - } - - return GTK_WIDGET_CLASS(parent_class)->key_release_event(widget, - event); -} - -static gint -gtk_secure_entry_focus_in(GtkWidget * widget, - GdkEventFocus * event G_GNUC_UNUSED) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - - gtk_widget_queue_draw(widget); - - entry->need_im_reset = TRUE; - gtk_im_context_focus_in(entry->im_context); - - g_signal_connect(gdk_keymap_get_for_display - (gtk_widget_get_display(widget)), "direction_changed", - G_CALLBACK(gtk_secure_entry_keymap_direction_changed), - entry); - - gtk_secure_entry_check_cursor_blink(entry); - - return FALSE; -} - -static gint -gtk_secure_entry_focus_out(GtkWidget * widget, - GdkEventFocus * event G_GNUC_UNUSED) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - - gtk_widget_queue_draw(widget); - - entry->need_im_reset = TRUE; - gtk_im_context_focus_out(entry->im_context); - - gtk_secure_entry_check_cursor_blink(entry); - - g_signal_handlers_disconnect_by_func(gdk_keymap_get_for_display - (gtk_widget_get_display(widget)), - gtk_secure_entry_keymap_direction_changed, - entry); - - return FALSE; -} - -static void -gtk_secure_entry_grab_focus(GtkWidget * widget) -{ - GtkWidget *tmp; - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - gboolean select_on_focus; - - gtk_widget_set_can_default (widget, TRUE); - GTK_WIDGET_CLASS(parent_class)->grab_focus(widget); - - /* read current select on focus setting from GtkEntry */ - tmp = gtk_entry_new (); - g_object_get(gtk_widget_get_settings(tmp), - "gtk-entry-select-on-focus", &select_on_focus, NULL); - gtk_widget_destroy (tmp); - - if (select_on_focus && !entry->in_click) - gtk_editable_select_region(GTK_EDITABLE(widget), 0, -1); -} - -static void -gtk_secure_entry_direction_changed(GtkWidget * widget, - GtkTextDirection previous_dir) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - - gtk_secure_entry_recompute(entry); - - GTK_WIDGET_CLASS(parent_class)->direction_changed(widget, - previous_dir); -} - -static void -gtk_secure_entry_state_changed(GtkWidget * widget, - GtkStateType previous_state G_GNUC_UNUSED) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - GtkStyle *style; - - style = gtk_widget_get_style (widget); - if (gtk_widget_get_realized (widget)) { - gdk_window_set_background(gtk_widget_get_window(widget), - &style->base[gtk_widget_get_state (widget)]); - gdk_window_set_background(entry->text_area, - &style->base[gtk_widget_get_state (widget)]); - } - - if (!gtk_widget_is_sensitive (widget)) { - /* Clear any selection */ - gtk_editable_select_region(GTK_EDITABLE(entry), entry->current_pos, - entry->current_pos); - } - - gtk_widget_queue_draw(widget); -} - -static void -gtk_secure_entry_screen_changed(GtkWidget * widget, - GdkScreen * old_screen G_GNUC_UNUSED) -{ - gtk_secure_entry_recompute(GTK_SECURE_ENTRY(widget)); -} - -/* GtkEditable method implementations - */ -static void -gtk_secure_entry_insert_text(GtkEditable * editable, - const gchar * new_text, - gint new_text_length, gint * position) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(editable); - gchar *text; - - if (*position < 0 || *position > entry->text_length) - *position = entry->text_length; - - g_object_ref(editable); - - WITH_SECURE_MEM(text = g_new(gchar, new_text_length + 1)); - - text[new_text_length] = '\0'; - strncpy(text, new_text, new_text_length); - - g_signal_emit_by_name(editable, "insert_text", text, new_text_length, - position); - - WITH_SECURE_MEM(g_free(text)); - - g_object_unref(editable); -} - -static void -gtk_secure_entry_delete_text(GtkEditable * editable, - gint start_pos, gint end_pos) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(editable); - - if (end_pos < 0 || end_pos > entry->text_length) - end_pos = entry->text_length; - if (start_pos < 0) - start_pos = 0; - if (start_pos > end_pos) - start_pos = end_pos; - - g_object_ref(editable); - - g_signal_emit_by_name(editable, "delete_text", start_pos, end_pos); - - g_object_unref(editable); -} - -static void -gtk_secure_entry_set_position_internal(GtkSecureEntry * entry, - gint position, gboolean reset_im) -{ - if (position < 0 || position > entry->text_length) - position = entry->text_length; - - if (position != entry->current_pos || - position != entry->selection_bound) { - if (reset_im) - gtk_secure_entry_reset_im_context(entry); - gtk_secure_entry_set_positions(entry, position, position); - } -} - -static void -gtk_secure_entry_real_set_position(GtkEditable * editable, gint position) -{ - gtk_secure_entry_set_position_internal(GTK_SECURE_ENTRY(editable), - position, TRUE); -} - -static gint -gtk_secure_entry_get_position(GtkEditable * editable) -{ - return GTK_SECURE_ENTRY(editable)->current_pos; -} - -static void -gtk_secure_entry_set_selection_bounds(GtkEditable * editable, - gint start, gint end) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(editable); - - if (start < 0) - start = entry->text_length; - if (end < 0) - end = entry->text_length; - - gtk_secure_entry_reset_im_context(entry); - - gtk_secure_entry_set_positions(entry, - MIN(end, entry->text_length), - MIN(start, entry->text_length)); -} - -static gboolean -gtk_secure_entry_get_selection_bounds(GtkEditable * editable, - gint * start, gint * end) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(editable); - - *start = entry->selection_bound; - *end = entry->current_pos; - - return (entry->selection_bound != entry->current_pos); -} - -static void -gtk_secure_entry_style_set(GtkWidget * widget, GtkStyle * previous_style) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(widget); - GtkStyle *style; - - gtk_secure_entry_recompute(entry); - - style = gtk_widget_get_style (widget); - if (previous_style && gtk_widget_get_realized (widget)) { - gdk_window_set_background(gtk_widget_get_window (widget), - &style->base[gtk_widget_get_state (widget)]); - gdk_window_set_background(entry->text_area, - &style->base[gtk_widget_get_state (widget)]); - } -} - -/* GtkCellEditable method implementations - */ -static void -gtk_cell_editable_secure_entry_activated(GtkSecureEntry * entry, - gpointer data G_GNUC_UNUSED) -{ - gtk_cell_editable_editing_done(GTK_CELL_EDITABLE(entry)); - gtk_cell_editable_remove_widget(GTK_CELL_EDITABLE(entry)); -} - -static gboolean -gtk_cell_editable_key_press_event(GtkSecureEntry * entry, - GdkEventKey * key_event, - gpointer data G_GNUC_UNUSED) -{ - if (key_event->keyval == GDK_Escape) { - entry->editing_canceled = TRUE; - gtk_cell_editable_editing_done(GTK_CELL_EDITABLE(entry)); - gtk_cell_editable_remove_widget(GTK_CELL_EDITABLE(entry)); - - return TRUE; - } - - /* override focus */ - if (key_event->keyval == GDK_Up || key_event->keyval == GDK_Down) { - gtk_cell_editable_editing_done(GTK_CELL_EDITABLE(entry)); - gtk_cell_editable_remove_widget(GTK_CELL_EDITABLE(entry)); - - return TRUE; - } - - return FALSE; -} - -static void -gtk_secure_entry_start_editing(GtkCellEditable * cell_editable, - GdkEvent * event G_GNUC_UNUSED) -{ - GTK_SECURE_ENTRY(cell_editable)->is_cell_renderer = TRUE; - - g_signal_connect(cell_editable, "activate", - G_CALLBACK(gtk_cell_editable_secure_entry_activated), NULL); - g_signal_connect(cell_editable, "key_press_event", - G_CALLBACK(gtk_cell_editable_key_press_event), NULL); -} - -/* Default signal handlers - */ -static void -gtk_secure_entry_real_insert_text(GtkEditable * editable, - const gchar * new_text, - gint new_text_length, gint * position) -{ - gint _index; - gint n_chars; - - GtkSecureEntry *entry = GTK_SECURE_ENTRY(editable); - - if (new_text_length < 0) - new_text_length = strlen(new_text); - - n_chars = g_utf8_strlen(new_text, new_text_length); - if (entry->text_max_length > 0 - && n_chars + entry->text_length > entry->text_max_length) { - gdk_display_beep(gtk_widget_get_display(GTK_WIDGET(entry))); - n_chars = entry->text_max_length - entry->text_length; - new_text_length = - g_utf8_offset_to_pointer(new_text, n_chars) - new_text; - } - - if (new_text_length + entry->n_bytes + 1 > entry->text_size) { - while (new_text_length + entry->n_bytes + 1 > entry->text_size) { - if (entry->text_size == 0) - entry->text_size = MIN_SIZE; - else { - if (2 * (guint) entry->text_size < MAX_SIZE && - 2 * (guint) entry->text_size > entry->text_size) - entry->text_size *= 2; - else { - entry->text_size = MAX_SIZE; - if (new_text_length > - (gint) entry->text_size - (gint) entry->n_bytes - - 1) { - new_text_length = - (gint) entry->text_size - - (gint) entry->n_bytes - 1; - new_text_length = - g_utf8_find_prev_char(new_text, - new_text + - new_text_length + 1) - - new_text; - n_chars = g_utf8_strlen(new_text, new_text_length); - } - break; - } - } - } - - WITH_SECURE_MEM(entry->text = - g_realloc(entry->text, entry->text_size)); - } - - _index = g_utf8_offset_to_pointer(entry->text, *position) - entry->text; - - g_memmove(entry->text + _index + new_text_length, entry->text + _index, - entry->n_bytes - _index); - memcpy(entry->text + _index, new_text, new_text_length); - - entry->n_bytes += new_text_length; - entry->text_length += n_chars; - - /* NUL terminate for safety and convenience */ - entry->text[entry->n_bytes] = '\0'; - - if (entry->current_pos > *position) - entry->current_pos += n_chars; - - if (entry->selection_bound > *position) - entry->selection_bound += n_chars; - - *position += n_chars; - - gtk_secure_entry_recompute(entry); - - g_signal_emit_by_name(editable, "changed"); - g_object_notify(G_OBJECT(editable), "text"); -} - -static void -gtk_secure_entry_real_delete_text(GtkEditable * editable, - gint start_pos, gint end_pos) -{ - GtkSecureEntry *entry = GTK_SECURE_ENTRY(editable); - - if (start_pos < 0) - start_pos = 0; - if (end_pos < 0 || end_pos > entry->text_length) - end_pos = entry->text_length; - - if (start_pos < end_pos) { - gint start_index = - g_utf8_offset_to_pointer(entry->text, start_pos) - entry->text; - gint end_index = - g_utf8_offset_to_pointer(entry->text, end_pos) - entry->text; - gint current_pos; - gint selection_bound; - - g_memmove(entry->text + start_index, entry->text + end_index, - entry->n_bytes + 1 - end_index); - entry->text_length -= (end_pos - start_pos); - entry->n_bytes -= (end_index - start_index); - - current_pos = entry->current_pos; - if (current_pos > start_pos) - current_pos -= MIN(current_pos, end_pos) - start_pos; - - selection_bound = entry->selection_bound; - if (selection_bound > start_pos) - selection_bound -= MIN(selection_bound, end_pos) - start_pos; - - gtk_secure_entry_set_positions(entry, current_pos, - selection_bound); - - gtk_secure_entry_recompute(entry); - - g_signal_emit_by_name(editable, "changed"); - g_object_notify(G_OBJECT(editable), "text"); - } -} - -/* Compute the X position for an offset that corresponds to the "more important - * cursor position for that offset. We use this when trying to guess to which - * end of the selection we should go to when the user hits the left or - * right arrow key. - */ -static gint -get_better_cursor_x(GtkSecureEntry * entry, gint offset) -{ - GdkKeymap *keymap = - gdk_keymap_get_for_display(gtk_widget_get_display - (GTK_WIDGET(entry))); - PangoDirection keymap_direction = gdk_keymap_get_direction(keymap); - gboolean split_cursor; - - PangoLayout *layout = gtk_secure_entry_ensure_layout(entry, TRUE); - const gchar *text = pango_layout_get_text(layout); - gint _index = g_utf8_offset_to_pointer(text, offset) - text; - - PangoRectangle strong_pos, weak_pos; - - g_object_get(gtk_widget_get_settings(GTK_WIDGET(entry)), - "gtk-split-cursor", &split_cursor, NULL); - - pango_layout_get_cursor_pos(layout, _index, &strong_pos, &weak_pos); - - if (split_cursor) - return strong_pos.x / PANGO_SCALE; - else - return (keymap_direction == - entry->resolved_dir) ? strong_pos.x / - PANGO_SCALE : weak_pos.x / PANGO_SCALE; -} - -static void -gtk_secure_entry_move_cursor(GtkSecureEntry * entry, - GtkMovementStep step, - gint count, gboolean extend_selection) -{ - gint new_pos = entry->current_pos; - - gtk_secure_entry_reset_im_context(entry); - - if (entry->current_pos != entry->selection_bound && !extend_selection) { - /* If we have a current selection and aren't extending it, move to the - * start/or end of the selection as appropriate - */ - switch (step) { - case GTK_MOVEMENT_VISUAL_POSITIONS: - { - gint current_x = - get_better_cursor_x(entry, entry->current_pos); - gint bound_x = - get_better_cursor_x(entry, entry->selection_bound); - - if (count < 0) - new_pos = - current_x < - bound_x ? entry->current_pos : entry-> - selection_bound; - else - new_pos = - current_x > - bound_x ? entry->current_pos : entry-> - selection_bound; - - break; - } - case GTK_MOVEMENT_LOGICAL_POSITIONS: - case GTK_MOVEMENT_DISPLAY_LINE_ENDS: - case GTK_MOVEMENT_PARAGRAPH_ENDS: - case GTK_MOVEMENT_BUFFER_ENDS: - new_pos = count < 0 ? 0 : entry->text_length; - break; - case GTK_MOVEMENT_WORDS: - case GTK_MOVEMENT_DISPLAY_LINES: - case GTK_MOVEMENT_PARAGRAPHS: - case GTK_MOVEMENT_PAGES: - case GTK_MOVEMENT_HORIZONTAL_PAGES: - break; - } - } else { - switch (step) { - case GTK_MOVEMENT_LOGICAL_POSITIONS: - new_pos = - gtk_secure_entry_move_logically(entry, new_pos, count); - break; - case GTK_MOVEMENT_VISUAL_POSITIONS: - new_pos = - gtk_secure_entry_move_visually(entry, new_pos, count); - break; - case GTK_MOVEMENT_DISPLAY_LINE_ENDS: - case GTK_MOVEMENT_PARAGRAPH_ENDS: - case GTK_MOVEMENT_BUFFER_ENDS: - new_pos = count < 0 ? 0 : entry->text_length; - break; - case GTK_MOVEMENT_WORDS: - case GTK_MOVEMENT_DISPLAY_LINES: - case GTK_MOVEMENT_PARAGRAPHS: - case GTK_MOVEMENT_PAGES: - case GTK_MOVEMENT_HORIZONTAL_PAGES: - break; - } - } - - if (extend_selection) - gtk_editable_select_region(GTK_EDITABLE(entry), - entry->selection_bound, new_pos); - else - gtk_editable_set_position(GTK_EDITABLE(entry), new_pos); - - gtk_secure_entry_pend_cursor_blink(entry); -} - -static void -gtk_secure_entry_insert_at_cursor(GtkSecureEntry * entry, - const gchar * str) -{ - GtkEditable *editable = GTK_EDITABLE(entry); - gint pos = entry->current_pos; - - gtk_secure_entry_reset_im_context(entry); - - gtk_editable_insert_text(editable, str, -1, &pos); - gtk_editable_set_position(editable, pos); -} - -static void -gtk_secure_entry_delete_from_cursor(GtkSecureEntry * entry, - GtkDeleteType type, gint count) -{ - GtkEditable *editable = GTK_EDITABLE(entry); - gint start_pos = entry->current_pos; - gint end_pos = entry->current_pos; - - gtk_secure_entry_reset_im_context(entry); - - if (entry->selection_bound != entry->current_pos) { - gtk_editable_delete_selection(editable); - return; - } - - switch (type) { - case GTK_DELETE_CHARS: - end_pos = - gtk_secure_entry_move_logically(entry, entry->current_pos, - count); - gtk_editable_delete_text(editable, MIN(start_pos, end_pos), - MAX(start_pos, end_pos)); - break; - case GTK_DELETE_DISPLAY_LINE_ENDS: - case GTK_DELETE_PARAGRAPH_ENDS: - if (count < 0) - gtk_editable_delete_text(editable, 0, entry->current_pos); - else - gtk_editable_delete_text(editable, entry->current_pos, -1); - break; - case GTK_DELETE_DISPLAY_LINES: - case GTK_DELETE_PARAGRAPHS: - gtk_editable_delete_text(editable, 0, -1); - break; - default: - break; - } - - gtk_secure_entry_pend_cursor_blink(entry); -} - -static void -gtk_secure_entry_real_activate(GtkSecureEntry * entry) -{ - GtkWindow *window; - GtkWidget *toplevel; - GtkWidget *widget; - - widget = GTK_WIDGET(entry); - - if (entry->activates_default) { - toplevel = gtk_widget_get_toplevel(widget); - if (GTK_IS_WINDOW(toplevel)) { - GtkWidget *default_widget; - - window = GTK_WINDOW(toplevel); - if (window) - default_widget = gtk_window_get_default_widget (window); - else - return; - - if (widget != default_widget && - !(widget == gtk_window_get_focus (window) && - (!default_widget - || !gtk_widget_get_sensitive (default_widget)))) - gtk_window_activate_default(window); - } - } -} - -static void -gtk_secure_entry_keymap_direction_changed(GdkKeymap * keymap G_GNUC_UNUSED, - GtkSecureEntry * entry) -{ - gtk_secure_entry_recompute(entry); -} - -/* IM Context Callbacks - */ - -static void -gtk_secure_entry_commit_cb(GtkIMContext * context G_GNUC_UNUSED, - const gchar * str, GtkSecureEntry * entry) -{ - gtk_secure_entry_enter_text(entry, str); -} - -static void -gtk_secure_entry_preedit_changed_cb(GtkIMContext * context G_GNUC_UNUSED, - GtkSecureEntry * entry) -{ - gchar *preedit_string; - gint cursor_pos; - - gtk_im_context_get_preedit_string(entry->im_context, - &preedit_string, NULL, &cursor_pos); - entry->preedit_length = strlen(preedit_string); - cursor_pos = CLAMP(cursor_pos, 0, g_utf8_strlen(preedit_string, -1)); - entry->preedit_cursor = cursor_pos; - g_free(preedit_string); - - gtk_secure_entry_recompute(entry); -} - -static gboolean -gtk_secure_entry_retrieve_surrounding_cb(GtkIMContext * context, - GtkSecureEntry * entry) -{ - gtk_im_context_set_surrounding(context, - entry->text, - entry->n_bytes, - g_utf8_offset_to_pointer(entry->text, - entry-> - current_pos) - - entry->text); - - return TRUE; -} - -static gboolean -gtk_secure_entry_delete_surrounding_cb(GtkIMContext * slave G_GNUC_UNUSED, - gint offset, - gint n_chars, - GtkSecureEntry * entry) -{ - gtk_editable_delete_text(GTK_EDITABLE(entry), - entry->current_pos + offset, - entry->current_pos + offset + n_chars); - - return TRUE; -} - -/* Internal functions - */ - -/* Used for im_commit_cb and inserting Unicode chars */ -static void -gtk_secure_entry_enter_text(GtkSecureEntry * entry, const gchar * str) -{ - GtkEditable *editable = GTK_EDITABLE(entry); - gint tmp_pos; - - if (gtk_editable_get_selection_bounds(editable, NULL, NULL)) - gtk_editable_delete_selection(editable); - else { - if (entry->overwrite_mode) - gtk_secure_entry_delete_from_cursor(entry, GTK_DELETE_CHARS, - 1); - } - - tmp_pos = entry->current_pos; - gtk_editable_insert_text(editable, str, strlen(str), &tmp_pos); - gtk_secure_entry_set_position_internal(entry, tmp_pos, FALSE); -} - -/* All changes to entry->current_pos and entry->selection_bound - * should go through this function. - */ -static void -gtk_secure_entry_set_positions(GtkSecureEntry * entry, - gint current_pos, gint selection_bound) -{ - gboolean changed = FALSE; - - g_object_freeze_notify(G_OBJECT(entry)); - - if (current_pos != -1 && entry->current_pos != current_pos) { - entry->current_pos = current_pos; - changed = TRUE; - - g_object_notify(G_OBJECT(entry), "cursor_position"); - } - - if (selection_bound != -1 && entry->selection_bound != selection_bound) { - entry->selection_bound = selection_bound; - changed = TRUE; - - g_object_notify(G_OBJECT(entry), "selection_bound"); - } - - g_object_thaw_notify(G_OBJECT(entry)); - - if (changed) - gtk_secure_entry_recompute(entry); -} - -static void -gtk_secure_entry_reset_layout(GtkSecureEntry * entry) -{ - if (entry->cached_layout) { - g_object_unref(entry->cached_layout); - entry->cached_layout = NULL; - } -} - -static void -update_im_cursor_location(GtkSecureEntry * entry) -{ - GdkRectangle area; - gint strong_x; - gint strong_xoffset; - gint area_width, area_height; - - gtk_secure_entry_get_cursor_locations(entry, &strong_x, NULL); - get_text_area_size(entry, NULL, NULL, &area_width, &area_height); - - strong_xoffset = strong_x - entry->scroll_offset; - if (strong_xoffset < 0) { - strong_xoffset = 0; - } else if (strong_xoffset > area_width) { - strong_xoffset = area_width; - } - area.x = strong_xoffset; - area.y = 0; - area.width = 0; - area.height = area_height; - - gtk_im_context_set_cursor_location(entry->im_context, &area); -} - -static gboolean -recompute_idle_func(gpointer data) -{ - GtkSecureEntry *entry; - - GDK_THREADS_ENTER(); - - entry = GTK_SECURE_ENTRY(data); - - entry->recompute_idle = 0; - - if (gtk_widget_has_screen(GTK_WIDGET(entry))) { - gtk_secure_entry_adjust_scroll(entry); - gtk_secure_entry_queue_draw(entry); - - update_im_cursor_location(entry); - } - - GDK_THREADS_LEAVE(); - - return FALSE; -} - -static void -gtk_secure_entry_recompute(GtkSecureEntry * entry) -{ - gtk_secure_entry_reset_layout(entry); - gtk_secure_entry_check_cursor_blink(entry); - - if (!entry->recompute_idle) { - entry->recompute_idle = g_idle_add_full(G_PRIORITY_HIGH_IDLE + 15, /* between resize and redraw */ - recompute_idle_func, entry, - NULL); - } -} - -static void -append_char(GString * str, gunichar ch, gint count) -{ - gint i; - gint char_len; - gchar buf[7]; - - char_len = g_unichar_to_utf8(ch, buf); - - i = 0; - while (i < count) { - g_string_append_len(str, buf, char_len); - ++i; - } -} - -static PangoLayout * -gtk_secure_entry_create_layout(GtkSecureEntry * entry, - gboolean include_preedit) -{ - GtkWidget *widget = GTK_WIDGET(entry); - PangoLayout *layout = gtk_widget_create_pango_layout(widget, NULL); - PangoAttrList *tmp_attrs = pango_attr_list_new(); - - gchar *preedit_string = NULL; - gint preedit_length = 0; - PangoAttrList *preedit_attrs = NULL; - - pango_layout_set_single_paragraph_mode(layout, TRUE); - - if (include_preedit) { - gtk_im_context_get_preedit_string(entry->im_context, - &preedit_string, &preedit_attrs, - NULL); - preedit_length = entry->preedit_length; - } - - if (preedit_length) { - GString *tmp_string = g_string_new(NULL); - - gint cursor_index = g_utf8_offset_to_pointer(entry->text, - entry->current_pos) - - entry->text; - - gint ch_len; - gint preedit_len_chars; - gunichar invisible_char; - - ch_len = g_utf8_strlen(entry->text, entry->n_bytes); - preedit_len_chars = g_utf8_strlen(preedit_string, -1); - ch_len += preedit_len_chars; - - if (entry->invisible_char != 0) - invisible_char = entry->invisible_char; - else - invisible_char = ' '; /* just pick a char */ - - append_char(tmp_string, invisible_char, ch_len); - - /* Fix cursor index to point to invisible char corresponding - * to the preedit, fix preedit_length to be the length of - * the invisible chars representing the preedit - */ - cursor_index = - g_utf8_offset_to_pointer(tmp_string->str, - entry->current_pos) - - tmp_string->str; - preedit_length = - preedit_len_chars * g_unichar_to_utf8(invisible_char, - NULL); - - pango_layout_set_text(layout, tmp_string->str, tmp_string->len); - - pango_attr_list_splice(tmp_attrs, preedit_attrs, - cursor_index, preedit_length); - - g_string_free(tmp_string, TRUE); - } else { - PangoDirection pango_dir; - - pango_dir = pango_find_base_dir(entry->text, entry->n_bytes); - if (pango_dir == PANGO_DIRECTION_NEUTRAL) { - if (gtk_widget_has_focus (widget)) { - GdkDisplay *display = gtk_widget_get_display(widget); - GdkKeymap *keymap = gdk_keymap_get_for_display(display); - pango_dir = gdk_keymap_get_direction(keymap); - } else { - if (gtk_widget_get_direction(widget) == GTK_TEXT_DIR_LTR) - pango_dir = PANGO_DIRECTION_LTR; - else - pango_dir = PANGO_DIRECTION_RTL; - } - } - - pango_context_set_base_dir(gtk_widget_get_pango_context(widget), - pango_dir); - - pango_layout_set_alignment(layout, pango_dir); - - entry->resolved_dir = pango_dir; - - { - GString *str = g_string_new(NULL); - gunichar invisible_char; - - if (entry->invisible_char != 0) - invisible_char = entry->invisible_char; - else - invisible_char = ' '; /* just pick a char */ - - append_char(str, invisible_char, entry->text_length); - pango_layout_set_text(layout, str->str, str->len); - g_string_free(str, TRUE); - } - } - - pango_layout_set_attributes(layout, tmp_attrs); - - if (preedit_string) - g_free(preedit_string); - if (preedit_attrs) - pango_attr_list_unref(preedit_attrs); - - pango_attr_list_unref(tmp_attrs); - - return layout; -} - -static PangoLayout * -gtk_secure_entry_ensure_layout(GtkSecureEntry * entry, - gboolean include_preedit) -{ - if (entry->preedit_length > 0 && - !include_preedit != !entry->cache_includes_preedit) - gtk_secure_entry_reset_layout(entry); - - if (!entry->cached_layout) { - entry->cached_layout = - gtk_secure_entry_create_layout(entry, include_preedit); - entry->cache_includes_preedit = include_preedit; - } - - return entry->cached_layout; -} - -static void -get_layout_position(GtkSecureEntry * entry, gint * x, gint * y) -{ - PangoLayout *layout; - PangoRectangle logical_rect; - gint area_width, area_height; - gint y_pos; - PangoLayoutLine *line; - - layout = gtk_secure_entry_ensure_layout(entry, TRUE); - - get_text_area_size(entry, NULL, NULL, &area_width, &area_height); - - area_height = PANGO_SCALE * (area_height - 2 * INNER_BORDER); - - line = pango_layout_get_lines(layout)->data; - pango_layout_line_get_extents(line, NULL, &logical_rect); - - /* Align primarily for locale's ascent/descent */ - y_pos = ((area_height - entry->ascent - entry->descent) / 2 + - entry->ascent + logical_rect.y); - - /* Now see if we need to adjust to fit in actual drawn string */ - if (logical_rect.height > area_height) - y_pos = (area_height - logical_rect.height) / 2; - else if (y_pos < 0) - y_pos = 0; - else if (y_pos + logical_rect.height > area_height) - y_pos = area_height - logical_rect.height; - - y_pos = INNER_BORDER + y_pos / PANGO_SCALE; - - if (x) - *x = INNER_BORDER - entry->scroll_offset; - - if (y) - *y = y_pos; -} - -static void -gtk_secure_entry_draw_text(GtkSecureEntry * entry) -{ - GtkWidget *widget = GTK_WIDGET(entry); - PangoLayoutLine *line; - GtkStyle *style; - - if (entry->invisible_char == 0) - return; - - if (gtk_widget_is_drawable (widget)) { - PangoLayout *layout = gtk_secure_entry_ensure_layout(entry, TRUE); - gint x, y; - gint start_pos, end_pos; - - get_layout_position(entry, &x, &y); - - style = gtk_widget_get_style (widget); - gdk_draw_layout(entry->text_area, - style->text_gc[gtk_widget_get_state (widget)], - x, y, layout); - - if (gtk_editable_get_selection_bounds - (GTK_EDITABLE(entry), &start_pos, &end_pos)) { - gint *ranges; - gint n_ranges, i; - PangoRectangle logical_rect; - const gchar *text = pango_layout_get_text(layout); - gint start_index = - g_utf8_offset_to_pointer(text, start_pos) - text; - gint end_index = - g_utf8_offset_to_pointer(text, end_pos) - text; -#if GTK_CHECK_VERSION(2, 90, 5) - cairo_region_t *clip_region = cairo_region_create(); -#else - GdkRegion *clip_region = gdk_region_new(); -#endif - GdkGC *text_gc; - GdkGC *selection_gc; - - line = pango_layout_get_lines(layout)->data; - - pango_layout_line_get_x_ranges(line, start_index, end_index, - &ranges, &n_ranges); - - pango_layout_get_extents(layout, NULL, &logical_rect); - - if (gtk_widget_has_focus (widget)) { - selection_gc = style->base_gc[GTK_STATE_SELECTED]; - text_gc = style->text_gc[GTK_STATE_SELECTED]; - } else { - selection_gc = style->base_gc[GTK_STATE_ACTIVE]; - text_gc = style->text_gc[GTK_STATE_ACTIVE]; - } - - for (i = 0; i < n_ranges; i++) { - GdkRectangle rect; - - rect.x = - INNER_BORDER - entry->scroll_offset + - ranges[2 * i] / PANGO_SCALE; - rect.y = y; - rect.width = - (ranges[2 * i + 1] - ranges[2 * i]) / PANGO_SCALE; - rect.height = logical_rect.height / PANGO_SCALE; - - gdk_draw_rectangle(entry->text_area, selection_gc, TRUE, - rect.x, rect.y, rect.width, - rect.height); -#if GTK_CHECK_VERSION(2, 90, 5) - cairo_region_union_rectangle (clip_region, &rect); -#else - gdk_region_union_with_rect(clip_region, &rect); -#endif - } - - gdk_gc_set_clip_region(text_gc, clip_region); - gdk_draw_layout(entry->text_area, text_gc, x, y, layout); - gdk_gc_set_clip_region(text_gc, NULL); - -#if GTK_CHECK_VERSION(2, 90, 5) - cairo_region_destroy(clip_region); -#else - gdk_region_destroy(clip_region); -#endif - g_free(ranges); - } - } -} - -static void -draw_insertion_cursor(GtkSecureEntry * entry, - GdkRectangle * cursor_location, - gboolean is_primary, - PangoDirection direction, gboolean draw_arrow) -{ - GtkWidget *widget = GTK_WIDGET(entry); - GtkTextDirection text_dir; - - if (direction == PANGO_DIRECTION_LTR) - text_dir = GTK_TEXT_DIR_LTR; - else - text_dir = GTK_TEXT_DIR_RTL; - - gtk_draw_insertion_cursor(widget, entry->text_area, NULL, - cursor_location, - is_primary, text_dir, draw_arrow); -} - -static void -gtk_secure_entry_draw_cursor(GtkSecureEntry * entry) -{ - GtkWidget *widget = GTK_WIDGET(entry); - GdkKeymap *keymap = - gdk_keymap_get_for_display(gtk_widget_get_display - (widget)); - PangoDirection keymap_direction = gdk_keymap_get_direction(keymap); - - if (gtk_widget_is_drawable (widget)) { - GdkRectangle cursor_location; - gboolean split_cursor; - - gint xoffset = INNER_BORDER - entry->scroll_offset; - gint strong_x, weak_x; - gint text_area_height; - PangoDirection dir1 = PANGO_DIRECTION_NEUTRAL; - PangoDirection dir2 = PANGO_DIRECTION_NEUTRAL; - gint x1 = 0; - gint x2 = 0; - - gdk_drawable_get_size(entry->text_area, NULL, &text_area_height); - - gtk_secure_entry_get_cursor_locations(entry, &strong_x, &weak_x); - - g_object_get(gtk_widget_get_settings(widget), - "gtk-split-cursor", &split_cursor, NULL); - - dir1 = entry->resolved_dir; - - if (split_cursor) { - x1 = strong_x; - - if (weak_x != strong_x) { - dir2 = - (entry->resolved_dir == - PANGO_DIRECTION_LTR) ? PANGO_DIRECTION_RTL : - PANGO_DIRECTION_LTR; - x2 = weak_x; - } - } else { - if (keymap_direction == entry->resolved_dir) - x1 = strong_x; - else - x1 = weak_x; - } - - cursor_location.x = xoffset + x1; - cursor_location.y = INNER_BORDER; - cursor_location.width = 0; - cursor_location.height = text_area_height - 2 * INNER_BORDER; - - draw_insertion_cursor(entry, - &cursor_location, TRUE, dir1, - dir2 != PANGO_DIRECTION_NEUTRAL); - - if (dir2 != PANGO_DIRECTION_NEUTRAL) { - cursor_location.x = xoffset + x2; - draw_insertion_cursor(entry, - &cursor_location, FALSE, dir2, TRUE); - } - } -} - -static void -gtk_secure_entry_queue_draw(GtkSecureEntry * entry) -{ - if (gtk_widget_get_realized (GTK_WIDGET(entry))) - gdk_window_invalidate_rect(entry->text_area, NULL, FALSE); -} - -static void -gtk_secure_entry_reset_im_context(GtkSecureEntry * entry) -{ - if (entry->need_im_reset) { - entry->need_im_reset = 0; - gtk_im_context_reset(entry->im_context); - } -} - -static gint -gtk_secure_entry_find_position(GtkSecureEntry * entry, gint x) -{ - PangoLayout *layout; - PangoLayoutLine *line; - gint _index; - gint pos; - gboolean trailing; - const gchar *text; - gint cursor_index; - - layout = gtk_secure_entry_ensure_layout(entry, TRUE); - text = pango_layout_get_text(layout); - cursor_index = - g_utf8_offset_to_pointer(text, entry->current_pos) - text; - - line = pango_layout_get_lines(layout)->data; - pango_layout_line_x_to_index(line, x * PANGO_SCALE, &_index, &trailing); - - if (_index >= cursor_index && entry->preedit_length) { - if (_index >= cursor_index + entry->preedit_length) - _index -= entry->preedit_length; - else { - _index = cursor_index; - trailing = 0; - } - } - - pos = g_utf8_pointer_to_offset(text, text + _index); - pos += trailing; - - return pos; -} - -static void -gtk_secure_entry_get_cursor_locations(GtkSecureEntry * entry, - gint * strong_x, gint * weak_x) -{ - if (!entry->invisible_char) { - if (strong_x) - *strong_x = 0; - - if (weak_x) - *weak_x = 0; - } else { - PangoLayout *layout = gtk_secure_entry_ensure_layout(entry, TRUE); - const gchar *text = pango_layout_get_text(layout); - PangoRectangle strong_pos, weak_pos; - gint _index; - - _index = - g_utf8_offset_to_pointer(text, - entry->current_pos + - entry->preedit_cursor) - text; - - pango_layout_get_cursor_pos(layout, _index, &strong_pos, &weak_pos); - - if (strong_x) - *strong_x = strong_pos.x / PANGO_SCALE; - - if (weak_x) - *weak_x = weak_pos.x / PANGO_SCALE; - } -} - -static void -gtk_secure_entry_adjust_scroll(GtkSecureEntry * entry) -{ - gint min_offset, max_offset; - gint text_area_width, text_width; - gint strong_x, weak_x; - gint strong_xoffset, weak_xoffset; - PangoLayout *layout; - PangoLayoutLine *line; - PangoRectangle logical_rect; - - if (!gtk_widget_get_realized (GTK_WIDGET(entry))) - return; - - gdk_drawable_get_size(entry->text_area, &text_area_width, NULL); - text_area_width -= 2 * INNER_BORDER; - - layout = gtk_secure_entry_ensure_layout(entry, TRUE); - line = pango_layout_get_lines(layout)->data; - - pango_layout_line_get_extents(line, NULL, &logical_rect); - - /* Display as much text as we can */ - - text_width = PANGO_PIXELS(logical_rect.width); - - if (text_width > text_area_width) { - min_offset = 0; - max_offset = text_width - text_area_width; - } else { - min_offset = 0; - max_offset = min_offset; - } - - entry->scroll_offset = - CLAMP(entry->scroll_offset, min_offset, max_offset); - - /* And make sure cursors are on screen. Note that the cursor is - * actually drawn one pixel into the INNER_BORDER space on - * the right, when the scroll is at the utmost right. This - * looks better to to me than confining the cursor inside the - * border entirely, though it means that the cursor gets one - * pixel closer to the the edge of the widget on the right than - * on the left. This might need changing if one changed - * INNER_BORDER from 2 to 1, as one would do on a - * small-screen-real-estate display. - * - * We always make sure that the strong cursor is on screen, and - * put the weak cursor on screen if possible. - */ - - gtk_secure_entry_get_cursor_locations(entry, &strong_x, &weak_x); - - strong_xoffset = strong_x - entry->scroll_offset; - - if (strong_xoffset < 0) { - entry->scroll_offset += strong_xoffset; - strong_xoffset = 0; - } else if (strong_xoffset > text_area_width) { - entry->scroll_offset += strong_xoffset - text_area_width; - strong_xoffset = text_area_width; - } - - weak_xoffset = weak_x - entry->scroll_offset; - - if (weak_xoffset < 0 - && strong_xoffset - weak_xoffset <= text_area_width) { - entry->scroll_offset += weak_xoffset; - } else if (weak_xoffset > text_area_width && - strong_xoffset - (weak_xoffset - text_area_width) >= 0) { - entry->scroll_offset += weak_xoffset - text_area_width; - } - - g_object_notify(G_OBJECT(entry), "scroll_offset"); -} - -static gint -gtk_secure_entry_move_visually(GtkSecureEntry * entry, - gint start, gint count) -{ - gint _index; - PangoLayout *layout = gtk_secure_entry_ensure_layout(entry, FALSE); - const gchar *text; - - text = pango_layout_get_text(layout); - - _index = g_utf8_offset_to_pointer(text, start) - text; - - while (count != 0) { - int new_index, new_trailing; - gboolean split_cursor; - gboolean strong; - - g_object_get(gtk_widget_get_settings(GTK_WIDGET(entry)), - "gtk-split-cursor", &split_cursor, NULL); - - if (split_cursor) - strong = TRUE; - else { - GdkKeymap *keymap = - gdk_keymap_get_for_display(gtk_widget_get_display - (GTK_WIDGET(entry))); - PangoDirection keymap_direction = - gdk_keymap_get_direction(keymap); - - strong = keymap_direction == entry->resolved_dir; - } - - if (count > 0) { - pango_layout_move_cursor_visually(layout, strong, _index, 0, 1, - &new_index, &new_trailing); - count--; - } else { - pango_layout_move_cursor_visually(layout, strong, _index, 0, -1, - &new_index, &new_trailing); - count++; - } - - if (new_index < 0 || new_index == G_MAXINT) - break; - - _index = new_index; - - while (new_trailing--) - _index = g_utf8_next_char(text + new_index) - text; - } - - return g_utf8_pointer_to_offset(text, text + _index); -} - -static gint -gtk_secure_entry_move_logically(GtkSecureEntry * entry, - gint start, gint count) -{ - gint new_pos = start; - - /* Prevent any leak of information */ - new_pos = CLAMP(start + count, 0, entry->text_length); - - return new_pos; -} - -/* Public API - */ - -GtkWidget * -gtk_secure_entry_new(void) -{ - return g_object_new(GTK_TYPE_SECURE_ENTRY, NULL); -} - -/** - * gtk_secure_entry_new_with_max_length: - * @max: the maximum length of the entry, or 0 for no maximum. - * (other than the maximum length of entries.) The value passed in will - * be clamped to the range 0-65536. - * - * Creates a new #GtkSecureEntry widget with the given maximum length. - * - * Note: the existence of this function is inconsistent - * with the rest of the GTK+ API. The normal setup would - * be to just require the user to make an extra call - * to gtk_secure_entry_set_max_length() instead. It is not - * expected that this function will be removed, but - * it would be better practice not to use it. - * - * Return value: a new #GtkSecureEntry. - **/ -GtkWidget * -gtk_secure_entry_new_with_max_length(gint max) -{ - GtkSecureEntry *entry; - - max = CLAMP(max, 0, MAX_SIZE); - - entry = g_object_new(GTK_TYPE_SECURE_ENTRY, NULL); - entry->text_max_length = max; - - return GTK_WIDGET(entry); -} - -void -gtk_secure_entry_set_text(GtkSecureEntry * entry, const gchar * text) -{ - gint tmp_pos; - - g_return_if_fail(GTK_IS_SECURE_ENTRY(entry)); - g_return_if_fail(text != NULL); - - /* Actually setting the text will affect the cursor and selection; - * if the contents don't actually change, this will look odd to the user. - */ - if (strcmp(entry->text, text) == 0) - return; - - gtk_editable_delete_text(GTK_EDITABLE(entry), 0, -1); - - tmp_pos = 0; - gtk_editable_insert_text(GTK_EDITABLE(entry), text, strlen(text), - &tmp_pos); -} - -/** - * gtk_secure_entry_set_invisible_char: - * @entry: a #GtkSecureEntry - * @ch: a Unicode character - * - * Sets the character to use in place of the actual text when - * gtk_secure_entry_set_visibility() has been called to set text visibility - * to %FALSE. i.e. this is the character used in "password mode" to - * show the user how many characters have been typed. The default - * invisible char is an asterisk ('*'). If you set the invisible char - * to 0, then the user will get no feedback at all; there will be - * no text on the screen as they type. - * - **/ -void -gtk_secure_entry_set_invisible_char(GtkSecureEntry * entry, gunichar ch) -{ - g_return_if_fail(GTK_IS_SECURE_ENTRY(entry)); - - if (ch == entry->invisible_char) - return; - - entry->invisible_char = ch; - g_object_notify(G_OBJECT(entry), "invisible_char"); - gtk_secure_entry_recompute(entry); -} - -/** - * gtk_secure_entry_get_invisible_char: - * @entry: a #GtkSecureEntry - * - * Retrieves the character displayed in place of the real characters - * for entries with visisbility set to false. See gtk_secure_entry_set_invisible_char(). - * - * Return value: the current invisible char, or 0, if the entry does not - * show invisible text at all. - **/ -gunichar -gtk_secure_entry_get_invisible_char(GtkSecureEntry * entry) -{ - g_return_val_if_fail(GTK_IS_SECURE_ENTRY(entry), 0); - - return entry->invisible_char; -} - -/** - * gtk_secure_entry_get_text: - * @entry: a #GtkSecureEntry - * - * Retrieves the contents of the entry widget. - * See also gtk_editable_get_chars(). - * - * Return value: a pointer to the contents of the widget as a - * string. This string points to internally allocated - * storage in the widget and must not be freed, modified or - * stored. - **/ -G_CONST_RETURN gchar * -gtk_secure_entry_get_text(GtkSecureEntry * entry) -{ - g_return_val_if_fail(GTK_IS_SECURE_ENTRY(entry), NULL); - - return entry->text; -} - -/** - * gtk_secure_entry_set_max_length: - * @entry: a #GtkSecureEntry. - * @max: the maximum length of the entry, or 0 for no maximum. - * (other than the maximum length of entries.) The value passed in will - * be clamped to the range 0-65536. - * - * Sets the maximum allowed length of the contents of the widget. If - * the current contents are longer than the given length, then they - * will be truncated to fit. - **/ -void -gtk_secure_entry_set_max_length(GtkSecureEntry * entry, gint max) -{ - g_return_if_fail(GTK_IS_SECURE_ENTRY(entry)); - - max = CLAMP(max, 0, MAX_SIZE); - - if (max > 0 && entry->text_length > max) - gtk_editable_delete_text(GTK_EDITABLE(entry), max, -1); - - entry->text_max_length = max; - g_object_notify(G_OBJECT(entry), "max_length"); -} - -/** - * gtk_secure_entry_get_max_length: - * @entry: a #GtkSecureEntry - * - * Retrieves the maximum allowed length of the text in - * @entry. See gtk_secure_entry_set_max_length(). - * - * Return value: the maximum allowed number of characters - * in #GtkSecureEntry, or 0 if there is no maximum. - **/ -gint -gtk_secure_entry_get_max_length(GtkSecureEntry * entry) -{ - g_return_val_if_fail(GTK_IS_SECURE_ENTRY(entry), 0); - - return entry->text_max_length; -} - -/** - * gtk_secure_entry_set_activates_default: - * @entry: a #GtkSecureEntry - * @setting: %TRUE to activate window's default widget on Enter keypress - * - * If @setting is %TRUE, pressing Enter in the @entry will activate the default - * widget for the window containing the entry. This usually means that - * the dialog box containing the entry will be closed, since the default - * widget is usually one of the dialog buttons. - * - * (For experts: if @setting is %TRUE, the entry calls - * gtk_window_activate_default() on the window containing the entry, in - * the default handler for the "activate" signal.) - * - **/ -void -gtk_secure_entry_set_activates_default(GtkSecureEntry * entry, - gboolean setting) -{ - g_return_if_fail(GTK_IS_SECURE_ENTRY(entry)); - setting = setting != FALSE; - - if (setting != entry->activates_default) { - entry->activates_default = setting; - g_object_notify(G_OBJECT(entry), "activates_default"); - } -} - -/** - * gtk_secure_entry_get_activates_default: - * @entry: a #GtkSecureEntry - * - * Retrieves the value set by gtk_secure_entry_set_activates_default(). - * - * Return value: %TRUE if the entry will activate the default widget - **/ -gboolean -gtk_secure_entry_get_activates_default(GtkSecureEntry * entry) -{ - g_return_val_if_fail(GTK_IS_SECURE_ENTRY(entry), FALSE); - - return entry->activates_default; -} - -/** - * gtk_secure_entry_set_width_chars: - * @entry: a #GtkSecureEntry - * @n_chars: width in chars - * - * Changes the size request of the entry to be about the right size - * for @n_chars characters. Note that it changes the size - * <emphasis>request</emphasis>, the size can still be affected by - * how you pack the widget into containers. If @n_chars is -1, the - * size reverts to the default entry size. - * - **/ -void -gtk_secure_entry_set_width_chars(GtkSecureEntry * entry, gint n_chars) -{ - g_return_if_fail(GTK_IS_SECURE_ENTRY(entry)); - - if (entry->width_chars != n_chars) { - entry->width_chars = n_chars; - g_object_notify(G_OBJECT(entry), "width_chars"); - gtk_widget_queue_resize(GTK_WIDGET(entry)); - } -} - -/** - * gtk_secure_entry_get_width_chars: - * @entry: a #GtkSecureEntry - * - * Gets the value set by gtk_secure_entry_set_width_chars(). - * - * Return value: number of chars to request space for, or negative if unset - **/ -gint -gtk_secure_entry_get_width_chars(GtkSecureEntry * entry) -{ - g_return_val_if_fail(GTK_IS_SECURE_ENTRY(entry), 0); - - return entry->width_chars; -} - -/** - * gtk_secure_entry_set_has_frame: - * @entry: a #GtkSecureEntry - * @setting: new value - * - * Sets whether the entry has a beveled frame around it. - **/ -void -gtk_secure_entry_set_has_frame(GtkSecureEntry * entry, gboolean setting) -{ - g_return_if_fail(GTK_IS_SECURE_ENTRY(entry)); - - setting = (setting != FALSE); - - if (entry->has_frame == setting) - return; - - gtk_widget_queue_resize(GTK_WIDGET(entry)); - entry->has_frame = setting; - g_object_notify(G_OBJECT(entry), "has_frame"); -} - -/** - * gtk_secure_entry_get_has_frame: - * @entry: a #GtkSecureEntry - * - * Gets the value set by gtk_secure_entry_set_has_frame(). - * - * Return value: whether the entry has a beveled frame - **/ -gboolean -gtk_secure_entry_get_has_frame(GtkSecureEntry * entry) -{ - g_return_val_if_fail(GTK_IS_SECURE_ENTRY(entry), FALSE); - - return entry->has_frame; -} - - -/** - * gtk_secure_entry_get_layout: - * @entry: a #GtkSecureEntry - * - * Gets the #PangoLayout used to display the entry. - * The layout is useful to e.g. convert text positions to - * pixel positions, in combination with gtk_secure_entry_get_layout_offsets(). - * The returned layout is owned by the entry so need not be - * freed by the caller. - * - * Keep in mind that the layout text may contain a preedit string, so - * gtk_secure_entry_layout_index_to_text_index() and - * gtk_secure_entry_text_index_to_layout_index() are needed to convert byte - * indices in the layout to byte indices in the entry contents. - * - * Return value: the #PangoLayout for this entry - **/ -PangoLayout * -gtk_secure_entry_get_layout(GtkSecureEntry * entry) -{ - PangoLayout *layout; - - g_return_val_if_fail(GTK_IS_SECURE_ENTRY(entry), NULL); - - layout = gtk_secure_entry_ensure_layout(entry, TRUE); - - return layout; -} - - -/** - * gtk_secure_entry_layout_index_to_text_index: - * @entry: a #GtkSecureEntry - * @layout_index: byte index into the entry layout text - * - * Converts from a position in the entry contents (returned - * by gtk_secure_entry_get_text()) to a position in the - * entry's #PangoLayout (returned by gtk_secure_entry_get_layout(), - * with text retrieved via pango_layout_get_text()). - * - * Return value: byte index into the entry contents - **/ -gint -gtk_secure_entry_layout_index_to_text_index(GtkSecureEntry * entry, - gint layout_index) -{ - PangoLayout *layout; - const gchar *text; - gint cursor_index; - - g_return_val_if_fail(GTK_IS_SECURE_ENTRY(entry), 0); - - layout = gtk_secure_entry_ensure_layout(entry, TRUE); - text = pango_layout_get_text(layout); - cursor_index = - g_utf8_offset_to_pointer(text, entry->current_pos) - text; - - if (layout_index >= cursor_index && entry->preedit_length) { - if (layout_index >= cursor_index + entry->preedit_length) - layout_index -= entry->preedit_length; - else - layout_index = cursor_index; - } - - return layout_index; -} - -/** - * gtk_secure_entry_text_index_to_layout_index: - * @entry: a #GtkSecureEntry - * @text_index: byte index into the entry contents - * - * Converts from a position in the entry's #PangoLayout(returned by - * gtk_secure_entry_get_layout()) to a position in the entry contents - * (returned by gtk_secure_entry_get_text()). - * - * Return value: byte index into the entry layout text - **/ -gint -gtk_secure_entry_text_index_to_layout_index(GtkSecureEntry * entry, - gint text_index) -{ - PangoLayout *layout; - const gchar *text; - gint cursor_index; - g_return_val_if_fail(GTK_IS_SECURE_ENTRY(entry), 0); - - layout = gtk_secure_entry_ensure_layout(entry, TRUE); - text = pango_layout_get_text(layout); - cursor_index = - g_utf8_offset_to_pointer(text, entry->current_pos) - text; - - if (text_index > cursor_index) - text_index += entry->preedit_length; - - return text_index; -} - -/** - * gtk_secure_entry_get_layout_offsets: - * @entry: a #GtkSecureEntry - * @x: location to store X offset of layout, or %NULL - * @y: location to store Y offset of layout, or %NULL - * - * - * Obtains the position of the #PangoLayout used to render text - * in the entry, in widget coordinates. Useful if you want to line - * up the text in an entry with some other text, e.g. when using the - * entry to implement editable cells in a sheet widget. - * - * Also useful to convert mouse events into coordinates inside the - * #PangoLayout, e.g. to take some action if some part of the entry text - * is clicked. - * - * Note that as the user scrolls around in the entry the offsets will - * change; you'll need to connect to the "notify::scroll_offset" - * signal to track this. Remember when using the #PangoLayout - * functions you need to convert to and from pixels using - * PANGO_PIXELS() or #PANGO_SCALE. - * - * Keep in mind that the layout text may contain a preedit string, so - * gtk_secure_entry_layout_index_to_text_index() and - * gtk_secure_entry_text_index_to_layout_index() are needed to convert byte - * indices in the layout to byte indices in the entry contents. - * - **/ -void -gtk_secure_entry_get_layout_offsets(GtkSecureEntry * entry, - gint * x, gint * y) -{ - gint text_area_x, text_area_y; - - g_return_if_fail(GTK_IS_SECURE_ENTRY(entry)); - - /* this gets coords relative to text area */ - get_layout_position(entry, x, y); - - /* convert to widget coords */ - get_text_area_size(entry, &text_area_x, &text_area_y, NULL, NULL); - - if (x) - *x += text_area_x; - - if (y) - *y += text_area_y; -} - -static gboolean -gtk_secure_entry_mnemonic_activate(GtkWidget * widget, - gboolean group_cycling G_GNUC_UNUSED) -{ - gtk_widget_grab_focus(widget); - return TRUE; -} - -/* We display the cursor when - * - * - the selection is empty, AND - * - the widget has focus - */ - -#define CURSOR_ON_MULTIPLIER 0.66 -#define CURSOR_OFF_MULTIPLIER 0.34 -#define CURSOR_PEND_MULTIPLIER 1.0 - -static gboolean -cursor_blinks(GtkSecureEntry * entry) -{ - GtkWidget *widget = GTK_WIDGET(entry); - GtkSettings *settings = gtk_widget_get_settings(widget); - gboolean blink; - - if (gtk_widget_has_focus (widget) && - entry->selection_bound == entry->current_pos) { - g_object_get(settings, "gtk-cursor-blink", &blink, NULL); - return blink; - } else - return FALSE; -} - -static gint -get_cursor_time(GtkSecureEntry * entry) -{ - GtkSettings *settings = gtk_widget_get_settings(GTK_WIDGET(entry)); - gint blinktime; - - g_object_get(settings, "gtk-cursor-blink-time", &blinktime, NULL); - - return blinktime; -} - -static void -show_cursor(GtkSecureEntry * entry) -{ - GtkWidget *widget = GTK_WIDGET(entry); - - if (!entry->cursor_visible) { - entry->cursor_visible = TRUE; - - if (gtk_widget_has_focus (widget) - && entry->selection_bound == entry->current_pos) - gtk_widget_queue_draw(widget); - } -} - -static void -hide_cursor(GtkSecureEntry * entry) -{ - GtkWidget *widget = GTK_WIDGET(entry); - - if (entry->cursor_visible) { - entry->cursor_visible = FALSE; - - if (gtk_widget_has_focus (widget) - && entry->selection_bound == entry->current_pos) - gtk_widget_queue_draw(widget); - } -} - -/* - * Blink! - */ -static gint -blink_cb(gpointer data) -{ - GtkSecureEntry *entry; - GtkWidget *widget; - - GDK_THREADS_ENTER(); - - entry = GTK_SECURE_ENTRY(data); - widget = GTK_WIDGET (entry); - - if (!gtk_widget_has_focus (widget)) { - g_warning - ("GtkSecureEntry - did not receive focus-out-event. If you\n" - "connect a handler to this signal, it must return\n" - "FALSE so the entry gets the event as well"); - } - - g_assert(gtk_widget_has_focus (widget)); - g_assert(entry->selection_bound == entry->current_pos); - - if (entry->cursor_visible) { - hide_cursor(entry); - entry->blink_timeout = - g_timeout_add(get_cursor_time(entry) * CURSOR_OFF_MULTIPLIER, - blink_cb, entry); - } else { - show_cursor(entry); - entry->blink_timeout = - g_timeout_add(get_cursor_time(entry) * CURSOR_ON_MULTIPLIER, - blink_cb, entry); - } - - GDK_THREADS_LEAVE(); - - /* Remove ourselves */ - return FALSE; -} - -static void -gtk_secure_entry_check_cursor_blink(GtkSecureEntry * entry) -{ - if (cursor_blinks(entry)) { - if (!entry->blink_timeout) { - entry->blink_timeout = - g_timeout_add(get_cursor_time(entry) * - CURSOR_ON_MULTIPLIER, blink_cb, entry); - show_cursor(entry); - } - } else { - if (entry->blink_timeout) { - g_source_remove(entry->blink_timeout); - entry->blink_timeout = 0; - } - - entry->cursor_visible = TRUE; - } - -} - -static void -gtk_secure_entry_pend_cursor_blink(GtkSecureEntry * entry) -{ - if (cursor_blinks(entry)) { - if (entry->blink_timeout != 0) - g_source_remove(entry->blink_timeout); - - entry->blink_timeout = - g_timeout_add(get_cursor_time(entry) * CURSOR_PEND_MULTIPLIER, - blink_cb, entry); - show_cursor(entry); - } -} - -static inline gboolean -keyval_is_cursor_move(guint keyval) -{ - if (keyval == GDK_Up || keyval == GDK_KP_Up) - return TRUE; - - if (keyval == GDK_Down || keyval == GDK_KP_Down) - return TRUE; - - if (keyval == GDK_Page_Up) - return TRUE; - - if (keyval == GDK_Page_Down) - return TRUE; - - return FALSE; -} - -/* stolen from gtkmarshalers.c */ - -#define g_marshal_value_peek_enum(v) (v)->data[0].v_int -#define g_marshal_value_peek_int(v) (v)->data[0].v_int -#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int - -/* VOID:ENUM,INT,BOOLEAN (gtkmarshalers.list:64) */ -static void -_gtk_marshal_VOID__ENUM_INT_BOOLEAN(GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, - gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__ENUM_INT_BOOLEAN) (gpointer data1, - gint arg_1, - gint arg_2, - gboolean arg_3, - gpointer data2); - register GMarshalFunc_VOID__ENUM_INT_BOOLEAN callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - - g_return_if_fail(n_param_values == 4); - - if (G_CCLOSURE_SWAP_DATA(closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer(param_values + 0); - } else { - data1 = g_value_peek_pointer(param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_VOID__ENUM_INT_BOOLEAN) (marshal_data ? marshal_data - : cc->callback); - - callback(data1, - g_marshal_value_peek_enum(param_values + 1), - g_marshal_value_peek_int(param_values + 2), - g_marshal_value_peek_boolean(param_values + 3), data2); -} - -static void -_gtk_marshal_VOID__ENUM_INT(GClosure * closure, - GValue * return_value G_GNUC_UNUSED, - guint n_param_values, - const GValue * param_values, - gpointer invocation_hint G_GNUC_UNUSED, - gpointer marshal_data) -{ - typedef void (*GMarshalFunc_VOID__ENUM_INT) (gpointer data1, - gint arg_1, - gint arg_2, - gpointer data2); - register GMarshalFunc_VOID__ENUM_INT callback; - register GCClosure *cc = (GCClosure *) closure; - register gpointer data1, data2; - - g_return_if_fail(n_param_values == 3); - - if (G_CCLOSURE_SWAP_DATA(closure)) { - data1 = closure->data; - data2 = g_value_peek_pointer(param_values + 0); - } else { - data1 = g_value_peek_pointer(param_values + 0); - data2 = closure->data; - } - callback = - (GMarshalFunc_VOID__ENUM_INT) (marshal_data ? marshal_data : cc-> - callback); - - callback(data1, - g_marshal_value_peek_enum(param_values + 1), - g_marshal_value_peek_int(param_values + 2), data2); -} diff --git a/gtksecentry/gtksecentry.h b/gtksecentry/gtksecentry.h deleted file mode 100644 index c2d9771..0000000 --- a/gtksecentry/gtksecentry.h +++ /dev/null @@ -1,190 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * Copyright (C) 2004 Albrecht Dre - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -/* - * Heavily stripped down for use in pinentry-gtk-2 by Albrecht Dre - * <albrecht.dress@arcor.de> Feb. 2004: - * - * The entry is now always invisible, uses secure memory methods to - * allocate the text memory, and all potentially dangerous methods - * (copy & paste, popup, etc.) have been removed. - */ - -#ifndef __GTK_SECURE_ENTRY_H__ -#define __GTK_SECURE_ENTRY_H__ - - -#include <gtk/gtk.h> -#include "gseal-gtk-compat.h" - -#ifdef __cplusplus -extern "C" { -#ifdef MAKE_EMACS_HAPPY -} -#endif /* MAKE_EMACS_HAPPY */ -#endif /* __cplusplus */ -#define GTK_TYPE_SECURE_ENTRY (gtk_secure_entry_get_type ()) -#define GTK_SECURE_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SECURE_ENTRY, GtkSecureEntry)) -#define GTK_SECURE_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_SECURE_ENTRY, GtkSecureEntryClass)) -#define GTK_IS_SECURE_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SECURE_ENTRY)) -#define GTK_IS_SECURE_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SECURE_ENTRY)) -#define GTK_SECURE_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_SECURE_ENTRY, GtkSecureEntryClass)) -typedef struct _GtkSecureEntry GtkSecureEntry; -typedef struct _GtkSecureEntryClass GtkSecureEntryClass; - -struct _GtkSecureEntry { - GtkWidget widget; - - gchar *text; - - guint overwrite_mode:1; - - guint16 text_length; /* length in use, in chars */ - guint16 text_max_length; - - /*< private > */ - GdkWindow *text_area; - GtkIMContext *im_context; - - gint current_pos; - gint selection_bound; - - PangoLayout *cached_layout; - guint cache_includes_preedit:1; - - guint need_im_reset:1; - - guint has_frame:1; - - guint activates_default:1; - - guint cursor_visible:1; - - guint in_click:1; /* Flag so we don't select all when clicking in entry to focus in */ - - guint is_cell_renderer:1; - guint editing_canceled:1; /* Only used by GtkCellRendererText */ - - guint mouse_cursor_obscured:1; - - guint resolved_dir : 4; /* PangoDirection */ - - guint button; - guint blink_timeout; - guint recompute_idle; - gint scroll_offset; - gint ascent; /* font ascent, in pango units */ - gint descent; /* font descent, in pango units */ - - guint16 text_size; /* allocated size, in bytes */ - guint16 n_bytes; /* length in use, in bytes */ - - guint16 preedit_length; /* length of preedit string, in bytes */ - guint16 preedit_cursor; /* offset of cursor within preedit string, in chars */ - - gunichar invisible_char; - - gint width_chars; -}; - -struct _GtkSecureEntryClass { - GtkWidgetClass parent_class; - - /* Action signals - */ - void (*activate) (GtkSecureEntry * entry); - void (*move_cursor) (GtkSecureEntry * entry, - GtkMovementStep step, - gint count, gboolean extend_selection); - void (*insert_at_cursor) (GtkSecureEntry * entry, const gchar * str); - void (*delete_from_cursor) (GtkSecureEntry * entry, - GtkDeleteType type, gint count); - - /* Padding for future expansion */ - void (*_gtk_reserved1) (void); - void (*_gtk_reserved2) (void); - void (*_gtk_reserved3) (void); - void (*_gtk_reserved4) (void); -}; - -GType -gtk_secure_entry_get_type(void) - G_GNUC_CONST; -GtkWidget * -gtk_secure_entry_new(void); -GtkWidget * -gtk_secure_entry_new_with_max_length(gint max); -void -gtk_secure_entry_set_invisible_char(GtkSecureEntry * entry, gunichar ch); -gunichar -gtk_secure_entry_get_invisible_char(GtkSecureEntry * entry); -void -gtk_secure_entry_set_has_frame(GtkSecureEntry * entry, gboolean setting); -gboolean -gtk_secure_entry_get_has_frame(GtkSecureEntry * entry); -/* text is truncated if needed */ -void -gtk_secure_entry_set_max_length(GtkSecureEntry * entry, gint max); -gint -gtk_secure_entry_get_max_length(GtkSecureEntry * entry); -void -gtk_secure_entry_set_activates_default(GtkSecureEntry * entry, - gboolean setting); -gboolean -gtk_secure_entry_get_activates_default(GtkSecureEntry * entry); - -void -gtk_secure_entry_set_width_chars(GtkSecureEntry * entry, gint n_chars); -gint -gtk_secure_entry_get_width_chars(GtkSecureEntry * entry); - -/* Somewhat more convenient than the GtkEditable generic functions - */ -void -gtk_secure_entry_set_text(GtkSecureEntry * entry, const gchar * text); -/* returns a reference to the text */ -G_CONST_RETURN gchar * -gtk_secure_entry_get_text(GtkSecureEntry * entry); - -PangoLayout * -gtk_secure_entry_get_layout(GtkSecureEntry * entry); -gint -gtk_secure_entry_layout_index_to_text_index(GtkSecureEntry * entry, - gint layout_index); -gint -gtk_secure_entry_text_index_to_layout_index(GtkSecureEntry * entry, - gint text_index); -void -gtk_secure_entry_get_layout_offsets(GtkSecureEntry * entry, - gint * x, gint * y); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __GTK_SECURE_ENTRY_H__ */ diff --git a/help/Makefile.am b/help/Makefile.am index b44a3fe..1f87c50 100644 --- a/help/Makefile.am +++ b/help/Makefile.am @@ -15,5 +15,5 @@ DOC_FIGURES = \ figures/trayicon-expiring.png \ $(NULL) -DOC_LINGUAS = de es sv \ +DOC_LINGUAS = de es sl sv \ $(NULL) diff --git a/help/Makefile.in b/help/Makefile.in index c0d8d95..415e515 100644 --- a/help/Makefile.in +++ b/help/Makefile.in @@ -94,6 +94,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -181,6 +183,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ @@ -380,7 +383,7 @@ DOC_FIGURES = \ figures/trayicon-expiring.png \ $(NULL) -DOC_LINGUAS = de es sv \ +DOC_LINGUAS = de es sl sv \ $(NULL) all: all-am diff --git a/help/de/de.po b/help/de/de.po index 51e73dc..f00c35e 100644 --- a/help/de/de.po +++ b/help/de/de.po @@ -1,18 +1,20 @@ # German translation of the krb5-auth-dialog manual. # Mario Blättermann <mariobl@gnome.org>, 2009. +# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2010. # msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2009-06-15 09:12+0000\n" -"PO-Revision-Date: 2009-06-15 11:40+0100\n" +"POT-Creation-Date: 2010-09-12 12:02+0000\n" +"PO-Revision-Date: 2010-09-20 22:34+0100\n" "Last-Translator: Mario Blättermann <mariobl@gnome.org>\n" -"Language-Team: German <gnome-de@gnome.org>\n" +"Language-Team: Deutsch <gnome-de@gnome.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: German\n" "X-Poedit-Country: GERMANY\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #. When image changes, this message will be marked fuzzy or untranslated for you. #. It doesn't matter what you translate it to: it's not used at all. @@ -25,7 +27,8 @@ msgstr "translated" #. It doesn't matter what you translate it to: it's not used at all. #: C/krb5-auth-dialog.xml:189(None) msgid "" -"@@image: 'figures/trayicon-expiring.png'; md5=cb1dbed310e568e7cb4684bac85c6969" +"@@image: 'figures/trayicon-expiring.png'; " +"md5=cb1dbed310e568e7cb4684bac85c6969" msgstr "translated" #. When image changes, this message will be marked fuzzy or untranslated for you. @@ -44,7 +47,8 @@ msgstr "" #. When image changes, this message will be marked fuzzy or untranslated for you. #. It doesn't matter what you translate it to: it's not used at all. #: C/krb5-auth-dialog.xml:241(None) -msgid "@@image: 'figures/ka-expiring.png'; md5=37bb5e8f591c8c7fdb6345b8793e76fb" +msgid "" +"@@image: 'figures/ka-expiring.png'; md5=37bb5e8f591c8c7fdb6345b8793e76fb" msgstr "" #. When image changes, this message will be marked fuzzy or untranslated for you. @@ -54,7 +58,8 @@ msgid "@@image: 'figures/ka-expired.png'; md5=1e92acc36db8643c6c43473f54f8029f" msgstr "" #: C/krb5-auth-dialog.xml:39(title) -msgid "<application>Kerberos Network Authentication Dialog</application> Manual" +msgid "" +"<application>Kerberos Network Authentication Dialog</application> Manual" msgstr "<application>Kerberos Netzwerkanmeldungsdialog</application>-Handbuch" #: C/krb5-auth-dialog.xml:41(para) @@ -79,8 +84,8 @@ msgid "" "the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any " "later version published by the Free Software Foundation with no Invariant " "Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy " -"of the GFDL at this <ulink type=\"help\" url=\"ghelp:fdl\">link</ulink> or in " -"the file COPYING-DOCS distributed with this manual." +"of the GFDL at this <ulink type=\"help\" url=\"ghelp:fdl\">link</ulink> or " +"in the file COPYING-DOCS distributed with this manual." msgstr "" "Das vorliegende Dokument kann gemäß den Bedingungen der GNU Free " "Documentation License (GFDL), Version 1.1 oder jeder späteren, von der Free " @@ -123,14 +128,14 @@ msgid "" "DOCUMENT IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTY OF ANY KIND, " "EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT " "THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS " -"MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK " -"AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED " -"VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION " -"PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY " -"CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR " -"CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS " -"LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS " -"AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND" +"MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE " +"RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR " +"MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR " +"MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL " +"WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY " +"SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN " +"ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION " +"OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND" msgstr "" "DIESES DOKUMENT WIRD »WIE VORLIEGEND« GELIEFERT, OHNE GARANTIEN IRGENDEINER " "ART, SOWOHL AUSDRÜCKLICH GENANNTE ALS AUCH ANGEDEUTETE. DIES BEZIEHT SICH " @@ -139,8 +144,8 @@ msgstr "" "ZWECK GEEIGNET IST ODER DASS ES KEINE RECHTE DRITTER VERLETZT. DAS VOLLE " "RISIKO WAS QUALITÄT, GENAUIGKEIT UND LEISTUNG DES DOKUMENTS ODER VERÄNDERTE " "FASSUNGEN DES DOKUMENTS LIEGT BEI IHNEN. SOLLTE EIN DOKUMENT ODER EINE " -"VERÄNDERTE FASSUNG DAVON FEHLER IRGENDEINER ART BEINHALTEN, TRAGEN SIE (NICHT " -"DER URSPRUNGSAUTOR, DER AUTOR ODER EIN MITWIRKENDER) DIE KOSTEN FÜR " +"VERÄNDERTE FASSUNG DAVON FEHLER IRGENDEINER ART BEINHALTEN, TRAGEN SIE " +"(NICHT DER URSPRUNGSAUTOR, DER AUTOR ODER EIN MITWIRKENDER) DIE KOSTEN FÜR " "NOTWENDIGE DIENSTLEISTUNGEN, REPARATUREN ODER FEHLERKORREKTUREN. DIESER " "HAFTUNGSAUSSCHLUSS IST EIN ESSENZIELLER TEIL DIESER LIZENZ. DIE VERWENDUNG " "EINES DOKUMENTS ODER EINER VERÄNDERTEN VERSION DES DOKUMENTS IST NICHT " @@ -151,11 +156,11 @@ msgid "" "UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING " "NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY " "CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE " -"DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR " -"ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY " -"CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK " -"STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR " -"LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED " +"DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON " +"FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF " +"ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, " +"WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES " +"OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED " "VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE " "POSSIBILITY OF SUCH DAMAGES." msgstr "" @@ -164,13 +169,13 @@ msgstr "" "ANDERWEITIG KANN DER AUTOR, URSPRUNGSAUTOR, EIN MITWIRKENDER ODER EIN " "VERTRIEBSPARTNER DIESES DOKUMENTS ODER EINER VERÄNDERTEN FASSUNG DES " "DOKUMENTS ODER EIN ZULIEFERER EINER DIESER PARTEIEN, HAFTBAR GEMACHT WERDEN " -"FÜR DIREKTE, INDIREKTE, SPEZIELLE, VERSEHENTLICHE ODER FOLGESCHÄDEN JEGLICHER " -"ART, EINSCHLIEßLICH UND OHNE EINSCHRÄNKUNGEN SCHÄDEN DURCH VERLUST VON " -"KULANZ, ARBEITSAUSFALL, COMPUTERVERSAGEN ODER COMPUTERFEHLFUNKTIONEN ODER " -"ALLE ANDEREN SCHÄDEN ODER VERLUSTE, DIE SICH AUS ODER IN VERBINDUNG MIT DER " -"VERWENDUNG DES DOKUMENTS UND VERÄNDERTER FASSUNGEN DES DOKUMENTS ERGEBEN, " -"AUCH WENN DIE OBEN GENANNTEN PARTEIEN ÜBER DIE MÖGLICHKEIT SOLCHER SCHÄDEN " -"INFORMIERT WAREN." +"FÜR DIREKTE, INDIREKTE, SPEZIELLE, VERSEHENTLICHE ODER FOLGESCHÄDEN " +"JEGLICHER ART, EINSCHLIEßLICH UND OHNE EINSCHRÄNKUNGEN SCHÄDEN DURCH VERLUST " +"VON KULANZ, ARBEITSAUSFALL, COMPUTERVERSAGEN ODER COMPUTERFEHLFUNKTIONEN " +"ODER ALLE ANDEREN SCHÄDEN ODER VERLUSTE, DIE SICH AUS ODER IN VERBINDUNG MIT " +"DER VERWENDUNG DES DOKUMENTS UND VERÄNDERTER FASSUNGEN DES DOKUMENTS " +"ERGEBEN, AUCH WENN DIE OBEN GENANNTEN PARTEIEN ÜBER DIE MÖGLICHKEIT SOLCHER " +"SCHÄDEN INFORMIERT WAREN." #: C/krb5-auth-dialog.xml:28(para) msgid "" @@ -179,8 +184,8 @@ msgid "" "<placeholder-1/>" msgstr "" "DAS DOKUMENT UND VERÄNDERTE FASSUNGEN DES DOKUMENTS WERDEN UNTER DEN " -"BEDINGUNGEN DER GNU FREE DOCUMENTATION LICENSE ZUR VERFÜGUNG GESTELLT MIT DEM " -"WEITERGEHENDEN VERSTÄNDNIS, DASS: <placeholder-1/>" +"BEDINGUNGEN DER GNU FREE DOCUMENTATION LICENSE ZUR VERFÜGUNG GESTELLT MIT " +"DEM WEITERGEHENDEN VERSTÄNDNIS, DASS: <placeholder-1/>" #: C/krb5-auth-dialog.xml:69(firstname) msgid "Jonathan" @@ -223,9 +228,8 @@ msgid "" "This manual describes how to use the Kerberos Network Authentication Dialog " "to manage your Kerberos tickets." msgstr "" -"Dieses Handbuch beschreibt, wie Sie den Kerberos " -"Netzwerkanmeldungsdialog dazu verwenden können, Ihre Kerberos-" -"Tickets zu verwalten." +"Dieses Handbuch beschreibt, wie Sie den Kerberos Netzwerkanmeldungsdialog " +"dazu verwenden können, Ihre Kerberos-Tickets zu verwalten." #: C/krb5-auth-dialog.xml:116(title) msgid "Feedback" @@ -259,26 +263,32 @@ msgstr "krb5-auth-dialog" #: C/krb5-auth-dialog.xml:136(para) msgid "" -"Kerberos Network Authentication Dialog is an applet for the <systemitem>GNOME " -"desktop</systemitem> that monitors and refreshes your Kerberos ticket. It " -"pops up reminders when the ticket is about to expire." +"Kerberos Network Authentication Dialog is an applet for the " +"<systemitem>GNOME desktop</systemitem> that monitors and refreshes your " +"Kerberos ticket. It pops up reminders when the ticket is about to expire." msgstr "" -"Der Kerberos Netzwerkanmeldungsdialog ist ein Applet für den " -"<systemitem>GNOME-Desktop</systemitem>, welches Ihre Kerberos-Tickets " -"überwacht und auffrischt. Erinnerungen werden angezeigt, sobald ein Ticket " -"abzulaufen droht." +"Der Kerberos Netzwerkanmeldungsdialog ist ein Applet für die " +"<systemitem>GNOME-Arbeitsumgebung</systemitem>, welches Ihre Kerberos-" +"Tickets überwacht und auffrischt. Erinnerungen werden angezeigt, sobald ein " +"Ticket abzulaufen droht." #: C/krb5-auth-dialog.xml:141(para) msgid "" "Once you have acquired a Kerberos ticket - be it via GDM or via the applet " -"itself - the applet will handle the ticket's renewal until it expires. It can " -"also be used to destroy (remove) the credential cache, to acquire a ticket " -"with different options or to switch to another principal." +"itself - the applet will handle the ticket's renewal until it expires. It " +"can also be used to destroy (remove) the credential cache, to acquire a " +"ticket with different options or to switch to another principal." msgstr "" +"Sobald Sie ein neues Kerberos-Ticket erhalten haben - sei es über Anmeldung " +"via GDM oder durch das Applet selbst - wird das Applet die Erneuerung des " +"Ticket bis zu dessen Ablaufen übernehmen. Das Applet kann außerdem zur " +"Löschung des Ticket-Caches, zur Anforderung eines neuen Tickets mit anderen " +"Einstellungen und zum Ändern des eingestellten Principals verwendet werden." +# Aufruf per CLI #: C/krb5-auth-dialog.xml:146(title) msgid "Usage" -msgstr "Benutzung" +msgstr "Aufruf" #: C/krb5-auth-dialog.xml:147(para) msgid "" @@ -297,8 +307,8 @@ msgstr "Befehlszeile" #: C/krb5-auth-dialog.xml:155(para) msgid "" -"Type <command>krb5-auth-dialog --always</command>, then press <keycap>Return</" -"keycap>:" +"Type <command>krb5-auth-dialog --always</command>, then press " +"<keycap>Return</keycap>:" msgstr "" "Geben Sie <command>krb5-auth-dialog --always</command> ein und drücken Sie " "anschließend die <keycap>Eingabetaste</keycap>:" @@ -311,38 +321,46 @@ msgstr "" #: C/krb5-auth-dialog.xml:167(title) C/krb5-auth-dialog.xml:170(title) msgid "Valid Kerberos ticket" -msgstr "" +msgstr "Gültiges Kerberos-Ticket" #: C/krb5-auth-dialog.xml:168(para) msgid "" "You have a valid Kerberos ticket that can be used to authenticate to network " "services." msgstr "" +"Sie besitzen ein gültiges Kerberos-Ticket, welches für die Anmeldung an " +"Netzwerkdiensten benutzt werden kann." #: C/krb5-auth-dialog.xml:182(title) C/krb5-auth-dialog.xml:185(title) msgid "Kerberos ticket expiring" -msgstr "" +msgstr "Kerberos-Ticket droht abzulaufen" #: C/krb5-auth-dialog.xml:183(para) msgid "" "The Kerberos ticket is about to expire but it can still be used to " "authenticate to network services." msgstr "" -"Das Kerberos-Ticket droht abzulaufen, aber ist noch immer dazu verwendbar, " -"sich an Netzwerkdiensten zu legitimieren." +"Das Kerberos-Ticket droht abzulaufen, ist aber noch immer dazu verwendbar, " +"sich an Netzwerkdiensten anzumelden." #: C/krb5-auth-dialog.xml:196(title) C/krb5-auth-dialog.xml:200(title) msgid "Kerberos ticket expired" -msgstr "" +msgstr "Kerberos-Ticket ist abgelaufen" #: C/krb5-auth-dialog.xml:197(para) msgid "" "Your Kerberos became invalid (e.g. expired). It can no longer be used to " "authenticate to network services. This is not a problem if the application " "that requires Kerberos knows how to request a new ticket via " -"<application>Kerberos Network Authentication Dialog</application>. In case it " -"doesn't you can just left click on the applet an reenter your password." +"<application>Kerberos Network Authentication Dialog</application>. In case " +"it doesn't you can just left click on the applet an reenter your password." msgstr "" +"Ihr Kerberos Ticket ist ungültig (abgelaufen). Es kann nicht länger für die " +"Anmeldung an Netzwerkdiensten benutzt werden. Dies ist kein Problem, falls " +"die Anwendung, welche Kerberos benötigt, in der Lage ist ein neues Ticket " +"via <application>Kerberos Netzwerkanmeldungsdialog</application> " +"anzufordern. Andernfalls können Sie mit der linken Maustaste auf das Applet " +"klicken und das Passwort neu eingeben." #: C/krb5-auth-dialog.xml:213(title) msgid "Notification Messages" @@ -358,45 +376,52 @@ msgstr "" #: C/krb5-auth-dialog.xml:219(title) msgid "Kerberos credentials valid" -msgstr "" +msgstr "Kerberos-Anmeldedaten sind gültig" #: C/krb5-auth-dialog.xml:220(para) msgid "" -"You just acquired a valid Kerberos ticket that can be used to authenticate to " -"network services." +"You just acquired a valid Kerberos ticket that can be used to authenticate " +"to network services." msgstr "" +"Sie haben soeben ein gültiges Kerberos Ticket erhalten, welches für die " +"Anmeldung an Netzwerkdiensten benutzt werden kann." #: C/krb5-auth-dialog.xml:222(title) msgid "Notification when Kerberos credentials become valid" -msgstr "" +msgstr "Benachrichtigung, falls Kerberos Anmeldedaten gültig sind" #: C/krb5-auth-dialog.xml:234(title) msgid "Kerberos credentials expiring" -msgstr "" +msgstr "Kerberos-Anmeldedaten drohen abzulaufen" #: C/krb5-auth-dialog.xml:235(para) msgid "" -"Your Kerberos credentials are about to expire. You can left click on the tray " -"applet to refresh them." +"Your Kerberos credentials are about to expire. You can left click on the " +"tray applet to refresh them." msgstr "" +"Ihre Kerberos Anmeldedaten drohen abzulaufen. Sie können die Anmeldedaten " +"durch einen Klick mit der linken Maustaste auf das Applet erneuern." #: C/krb5-auth-dialog.xml:237(title) msgid "Notification when Kerberos credentials expiring" -msgstr "" +msgstr "Benachrichtigung, falls Kerberos Anmeldedaten abzulaufen drohen" #: C/krb5-auth-dialog.xml:249(title) msgid "Kerberos credentials expired" -msgstr "" +msgstr "Kerberos-Anmeldedaten sind abgelaufen" +# Deppenleerzeichen #: C/krb5-auth-dialog.xml:250(para) msgid "" "Your Kerberos credentials just expired. They can no longer be used to " "authenticate to network services." msgstr "" +"Ihre Kerberos-Anmeldedaten sind soeben abgelaufen. Sie können nicht mehr für " +"eine Anmeldung an Netzwerkdiensten benutzt werden." #: C/krb5-auth-dialog.xml:252(title) msgid "Notification when Kerberos credentials expired" -msgstr "" +msgstr "Benachrichtigung, falls Kerberos-Anmeldedaten abgelaufen sind" #: C/krb5-auth-dialog.xml:265(title) msgid "Preferences" @@ -404,7 +429,7 @@ msgstr "Einstellungen" #: C/krb5-auth-dialog.xml:269(title) msgid "Kerberos Principal Preferences" -msgstr "" +msgstr "Einstellungen für Kerberos-Principal" #: C/krb5-auth-dialog.xml:274(para) msgid "Dialog Element" @@ -416,29 +441,38 @@ msgstr "Beschreibung" #: C/krb5-auth-dialog.xml:285(guilabel) msgid "Kerberos Principal" -msgstr "" +msgstr "Kerberos-Principal" #: C/krb5-auth-dialog.xml:289(para) msgid "" -"The Kerberos principal to use. Leave blanc to use you current username. If " -"you change this setting you have to destroy the credential cache before these " -"setting takes effect." +"The Kerberos principal to use. Leave blank to use you current username. If " +"you change this setting you have to destroy the credential cache before " +"these setting takes effect." msgstr "" +"Der Kerberos-Principal, welcher benutzt werden soll. Um Ihren aktuellen " +"Benutzernamen zu verwenden, Feld bitte leer lassen. Falls Sie diese " +"Einstellung ändern, müssen Sie den Ticket-Cache löschen bevor die Änderung " +"wirksam wird." #: C/krb5-auth-dialog.xml:296(guilabel) msgid "PKINIT Userid" -msgstr "" +msgstr "PKINIT-Benutzerkennung" +# Security token? Bitte in der de.po der GUI nachschauen. Wir verwenden »« anstatt \" #: C/krb5-auth-dialog.xml:300(para) msgid "" "The principals public/private/certificate identifier. Leave empty if not " "using PKINIT. To enable using a security token add the path to the pkcs11 " "Library here, e.g. \"PKCS11:/usr/lib/opensc/opensc-pkcs11.so\"" msgstr "" +"Die öffentliche/private/zertifizierte Kennung des Principals. Feld bitte " +"leer lassen, falls PKINIT nicht benutzt wird. Um die Verwendung eines " +"Sicherheits-Token zu aktivieren, fügen Sie den Pfad zur pkcs11-Bibliothek " +"hier ein, zum Beispiel »PKCS11:/usr/lib/opensc/opensc-pkcs11.so«" #: C/krb5-auth-dialog.xml:306(guilabel) msgid "PKINIT anchors" -msgstr "" +msgstr "PKINIT-Anker" #: C/krb5-auth-dialog.xml:310(para) msgid "" @@ -446,10 +480,13 @@ msgid "" "set this if it hasn't been set up globally in <filename>/etc/krb5.conf</" "filename>" msgstr "" +"Pfad zu CA Zertifikaten, welche als »trust anchors« für pkinit verwendet " +"werden. Sie müssen diese Einstellung nur vornehmen, falls sie nicht in " +"<filename>/etc/krb5.conf</filename> definiert wurde." #: C/krb5-auth-dialog.xml:316(guilabel) msgid "forwardable" -msgstr "" +msgstr "weiterleitbar" #: C/krb5-auth-dialog.xml:320(para) msgid "" @@ -457,10 +494,14 @@ msgid "" "setting requires to you to reauthenticate by left clicking on the tray icon " "and entering your password." msgstr "" +"Gibt an, ob das angeforderte Kerberos Ticket als »weiterleitbar« definiert " +"wird. Die Änderung dieser Einstellung erfordert eine erneute Anmeldung, " +"indem Sie mit der linken Maustaste auf das Applet klicken und Ihr Passwort " +"eingeben." #: C/krb5-auth-dialog.xml:326(guilabel) msgid "renewable" -msgstr "" +msgstr "erneuerbar" #: C/krb5-auth-dialog.xml:330(para) msgid "" @@ -468,10 +509,13 @@ msgid "" "setting requires to you to reauthenticate by left clicking on the tray icon " "and entering your password." msgstr "" +"Gibt an, ob das angeforderte Kerberos-Ticket als »erneuerbar« definiert wird. " +"Die Änderung dieser Einstellung erfordert eine erneute Anmeldung, indem Sie " +"mit der linken Maustaste auf das Applet klicken und Ihr Passwort eingeben." #: C/krb5-auth-dialog.xml:336(guilabel) msgid "proxiable" -msgstr "" +msgstr "proxy-fähig" #: C/krb5-auth-dialog.xml:340(para) msgid "" @@ -479,20 +523,26 @@ msgid "" "setting requires to you to reauthenticate by left clicking on the tray icon " "and entering your password." msgstr "" +"Gibt an, ob das angeforderte Kerberos Ticket als »proxy-fähig« definiert " +"wird. Die Änderung dieser Einstellung erfordert eine erneute Anmeldung, " +"indem Sie mit der linken Maustaste auf das Applet klicken und Ihr Passwort " +"eingeben." #: C/krb5-auth-dialog.xml:346(guilabel) msgid "Warn .. minutes before expiry" -msgstr "" +msgstr "Warnung … Minuten vor Ablaufen des Tickets" #: C/krb5-auth-dialog.xml:350(para) msgid "" "Notifications that your credentials are about to expire will be sent that " "many minutes before expiry." msgstr "" +"Benachrichtigungen, dass Ihre Anmeldedaten abzulaufen drohen, werden in den " +"hier eingegebenen Minuten vor Ablaufen des Tickets verschickt." #: C/krb5-auth-dialog.xml:356(guilabel) msgid "Show tray icon" -msgstr "" +msgstr "Benachrichtigungssymbol anzeigen" #: C/krb5-auth-dialog.xml:360(para) msgid "" @@ -505,15 +555,23 @@ msgstr "" #: C/krb5-auth-dialog.xml:266(para) msgid "" -"You can set preferences by selecting \"Preferences\" from the applets context " -"menu or by selecting \"Network Authentication\" in the <application>Control " -"Center</application>. <table frame=\"topbot\" id=\"tbl-principal-prefs" -"\"><placeholder-1/><tgroup cols=\"2\" colsep=\"1\" rowsep=\"1\"><colspec " -"colwidth=\"19.21*\"/><colspec colwidth=\"46.79*\"/><placeholder-2/" -"><placeholder-3/></tgroup></table>" -msgstr "" - -#. Put one translator per line, in the form of NAME <EMAIL>, YEAR1, YEAR2. +"You can set preferences by selecting \"Preferences\" from the applets " +"context menu or by selecting \"Network Authentication\" in the " +"<application>Control Center</application>. <table frame=\"topbot\" id=\"tbl-" +"principal-prefs\"><placeholder-1/><tgroup cols=\"2\" colsep=\"1\" rowsep=\"1" +"\"><colspec colwidth=\"19.21*\"/><colspec colwidth=\"46.79*\"/><placeholder-" +"2/><placeholder-3/></tgroup></table>" +msgstr "" +"Sie können Einstellungen ändern, indem Sie »Einstellungen« im Kontextmenü " +"des Applets auswählen oder indem Sie »Netzwerkanmeldung« in der " +"<application>Systemverwaltung</application> auswählen. <table frame=\"topbot" +"\" id=\"tbl-principal-prefs\"><placeholder-1/><tgroup cols=\"2\" colsep=\"1" +"\" rowsep=\"1\"><colspec colwidth=\"19.21*\"/><colspec colwidth=\"46.79*\"/" +"><placeholder-2/><placeholder-3/></tgroup></table>" + +#. Put one translator per line, in the form of NAME <EMAIL>, YEAR1, YEAR2 #: C/krb5-auth-dialog.xml:0(None) msgid "translator-credits" -msgstr "Mario Blättermann <mariobl@gnome.org>, 2009" +msgstr "" +"Mario Blättermann <mariobl@gnome.org>, 2009\n" +"Markus Egger <markus.egger.www@gmail.com>" diff --git a/help/de/krb5-auth-dialog.xml b/help/de/krb5-auth-dialog.xml index 86bf783..b7bb1a0 100644 --- a/help/de/krb5-auth-dialog.xml +++ b/help/de/krb5-auth-dialog.xml @@ -133,13 +133,12 @@ <tertiary>krb5-auth-dialog</tertiary> </indexterm> - <para>Der Kerberos Netzwerkanmeldungsdialog ist ein Applet für den <systemitem>GNOME-Desktop</systemitem>, welches Ihre Kerberos-Tickets überwacht und auffrischt. Erinnerungen werden angezeigt, sobald ein Ticket abzulaufen droht.</para> - <para> - Once you have acquired a Kerberos ticket - be it via GDM or via the applet itself - the applet will handle the ticket's renewal until it expires. It can also be used to destroy (remove) the credential cache, to acquire a ticket with different options or to switch to another principal.</para> + <para>Der Kerberos Netzwerkanmeldungsdialog ist ein Applet für die <systemitem>GNOME-Arbeitsumgebung</systemitem>, welches Ihre Kerberos-Tickets überwacht und auffrischt. Erinnerungen werden angezeigt, sobald ein Ticket abzulaufen droht.</para> + <para>Sobald Sie ein neues Kerberos-Ticket erhalten haben - sei es über Anmeldung via GDM oder durch das Applet selbst - wird das Applet die Erneuerung des Ticket bis zu dessen Ablaufen übernehmen. Das Applet kann außerdem zur Löschung des Ticket-Caches, zur Anforderung eines neuen Tickets mit anderen Einstellungen und zum Ändern des eingestellten Principals verwendet werden.</para> </section> <section id="using"> - <title>Benutzung</title> + <title>Aufruf</title> <para>Der <application>Kerberos Netzwerkanmeldungsdialog</application> wird üblicherweise bereits beim Start von GNOME gestartet, aber Sie können den <application>Kerberos Netzwerkanmeldungsdialog</application> auch manuell folgendermaßen starten:</para> <variablelist> <varlistentry> @@ -152,10 +151,10 @@ <para>Das Symbol im Benachrichtigungsfeld zeigt einen der folgenden drei Zustände an:</para> <section id="trayicon-valid"> - <title>Valid Kerberos ticket</title> - <para>You have a valid Kerberos ticket that can be used to authenticate to network services.</para> + <title>Gültiges Kerberos-Ticket</title> + <para>Sie besitzen ein gültiges Kerberos-Ticket, welches für die Anmeldung an Netzwerkdiensten benutzt werden kann.</para> <figure> - <title>Valid Kerberos ticket</title> + <title>Gültiges Kerberos-Ticket</title> <screenshot> <mediaobject> <imageobject> @@ -167,10 +166,10 @@ </section> <section id="trayicon-expiring"> - <title>Kerberos ticket expiring</title> - <para>Das Kerberos-Ticket droht abzulaufen, aber ist noch immer dazu verwendbar, sich an Netzwerkdiensten zu legitimieren.</para> + <title>Kerberos-Ticket droht abzulaufen</title> + <para>Das Kerberos-Ticket droht abzulaufen, ist aber noch immer dazu verwendbar, sich an Netzwerkdiensten anzumelden.</para> <figure> - <title>Kerberos ticket expiring</title> + <title>Kerberos-Ticket droht abzulaufen</title> <screenshot> <mediaobject> <imageobject> @@ -181,11 +180,10 @@ </figure> </section> <section id="trayicon-expired"> - <title>Kerberos ticket expired</title> - <para>Your Kerberos became invalid (e.g. expired). It can no longer be used to authenticate to network services. This is not a problem if the application that requires Kerberos knows how to request a new ticket via <application>Kerberos Network Authentication Dialog</application>. In case it doesn't you can just left click on the applet an reenter your password. -</para> + <title>Kerberos-Ticket ist abgelaufen</title> + <para>Ihr Kerberos Ticket ist ungültig (abgelaufen). Es kann nicht länger für die Anmeldung an Netzwerkdiensten benutzt werden. Dies ist kein Problem, falls die Anwendung, welche Kerberos benötigt, in der Lage ist ein neues Ticket via <application>Kerberos Netzwerkanmeldungsdialog</application> anzufordern. Andernfalls können Sie mit der linken Maustaste auf das Applet klicken und das Passwort neu eingeben.</para> <figure> - <title>Kerberos ticket expired</title> + <title>Kerberos-Ticket ist abgelaufen</title> <screenshot> <mediaobject> <imageobject> @@ -202,10 +200,10 @@ <para>Wenn der <application>Kerberos Netzwerkanmeldungsdialog</application> gestartet wurde, können die folgenden Benachrichtigungen angezeigt werden.</para> <section id="notify-valid"> - <title>Kerberos credentials valid</title> - <para>You just acquired a valid Kerberos ticket that can be used to authenticate to network services.</para> + <title>Kerberos-Anmeldedaten sind gültig</title> + <para>Sie haben soeben ein gültiges Kerberos Ticket erhalten, welches für die Anmeldung an Netzwerkdiensten benutzt werden kann.</para> <figure> - <title>Notification when Kerberos credentials become valid</title> + <title>Benachrichtigung, falls Kerberos Anmeldedaten gültig sind</title> <screenshot> <mediaobject> <imageobject> @@ -217,10 +215,10 @@ </section> <section id="notify-expiring"> - <title>Kerberos credentials expiring</title> - <para>Your Kerberos credentials are about to expire. You can left click on the tray applet to refresh them.</para> + <title>Kerberos-Anmeldedaten drohen abzulaufen</title> + <para>Ihre Kerberos Anmeldedaten drohen abzulaufen. Sie können die Anmeldedaten durch einen Klick mit der linken Maustaste auf das Applet erneuern.</para> <figure> - <title>Notification when Kerberos credentials expiring</title> + <title>Benachrichtigung, falls Kerberos Anmeldedaten abzulaufen drohen</title> <screenshot> <mediaobject> <imageobject> @@ -232,10 +230,10 @@ </section> <section id="notify-expired"> - <title>Kerberos credentials expired</title> - <para>Your Kerberos credentials just expired. They can no longer be used to authenticate to network services.</para> + <title>Kerberos-Anmeldedaten sind abgelaufen</title> + <para>Ihre Kerberos-Anmeldedaten sind soeben abgelaufen. Sie können nicht mehr für eine Anmeldung an Netzwerkdiensten benutzt werden.</para> <figure> - <title>Notification when Kerberos credentials expired</title> + <title>Benachrichtigung, falls Kerberos-Anmeldedaten abgelaufen sind</title> <screenshot> <mediaobject> <imageobject> @@ -249,12 +247,7 @@ <section id="preferences"> <title>Einstellungen</title> - <para> - You can set preferences by selecting "Preferences" from the applets context menu or by selecting "Network Authentication" in the <application>Control Center</application>. - <table frame="topbot" id="tbl-principal-prefs"> - <title>Kerberos Principal Preferences</title> - <tgroup cols="2" colsep="1" rowsep="1"> <colspec colwidth="19.21*"/> <colspec colwidth="46.79*"/> - <thead> + <para>Sie können Einstellungen ändern, indem Sie »Einstellungen« im Kontextmenü des Applets auswählen oder indem Sie »Netzwerkanmeldung« in der <application>Systemverwaltung</application> auswählen. <table frame="topbot" id="tbl-principal-prefs"><title>Einstellungen für Kerberos-Principal</title><tgroup cols="2" colsep="1" rowsep="1"><colspec colwidth="19.21*"/><colspec colwidth="46.79*"/><thead> <row> <entry colsep="0" rowsep="1"> <para>Dialogelement</para> @@ -263,93 +256,89 @@ <para>Beschreibung</para> </entry> </row> - </thead> - <tbody> + </thead><tbody> <row> <entry colsep="0" rowsep="0" valign="top"> <para> - <guilabel>Kerberos Principal</guilabel> + <guilabel>Kerberos-Principal</guilabel> </para> </entry> <entry colsep="0" rowsep="0" valign="top"> - <para>The Kerberos principal to use. Leave blank to use you current username. If you change this setting you have to destroy the credential cache before these setting takes effect.</para> + <para>Der Kerberos-Principal, welcher benutzt werden soll. Um Ihren aktuellen Benutzernamen zu verwenden, Feld bitte leer lassen. Falls Sie diese Einstellung ändern, müssen Sie den Ticket-Cache löschen bevor die Änderung wirksam wird.</para> </entry> </row> <row> <entry colsep="0" rowsep="0" valign="top"> <para> - <guilabel>PKINIT Userid</guilabel> + <guilabel>PKINIT-Benutzerkennung</guilabel> </para> </entry> <entry colsep="0" rowsep="0" valign="top"> - <para>The principals public/private/certificate identifier. Leave empty if not using PKINIT. To enable using a security token add the path to the pkcs11 Library here, e.g. "PKCS11:/usr/lib/opensc/opensc-pkcs11.so"</para> + <para>Die öffentliche/private/zertifizierte Kennung des Principals. Feld bitte leer lassen, falls PKINIT nicht benutzt wird. Um die Verwendung eines Sicherheits-Token zu aktivieren, fügen Sie den Pfad zur pkcs11-Bibliothek hier ein, zum Beispiel »PKCS11:/usr/lib/opensc/opensc-pkcs11.so«</para> </entry> </row> <row> <entry colsep="0" rowsep="0" valign="top"> <para> - <guilabel>PKINIT anchors</guilabel> + <guilabel>PKINIT-Anker</guilabel> </para> </entry> <entry colsep="0" rowsep="0" valign="top"> - <para>Path to CA certificates used as trust anchors for pkinit. You only need to set this if it hasn't been set up globally in <filename>/etc/krb5.conf</filename></para> + <para>Pfad zu CA Zertifikaten, welche als »trust anchors« für pkinit verwendet werden. Sie müssen diese Einstellung nur vornehmen, falls sie nicht in <filename>/etc/krb5.conf</filename> definiert wurde.</para> </entry> </row> <row> <entry colsep="0" rowsep="0" valign="top"> <para> - <guilabel>forwardable</guilabel> + <guilabel>weiterleitbar</guilabel> </para> </entry> <entry colsep="0" rowsep="0" valign="top"> - <para>Whether the requested Kerberos ticket should be forwardable. Changing this setting requires to you to reauthenticate by left clicking on the tray icon and entering your password.</para> + <para>Gibt an, ob das angeforderte Kerberos Ticket als »weiterleitbar« definiert wird. Die Änderung dieser Einstellung erfordert eine erneute Anmeldung, indem Sie mit der linken Maustaste auf das Applet klicken und Ihr Passwort eingeben.</para> </entry> </row> <row> <entry colsep="0" rowsep="0" valign="top"> <para> - <guilabel>renewable</guilabel> + <guilabel>erneuerbar</guilabel> </para> </entry> <entry colsep="0" rowsep="0" valign="top"> - <para>Whether the requested Kerberos ticket should be renewable. Changing this setting requires to you to reauthenticate by left clicking on the tray icon and entering your password.</para> + <para>Gibt an, ob das angeforderte Kerberos-Ticket als »erneuerbar« definiert wird. Die Änderung dieser Einstellung erfordert eine erneute Anmeldung, indem Sie mit der linken Maustaste auf das Applet klicken und Ihr Passwort eingeben.</para> </entry> </row> <row> <entry colsep="0" rowsep="0" valign="top"> <para> - <guilabel>proxiable</guilabel> + <guilabel>proxy-fähig</guilabel> </para> </entry> <entry colsep="0" rowsep="0" valign="top"> - <para>Whether the requested Kerberos ticket should be proxiable. Changing this setting requires to you to reauthenticate by left clicking on the tray icon and entering your password.</para> + <para>Gibt an, ob das angeforderte Kerberos Ticket als »proxy-fähig« definiert wird. Die Änderung dieser Einstellung erfordert eine erneute Anmeldung, indem Sie mit der linken Maustaste auf das Applet klicken und Ihr Passwort eingeben.</para> </entry> </row> <row> <entry colsep="0" rowsep="0" valign="top"> <para> - <guilabel>Warn .. minutes before expiry</guilabel> + <guilabel>Warnung … Minuten vor Ablaufen des Tickets</guilabel> </para> </entry> <entry colsep="0" rowsep="0" valign="top"> - <para>Notifications that your credentials are about to expire will be sent that many minutes before expiry.</para> + <para>Benachrichtigungen, dass Ihre Anmeldedaten abzulaufen drohen, werden in den hier eingegebenen Minuten vor Ablaufen des Tickets verschickt.</para> </entry> </row> <row> <entry colsep="0" rowsep="0" valign="top"> <para> - <guilabel>Show tray icon</guilabel> + <guilabel>Benachrichtigungssymbol anzeigen</guilabel> </para> </entry> <entry colsep="0" rowsep="0" valign="top"> <para>Legt fest, ob das Benachrichtigungssymbol angezeigt werden soll oder nicht. Deaktivieren des Symbols deaktiviert auch die Benachrichtigungen, anstelle dessen wird ein Passwortdialog geöffnet.</para> </entry> </row> - </tbody> - </tgroup> - </table> - </para> + </tbody></tgroup></table></para> </section> </article> diff --git a/help/sl/krb5-auth-dialog.xml b/help/sl/krb5-auth-dialog.xml new file mode 100644 index 0000000..e6e00d5 --- /dev/null +++ b/help/sl/krb5-auth-dialog.xml @@ -0,0 +1,435 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [ +<!ENTITY legal SYSTEM "legal.xml"> +<!ENTITY GFDL SYSTEM "fdl-appendix.xml"> +<!ENTITY appversion "0.10"> +<!ENTITY manrevision "0.1"> +<!ENTITY date "May 2009"> +<!ENTITY app "Kerberos Network Authentication Dialog"> +<!ENTITY application "<application>&app;</application>"> +]> +<!-- + (Do not remove this comment block.) + Template Maintained by the GNOME Documentation Project: + http://developer.gnome.org/projects/gdp + Template version: 2.0 beta + Template last modified Feb 12, 2002 +--> +<!-- + (Do not remove this comment block.) + Version: 0.0.1 + Last modified: May 22, 2009 + Maintainers: + Guido Günther <agx@sigxcpu.org> + Translators: + (translators put your name and email here) +--> +<!-- =============Document Header ============================= --> +<article id="index" lang="sl"> + <!-- please do not change the id; for translations, change lang to --> + <!-- appropriate code --> + + <articleinfo> + <title><application>Kerberos Network Authentication Dialog</application> Manual</title> + <abstract role="description"> + <para> + Kerberos Network Authentication Dialog is a small helper that monitors and refreshes your Kerberos ticket. + </para> + </abstract> + <copyright> + <year>2009</year> + <holder>Guido Günther</holder> + </copyright> + + <!-- translators: uncomment this: + + <copyright> + <year>2000</year> + <holder>ME-THE-TRANSLATOR (Latin translation)</holder> + </copyright> + + --> + <!-- An address can be added to the publisher information. If a role is + not specified, the publisher/author is the same for all versions of the + document. --> + <publisher role="maintainer"> + <publishername>Guido Günther</publishername> + </publisher> + + <legalnotice id="legalnotice"> + <para> + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation + License (GFDL), Version 1.1 or any later version published + by the Free Software Foundation with no Invariant Sections, + no Front-Cover Texts, and no Back-Cover Texts. You can find + a copy of the GFDL at this <ulink type="help" url="ghelp:fdl">link</ulink> or in the file COPYING-DOCS + distributed with this manual. + </para> + <para> This manual is part of a collection of GNOME manuals + distributed under the GFDL. If you want to distribute this + manual separately from the collection, you can do so by + adding a copy of the license to the manual, as described in + section 6 of the license. + </para> + + <para> + Many of the names used by companies to distinguish their + products and services are claimed as trademarks. Where those + names appear in any GNOME documentation, and the members of + the GNOME Documentation Project are made aware of those + trademarks, then the names are in capital letters or initial + capital letters. + </para> + + <para> + DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED + UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE + WITH THE FURTHER UNDERSTANDING THAT: + + <orderedlist> + <listitem> + <para>DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR + IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES + THAT THE DOCUMENT OR MODIFIED VERSION OF THE + DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR + A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE + RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE + OF THE DOCUMENT OR MODIFIED VERSION OF THE + DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR + MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY + CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY + SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS + LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED + VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER + EXCEPT UNDER THIS DISCLAIMER; AND + </para> + </listitem> + <listitem> + <para>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL + THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), + CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, + INITIAL WRITER, ANY CONTRIBUTOR, OR ANY + DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION + OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH + PARTIES, BE LIABLE TO ANY PERSON FOR ANY + DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR + CONSEQUENTIAL DAMAGES OF ANY CHARACTER + INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS + OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR + MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR + LOSSES ARISING OUT OF OR RELATING TO USE OF THE + DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, + EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF + THE POSSIBILITY OF SUCH DAMAGES. + </para> + </listitem> + </orderedlist> + </para> + </legalnotice> + + + + <authorgroup> + <author> + <firstname>Jonathan</firstname> + <surname>Blandford</surname> + <email>rjb@redhat.com</email> + </author> + <author role="maintainer"> + <firstname>Guido</firstname> + <surname>Günther</surname> + <email>agx@sigxcpu.org</email> + </author> + <!-- This is appropriate place for other contributors: translators, + maintainers, etc. Commented out by default. + <othercredit role="translator"> + <firstname>Latin</firstname> + <surname>Translator 1</surname> + <affiliation> + <orgname>Latin Translation Team</orgname> + <address> <email>translator@gnome.org</email> </address> + </affiliation> + <contrib>Latin translation</contrib> + </othercredit> + --> + </authorgroup> + + <!-- The revision numbering system for GNOME manuals is as follows: --> + <!-- * the revision number consists of two components --> + <!-- * the first component of the revision number reflects the release version of the GNOME desktop. --> + <!-- * the second component of the revision number is a decimal unit that is incremented with each revision of the manual. --> + <!-- For example, if the GNOME desktop release is V2.x, the first version of the manual that --> + <!-- is written in that desktop timeframe is V2.0, the second version of the manual is V2.1, etc. --> + <!-- When the desktop release version changes to V3.x, the revision number of the manual changes --> + <!-- to V3.0, and so on. --> + + <revhistory> + <revision> + <revnumber>2.0</revnumber> + <date>May 2009</date> + <revdescription> + <para role="author">Guido Günther <email>agx@sigxcpu.org</email></para> + </revdescription> + </revision> + </revhistory> + <releaseinfo>This manual describes how to use the Kerberos Network Authentication Dialog + to manage your Kerberos tickets. + </releaseinfo> + <legalnotice> + <title>Odziv</title> + <para>To report a bug or make a suggestion regarding this package or + this manual, use + <ulink url="http://bugzilla.gnome.org" type="http">GNOME's Bugzilla</ulink>. + </para> + <!-- Translators may also add here feedback address for translations --> + </legalnotice> + </articleinfo> + + <!-- ============= Document Body ============================= --> + <!-- ============= Introduction ============================== --> + <section id="intro"> + <title>Uvod</title> + <indexterm> + <primary><application>Kerberos Network Authentication Dialog</application></primary> + <secondary>Priročnik</secondary> + <tertiary>krb5-auth-dialog</tertiary> + </indexterm> + + <para> + Kerberos Network Authentication Dialog is an applet for the <systemitem>GNOME desktop</systemitem> that monitors + and refreshes your Kerberos ticket. It pops up reminders when the ticket + is about to expire. + </para> + <para> + Once you have acquired a Kerberos ticket - be it via GDM or via the applet itself - the applet will handle the ticket's renewal until it expires. It can also be used to destroy (remove) the credential cache, to acquire a ticket with different options or to switch to another principal.</para> + </section> + +<section id="using"> + <title>Usage</title> + <para> + <application>Kerberos Network Authentication Dialog</application> is usually started in GNOME startup, but + you can manually start <application>Kerberos Network Authentication Dialog</application> by doing: + </para> + <variablelist> + <varlistentry> + <term>Command line</term> + <listitem> + <para> + Type <command>krb5-auth-dialog --always</command>, + then press <keycap>Return</keycap>: + </para> + </listitem> + </varlistentry> + </variablelist> + <para> + The tray icon will indicate one of tree states: + </para> + + <section id="trayicon-valid"> + <title>Valid Kerberos ticket</title> + <para>You have a valid Kerberos ticket that can be used to authenticate to network services.</para> + <figure> + <title>Valid Kerberos ticket</title> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/trayicon-valid.png" format="PNG"/> + </imageobject> + </mediaobject> + </screenshot> + </figure> + </section> + + <section id="trayicon-expiring"> + <title>Kerberos ticket expiring</title> + <para>The Kerberos ticket is about to expire but it can still be used to authenticate to network services.</para> + <figure> + <title>Kerberos ticket expiring</title> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/trayicon-expiring.png" format="PNG"/> + </imageobject> + </mediaobject> + </screenshot> + </figure> + </section> + <section id="trayicon-expired"> + <title>Kerberos ticket expired</title> + <para>Your Kerberos became invalid (e.g. expired). It can no longer be used to authenticate to network services. This is not a problem if the application that requires Kerberos knows how to request a new ticket via <application>Kerberos Network Authentication Dialog</application>. In case it doesn't you can just left click on the applet an reenter your password. +</para> + <figure> + <title>Kerberos ticket expired</title> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/trayicon-expired.png" format="PNG"/> + </imageobject> + </mediaobject> + </screenshot> + </figure> + </section> +</section> + +<section id="notify"> + <title>Notification Messages</title> + <para> + When Kerberos Network Authentication Dialog has started, the following notifications may be displayed. + </para> + + <section id="notify-valid"> + <title>Kerberos credentials valid</title> + <para>You just acquired a valid Kerberos ticket that can be used to authenticate to network services.</para> + <figure> + <title>Notification when Kerberos credentials become valid</title> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/ka-valid.png" format="PNG"/> + </imageobject> + </mediaobject> + </screenshot> + </figure> + </section> + + <section id="notify-expiring"> + <title>Kerberos credentials expiring</title> + <para>Your Kerberos credentials are about to expire. You can left click on the tray applet to refresh them.</para> + <figure> + <title>Notification when Kerberos credentials expiring</title> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/ka-expiring.png" format="PNG"/> + </imageobject> + </mediaobject> + </screenshot> + </figure> + </section> + + <section id="notify-expired"> + <title>Kerberos credentials expired</title> + <para>Your Kerberos credentials just expired. They can no longer be used to authenticate to network services.</para> + <figure> + <title>Notification when Kerberos credentials expired</title> + <screenshot> + <mediaobject> + <imageobject> + <imagedata fileref="figures/ka-expired.png" format="PNG"/> + </imageobject> + </mediaobject> + </screenshot> + </figure> + </section> +</section> + +<section id="preferences"> + <title>Preferences</title> + <para> + You can set preferences by selecting "Preferences" from the applets context menu or by selecting "Network Authentication" in the <application>Control Center</application>. + <table frame="topbot" id="tbl-principal-prefs"> + <title>Kerberos Principal Preferences</title> + <tgroup cols="2" colsep="1" rowsep="1"> <colspec colwidth="19.21*"/> <colspec colwidth="46.79*"/> + <thead> + <row> + <entry colsep="0" rowsep="1"> + <para>Dialog Element</para> + </entry> + <entry colsep="0" rowsep="1"> + <para>Description</para> + </entry> + </row> + </thead> + <tbody> + <row> + <entry colsep="0" rowsep="0" valign="top"> + <para> + <guilabel>Kerberos Principal</guilabel> + </para> + </entry> + <entry colsep="0" rowsep="0" valign="top"> + <para>The Kerberos principal to use. Leave blank to use you current username. If you change this setting you have to destroy the credential cache before these setting takes effect.</para> + </entry> + </row> + + <row> + <entry colsep="0" rowsep="0" valign="top"> + <para> + <guilabel>PKINIT Userid</guilabel> + </para> + </entry> + <entry colsep="0" rowsep="0" valign="top"> + <para>The principals public/private/certificate identifier. Leave empty if not using PKINIT. To enable using a security token add the path to the pkcs11 Library here, e.g. "PKCS11:/usr/lib/opensc/opensc-pkcs11.so"</para> + </entry> + </row> + <row> + <entry colsep="0" rowsep="0" valign="top"> + <para> + <guilabel>PKINIT anchors</guilabel> + </para> + </entry> + <entry colsep="0" rowsep="0" valign="top"> + <para>Path to CA certificates used as trust anchors for pkinit. You only need to set this if it hasn't been set up globally in <filename>/etc/krb5.conf</filename></para> + </entry> + </row> + <row> + <entry colsep="0" rowsep="0" valign="top"> + <para> + <guilabel>forwardable</guilabel> + </para> + </entry> + <entry colsep="0" rowsep="0" valign="top"> + <para>Whether the requested Kerberos ticket should be forwardable. Changing this setting requires to you to reauthenticate by left clicking on the tray icon and entering your password.</para> + </entry> + </row> + <row> + <entry colsep="0" rowsep="0" valign="top"> + <para> + <guilabel>renewable</guilabel> + </para> + </entry> + <entry colsep="0" rowsep="0" valign="top"> + <para>Whether the requested Kerberos ticket should be renewable. Changing this setting requires to you to reauthenticate by left clicking on the tray icon and entering your password.</para> + </entry> + </row> + <row> + <entry colsep="0" rowsep="0" valign="top"> + <para> + <guilabel>proxiable</guilabel> + </para> + </entry> + <entry colsep="0" rowsep="0" valign="top"> + <para>Whether the requested Kerberos ticket should be proxiable. Changing this setting requires to you to reauthenticate by left clicking on the tray icon and entering your password.</para> + </entry> + </row> + <row> + <entry colsep="0" rowsep="0" valign="top"> + <para> + <guilabel>Warn .. minutes before expiry</guilabel> + </para> + </entry> + <entry colsep="0" rowsep="0" valign="top"> + <para>Notifications that your credentials are about to expire will be sent that many minutes before expiry.</para> + </entry> + </row> + <row> + <entry colsep="0" rowsep="0" valign="top"> + <para> + <guilabel>Show tray icon</guilabel> + </para> + </entry> + <entry colsep="0" rowsep="0" valign="top"> + <para>Whether to show the tray icon. Disabling the tray icon will also disable notifications, the password dialog will be brought up instead.</para> + </entry> + </row> + </tbody> + </tgroup> + </table> + </para> +</section> + +</article> diff --git a/help/sl/sl.po b/help/sl/sl.po new file mode 100644 index 0000000..566aef3 --- /dev/null +++ b/help/sl/sl.po @@ -0,0 +1,350 @@ +# Slovenian translation for krb5-auth-dialog help. +# Copyright (C) 2010 krb5-auth-dialog's COPYRIGHT HOLDER +# This file is distributed under the same license as the krb5-auth-dialog package. +# +# Ime Priimek <email>, leto +# +msgid "" +msgstr "" +"Project-Id-Version: krb5-auth-dialog help master\n" +"POT-Creation-Date: 2010-10-13 12:22+0000\n" +"PO-Revision-Date: 2010-10-22 08:14+0100\n" +"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n" +"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n" +"X-Poedit-Country: SLOVENIA\n" +"X-Poedit-Language: Slovenian\n" +"X-Poedit-SourceCharset: utf-8\n" + +#. When image changes, this message will be marked fuzzy or untranslated for you. +#. It doesn't matter what you translate it to: it's not used at all. +#: C/krb5-auth-dialog.xml:174(None) +msgid "@@image: 'figures/trayicon-valid.png'; md5=78989c41fd36e23c0a97b87a2cc440e4" +msgstr "@@image: 'figures/trayicon-valid.png'; md5=78989c41fd36e23c0a97b87a2cc440e4" + +#. When image changes, this message will be marked fuzzy or untranslated for you. +#. It doesn't matter what you translate it to: it's not used at all. +#: C/krb5-auth-dialog.xml:189(None) +msgid "@@image: 'figures/trayicon-expiring.png'; md5=cb1dbed310e568e7cb4684bac85c6969" +msgstr "@@image: 'figures/trayicon-expiring.png'; md5=cb1dbed310e568e7cb4684bac85c6969" + +#. When image changes, this message will be marked fuzzy or untranslated for you. +#. It doesn't matter what you translate it to: it's not used at all. +#: C/krb5-auth-dialog.xml:204(None) +msgid "@@image: 'figures/trayicon-expired.png'; md5=40c03749e8e3773a0e931232a89e3fe2" +msgstr "@@image: 'figures/trayicon-expired.png'; md5=40c03749e8e3773a0e931232a89e3fe2" + +#. When image changes, this message will be marked fuzzy or untranslated for you. +#. It doesn't matter what you translate it to: it's not used at all. +#: C/krb5-auth-dialog.xml:226(None) +msgid "@@image: 'figures/ka-valid.png'; md5=143d137c326eeba1ec48cba8f5805cc1" +msgstr "@@image: 'figures/ka-valid.png'; md5=143d137c326eeba1ec48cba8f5805cc1" + +#. When image changes, this message will be marked fuzzy or untranslated for you. +#. It doesn't matter what you translate it to: it's not used at all. +#: C/krb5-auth-dialog.xml:241(None) +msgid "@@image: 'figures/ka-expiring.png'; md5=37bb5e8f591c8c7fdb6345b8793e76fb" +msgstr "@@image: 'figures/ka-expiring.png'; md5=37bb5e8f591c8c7fdb6345b8793e76fb" + +#. When image changes, this message will be marked fuzzy or untranslated for you. +#. It doesn't matter what you translate it to: it's not used at all. +#: C/krb5-auth-dialog.xml:256(None) +msgid "@@image: 'figures/ka-expired.png'; md5=1e92acc36db8643c6c43473f54f8029f" +msgstr "@@image: 'figures/ka-expired.png'; md5=1e92acc36db8643c6c43473f54f8029f" + +#: C/krb5-auth-dialog.xml:39(title) +msgid "<application>Kerberos Network Authentication Dialog</application> Manual" +msgstr "" + +#: C/krb5-auth-dialog.xml:41(para) +msgid "Kerberos Network Authentication Dialog is a small helper that monitors and refreshes your Kerberos ticket." +msgstr "" + +#: C/krb5-auth-dialog.xml:46(year) +msgid "2009" +msgstr "2009" + +#: C/krb5-auth-dialog.xml:47(holder) +#: C/krb5-auth-dialog.xml:62(publishername) +msgid "Guido Günther" +msgstr "Guido Günther" + +#: C/krb5-auth-dialog.xml:2(para) +msgid "Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License (GFDL), Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You can find a copy of the GFDL at this <ulink type=\"help\" url=\"ghelp:fdl\">link</ulink> or in the file COPYING-DOCS distributed with this manual." +msgstr "" + +#: C/krb5-auth-dialog.xml:12(para) +msgid "This manual is part of a collection of GNOME manuals distributed under the GFDL. If you want to distribute this manual separately from the collection, you can do so by adding a copy of the license to the manual, as described in section 6 of the license." +msgstr "" + +#: C/krb5-auth-dialog.xml:19(para) +msgid "Many of the names used by companies to distinguish their products and services are claimed as trademarks. Where those names appear in any GNOME documentation, and the members of the GNOME Documentation Project are made aware of those trademarks, then the names are in capital letters or initial capital letters." +msgstr "" + +#: C/krb5-auth-dialog.xml:35(para) +msgid "DOCUMENT IS PROVIDED ON AN \"AS IS\" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND" +msgstr "" + +#: C/krb5-auth-dialog.xml:55(para) +msgid "UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES." +msgstr "" + +#: C/krb5-auth-dialog.xml:28(para) +msgid "DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER UNDERSTANDING THAT: <placeholder-1/>" +msgstr "" + +#: C/krb5-auth-dialog.xml:69(firstname) +msgid "Jonathan" +msgstr "Jonathan" + +#: C/krb5-auth-dialog.xml:70(surname) +msgid "Blandford" +msgstr "Blandford" + +#: C/krb5-auth-dialog.xml:71(email) +msgid "rjb@redhat.com" +msgstr "rjb@redhat.com" + +#: C/krb5-auth-dialog.xml:74(firstname) +msgid "Guido" +msgstr "Guido" + +#: C/krb5-auth-dialog.xml:75(surname) +msgid "Günther" +msgstr "Günther" + +#: C/krb5-auth-dialog.xml:76(email) +msgid "agx@sigxcpu.org" +msgstr "agx@sigxcpu.org" + +#: C/krb5-auth-dialog.xml:103(revnumber) +msgid "2.0" +msgstr "2.0" + +#: C/krb5-auth-dialog.xml:104(date) +msgid "May 2009" +msgstr "" + +#: C/krb5-auth-dialog.xml:106(para) +msgid "Guido Günther <email>agx@sigxcpu.org</email>" +msgstr "Guido Günther <email>agx@sigxcpu.org</email>" + +#: C/krb5-auth-dialog.xml:112(releaseinfo) +msgid "This manual describes how to use the Kerberos Network Authentication Dialog to manage your Kerberos tickets." +msgstr "" + +#: C/krb5-auth-dialog.xml:116(title) +msgid "Feedback" +msgstr "Odziv" + +#: C/krb5-auth-dialog.xml:117(para) +msgid "To report a bug or make a suggestion regarding this package or this manual, use <ulink url=\"http://bugzilla.gnome.org\" type=\"http\">GNOME's Bugzilla</ulink>." +msgstr "" + +#: C/krb5-auth-dialog.xml:129(title) +msgid "Introduction" +msgstr "Uvod" + +#: C/krb5-auth-dialog.xml:0(application) +msgid "Kerberos Network Authentication Dialog" +msgstr "" + +#: C/krb5-auth-dialog.xml:132(secondary) +msgid "Manual" +msgstr "Priročnik" + +#: C/krb5-auth-dialog.xml:133(tertiary) +msgid "krb5-auth-dialog" +msgstr "" + +#: C/krb5-auth-dialog.xml:136(para) +msgid "Kerberos Network Authentication Dialog is an applet for the <systemitem>GNOME desktop</systemitem> that monitors and refreshes your Kerberos ticket. It pops up reminders when the ticket is about to expire." +msgstr "" + +#: C/krb5-auth-dialog.xml:141(para) +msgid "Once you have acquired a Kerberos ticket - be it via GDM or via the applet itself - the applet will handle the ticket's renewal until it expires. It can also be used to destroy (remove) the credential cache, to acquire a ticket with different options or to switch to another principal." +msgstr "" + +#: C/krb5-auth-dialog.xml:146(title) +msgid "Usage" +msgstr "" + +#: C/krb5-auth-dialog.xml:147(para) +msgid "<application>Kerberos Network Authentication Dialog</application> is usually started in GNOME startup, but you can manually start <application>Kerberos Network Authentication Dialog</application> by doing:" +msgstr "" + +#: C/krb5-auth-dialog.xml:153(term) +msgid "Command line" +msgstr "" + +#: C/krb5-auth-dialog.xml:155(para) +msgid "Type <command>krb5-auth-dialog --always</command>, then press <keycap>Return</keycap>:" +msgstr "" + +#: C/krb5-auth-dialog.xml:162(para) +msgid "The tray icon will indicate one of tree states:" +msgstr "" + +#: C/krb5-auth-dialog.xml:167(title) +#: C/krb5-auth-dialog.xml:170(title) +msgid "Valid Kerberos ticket" +msgstr "" + +#: C/krb5-auth-dialog.xml:168(para) +msgid "You have a valid Kerberos ticket that can be used to authenticate to network services." +msgstr "" + +#: C/krb5-auth-dialog.xml:182(title) +#: C/krb5-auth-dialog.xml:185(title) +msgid "Kerberos ticket expiring" +msgstr "" + +#: C/krb5-auth-dialog.xml:183(para) +msgid "The Kerberos ticket is about to expire but it can still be used to authenticate to network services." +msgstr "" + +#: C/krb5-auth-dialog.xml:196(title) +#: C/krb5-auth-dialog.xml:200(title) +msgid "Kerberos ticket expired" +msgstr "" + +#: C/krb5-auth-dialog.xml:197(para) +msgid "Your Kerberos became invalid (e.g. expired). It can no longer be used to authenticate to network services. This is not a problem if the application that requires Kerberos knows how to request a new ticket via <application>Kerberos Network Authentication Dialog</application>. In case it doesn't you can just left click on the applet an reenter your password." +msgstr "" + +#: C/krb5-auth-dialog.xml:213(title) +msgid "Notification Messages" +msgstr "" + +#: C/krb5-auth-dialog.xml:214(para) +msgid "When Kerberos Network Authentication Dialog has started, the following notifications may be displayed." +msgstr "" + +#: C/krb5-auth-dialog.xml:219(title) +msgid "Kerberos credentials valid" +msgstr "" + +#: C/krb5-auth-dialog.xml:220(para) +msgid "You just acquired a valid Kerberos ticket that can be used to authenticate to network services." +msgstr "" + +#: C/krb5-auth-dialog.xml:222(title) +msgid "Notification when Kerberos credentials become valid" +msgstr "" + +#: C/krb5-auth-dialog.xml:234(title) +msgid "Kerberos credentials expiring" +msgstr "" + +#: C/krb5-auth-dialog.xml:235(para) +msgid "Your Kerberos credentials are about to expire. You can left click on the tray applet to refresh them." +msgstr "" + +#: C/krb5-auth-dialog.xml:237(title) +msgid "Notification when Kerberos credentials expiring" +msgstr "" + +#: C/krb5-auth-dialog.xml:249(title) +msgid "Kerberos credentials expired" +msgstr "" + +#: C/krb5-auth-dialog.xml:250(para) +msgid "Your Kerberos credentials just expired. They can no longer be used to authenticate to network services." +msgstr "" + +#: C/krb5-auth-dialog.xml:252(title) +msgid "Notification when Kerberos credentials expired" +msgstr "" + +#: C/krb5-auth-dialog.xml:265(title) +msgid "Preferences" +msgstr "" + +#: C/krb5-auth-dialog.xml:269(title) +msgid "Kerberos Principal Preferences" +msgstr "" + +#: C/krb5-auth-dialog.xml:274(para) +msgid "Dialog Element" +msgstr "" + +#: C/krb5-auth-dialog.xml:277(para) +msgid "Description" +msgstr "" + +#: C/krb5-auth-dialog.xml:285(guilabel) +msgid "Kerberos Principal" +msgstr "" + +#: C/krb5-auth-dialog.xml:289(para) +msgid "The Kerberos principal to use. Leave blank to use you current username. If you change this setting you have to destroy the credential cache before these setting takes effect." +msgstr "" + +#: C/krb5-auth-dialog.xml:296(guilabel) +msgid "PKINIT Userid" +msgstr "" + +#: C/krb5-auth-dialog.xml:300(para) +msgid "The principals public/private/certificate identifier. Leave empty if not using PKINIT. To enable using a security token add the path to the pkcs11 Library here, e.g. \"PKCS11:/usr/lib/opensc/opensc-pkcs11.so\"" +msgstr "" + +#: C/krb5-auth-dialog.xml:306(guilabel) +msgid "PKINIT anchors" +msgstr "" + +#: C/krb5-auth-dialog.xml:310(para) +msgid "Path to CA certificates used as trust anchors for pkinit. You only need to set this if it hasn't been set up globally in <filename>/etc/krb5.conf</filename>" +msgstr "" + +#: C/krb5-auth-dialog.xml:316(guilabel) +msgid "forwardable" +msgstr "" + +#: C/krb5-auth-dialog.xml:320(para) +msgid "Whether the requested Kerberos ticket should be forwardable. Changing this setting requires to you to reauthenticate by left clicking on the tray icon and entering your password." +msgstr "" + +#: C/krb5-auth-dialog.xml:326(guilabel) +msgid "renewable" +msgstr "" + +#: C/krb5-auth-dialog.xml:330(para) +msgid "Whether the requested Kerberos ticket should be renewable. Changing this setting requires to you to reauthenticate by left clicking on the tray icon and entering your password." +msgstr "" + +#: C/krb5-auth-dialog.xml:336(guilabel) +msgid "proxiable" +msgstr "" + +#: C/krb5-auth-dialog.xml:340(para) +msgid "Whether the requested Kerberos ticket should be proxiable. Changing this setting requires to you to reauthenticate by left clicking on the tray icon and entering your password." +msgstr "" + +#: C/krb5-auth-dialog.xml:346(guilabel) +msgid "Warn .. minutes before expiry" +msgstr "" + +#: C/krb5-auth-dialog.xml:350(para) +msgid "Notifications that your credentials are about to expire will be sent that many minutes before expiry." +msgstr "" + +#: C/krb5-auth-dialog.xml:356(guilabel) +msgid "Show tray icon" +msgstr "" + +#: C/krb5-auth-dialog.xml:360(para) +msgid "Whether to show the tray icon. Disabling the tray icon will also disable notifications, the password dialog will be brought up instead." +msgstr "" + +#: C/krb5-auth-dialog.xml:266(para) +msgid "You can set preferences by selecting \"Preferences\" from the applets context menu or by selecting \"Network Authentication\" in the <application>Control Center</application>. <table frame=\"topbot\" id=\"tbl-principal-prefs\"><placeholder-1/><tgroup cols=\"2\" colsep=\"1\" rowsep=\"1\"><colspec colwidth=\"19.21*\"/><colspec colwidth=\"46.79*\"/><placeholder-2/><placeholder-3/></tgroup></table>" +msgstr "" + +#. Put one translator per line, in the form of NAME <EMAIL>, YEAR1, YEAR2 +#: C/krb5-auth-dialog.xml:0(None) +msgid "translator-credits" +msgstr "" + diff --git a/icons/22x22/Makefile.in b/icons/22x22/Makefile.in index 2a7cf26..06395b9 100644 --- a/icons/22x22/Makefile.in +++ b/icons/22x22/Makefile.in @@ -93,6 +93,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -180,6 +182,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ diff --git a/icons/48x48/Makefile.in b/icons/48x48/Makefile.in index d8eba28..3b44a5b 100644 --- a/icons/48x48/Makefile.in +++ b/icons/48x48/Makefile.in @@ -93,6 +93,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -180,6 +182,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ diff --git a/icons/Makefile.in b/icons/Makefile.in index 007b499..69350d3 100644 --- a/icons/Makefile.in +++ b/icons/Makefile.in @@ -109,6 +109,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -196,6 +198,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ diff --git a/icons/scalable/Makefile.in b/icons/scalable/Makefile.in index 1270915..bb6fbaa 100644 --- a/icons/scalable/Makefile.in +++ b/icons/scalable/Makefile.in @@ -93,6 +93,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -180,6 +182,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ diff --git a/krb5-auth-dialog.spec b/krb5-auth-dialog.spec index cb27f5f..79306b3 100644 --- a/krb5-auth-dialog.spec +++ b/krb5-auth-dialog.spec @@ -1,6 +1,6 @@ Summary: Kerberos 5 authentication dialog Name: krb5-auth-dialog -Version: 0.17 +Version: 2.91.6 Release: 1 License: GPL Group: User Interface/X diff --git a/plugins/Makefile.in b/plugins/Makefile.in index 1047119..74894c5 100644 --- a/plugins/Makefile.in +++ b/plugins/Makefile.in @@ -151,6 +151,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -238,6 +240,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ @@ -7,6 +7,7 @@ fr gl nb pa +pt_BR sl sv uk diff --git a/po/POTFILES.in b/po/POTFILES.in index d2073d3..f910c0c 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -7,8 +7,7 @@ src/ka-tools.c src/ka-tickets.c src/krb5-auth-dialog.desktop.in src/krb5-auth-dialog.schemas.in -gtksecentry/gtksecentry.c secmem/util.c -preferences/ka-preferences.c -preferences/krb5-auth-dialog-preferences.desktop.in -[type: gettext/glade]preferences/krb5-auth-dialog-preferences.xml +cc-panel/gnome-ka-panel.desktop.in +[type: gettext/glade]cc-panel/ka-panel.ui +cc-panel/cc-ka-panel.c @@ -19,8 +19,8 @@ msgstr "" "Project-Id-Version: krb5-auth-dialog master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=krb5-" "auth-dialog&component=general\n" -"POT-Creation-Date: 2010-07-26 11:26+0000\n" -"PO-Revision-Date: 2010-07-27 00:21+0100\n" +"POT-Creation-Date: 2010-10-05 13:11+0000\n" +"PO-Revision-Date: 2010-10-06 21:11+0100\n" "Last-Translator: Mario Blättermann <mariobl@gnome.org>\n" "Language-Team: Deutsch <gnome-de@gnome.org>\n" "MIME-Version: 1.0\n" @@ -56,14 +56,14 @@ msgstr "Abgelaufen" msgid "Couldn't acquire kerberos ticket: '%s'" msgstr "Kerberos-Ticket konnte nicht erlangt werden: »%s«" -#: ../src/ka-pwdialog.c:211 ../src/ka-applet.c:390 +#: ../src/ka-pwdialog.c:211 ../src/ka-applet.c:375 #, c-format msgid "Your credentials expire in %d minute" msgid_plural "Your credentials expire in %d minutes" msgstr[0] "Ihre Anmeldeinformationen laufen in %d Minute ab" msgstr[1] "Ihre Anmeldeinformationen laufen in %d Minuten ab" -#: ../src/ka-pwdialog.c:216 ../src/ka-applet.c:395 +#: ../src/ka-pwdialog.c:216 ../src/ka-applet.c:380 msgid "Your credentials have expired" msgstr "Anmeldeinformationen abgelaufen" @@ -1430,8 +1430,7 @@ msgstr "Falsche magische Zahl für GSSAPI OID" msgid "Bad magic number for GSSAPI QUEUE" msgstr "Falsche magische Zahl für GSSAPI QUEUE" -#. Translators: First number is hours, second number is minutes -#: ../src/ka-applet.c:386 +#: ../src/ka-applet.c:369 #, c-format msgid "Your credentials expire in %.2d:%.2dh" msgstr "Anmeldeinformationen laufen in %.2d:%.2dh ab." @@ -1440,32 +1439,36 @@ msgstr "Anmeldeinformationen laufen in %.2d:%.2dh ab." msgid "Don't show me this again" msgstr "Dies nicht mehr anzeigen" -#: ../src/ka-applet.c:542 +#: ../src/ka-applet.c:507 +msgid "Get Ticket" +msgstr "Ticket holen" + +#: ../src/ka-applet.c:551 msgid "Network credentials valid" msgstr "Anmeldeinformationen sind gültig" -#: ../src/ka-applet.c:543 +#: ../src/ka-applet.c:552 msgid "You've refreshed your Kerberos credentials." msgstr "Sie haben Ihre Kerberos-Anmeldeinformationen erneuert." -#: ../src/ka-applet.c:559 +#: ../src/ka-applet.c:568 msgid "Network credentials expiring" msgstr "Anmeldeinformationen laufen ab" -#: ../src/ka-applet.c:578 +#: ../src/ka-applet.c:586 msgid "Network credentials expired" msgstr "Anmeldeinformationen abgelaufen" -#: ../src/ka-applet.c:579 +#: ../src/ka-applet.c:587 msgid "Your Kerberos credentails have expired." msgstr "Ihre Kerberos-Anmeldeinformationen sind abgelaufen." -#: ../src/ka-applet.c:624 +#: ../src/ka-applet.c:631 #, c-format msgid "There was an error launching the preferences dialog: %s" msgstr "Fehler beim Öffnen des Einstellungsdialogs: %s" -#: ../src/ka-applet.c:665 +#: ../src/ka-applet.c:671 #, c-format msgid "" "There was an error displaying %s:\n" @@ -1475,20 +1478,19 @@ msgstr "" "%s" #. Translators: add the translators of your language here -#: ../src/ka-applet.c:701 +#: ../src/ka-applet.c:708 msgid "translator-credits" msgstr "" "Guido Günther <agx@sigxcpu.org>\n" "Mario Blättermann <mariobl@gnome.org>\n" "Christian Kirbach <Christian.Kirbach@googlemail.com>" -#. kdestroy -#: ../src/ka-applet.c:743 +#: ../src/ka-applet.c:753 msgid "Remove Credentials _Cache" msgstr "_Anmeldeinformationen löschen" #. Ticket dialog -#: ../src/ka-applet.c:753 +#: ../src/ka-applet.c:763 msgid "_List Tickets" msgstr "Tickets auf_listen" @@ -2,17 +2,17 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # -# Daniel Mustieles <daniel.mustieles@gmail.com>, 2009. # Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010. +# Daniel Mustieles <daniel.mustieles@gmail.com>, 2009, 2011. # msgid "" msgstr "" "Project-Id-Version: krb5-auth-dialog.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=krb5-" "auth-dialog&component=general\n" -"POT-Creation-Date: 2010-07-26 11:26+0000\n" -"PO-Revision-Date: 2010-07-28 17:14+0200\n" -"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n" +"POT-Creation-Date: 2011-01-25 13:33+0000\n" +"PO-Revision-Date: 2011-01-26 12:14+0100\n" +"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" "Language-Team: Español <gnome-es-list@gnome.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -21,7 +21,6 @@ msgstr "" "X-Generator: KBabel 1.11.4\n" #: ../src/krb5-auth-dialog.xml.h:1 ../src/krb5-auth-dialog.desktop.in.h:2 -#: ../preferences/krb5-auth-dialog-preferences.desktop.in.h:1 msgid "Network Authentication" msgstr "Autenticación de red" @@ -33,27 +32,27 @@ msgstr "Tiques de servicio" msgid "_Renew Ticket" msgstr "_Renovar tique" -#: ../src/ka-dialog.c:172 +#: ../src/ka-dialog.c:171 msgid "unknown error" msgstr "error desconocido" -#: ../src/ka-dialog.c:333 +#: ../src/ka-dialog.c:332 msgid "Expired" msgstr "Caducado" -#: ../src/ka-pwdialog.c:174 +#: ../src/ka-pwdialog.c:175 #, c-format msgid "Couldn't acquire kerberos ticket: '%s'" msgstr "No se pudo obtener el tique de Kerberos: «%s»" -#: ../src/ka-pwdialog.c:211 ../src/ka-applet.c:390 +#: ../src/ka-pwdialog.c:212 ../src/ka-applet.c:377 #, c-format msgid "Your credentials expire in %d minute" msgid_plural "Your credentials expire in %d minutes" msgstr[0] "Sus credenciales caducan en %d minuto" msgstr[1] "Sus credenciales caducan en %d minutos" -#: ../src/ka-pwdialog.c:216 ../src/ka-applet.c:395 +#: ../src/ka-pwdialog.c:217 ../src/ka-applet.c:382 msgid "Your credentials have expired" msgstr "Sus credenciales han caducado" @@ -66,11 +65,11 @@ msgstr "Introduzca su contraseña de Kerberos:" msgid "Please enter the password for '%s':" msgstr "Introduzca la contraseña para «%s»:" -#: ../src/ka-pwdialog.c:268 +#: ../src/ka-pwdialog.c:263 msgid "The password you entered is invalid" msgstr "La contraseña que ha introducido no es válida" -#: ../src/ka-pwdialog.c:284 +#: ../src/ka-pwdialog.c:279 #, c-format msgid "%s Error" msgstr "Error %s" @@ -1402,65 +1401,57 @@ msgstr "Número mágico erróneo para GSSAPI OID" msgid "Bad magic number for GSSAPI QUEUE" msgstr "Número mágico erróneo para GSSAPI QUEUE" -#. Translators: First number is hours, second number is minutes -#: ../src/ka-applet.c:386 +#: ../src/ka-applet.c:371 #, c-format msgid "Your credentials expire in %.2d:%.2dh" msgstr "Sus credenciales caducan en %.2d:%.2dh" -#: ../src/ka-applet.c:500 +#: ../src/ka-applet.c:506 msgid "Don't show me this again" msgstr "No mostrar este mensaje de nuevo" -#: ../src/ka-applet.c:542 -msgid "Network credentials valid" -msgstr "Credenciales de red válidas" +#: ../src/ka-applet.c:513 +msgid "Get Ticket" +msgstr "Obtener tique" -#: ../src/ka-applet.c:543 +#: ../src/ka-applet.c:561 msgid "You've refreshed your Kerberos credentials." msgstr "Ha actualizado sus credenciales de Kerberos." -#: ../src/ka-applet.c:559 +#: ../src/ka-applet.c:563 +msgid "Network credentials valid" +msgstr "Credenciales de red válidas" + +#: ../src/ka-applet.c:582 msgid "Network credentials expiring" msgstr "Las credenciales de red van a caducar" -#: ../src/ka-applet.c:578 +#: ../src/ka-applet.c:600 msgid "Network credentials expired" msgstr "Las credenciales de red han caducado" -#: ../src/ka-applet.c:579 +#: ../src/ka-applet.c:601 msgid "Your Kerberos credentails have expired." msgstr "Sus credenciales Kerberos han caducado" -#: ../src/ka-applet.c:624 +#: ../src/ka-applet.c:645 #, c-format msgid "There was an error launching the preferences dialog: %s" msgstr "Hubo un error al lanzar el diálogo de preferencias: %s" -#: ../src/ka-applet.c:665 -#, c-format -msgid "" -"There was an error displaying %s:\n" -"%s" -msgstr "" -"Hubo un error al mostrar %s:\n" -"%s" - #. Translators: add the translators of your language here -#: ../src/ka-applet.c:701 +#: ../src/ka-applet.c:692 msgid "translator-credits" msgstr "" "Jorge González <jorgegonz@svn.gnome.org>, 2009-2010\n" "Daniel Mustieles <daniel.mustieles@gmail.com>, 2009" -#. kdestroy -#: ../src/ka-applet.c:743 +#: ../src/ka-applet.c:737 msgid "Remove Credentials _Cache" msgstr "Quitar la _caché de credenciales" #. Ticket dialog -#: ../src/ka-applet.c:753 -#| msgid "Service Tickets" +#: ../src/ka-applet.c:747 msgid "_List Tickets" msgstr "_Listar tiques" @@ -1608,85 +1599,80 @@ msgstr "tique de notificación válido" msgid "Warning: running q-agent setuid on this system is dangerous\n" msgstr "Advertencia: ejecutar q-agent setuid en este sistema es peligroso\n" -#: ../preferences/ka-preferences.c:345 -msgid "Choose Certificate" -msgstr "Elija un certificado" +#: ../cc-panel/gnome-ka-panel.desktop.in.h:1 +#| msgid "Kerberos Authentication Configuration" +msgid "Kerberos Authentication" +msgstr "Autenticación de Kerberos" -#: ../preferences/ka-preferences.c:361 -msgid "X509 Certificates" -msgstr "Certificados X509" +#. Translators: those are keywords for the example control-center panel +#: ../cc-panel/gnome-ka-panel.desktop.in.h:3 +#| msgid "Kerberos Authentication Configuration" +msgid "Kerberos;Authentication" +msgstr "Kerberos;Autenticación" -#: ../preferences/ka-preferences.c:365 -msgid "all files" -msgstr "todos los archivos" - -#: ../preferences/krb5-auth-dialog-preferences.desktop.in.h:2 +#: ../cc-panel/gnome-ka-panel.desktop.in.h:4 msgid "Set your Kerberos network authentication preferences" msgstr "Establezca sus preferencias de autenticación de red en Kerberos" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:1 +#: ../cc-panel/ka-panel.ui.h:1 msgid "Appearance" msgstr "Apariencia" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:2 +#: ../cc-panel/ka-panel.ui.h:2 msgid "Applet" msgstr "Miniaplicación" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:3 +#: ../cc-panel/ka-panel.ui.h:3 msgid "Certificate and private key used for authentication" msgstr "Certificado y clave privada usados para la autenticación" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:4 +#: ../cc-panel/ka-panel.ui.h:4 msgid "If checked, display the tray icon in the status bar" msgstr "" "Si está seleccionado muestra el icono de la bandeja en la barra de estado" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:5 +#: ../cc-panel/ka-panel.ui.h:5 msgid "If checked, request forwardable tickets" msgstr "Si está seleccionado pide tiques reenviables" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:6 +#: ../cc-panel/ka-panel.ui.h:6 msgid "If checked, request proxiable tickets" msgstr "Si está seleccionado pide tiques vía proxy" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:7 +#: ../cc-panel/ka-panel.ui.h:7 msgid "If checked, request renewable tickets" msgstr "Si está seleccionado pide tiques renovables" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:8 +#: ../cc-panel/ka-panel.ui.h:8 msgid "If checked, use a security token (Smartcard) to authenticate." msgstr "" "Si está seleccionado usa un «token» (tarjeta inteligente) para autenticar." -#: ../preferences/krb5-auth-dialog-preferences.xml.h:9 +#: ../cc-panel/ka-panel.ui.h:9 msgid "Kerberos" msgstr "Kerberos" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:10 -msgid "Kerberos Authentication Configuration" -msgstr "Configuración de autenticación de Kerberos" - -#: ../preferences/krb5-auth-dialog-preferences.xml.h:11 +#: ../cc-panel/ka-panel.ui.h:10 msgid "Kerberos User" msgstr "Usuario de Kerberos" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:12 +#: ../cc-panel/ka-panel.ui.h:11 msgid "Kerberos principal:" msgstr "Principal de Kerberos:" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:13 +#: ../cc-panel/ka-panel.ui.h:12 msgid "Notifications" msgstr "Notificaciones" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:14 +#: ../cc-panel/ka-panel.ui.h:13 msgid "PKINIT:" msgstr "PKINIT:" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:15 +#: ../cc-panel/ka-panel.ui.h:14 msgid "Requested Kerberos tickets should be:" msgstr "Los tiques solicitados a Kerberos deben ser:" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:16 +#: ../cc-panel/ka-panel.ui.h:15 msgid "" "Send notification about ticket expiry that many minutes before it finally " "expires" @@ -1694,52 +1680,71 @@ msgstr "" "Enviar notificación acerca de la caducidad del tique esos minutos antes de " "que caduque" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:17 +#: ../cc-panel/ka-panel.ui.h:16 msgid "Show tray icon" msgstr "Mostrar icono de la bandeja" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:18 +#: ../cc-panel/ka-panel.ui.h:17 msgid "Ticket Options" msgstr "Opciones del tique" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:19 +#: ../cc-panel/ka-panel.ui.h:18 msgid "Use Smartcard" msgstr "Usar tarjeta inteligente" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:20 +#: ../cc-panel/ka-panel.ui.h:19 msgid "Userid:" msgstr "ID de usuario:" #. Used in combination: 'Warn x minutes before expiry' -#: ../preferences/krb5-auth-dialog-preferences.xml.h:22 +#: ../cc-panel/ka-panel.ui.h:21 msgid "Warn" msgstr "Advertir" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:23 +#: ../cc-panel/ka-panel.ui.h:22 msgid "X509 trust anchors:" msgstr "Anclas de confianza de X509:" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:24 +#: ../cc-panel/ka-panel.ui.h:23 msgid "_Browse..." msgstr "_Examinar…" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:25 +#: ../cc-panel/ka-panel.ui.h:24 msgid "forwardable" msgstr "reenviable" #. Used in combination: 'Warn x minutes before expiry' -#: ../preferences/krb5-auth-dialog-preferences.xml.h:27 +#: ../cc-panel/ka-panel.ui.h:26 msgid "minutes before expiry" msgstr "minutos antes de que caduque" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:28 +#: ../cc-panel/ka-panel.ui.h:27 msgid "proxiable" msgstr "vía proxy" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:29 +#: ../cc-panel/ka-panel.ui.h:28 msgid "renewable" msgstr "renovable" +#: ../cc-panel/cc-ka-panel.c:346 +msgid "Choose Certificate" +msgstr "Elija un certificado" + +#: ../cc-panel/cc-ka-panel.c:362 +msgid "X509 Certificates" +msgstr "Certificados X509" + +#: ../cc-panel/cc-ka-panel.c:366 +msgid "all files" +msgstr "todos los archivos" + +#~ msgid "" +#~ "There was an error displaying %s:\n" +#~ "%s" +#~ msgstr "" +#~ "Hubo un error al mostrar %s:\n" +#~ "%s" + #~ msgid "Cursor Position" #~ msgstr "Posición del cursor" @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: krb5-auth-dialog master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=krb5-" "auth-dialog&component=general\n" -"POT-Creation-Date: 2010-07-26 11:26+0000\n" +"POT-Creation-Date: 2011-01-25 13:33+0000\n" "PO-Revision-Date: 2010-07-04 22:01+0200\n" "Last-Translator: Claude Paroz <claude@2xlibre.net>\n" "Language-Team: GNOME French Team <gnomefr@traduc.org>\n" @@ -20,7 +20,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../src/krb5-auth-dialog.xml.h:1 ../src/krb5-auth-dialog.desktop.in.h:2 -#: ../preferences/krb5-auth-dialog-preferences.desktop.in.h:1 msgid "Network Authentication" msgstr "Authentification réseau" @@ -32,27 +31,27 @@ msgstr "Tickets de service" msgid "_Renew Ticket" msgstr "_Renouveler le ticket" -#: ../src/ka-dialog.c:172 +#: ../src/ka-dialog.c:171 msgid "unknown error" msgstr "erreur inconnue" -#: ../src/ka-dialog.c:333 +#: ../src/ka-dialog.c:332 msgid "Expired" msgstr "Expiré" -#: ../src/ka-pwdialog.c:174 +#: ../src/ka-pwdialog.c:175 #, c-format msgid "Couldn't acquire kerberos ticket: '%s'" msgstr "Impossible d'acquérir le ticket Kerberos : « %s »" -#: ../src/ka-pwdialog.c:211 ../src/ka-applet.c:390 +#: ../src/ka-pwdialog.c:212 ../src/ka-applet.c:377 #, c-format msgid "Your credentials expire in %d minute" msgid_plural "Your credentials expire in %d minutes" msgstr[0] "Vos informations d'authentification vont expirer dans %d minute" msgstr[1] "Vos informations d'authentification vont expirer dans %d minutes" -#: ../src/ka-pwdialog.c:216 ../src/ka-applet.c:395 +#: ../src/ka-pwdialog.c:217 ../src/ka-applet.c:382 msgid "Your credentials have expired" msgstr "Vos informations d'authentification ont expiré." @@ -65,11 +64,11 @@ msgstr "Veuillez saisir votre mot de passe Kerberos :" msgid "Please enter the password for '%s':" msgstr "Veuillez saisir le mot de passe pour « %s » :" -#: ../src/ka-pwdialog.c:268 +#: ../src/ka-pwdialog.c:263 msgid "The password you entered is invalid" msgstr "Le mot de passe que vous avez saisi n'est pas valide" -#: ../src/ka-pwdialog.c:284 +#: ../src/ka-pwdialog.c:279 #, c-format msgid "%s Error" msgstr "Erreur %s" @@ -185,7 +184,7 @@ msgstr "Le serveur n'existe pas dans la base de données de Kerberos" #. krb5_err.et:krb5:KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN #: ../src/dummy-strings.c:31 msgid "Principal has multiple entries in Kerberos database" -msgstr "Le principal a plusieurs entrées dans la base de données de kereros" +msgstr "Le principal a plusieurs entrées dans la base de données de kerberos" #. krb5_err.et:krb5:KRB5KDC_ERR_PRINCIPAL_NOT_UNIQUE #: ../src/dummy-strings.c:32 @@ -245,7 +244,7 @@ msgstr "Les informations d'authentification du serveur sont révoquées" #. krb5_err.et:krb5:KRB5KDC_ERR_SERVICE_REVOKED #: ../src/dummy-strings.c:43 msgid "TGT has been revoked" -msgstr "Le TGT a été revoqué" +msgstr "Le TGT a été révoqué" #. krb5_err.et:krb5:KRB5KDC_ERR_TGT_REVOKED #: ../src/dummy-strings.c:44 @@ -931,7 +930,7 @@ msgstr "Numéro de version du format du tableau de clés non pris en charge" #. krb5_err.et:krb5:KRB5_KEYTAB_BADVNO #: ../src/dummy-strings.c:178 msgid "Program lacks support for address type" -msgstr "Le programe ne prend pas en charge ce type d'adresse" +msgstr "Le programme ne prend pas en charge ce type d'adresse" #. krb5_err.et:krb5:KRB5_PROG_ATYPE_NOSUPP #: ../src/dummy-strings.c:179 @@ -977,7 +976,7 @@ msgstr "" #. krb5_err.et:krb5:KRB5_FWD_BAD_PRINCIPAL #: ../src/dummy-strings.c:187 msgid "Looping detected inside krb5_get_in_tkt" -msgstr "Bouclage détécté à l'intérieur de krb5_get_in_tkt" +msgstr "Bouclage détecté à l'intérieur de krb5_get_in_tkt" #. krb5_err.et:krb5:KRB5_GET_IN_TKT_LOOP #: ../src/dummy-strings.c:188 @@ -1401,66 +1400,59 @@ msgstr "Numéro magique GSSAPI OID incorrect" msgid "Bad magic number for GSSAPI QUEUE" msgstr "Numéro magique GSSAPI QUEUE incorrect" -#. Translators: First number is hours, second number is minutes -#: ../src/ka-applet.c:386 +#: ../src/ka-applet.c:371 #, c-format msgid "Your credentials expire in %.2d:%.2dh" msgstr "Vos informations d'authentification expirent dans %.2d h %.2d" -#: ../src/ka-applet.c:500 +#: ../src/ka-applet.c:506 msgid "Don't show me this again" msgstr "Ne plus afficher" -#: ../src/ka-applet.c:542 -msgid "Network credentials valid" -msgstr "Informations d'authentification réseau valides" +#: ../src/ka-applet.c:513 +msgid "Get Ticket" +msgstr "Obtenir le ticket" -#: ../src/ka-applet.c:543 +#: ../src/ka-applet.c:561 msgid "You've refreshed your Kerberos credentials." msgstr "Vous avez actualisé vos informations d'authentification Kerberos." -#: ../src/ka-applet.c:559 +#: ../src/ka-applet.c:563 +msgid "Network credentials valid" +msgstr "Informations d'authentification réseau valides" + +#: ../src/ka-applet.c:582 msgid "Network credentials expiring" msgstr "Informations d'authentification Kerberos en cours d'expiration" -#: ../src/ka-applet.c:578 +#: ../src/ka-applet.c:600 msgid "Network credentials expired" msgstr "Informations d'authentification réseau expirées" -#: ../src/ka-applet.c:579 +#: ../src/ka-applet.c:601 msgid "Your Kerberos credentails have expired." msgstr "Vos informations d'authentification Kerberos ont expiré." -#: ../src/ka-applet.c:624 +#: ../src/ka-applet.c:645 #, c-format msgid "There was an error launching the preferences dialog: %s" msgstr "" "Une erreur est survenue lors de l'ouverture de la boîte de dialogue des " "préférences : %s" -#: ../src/ka-applet.c:665 -#, c-format -msgid "" -"There was an error displaying %s:\n" -"%s" -msgstr "" -"Erreur pendant l'affichage de %s :\n" -"%s" - #. Translators: add the translators of your language here -#: ../src/ka-applet.c:701 +#: ../src/ka-applet.c:692 msgid "translator-credits" msgstr "" "Laurent Coudeur <laurentc@iol.ie>\n" "Claude Paroz <claude@2xlibre.net>" -#. kdestroy -#: ../src/ka-applet.c:743 +#: ../src/ka-applet.c:737 msgid "Remove Credentials _Cache" msgstr "Supprimer le _cache des informations d'authentification" #. Ticket dialog -#: ../src/ka-applet.c:753 +#: ../src/ka-applet.c:747 msgid "_List Tickets" msgstr "É_numérer les tickets" @@ -1613,84 +1605,77 @@ msgstr "Notification de ticket valide" msgid "Warning: running q-agent setuid on this system is dangerous\n" msgstr "Avertissement : exécuter q-agent setuid sur ce système est dangereux\n" -#: ../preferences/ka-preferences.c:345 -msgid "Choose Certificate" -msgstr "Choix d'un certificat" +#: ../cc-panel/gnome-ka-panel.desktop.in.h:1 +msgid "Kerberos Authentication" +msgstr "Authentification de Kerberos" -#: ../preferences/ka-preferences.c:361 -msgid "X509 Certificates" -msgstr "Certificats X509" +#. Translators: those are keywords for the example control-center panel +#: ../cc-panel/gnome-ka-panel.desktop.in.h:3 +msgid "Kerberos;Authentication" +msgstr "Authentification;Kerberos" -#: ../preferences/ka-preferences.c:365 -msgid "all files" -msgstr "tous les fichiers" - -#: ../preferences/krb5-auth-dialog-preferences.desktop.in.h:2 +#: ../cc-panel/gnome-ka-panel.desktop.in.h:4 msgid "Set your Kerberos network authentication preferences" msgstr "Définir vos préférences de l'authentification réseau Kerberos" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:1 +#: ../cc-panel/ka-panel.ui.h:1 msgid "Appearance" msgstr "Apparence" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:2 +#: ../cc-panel/ka-panel.ui.h:2 msgid "Applet" msgstr "Applet" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:3 +#: ../cc-panel/ka-panel.ui.h:3 msgid "Certificate and private key used for authentication" msgstr "Certificat et clé privée utilisés pour l'authentification" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:4 +#: ../cc-panel/ka-panel.ui.h:4 msgid "If checked, display the tray icon in the status bar" msgstr "Si coché, affiche l'icône de notification dans la barre d'état" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:5 +#: ../cc-panel/ka-panel.ui.h:5 msgid "If checked, request forwardable tickets" msgstr "Si coché, demande des tickets transférables" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:6 +#: ../cc-panel/ka-panel.ui.h:6 msgid "If checked, request proxiable tickets" msgstr "Si coché, demande des tickets utilisables via proxy" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:7 +#: ../cc-panel/ka-panel.ui.h:7 msgid "If checked, request renewable tickets" msgstr "Si coché, demande des tickets renouvelables" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:8 +#: ../cc-panel/ka-panel.ui.h:8 msgid "If checked, use a security token (Smartcard) to authenticate." msgstr "" "Si coché, utilise un jeton de sécurité (Smartcard) pour l'authentification." -#: ../preferences/krb5-auth-dialog-preferences.xml.h:9 +#: ../cc-panel/ka-panel.ui.h:9 msgid "Kerberos" msgstr "Kerberos" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:10 -msgid "Kerberos Authentication Configuration" -msgstr "Configuration d'authentification de Kerberos" - -#: ../preferences/krb5-auth-dialog-preferences.xml.h:11 +#: ../cc-panel/ka-panel.ui.h:10 msgid "Kerberos User" msgstr "Utilisateur Kerberos" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:12 +#: ../cc-panel/ka-panel.ui.h:11 msgid "Kerberos principal:" msgstr "Principal Kerberos :" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:13 +#: ../cc-panel/ka-panel.ui.h:12 msgid "Notifications" msgstr "Notifications" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:14 +#: ../cc-panel/ka-panel.ui.h:13 msgid "PKINIT:" msgstr "PKINIT :" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:15 +#: ../cc-panel/ka-panel.ui.h:14 msgid "Requested Kerberos tickets should be:" msgstr "Les tickets Kerberos demandés doivent être :" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:16 +#: ../cc-panel/ka-panel.ui.h:15 msgid "" "Send notification about ticket expiry that many minutes before it finally " "expires" @@ -1698,48 +1683,61 @@ msgstr "" "Envoyer une notification à propos de l'expiration d'un ticket tant de " "minutes avant qu'il n'expire" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:17 +#: ../cc-panel/ka-panel.ui.h:16 msgid "Show tray icon" msgstr "Afficher une icône de notification" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:18 +#: ../cc-panel/ka-panel.ui.h:17 msgid "Ticket Options" msgstr "Options des tickets" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:19 +#: ../cc-panel/ka-panel.ui.h:18 msgid "Use Smartcard" msgstr "Utiliser une Smartcard" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:20 +#: ../cc-panel/ka-panel.ui.h:19 msgid "Userid:" msgstr "Identifiant :" #. Used in combination: 'Warn x minutes before expiry' -#: ../preferences/krb5-auth-dialog-preferences.xml.h:22 +#: ../cc-panel/ka-panel.ui.h:21 msgid "Warn" msgstr "Avertir" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:23 +#: ../cc-panel/ka-panel.ui.h:22 msgid "X509 trust anchors:" msgstr "Ancrages de confiance X509 :" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:24 +#: ../cc-panel/ka-panel.ui.h:23 msgid "_Browse..." msgstr "_Parcourir..." -#: ../preferences/krb5-auth-dialog-preferences.xml.h:25 +#: ../cc-panel/ka-panel.ui.h:24 msgid "forwardable" msgstr "transférables" #. Used in combination: 'Warn x minutes before expiry' -#: ../preferences/krb5-auth-dialog-preferences.xml.h:27 +#: ../cc-panel/ka-panel.ui.h:26 msgid "minutes before expiry" msgstr "minutes avant l'expiration" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:28 +#: ../cc-panel/ka-panel.ui.h:27 msgid "proxiable" msgstr "utilisables via proxy" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:29 +#: ../cc-panel/ka-panel.ui.h:28 msgid "renewable" msgstr "renouvelables" + +#: ../cc-panel/cc-ka-panel.c:346 +msgid "Choose Certificate" +msgstr "Choix d'un certificat" + +#: ../cc-panel/cc-ka-panel.c:362 +msgid "X509 Certificates" +msgstr "Certificats X509" + +#: ../cc-panel/cc-ka-panel.c:366 +msgid "all files" +msgstr "tous les fichiers" + diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 0000000..96a78e1 --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,1712 @@ +# Brazilian Portuguese translation for krb5-auth-dialog. +# Copyright (C) 2010 krb5-auth-dialog's COPYRIGHT HOLDER +# This file is distributed under the same license as the krb5-auth-dialog package. +# Djavan Fagundes <djavan@comum.org>, 2010. +# Djavan Fagundes <djavan@syst.com.br>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: krb5-auth-dialog master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=krb5" +"-auth-dialog&component=general\n" +"POT-Creation-Date: 2010-11-09 20:06+0000\n" +"PO-Revision-Date: 2010-12-20 11:53-0200\n" +"Last-Translator: Djavan Fagundes <djavan@syst.com.br>\n" +"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Virtaal 0.6.1\n" + +#: ../src/krb5-auth-dialog.xml.h:1 ../src/krb5-auth-dialog.desktop.in.h:2 +#: ../preferences/krb5-auth-dialog-preferences.desktop.in.h:1 +msgid "Network Authentication" +msgstr "Autenticação da rede" + +#: ../src/krb5-auth-dialog.xml.h:2 +msgid "Service Tickets" +msgstr "Serviço de tickets" + +#: ../src/krb5-auth-dialog.xml.h:3 +msgid "_Renew Ticket" +msgstr "_Renovar ticket" + +#: ../src/ka-dialog.c:171 +msgid "unknown error" +msgstr "Erro desconhecido" + +#: ../src/ka-dialog.c:332 +msgid "Expired" +msgstr "Expirado" + +#: ../src/ka-pwdialog.c:175 +#, c-format +msgid "Couldn't acquire kerberos ticket: '%s'" +msgstr "Não é possível adquirir ticket do kerberos: \"%s\"" + +#: ../src/ka-pwdialog.c:212 ../src/ka-applet.c:375 +#, c-format +msgid "Your credentials expire in %d minute" +msgid_plural "Your credentials expire in %d minutes" +msgstr[0] "Suas credenciais expiram em %d minuto" +msgstr[1] "Suas credenciais expiram em %d minutos" + +#: ../src/ka-pwdialog.c:217 ../src/ka-applet.c:380 +msgid "Your credentials have expired" +msgstr "Suas credenciais expiraram" + +#: ../src/ka-pwdialog.c:237 +msgid "Please enter your Kerberos password:" +msgstr "Por favor, digite a sua senha do Kerberos:" + +#: ../src/ka-pwdialog.c:248 +#, c-format +msgid "Please enter the password for '%s':" +msgstr "Por favor, digite a senha para \"%s\":" + +#: ../src/ka-pwdialog.c:263 +msgid "The password you entered is invalid" +msgstr "A senha digitada não é válida" + +#: ../src/ka-pwdialog.c:279 +#, c-format +msgid "%s Error" +msgstr "Erro %s" + +#. Translators: files from dummy-strings.c are *all* possible errors +#. returned from Kerberos (since Kerberos itself doesn't handle i18n). If in +#. doubt please translate strings from files starting with ka- and krb5-auth- +#. first since these are the ones the user will see in any case. +#: ../src/dummy-strings.c:10 +msgid "ASN.1 failed call to system time library" +msgstr "ASN.1 falhou ao chamar a biblioteca de hora do sistema" + +#. asn1_err.et:asn1:ASN1_BAD_TIMEFORMAT +#: ../src/dummy-strings.c:11 +msgid "ASN.1 structure is missing a required field" +msgstr "ASN.1 estrutura está faltando em um campo necessário" + +#. asn1_err.et:asn1:ASN1_MISSING_FIELD +#: ../src/dummy-strings.c:12 +msgid "ASN.1 unexpected field number" +msgstr "ASN.1 número do campo inesperado" + +#. asn1_err.et:asn1:ASN1_MISPLACED_FIELD +#: ../src/dummy-strings.c:13 +msgid "ASN.1 type numbers are inconsistent" +msgstr "ASN.1 tipo de números são inconsistentes" + +#. asn1_err.et:asn1:ASN1_TYPE_MISMATCH +#: ../src/dummy-strings.c:14 +msgid "ASN.1 value too large" +msgstr "ASN.1 valor muito grande" + +#. asn1_err.et:asn1:ASN1_OVERFLOW +#: ../src/dummy-strings.c:15 +msgid "ASN.1 encoding ended unexpectedly" +msgstr "ASN.1 a codificação terminou inesperadamente" + +#. asn1_err.et:asn1:ASN1_OVERRUN +#: ../src/dummy-strings.c:16 +msgid "ASN.1 identifier doesn't match expected value" +msgstr "ASN.1 o identificador não corresponde com o valor esperado" + +#. asn1_err.et:asn1:ASN1_BAD_ID +#: ../src/dummy-strings.c:17 +msgid "ASN.1 length doesn't match expected value" +msgstr "ASN.1 o comprimento não corresponde com o valor esperado" + +#. asn1_err.et:asn1:ASN1_BAD_LENGTH +#: ../src/dummy-strings.c:18 +msgid "ASN.1 badly-formatted encoding" +msgstr "ASN.1 codificação mal-formada" + +#. asn1_err.et:asn1:ASN1_BAD_FORMAT +#: ../src/dummy-strings.c:19 +msgid "ASN.1 parse error" +msgstr "ASN.1 erro de análise" + +#. asn1_err.et:asn1:ASN1_PARSE_ERROR +#: ../src/dummy-strings.c:20 +msgid "ASN.1 bad return from gmtime" +msgstr "ASN.1 resposta ruim da gmtime" + +#. asn1_err.et:asn1:ASN1_BAD_GMTIME +#: ../src/dummy-strings.c:21 +msgid "ASN.1 non-constructed indefinite encoding" +msgstr "ASN.1 codificação indefinida não-construída" + +#. asn1_err.et:asn1:ASN1_MISMATCH_INDEF +#: ../src/dummy-strings.c:22 +msgid "ASN.1 missing expected EOC" +msgstr "ASN.1 faltando EOC esperado" + +#. asn1_err.et:asn1:ASN1_MISSING_EOC +#: ../src/dummy-strings.c:23 +msgid "No error" +msgstr "Sem erro" + +#. krb5_err.et:krb5:KRB5KDC_ERR_NONE +#: ../src/dummy-strings.c:24 +msgid "Client's entry in database has expired" +msgstr "Entrada do cliente no banco de dados expirou" + +#. krb5_err.et:krb5:KRB5KDC_ERR_NAME_EXP +#: ../src/dummy-strings.c:25 +msgid "Server's entry in database has expired" +msgstr "Entrada do servidor no banco de dados expirou" + +#. krb5_err.et:krb5:KRB5KDC_ERR_SERVICE_EXP +#: ../src/dummy-strings.c:26 +msgid "Requested protocol version not supported" +msgstr "Versão do protocolo requisitado não suportado" + +#. krb5_err.et:krb5:KRB5KDC_ERR_BAD_PVNO +#: ../src/dummy-strings.c:27 +msgid "Client's key is encrypted in an old master key" +msgstr "A chave do cliente está criptografada em uma chave mestre antiga" + +#. krb5_err.et:krb5:KRB5KDC_ERR_C_OLD_MAST_KVNO +#: ../src/dummy-strings.c:28 +msgid "Server's key is encrypted in an old master key" +msgstr "A chave do servidor está criptografada em uma chave mestre antiga" + +#. krb5_err.et:krb5:KRB5KDC_ERR_S_OLD_MAST_KVNO +#: ../src/dummy-strings.c:29 +msgid "Client not found in Kerberos database" +msgstr "Cliente não encontrado no banco de dados do Kerberos" + +#. krb5_err.et:krb5:KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN +#: ../src/dummy-strings.c:30 +msgid "Server not found in Kerberos database" +msgstr "Servidor não encontrado no banco de dados do Kerberos" + +#. krb5_err.et:krb5:KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN +#: ../src/dummy-strings.c:31 +msgid "Principal has multiple entries in Kerberos database" +msgstr "O Principal possui múltiplas entradas no banco de dados do Kerberos" + +#. krb5_err.et:krb5:KRB5KDC_ERR_PRINCIPAL_NOT_UNIQUE +#: ../src/dummy-strings.c:32 +msgid "Client or server has a null key" +msgstr "O cliente ou servidor possui uma chave nula" + +#. krb5_err.et:krb5:KRB5KDC_ERR_NULL_KEY +#: ../src/dummy-strings.c:33 +msgid "Ticket is ineligible for postdating" +msgstr "O ticket é inelegível para postdating" + +#. krb5_err.et:krb5:KRB5KDC_ERR_CANNOT_POSTDATE +#: ../src/dummy-strings.c:34 +msgid "Requested effective lifetime is negative or too short" +msgstr "Tempo de vida efetivo requisitado é negativo ou muito curto" + +#. krb5_err.et:krb5:KRB5KDC_ERR_NEVER_VALID +#: ../src/dummy-strings.c:35 +msgid "KDC policy rejects request" +msgstr "Política KDC rejeitou a requisição" + +#. krb5_err.et:krb5:KRB5KDC_ERR_POLICY +#: ../src/dummy-strings.c:36 +msgid "KDC can't fulfill requested option" +msgstr "KDC não pôde satisfazer a opção requisitada" + +#. krb5_err.et:krb5:KRB5KDC_ERR_BADOPTION +#: ../src/dummy-strings.c:37 +msgid "KDC has no support for encryption type" +msgstr "KDC não possui suporte para tipos de criptografia" + +#. krb5_err.et:krb5:KRB5KDC_ERR_ETYPE_NOSUPP +#: ../src/dummy-strings.c:38 +msgid "KDC has no support for checksum type" +msgstr "KDC não possui suporte para tipos de checksum" + +#. krb5_err.et:krb5:KRB5KDC_ERR_SUMTYPE_NOSUPP +#: ../src/dummy-strings.c:39 +msgid "KDC has no support for padata type" +msgstr "KDC não possui suporte para tipos de padata" + +#. krb5_err.et:krb5:KRB5KDC_ERR_PADATA_TYPE_NOSUPP +#: ../src/dummy-strings.c:40 +msgid "KDC has no support for transited type" +msgstr "KDC não possui suporte para tipos transitados" + +#. krb5_err.et:krb5:KRB5KDC_ERR_TRTYPE_NOSUPP +#: ../src/dummy-strings.c:41 +msgid "Clients credentials have been revoked" +msgstr "Credenciais do cliente foram revogadas" + +#. krb5_err.et:krb5:KRB5KDC_ERR_CLIENT_REVOKED +#: ../src/dummy-strings.c:42 +msgid "Credentials for server have been revoked" +msgstr "Credenciais para servidor foram revogadas" + +#. krb5_err.et:krb5:KRB5KDC_ERR_SERVICE_REVOKED +#: ../src/dummy-strings.c:43 +msgid "TGT has been revoked" +msgstr "TGT foi revogada" + +#. krb5_err.et:krb5:KRB5KDC_ERR_TGT_REVOKED +#: ../src/dummy-strings.c:44 +msgid "Client not yet valid - try again later" +msgstr "Cliente ainda não válido - tente novamente mais tarde" + +#. krb5_err.et:krb5:KRB5KDC_ERR_CLIENT_NOTYET +#: ../src/dummy-strings.c:45 +msgid "Server not yet valid - try again later" +msgstr "Servidor ainda não válido - tente novamente mais tarde" + +#. krb5_err.et:krb5:KRB5KDC_ERR_SERVICE_NOTYET +#: ../src/dummy-strings.c:46 +msgid "Password has expired" +msgstr "A senha expirou" + +#. krb5_err.et:krb5:KRB5KDC_ERR_KEY_EXP +#: ../src/dummy-strings.c:47 +msgid "Preauthentication failed" +msgstr "Falha de pre-autenticação" + +#. krb5_err.et:krb5:KRB5KDC_ERR_PREAUTH_FAILED +#: ../src/dummy-strings.c:48 +msgid "Additional pre-authentication required" +msgstr "Pré-autenticação adicional requerida" + +#. krb5_err.et:krb5:KRB5KDC_ERR_PREAUTH_REQUIRED +#: ../src/dummy-strings.c:49 +msgid "Requested server and ticket don't match" +msgstr "O servidor requisitado e o ticket não correspondem" + +#. krb5_err.et:krb5:KRB5KDC_ERR_SERVER_NOMATCH +#: ../src/dummy-strings.c:50 +msgid "A service is not available that is required to process the request" +msgstr "" +"Um serviço não está disponível e é necessário para processar a requisição" + +#. krb5_err.et:krb5:KRB5KDC_ERR_SVC_UNAVAILABLE +#: ../src/dummy-strings.c:51 +msgid "Decrypt integrity check failed" +msgstr "Verificação de integridade de descriptografia falhou" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_BAD_INTEGRITY +#: ../src/dummy-strings.c:52 +msgid "Ticket expired" +msgstr "O ticket expirou" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_TKT_EXPIRED +#: ../src/dummy-strings.c:53 +msgid "Ticket not yet valid" +msgstr "O ticket ainda não é válido" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_TKT_NYV +#: ../src/dummy-strings.c:54 +msgid "Request is a replay" +msgstr "A requisição é uma reprodução" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_REPEAT +#: ../src/dummy-strings.c:55 +msgid "The ticket isn't for us" +msgstr "O ticket não é nosso" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_NOT_US +#: ../src/dummy-strings.c:56 +msgid "Ticket/authenticator don't match" +msgstr "O ticket/autenticador não correspondem" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_BADMATCH +#: ../src/dummy-strings.c:57 +msgid "Clock skew too great" +msgstr "A distorção do relógio foi muito boa" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_SKEW +#: ../src/dummy-strings.c:58 +msgid "Incorrect net address" +msgstr "Endereço de internet incorreto" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_BADADDR +#: ../src/dummy-strings.c:59 +msgid "Protocol version mismatch" +msgstr "Versão do protocolo não está correta." + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_BADVERSION +#: ../src/dummy-strings.c:60 +msgid "Invalid message type" +msgstr "Tipo de mensagem inválida" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_MSG_TYPE +#: ../src/dummy-strings.c:61 +msgid "Message stream modified" +msgstr "Fluxo da mensagem modificado" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_MODIFIED +#: ../src/dummy-strings.c:62 +msgid "Message out of order" +msgstr "Mensagem fora de ordem" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_BADORDER +#: ../src/dummy-strings.c:63 +msgid "Illegal cross-realm ticket" +msgstr "Ticket de domínios combinados ilegal" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_ILL_CR_TKT +#: ../src/dummy-strings.c:64 +msgid "Key version is not available" +msgstr "Chave da versão não está disponível" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_BADKEYVER +#: ../src/dummy-strings.c:65 +msgid "Service key not available" +msgstr "Chave do serviço não disponível" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_NOKEY +#. krb5_err.et:krb5:KRB5_NO_LOCALNAME +#: ../src/dummy-strings.c:66 ../src/dummy-strings.c:122 +msgid "Mutual authentication failed" +msgstr "Autenticação mútua falhou" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_MUT_FAIL +#: ../src/dummy-strings.c:67 +msgid "Incorrect message direction" +msgstr "Direção da mensagem incorreta" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_BADDIRECTION +#: ../src/dummy-strings.c:68 +msgid "Alternative authentication method required" +msgstr "Método de autenticação alternativo necessário" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_METHOD +#: ../src/dummy-strings.c:69 +msgid "Incorrect sequence number in message" +msgstr "Sequência de números incorreta na mensagem" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_BADSEQ +#: ../src/dummy-strings.c:70 +msgid "Inappropriate type of checksum in message" +msgstr "Tipo de checksum inapropriado na mensagem" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_INAPP_CKSUM +#: ../src/dummy-strings.c:71 +msgid "Policy rejects transited path" +msgstr "A política rejeitou o caminho transmitido" + +#. krb5_err.et:krb5:KRB5KRB_AP_PATH_NOT_ACCEPTED +#: ../src/dummy-strings.c:72 +msgid "Response too big for UDP, retry with TCP" +msgstr "Resposta muito grande para UDP, tente novamente com TCP" + +#. krb5_err.et:krb5:KRB5KRB_ERR_RESPONSE_TOO_BIG +#: ../src/dummy-strings.c:73 +msgid "Generic error (see e-text)" +msgstr "Erro genérico (veja texto eletrônico)" + +#. krb5_err.et:krb5:KRB5KRB_ERR_GENERIC +#: ../src/dummy-strings.c:74 +msgid "Field is too long for this implementation" +msgstr "O campo é muito longo para esta implementação" + +#. krb5_err.et:krb5:KRB5KRB_ERR_FIELD_TOOLONG +#: ../src/dummy-strings.c:75 +msgid "Client not trusted" +msgstr "Cliente não confiável" + +#. krb5_err.et:krb5:KRB5KDC_ERR_CLIENT_NOT_TRUSTED +#: ../src/dummy-strings.c:76 +msgid "KDC not trusted" +msgstr "KDC não confiável" + +#. krb5_err.et:krb5:KRB5KDC_ERR_KDC_NOT_TRUSTED +#: ../src/dummy-strings.c:77 +msgid "Invalid signature" +msgstr "Assinatura inválida" + +#. krb5_err.et:krb5:KRB5KDC_ERR_INVALID_SIG +#: ../src/dummy-strings.c:78 +msgid "Key parameters not accepted" +msgstr "Parâmetros da chave não aceitos" + +#. krb5_err.et:krb5:KRB5KDC_ERR_DH_KEY_PARAMETERS_NOT_ACCEPTED +#: ../src/dummy-strings.c:79 +msgid "Certificate mismatch" +msgstr "Certificado incompatível" + +#. krb5_err.et:krb5:KRB5KDC_ERR_CERTIFICATE_MISMATCH +#: ../src/dummy-strings.c:80 +msgid "Can't verify certificate" +msgstr "Não é possível verificar certificado" + +#. krb5_err.et:krb5:KRB5KDC_ERR_CANT_VERIFY_CERTIFICATE +#: ../src/dummy-strings.c:81 +msgid "Invalid certificate" +msgstr "Certificado inválido" + +#. krb5_err.et:krb5:KRB5KDC_ERR_INVALID_CERTIFICATE +#: ../src/dummy-strings.c:82 +msgid "Revoked certificate" +msgstr "Certificado revogado" + +#. krb5_err.et:krb5:KRB5KDC_ERR_REVOKED_CERTIFICATE +#: ../src/dummy-strings.c:83 +msgid "Revocation status unknown" +msgstr "Status da revogação desconhecido" + +#. krb5_err.et:krb5:KRB5KDC_ERR_REVOCATION_STATUS_UNKNOWN +#: ../src/dummy-strings.c:84 +msgid "Revocation status unavailable" +msgstr "Status da revogação não disponível" + +#. krb5_err.et:krb5:KRB5KDC_ERR_REVOCATION_STATUS_UNAVAILABLE +#: ../src/dummy-strings.c:85 +msgid "Client name mismatch" +msgstr "Nome do cliente incompatível" + +#. krb5_err.et:krb5:KRB5KDC_ERR_CLIENT_NAME_MISMATCH +#: ../src/dummy-strings.c:86 +msgid "KDC name mismatch" +msgstr "Nome KDC incompatível" + +#. krb5_err.et:krb5:KRB5KDC_ERR_KDC_NAME_MISMATCH +#: ../src/dummy-strings.c:87 +msgid "Inconsistent key purpose" +msgstr "Propósito da chave inconsistente" + +#. krb5_err.et:krb5:KRB5KDC_ERR_INCONSISTENT_KEY_PURPOSE +#: ../src/dummy-strings.c:88 +msgid "Digest in certificate not accepted" +msgstr "Digest no certificado não aceito" + +#. krb5_err.et:krb5:KRB5KDC_ERR_DIGEST_IN_CERT_NOT_ACCEPTED +#: ../src/dummy-strings.c:89 +msgid "Checksum must be included" +msgstr "Checksum deve ser incluído" + +#. krb5_err.et:krb5:KRB5KDC_ERR_PA_CHECKSUM_MUST_BE_INCLUDED +#: ../src/dummy-strings.c:90 +msgid "Digest in signed-data not accepted" +msgstr "Digest nos dados assinados não aceito" + +#. krb5_err.et:krb5:KRB5KDC_ERR_DIGEST_IN_SIGNED_DATA_NOT_ACCEPTED +#: ../src/dummy-strings.c:91 +msgid "Public key encryption not supported" +msgstr "Chave de criptografia pública sem suporte" + +#. krb5_err.et:krb5:KRB5KDC_ERR_PUBLIC_KEY_ENCRYPTION_NOT_SUPPORTED +#: ../src/dummy-strings.c:92 +msgid "$Id: krb5_err.et 19934 2007-09-13 23:49:00Z tlyu $" +msgstr "$Id: krb5_err.et 19934 2007-09-13 23:49:00Z tlyu $" + +#. krb5_err.et:krb5:KRB5_ERR_RCSID +#: ../src/dummy-strings.c:93 +msgid "Invalid flag for file lock mode" +msgstr "Sinalização inválida para modo de travamento de arquivo" + +#. krb5_err.et:krb5:KRB5_LIBOS_BADLOCKFLAG +#: ../src/dummy-strings.c:94 +msgid "Cannot read password" +msgstr "Não foi possível ler senha" + +#. krb5_err.et:krb5:KRB5_LIBOS_CANTREADPWD +#: ../src/dummy-strings.c:95 +msgid "Password mismatch" +msgstr "Senha incompatível" + +#. krb5_err.et:krb5:KRB5_LIBOS_BADPWDMATCH +#: ../src/dummy-strings.c:96 +msgid "Password read interrupted" +msgstr "Leitura de senha interrompida" + +#. krb5_err.et:krb5:KRB5_LIBOS_PWDINTR +#: ../src/dummy-strings.c:97 +msgid "Illegal character in component name" +msgstr "Caractere ilegal no nome do componente" + +#. krb5_err.et:krb5:KRB5_PARSE_ILLCHAR +#: ../src/dummy-strings.c:98 +msgid "Malformed representation of principal" +msgstr "Representação de principal malformada" + +#. krb5_err.et:krb5:KRB5_PARSE_MALFORMED +#: ../src/dummy-strings.c:99 +msgid "Can't open/find Kerberos configuration file" +msgstr "Não é possível abrir/encontrar arquivo de configuração do Kerberos" + +#. krb5_err.et:krb5:KRB5_CONFIG_CANTOPEN +#: ../src/dummy-strings.c:100 +msgid "Improper format of Kerberos configuration file" +msgstr "Formato inapropriado para arquivo de configuração do Kerberos" + +#. krb5_err.et:krb5:KRB5_CONFIG_BADFORMAT +#: ../src/dummy-strings.c:101 +msgid "Insufficient space to return complete information" +msgstr "Espaço insuficiente para retornar informação completa" + +#. krb5_err.et:krb5:KRB5_CONFIG_NOTENUFSPACE +#: ../src/dummy-strings.c:102 +msgid "Invalid message type specified for encoding" +msgstr "Tipo de mensagem inválida especificada para codificação" + +#. krb5_err.et:krb5:KRB5_BADMSGTYPE +#: ../src/dummy-strings.c:103 +msgid "Credential cache name malformed" +msgstr "Nome do cache de credenciais malformado" + +#. krb5_err.et:krb5:KRB5_CC_BADNAME +#: ../src/dummy-strings.c:104 +msgid "Unknown credential cache type" +msgstr "Tipo de cache de credenciais desconhecido" + +#. krb5_err.et:krb5:KRB5_CC_UNKNOWN_TYPE +#: ../src/dummy-strings.c:105 +msgid "Matching credential not found" +msgstr "Correspondência de credenciais não encontrado" + +#. krb5_err.et:krb5:KRB5_CC_NOTFOUND +#: ../src/dummy-strings.c:106 +msgid "End of credential cache reached" +msgstr "Fim do cache de credenciais alcançado" + +#. krb5_err.et:krb5:KRB5_CC_END +#: ../src/dummy-strings.c:107 +msgid "Request did not supply a ticket" +msgstr "Requisição não forneceu um ticket" + +#. krb5_err.et:krb5:KRB5_NO_TKT_SUPPLIED +#: ../src/dummy-strings.c:108 +msgid "Wrong principal in request" +msgstr "Principal errado na requisição" + +#. krb5_err.et:krb5:KRB5KRB_AP_WRONG_PRINC +#: ../src/dummy-strings.c:109 +msgid "Ticket has invalid flag set" +msgstr "Ticket possui definição de sinalizações inválida" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_TKT_INVALID +#: ../src/dummy-strings.c:110 +msgid "Requested principal and ticket don't match" +msgstr "Principal requisitado e ticket não correspondem" + +#. krb5_err.et:krb5:KRB5_PRINC_NOMATCH +#: ../src/dummy-strings.c:111 +msgid "KDC reply did not match expectations" +msgstr "Resposta KDC não corresponde com a esperada" + +#. krb5_err.et:krb5:KRB5_KDCREP_MODIFIED +#: ../src/dummy-strings.c:112 +msgid "Clock skew too great in KDC reply" +msgstr "Distorção do relógio na resposta KDC" + +#. krb5_err.et:krb5:KRB5_KDCREP_SKEW +#: ../src/dummy-strings.c:113 +msgid "Client/server realm mismatch in initial ticket request" +msgstr "" +"Domínio do cliente/servidor incompatível na requisição inicial do ticket " + +#. krb5_err.et:krb5:KRB5_IN_TKT_REALM_MISMATCH +#: ../src/dummy-strings.c:114 +msgid "Program lacks support for encryption type" +msgstr "Falta de suporte do programa para tipo de criptografia" + +#. krb5_err.et:krb5:KRB5_PROG_ETYPE_NOSUPP +#: ../src/dummy-strings.c:115 +msgid "Program lacks support for key type" +msgstr "Falta de suporte do programa para tipo de chave" + +#. krb5_err.et:krb5:KRB5_PROG_KEYTYPE_NOSUPP +#: ../src/dummy-strings.c:116 +msgid "Requested encryption type not used in message" +msgstr "Tipo de criptografia requisitada não usada na mensagem" + +#. krb5_err.et:krb5:KRB5_WRONG_ETYPE +#: ../src/dummy-strings.c:117 +msgid "Program lacks support for checksum type" +msgstr "Falta de suporte do programa para tipo de checksum" + +#. krb5_err.et:krb5:KRB5_PROG_SUMTYPE_NOSUPP +#: ../src/dummy-strings.c:118 +msgid "Cannot find KDC for requested realm" +msgstr "Não é possível encontrar KDC para requisições de domínio" + +#. krb5_err.et:krb5:KRB5_REALM_UNKNOWN +#: ../src/dummy-strings.c:119 +msgid "Kerberos service unknown" +msgstr "Serviço do Kerberos desconhecido" + +#. krb5_err.et:krb5:KRB5_SERVICE_UNKNOWN +#: ../src/dummy-strings.c:120 +msgid "Cannot contact any KDC for requested realm" +msgstr "Não é possível contatar nenhum KDC para o domínio requisitado" + +#. krb5_err.et:krb5:KRB5_KDC_UNREACH +#: ../src/dummy-strings.c:121 +msgid "No local name found for principal name" +msgstr "Sem nome local encontrado para nome principal" + +#. krb5_err.et:krb5:KRB5_MUTUAL_FAILED +#: ../src/dummy-strings.c:123 +msgid "Replay cache type is already registered" +msgstr "O tipo de cache de reprodução já está registrado" + +#. krb5_err.et:krb5:KRB5_RC_TYPE_EXISTS +#: ../src/dummy-strings.c:124 +msgid "No more memory to allocate (in replay cache code)" +msgstr "Sem mais memória para alocar (em código de cache de reprodução)" + +#. krb5_err.et:krb5:KRB5_RC_MALLOC +#: ../src/dummy-strings.c:125 +msgid "Replay cache type is unknown" +msgstr "O tipo de cache de reprodução é desconhecido" + +#. krb5_err.et:krb5:KRB5_RC_TYPE_NOTFOUND +#: ../src/dummy-strings.c:126 +msgid "Generic unknown RC error" +msgstr "Erro RC genérico desconhecido" + +#. krb5_err.et:krb5:KRB5_RC_UNKNOWN +#: ../src/dummy-strings.c:127 +msgid "Message is a replay" +msgstr "Mensagem é um replay" + +#. krb5_err.et:krb5:KRB5_RC_REPLAY +#: ../src/dummy-strings.c:128 +msgid "Replay I/O operation failed XXX" +msgstr "Operação de E/S de reprodução falhou XXX" + +#. krb5_err.et:krb5:KRB5_RC_IO +#: ../src/dummy-strings.c:129 +msgid "Replay cache type does not support non-volatile storage" +msgstr "O tipo de cache de reprodução não suporta armazenamento não-volátil" + +#. krb5_err.et:krb5:KRB5_RC_NOIO +#: ../src/dummy-strings.c:130 +msgid "Replay cache name parse/format error" +msgstr "Erro de análise/formato do nome do cache de reprodução" + +#. krb5_err.et:krb5:KRB5_RC_PARSE +#: ../src/dummy-strings.c:131 +msgid "End-of-file on replay cache I/O" +msgstr "Fim do arquivo no cache de reprodução E/S" + +#. krb5_err.et:krb5:KRB5_RC_IO_EOF +#: ../src/dummy-strings.c:132 +msgid "No more memory to allocate (in replay cache I/O code)" +msgstr "Sem mais memória para alocar (em código de E/S do cache de reprodução)" + +#. krb5_err.et:krb5:KRB5_RC_IO_MALLOC +#: ../src/dummy-strings.c:133 +msgid "Permission denied in replay cache code" +msgstr "Permissão negada no código do cache de reprodução" + +#. krb5_err.et:krb5:KRB5_RC_IO_PERM +#: ../src/dummy-strings.c:134 +msgid "I/O error in replay cache i/o code" +msgstr "Erro de E/S no cache de reprodução, código e/s" + +#. krb5_err.et:krb5:KRB5_RC_IO_IO +#: ../src/dummy-strings.c:135 +msgid "Generic unknown RC/IO error" +msgstr "Erro genérico desconhecido, erro RC/ES" + +#. krb5_err.et:krb5:KRB5_RC_IO_UNKNOWN +#: ../src/dummy-strings.c:136 +msgid "Insufficient system space to store replay information" +msgstr "" +"Espaço insuficiente no sistema para armazenar as informações de reprodução" + +#. krb5_err.et:krb5:KRB5_RC_IO_SPACE +#: ../src/dummy-strings.c:137 +msgid "Can't open/find realm translation file" +msgstr "Não é possível abrir/localizar arquivo de tradução de domínio" + +#. krb5_err.et:krb5:KRB5_TRANS_CANTOPEN +#: ../src/dummy-strings.c:138 +msgid "Improper format of realm translation file" +msgstr "Formato de arquivo de tradução de domínio impróprio" + +#. krb5_err.et:krb5:KRB5_TRANS_BADFORMAT +#: ../src/dummy-strings.c:139 +msgid "Can't open/find lname translation database" +msgstr "Não é possível abrir/localizar banco de dados de tradução lname" + +#. krb5_err.et:krb5:KRB5_LNAME_CANTOPEN +#: ../src/dummy-strings.c:140 +msgid "No translation available for requested principal" +msgstr "Sem tradução disponível para requisição principal" + +#. krb5_err.et:krb5:KRB5_LNAME_NOTRANS +#: ../src/dummy-strings.c:141 +msgid "Improper format of translation database entry" +msgstr "Formato impróprio de entrada de no banco de dados de tradução" + +#. krb5_err.et:krb5:KRB5_LNAME_BADFORMAT +#: ../src/dummy-strings.c:142 +msgid "Cryptosystem internal error" +msgstr "Erro interno do sistema de criptografia" + +#. krb5_err.et:krb5:KRB5_CRYPTO_INTERNAL +#: ../src/dummy-strings.c:143 +msgid "Key table name malformed" +msgstr "Nome da tabela de chave malformada" + +#. krb5_err.et:krb5:KRB5_KT_BADNAME +#: ../src/dummy-strings.c:144 +msgid "Unknown Key table type" +msgstr "Tipo de tabela de chave desconhecido" + +#. krb5_err.et:krb5:KRB5_KT_UNKNOWN_TYPE +#: ../src/dummy-strings.c:145 +msgid "Key table entry not found" +msgstr "Entrada na tabela de chave não encontrado" + +#. krb5_err.et:krb5:KRB5_KT_NOTFOUND +#: ../src/dummy-strings.c:146 +msgid "End of key table reached" +msgstr "Fim da tabela de chave alcançado" + +#. krb5_err.et:krb5:KRB5_KT_END +#: ../src/dummy-strings.c:147 +msgid "Cannot write to specified key table" +msgstr "Não é possível gravar na tabela de chaves especificada" + +#. krb5_err.et:krb5:KRB5_KT_NOWRITE +#: ../src/dummy-strings.c:148 +msgid "Error writing to key table" +msgstr "Erro gravando na tabela de chave" + +#. krb5_err.et:krb5:KRB5_KT_IOERR +#: ../src/dummy-strings.c:149 +msgid "Cannot find ticket for requested realm" +msgstr "Não é possível encontrar ticket para requisições de domínio" + +#. krb5_err.et:krb5:KRB5_NO_TKT_IN_RLM +#: ../src/dummy-strings.c:150 +msgid "DES key has bad parity" +msgstr "A chave DES possui paridade ruim" + +#. krb5_err.et:krb5:KRB5DES_BAD_KEYPAR +#: ../src/dummy-strings.c:151 +msgid "DES key is a weak key" +msgstr "A chave DES é uma chave fraca" + +#. krb5_err.et:krb5:KRB5DES_WEAK_KEY +#: ../src/dummy-strings.c:152 +msgid "Bad encryption type" +msgstr "Tipo de criptografia ruim" + +#. krb5_err.et:krb5:KRB5_BAD_ENCTYPE +#: ../src/dummy-strings.c:153 +msgid "Key size is incompatible with encryption type" +msgstr "Tamanho da chave é incompatível com o tipo de criptografia" + +#. krb5_err.et:krb5:KRB5_BAD_KEYSIZE +#: ../src/dummy-strings.c:154 +msgid "Message size is incompatible with encryption type" +msgstr "Tamanho da mensagem é incompatível com o tipo de criptografia" + +#. krb5_err.et:krb5:KRB5_BAD_MSIZE +#: ../src/dummy-strings.c:155 +msgid "Credentials cache type is already registered." +msgstr "O tipo de cache de credenciais já está registrado." + +#. krb5_err.et:krb5:KRB5_CC_TYPE_EXISTS +#: ../src/dummy-strings.c:156 +msgid "Key table type is already registered." +msgstr "O tipo de tabela de chaves já está registrado." + +#. krb5_err.et:krb5:KRB5_KT_TYPE_EXISTS +#: ../src/dummy-strings.c:157 +msgid "Credentials cache I/O operation failed XXX" +msgstr "Operação I/O de cache de credenciais falhou XXX" + +#. krb5_err.et:krb5:KRB5_CC_IO +#: ../src/dummy-strings.c:158 +msgid "Credentials cache permissions incorrect" +msgstr "Cache de permissões de credenciais incorreto" + +#. krb5_err.et:krb5:KRB5_FCC_PERM +#: ../src/dummy-strings.c:159 +msgid "No credentials cache found" +msgstr "Sem cache de credenciais encontrado" + +#. krb5_err.et:krb5:KRB5_FCC_NOFILE +#: ../src/dummy-strings.c:160 +msgid "Internal credentials cache error" +msgstr "Erro interno do cache de credenciais" + +#. krb5_err.et:krb5:KRB5_FCC_INTERNAL +#: ../src/dummy-strings.c:161 +msgid "Error writing to credentials cache" +msgstr "Erro gravando para cache de credenciais" + +#. krb5_err.et:krb5:KRB5_CC_WRITE +#: ../src/dummy-strings.c:162 +msgid "No more memory to allocate (in credentials cache code)" +msgstr "Sem mais memória para alocar (em código de cache de credenciais)" + +#. krb5_err.et:krb5:KRB5_CC_NOMEM +#: ../src/dummy-strings.c:163 +msgid "Bad format in credentials cache" +msgstr "Formato ruim no cache de credenciais" + +#. krb5_err.et:krb5:KRB5_CC_FORMAT +#: ../src/dummy-strings.c:164 +msgid "No credentials found with supported encryption types" +msgstr "Sem credenciais encontradas com suporte a tipos de criptografia" + +#. krb5_err.et:krb5:KRB5_CC_NOT_KTYPE +#: ../src/dummy-strings.c:165 +msgid "Invalid KDC option combination (library internal error)" +msgstr "Opção de combinado KDC inválida (erro da biblioteca interna)" + +#. krb5_err.et:krb5:KRB5_INVALID_FLAGS +#: ../src/dummy-strings.c:166 +msgid "Request missing second ticket" +msgstr "A requisição precisa de um segundo ticket" + +#. krb5_err.et:krb5:KRB5_NO_2ND_TKT +#: ../src/dummy-strings.c:167 +msgid "No credentials supplied to library routine" +msgstr "Sem credenciais fornecidas para biblioteca de rotina" + +#. krb5_err.et:krb5:KRB5_NOCREDS_SUPPLIED +#: ../src/dummy-strings.c:168 +msgid "Bad sendauth version was sent" +msgstr "Uma versão sendauth errada foi enviada" + +#. krb5_err.et:krb5:KRB5_SENDAUTH_BADAUTHVERS +#: ../src/dummy-strings.c:169 +msgid "Bad application version was sent (via sendauth)" +msgstr "Versão errada do aplicativo foi enviada (via sendauth)" + +#. krb5_err.et:krb5:KRB5_SENDAUTH_BADAPPLVERS +#: ../src/dummy-strings.c:170 +msgid "Bad response (during sendauth exchange)" +msgstr "Resposta errada (durante troca sendauth)" + +#. krb5_err.et:krb5:KRB5_SENDAUTH_BADRESPONSE +#: ../src/dummy-strings.c:171 +msgid "Server rejected authentication (during sendauth exchange)" +msgstr "Servidor rejeitou autenticação (durante a troca sendauth)" + +#. krb5_err.et:krb5:KRB5_SENDAUTH_REJECTED +#: ../src/dummy-strings.c:172 +msgid "Unsupported preauthentication type" +msgstr "Tipo de pré-autenticação sem suporte" + +#. krb5_err.et:krb5:KRB5_PREAUTH_BAD_TYPE +#: ../src/dummy-strings.c:173 +msgid "Required preauthentication key not supplied" +msgstr "A chave de pré-autenticação não foi fornecida" + +#. krb5_err.et:krb5:KRB5_PREAUTH_NO_KEY +#: ../src/dummy-strings.c:174 +msgid "Generic preauthentication failure" +msgstr "Falha de pré-autenticação genérica" + +#. krb5_err.et:krb5:KRB5_PREAUTH_FAILED +#: ../src/dummy-strings.c:175 +msgid "Unsupported replay cache format version number" +msgstr "Número da versão do formato do cache de reprodução sem suporte" + +#. krb5_err.et:krb5:KRB5_RCACHE_BADVNO +#: ../src/dummy-strings.c:176 +msgid "Unsupported credentials cache format version number" +msgstr "Número de versão do formato do cache de credenciais sem suporte" + +#. krb5_err.et:krb5:KRB5_CCACHE_BADVNO +#: ../src/dummy-strings.c:177 +msgid "Unsupported key table format version number" +msgstr "Número de versão do formato da tabela de chave sem suporte" + +#. krb5_err.et:krb5:KRB5_KEYTAB_BADVNO +#: ../src/dummy-strings.c:178 +msgid "Program lacks support for address type" +msgstr "Falta de suporte do programa para tipo de endereço" + +#. krb5_err.et:krb5:KRB5_PROG_ATYPE_NOSUPP +#: ../src/dummy-strings.c:179 +msgid "Message replay detection requires rcache parameter" +msgstr "A detecção de reprodução se mensagem precisa de parâmetro rcache" + +#. krb5_err.et:krb5:KRB5_RC_REQUIRED +#: ../src/dummy-strings.c:180 +msgid "Hostname cannot be canonicalized" +msgstr "O nome do host não pôde ser canonizado" + +#. krb5_err.et:krb5:KRB5_ERR_BAD_HOSTNAME +#: ../src/dummy-strings.c:181 +msgid "Cannot determine realm for host" +msgstr "Não é possível determinar o domínio do host" + +#. krb5_err.et:krb5:KRB5_ERR_HOST_REALM_UNKNOWN +#: ../src/dummy-strings.c:182 +msgid "Conversion to service principal undefined for name type" +msgstr "Conversão para serviço principal indefinido para tipo de nome" + +#. krb5_err.et:krb5:KRB5_SNAME_UNSUPP_NAMETYPE +#: ../src/dummy-strings.c:183 +msgid "Initial Ticket response appears to be Version 4 error" +msgstr "Resposta do ticket inicial parece ser erro da versão 4" + +#. krb5_err.et:krb5:KRB5KRB_AP_ERR_V4_REPLY +#: ../src/dummy-strings.c:184 +msgid "Cannot resolve network address for KDC in requested realm" +msgstr "" +"Não é possível resolver o endereço de rede para KDC no domínio requisitado" + +#. krb5_err.et:krb5:KRB5_REALM_CANT_RESOLVE +#: ../src/dummy-strings.c:185 +msgid "Requesting ticket can't get forwardable tickets" +msgstr "Ao requisitar ticket não é possível obter tickets encaminhados" + +#. krb5_err.et:krb5:KRB5_TKT_NOT_FORWARDABLE +#: ../src/dummy-strings.c:186 +msgid "Bad principal name while trying to forward credentials" +msgstr "Nome principal ruim ao tentar encaminhar credenciais" + +#. krb5_err.et:krb5:KRB5_FWD_BAD_PRINCIPAL +#: ../src/dummy-strings.c:187 +msgid "Looping detected inside krb5_get_in_tkt" +msgstr "Detectado loop dentro do krb5_get_in_tkt" + +#. krb5_err.et:krb5:KRB5_GET_IN_TKT_LOOP +#: ../src/dummy-strings.c:188 +msgid "Configuration file does not specify default realm" +msgstr "Arquivo de configuração parece não especificar o domínio padrão" + +#. krb5_err.et:krb5:KRB5_CONFIG_NODEFREALM +#: ../src/dummy-strings.c:189 +msgid "Bad SAM flags in obtain_sam_padata" +msgstr "Sinalizadores SAM ruins em obtain_sam_padata" + +#. krb5_err.et:krb5:KRB5_SAM_UNSUPPORTED +#: ../src/dummy-strings.c:190 +msgid "Invalid encryption type in SAM challenge" +msgstr "Tipo de criptografia inválida no desafio SAM" + +#. krb5_err.et:krb5:KRB5_SAM_INVALID_ETYPE +#: ../src/dummy-strings.c:191 +msgid "Missing checksum in SAM challenge" +msgstr "Faltando checksum no desafio SAM" + +#. krb5_err.et:krb5:KRB5_SAM_NO_CHECKSUM +#: ../src/dummy-strings.c:192 +msgid "Bad checksum in SAM challenge" +msgstr "Checksum ruim no desafio SAM" + +#. krb5_err.et:krb5:KRB5_SAM_BAD_CHECKSUM +#: ../src/dummy-strings.c:193 +msgid "Keytab name too long" +msgstr "Rótulo da chave muito grande" + +#. krb5_err.et:krb5:KRB5_KT_NAME_TOOLONG +#: ../src/dummy-strings.c:194 +msgid "Key version number for principal in key table is incorrect" +msgstr "Número da chave de conversão para principal na tabela de está incorreta" + +#. krb5_err.et:krb5:KRB5_KT_KVNONOTFOUND +#: ../src/dummy-strings.c:195 +msgid "This application has expired" +msgstr "Este aplicativo expirou" + +#. krb5_err.et:krb5:KRB5_APPL_EXPIRED +#: ../src/dummy-strings.c:196 +msgid "This Krb5 library has expired" +msgstr "Esta biblioteca Krb5 expirou" + +#. krb5_err.et:krb5:KRB5_LIB_EXPIRED +#: ../src/dummy-strings.c:197 +msgid "New password cannot be zero length" +msgstr "A nova senha não pode ser de tamanho zero" + +#. krb5_err.et:krb5:KRB5_CHPW_PWDNULL +#: ../src/dummy-strings.c:198 +msgid "Password change failed" +msgstr "A alteração de senha falhou" + +#. krb5_err.et:krb5:KRB5_CHPW_FAIL +#: ../src/dummy-strings.c:199 +msgid "Bad format in keytab" +msgstr "Formato incorreto no rótulo da chave" + +#. krb5_err.et:krb5:KRB5_KT_FORMAT +#: ../src/dummy-strings.c:200 +msgid "Encryption type not permitted" +msgstr "Tipo de criptografia não permitido" + +#. krb5_err.et:krb5:KRB5_NOPERM_ETYPE +#: ../src/dummy-strings.c:201 +msgid "No supported encryption types (config file error?)" +msgstr "Sem tipos de criptografia suportados (erro no arquivo de configuração?)" + +#. krb5_err.et:krb5:KRB5_CONFIG_ETYPE_NOSUPP +#: ../src/dummy-strings.c:202 +msgid "Program called an obsolete, deleted function" +msgstr "O programa chamado é obsoleto, função apagada" + +#. krb5_err.et:krb5:KRB5_OBSOLETE_FN +#: ../src/dummy-strings.c:203 +msgid "unknown getaddrinfo failure" +msgstr "falha getaddrinfo desconhecida" + +#. krb5_err.et:krb5:KRB5_EAI_FAIL +#: ../src/dummy-strings.c:204 +msgid "no data available for host/domain name" +msgstr "sem dados disponíveis para nome do host/domínio" + +#. krb5_err.et:krb5:KRB5_EAI_NODATA +#: ../src/dummy-strings.c:205 +msgid "host/domain name not found" +msgstr "nome do host/domínio não encontrado" + +#. krb5_err.et:krb5:KRB5_EAI_NONAME +#: ../src/dummy-strings.c:206 +msgid "service name unknown" +msgstr "nome do serviço desconhecido" + +#. krb5_err.et:krb5:KRB5_EAI_SERVICE +#: ../src/dummy-strings.c:207 +msgid "Cannot determine realm for numeric host address" +msgstr "Não é possível determinar o domínio para endereço numérico do host" + +#. krb5_err.et:krb5:KRB5_ERR_NUMERIC_REALM +#: ../src/dummy-strings.c:208 +msgid "Invalid key generation parameters from KDC" +msgstr "Parâmetros de geração de chaves inválido para KDC" + +#. krb5_err.et:krb5:KRB5_ERR_BAD_S2K_PARAMS +#: ../src/dummy-strings.c:209 +msgid "service not available" +msgstr "serviço não disponível" + +#. krb5_err.et:krb5:KRB5_ERR_NO_SERVICE +#: ../src/dummy-strings.c:210 +msgid "Ccache function not supported: read-only ccache type" +msgstr "Função ccache sem suporte: tipo ccache somente leitura" + +#. krb5_err.et:krb5:KRB5_CC_READONLY +#: ../src/dummy-strings.c:211 +msgid "Ccache function not supported: not implemented" +msgstr "Função ccache sem suporte: não implementada" + +#. krb5_err.et:krb5:KRB5_CC_NOSUPP +#: ../src/dummy-strings.c:212 +msgid "Invalid format of Kerberos lifetime or clock skew string" +msgstr "" +"Formato inválido do tempo de vida Kerberos ou expressão de distorção do " +"relógio" + +#. krb5_err.et:krb5:KRB5_DELTAT_BADFORMAT +#: ../src/dummy-strings.c:213 +msgid "Supplied data not handled by this plugin" +msgstr "Dados fornecidos não manipulados por este plug-in" + +#. krb5_err.et:krb5:KRB5_PLUGIN_NO_HANDLE +#: ../src/dummy-strings.c:214 +msgid "Plugin does not support the operaton" +msgstr "Plug-in sem suporte a esta operação" + +#. krb5_err.et:krb5:KRB5_PLUGIN_OP_NOTSUPP +#: ../src/dummy-strings.c:215 +msgid "Kerberos V5 magic number table" +msgstr "Tabela de número mágico V5 do Kerberos" + +#. kv5m_err.et:kv5m:KV5M_NONE +#: ../src/dummy-strings.c:216 +msgid "Bad magic number for krb5_principal structure" +msgstr "Número mágico ruim para estrutura krb5_principal" + +#. kv5m_err.et:kv5m:KV5M_PRINCIPAL +#: ../src/dummy-strings.c:217 +msgid "Bad magic number for krb5_data structure" +msgstr "Número mágico ruim para estrutura krb5_data" + +#. kv5m_err.et:kv5m:KV5M_DATA +#: ../src/dummy-strings.c:218 +msgid "Bad magic number for krb5_keyblock structure" +msgstr "Número mágico ruim para estrutura krb5_keyblock" + +#. kv5m_err.et:kv5m:KV5M_KEYBLOCK +#: ../src/dummy-strings.c:219 +msgid "Bad magic number for krb5_checksum structure" +msgstr "Número mágico ruim para estrutura krb5_checksum" + +#. kv5m_err.et:kv5m:KV5M_CHECKSUM +#: ../src/dummy-strings.c:220 +msgid "Bad magic number for krb5_encrypt_block structure" +msgstr "Número mágico ruim para estrutura krb5_encrypt_block" + +#. kv5m_err.et:kv5m:KV5M_ENCRYPT_BLOCK +#: ../src/dummy-strings.c:221 +msgid "Bad magic number for krb5_enc_data structure" +msgstr "Número mágico ruim para estrutura krb5_enc_data" + +#. kv5m_err.et:kv5m:KV5M_ENC_DATA +#: ../src/dummy-strings.c:222 +msgid "Bad magic number for krb5_cryptosystem_entry structure" +msgstr "Número mágico ruim para estrutura krb5_cryptosystem_entry" + +#. kv5m_err.et:kv5m:KV5M_CRYPTOSYSTEM_ENTRY +#: ../src/dummy-strings.c:223 +msgid "Bad magic number for krb5_cs_table_entry structure" +msgstr "Número mágico ruim para estrutura krb5_cs_table_entry" + +#. kv5m_err.et:kv5m:KV5M_CS_TABLE_ENTRY +#: ../src/dummy-strings.c:224 +msgid "Bad magic number for krb5_checksum_entry structure" +msgstr "Número mágico ruim para estrutura krb5_checksum_entry" + +#. kv5m_err.et:kv5m:KV5M_CHECKSUM_ENTRY +#: ../src/dummy-strings.c:225 +msgid "Bad magic number for krb5_authdata structure" +msgstr "Número mágico ruim para estrutura krb5_authdata" + +#. kv5m_err.et:kv5m:KV5M_AUTHDATA +#: ../src/dummy-strings.c:226 +msgid "Bad magic number for krb5_transited structure" +msgstr "Número mágico ruim para estrutura krb5_transited" + +#. kv5m_err.et:kv5m:KV5M_TRANSITED +#: ../src/dummy-strings.c:227 +msgid "Bad magic number for krb5_enc_tkt_part structure" +msgstr "Número mágico ruim para estrutura krb5_enc_tkt_part" + +#. kv5m_err.et:kv5m:KV5M_ENC_TKT_PART +#: ../src/dummy-strings.c:228 +msgid "Bad magic number for krb5_ticket structure" +msgstr "Número mágico ruim para estrutura krb5_ticket" + +#. kv5m_err.et:kv5m:KV5M_TICKET +#: ../src/dummy-strings.c:229 +msgid "Bad magic number for krb5_authenticator structure" +msgstr "Número mágico ruim para estrutura krb5_authenticator" + +#. kv5m_err.et:kv5m:KV5M_AUTHENTICATOR +#: ../src/dummy-strings.c:230 +msgid "Bad magic number for krb5_tkt_authent structure" +msgstr "Número mágico ruim para estrutura krb5_tkt_authent" + +#. kv5m_err.et:kv5m:KV5M_TKT_AUTHENT +#: ../src/dummy-strings.c:231 +msgid "Bad magic number for krb5_creds structure" +msgstr "Número mágico ruim para estrutura krb5_creds" + +#. kv5m_err.et:kv5m:KV5M_CREDS +#: ../src/dummy-strings.c:232 +msgid "Bad magic number for krb5_last_req_entry structure" +msgstr "Número mágico ruim para estrutura krb5_last_req_entry" + +#. kv5m_err.et:kv5m:KV5M_LAST_REQ_ENTRY +#: ../src/dummy-strings.c:233 +msgid "Bad magic number for krb5_pa_data structure" +msgstr "Número mágico ruim para estrutura krb5_pa_data" + +#. kv5m_err.et:kv5m:KV5M_PA_DATA +#: ../src/dummy-strings.c:234 +msgid "Bad magic number for krb5_kdc_req structure" +msgstr "Número mágico ruim para estrutura krb5_kdc_req" + +#. kv5m_err.et:kv5m:KV5M_KDC_REQ +#: ../src/dummy-strings.c:235 +msgid "Bad magic number for krb5_enc_kdc_rep_part structure" +msgstr "Número mágico ruim para estrutura krb5_enc_kdc_rep_part" + +#. kv5m_err.et:kv5m:KV5M_ENC_KDC_REP_PART +#: ../src/dummy-strings.c:236 +msgid "Bad magic number for krb5_kdc_rep structure" +msgstr "Número mágico ruim para estrutura krb5_kdc_rep" + +#. kv5m_err.et:kv5m:KV5M_KDC_REP +#: ../src/dummy-strings.c:237 +msgid "Bad magic number for krb5_error structure" +msgstr "Número mágico ruim para estrutura krb5_error" + +#. kv5m_err.et:kv5m:KV5M_ERROR +#: ../src/dummy-strings.c:238 +msgid "Bad magic number for krb5_ap_req structure" +msgstr "Número mágico ruim para estrutura krb5_ap_req" + +#. kv5m_err.et:kv5m:KV5M_AP_REQ +#: ../src/dummy-strings.c:239 +msgid "Bad magic number for krb5_ap_rep structure" +msgstr "Número mágico ruim para estrutura krb5_ap_rep" + +#. kv5m_err.et:kv5m:KV5M_AP_REP +#: ../src/dummy-strings.c:240 +msgid "Bad magic number for krb5_ap_rep_enc_part structure" +msgstr "Número mágico ruim para estrutura krb5_ap_rep_enc_part" + +#. kv5m_err.et:kv5m:KV5M_AP_REP_ENC_PART +#: ../src/dummy-strings.c:241 +msgid "Bad magic number for krb5_response structure" +msgstr "Número mágico ruim para estrutura krb5_response" + +#. kv5m_err.et:kv5m:KV5M_RESPONSE +#: ../src/dummy-strings.c:242 +msgid "Bad magic number for krb5_safe structure" +msgstr "Número mágico ruim para estrutura krb5_safe" + +#. kv5m_err.et:kv5m:KV5M_SAFE +#: ../src/dummy-strings.c:243 +msgid "Bad magic number for krb5_priv structure" +msgstr "Número mágico ruim para estrutura krb5_priv" + +#. kv5m_err.et:kv5m:KV5M_PRIV +#: ../src/dummy-strings.c:244 +msgid "Bad magic number for krb5_priv_enc_part structure" +msgstr "Número mágico ruim para estrutura krb5_priv_enc_part" + +#. kv5m_err.et:kv5m:KV5M_PRIV_ENC_PART +#: ../src/dummy-strings.c:245 +msgid "Bad magic number for krb5_cred structure" +msgstr "Número mágico ruim para estrutura krb5_cred" + +#. kv5m_err.et:kv5m:KV5M_CRED +#: ../src/dummy-strings.c:246 +msgid "Bad magic number for krb5_cred_info structure" +msgstr "Número mágico ruim para estrutura krb5_cred_info" + +#. kv5m_err.et:kv5m:KV5M_CRED_INFO +#: ../src/dummy-strings.c:247 +msgid "Bad magic number for krb5_cred_enc_part structure" +msgstr "Número mágico ruim para estrutura krb5_cred_enc_part" + +#. kv5m_err.et:kv5m:KV5M_CRED_ENC_PART +#: ../src/dummy-strings.c:248 +msgid "Bad magic number for krb5_pwd_data structure" +msgstr "Número mágico ruim para estrutura krb5_pwd_data" + +#. kv5m_err.et:kv5m:KV5M_PWD_DATA +#: ../src/dummy-strings.c:249 +msgid "Bad magic number for krb5_address structure" +msgstr "Número mágico ruim para estrutura krb5_address" + +#. kv5m_err.et:kv5m:KV5M_ADDRESS +#: ../src/dummy-strings.c:250 +msgid "Bad magic number for krb5_keytab_entry structure" +msgstr "Número mágico ruim para estrutura krb5_keytab_entry" + +#. kv5m_err.et:kv5m:KV5M_KEYTAB_ENTRY +#: ../src/dummy-strings.c:251 +msgid "Bad magic number for krb5_context structure" +msgstr "Número mágico ruim para estrutura krb5_context" + +#. kv5m_err.et:kv5m:KV5M_CONTEXT +#: ../src/dummy-strings.c:252 +msgid "Bad magic number for krb5_os_context structure" +msgstr "Número mágico ruim para estrutura krb5_os_context" + +#. kv5m_err.et:kv5m:KV5M_OS_CONTEXT +#: ../src/dummy-strings.c:253 +msgid "Bad magic number for krb5_alt_method structure" +msgstr "Número mágico ruim para estrutura krb5_alt_method" + +#. kv5m_err.et:kv5m:KV5M_ALT_METHOD +#: ../src/dummy-strings.c:254 +msgid "Bad magic number for krb5_etype_info_entry structure" +msgstr "Número mágico ruim para estrutura krb5_etype_info_entry" + +#. kv5m_err.et:kv5m:KV5M_ETYPE_INFO_ENTRY +#: ../src/dummy-strings.c:255 +msgid "Bad magic number for krb5_db_context structure" +msgstr "Número mágico ruim para estrutura krb5_db_context" + +#. kv5m_err.et:kv5m:KV5M_DB_CONTEXT +#: ../src/dummy-strings.c:256 +msgid "Bad magic number for krb5_auth_context structure" +msgstr "Número mágico ruim para estrutura krb5_auth_context" + +#. kv5m_err.et:kv5m:KV5M_AUTH_CONTEXT +#: ../src/dummy-strings.c:257 +msgid "Bad magic number for krb5_keytab structure" +msgstr "Número mágico ruim para estrutura krb5_keytab" + +#. kv5m_err.et:kv5m:KV5M_KEYTAB +#: ../src/dummy-strings.c:258 +msgid "Bad magic number for krb5_rcache structure" +msgstr "Número mágico ruim para estrutura krb5_rcache" + +#. kv5m_err.et:kv5m:KV5M_RCACHE +#: ../src/dummy-strings.c:259 +msgid "Bad magic number for krb5_ccache structure" +msgstr "Número mágico ruim para estrutura krb5_ccache" + +#. kv5m_err.et:kv5m:KV5M_CCACHE +#: ../src/dummy-strings.c:260 +msgid "Bad magic number for krb5_preauth_ops" +msgstr "Número mágico ruim para krb5_preauth_ops" + +#. kv5m_err.et:kv5m:KV5M_PREAUTH_OPS +#: ../src/dummy-strings.c:261 +msgid "Bad magic number for krb5_sam_challenge" +msgstr "Número mágico ruim para krb5_sam_challenge" + +#. kv5m_err.et:kv5m:KV5M_SAM_CHALLENGE +#: ../src/dummy-strings.c:262 +msgid "Bad magic number for krb5_sam_challenge_2" +msgstr "Número mágico ruim para krb5_sam_challenge_2" + +#. kv5m_err.et:kv5m:KV5M_SAM_CHALLENGE_2 +#: ../src/dummy-strings.c:263 +msgid "Bad magic number for krb5_sam_key" +msgstr "Número mágico ruim para krb5_sam_key" + +#. kv5m_err.et:kv5m:KV5M_SAM_KEY +#. kv5m_err.et:kv5m:KV5M_ENC_SAM_RESPONSE_ENC +#: ../src/dummy-strings.c:264 ../src/dummy-strings.c:265 +msgid "Bad magic number for krb5_enc_sam_response_enc" +msgstr "Número mágico ruim para krb5_enc_sam_response_enc" + +#. kv5m_err.et:kv5m:KV5M_ENC_SAM_RESPONSE_ENC_2 +#: ../src/dummy-strings.c:266 +msgid "Bad magic number for krb5_sam_response" +msgstr "Número mágico ruim para krb5_sam_response" + +#. kv5m_err.et:kv5m:KV5M_SAM_RESPONSE +#: ../src/dummy-strings.c:267 +msgid "Bad magic number for krb5_sam_response 2" +msgstr "Número mágico ruim para krb5_sam_response 2" + +#. kv5m_err.et:kv5m:KV5M_SAM_RESPONSE_2 +#: ../src/dummy-strings.c:268 +msgid "Bad magic number for krb5_predicted_sam_response" +msgstr "Número mágico ruim para krb5_predicted_sam_response" + +#. kv5m_err.et:kv5m:KV5M_PREDICTED_SAM_RESPONSE +#: ../src/dummy-strings.c:269 +msgid "Bad magic number for passwd_phrase_element" +msgstr "Número mágico ruim para passwd_phrase_element" + +#. kv5m_err.et:kv5m:KV5M_PASSWD_PHRASE_ELEMENT +#: ../src/dummy-strings.c:270 +msgid "Bad magic number for GSSAPI OID" +msgstr "Número mágico ruim para GSSAPI OID" + +#. kv5m_err.et:kv5m:KV5M_GSS_OID +#: ../src/dummy-strings.c:271 +msgid "Bad magic number for GSSAPI QUEUE" +msgstr "Número mágico ruim para GSSAPI QUEUE" + +#: ../src/ka-applet.c:369 +#, c-format +msgid "Your credentials expire in %.2d:%.2dh" +msgstr "Suas credenciais expiram em %.2d:%.2dh" + +#: ../src/ka-applet.c:504 +msgid "Don't show me this again" +msgstr "Não exibir novamente" + +#: ../src/ka-applet.c:511 +msgid "Get Ticket" +msgstr "Obter ticket" + +#: ../src/ka-applet.c:555 +msgid "Network credentials valid" +msgstr "Credenciais de rede válidas" + +#: ../src/ka-applet.c:556 +msgid "You've refreshed your Kerberos credentials." +msgstr "Você atualizou suas credenciais do Kerberos" + +#: ../src/ka-applet.c:572 +msgid "Network credentials expiring" +msgstr "Credenciais de rede expirando" + +#: ../src/ka-applet.c:590 +msgid "Network credentials expired" +msgstr "Credenciais de rede expiradas" + +#: ../src/ka-applet.c:591 +msgid "Your Kerberos credentails have expired." +msgstr "Suas credenciais no Kerberos expiraram." + +#: ../src/ka-applet.c:635 +#, c-format +msgid "There was an error launching the preferences dialog: %s" +msgstr "Ocorreu um erro lançando o diálogo de preferências: %s" + +#. Translators: add the translators of your language here +#: ../src/ka-applet.c:682 +msgid "translator-credits" +msgstr "Djavan Fagundes <djavan@comum.org>" + +#: ../src/ka-applet.c:727 +msgid "Remove Credentials _Cache" +msgstr "Remover _cache de credenciais" + +#. Ticket dialog +#: ../src/ka-applet.c:737 +msgid "_List Tickets" +msgstr "_Listar tickets" + +#: ../src/ka-tools.c:45 +#, c-format +msgid "" +"There was an error displaying help:\n" +"%s" +msgstr "" +"Ocorreu um erro exibindo a ajuda:\n" +"%s" + +#: ../src/ka-tickets.c:54 +msgid "Principal" +msgstr "Principal" + +#: ../src/ka-tickets.c:60 +msgid "Start Time" +msgstr "Hora de início" + +#: ../src/ka-tickets.c:66 +msgid "End Time" +msgstr "Hora de término" + +#: ../src/ka-tickets.c:72 +msgid "Fwd" +msgstr "Enc" + +#: ../src/ka-tickets.c:78 +msgid "Proxy" +msgstr "Proxy" + +#: ../src/ka-tickets.c:84 +msgid "Renew" +msgstr "Renovar" + +#: ../src/ka-tickets.c:107 +msgid "Error displaying service ticket information" +msgstr "Erro exibindo informação de serviço de ticket" + +#: ../src/krb5-auth-dialog.desktop.in.h:1 +msgid "Kerberos Network Authentication Dialog" +msgstr "Diálogo de autenticação de rede do Kerberos" + +#: ../src/krb5-auth-dialog.schemas.in.h:1 +msgid "Enabled plugins" +msgstr "Habilitar plug-ins" + +#: ../src/krb5-auth-dialog.schemas.in.h:2 +msgid "Forwardable ticket" +msgstr "Ticket encaminhável" + +#: ../src/krb5-auth-dialog.schemas.in.h:3 +msgid "Kerberos principal" +msgstr "Principal do Kerberos" + +#: ../src/krb5-auth-dialog.schemas.in.h:4 +msgid "List of plugins that should be loaded and activated on startup." +msgstr "Lista de plug-ins que podem ser carregados e ativados no início." + +#: ../src/krb5-auth-dialog.schemas.in.h:5 +msgid "Notify user when ticket becomes valid" +msgstr "Notificar usuário quando tickets se tornarem válidos" + +#: ../src/krb5-auth-dialog.schemas.in.h:6 +msgid "Notify user when ticket has expired" +msgstr "Notificar usuário quando tickets expirarem" + +#: ../src/krb5-auth-dialog.schemas.in.h:7 +msgid "Notify user when ticket is about to expire" +msgstr "Notificar usuário quando tickets estiverem para expirar" + +#: ../src/krb5-auth-dialog.schemas.in.h:8 +msgid "PKINIT CA certificates" +msgstr "Certificados PKINIT CA" + +#: ../src/krb5-auth-dialog.schemas.in.h:9 +msgid "PKINIT identifier" +msgstr "Identificador PKINIT" + +#: ../src/krb5-auth-dialog.schemas.in.h:10 +msgid "PKINIT trust anchors" +msgstr "Âncoras confiáveis PKINIT" + +#: ../src/krb5-auth-dialog.schemas.in.h:11 +msgid "Prompt minutes before expiry" +msgstr "Avisar minutos antes de expirar" + +#: ../src/krb5-auth-dialog.schemas.in.h:12 +msgid "Proxiable ticket" +msgstr "Ticket apto a trabalhar com proxy" + +#: ../src/krb5-auth-dialog.schemas.in.h:13 +msgid "Renewable ticket" +msgstr "Ticket renovável" + +#: ../src/krb5-auth-dialog.schemas.in.h:14 +msgid "Requested tickets should be forwardable" +msgstr "Os tickets requisitados devem ser encaminháveis" + +#: ../src/krb5-auth-dialog.schemas.in.h:15 +msgid "Requested tickets should be proxiable" +msgstr "Os tickets requisitados devem ser aptos a trabalhar com proxy" + +#: ../src/krb5-auth-dialog.schemas.in.h:16 +msgid "Requested tickets should be renewable" +msgstr "Os tickets requisitados devem ser renováveis" + +#: ../src/krb5-auth-dialog.schemas.in.h:17 +msgid "Show a trayicon in the status area of the panel" +msgstr "Exibir um ícone na área de notificação do painel" + +#: ../src/krb5-auth-dialog.schemas.in.h:18 +msgid "Show trayicon" +msgstr "Exibir ícone na área de notificação" + +#: ../src/krb5-auth-dialog.schemas.in.h:19 +msgid "" +"Start prompting/displaying notifications that many minutes before expiry" +msgstr "Iniciar notificações de pergunta/exibição minutos antes de expirar" + +#: ../src/krb5-auth-dialog.schemas.in.h:20 +msgid "The kerberos principal to acquire the ticket for" +msgstr "O principal do kerberos adquiriu tickets" + +#: ../src/krb5-auth-dialog.schemas.in.h:21 +msgid "The principal's public/private/certificate identifier when using PKINIT" +msgstr "" +"O identificador do certificado público/privado do principal ao usar o PKINIT" + +#: ../src/krb5-auth-dialog.schemas.in.h:22 +msgid "ticket expired notification" +msgstr "notificação de ticket expirado" + +#: ../src/krb5-auth-dialog.schemas.in.h:23 +msgid "ticket expiring notification" +msgstr "notificação de ticket expirando" + +#: ../src/krb5-auth-dialog.schemas.in.h:24 +msgid "valid ticket notification" +msgstr "notificação de ticket válido" + +#: ../secmem/util.c:106 +#, c-format +msgid "Warning: running q-agent setuid on this system is dangerous\n" +msgstr "Aviso: executando q-agent setuid neste sistema é perigoso\n" + +#: ../preferences/ka-preferences.c:345 +msgid "Choose Certificate" +msgstr "Escolher certificado" + +#: ../preferences/ka-preferences.c:361 +msgid "X509 Certificates" +msgstr "Certificados X509" + +#: ../preferences/ka-preferences.c:365 +msgid "all files" +msgstr "Todos arquivos" + +#: ../preferences/krb5-auth-dialog-preferences.desktop.in.h:2 +msgid "Set your Kerberos network authentication preferences" +msgstr "Define as suas preferências de autenticação de rede do Kerberos" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:1 +msgid "Appearance" +msgstr "Aparência" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:2 +msgid "Applet" +msgstr "Mini-aplicativo" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:3 +msgid "Certificate and private key used for authentication" +msgstr "Certificado e chave privada usada para autenticação" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:4 +msgid "If checked, display the tray icon in the status bar" +msgstr "Se definido, exibe o ícone de notificação na barra de status" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:5 +msgid "If checked, request forwardable tickets" +msgstr "Se definido, requisita tickets encaminháveis" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:6 +msgid "If checked, request proxiable tickets" +msgstr "Se marcado, requisita tickets aptos a trabalhar com proxy" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:7 +msgid "If checked, request renewable tickets" +msgstr "Se marcado, requisita tickets renováveis" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:8 +msgid "If checked, use a security token (Smartcard) to authenticate." +msgstr "Se marcado, usa o token de segurança (Smartcard) para autenticar." + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:9 +msgid "Kerberos" +msgstr "Kerberos" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:10 +msgid "Kerberos Authentication Configuration" +msgstr "Configuração de autenticação do Kerberos" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:11 +msgid "Kerberos User" +msgstr "Usuário do Kerberos" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:12 +msgid "Kerberos principal:" +msgstr "Principal do Kerberos:" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:13 +msgid "Notifications" +msgstr "Notificações" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:14 +msgid "PKINIT:" +msgstr "PKINIT:" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:15 +msgid "Requested Kerberos tickets should be:" +msgstr "Os tickets requisitados do Kerberos podem ser:" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:16 +msgid "" +"Send notification about ticket expiry that many minutes before it finally " +"expires" +msgstr "" +"Envia notificações sobre expiração de tickets minutos antes de finalmente " +"expirar" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:17 +msgid "Show tray icon" +msgstr "Exibir ícone na área de notificação" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:18 +msgid "Ticket Options" +msgstr "Opções de ticket" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:19 +msgid "Use Smartcard" +msgstr "Usar Smartcard" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:20 +msgid "Userid:" +msgstr "Id do usuário:" + +#. Used in combination: 'Warn x minutes before expiry' +#: ../preferences/krb5-auth-dialog-preferences.xml.h:22 +msgid "Warn" +msgstr "Aviso" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:23 +msgid "X509 trust anchors:" +msgstr "Âncoras confiáveis X509:" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:24 +msgid "_Browse..." +msgstr "_Navegar..." + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:25 +msgid "forwardable" +msgstr "encaminhável" + +#. Used in combination: 'Warn x minutes before expiry' +#: ../preferences/krb5-auth-dialog-preferences.xml.h:27 +msgid "minutes before expiry" +msgstr "minutos antes de expirar" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:28 +msgid "proxiable" +msgstr "apto a trabalhar com proxy" + +#: ../preferences/krb5-auth-dialog-preferences.xml.h:29 +msgid "renewable" +msgstr "renovável" @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: krb5-auth-dialog master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=krb5-auth-dialog&component=general\n" -"POT-Creation-Date: 2010-07-29 10:31+0000\n" -"PO-Revision-Date: 2010-08-05 13:21+0100\n" +"POT-Creation-Date: 2011-01-26 21:03+0000\n" +"PO-Revision-Date: 2011-01-27 20:11+0100\n" "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n" "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -22,7 +23,6 @@ msgstr "" #: ../src/krb5-auth-dialog.xml.h:1 #: ../src/krb5-auth-dialog.desktop.in.h:2 -#: ../preferences/krb5-auth-dialog-preferences.desktop.in.h:1 msgid "Network Authentication" msgstr "Overitev omrežja" @@ -34,21 +34,21 @@ msgstr "Storitvene vstopnice" msgid "_Renew Ticket" msgstr "_Obnovi vstopnico" -#: ../src/ka-dialog.c:172 +#: ../src/ka-dialog.c:171 msgid "unknown error" msgstr "neznana napaka" -#: ../src/ka-dialog.c:333 +#: ../src/ka-dialog.c:332 msgid "Expired" msgstr "Pretečeno" -#: ../src/ka-pwdialog.c:174 +#: ../src/ka-pwdialog.c:175 #, c-format msgid "Couldn't acquire kerberos ticket: '%s'" msgstr "Ni mogoče pridobiti vstopnice kerberos: '%s'" -#: ../src/ka-pwdialog.c:211 -#: ../src/ka-applet.c:390 +#: ../src/ka-pwdialog.c:212 +#: ../src/ka-applet.c:377 #, c-format msgid "Your credentials expire in %d minute" msgid_plural "Your credentials expire in %d minutes" @@ -57,8 +57,8 @@ msgstr[1] "Vaša poverila potečejo v %d minuti" msgstr[2] "Vaša poverila potečejo v %d minutah" msgstr[3] "Vaša poverila potečejo v %d minutah" -#: ../src/ka-pwdialog.c:216 -#: ../src/ka-applet.c:395 +#: ../src/ka-pwdialog.c:217 +#: ../src/ka-applet.c:382 msgid "Your credentials have expired" msgstr "Vaša poverila so potekla" @@ -71,11 +71,11 @@ msgstr "Vnesite svoje geslo Kerberos:" msgid "Please enter the password for '%s':" msgstr "Vnesite geslo za '%s':" -#: ../src/ka-pwdialog.c:268 +#: ../src/ka-pwdialog.c:263 msgid "The password you entered is invalid" msgstr "Vneseno geslo je neveljavno" -#: ../src/ka-pwdialog.c:284 +#: ../src/ka-pwdialog.c:279 #, c-format msgid "%s Error" msgstr "%s napaka" @@ -1387,64 +1387,57 @@ msgstr "Slabo čarobno število za GSSAPI OID" msgid "Bad magic number for GSSAPI QUEUE" msgstr "Slabo čarobno število od GSSAPI VRSTE" -#. Translators: First number is hours, second number is minutes -#: ../src/ka-applet.c:386 +#: ../src/ka-applet.c:371 #, c-format msgid "Your credentials expire in %.2d:%.2dh" msgstr "Vaša poverila potečejo v %.2d%.2dh" -#: ../src/ka-applet.c:500 +#: ../src/ka-applet.c:506 msgid "Don't show me this again" msgstr "Tega ne prikaži več" -#: ../src/ka-applet.c:542 -msgid "Network credentials valid" -msgstr "Omrežna varovala so veljavna" +#: ../src/ka-applet.c:513 +msgid "Get Ticket" +msgstr "Dobi vstopnico" -#: ../src/ka-applet.c:543 +#: ../src/ka-applet.c:561 msgid "You've refreshed your Kerberos credentials." msgstr "Osvežili ste svoja poverila Kerberos" -#: ../src/ka-applet.c:559 +#: ../src/ka-applet.c:563 +msgid "Network credentials valid" +msgstr "Omrežna varovala so veljavna" + +#: ../src/ka-applet.c:582 msgid "Network credentials expiring" msgstr "Omrežna varovala bodo potekla" -#: ../src/ka-applet.c:578 +#: ../src/ka-applet.c:600 msgid "Network credentials expired" msgstr "Omrežna varovala so potekla" -#: ../src/ka-applet.c:579 +#: ../src/ka-applet.c:601 msgid "Your Kerberos credentails have expired." msgstr "Vaša varovala Kerberos so potekla." -#: ../src/ka-applet.c:624 +#: ../src/ka-applet.c:645 #, c-format msgid "There was an error launching the preferences dialog: %s" msgstr "Prišlo je do napake med zagonom pogovornega okna možnosti: %s" -#: ../src/ka-applet.c:665 -#, c-format -msgid "" -"There was an error displaying %s:\n" -"%s" -msgstr "" -"Prišlo je do napake med prikazovanjem %s:\n" -"%s" - #. Translators: add the translators of your language here -#: ../src/ka-applet.c:701 +#: ../src/ka-applet.c:692 msgid "translator-credits" msgstr "" "Andrej Žnidaršič\n" "Matej Urbančič" -#. kdestroy -#: ../src/ka-applet.c:743 +#: ../src/ka-applet.c:737 msgid "Remove Credentials _Cache" msgstr "Odstrani _predpomnilnik varoval" #. Ticket dialog -#: ../src/ka-applet.c:753 +#: ../src/ka-applet.c:747 msgid "_List Tickets" msgstr "_Naštej vstopnice" @@ -1590,128 +1583,141 @@ msgstr "obvestilo veljavne vstopnice" msgid "Warning: running q-agent setuid on this system is dangerous\n" msgstr "Opozorilo: poganjanje q-agent setuid na tem sistemu je nevarno\n" -#: ../preferences/ka-preferences.c:345 -msgid "Choose Certificate" -msgstr "Izbor potrdila" - -#: ../preferences/ka-preferences.c:361 -msgid "X509 Certificates" -msgstr "X509 potrdila" +#: ../cc-panel/gnome-ka-panel.desktop.in.h:1 +msgid "Kerberos Authentication" +msgstr "Overitev Kerberos" -#: ../preferences/ka-preferences.c:365 -msgid "all files" -msgstr "vse datoteke" +#. Translators: those are keywords for the example control-center panel +#: ../cc-panel/gnome-ka-panel.desktop.in.h:3 +msgid "Kerberos;Authentication" +msgstr "Kerberos;Overitev" -#: ../preferences/krb5-auth-dialog-preferences.desktop.in.h:2 +#: ../cc-panel/gnome-ka-panel.desktop.in.h:4 msgid "Set your Kerberos network authentication preferences" msgstr "Nastavitev možnosti Kerberos overitve omrežja" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:1 +#: ../cc-panel/ka-panel.ui.h:1 msgid "Appearance" msgstr "Videz" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:2 +#: ../cc-panel/ka-panel.ui.h:2 msgid "Applet" msgstr "Aplet" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:3 +#: ../cc-panel/ka-panel.ui.h:3 msgid "Certificate and private key used for authentication" msgstr "Potrdilo in osebni ključ uporabljena za overitev" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:4 +#: ../cc-panel/ka-panel.ui.h:4 msgid "If checked, display the tray icon in the status bar" msgstr "Izbrana možnost določi prikaz ikone sistemske vrstice v vrstici stanja" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:5 +#: ../cc-panel/ka-panel.ui.h:5 msgid "If checked, request forwardable tickets" msgstr "Izbrana možnost določi zahtevo za uporabo prenosljivih vstopnic" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:6 +#: ../cc-panel/ka-panel.ui.h:6 msgid "If checked, request proxiable tickets" msgstr "Izbrana možnost omogoči zahtevo za posredovalno vstopnico" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:7 +#: ../cc-panel/ka-panel.ui.h:7 msgid "If checked, request renewable tickets" msgstr "Izbrana možnost določi zahtevo za uporabo obnovljivih vstopnic" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:8 +#: ../cc-panel/ka-panel.ui.h:8 msgid "If checked, use a security token (Smartcard) to authenticate." msgstr "Izbrana možnost omogoči zahtevo za uporabo Varnostne SmartCard za overjanje" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:9 +#: ../cc-panel/ka-panel.ui.h:9 msgid "Kerberos" msgstr "Kerberos" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:10 -msgid "Kerberos Authentication Configuration" -msgstr "Nastavitev overitve Kerberos" - -#: ../preferences/krb5-auth-dialog-preferences.xml.h:11 +#: ../cc-panel/ka-panel.ui.h:10 msgid "Kerberos User" msgstr "Uporabnik Kerberos" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:12 +#: ../cc-panel/ka-panel.ui.h:11 msgid "Kerberos principal:" msgstr "Kerberos ravnatelj:" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:13 +#: ../cc-panel/ka-panel.ui.h:12 msgid "Notifications" msgstr "Obvestila" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:14 +#: ../cc-panel/ka-panel.ui.h:13 msgid "PKINIT:" msgstr "PKINIT:" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:15 +#: ../cc-panel/ka-panel.ui.h:14 msgid "Requested Kerberos tickets should be:" msgstr "Zahtevane vstopnice Kerberos bi morale biti:" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:16 +#: ../cc-panel/ka-panel.ui.h:15 msgid "Send notification about ticket expiry that many minutes before it finally expires" msgstr "Pošiljanje obvestila o preteku vstopnice toliko minut pred končnim pretekom." -#: ../preferences/krb5-auth-dialog-preferences.xml.h:17 +#: ../cc-panel/ka-panel.ui.h:16 msgid "Show tray icon" msgstr "Pokaži ikono sistemske vrstice" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:18 +#: ../cc-panel/ka-panel.ui.h:17 msgid "Ticket Options" msgstr "Možnosti vstopnice" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:19 +#: ../cc-panel/ka-panel.ui.h:18 msgid "Use Smartcard" msgstr "Uporabi SmartCard" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:20 +#: ../cc-panel/ka-panel.ui.h:19 msgid "Userid:" msgstr "Uporabniški ID:" #. Used in combination: 'Warn x minutes before expiry' -#: ../preferences/krb5-auth-dialog-preferences.xml.h:22 +#: ../cc-panel/ka-panel.ui.h:21 msgid "Warn" msgstr "Opozori" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:23 +#: ../cc-panel/ka-panel.ui.h:22 msgid "X509 trust anchors:" msgstr "X509 zaupna sidra:" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:24 +#: ../cc-panel/ka-panel.ui.h:23 msgid "_Browse..." msgstr "_Prebrskaj ..." -#: ../preferences/krb5-auth-dialog-preferences.xml.h:25 +#: ../cc-panel/ka-panel.ui.h:24 msgid "forwardable" msgstr "prenosljiva" #. Used in combination: 'Warn x minutes before expiry' -#: ../preferences/krb5-auth-dialog-preferences.xml.h:27 +#: ../cc-panel/ka-panel.ui.h:26 msgid "minutes before expiry" msgstr "minut pred iztekom" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:28 +#: ../cc-panel/ka-panel.ui.h:27 msgid "proxiable" msgstr "posredovana" -#: ../preferences/krb5-auth-dialog-preferences.xml.h:29 +#: ../cc-panel/ka-panel.ui.h:28 msgid "renewable" -msgstr "obnovljiva"
\ No newline at end of file +msgstr "obnovljiva" + +#: ../cc-panel/cc-ka-panel.c:346 +msgid "Choose Certificate" +msgstr "Izbor potrdila" + +#: ../cc-panel/cc-ka-panel.c:362 +msgid "X509 Certificates" +msgstr "X509 potrdila" + +#: ../cc-panel/cc-ka-panel.c:366 +msgid "all files" +msgstr "vse datoteke" + +#~ msgid "" +#~ "There was an error displaying %s:\n" +#~ "%s" +#~ msgstr "" +#~ "Prišlo je do napake med prikazovanjem %s:\n" +#~ "%s" + @@ -3,14 +3,15 @@ # This file is distributed under the same license as the krb5-auth-dialog package. # wanderlust <wanderlust@ukr.net>, 2009. # -# wanderlust <wanderlust@ukr.net>, 2009. +# Maxim Dziumanenko <dziumanenko@gmail.com>, 2009. msgid "" msgstr "" "Project-Id-Version: krb5-auth-dialog master\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-02 15:49+0300\n" -"PO-Revision-Date: 2009-07-05 15:19+0300\n" -"Last-Translator: wanderlust <wanderlust@ukr.net>\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=krb5-" +"auth-dialog&component=general\n" +"POT-Creation-Date: 2010-10-05 13:11+0000\n" +"PO-Revision-Date: 2010-10-13 15:19+0300\n" +"Last-Translator: Maxim Dziumanenko <dziumanenko@gmail.com>\n" "Language-Team: ukrainian <Ukrainian <uk@li.org>>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,20 +32,20 @@ msgstr "Квиток на сервіс" msgid "_Renew Ticket" msgstr "Оновити _квиток" -#: ../src/krb5-auth-dialog.c:172 +#: ../src/ka-dialog.c:172 msgid "unknown error" msgstr "невідома помилка" -#: ../src/krb5-auth-dialog.c:329 +#: ../src/ka-dialog.c:333 msgid "Expired" msgstr "Вийшов термін" -#: ../src/krb5-auth-pwdialog.c:170 +#: ../src/ka-pwdialog.c:174 #, c-format msgid "Couldn't acquire kerberos ticket: '%s'" msgstr "Неможливо отримати квиток kerberos: '%s'" -#: ../src/krb5-auth-pwdialog.c:207 ../src/krb5-auth-applet.c:359 +#: ../src/ka-pwdialog.c:211 ../src/ka-applet.c:375 #, c-format msgid "Your credentials expire in %d minute" msgid_plural "Your credentials expire in %d minutes" @@ -52,31 +53,31 @@ msgstr[0] "Термін дії Вашого мандату закінчитьс msgstr[1] "Термін дії Вашого мандату закінчиться через %d хвилин(и)" msgstr[2] "Термін дії Вашого мандату закінчиться через %d хвилин(и)" -#: ../src/krb5-auth-pwdialog.c:212 ../src/krb5-auth-applet.c:364 +#: ../src/ka-pwdialog.c:216 ../src/ka-applet.c:380 msgid "Your credentials have expired" msgstr "Термін дії Вашого мандату закінчився" -#: ../src/krb5-auth-pwdialog.c:233 +#: ../src/ka-pwdialog.c:237 msgid "Please enter your Kerberos password:" msgstr "Введіть Ваш пароль Kerberos:" -#: ../src/krb5-auth-pwdialog.c:244 +#: ../src/ka-pwdialog.c:248 #, c-format msgid "Please enter the password for '%s':" msgstr "Будь-ласка, введіть пароль для '%s':" -#: ../src/krb5-auth-pwdialog.c:264 +#: ../src/ka-pwdialog.c:268 msgid "The password you entered is invalid" msgstr "Введений Вами пароль невірний" -#: ../src/krb5-auth-pwdialog.c:280 +#: ../src/ka-pwdialog.c:284 #, c-format msgid "%s Error" msgstr "Помилка %s" #. Translators: files from dummy-strings.c are *all* possible errors #. returned from Kerberos (since Kerberos itself doesn't handle i18n). If in -#. doubt please translate strings from files starting with krb5-auth +#. doubt please translate strings from files starting with ka- and krb5-auth- #. first since these are the ones the user will see in any case. #: ../src/dummy-strings.c:10 msgid "ASN.1 failed call to system time library" @@ -311,7 +312,7 @@ msgstr "Чужий квиток" #. krb5_err.et:krb5:KRB5KRB_AP_ERR_NOT_US #: ../src/dummy-strings.c:56 msgid "Ticket/authenticator don't match" -msgstr "Квиток та аутентифікатор не збігаються" +msgstr "Квиток та автентифікатор не збігаються" #. krb5_err.et:krb5:KRB5KRB_AP_ERR_BADMATCH #: ../src/dummy-strings.c:57 @@ -863,7 +864,7 @@ msgstr "" #. krb5_err.et:krb5:KRB5_INVALID_FLAGS #: ../src/dummy-strings.c:166 msgid "Request missing second ticket" -msgstr "Запит відсутьогоі другого квитка" +msgstr "Запит відсутнього другого квитка" #. krb5_err.et:krb5:KRB5_NO_2ND_TKT #: ../src/dummy-strings.c:167 @@ -1060,12 +1061,12 @@ msgstr "Невідома помилка getaddrinfo" #. krb5_err.et:krb5:KRB5_EAI_FAIL #: ../src/dummy-strings.c:204 msgid "no data available for host/domain name" -msgstr "Дані про ім'я хоста/домену відсутні" +msgstr "Дані про ім'я вузла/домену відсутні" #. krb5_err.et:krb5:KRB5_EAI_NODATA #: ../src/dummy-strings.c:205 msgid "host/domain name not found" -msgstr "Ім'я хоста/домену не знайдено" +msgstr "Ім'я вузла/домену не знайдено" #. krb5_err.et:krb5:KRB5_EAI_NONAME #: ../src/dummy-strings.c:206 @@ -1395,94 +1396,104 @@ msgstr "Погане магічне число для GSSAPI OID" msgid "Bad magic number for GSSAPI QUEUE" msgstr "Погане магічне число для GSSAPI QUEUE" -#. Translators: First number is hours, second number is minutes -#: ../src/krb5-auth-applet.c:355 +#: ../src/ka-applet.c:369 #, c-format msgid "Your credentials expire in %.2d:%.2dh" -msgstr "Термін дії Ваших мандатів завершиться через %.2d:%.2d год" +msgstr "Термін дії Ваших мандатів завершиться через %.2d:%.2d годин" -#: ../src/krb5-auth-applet.c:460 +#: ../src/ka-applet.c:500 msgid "Don't show me this again" msgstr "Не показувати знову" -#: ../src/krb5-auth-applet.c:497 +#: ../src/ka-applet.c:507 +#| msgid "_Renew Ticket" +msgid "Get Ticket" +msgstr "Отримати _квиток" + +#: ../src/ka-applet.c:551 msgid "Network credentials valid" msgstr "Дючі мережеві мандати" -#: ../src/krb5-auth-applet.c:498 +#: ../src/ka-applet.c:552 msgid "You've refreshed your Kerberos credentials." msgstr "Ви оновили власні мандати Kerberos." -#: ../src/krb5-auth-applet.c:511 +#: ../src/ka-applet.c:568 msgid "Network credentials expiring" msgstr "Термін дії мережевих мандатів закінчується" -#: ../src/krb5-auth-applet.c:526 +#: ../src/ka-applet.c:586 msgid "Network credentials expired" msgstr "Термін дії мережевих мандатів закінчився" -#: ../src/krb5-auth-applet.c:527 +#: ../src/ka-applet.c:587 msgid "Your Kerberos credentails have expired." msgstr "Термін дії Ваших мандатів Kerberos закінчився." -#: ../src/krb5-auth-applet.c:570 +#: ../src/ka-applet.c:631 #, c-format msgid "There was an error launching the preferences dialog: %s" -msgstr "Під час запуску діалогу парметрів виникла помилка: %s" +msgstr "Під час запуску діалогу параметрів виникла помилка: %s" -#: ../src/krb5-auth-applet.c:611 +#: ../src/ka-applet.c:671 #, c-format msgid "" "There was an error displaying %s:\n" "%s" msgstr "" -"При відображенні %s виникла помилка:\n" +"При показі %s виникла помилка:\n" "%s" #. Translators: add the translators of your language here -#: ../src/krb5-auth-applet.c:647 +#: ../src/ka-applet.c:708 msgid "translator-credits" -msgstr "wanderlust <wanderlust@ukr.net>" +msgstr "Максим Дзюманенко <dziumanenko@gmail.com>" +"wanderlust <wanderlust@ukr.net>" -#. kdestroy -#: ../src/krb5-auth-applet.c:689 +#: ../src/ka-applet.c:753 msgid "Remove Credentials _Cache" msgstr "Очистити _кеш мандатів" -#: ../src/krb5-auth-tools.c:45 +#. Ticket dialog +#: ../src/ka-applet.c:763 +#| msgid "Service Tickets" +msgid "_List Tickets" +msgstr "_Список квитів" + +#: ../src/ka-tools.c:45 #, c-format msgid "" "There was an error displaying help:\n" "%s" msgstr "" -"При відображенні довідки виникла помилка:\n" +"При показі довідки виникла помилка:\n" "%s" -#: ../src/krb5-auth-tickets.c:54 +#: ../src/ka-tickets.c:54 msgid "Principal" -msgstr "Головуючий" +msgstr "Голова" -#: ../src/krb5-auth-tickets.c:60 +#: ../src/ka-tickets.c:60 msgid "Start Time" msgstr "Час початку" -#: ../src/krb5-auth-tickets.c:66 +#: ../src/ka-tickets.c:66 msgid "End Time" msgstr "Час закінчення" -#: ../src/krb5-auth-tickets.c:72 +#: ../src/ka-tickets.c:72 msgid "Fwd" msgstr "Пересланий" -#: ../src/krb5-auth-tickets.c:78 +#: ../src/ka-tickets.c:78 msgid "Proxy" msgstr "Проксі" -#: ../src/krb5-auth-tickets.c:84 +#: ../src/ka-tickets.c:84 msgid "Renew" msgstr "Оновити" -#: ../src/krb5-auth-tickets.c:107 +#: ../src/ka-tickets.c:107 msgid "Error displaying service ticket information" msgstr "Помилка при показі інформації про квиток" @@ -1491,93 +1502,101 @@ msgid "Kerberos Network Authentication Dialog" msgstr "Діалогове вікно мережевої аутентифікації Kerberos" #: ../src/krb5-auth-dialog.schemas.in.h:1 +msgid "Enabled plugins" +msgstr "Увімкнені модулі" + +#: ../src/krb5-auth-dialog.schemas.in.h:2 msgid "Forwardable ticket" msgstr "Квиток перенаправлення" -#: ../src/krb5-auth-dialog.schemas.in.h:2 +#: ../src/krb5-auth-dialog.schemas.in.h:3 msgid "Kerberos principal" msgstr "Адміністратор доступу Kerberos" -#: ../src/krb5-auth-dialog.schemas.in.h:3 +#: ../src/krb5-auth-dialog.schemas.in.h:4 +msgid "List of plugins that should be loaded and activated on startup." +msgstr "Список модулів, які завантажуються при старті." + +#: ../src/krb5-auth-dialog.schemas.in.h:5 msgid "Notify user when ticket becomes valid" -msgstr "Попереджувати користувача, коли квиток стане діючим" +msgstr "Попереджувати користувача, коли квиток стане чинним" -#: ../src/krb5-auth-dialog.schemas.in.h:4 +#: ../src/krb5-auth-dialog.schemas.in.h:6 msgid "Notify user when ticket has expired" msgstr "Попереджувати користувача, коли завершився термін дії квитка" -#: ../src/krb5-auth-dialog.schemas.in.h:5 +#: ../src/krb5-auth-dialog.schemas.in.h:7 msgid "Notify user when ticket is about to expire" msgstr "Попереджувати користувача, коли завершується термін дії квитка" -#: ../src/krb5-auth-dialog.schemas.in.h:6 +#: ../src/krb5-auth-dialog.schemas.in.h:8 msgid "PKINIT CA certificates" msgstr "Сертифікати PKINIT CA" -#: ../src/krb5-auth-dialog.schemas.in.h:7 +#: ../src/krb5-auth-dialog.schemas.in.h:9 msgid "PKINIT identifier" msgstr "Ідентифікатор PKINIT" -#: ../src/krb5-auth-dialog.schemas.in.h:8 +#: ../src/krb5-auth-dialog.schemas.in.h:10 msgid "PKINIT trust anchors" msgstr "Довірчі прив'язки PKINIT" -#: ../src/krb5-auth-dialog.schemas.in.h:9 +#: ../src/krb5-auth-dialog.schemas.in.h:11 msgid "Prompt minutes before expiry" msgstr "Показувати час до завершення" -#: ../src/krb5-auth-dialog.schemas.in.h:10 +#: ../src/krb5-auth-dialog.schemas.in.h:12 msgid "Proxiable ticket" msgstr "Квиток може передаватися через проксі" -#: ../src/krb5-auth-dialog.schemas.in.h:11 +#: ../src/krb5-auth-dialog.schemas.in.h:13 msgid "Renewable ticket" msgstr "Квиток може відновлюватися" -#: ../src/krb5-auth-dialog.schemas.in.h:12 +#: ../src/krb5-auth-dialog.schemas.in.h:14 msgid "Requested tickets should be forwardable" msgstr "Задані квитки повинні перенаправлятися" -#: ../src/krb5-auth-dialog.schemas.in.h:13 +#: ../src/krb5-auth-dialog.schemas.in.h:15 msgid "Requested tickets should be proxiable" msgstr "Задані квитки повинні передаватися через проксі" -#: ../src/krb5-auth-dialog.schemas.in.h:14 +#: ../src/krb5-auth-dialog.schemas.in.h:16 msgid "Requested tickets should be renewable" msgstr "Задані квитки повинні відновлюватися" -#: ../src/krb5-auth-dialog.schemas.in.h:15 +#: ../src/krb5-auth-dialog.schemas.in.h:17 msgid "Show a trayicon in the status area of the panel" msgstr "Показувати значок на панелі у області статусу" -#: ../src/krb5-auth-dialog.schemas.in.h:16 +#: ../src/krb5-auth-dialog.schemas.in.h:18 msgid "Show trayicon" msgstr "Показувати значок" -#: ../src/krb5-auth-dialog.schemas.in.h:17 +#: ../src/krb5-auth-dialog.schemas.in.h:19 msgid "" "Start prompting/displaying notifications that many minutes before expiry" msgstr "Запустити повідомлення запиту/відображення про час завершення" -#: ../src/krb5-auth-dialog.schemas.in.h:18 +#: ../src/krb5-auth-dialog.schemas.in.h:20 msgid "The kerberos principal to acquire the ticket for" msgstr "Адміністратор доступу Kerberos отримує квиток для" -#: ../src/krb5-auth-dialog.schemas.in.h:19 +#: ../src/krb5-auth-dialog.schemas.in.h:21 msgid "The principal's public/private/certificate identifier when using PKINIT" msgstr "" "Загально доступний або ж приватний Ідентифікатор чи ідентифікатор " "сертифікату адміністратора доступу при використанні PKINIT" -#: ../src/krb5-auth-dialog.schemas.in.h:20 +#: ../src/krb5-auth-dialog.schemas.in.h:22 msgid "ticket expired notification" msgstr "Повідомлення про закінчений терміну дії квитка" -#: ../src/krb5-auth-dialog.schemas.in.h:21 +#: ../src/krb5-auth-dialog.schemas.in.h:23 msgid "ticket expiring notification" msgstr "Повідомлення про закінчення терміну дії квитка" -#: ../src/krb5-auth-dialog.schemas.in.h:22 +#: ../src/krb5-auth-dialog.schemas.in.h:24 msgid "valid ticket notification" msgstr "Повідомлення про дійсність квитка" @@ -1586,15 +1605,15 @@ msgstr "Повідомлення про дійсність квитка" msgid "Warning: running q-agent setuid on this system is dangerous\n" msgstr "Увага: використання на цій системі q-agent з setuid є небезпечним\n" -#: ../preferences/krb5-auth-dialog-preferences.c:345 +#: ../preferences/ka-preferences.c:345 msgid "Choose Certificate" msgstr "Оберіть сертифікат" -#: ../preferences/krb5-auth-dialog-preferences.c:361 +#: ../preferences/ka-preferences.c:361 msgid "X509 Certificates" msgstr "Сертифікат X509" -#: ../preferences/krb5-auth-dialog-preferences.c:365 +#: ../preferences/ka-preferences.c:365 msgid "all files" msgstr "усі файли" diff --git a/preferences/Makefile.am b/preferences/Makefile.am deleted file mode 100644 index 8a7187d..0000000 --- a/preferences/Makefile.am +++ /dev/null @@ -1,55 +0,0 @@ -NULL = - -bin_PROGRAMS = krb5-auth-dialog-preferences -man_MANS = krb5-auth-dialog-preferences.1 - -krb5_auth_dialog_preferences_SOURCES = \ - ka-preferences.c \ - $(top_srcdir)/src/ka-gconf-tools.c \ - $(top_srcdir)/src/ka-gconf-tools.h \ - $(top_srcdir)/src/ka-tools.c \ - $(top_srcdir)/src/ka-tools.h \ - $(NULL) - -krb5_auth_dialog_preferences_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -DKA_DATA_DIR=\""$(pkgdatadir)"\" \ - -DDATA_DIR=\""$(datadir)"\" \ - -DLOCALE_DIR=\""$(localedir)/"\" - $(AM_CPPFLAGS) - -krb5_auth_dialog_preferences_CFLAGS = \ - $(GTK_CFLAGS) \ - $(GCONF_CFLAGS) \ - $(WARN_CFLAGS) \ - $(AM_CFLAGS) - - -krb5_auth_dialog_preferences_LDADD = \ - $(GCONF_LIBS) \ - $(GTK_LIBS) \ - $(NULL) - -AM_CPPFLAGS = \ - $(DISABLE_DEPRECATED) \ - $(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.xml - -CLEANFILES = \ - $(desktop_DATA) \ - $(NULL) - -EXTRA_DIST = \ - $(desktop_in_files) \ - $(pkgdata_DATA) \ - krb5-auth-dialog-preferences.1.in \ - $(NULL) diff --git a/preferences/Makefile.in b/preferences/Makefile.in deleted file mode 100644 index a5e9542..0000000 --- a/preferences/Makefile.in +++ /dev/null @@ -1,828 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - -VPATH = @srcdir@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -bin_PROGRAMS = krb5-auth-dialog-preferences$(EXEEXT) -subdir = preferences -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/krb5-auth-dialog-preferences.1.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/m4/compiler-flags.m4 \ - $(top_srcdir)/m4/gnome-doc-utils.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = krb5-auth-dialog-preferences.1 -CONFIG_CLEAN_VPATH_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ - "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(pkgdatadir)" -PROGRAMS = $(bin_PROGRAMS) -am__objects_1 = -am_krb5_auth_dialog_preferences_OBJECTS = \ - krb5_auth_dialog_preferences-ka-preferences.$(OBJEXT) \ - krb5_auth_dialog_preferences-ka-gconf-tools.$(OBJEXT) \ - krb5_auth_dialog_preferences-ka-tools.$(OBJEXT) \ - $(am__objects_1) -krb5_auth_dialog_preferences_OBJECTS = \ - $(am_krb5_auth_dialog_preferences_OBJECTS) -am__DEPENDENCIES_1 = -krb5_auth_dialog_preferences_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) -am__v_lt_0 = --silent -krb5_auth_dialog_preferences_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ - $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ - $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_$(V)) -am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_$(V)) -am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(krb5_auth_dialog_preferences_SOURCES) -DIST_SOURCES = $(krb5_auth_dialog_preferences_SOURCES) -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -man1dir = $(mandir)/man1 -NROFF = nroff -MANS = $(man_MANS) -DATA = $(desktop_DATA) $(pkgdata_DATA) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -pkgdatadir = $(datadir)/krb5-auth-dialog -ACLOCAL = @ACLOCAL@ -ALL_LINGUAS = @ALL_LINGUAS@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COMPILER_FLAGS = @COMPILER_FLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DATADIRNAME = @DATADIRNAME@ -DBUS_CFLAGS = @DBUS_CFLAGS@ -DBUS_LIBS = @DBUS_LIBS@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ -DOC_USER_FORMATS = @DOC_USER_FORMATS@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GCONFTOOL = @GCONFTOOL@ -GCONF_CFLAGS = @GCONF_CFLAGS@ -GCONF_LIBS = @GCONF_LIBS@ -GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@ -GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@ -GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ -GIO_CFLAGS = @GIO_CFLAGS@ -GIO_LIBS = @GIO_LIBS@ -GMODULE_CFLAGS = @GMODULE_CFLAGS@ -GMODULE_LIBS = @GMODULE_LIBS@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GREP = @GREP@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_LIBS = @GTK_LIBS@ -HELP_DIR = @HELP_DIR@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INSTOBJEXT = @INSTOBJEXT@ -INTLLIBS = @INTLLIBS@ -INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ -INTLTOOL_MERGE = @INTLTOOL_MERGE@ -INTLTOOL_PERL = @INTLTOOL_PERL@ -INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ -KA_PLUGINS_DIR = @KA_PLUGINS_DIR@ -KRB5_CFLAGS = @KRB5_CFLAGS@ -KRB5_CONFIG = @KRB5_CONFIG@ -KRB5_LIBS = @KRB5_LIBS@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBCAP = @LIBCAP@ -LIBNOTIFY_CFLAGS = @LIBNOTIFY_CFLAGS@ -LIBNOTIFY_LIBS = @LIBNOTIFY_LIBS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -MSGFMT_OPTS = @MSGFMT_OPTS@ -MSGMERGE = @MSGMERGE@ -NETWORK_MANAGER_CFLAGS = @NETWORK_MANAGER_CFLAGS@ -NETWORK_MANAGER_LIBS = @NETWORK_MANAGER_LIBS@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OMF_DIR = @OMF_DIR@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PAM_LIBS = @PAM_LIBS@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -POFILES = @POFILES@ -POSUB = @POSUB@ -PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ -PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ -RANLIB = @RANLIB@ -SC_PKCS11 = @SC_PKCS11@ -SED = @SED@ -SETCAP = @SETCAP@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -WARN_CFLAGS = @WARN_CFLAGS@ -WARN_PYTHON_CFLAGS = @WARN_PYTHON_CFLAGS@ -XGETTEXT = @XGETTEXT@ -YACC = @YACC@ -YFLAGS = @YFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -check_interval = @check_interval@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ -mandir = @mandir@ -minimum_lifetime = @minimum_lifetime@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -NULL = -man_MANS = krb5-auth-dialog-preferences.1 -krb5_auth_dialog_preferences_SOURCES = \ - ka-preferences.c \ - $(top_srcdir)/src/ka-gconf-tools.c \ - $(top_srcdir)/src/ka-gconf-tools.h \ - $(top_srcdir)/src/ka-tools.c \ - $(top_srcdir)/src/ka-tools.h \ - $(NULL) - -krb5_auth_dialog_preferences_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -DKA_DATA_DIR=\""$(pkgdatadir)"\" \ - -DDATA_DIR=\""$(datadir)"\" \ - -DLOCALE_DIR=\""$(localedir)/"\" - -krb5_auth_dialog_preferences_CFLAGS = \ - $(GTK_CFLAGS) \ - $(GCONF_CFLAGS) \ - $(WARN_CFLAGS) \ - $(AM_CFLAGS) - -krb5_auth_dialog_preferences_LDADD = \ - $(GCONF_LIBS) \ - $(GTK_LIBS) \ - $(NULL) - -AM_CPPFLAGS = \ - $(DISABLE_DEPRECATED) \ - $(NULL) - -desktopdir = $(datadir)/applications -desktop_in_files = krb5-auth-dialog-preferences.desktop.in -desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) -pkgdata_DATA = \ - krb5-auth-dialog-preferences.xml - -CLEANFILES = \ - $(desktop_DATA) \ - $(NULL) - -EXTRA_DIST = \ - $(desktop_in_files) \ - $(pkgdata_DATA) \ - krb5-auth-dialog-preferences.1.in \ - $(NULL) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu preferences/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu preferences/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -krb5-auth-dialog-preferences.1: $(top_builddir)/config.status $(srcdir)/krb5-auth-dialog-preferences.1.in - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -krb5-auth-dialog-preferences$(EXEEXT): $(krb5_auth_dialog_preferences_OBJECTS) $(krb5_auth_dialog_preferences_DEPENDENCIES) - @rm -f krb5-auth-dialog-preferences$(EXEEXT) - $(AM_V_CCLD)$(krb5_auth_dialog_preferences_LINK) $(krb5_auth_dialog_preferences_OBJECTS) $(krb5_auth_dialog_preferences_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5_auth_dialog_preferences-ka-gconf-tools.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5_auth_dialog_preferences-ka-preferences.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5_auth_dialog_preferences-ka-tools.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -krb5_auth_dialog_preferences-ka-preferences.o: ka-preferences.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -MT krb5_auth_dialog_preferences-ka-preferences.o -MD -MP -MF $(DEPDIR)/krb5_auth_dialog_preferences-ka-preferences.Tpo -c -o krb5_auth_dialog_preferences-ka-preferences.o `test -f 'ka-preferences.c' || echo '$(srcdir)/'`ka-preferences.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/krb5_auth_dialog_preferences-ka-preferences.Tpo $(DEPDIR)/krb5_auth_dialog_preferences-ka-preferences.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ka-preferences.c' object='krb5_auth_dialog_preferences-ka-preferences.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -c -o krb5_auth_dialog_preferences-ka-preferences.o `test -f 'ka-preferences.c' || echo '$(srcdir)/'`ka-preferences.c - -krb5_auth_dialog_preferences-ka-preferences.obj: ka-preferences.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -MT krb5_auth_dialog_preferences-ka-preferences.obj -MD -MP -MF $(DEPDIR)/krb5_auth_dialog_preferences-ka-preferences.Tpo -c -o krb5_auth_dialog_preferences-ka-preferences.obj `if test -f 'ka-preferences.c'; then $(CYGPATH_W) 'ka-preferences.c'; else $(CYGPATH_W) '$(srcdir)/ka-preferences.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/krb5_auth_dialog_preferences-ka-preferences.Tpo $(DEPDIR)/krb5_auth_dialog_preferences-ka-preferences.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ka-preferences.c' object='krb5_auth_dialog_preferences-ka-preferences.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -c -o krb5_auth_dialog_preferences-ka-preferences.obj `if test -f 'ka-preferences.c'; then $(CYGPATH_W) 'ka-preferences.c'; else $(CYGPATH_W) '$(srcdir)/ka-preferences.c'; fi` - -krb5_auth_dialog_preferences-ka-gconf-tools.o: $(top_srcdir)/src/ka-gconf-tools.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -MT krb5_auth_dialog_preferences-ka-gconf-tools.o -MD -MP -MF $(DEPDIR)/krb5_auth_dialog_preferences-ka-gconf-tools.Tpo -c -o krb5_auth_dialog_preferences-ka-gconf-tools.o `test -f '$(top_srcdir)/src/ka-gconf-tools.c' || echo '$(srcdir)/'`$(top_srcdir)/src/ka-gconf-tools.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/krb5_auth_dialog_preferences-ka-gconf-tools.Tpo $(DEPDIR)/krb5_auth_dialog_preferences-ka-gconf-tools.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(top_srcdir)/src/ka-gconf-tools.c' object='krb5_auth_dialog_preferences-ka-gconf-tools.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -c -o krb5_auth_dialog_preferences-ka-gconf-tools.o `test -f '$(top_srcdir)/src/ka-gconf-tools.c' || echo '$(srcdir)/'`$(top_srcdir)/src/ka-gconf-tools.c - -krb5_auth_dialog_preferences-ka-gconf-tools.obj: $(top_srcdir)/src/ka-gconf-tools.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -MT krb5_auth_dialog_preferences-ka-gconf-tools.obj -MD -MP -MF $(DEPDIR)/krb5_auth_dialog_preferences-ka-gconf-tools.Tpo -c -o krb5_auth_dialog_preferences-ka-gconf-tools.obj `if test -f '$(top_srcdir)/src/ka-gconf-tools.c'; then $(CYGPATH_W) '$(top_srcdir)/src/ka-gconf-tools.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/ka-gconf-tools.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/krb5_auth_dialog_preferences-ka-gconf-tools.Tpo $(DEPDIR)/krb5_auth_dialog_preferences-ka-gconf-tools.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(top_srcdir)/src/ka-gconf-tools.c' object='krb5_auth_dialog_preferences-ka-gconf-tools.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -c -o krb5_auth_dialog_preferences-ka-gconf-tools.obj `if test -f '$(top_srcdir)/src/ka-gconf-tools.c'; then $(CYGPATH_W) '$(top_srcdir)/src/ka-gconf-tools.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/ka-gconf-tools.c'; fi` - -krb5_auth_dialog_preferences-ka-tools.o: $(top_srcdir)/src/ka-tools.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -MT krb5_auth_dialog_preferences-ka-tools.o -MD -MP -MF $(DEPDIR)/krb5_auth_dialog_preferences-ka-tools.Tpo -c -o krb5_auth_dialog_preferences-ka-tools.o `test -f '$(top_srcdir)/src/ka-tools.c' || echo '$(srcdir)/'`$(top_srcdir)/src/ka-tools.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/krb5_auth_dialog_preferences-ka-tools.Tpo $(DEPDIR)/krb5_auth_dialog_preferences-ka-tools.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(top_srcdir)/src/ka-tools.c' object='krb5_auth_dialog_preferences-ka-tools.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -c -o krb5_auth_dialog_preferences-ka-tools.o `test -f '$(top_srcdir)/src/ka-tools.c' || echo '$(srcdir)/'`$(top_srcdir)/src/ka-tools.c - -krb5_auth_dialog_preferences-ka-tools.obj: $(top_srcdir)/src/ka-tools.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -MT krb5_auth_dialog_preferences-ka-tools.obj -MD -MP -MF $(DEPDIR)/krb5_auth_dialog_preferences-ka-tools.Tpo -c -o krb5_auth_dialog_preferences-ka-tools.obj `if test -f '$(top_srcdir)/src/ka-tools.c'; then $(CYGPATH_W) '$(top_srcdir)/src/ka-tools.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/ka-tools.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/krb5_auth_dialog_preferences-ka-tools.Tpo $(DEPDIR)/krb5_auth_dialog_preferences-ka-tools.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(top_srcdir)/src/ka-tools.c' object='krb5_auth_dialog_preferences-ka-tools.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_preferences_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_preferences_CFLAGS) $(CFLAGS) -c -o krb5_auth_dialog_preferences-ka-tools.obj `if test -f '$(top_srcdir)/src/ka-tools.c'; then $(CYGPATH_W) '$(top_srcdir)/src/ka-tools.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/src/ka-tools.c'; fi` - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-man1: $(man_MANS) - @$(NORMAL_INSTALL) - test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" - @list=''; test -n "$(man1dir)" || exit 0; \ - { for i in $$list; do echo "$$i"; done; \ - l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.1[a-z]*$$/p'; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ - done; } - -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man1dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.1[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - test -z "$$files" || { \ - echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } -install-desktopDATA: $(desktop_DATA) - @$(NORMAL_INSTALL) - test -z "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)" - @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \ - done - -uninstall-desktopDATA: - @$(NORMAL_UNINSTALL) - @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(desktopdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(desktopdir)" && rm -f $$files -install-pkgdataDATA: $(pkgdata_DATA) - @$(NORMAL_INSTALL) - test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" - @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ - done - -uninstall-pkgdataDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @list='$(MANS)'; if test -n "$$list"; then \ - list=`for p in $$list; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ - if test -n "$$list" && \ - grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ - echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ - grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ - echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ - echo " typically \`make maintainer-clean' will remove them" >&2; \ - exit 1; \ - else :; fi; \ - else :; fi - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) -installdirs: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(pkgdatadir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-desktopDATA install-man install-pkgdataDATA - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-binPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: install-man1 - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-binPROGRAMS uninstall-desktopDATA \ - uninstall-man uninstall-pkgdataDATA - -uninstall-man: uninstall-man1 - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-libtool ctags distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am \ - install-desktopDATA install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-man1 install-pdf \ - install-pdf-am install-pkgdataDATA install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-binPROGRAMS uninstall-desktopDATA uninstall-man \ - uninstall-man1 uninstall-pkgdataDATA - - $(AM_CPPFLAGS) - -@INTLTOOL_DESKTOP_RULE@ - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/preferences/ka-preferences.c b/preferences/ka-preferences.c deleted file mode 100644 index e408dac..0000000 --- a/preferences/ka-preferences.c +++ /dev/null @@ -1,843 +0,0 @@ -/* - * Copyright (C) 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, 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. - * - * Author: - * Guido Guenther <agx@sigxcpu.org> - * - * based on the vino capplet which is: - * - * Copyright (C) 2003 Sun Microsystems, Inc. - * Copyright (C) 2006 Jonh Wendell <wendell@bani.com.br> - * - * Authors: - * Mark McLoughlin <mark@skynet.ie> - * Jonh Wendell <wendell@bani.com.br> - */ - -#include "config.h" - -#include <gtk/gtk.h> -#include <glib/gi18n.h> - -#include "ka-gconf-tools.h" -#include "ka-tools.h" - -#define PKINIT_SMARTCARD "PKCS11:" SC_PKCS11 -#define PKINIT_FILE "FILE:" - -#define N_LISTENERS 8 - -typedef struct { - GtkBuilder *xml; - GConfClient *client; - - GtkWidget *dialog; - GtkWidget *principal_entry; - GtkWidget *pkuserid_entry; - GtkWidget *pkuserid_button; - GtkWidget *smartcard_toggle; - GtkWidget *pkanchors_entry; - GtkWidget *pkanchors_button; - 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 = GTK_WIDGET(gtk_builder_get_object (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 = GTK_WIDGET(gtk_builder_get_object (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_pkanchors_notify (GConfClient *client G_GNUC_UNUSED, - guint cnx_id G_GNUC_UNUSED, - GConfEntry *entry, - KaPreferencesDialog *dialog) -{ - const char *pkanchors; - - if (!entry->value || entry->value->type != GCONF_VALUE_STRING) - return; - - pkanchors = gconf_value_get_string (entry->value); - - if (!pkanchors || !strlen(pkanchors)) - gtk_entry_set_text (GTK_ENTRY (dialog->pkanchors_entry), ""); - else { - const char *old_pkanchors; - - old_pkanchors = gtk_entry_get_text (GTK_ENTRY (dialog->pkanchors_entry)); - if (!old_pkanchors || (old_pkanchors && strcmp (old_pkanchors, pkanchors))) - gtk_entry_set_text (GTK_ENTRY (dialog->pkanchors_entry), pkanchors); - } -} - - -static void -ka_preferences_dialog_pkanchors_changed (GtkEntry *entry, - KaPreferencesDialog *dialog) -{ - const char *pkanchors; - - pkanchors = gtk_entry_get_text (entry); - - if (!pkanchors || !strlen(pkanchors)) - gconf_client_unset (dialog->client, KA_GCONF_KEY_PK_ANCHORS, NULL); - else - gconf_client_set_string (dialog->client, KA_GCONF_KEY_PK_ANCHORS, pkanchors, NULL); -} - - -static void -ka_preferences_dialog_setup_pkanchors_entry (KaPreferencesDialog *dialog) -{ - char *pkanchors = NULL; - - dialog->pkanchors_entry = GTK_WIDGET(gtk_builder_get_object (dialog->xml, "pkanchors_entry")); - g_assert (dialog->pkanchors_entry != NULL); - - if (!ka_gconf_get_string (dialog->client, KA_GCONF_KEY_PK_ANCHORS, &pkanchors)) - g_warning ("Getting pkanchors failed"); - - if (pkanchors && strlen(pkanchors)) - gtk_entry_set_text (GTK_ENTRY (dialog->pkanchors_entry), pkanchors); - if (pkanchors) - g_free (pkanchors); - - g_signal_connect (dialog->pkanchors_entry, "changed", - G_CALLBACK (ka_preferences_dialog_pkanchors_changed), dialog); - if (!gconf_client_key_is_writable (dialog->client, KA_GCONF_KEY_PK_ANCHORS, NULL)) { - gtk_widget_set_sensitive (dialog->pkanchors_entry, FALSE); - } - - dialog->listeners [dialog->n_listeners] = gconf_client_notify_add (dialog->client, - KA_GCONF_KEY_PK_ANCHORS, - (GConfClientNotifyFunc) ka_preferences_pkanchors_notify, - dialog, NULL, NULL); - dialog->n_listeners++; -} - - -static void -ka_preferences_toggle_pkuserid_entry (gboolean state, KaPreferencesDialog *dialog) -{ - gtk_widget_set_sensitive (dialog->pkuserid_entry, state); - gtk_widget_set_sensitive (dialog->pkuserid_button, state); -} - - -static void -ka_preferences_dialog_smartcard_toggled (GtkToggleButton *toggle, - KaPreferencesDialog *dialog) -{ - gboolean smartcard = gtk_toggle_button_get_active (toggle); - static gchar *old_path = NULL; - - if (smartcard) { - const char *path; - - path = gtk_entry_get_text (GTK_ENTRY(dialog->pkuserid_entry)); - if (g_strcmp0 (path, PKINIT_SMARTCARD)) { - g_free (old_path); - old_path = g_strdup (path); - } - ka_preferences_toggle_pkuserid_entry (FALSE, dialog); - gconf_client_set_string (dialog->client, KA_GCONF_KEY_PK_USERID, PKINIT_SMARTCARD, NULL); - } else { - ka_preferences_toggle_pkuserid_entry (TRUE, dialog); - if (old_path) - gconf_client_set_string (dialog->client, KA_GCONF_KEY_PK_USERID, old_path, NULL); - else - gconf_client_unset (dialog->client, KA_GCONF_KEY_PK_USERID, NULL); - } -} - - -static void -ka_preferences_dialog_setup_smartcard_toggle(KaPreferencesDialog *dialog) -{ - char *pkuserid = NULL; - - dialog->smartcard_toggle = GTK_WIDGET(gtk_builder_get_object (dialog->xml, "smartcard_toggle")); - g_assert (dialog->smartcard_toggle != NULL); - - if (!ka_gconf_get_string (dialog->client, KA_GCONF_KEY_PK_USERID, &pkuserid)) - g_warning ("Getting pkanchors failed"); - - g_signal_connect (dialog->smartcard_toggle, "toggled", - G_CALLBACK (ka_preferences_dialog_smartcard_toggled), dialog); - - if (!g_strcmp0 (pkuserid, PKINIT_SMARTCARD)) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->smartcard_toggle), TRUE); - else - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->smartcard_toggle), FALSE); - - if (pkuserid) - g_free (pkuserid); -} - - -static void -ka_preferences_dialog_browse_certs (KaPreferencesDialog *dialog, GtkEntry *entry) -{ - GtkWidget *filechooser; - GtkFileFilter *cert_filter, *all_filter; - gchar *filename = NULL; - const gchar *current; - gint ret; - - filechooser = gtk_file_chooser_dialog_new(_("Choose Certificate"), - GTK_WINDOW(dialog->dialog), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, - NULL); - - current = gtk_entry_get_text (entry); - if (current && g_str_has_prefix (current, PKINIT_FILE) && - strlen(current) > strlen (PKINIT_FILE)) { - gtk_file_chooser_select_filename (GTK_FILE_CHOOSER(filechooser), - (const gchar*)¤t[strlen(PKINIT_FILE)]); - } - - cert_filter = g_object_ref_sink (gtk_file_filter_new ()); - gtk_file_filter_add_mime_type (cert_filter, "application/x-x509-ca-cert"); - gtk_file_filter_set_name (cert_filter, _("X509 Certificates")); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (filechooser), cert_filter); - all_filter = g_object_ref_sink (gtk_file_filter_new ()); - gtk_file_filter_add_pattern (all_filter, "*"); - gtk_file_filter_set_name (all_filter, _("all files")); - gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (filechooser), all_filter); - - ret = gtk_dialog_run (GTK_DIALOG(filechooser)); - if (ret == GTK_RESPONSE_ACCEPT) - filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(filechooser)); - gtk_widget_destroy (GTK_WIDGET(filechooser)); - - if (filename) { - gchar *cert = g_strconcat( PKINIT_FILE, filename, NULL); - gtk_entry_set_text (entry, cert); - g_free (filename); - g_free (cert); - } - g_object_unref (cert_filter); - g_object_unref (all_filter); -} - -static void -ka_preferences_dialog_browse_pkuserids (GtkButton *button G_GNUC_UNUSED, - KaPreferencesDialog *dialog) -{ - ka_preferences_dialog_browse_certs (dialog, - GTK_ENTRY(dialog->pkuserid_entry)); -} - -static void -ka_preferences_dialog_browse_pkanchors(GtkButton *button G_GNUC_UNUSED, - KaPreferencesDialog *dialog) -{ - ka_preferences_dialog_browse_certs (dialog, - GTK_ENTRY(dialog->pkanchors_entry)); -} - -static void -ka_preferences_dialog_setup_pkuserid_button (KaPreferencesDialog *dialog) -{ - dialog->pkuserid_button = GTK_WIDGET(gtk_builder_get_object (dialog->xml, "pkuserid_button")); - g_assert (dialog->pkuserid_button != NULL); - - g_signal_connect (dialog->pkuserid_button, "clicked", - G_CALLBACK (ka_preferences_dialog_browse_pkuserids), dialog); - -} - -static void -ka_preferences_dialog_setup_pkanchors_button (KaPreferencesDialog *dialog) -{ - dialog->pkanchors_button = GTK_WIDGET(gtk_builder_get_object (dialog->xml, "pkanchors_button")); - g_assert (dialog->pkanchors_button != NULL); - - g_signal_connect (dialog->pkanchors_button, "clicked", - G_CALLBACK (ka_preferences_dialog_browse_pkanchors), dialog); - -} - - -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 = GTK_WIDGET(gtk_builder_get_object (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 = GTK_WIDGET(gtk_builder_get_object (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 = GTK_WIDGET(gtk_builder_get_object (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 = GTK_WIDGET(gtk_builder_get_object (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 = GTK_WIDGET(gtk_builder_get_object (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) -{ - if (response != GTK_RESPONSE_HELP) { - gtk_widget_destroy (widget); - return; - } - - ka_show_help (gtk_window_get_screen (GTK_WINDOW (dialog->dialog)), - "#preferences", GTK_WINDOW(dialog->dialog)); -} - - -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) -{ - GError *error = NULL; - gboolean ret; - - dialog->xml = gtk_builder_new (); - - ret = gtk_builder_add_from_file(dialog->xml, KA_DATA_DIR G_DIR_SEPARATOR_S - PACKAGE "-preferences.xml", &error); - if (!ret) { - g_assert (error); - g_assert (error->message); - g_error ("Failed to load UI XML: %s", error->message); - } - - dialog->dialog = GTK_WIDGET(gtk_builder_get_object (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_pkuserid_button (dialog); - ka_preferences_dialog_setup_smartcard_toggle (dialog); - ka_preferences_dialog_setup_pkanchors_entry(dialog); - ka_preferences_dialog_setup_pkanchors_button (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_clear_error (&error); - return 1; - } - textdomain (PACKAGE); - bind_textdomain_codeset (PACKAGE, "UTF-8"); - bindtextdomain (PACKAGE, LOCALE_DIR); - - gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), - DATA_DIR G_DIR_SEPARATOR_S "icons"); - - ka_preferences_dialog_init(&dialog); - gtk_main (); - ka_preferences_dialog_finalize(&dialog); - return 0; -} diff --git a/preferences/krb5-auth-dialog-preferences.1.in b/preferences/krb5-auth-dialog-preferences.1.in deleted file mode 100644 index 84a95d9..0000000 --- a/preferences/krb5-auth-dialog-preferences.1.in +++ /dev/null @@ -1,22 +0,0 @@ -.TH krb5-auth-dialog-preferences 1 2009/09/29 "GNOME" "System Administrator's Manual" - -.SH NAME -krb5-auth-dialog-preferences \- krb5-auth-dialog preferences - -.SH SYNOPSIS -.B krb5-auth-dialog-preferences - -.SH DESCRIPTION -Set preferences for krb5-auth-dialog such as principal to use, PKINIT and -ticket flags. - -.SH "SEE ALSO" -.BR krb5-auth-dialog (1) - -.SH BUGS -Probably, but let's hope not. If you find any, please file them in the -bug database at http://bugzilla.gnome.org/ against the -"krb5-auth-dialog" component. - -.SH AUTHORS -Guido Günther <agx@sigxcpu.org> diff --git a/preferences/krb5-auth-dialog-preferences.desktop.in b/preferences/krb5-auth-dialog-preferences.desktop.in deleted file mode 100644 index 0be978a..0000000 --- a/preferences/krb5-auth-dialog-preferences.desktop.in +++ /dev/null @@ -1,13 +0,0 @@ -[Desktop Entry] -_Name=Network Authentication -_Comment=Set your Kerberos network authentication preferences -Exec=krb5-auth-dialog-preferences -Icon=krb-valid-ticket -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 -X-GNOME-Bugzilla-Component=general diff --git a/preferences/krb5-auth-dialog-preferences.xml b/preferences/krb5-auth-dialog-preferences.xml deleted file mode 100644 index 61e99a9..0000000 --- a/preferences/krb5-auth-dialog-preferences.xml +++ /dev/null @@ -1,721 +0,0 @@ -<?xml version="1.0"?> -<interface> - <requires lib="gtk+" version="2.16"/> - <!-- interface-naming-policy toplevel-contextual --> - <object class="GtkDialog" id="krb5_auth_dialog_prefs"> - <property name="border_width">5</property> - <property name="title" translatable="yes">Kerberos Authentication Configuration</property> - <property name="window_position">center-on-parent</property> - <property name="icon_name">krb-valid-ticket</property> - <property name="type_hint">dialog</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <object class="GtkVBox" id="dialog-vbox1"> - <property name="visible">True</property> - <property name="spacing">2</property> - <child> - <object class="GtkNotebook" id="notebook1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <child> - <object class="GtkVBox" id="vbox1"> - <property name="visible">True</property> - <property name="border_width">12</property> - <property name="spacing">18</property> - <child> - <object class="GtkVBox" id="vbox2"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <object class="GtkLabel" id="label4"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Kerberos User</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox1"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <object class="GtkImage" id="access"> - <property name="visible">True</property> - <property name="yalign">0</property> - <property name="icon_name">krb-valid-ticket</property> - <property name="icon-size">6</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkVBox" id="vbox5"> - <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <object class="GtkFrame" id="frame4"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <object class="GtkAlignment" id="alignment4"> - <property name="visible">True</property> - <property name="left_padding">12</property> - <child> - <object class="GtkEntry" id="principal_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="activates_default">True</property> - </object> - </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="label3"> - <property name="visible">True</property> - <property name="label" translatable="yes">Kerberos principal:</property> - <property name="use_markup">True</property> - </object> - </child> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="frame1"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <object class="GtkAlignment" id="alignment1"> - <property name="visible">True</property> - <property name="left_padding">12</property> - <child> - <object class="GtkVBox" id="vbox6"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkFrame" id="frame2"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <object class="GtkAlignment" id="alignment2"> - <property name="visible">True</property> - <property name="left_padding">24</property> - <child> - <object class="GtkVBox" id="vbox11"> - <property name="visible">True</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkCheckButton" id="smartcard_toggle"> - <property name="label" translatable="yes">Use Smartcard</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="tooltip_text" translatable="yes">If checked, use a security token (Smartcard) to authenticate.</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox13"> - <property name="visible">True</property> - <child> - <object class="GtkEntry" id="pkuserid_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip_text" translatable="yes">Certificate and private key used for authentication</property> - <property name="activates_default">True</property> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkButton" id="pkuserid_button"> - <property name="label" translatable="yes">_Browse...</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_underline">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="label21"> - <property name="visible">True</property> - <property name="label" translatable="yes">Userid:</property> - <property name="use_markup">True</property> - </object> - </child> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="frame3"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <object class="GtkAlignment" id="alignment3"> - <property name="visible">True</property> - <property name="left_padding">24</property> - <child> - <object class="GtkHBox" id="hbox6"> - <property name="visible">True</property> - <child> - <object class="GtkEntry" id="pkanchors_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="activates_default">True</property> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkButton" id="pkanchors_button"> - <property name="label" translatable="yes">_Browse...</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_underline">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="label22"> - <property name="visible">True</property> - <property name="label" translatable="yes">X509 trust anchors:</property> - <property name="use_markup">True</property> - </object> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="fram1"> - <property name="visible">True</property> - <property name="label" translatable="yes">PKINIT:</property> - </object> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkVBox" id="vbox3"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <object class="GtkLabel" id="label5"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Ticket Options</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - <packing> - <property name="expand">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox2"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <object class="GtkImage" id="image1"> - <property name="visible">True</property> - <property name="yalign">0</property> - <property name="icon_name">system-lock-screen</property> - <property name="icon-size">6</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkVBox" id="vbox4"> - <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <object class="GtkLabel" id="label10"> - <property name="visible">True</property> - <property name="label" translatable="yes">Requested Kerberos tickets should be:</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox3"> - <property name="visible">True</property> - <child> - <object class="GtkLabel" id="label11"> - <property name="visible">True</property> - <property name="label"> </property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="forwardable_toggle"> - <property name="label" translatable="yes">forwardable</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="tooltip_text" translatable="yes">If checked, request forwardable tickets</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox4"> - <property name="visible">True</property> - <child> - <object class="GtkLabel" id="label12"> - <property name="visible">True</property> - <property name="label"> </property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="renewable_toggle"> - <property name="label" translatable="yes">renewable</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="tooltip_text" translatable="yes">If checked, request renewable tickets</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox11"> - <property name="visible">True</property> - <child> - <object class="GtkLabel" id="label19"> - <property name="visible">True</property> - <property name="label"> </property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="proxiable_toggle"> - <property name="label" translatable="yes">proxiable</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="tooltip_text" translatable="yes">If checked, request proxiable tickets</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">3</property> - </packing> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - </child> - <child type="tab"> - <object class="GtkLabel" id="label1"> - <property name="visible">True</property> - <property name="label" translatable="yes">Kerberos</property> - </object> - <packing> - <property name="tab_fill">False</property> - </packing> - </child> - <child> - <object class="GtkVBox" id="vbox9"> - <property name="visible">True</property> - <property name="border_width">12</property> - <property name="spacing">18</property> - <child> - <object class="GtkVBox" id="vbox8"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <object class="GtkLabel" id="label17"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Notifications</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox9"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <object 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> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox8"> - <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <object class="GtkLabel" id="label14"> - <property name="visible">True</property> - <property name="label"> </property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label15"> - <property name="visible">True</property> - <property name="label" translatable="yes" comments="Used in combination: 'Warn x minutes before expiry'">Warn</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkSpinButton" id="prompt_mins_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="tooltip_text" translatable="yes">Send notification about ticket expiry that many minutes before it finally expires</property> - <property name="invisible_char">●</property> - <property name="adjustment">adjustment1</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label16"> - <property name="visible">True</property> - <property name="label" translatable="yes" comments="Used in combination: 'Warn x minutes before expiry'">minutes before expiry</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkVBox" id="vbox10"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <object class="GtkLabel" id="label18"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Appearance</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkHBox" id="hbox10"> - <property name="visible">True</property> - <property name="spacing">12</property> - <child> - <object 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> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkVBox" id="vbox7"> - <property name="visible">True</property> - <child> - <object class="GtkHBox" id="hbox7"> - <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <object class="GtkLabel" id="label13"> - <property name="visible">True</property> - <property name="label"> </property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkCheckButton" id="trayicon_toggle"> - <property name="label" translatable="yes">Show tray icon</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="tooltip_text" translatable="yes">If checked, display the tray icon in the status bar</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">0</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - <child type="tab"> - <object class="GtkLabel" id="label2"> - <property name="visible">True</property> - <property name="label" translatable="yes">Applet</property> - </object> - <packing> - <property name="position">1</property> - <property name="tab_fill">False</property> - </packing> - </child> - </object> - <packing> - <property name="position">1</property> - </packing> - </child> - <child internal-child="action_area"> - <object class="GtkHButtonBox" id="dialog-action_area1"> - <property name="visible">True</property> - <property name="layout_style">end</property> - <child> - <object class="GtkButton" id="button2"> - <property name="label">gtk-help</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_stock">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkButton" id="button1"> - <property name="label">gtk-close</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="receives_default">True</property> - <property name="use_stock">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="pack_type">end</property> - <property name="position">0</property> - </packing> - </child> - </object> - </child> - <action-widgets> - <action-widget response="-11">button2</action-widget> - <action-widget response="0">button1</action-widget> - </action-widgets> - </object> - <object class="GtkAdjustment" id="adjustment1"> - <property name="upper">1000</property> - <property name="step_increment">1</property> - <property name="page_increment">10</property> - <property name="page_size">10</property> - </object> -</interface> diff --git a/secmem/Makefile.in b/secmem/Makefile.in index e86541b..d67a12f 100644 --- a/secmem/Makefile.in +++ b/secmem/Makefile.in @@ -123,6 +123,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -210,6 +212,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ diff --git a/src/Makefile.am b/src/Makefile.am index 591c69f..1c89d31 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -8,6 +8,10 @@ autostart_in_files = krb5-auth-dialog.desktop.in autostart_DATA = $(autostart_in_files:.desktop.in=.desktop) @INTLTOOL_DESKTOP_RULE@ +desktopdir = $(datadir)/applications +desktop_in_files = krb5-auth-dialog.desktop.in +desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) + schemadir = $(GCONF_SCHEMA_FILE_DIR) schema_in_files = krb5-auth-dialog.schemas.in schema_DATA = $(schema_in_files:.schemas.in=.schemas) @@ -44,11 +48,12 @@ krb5_auth_dialog_SOURCES = \ ka-plugin-loader.h \ ka-closures.h \ ka-closures.c \ + ka-entry-buffer.h \ + ka-entry-buffer.c \ dummy-strings.c \ $(NULL) krb5_auth_dialog_CPPFLAGS = \ - -I$(top_srcdir)/gtksecentry \ -I$(top_srcdir)/secmem \ -DKA_DATA_DIR=\""$(pkgdatadir)"\" \ -DDATA_DIR=\""$(datadir)"\" \ @@ -71,7 +76,6 @@ krb5_auth_dialog_CFLAGS = \ $(NULL) krb5_auth_dialog_LDADD = \ - $(top_builddir)/gtksecentry/libgtksecentry.a \ $(top_builddir)/secmem/libsecmem.a \ $(NETWORK_MANAGER_LIBS) \ $(LIBCAP) \ @@ -95,7 +99,6 @@ ka-dbus-glue.h: $(srcdir)/ka-dbus.xml $< > $@ AM_CPPFLAGS = \ - -I $(top_srcdir)/gtksecentry/ \ -I $(top_srcdir)/secmem/ \ $(DISABLE_DEPRECATED) \ $(NULL) diff --git a/src/Makefile.in b/src/Makefile.in index 0162189..612e7c4 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -49,8 +49,9 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = krb5-auth-dialog.1 CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ - "$(DESTDIR)$(autostartdir)" "$(DESTDIR)$(pkgdatadir)" \ - "$(DESTDIR)$(schemadir)" "$(DESTDIR)$(servicedir)" + "$(DESTDIR)$(autostartdir)" "$(DESTDIR)$(desktopdir)" \ + "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(schemadir)" \ + "$(DESTDIR)$(servicedir)" PROGRAMS = $(bin_PROGRAMS) am__objects_1 = am_krb5_auth_dialog_OBJECTS = krb5_auth_dialog-ka-dialog.$(OBJEXT) \ @@ -64,17 +65,16 @@ am_krb5_auth_dialog_OBJECTS = krb5_auth_dialog-ka-dialog.$(OBJEXT) \ krb5_auth_dialog-ka-plugin.$(OBJEXT) \ krb5_auth_dialog-ka-plugin-loader.$(OBJEXT) \ krb5_auth_dialog-ka-closures.$(OBJEXT) \ + krb5_auth_dialog-ka-entry-buffer.$(OBJEXT) \ krb5_auth_dialog-dummy-strings.$(OBJEXT) $(am__objects_1) krb5_auth_dialog_OBJECTS = $(am_krb5_auth_dialog_OBJECTS) am__DEPENDENCIES_1 = -krb5_auth_dialog_DEPENDENCIES = \ - $(top_builddir)/gtksecentry/libgtksecentry.a \ - $(top_builddir)/secmem/libsecmem.a $(am__DEPENDENCIES_1) \ +krb5_auth_dialog_DEPENDENCIES = $(top_builddir)/secmem/libsecmem.a \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent @@ -134,8 +134,8 @@ am__base_list = \ man1dir = $(mandir)/man1 NROFF = nroff MANS = $(man_MANS) -DATA = $(autostart_DATA) $(pkgdata_DATA) $(schema_DATA) \ - $(service_DATA) +DATA = $(autostart_DATA) $(desktop_DATA) $(pkgdata_DATA) \ + $(schema_DATA) $(service_DATA) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -155,6 +155,8 @@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ COMPILER_FLAGS = @COMPILER_FLAGS@ +CONTROL_CENTER_CFLAGS = @CONTROL_CENTER_CFLAGS@ +CONTROL_CENTER_LIBS = @CONTROL_CENTER_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ @@ -242,6 +244,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PAM_LIBS = @PAM_LIBS@ +PANELS_DIR = @PANELS_DIR@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ @@ -323,6 +326,9 @@ man_MANS = krb5-auth-dialog.1 autostartdir = $(sysconfdir)/xdg/autostart autostart_in_files = krb5-auth-dialog.desktop.in autostart_DATA = $(autostart_in_files:.desktop.in=.desktop) +desktopdir = $(datadir)/applications +desktop_in_files = krb5-auth-dialog.desktop.in +desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) schemadir = $(GCONF_SCHEMA_FILE_DIR) schema_in_files = krb5-auth-dialog.schemas.in schema_DATA = $(schema_in_files:.schemas.in=.schemas) @@ -353,11 +359,12 @@ krb5_auth_dialog_SOURCES = \ ka-plugin-loader.h \ ka-closures.h \ ka-closures.c \ + ka-entry-buffer.h \ + ka-entry-buffer.c \ dummy-strings.c \ $(NULL) krb5_auth_dialog_CPPFLAGS = \ - -I$(top_srcdir)/gtksecentry \ -I$(top_srcdir)/secmem \ -DKA_DATA_DIR=\""$(pkgdatadir)"\" \ -DDATA_DIR=\""$(datadir)"\" \ @@ -380,7 +387,6 @@ krb5_auth_dialog_CFLAGS = \ $(NULL) krb5_auth_dialog_LDADD = \ - $(top_builddir)/gtksecentry/libgtksecentry.a \ $(top_builddir)/secmem/libsecmem.a \ $(NETWORK_MANAGER_LIBS) \ $(LIBCAP) \ @@ -398,7 +404,6 @@ BUILT_SOURCES = \ $(NULL) AM_CPPFLAGS = \ - -I $(top_srcdir)/gtksecentry/ \ -I $(top_srcdir)/secmem/ \ $(DISABLE_DEPRECATED) \ $(NULL) @@ -517,6 +522,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5_auth_dialog-ka-closures.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5_auth_dialog-ka-dbus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5_auth_dialog-ka-dialog.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5_auth_dialog-ka-entry-buffer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5_auth_dialog-ka-gconf-tools.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5_auth_dialog-ka-gconf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/krb5_auth_dialog-ka-plugin-loader.Po@am__quote@ @@ -725,6 +731,22 @@ krb5_auth_dialog-ka-closures.obj: ka-closures.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_CFLAGS) $(CFLAGS) -c -o krb5_auth_dialog-ka-closures.obj `if test -f 'ka-closures.c'; then $(CYGPATH_W) 'ka-closures.c'; else $(CYGPATH_W) '$(srcdir)/ka-closures.c'; fi` +krb5_auth_dialog-ka-entry-buffer.o: ka-entry-buffer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_CFLAGS) $(CFLAGS) -MT krb5_auth_dialog-ka-entry-buffer.o -MD -MP -MF $(DEPDIR)/krb5_auth_dialog-ka-entry-buffer.Tpo -c -o krb5_auth_dialog-ka-entry-buffer.o `test -f 'ka-entry-buffer.c' || echo '$(srcdir)/'`ka-entry-buffer.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/krb5_auth_dialog-ka-entry-buffer.Tpo $(DEPDIR)/krb5_auth_dialog-ka-entry-buffer.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ka-entry-buffer.c' object='krb5_auth_dialog-ka-entry-buffer.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_CFLAGS) $(CFLAGS) -c -o krb5_auth_dialog-ka-entry-buffer.o `test -f 'ka-entry-buffer.c' || echo '$(srcdir)/'`ka-entry-buffer.c + +krb5_auth_dialog-ka-entry-buffer.obj: ka-entry-buffer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_CFLAGS) $(CFLAGS) -MT krb5_auth_dialog-ka-entry-buffer.obj -MD -MP -MF $(DEPDIR)/krb5_auth_dialog-ka-entry-buffer.Tpo -c -o krb5_auth_dialog-ka-entry-buffer.obj `if test -f 'ka-entry-buffer.c'; then $(CYGPATH_W) 'ka-entry-buffer.c'; else $(CYGPATH_W) '$(srcdir)/ka-entry-buffer.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/krb5_auth_dialog-ka-entry-buffer.Tpo $(DEPDIR)/krb5_auth_dialog-ka-entry-buffer.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ka-entry-buffer.c' object='krb5_auth_dialog-ka-entry-buffer.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_CFLAGS) $(CFLAGS) -c -o krb5_auth_dialog-ka-entry-buffer.obj `if test -f 'ka-entry-buffer.c'; then $(CYGPATH_W) 'ka-entry-buffer.c'; else $(CYGPATH_W) '$(srcdir)/ka-entry-buffer.c'; fi` + krb5_auth_dialog-dummy-strings.o: dummy-strings.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(krb5_auth_dialog_CPPFLAGS) $(CPPFLAGS) $(krb5_auth_dialog_CFLAGS) $(CFLAGS) -MT krb5_auth_dialog-dummy-strings.o -MD -MP -MF $(DEPDIR)/krb5_auth_dialog-dummy-strings.Tpo -c -o krb5_auth_dialog-dummy-strings.o `test -f 'dummy-strings.c' || echo '$(srcdir)/'`dummy-strings.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/krb5_auth_dialog-dummy-strings.Tpo $(DEPDIR)/krb5_auth_dialog-dummy-strings.Po @@ -804,6 +826,26 @@ uninstall-autostartDATA: test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(autostartdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(autostartdir)" && rm -f $$files +install-desktopDATA: $(desktop_DATA) + @$(NORMAL_INSTALL) + test -z "$(desktopdir)" || $(MKDIR_P) "$(DESTDIR)$(desktopdir)" + @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(desktopdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(desktopdir)" || exit $$?; \ + done + +uninstall-desktopDATA: + @$(NORMAL_UNINSTALL) + @list='$(desktop_DATA)'; test -n "$(desktopdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(desktopdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(desktopdir)" && rm -f $$files install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @@ -965,7 +1007,7 @@ check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) installdirs: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(autostartdir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(schemadir)" "$(DESTDIR)$(servicedir)"; do \ + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(autostartdir)" "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(schemadir)" "$(DESTDIR)$(servicedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) @@ -1019,8 +1061,9 @@ info: info-am info-am: -install-data-am: install-autostartDATA install-data-local install-man \ - install-pkgdataDATA install-schemaDATA install-serviceDATA +install-data-am: install-autostartDATA install-data-local \ + install-desktopDATA install-man install-pkgdataDATA \ + install-schemaDATA install-serviceDATA install-dvi: install-dvi-am @@ -1067,8 +1110,8 @@ ps: ps-am ps-am: uninstall-am: uninstall-autostartDATA uninstall-binPROGRAMS \ - uninstall-man uninstall-pkgdataDATA uninstall-schemaDATA \ - uninstall-serviceDATA + uninstall-desktopDATA uninstall-man uninstall-pkgdataDATA \ + uninstall-schemaDATA uninstall-serviceDATA uninstall-man: uninstall-man1 @@ -1079,16 +1122,17 @@ uninstall-man: uninstall-man1 distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-autostartDATA install-binPROGRAMS install-data \ - install-data-am install-data-local install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-man1 \ - install-pdf install-pdf-am install-pkgdataDATA install-ps \ - install-ps-am install-schemaDATA install-serviceDATA \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-autostartDATA uninstall-binPROGRAMS uninstall-man \ + install-data-am install-data-local install-desktopDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-man1 install-pdf install-pdf-am \ + install-pkgdataDATA install-ps install-ps-am \ + install-schemaDATA install-serviceDATA install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-autostartDATA \ + uninstall-binPROGRAMS uninstall-desktopDATA uninstall-man \ uninstall-man1 uninstall-pkgdataDATA uninstall-schemaDATA \ uninstall-serviceDATA diff --git a/src/ka-applet-priv.h b/src/ka-applet-priv.h index 7e240a7..a64848c 100644 --- a/src/ka-applet-priv.h +++ b/src/ka-applet-priv.h @@ -1,6 +1,6 @@ /* Krb5 Auth Applet -- Acquire and release kerberos tickets * - * (C) 2008,2010 Guido Guenther <agx@sigxcpu.org> + * (C) 2008,2010,2011 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 @@ -33,34 +33,33 @@ #include "ka-pwdialog.h" G_BEGIN_DECLS - -#define KA_NAME _("Network Authentication") - +#define KA_NAME _("Kerberos Authentication") /* signals emitted by KaApplet */ -typedef enum { - KA_SIGNAL_ACQUIRED_TGT, /* New TGT acquired */ - KA_SIGNAL_RENEWED_TGT, /* TGT got renewed */ - KA_SIGNAL_EXPIRED_TGT, /* TGT expired or ticket cache got destroyed */ - KA_SIGNAL_COUNT + typedef enum { + KA_SIGNAL_ACQUIRED_TGT, /* New TGT acquired */ + KA_SIGNAL_RENEWED_TGT, /* TGT got renewed */ + KA_SIGNAL_EXPIRED_TGT, /* TGT expired or ticket cache got destroyed */ + KA_SIGNAL_COUNT } KaAppletSignalNumber; /* public functions */ -gboolean ka_applet_get_show_trayicon(const KaApplet* applet); -void ka_applet_set_tgt_renewable(KaApplet* applet, gboolean renewable); -gboolean ka_applet_get_tgt_renewable(const KaApplet* applet); -guint ka_applet_get_pw_prompt_secs(const KaApplet* applet); -KaPwDialog* ka_applet_get_pwdialog(const KaApplet* applet); -GConfClient* ka_applet_get_gconf_client(const KaApplet* applet); -void ka_applet_signal_emit(KaApplet* applet, KaAppletSignalNumber signum, - krb5_timestamp expiry); +gboolean ka_applet_get_show_trayicon (const KaApplet *self); +void ka_applet_set_tgt_renewable (KaApplet *self, gboolean renewable); +gboolean ka_applet_get_tgt_renewable (const KaApplet *self); +guint ka_applet_get_pw_prompt_secs (const KaApplet *self); +KaPwDialog *ka_applet_get_pwdialog (const KaApplet *self); +GConfClient *ka_applet_get_gconf_client (const KaApplet *self); +void ka_applet_signal_emit (KaApplet *self, KaAppletSignalNumber signum, + krb5_timestamp expiry); +void ka_applet_set_msg (KaApplet *self, const char *msg); /* create the applet */ -KaApplet* ka_applet_create(void); +KaApplet *ka_applet_create (void); + /* update tooltip and icon */ -int ka_applet_update_status(KaApplet* applet, krb5_timestamp expiry); +int ka_applet_update_status (KaApplet *self, krb5_timestamp expiry); G_END_DECLS - #ifdef ENABLE_DEBUG #define KA_DEBUG(fmt,...) \ g_printf ("DEBUG: %s: " fmt "\n", __func__, ##__VA_ARGS__) @@ -68,5 +67,4 @@ G_END_DECLS #define KA_DEBUG(fmt,...) \ do { } while (0) #endif /* !ENABLE_DEBUG */ - #endif diff --git a/src/ka-applet.c b/src/ka-applet.c index 9beafd1..b2b2823 100644 --- a/src/ka-applet.c +++ b/src/ka-applet.c @@ -30,922 +30,984 @@ #include "ka-tickets.h" #include "ka-plugin-loader.h" #include "ka-closures.h" -#ifdef HAVE_LIBNOTIFY #include <libnotify/notify.h> -#endif #define NOTIFY_SECONDS 300 enum ka_icon { - inv_icon = 0, - exp_icon, - val_icon, + inv_icon = 0, + exp_icon, + val_icon, }; -enum -{ - KA_PROP_0 = 0, - KA_PROP_PRINCIPAL, - KA_PROP_PK_USERID, - KA_PROP_PK_ANCHORS, - KA_PROP_TRAYICON, - KA_PROP_PW_PROMPT_MINS, - KA_PROP_TGT_FORWARDABLE, - KA_PROP_TGT_PROXIABLE, - KA_PROP_TGT_RENEWABLE, +enum { + KA_PROP_0 = 0, + KA_PROP_PRINCIPAL, + KA_PROP_PK_USERID, + KA_PROP_PK_ANCHORS, + KA_PROP_PW_PROMPT_MINS, + KA_PROP_TGT_FORWARDABLE, + KA_PROP_TGT_PROXIABLE, + KA_PROP_TGT_RENEWABLE, }; struct _KaApplet { - GObject parent; + GObject parent; - KaAppletPrivate *priv; + KaAppletPrivate *priv; }; struct _KaAppletClass { - GObjectClass parent; + GObjectClass parent; - guint signals [KA_SIGNAL_COUNT]; + guint signals[KA_SIGNAL_COUNT]; }; -G_DEFINE_TYPE(KaApplet, ka_applet, G_TYPE_OBJECT); - -struct _KaAppletPrivate -{ - GtkBuilder *uixml; - GtkStatusIcon* tray_icon; /* the tray icon */ - GtkWidget* context_menu; /* the tray icon's context menu */ - const char* icons[3]; /* for invalid, expiring and valid tickts */ - gboolean show_trayicon; /* show the trayicon */ - - KaPwDialog *pwdialog; /* the password dialog */ - int pw_prompt_secs; /* when to start prompting for a password */ - KaPluginLoader *loader; /* Plugin loader */ - -#ifdef HAVE_LIBNOTIFY - NotifyNotification* notification;/* notification messages */ -#endif /* HAVE_LIBNOTIFY */ - const char* notify_gconf_key; /* disable notification gconf key */ - char* principal; /* the principal to request */ - gboolean renewable; /* credentials renewable? */ - char* pk_userid; /* "userid" for pkint */ - char* pk_anchors; /* trust anchors for pkint */ - gboolean tgt_forwardable; /* request a forwardable ticket */ - gboolean tgt_renewable; /* request a renewable ticket */ - gboolean tgt_proxiable; /* request a proxiable ticket */ - - GConfClient *gconf; /* gconf client */ +G_DEFINE_TYPE (KaApplet, ka_applet, G_TYPE_OBJECT); + +struct _KaAppletPrivate { + GtkBuilder *uixml; + GtkStatusIcon *tray_icon; /* the tray icon */ + GtkWidget *context_menu; /* the tray icon's context menu */ + const char *icons[3]; /* for invalid, expiring and valid tickts */ + gboolean ns_persistence; /* does the notification server support persistence */ + + KaPwDialog *pwdialog; /* the password dialog */ + int pw_prompt_secs; /* when to start prompting for a password */ + KaPluginLoader *loader; /* Plugin loader */ + + NotifyNotification *notification; /* notification messages */ + char *krb_msg; /* Additional banner delivered by Kerberos */ + const char *notify_gconf_key; /* disable notification gconf key */ + char *principal; /* the principal to request */ + gboolean renewable; /* credentials renewable? */ + char *pk_userid; /* "userid" for pkint */ + char *pk_anchors; /* trust anchors for pkint */ + gboolean tgt_forwardable; /* request a forwardable ticket */ + gboolean tgt_renewable; /* request a renewable ticket */ + gboolean tgt_proxiable; /* request a proxiable ticket */ + + GConfClient *gconf; /* gconf client */ }; +static void ka_close_notification (KaApplet *self); + static void -ka_applet_set_property (GObject *object, - guint property_id, +ka_applet_set_property (GObject *object, + guint property_id, const GValue *value, - GParamSpec *pspec) + GParamSpec *pspec) { - KaApplet* self = KA_APPLET (object); + KaApplet *self = KA_APPLET (object); - switch (property_id) { + switch (property_id) { case KA_PROP_PRINCIPAL: - g_free (self->priv->principal); - self->priv->principal = g_value_dup_string (value); - KA_DEBUG ("%s: %s", pspec->name, self->priv->principal); - break; - - case KA_PROP_PK_USERID: - g_free (self->priv->pk_userid); - self->priv->pk_userid = g_value_dup_string (value); - KA_DEBUG ("%s: %s", pspec->name, self->priv->pk_userid); - break; - - case KA_PROP_PK_ANCHORS: - g_free (self->priv->pk_anchors); - self->priv->pk_anchors = g_value_dup_string (value); - KA_DEBUG ("%s: %s", pspec->name, self->priv->pk_anchors); - break; - - case KA_PROP_TRAYICON: - self->priv->show_trayicon = g_value_get_boolean (value); - KA_DEBUG ("%s: %s", pspec->name, self->priv->show_trayicon ? "True" : "False"); - break; + g_free (self->priv->principal); + self->priv->principal = g_value_dup_string (value); + KA_DEBUG ("%s: %s", pspec->name, self->priv->principal); + break; + + case KA_PROP_PK_USERID: + g_free (self->priv->pk_userid); + self->priv->pk_userid = g_value_dup_string (value); + KA_DEBUG ("%s: %s", pspec->name, self->priv->pk_userid); + break; + + case KA_PROP_PK_ANCHORS: + g_free (self->priv->pk_anchors); + self->priv->pk_anchors = g_value_dup_string (value); + KA_DEBUG ("%s: %s", pspec->name, self->priv->pk_anchors); + break; case KA_PROP_PW_PROMPT_MINS: - self->priv->pw_prompt_secs = g_value_get_uint (value) * 60; - KA_DEBUG ("%s: %d", pspec->name, self->priv->pw_prompt_secs/60); - break; + self->priv->pw_prompt_secs = g_value_get_uint (value) * 60; + 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; + 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; + 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; + 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); - break; + /* We don't have any other property... */ + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; } } static void -ka_applet_get_property (GObject *object, - guint property_id, - GValue *value, +ka_applet_get_property (GObject *object, + guint property_id, + GValue *value, GParamSpec *pspec) { - KaApplet *self = KA_APPLET (object); + KaApplet *self = KA_APPLET (object); - switch (property_id) - { + switch (property_id) { case KA_PROP_PRINCIPAL: - g_value_set_string (value, self->priv->principal); - break; + g_value_set_string (value, self->priv->principal); + break; case KA_PROP_PK_USERID: - g_value_set_string (value, self->priv->pk_userid); - break; + g_value_set_string (value, self->priv->pk_userid); + break; case KA_PROP_PK_ANCHORS: - g_value_set_string (value, self->priv->pk_anchors); - break; - - case KA_PROP_TRAYICON: - g_value_set_boolean (value, self->priv->show_trayicon); - break; + g_value_set_string (value, self->priv->pk_anchors); + break; case KA_PROP_PW_PROMPT_MINS: - g_value_set_uint (value, self->priv->pw_prompt_secs / 60); - break; + 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; + 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; + 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; + g_value_set_boolean (value, self->priv->tgt_renewable); + break; default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; } } static void -ka_applet_dispose(GObject* object) +ka_applet_dispose (GObject *object) { - KaApplet* applet = KA_APPLET(object); - GObjectClass *parent_class = G_OBJECT_CLASS (ka_applet_parent_class); + KaApplet *applet = KA_APPLET (object); + GObjectClass *parent_class = G_OBJECT_CLASS (ka_applet_parent_class); + + ka_close_notification (applet); - if (applet->priv->tray_icon) { - g_object_unref(applet->priv->tray_icon); - applet->priv->tray_icon = NULL; - } - if (applet->priv->pwdialog) { - g_object_unref(applet->priv->pwdialog); - applet->priv->pwdialog = NULL; - } - if (applet->priv->uixml) { - g_object_unref(applet->priv->uixml); - applet->priv->uixml = NULL; - } - if (applet->priv->loader) { - g_object_unref(applet->priv->loader); - applet->priv->loader = NULL; - } + if (applet->priv->tray_icon) { + g_object_unref (applet->priv->tray_icon); + applet->priv->tray_icon = NULL; + } + if (applet->priv->pwdialog) { + g_object_unref (applet->priv->pwdialog); + applet->priv->pwdialog = NULL; + } + if (applet->priv->uixml) { + g_object_unref (applet->priv->uixml); + applet->priv->uixml = NULL; + } + if (applet->priv->loader) { + g_object_unref (applet->priv->loader); + applet->priv->loader = NULL; + } - if (parent_class->dispose != NULL) - parent_class->dispose (object); + if (parent_class->dispose != NULL) + parent_class->dispose (object); } static void -ka_applet_finalize(GObject *object) +ka_applet_finalize (GObject *object) { - KaApplet* applet = KA_APPLET(object); - GObjectClass *parent_class = G_OBJECT_CLASS (ka_applet_parent_class); + KaApplet *applet = KA_APPLET (object); + GObjectClass *parent_class = G_OBJECT_CLASS (ka_applet_parent_class); - g_free (applet->priv->principal); - g_free (applet->priv->pk_userid); - g_free (applet->priv->pk_anchors); - /* no need to free applet->priv */ + g_free (applet->priv->principal); + g_free (applet->priv->pk_userid); + g_free (applet->priv->pk_anchors); + g_free (applet->priv->krb_msg); + /* no need to free applet->priv */ - if (parent_class->finalize != NULL) - parent_class->finalize (object); + if (parent_class->finalize != NULL) + parent_class->finalize (object); } static void -ka_applet_init(KaApplet *applet) +ka_applet_init (KaApplet *applet) { - applet->priv = G_TYPE_INSTANCE_GET_PRIVATE(applet, - KA_TYPE_APPLET, - KaAppletPrivate); + applet->priv = G_TYPE_INSTANCE_GET_PRIVATE (applet, + KA_TYPE_APPLET, + KaAppletPrivate); } static void -ka_applet_class_init(KaAppletClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS(klass); - GParamSpec *pspec; - const gchar *signalNames [ KA_SIGNAL_COUNT ] = { - "krb-tgt-acquired", - "krb-tgt-renewed", - "krb-tgt-expired"}; - int i; - - object_class->dispose = ka_applet_dispose; - object_class->finalize = ka_applet_finalize; - g_type_class_add_private(klass, sizeof(KaAppletPrivate)); - - object_class->set_property = ka_applet_set_property; - object_class->get_property = ka_applet_get_property; - - pspec = g_param_spec_string ("principal", - "Principal", - "Get/Set Kerberos principal", - "", - G_PARAM_CONSTRUCT | G_PARAM_READWRITE); - g_object_class_install_property (object_class, - KA_PROP_PRINCIPAL, - pspec); - - pspec = g_param_spec_string ("pk-userid", - "PKinit identifier", - "Get/Set Pkinit identifier", - "", - G_PARAM_CONSTRUCT | G_PARAM_READWRITE); - g_object_class_install_property (object_class, - KA_PROP_PK_USERID, - pspec); - - pspec = g_param_spec_string ("pk-anchors", - "PKinit trust anchors", - "Get/Set Pkinit trust anchors", - "", - G_PARAM_CONSTRUCT | G_PARAM_READWRITE); - g_object_class_install_property (object_class, - KA_PROP_PK_ANCHORS, - pspec); - - pspec = g_param_spec_boolean("show-trayicon", - "Show tray icon", - "Show/Hide the tray icon", - TRUE, - G_PARAM_CONSTRUCT | G_PARAM_READWRITE); - g_object_class_install_property (object_class, - KA_PROP_TRAYICON, - pspec); - - pspec = g_param_spec_uint ("pw-prompt-mins", - "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); - - for (i = 0; i < KA_SIGNAL_COUNT ; i++) { - guint signalId; - signalId = - g_signal_new ( signalNames [i], - G_OBJECT_CLASS_TYPE ( klass ), - G_SIGNAL_RUN_LAST, - 0, - NULL, - NULL, - ka_closure_VOID__STRING_UINT, - G_TYPE_NONE, - 2, /* number of parameters */ - G_TYPE_STRING, - G_TYPE_UINT); - klass->signals [i] = signalId ; - } -} - - -static KaApplet* -ka_applet_new(void) -{ - return g_object_new (KA_TYPE_APPLET, NULL); +ka_applet_class_init (KaAppletClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *pspec; + + const gchar *signalNames[KA_SIGNAL_COUNT] = { + "krb-tgt-acquired", + "krb-tgt-renewed", + "krb-tgt-expired" + }; + int i; + + object_class->dispose = ka_applet_dispose; + object_class->finalize = ka_applet_finalize; + g_type_class_add_private (klass, sizeof (KaAppletPrivate)); + + object_class->set_property = ka_applet_set_property; + object_class->get_property = ka_applet_get_property; + + pspec = g_param_spec_string ("principal", + "Principal", + "Get/Set Kerberos principal", + "", G_PARAM_CONSTRUCT | G_PARAM_READWRITE); + g_object_class_install_property (object_class, KA_PROP_PRINCIPAL, pspec); + + pspec = g_param_spec_string ("pk-userid", + "PKinit identifier", + "Get/Set Pkinit identifier", + "", G_PARAM_CONSTRUCT | G_PARAM_READWRITE); + g_object_class_install_property (object_class, KA_PROP_PK_USERID, pspec); + + pspec = g_param_spec_string ("pk-anchors", + "PKinit trust anchors", + "Get/Set Pkinit trust anchors", + "", G_PARAM_CONSTRUCT | G_PARAM_READWRITE); + g_object_class_install_property (object_class, KA_PROP_PK_ANCHORS, pspec); + + pspec = g_param_spec_uint ("pw-prompt-mins", + "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); + + for (i = 0; i < KA_SIGNAL_COUNT; i++) { + guint signalId; + + signalId = g_signal_new (signalNames[i], G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, 0, NULL, NULL, + ka_closure_VOID__STRING_UINT, + G_TYPE_NONE, 2, /* number of parameters */ + G_TYPE_STRING, G_TYPE_UINT); + klass->signals[i] = signalId; + } +} + + +static KaApplet * +ka_applet_new (void) +{ + return g_object_new (KA_TYPE_APPLET, NULL); } /* determine the new tooltip text */ -static char* -ka_applet_tooltip_text(int remaining) -{ - int hours, minutes; - gchar* tooltip_text; - - if (remaining > 0) { - if (remaining >= 3600) { - hours = remaining / 3600; - minutes = (remaining % 3600) / 60; - /* Translators: First number is hours, second number is minutes */ - tooltip_text = g_strdup_printf (_("Your credentials expire in %.2d:%.2dh"), hours, minutes); - } else { - minutes = remaining / 60; - tooltip_text = g_strdup_printf (ngettext( - "Your credentials expire in %d minute", - "Your credentials expire in %d minutes", - minutes), minutes); - } - } else - tooltip_text = g_strdup (_("Your credentials have expired")); - return tooltip_text; +static char * +ka_applet_tooltip_text (int remaining) +{ + int hours, minutes; + gchar *tooltip_text; + + if (remaining > 0) { + if (remaining >= 3600) { + hours = remaining / 3600; + minutes = (remaining % 3600) / 60; + /* Translators: First number is hours, second number is minutes */ + tooltip_text = + g_strdup_printf (_("Your credentials expire in %.2d:%.2dh"), + hours, minutes); + } else { + minutes = remaining / 60; + tooltip_text = + g_strdup_printf (ngettext + ("Your credentials expire in %d minute", + "Your credentials expire in %d minutes", + minutes), minutes); + } + } else + tooltip_text = g_strdup (_("Your credentials have expired")); + return tooltip_text; } /* determine the current icon */ -static const char* -ka_applet_select_icon(KaApplet* applet, int remaining) +static const char * +ka_applet_select_icon (KaApplet *applet, int remaining) { - enum ka_icon tray_icon = inv_icon; + enum ka_icon status_icon = inv_icon; - if (remaining > 0) { - if (remaining < applet->priv->pw_prompt_secs && - !applet->priv->renewable) - tray_icon = exp_icon; - else - tray_icon = val_icon; - } + if (remaining > 0) { + if (remaining < applet->priv->pw_prompt_secs && + !applet->priv->renewable) + status_icon = exp_icon; + else + status_icon = val_icon; + } - return applet->priv->icons[tray_icon]; + return applet->priv->icons[status_icon]; } -#ifdef HAVE_LIBNOTIFY static gboolean -ka_show_notification (KaApplet *applet) +ka_tray_icon_is_embedded (KaApplet *self) { - /* wait for the panel to be settled before showing a bubble */ - if (gtk_status_icon_is_embedded (applet->priv->tray_icon)) { - GError *error = NULL; - gboolean ret; + if (self->priv->tray_icon + && gtk_status_icon_is_embedded (self->priv->tray_icon)) + return TRUE; + else + return FALSE; +} - ret = notify_notification_show (applet->priv->notification, &error); - if (!ret) { - g_assert (error); - g_assert (error->message); - g_warning ("Failed to show notification: %s", error->message); - g_clear_error (&error); - } - } else { - g_timeout_add_seconds (5, (GSourceFunc)ka_show_notification, applet); - } - return FALSE; + +static gboolean +ka_show_notification (KaApplet *applet) +{ + /* wait for the panel to be settled before showing a bubble */ + if (applet->priv->ns_persistence + || ka_tray_icon_is_embedded (applet)) { + GError *error = NULL; + gboolean ret; + + ret = notify_notification_show (applet->priv->notification, &error); + if (!ret) { + g_assert (error); + g_assert (error->message); + g_warning ("Failed to show notification: %s", error->message); + g_clear_error (&error); + } + } else { + g_timeout_add_seconds (5, (GSourceFunc) ka_show_notification, applet); + } + return FALSE; } +/* Callback to handle disabling of notification */ static void -ka_notify_action_cb (NotifyNotification *notification G_GNUC_UNUSED, - gchar *action, gpointer user_data) -{ - KaApplet *self = KA_APPLET (user_data); +ka_notify_disable_action_cb (NotifyNotification *notification G_GNUC_UNUSED, + gchar *action, + gpointer user_data) +{ + KaApplet *self = KA_APPLET (user_data); + + if (strcmp (action, "dont-show-again") == 0) { + KA_DEBUG ("turning of notification %s", self->priv->notify_gconf_key); + ka_gconf_set_bool (self->priv->gconf, + self->priv->notify_gconf_key, FALSE); + self->priv->notify_gconf_key = NULL; + } else { + g_warning ("unkonwn action for callback"); + } +} + - if (strcmp (action, "dont-show-again") == 0) { - KA_DEBUG ("turning of notification %s", self->priv->notify_gconf_key); - ka_gconf_set_bool (self->priv->gconf, - self->priv->notify_gconf_key, - FALSE); - self->priv->notify_gconf_key = NULL; - } else { - g_warning("unkonwn action for callback"); - } +/* Callback to handle ticket related actions */ +static void +ka_notify_ticket_action_cb (NotifyNotification *notification G_GNUC_UNUSED, + gchar *action, + gpointer user_data) +{ + KaApplet *self = KA_APPLET (user_data); + + g_return_if_fail (self != NULL); + + if (strcmp (action, "ka-acquire-tgt") == 0) { + KA_DEBUG ("Getting new tgt"); + ka_grab_credentials (self); + } else if (strcmp (action, "ka-remove-ccache") == 0) { + KA_DEBUG ("Removing ccache"); + ka_destroy_ccache (self); + } else if (strcmp (action, "ka-list-tickets") == 0) { + KA_DEBUG ("Listing tickets"); + ka_tickets_dialog_run (); + } else { + g_warning ("unkonwn action for callback"); + } } static void -ka_send_event_notification (KaApplet *applet, - const char *summary, - const char *message, - const char *icon, - const char *action) -{ - const char *notify_icon; - GError *error = NULL; - - g_return_if_fail (applet != NULL); - g_return_if_fail (summary != NULL); - g_return_if_fail (message != NULL); - - if (!notify_is_initted ()) - notify_init (PACKAGE); - - if (applet->priv->notification != NULL) { - if (!notify_notification_close (applet->priv->notification, - &error)) { - if (error) - g_warning ("Cannot close notification %s", - error->message); - else - g_warning ("Cannot close notification"); - } - g_object_unref (applet->priv->notification); - g_clear_error (&error); - } - - notify_icon = icon ? icon : "krb-valid-ticket"; - - applet->priv->notification = \ - notify_notification_new_with_status_icon(summary, - message, - notify_icon, - applet->priv->tray_icon); - - notify_notification_set_urgency (applet->priv->notification, NOTIFY_URGENCY_NORMAL); - notify_notification_add_action (applet->priv->notification, - action, - _("Don't show me this again"), - (NotifyActionCallback) ka_notify_action_cb, - applet, NULL); - ka_show_notification (applet); +ka_close_notification (KaApplet *self) +{ + GError *error = NULL; + + if (self->priv->notification != NULL) { + if (!notify_notification_close (self->priv->notification, &error)) { + if (error) + g_warning ("Cannot close notification %s", error->message); + else + g_warning ("Cannot close notification"); + } + g_object_unref (self->priv->notification); + g_clear_error (&error); + self->priv->notification = NULL; + } } + +static void +ka_send_event_notification (KaApplet *self, + const char *summary, + const char *message, + const char *icon, + gboolean get_ticket_action) +{ + NotifyNotification *notification; + const char *hint; + gint timeout; + + g_return_if_fail (self != NULL); + g_return_if_fail (summary != NULL); + g_return_if_fail (message != NULL); + + if (!notify_is_initted ()) + notify_init (KA_NAME); + + if (self->priv->notification) { + notification = self->priv->notification; + notify_notification_update (notification, summary, message, icon); + } else { + notification = self->priv->notification = +#if HAVE_NOTIFY_NOTIFICATION_NEW_WITH_STATUS_ICON + notify_notification_new_with_status_icon (summary, + message, + icon, + self->priv->tray_icon); #else + notify_notification_new (summary, message, icon); +#endif + notify_notification_set_urgency (notification, NOTIFY_URGENCY_NORMAL); + } + + if (self->priv->ns_persistence) { + hint = "resident"; + timeout = NOTIFY_EXPIRES_NEVER; + + notify_notification_set_timeout (notification, timeout); + notify_notification_clear_hints (notification); +#if HAVE_NOTIFY_NOTIFICATION_SET_HINT + notify_notification_set_hint (notification, + hint, + g_variant_new_boolean (TRUE)); +#endif + } + + notify_notification_clear_actions(notification); + /* Add List Tickets button until we moved this into cc-panl */ + if (self->priv->ns_persistence) { + notify_notification_add_action (notification, + "ka-list-tickets", + _("List Tickets"), + (NotifyActionCallback) + ka_notify_ticket_action_cb, + self, + NULL); + } + + if (get_ticket_action) { + notify_notification_add_action (notification, + "ka-acquire-tgt", + _("Get Ticket"), + (NotifyActionCallback) + ka_notify_ticket_action_cb, + self, + NULL); + } else { + if (!self->priv->ns_persistence) { + notify_notification_add_action (notification, + "dont-show-again", + _("Don't show me this again"), + (NotifyActionCallback) + ka_notify_disable_action_cb, self, + NULL); + } else { + notify_notification_add_action (notification, + "ka-remove-ccache", + _("Remove Credentials Cache"), + (NotifyActionCallback) + ka_notify_ticket_action_cb, + self, + NULL); + } + } + ka_show_notification (self); +} + + static void -ka_send_event_notification (KaApplet *applet G_GNUC_UNUSED, - const char *summary G_GNUC_UNUSED, - const char *message G_GNUC_UNUSED, - const char *icon G_GNUC_UNUSED, - const char *action G_GNUC_UNUSED) +ka_update_tray_icon (KaApplet *self, const char *icon, const char *tooltip) { + if (self->priv->tray_icon) { + gtk_status_icon_set_from_icon_name (self->priv->tray_icon, icon); + gtk_status_icon_set_tooltip_text (self->priv->tray_icon, tooltip); + } } -#endif /* ! HAVE_LIBNOTIFY */ - /* * update the tray icon's tooltip and icon * and notify listeners about acquired/expiring tickets via signals */ int -ka_applet_update_status(KaApplet* applet, krb5_timestamp expiry) -{ - int now = time(0); - int remaining = expiry - now; - static int last_warn = 0; - static gboolean expiry_notified = FALSE; - static krb5_timestamp old_expiry = 0; - gboolean notify = TRUE; - const char* tray_icon = ka_applet_select_icon (applet, remaining); - char* tooltip_text = ka_applet_tooltip_text (remaining); - - - if (remaining > 0) { - if (expiry_notified) { - ka_gconf_get_bool(applet->priv->gconf, - KA_GCONF_KEY_NOTIFY_VALID, - ¬ify); - if (notify) { - applet->priv->notify_gconf_key = KA_GCONF_KEY_NOTIFY_VALID; - ka_send_event_notification (applet, - _("Network credentials valid"), - _("You've refreshed your Kerberos credentials."), - "krb-valid-ticket", - "dont-show-again"); - } - ka_applet_signal_emit (applet, KA_SIGNAL_ACQUIRED_TGT, expiry); - expiry_notified = FALSE; - } else { - if (remaining < applet->priv->pw_prompt_secs - && (now - last_warn) > NOTIFY_SECONDS - && !applet->priv->renewable) { - ka_gconf_get_bool(applet->priv->gconf, - KA_GCONF_KEY_NOTIFY_EXPIRING, - ¬ify); - if (notify) { - applet->priv->notify_gconf_key = KA_GCONF_KEY_NOTIFY_EXPIRING; - ka_send_event_notification (applet, - _("Network credentials expiring"), - tooltip_text, - "krb-expiring-ticket", - "dont-show-again"); - } - last_warn = now; - } - /* ticket lifetime got longer e.g. by kinit -R */ - if (old_expiry && expiry > old_expiry) - ka_applet_signal_emit (applet, KA_SIGNAL_RENEWED_TGT, expiry); - } - } else { - if (!expiry_notified) { - ka_gconf_get_bool(applet->priv->gconf, - KA_GCONF_KEY_NOTIFY_EXPIRED, - ¬ify); - if (notify) { - applet->priv->notify_gconf_key = KA_GCONF_KEY_NOTIFY_EXPIRED; - ka_send_event_notification (applet, - _("Network credentials expired"), - _("Your Kerberos credentails have expired."), - "krb-no-valid-ticket", - "dont-show-again"); - } - ka_applet_signal_emit (applet, KA_SIGNAL_EXPIRED_TGT, expiry); - expiry_notified = TRUE; - last_warn = 0; - } - } - - old_expiry = expiry; - gtk_status_icon_set_from_icon_name (applet->priv->tray_icon, tray_icon); - gtk_status_icon_set_tooltip_text (applet->priv->tray_icon, tooltip_text); - g_free(tooltip_text); - return 0; +ka_applet_update_status (KaApplet *applet, krb5_timestamp expiry) +{ + int now = time (0); + int remaining = expiry - now; + static int last_warn = 0; + static gboolean expiry_notified = FALSE; + static krb5_timestamp old_expiry = 0; + gboolean notify = TRUE; + const char *status_icon = ka_applet_select_icon (applet, remaining); + char *tooltip_text = ka_applet_tooltip_text (remaining); + + + if (remaining > 0) { + if (expiry_notified) { + const char* msg; + ka_gconf_get_bool (applet->priv->gconf, + KA_GCONF_KEY_NOTIFY_VALID, ¬ify); + if (notify) { + applet->priv->notify_gconf_key = KA_GCONF_KEY_NOTIFY_VALID; + + if (applet->priv->krb_msg) + msg = applet->priv->krb_msg; + else + msg = _("You've refreshed your Kerberos credentials."); + ka_send_event_notification (applet, + _("Network credentials valid"), + msg, + "krb-valid-ticket", + FALSE); + } + ka_applet_signal_emit (applet, KA_SIGNAL_ACQUIRED_TGT, expiry); + expiry_notified = FALSE; + g_free (applet->priv->krb_msg); + applet->priv->krb_msg = NULL; + } else { + if (remaining < applet->priv->pw_prompt_secs + && (now - last_warn) > NOTIFY_SECONDS + && !applet->priv->renewable) { + ka_gconf_get_bool (applet->priv->gconf, + KA_GCONF_KEY_NOTIFY_EXPIRING, ¬ify); + if (notify) { + applet->priv->notify_gconf_key = + KA_GCONF_KEY_NOTIFY_EXPIRING; + ka_send_event_notification (applet, + _("Network credentials expiring"), + tooltip_text, + "krb-expiring-ticket", + TRUE); + } + last_warn = now; + } + /* ticket lifetime got longer e.g. by kinit -R */ + if (old_expiry && expiry > old_expiry) + ka_applet_signal_emit (applet, KA_SIGNAL_RENEWED_TGT, expiry); + } + } else { + if (!expiry_notified) { + ka_gconf_get_bool (applet->priv->gconf, + KA_GCONF_KEY_NOTIFY_EXPIRED, ¬ify); + if (notify) { + applet->priv->notify_gconf_key = KA_GCONF_KEY_NOTIFY_EXPIRED; + ka_send_event_notification (applet, + _("Network credentials expired"), + _("Your Kerberos credentails have expired."), + "krb-no-valid-ticket", + TRUE); + } + ka_applet_signal_emit (applet, KA_SIGNAL_EXPIRED_TGT, expiry); + expiry_notified = TRUE; + last_warn = 0; + } + } + + old_expiry = expiry; + ka_update_tray_icon(applet, status_icon, tooltip_text); + g_free (tooltip_text); + return 0; } static void -ka_applet_menu_add_separator_item (GtkWidget* menu) +ka_applet_menu_add_separator_item (GtkWidget *menu) { - GtkWidget* menu_item; + GtkWidget *menu_item; - menu_item = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); - gtk_widget_show (menu_item); + menu_item = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + gtk_widget_show (menu_item); } static void -ka_applet_cb_preferences (GtkWidget* menuitem G_GNUC_UNUSED, +ka_applet_cb_preferences (GtkWidget *menuitem G_GNUC_UNUSED, gpointer user_data G_GNUC_UNUSED) { - GError *error = NULL; - - g_spawn_command_line_async (BIN_DIR - G_DIR_SEPARATOR_S - "krb5-auth-dialog-preferences", - &error); - if (error) { - GtkWidget *message_dialog; - - message_dialog = gtk_message_dialog_new (NULL, - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_CLOSE, - _("There was an error launching the preferences dialog: %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_clear_error (&error); - } + GError *error = NULL; + + g_spawn_command_line_async (BIN_DIR + G_DIR_SEPARATOR_S + "gnome-control-center ka-panel", &error); + if (error) { + GtkWidget *message_dialog; + + message_dialog = gtk_message_dialog_new (NULL, + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, + _("There was an error launching the preferences dialog: %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_clear_error (&error); + } } /* Free all resources and quit */ static void -ka_applet_cb_quit (GtkMenuItem* menuitem G_GNUC_UNUSED, gpointer user_data) -{ - KaApplet* applet = KA_APPLET(user_data); - - g_object_unref (applet); - gtk_main_quit (); -} - - -static void -ka_about_dialog_url_hook (GtkAboutDialog *about, - const gchar *alink, - gpointer data G_GNUC_UNUSED) +ka_applet_cb_quit (GtkMenuItem *menuitem G_GNUC_UNUSED, gpointer user_data) { - GError *error = NULL; - - gtk_show_uri(gtk_window_get_screen (GTK_WINDOW (about)), - alink, gtk_get_current_event_time(), &error); - - if (error) { - GtkWidget *message_dialog; - - message_dialog = gtk_message_dialog_new (GTK_WINDOW (about), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_CLOSE, - _("There was an error displaying %s:\n%s"), - alink, error->message); - gtk_window_set_resizable (GTK_WINDOW (message_dialog), FALSE); + KaApplet *applet = KA_APPLET (user_data); - g_signal_connect (message_dialog, "response", - G_CALLBACK (gtk_widget_destroy), - NULL); - gtk_widget_show (message_dialog); - g_clear_error (&error); - } + g_object_unref (applet); + gtk_main_quit (); } static void -ka_applet_cb_about_dialog (GtkMenuItem* menuitem G_GNUC_UNUSED, - gpointer user_data G_GNUC_UNUSED) -{ - const gchar* authors[] = { - "Christopher Aillon <caillon@redhat.com>", - "Jonathan Blandford <jrb@redhat.com>", - "Colin Walters <walters@verbum.org>", - "Guido Günther <agx@sigxcpu.org>", - NULL }; - - gtk_about_dialog_set_url_hook (ka_about_dialog_url_hook, NULL, NULL); - gtk_show_about_dialog (NULL, - "authors", authors, - "version", VERSION, - "logo-icon-name", "krb-valid-ticket", - "copyright", - "Copyright (C) 2004,2005,2006 Red Hat, Inc.,\n" - "2008,2009 Guido Günther", - "website-label", PACKAGE " website", - "website", "https://honk.sigxcpu.org/piki/projects/krb5-auth-dialog/", - "license", "GNU General Public License Version 2", - /* Translators: add the translators of your language here */ - "translator-credits", _("translator-credits"), - NULL); +ka_applet_cb_about_dialog (GtkMenuItem *menuitem G_GNUC_UNUSED, + gpointer user_data G_GNUC_UNUSED) +{ + const gchar *authors[] = { + "Christopher Aillon <caillon@redhat.com>", + "Jonathan Blandford <jrb@redhat.com>", + "Colin Walters <walters@verbum.org>", + "Guido Günther <agx@sigxcpu.org>", + NULL + }; + + gtk_show_about_dialog (NULL, + "authors", authors, + "version", VERSION, + "logo-icon-name", "krb-valid-ticket", + "copyright", + "Copyright (C) 2004,2005,2006 Red Hat, Inc.,\n" + "2008,2009 Guido Günther", + "website-label", PACKAGE " website", + "website", + "https://honk.sigxcpu.org/piki/projects/krb5-auth-dialog/", + "license", "GNU General Public License Version 2", + /* Translators: add the translators of your language here */ + "translator-credits", _("translator-credits"), + NULL); } static void -ka_applet_cb_show_help (GtkMenuItem* menuitem G_GNUC_UNUSED, - gpointer user_data) +ka_applet_cb_show_help (GtkMenuItem *menuitem G_GNUC_UNUSED, + gpointer user_data) { - KaApplet *applet = KA_APPLET(user_data); + KaApplet *applet = KA_APPLET (user_data); - ka_show_help (gtk_status_icon_get_screen(applet->priv->tray_icon), NULL, NULL); + ka_show_help (gtk_status_icon_get_screen (applet->priv->tray_icon), NULL, + NULL); } static void -ka_applet_cb_destroy_ccache(GtkMenuItem* menuitem G_GNUC_UNUSED, - gpointer user_data) +ka_applet_cb_destroy_ccache (GtkMenuItem *menuitem G_GNUC_UNUSED, + gpointer user_data) { - KaApplet *applet = KA_APPLET(user_data); - ka_destroy_ccache(applet); + KaApplet *applet = KA_APPLET (user_data); + + ka_destroy_ccache (applet); } static void -ka_applet_cb_show_tickets(GtkMenuItem* menuitem G_GNUC_UNUSED, - gpointer user_data G_GNUC_UNUSED) +ka_applet_cb_show_tickets (GtkMenuItem *menuitem G_GNUC_UNUSED, + gpointer user_data G_GNUC_UNUSED) { - ka_tickets_dialog_run(); + ka_tickets_dialog_run (); } /* The tray icon's context menu */ static gboolean -ka_applet_create_context_menu (KaApplet* applet) +ka_applet_create_context_menu (KaApplet *applet) { - GtkWidget* menu; - GtkWidget* menu_item; - GtkWidget* image; + GtkWidget *menu; + GtkWidget *menu_item; + GtkWidget *image; - menu = gtk_menu_new (); + menu = gtk_menu_new (); - /* kdestroy */ - menu_item = gtk_image_menu_item_new_with_mnemonic (_("Remove Credentials _Cache")); - g_signal_connect (G_OBJECT (menu_item), "activate", - G_CALLBACK (ka_applet_cb_destroy_ccache), applet); - image = gtk_image_new_from_stock (GTK_STOCK_CANCEL, 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); + /* kdestroy */ + menu_item = + gtk_image_menu_item_new_with_mnemonic (_("Remove Credentials _Cache")); + g_signal_connect (G_OBJECT (menu_item), "activate", + G_CALLBACK (ka_applet_cb_destroy_ccache), applet); + image = gtk_image_new_from_stock (GTK_STOCK_CANCEL, 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); - ka_applet_menu_add_separator_item (menu); + ka_applet_menu_add_separator_item (menu); - /* Ticket dialog */ - menu_item = gtk_image_menu_item_new_with_mnemonic(_("_List Tickets")); - g_signal_connect (G_OBJECT (menu_item), "activate", - G_CALLBACK (ka_applet_cb_show_tickets), applet); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + /* Ticket dialog */ + menu_item = gtk_image_menu_item_new_with_mnemonic (_("_List Tickets")); + g_signal_connect (G_OBJECT (menu_item), "activate", + G_CALLBACK (ka_applet_cb_show_tickets), applet); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); - /* Preferences */ - menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, NULL); - g_signal_connect (G_OBJECT (menu_item), "activate", - G_CALLBACK (ka_applet_cb_preferences), applet); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + /* Preferences */ + menu_item = + gtk_image_menu_item_new_from_stock (GTK_STOCK_PREFERENCES, NULL); + g_signal_connect (G_OBJECT (menu_item), "activate", + G_CALLBACK (ka_applet_cb_preferences), applet); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); - /* About item */ - menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_HELP, NULL); - g_signal_connect (G_OBJECT (menu_item), "activate", - G_CALLBACK (ka_applet_cb_show_help), applet); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + /* About item */ + menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_HELP, NULL); + g_signal_connect (G_OBJECT (menu_item), "activate", + G_CALLBACK (ka_applet_cb_show_help), applet); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); - /* About item */ - menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL); - g_signal_connect (G_OBJECT (menu_item), "activate", - G_CALLBACK (ka_applet_cb_about_dialog), applet); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + /* About item */ + menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_ABOUT, NULL); + g_signal_connect (G_OBJECT (menu_item), "activate", + G_CALLBACK (ka_applet_cb_about_dialog), applet); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); - ka_applet_menu_add_separator_item (menu); + ka_applet_menu_add_separator_item (menu); - /* Quit */ - menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL); - g_signal_connect (G_OBJECT (menu_item), "activate", - G_CALLBACK (ka_applet_cb_quit), applet); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + /* Quit */ + menu_item = gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT, NULL); + g_signal_connect (G_OBJECT (menu_item), "activate", + G_CALLBACK (ka_applet_cb_quit), applet); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); - gtk_widget_show_all (menu); - applet->priv->context_menu = menu; + gtk_widget_show_all (menu); + applet->priv->context_menu = menu; - return TRUE; + return TRUE; } static void -ka_tray_icon_on_menu (GtkStatusIcon* status_icon G_GNUC_UNUSED, +ka_tray_icon_on_menu (GtkStatusIcon *status_icon G_GNUC_UNUSED, guint button, guint activate_time, gpointer user_data) { - KaApplet *applet = KA_APPLET(user_data); + KaApplet *applet = KA_APPLET (user_data); - KA_DEBUG("Trayicon right clicked: %d", applet->priv->pw_prompt_secs); - gtk_menu_popup (GTK_MENU (applet->priv->context_menu), NULL, NULL, - gtk_status_icon_position_menu, applet->priv->tray_icon, - button, activate_time); + KA_DEBUG ("Trayicon right clicked: %d", applet->priv->pw_prompt_secs); + gtk_menu_popup (GTK_MENU (applet->priv->context_menu), NULL, NULL, + gtk_status_icon_position_menu, applet->priv->tray_icon, + button, activate_time); } static gboolean -ka_tray_icon_on_click (GtkStatusIcon* status_icon G_GNUC_UNUSED, +ka_tray_icon_on_click (GtkStatusIcon *status_icon G_GNUC_UNUSED, gpointer data) { - KaApplet *applet = KA_APPLET(data); + KaApplet *applet = KA_APPLET (data); - KA_DEBUG("Trayicon clicked: %d", applet->priv->pw_prompt_secs); - ka_grab_credentials (applet); - return TRUE; + KA_DEBUG ("Trayicon clicked: %d", applet->priv->pw_prompt_secs); + ka_grab_credentials (applet); + return TRUE; } static gboolean -ka_applet_cb_show_trayicon (KaApplet* applet, - GParamSpec* property G_GNUC_UNUSED, - gpointer data G_GNUC_UNUSED) +ka_applet_create_tray_icon (KaApplet *self) { - g_return_val_if_fail (applet != NULL, FALSE); - g_return_val_if_fail (applet->priv->tray_icon != NULL, FALSE); - - gtk_status_icon_set_visible (applet->priv->tray_icon, applet->priv->show_trayicon); - return TRUE; -} + GtkStatusIcon *tray_icon; + if (self->priv->ns_persistence) + return FALSE; -static gboolean -ka_applet_create_tray_icon (KaApplet* applet) -{ - GtkStatusIcon* tray_icon; - - tray_icon = gtk_status_icon_new (); + tray_icon = self->priv->tray_icon = gtk_status_icon_new (); - g_signal_connect (G_OBJECT(tray_icon), "activate", - G_CALLBACK(ka_tray_icon_on_click), applet); - g_signal_connect (G_OBJECT(tray_icon), - "popup-menu", - G_CALLBACK(ka_tray_icon_on_menu), applet); - gtk_status_icon_set_from_icon_name (tray_icon, applet->priv->icons[exp_icon]); - gtk_status_icon_set_tooltip_text (tray_icon, PACKAGE); - gtk_status_icon_set_title (tray_icon, KA_NAME); - applet->priv->tray_icon = tray_icon; - return TRUE; + g_signal_connect (G_OBJECT (tray_icon), "activate", + G_CALLBACK (ka_tray_icon_on_click), self); + g_signal_connect (G_OBJECT (tray_icon), + "popup-menu", + G_CALLBACK (ka_tray_icon_on_menu), self); + gtk_status_icon_set_from_icon_name (tray_icon, + self->priv->icons[exp_icon]); + gtk_status_icon_set_tooltip_text (tray_icon, PACKAGE); + gtk_status_icon_set_title (tray_icon, KA_NAME); + return TRUE; } static int -ka_applet_setup_icons (KaApplet* applet) +ka_applet_setup_icons (KaApplet *applet) { - /* Add application specific icons to search path */ - gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), - DATA_DIR G_DIR_SEPARATOR_S "icons"); - applet->priv->icons[val_icon] = "krb-valid-ticket"; - applet->priv->icons[exp_icon] = "krb-expiring-ticket"; - applet->priv->icons[inv_icon] = "krb-no-valid-ticket"; - return TRUE; + /* Add application specific icons to search path */ + gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), + DATA_DIR G_DIR_SEPARATOR_S "icons"); + applet->priv->icons[val_icon] = "krb-valid-ticket"; + applet->priv->icons[exp_icon] = "krb-expiring-ticket"; + applet->priv->icons[inv_icon] = "krb-no-valid-ticket"; + return TRUE; } guint -ka_applet_get_pw_prompt_secs(const KaApplet* applet) +ka_applet_get_pw_prompt_secs (const KaApplet *applet) { - return applet->priv->pw_prompt_secs; + return applet->priv->pw_prompt_secs; } -gboolean -ka_applet_get_show_trayicon(const KaApplet* applet) +void +ka_applet_set_tgt_renewable (KaApplet *applet, gboolean renewable) { - return applet->priv->show_trayicon; + applet->priv->renewable = renewable; } -void -ka_applet_set_tgt_renewable(KaApplet* applet, gboolean renewable) +gboolean +ka_applet_get_tgt_renewable (const KaApplet *applet) { - applet->priv->renewable = renewable; + return applet->priv->renewable; } -gboolean -ka_applet_get_tgt_renewable(const KaApplet* applet) +KaPwDialog * +ka_applet_get_pwdialog (const KaApplet *applet) { - return applet->priv->renewable; + return applet->priv->pwdialog; } -KaPwDialog* -ka_applet_get_pwdialog(const KaApplet* applet) +GConfClient * +ka_applet_get_gconf_client (const KaApplet *self) { - return applet->priv->pwdialog; + return self->priv->gconf; } -GConfClient* -ka_applet_get_gconf_client(const KaApplet* self) +void +ka_applet_set_msg (KaApplet *self, const char *msg) { - return self->priv->gconf; + g_free (self->priv->krb_msg); + self->priv->krb_msg = g_strdup (msg); } void -ka_applet_signal_emit (KaApplet* this, KaAppletSignalNumber signum, - krb5_timestamp expiry) +ka_applet_signal_emit (KaApplet *this, + KaAppletSignalNumber signum, + krb5_timestamp expiry) { - KaAppletClass *klass = KA_APPLET_GET_CLASS (this); - char *princ; + KaAppletClass *klass = KA_APPLET_GET_CLASS (this); + char *princ; - princ = ka_unparse_name (); - if (!princ) - return; + princ = ka_unparse_name (); + if (!princ) + return; - g_signal_emit (this, klass->signals[signum], 0, princ, (guint32)expiry); - g_free (princ); + g_signal_emit (this, klass->signals[signum], 0, princ, (guint32) expiry); + g_free (princ); } + +static void +ka_ns_check_persistence (KaApplet *self) +{ + GList *caps; + GList *l; + + self->priv->ns_persistence = FALSE; + caps = notify_get_server_caps (); + if (caps == NULL) { + g_warning ("Failed to read server caps"); + return; + } + + l = g_list_find_custom (caps, "persistence", (GCompareFunc)strcmp); + if (l != NULL) { + self->priv->ns_persistence = TRUE; + KA_DEBUG ("Notification server supports persistence."); + } + g_list_foreach (caps, (GFunc) g_free, NULL); + g_list_free (caps); +} + + /* create the tray icon applet */ -KaApplet* -ka_applet_create() -{ - KaApplet* applet = ka_applet_new(); - GError *error = NULL; - gboolean ret; - - if (!(ka_applet_setup_icons (applet))) - g_error ("Failure to setup icons"); - if (!ka_applet_create_tray_icon (applet)) - g_error ("Failure to create tray icon"); - if (!ka_applet_create_context_menu (applet)) - g_error ("Failure to create context menu"); - gtk_window_set_default_icon_name (applet->priv->icons[val_icon]); - g_signal_connect (applet, "notify::show-trayicon", - G_CALLBACK (ka_applet_cb_show_trayicon), NULL); - - applet->priv->uixml = gtk_builder_new(); - ret = gtk_builder_add_from_file(applet->priv->uixml, - KA_DATA_DIR G_DIR_SEPARATOR_S - PACKAGE ".xml", &error); - if (!ret) { - g_assert (error); - g_assert (error->message); - g_error ("Failed to load UI XML: %s", error->message); - } - applet->priv->pwdialog = ka_pwdialog_create(applet->priv->uixml); - g_return_val_if_fail (applet->priv->pwdialog != NULL, NULL); - - applet->priv->gconf = ka_gconf_init (applet); - g_return_val_if_fail (applet->priv->gconf != NULL, NULL); - - ka_tickets_dialog_create (applet->priv->uixml); - applet->priv->loader = ka_plugin_loader_create (applet); - g_return_val_if_fail (applet->priv->loader != NULL, NULL); - - return applet; +KaApplet * +ka_applet_create () +{ + KaApplet *applet = ka_applet_new (); + GError *error = NULL; + gboolean ret; + + if (!(ka_applet_setup_icons (applet))) + g_error ("Failure to setup icons"); + gtk_window_set_default_icon_name (applet->priv->icons[val_icon]); + + if (!ka_applet_create_context_menu (applet)) + g_error ("Failure to create context menu"); + + ka_ns_check_persistence(applet); + ka_applet_create_tray_icon (applet); + + applet->priv->uixml = gtk_builder_new (); + ret = gtk_builder_add_from_file (applet->priv->uixml, + KA_DATA_DIR G_DIR_SEPARATOR_S + PACKAGE ".xml", &error); + if (!ret) { + g_assert (error); + g_assert (error->message); + g_error ("Failed to load UI XML: %s", error->message); + } + applet->priv->pwdialog = ka_pwdialog_create (applet->priv->uixml); + g_return_val_if_fail (applet->priv->pwdialog != NULL, NULL); + + applet->priv->gconf = ka_gconf_init (applet); + g_return_val_if_fail (applet->priv->gconf != NULL, NULL); + + ka_tickets_dialog_create (applet->priv->uixml); + applet->priv->loader = ka_plugin_loader_create (applet); + g_return_val_if_fail (applet->priv->loader != NULL, NULL); + + return applet; } + +/* + * vim:ts:sts=4:sw=4:et: + */ diff --git a/src/ka-dialog.c b/src/ka-dialog.c index f11293d..ce86367 100644 --- a/src/ka-dialog.c +++ b/src/ka-dialog.c @@ -32,7 +32,6 @@ #include <glib/gi18n.h> #include <gio/gio.h> -#include "gtksecentry.h" #include "secmem-util.h" #include "memory.h" @@ -44,7 +43,7 @@ #include "ka-tickets.h" #ifdef ENABLE_NETWORK_MANAGER -#include <libnm_glib.h> +#include <nm-client.h> #endif #ifdef HAVE_HX509_ERR_H @@ -65,7 +64,7 @@ static int ka_renew_credentials (KaApplet* applet); static gboolean ka_get_tgt_from_ccache (krb5_context context, krb5_creds *creds); #ifdef ENABLE_NETWORK_MANAGER -libnm_glib_ctx *nm_context; +NMClient *nm_client; #endif /* YAY for different Kerberos implementations */ @@ -403,6 +402,9 @@ auth_dialog_prompter (krb5_context ctx G_GNUC_UNUSED, canceled = FALSE; canceled_creds_expiry = 0; + if (banner && !num_prompts) + ka_applet_set_msg (applet, banner); + for (i = 0; i < num_prompts; i++) { const gchar *password = NULL; int password_len = 0; @@ -454,29 +456,30 @@ cleanup: #ifdef ENABLE_NETWORK_MANAGER static void -network_state_cb (libnm_glib_ctx *context, - gpointer data) +ka_nm_client_state_changed_cb (NMClient *client, + GParamSpec *pspec G_GNUC_UNUSED, + gpointer data) { - gboolean *online = (gboolean*) data; - - libnm_glib_state state; - - state = libnm_glib_get_network_state (context); - - switch (state) - { - case LIBNM_NO_DBUS: - case LIBNM_NO_NETWORKMANAGER: - case LIBNM_INVALID_CONTEXT: - /* do nothing */ - break; - case LIBNM_NO_NETWORK_CONNECTION: - *online = FALSE; - break; - case LIBNM_ACTIVE_NETWORK_CONNECTION: - *online = TRUE; - break; - } + NMState state; + gboolean *online = (gboolean*) data; + + state = nm_client_get_state(client); + switch (state) { + case NM_STATE_UNKNOWN: + case NM_STATE_ASLEEP: + case NM_STATE_CONNECTING: + KA_DEBUG("Network state: %d", state); + /* do nothing */ + break; + case NM_STATE_DISCONNECTED: + KA_DEBUG("Network disconnected"); + *online = FALSE; + break; + case NM_STATE_CONNECTED: + KA_DEBUG("Network connected"); + *online = TRUE; + break; + } } #endif @@ -484,38 +487,17 @@ network_state_cb (libnm_glib_ctx *context, static gboolean credentials_expiring (gpointer *data) { - int retval; - gboolean give_up; KaApplet* applet = KA_APPLET(data); KA_DEBUG("Checking expiry <%ds", ka_applet_get_pw_prompt_secs(applet)); if (credentials_expiring_real (applet) && is_online) { KA_DEBUG("Expiry @ %ld", creds_expiry); - if (!ka_renew_credentials (applet)) { + if (!ka_renew_credentials (applet)) KA_DEBUG("Credentials renewed"); - goto out; - } - - /* no popup when using a trayicon */ - if (ka_applet_get_show_trayicon(applet)) - goto out; - - give_up = canceled && (creds_expiry == canceled_creds_expiry); - if (!give_up) { - do { - retval = grab_credentials (applet); - give_up = canceled && - (creds_expiry == canceled_creds_expiry); - } while ((retval != 0) && - (retval != KRB5_REALM_CANT_RESOLVE) && - (retval != KRB5_KDC_UNREACH) && - invalid_auth && - !give_up); - } } -out: ka_applet_update_status(applet, creds_expiry); + return TRUE; } @@ -845,7 +827,8 @@ ka_renew_credentials (KaApplet* applet) my_creds.times.endtime); } out: - creds_expiry = my_creds.times.endtime; + if (!retval) + creds_expiry = my_creds.times.endtime; krb5_free_cred_contents (kcontext, &my_creds); krb5_cc_close (kcontext, ccache); return retval; @@ -1033,10 +1016,10 @@ static void ka_nm_shutdown(void) { #ifdef ENABLE_NETWORK_MANAGER - if (nm_context) { - libnm_glib_shutdown (nm_context); - nm_context = NULL; - } + if (nm_client) { + g_object_unref (nm_client); + nm_client = NULL; + } #endif } @@ -1045,21 +1028,18 @@ static gboolean ka_nm_init(void) { #ifdef ENABLE_NETWORK_MANAGER - guint32 nm_callback_id; - - nm_context = libnm_glib_init (); - if (!nm_context) { - g_warning ("Could not initialize libnm_glib"); - } else { - nm_callback_id = libnm_glib_register_callback (nm_context, network_state_cb, &is_online, NULL); - if (nm_callback_id == 0) { - ka_nm_shutdown (); - - g_warning ("Could not connect to NetworkManager, connection status will not be managed!"); - } - } + nm_client = nm_client_new(); + if (!nm_client) { + g_warning ("Could not initialize nm-client"); + } else { + g_signal_connect(nm_client, "notify::state", + G_CALLBACK(ka_nm_client_state_changed_cb), + &is_online); + /* Set initial state */ + ka_nm_client_state_changed_cb(nm_client, NULL, &is_online); + } #endif /* ENABLE_NETWORK_MANAGER */ - return TRUE; + return TRUE; } @@ -1117,10 +1097,9 @@ main (int argc, char *argv[]) return 1; ka_nm_init(); - if (credentials_expiring ((gpointer)applet)) { - g_timeout_add_seconds (CREDENTIAL_CHECK_INTERVAL, (GSourceFunc)credentials_expiring, applet); - monitor = monitor_ccache (applet); - } + g_timeout_add_seconds (CREDENTIAL_CHECK_INTERVAL, (GSourceFunc)credentials_expiring, applet); + monitor = monitor_ccache (applet); + ka_dbus_service(applet); gtk_main (); } diff --git a/src/ka-entry-buffer.c b/src/ka-entry-buffer.c new file mode 100644 index 0000000..45587bf --- /dev/null +++ b/src/ka-entry-buffer.c @@ -0,0 +1,229 @@ +/* Krb5 Auth Applet -- Acquire and release kerberos tickets + * + * (C) 2010 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. + * + */ + +/* Create an entry buffer that uses the secmem routines for password storage */ + +#include "config.h" + +#include <gtk/gtk.h> +#include <string.h> + +#include "ka-entry-buffer.h" +#include "memory.h" + +struct _KaEntryBuffer { + GtkEntryBuffer parent; + + KaEntryBufferPrivate *priv; +}; + +struct _KaEntryBufferClass { + GtkEntryBufferClass parent_class; +}; + +G_DEFINE_TYPE (KaEntryBuffer, ka_entry_buffer, GTK_TYPE_ENTRY_BUFFER) + +struct _KaEntryBufferPrivate { + gchar *password; + gsize password_size; + gsize password_bytes; + guint password_chars; +}; + + +static const gchar * +ka_entry_buffer_pw_get_text (GtkEntryBuffer *buffer, + gsize * n_bytes) +{ + KaEntryBuffer *self = KA_ENTRY_BUFFER(buffer); + + if (n_bytes) + *n_bytes = self->priv->password_bytes; + if (!self->priv->password) + return ""; + return self->priv->password; +} + + +static guint +ka_entry_buffer_pw_get_length (GtkEntryBuffer *buffer) +{ + KaEntryBuffer *self = KA_ENTRY_BUFFER(buffer); + return self->priv->password_chars; +} + + +static guint +ka_entry_buffer_pw_insert_text (GtkEntryBuffer *buffer, + guint position, + const gchar *chars, + guint n_chars) +{ + KaEntryBuffer *self = KA_ENTRY_BUFFER(buffer); + KaEntryBufferPrivate *pv = self->priv; + gsize prev_size; + gsize n_bytes; + gsize at; + + n_bytes = g_utf8_offset_to_pointer (chars, n_chars) - chars; + + /* Need more memory */ + if (n_bytes + pv->password_bytes + 1 > pv->password_size) { + gchar *et_new; + + prev_size = pv->password_size; + + /* Calculate our new buffer size */ + while (n_bytes + pv->password_bytes + 1 > pv->password_size) { + if (pv->password_size == 0) + pv->password_size = PW_MIN_SIZE; + else { + if (2 * pv->password_size < GTK_ENTRY_BUFFER_MAX_SIZE) + pv->password_size *= 2; + else { + pv->password_size = GTK_ENTRY_BUFFER_MAX_SIZE; + if (n_bytes > + pv->password_size - pv->password_bytes - 1) { + n_bytes = + pv->password_size - pv->password_bytes - 1; + n_bytes = + g_utf8_find_prev_char (chars, + chars + n_bytes + 1) - + chars; + n_chars = g_utf8_strlen (chars, n_bytes); + } + break; + } + } + } + + et_new = secmem_malloc (pv->password_size); + memcpy (et_new, pv->password, + MIN (prev_size, pv->password_size)); + secmem_free (pv->password); + pv->password = et_new; + } + + /* Actual text insertion */ + at = g_utf8_offset_to_pointer (pv->password, + position) - pv->password; + g_memmove (pv->password + at + n_bytes, pv->password + at, + pv->password_bytes - at); + memcpy (pv->password + at, chars, n_bytes); + + /* Book keeping */ + pv->password_bytes += n_bytes; + pv->password_chars += n_chars; + pv->password[pv->password_bytes] = '\0'; + + gtk_entry_buffer_emit_inserted_text (GTK_ENTRY_BUFFER(self), position, chars, n_chars); + return n_chars; +} + + +static guint +ka_entry_buffer_pw_delete_text (GtkEntryBuffer *buffer, + guint position, guint n_chars) +{ + KaEntryBuffer *self = KA_ENTRY_BUFFER(buffer); + KaEntryBufferPrivate *pv = self->priv; + gsize start, end; + + if (position > pv->password_chars) + position = pv->password_chars; + if (position + n_chars > pv->password_chars) + n_chars = pv->password_chars - position; + + if (n_chars > 0) { + start = + g_utf8_offset_to_pointer (pv->password, + position) - pv->password; + end = + g_utf8_offset_to_pointer (pv->password, + position + n_chars) - pv->password; + + g_memmove (pv->password + start, pv->password + end, + pv->password_bytes + 1 - end); + pv->password_chars -= n_chars; + pv->password_bytes -= (end - start); + gtk_entry_buffer_emit_deleted_text (GTK_ENTRY_BUFFER(self), position, n_chars); + } + return n_chars; +} + + +static void +ka_entry_buffer_dispose (GObject *object) +{ + G_OBJECT_CLASS (ka_entry_buffer_parent_class)->dispose (object); +} + +static void +ka_entry_buffer_finalize (GObject *object) +{ + KaEntryBuffer *self = KA_ENTRY_BUFFER(object); + + if (self->priv->password) { + secmem_free (self->priv->password); + self->priv->password_size = 0; + self->priv->password_bytes = 0; + self->priv->password_chars = 0; + } + G_OBJECT_CLASS (ka_entry_buffer_parent_class)->finalize (object); +} + +static void +ka_entry_buffer_class_init (KaEntryBufferClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkEntryBufferClass *eb_class = GTK_ENTRY_BUFFER_CLASS (klass); + + g_type_class_add_private (klass, sizeof (KaEntryBufferPrivate)); + + eb_class->get_text = ka_entry_buffer_pw_get_text; + eb_class->get_length = ka_entry_buffer_pw_get_length; + eb_class->insert_text = ka_entry_buffer_pw_insert_text; + eb_class->delete_text = ka_entry_buffer_pw_delete_text; + + object_class->dispose = ka_entry_buffer_dispose; + object_class->finalize = ka_entry_buffer_finalize; +} + +static void +ka_entry_buffer_init (KaEntryBuffer *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE(self, + KA_TYPE_ENTRY_BUFFER, + KaEntryBufferPrivate); + self->priv->password = NULL; + self->priv->password_size = 0; + self->priv->password_bytes = 0; + self->priv->password_chars = 0; +} + +KaEntryBuffer * +ka_entry_buffer_new (void) +{ + return g_object_new (KA_TYPE_ENTRY_BUFFER, NULL); +} + +/* + * vim:ts:sts=4:sw=4:et: + */ diff --git a/src/ka-entry-buffer.h b/src/ka-entry-buffer.h new file mode 100644 index 0000000..5626ac4 --- /dev/null +++ b/src/ka-entry-buffer.h @@ -0,0 +1,58 @@ +/* Krb5 Auth Applet -- Acquire and release kerberos tickets + * + * (C) 2010 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 KA_ENTRY_BUFFER_H +#define KA_ENTRY_BUFFER_H + +#include <glib-object.h> + +G_BEGIN_DECLS + +#define KA_TYPE_ENTRY_BUFFER ka_entry_buffer_get_type() + +#define KA_ENTRY_BUFFER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), KA_TYPE_ENTRY_BUFFER, KaEntryBuffer)) + +#define KA_ENTRY_BUFFER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), KA_TYPE_ENTRY_BUFFER, KaEntryBufferClass)) + +#define KA_IS_ENTRY_BUFFER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), KA_TYPE_ENTRY_BUFFER)) + +#define KA_IS_ENTRY_BUFFER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), KA_TYPE_ENTRY_BUFFER)) + +#define KA_ENTRY_BUFFER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), KA_TYPE_ENTRY_BUFFER, KaEntryBufferClass)) + +/* Minimum buffer size */ +#define PW_MIN_SIZE 32 + +typedef struct _KaEntryBuffer KaEntryBuffer; +typedef struct _KaEntryBufferClass KaEntryBufferClass; +typedef struct _KaEntryBufferPrivate KaEntryBufferPrivate; + +GType ka_entry_buffer_get_type (void); + +KaEntryBuffer* ka_entry_buffer_new (void); + +G_END_DECLS + +#endif /* _KA_ENTRY_BUFFER */ diff --git a/src/ka-gconf.c b/src/ka-gconf.c index 4e3d1aa..0735808 100644 --- a/src/ka-gconf.c +++ b/src/ka-gconf.c @@ -84,19 +84,6 @@ ka_gconf_set_prompt_mins (GConfClient* client, KaApplet* applet) static gboolean -ka_gconf_set_show_trayicon (GConfClient* client, KaApplet* applet) -{ - gboolean show_trayicon = TRUE; - - if(!ka_gconf_get_bool(client, KA_GCONF_KEY_SHOW_TRAYICON, &show_trayicon)) { - show_trayicon = TRUE; - } - g_object_set(applet, "show-trayicon", show_trayicon, NULL); - return TRUE; -} - - -static gboolean ka_gconf_set_tgt_forwardable (GConfClient* client, KaApplet* applet) { gboolean forwardable = FALSE; @@ -153,8 +140,6 @@ ka_gconf_key_changed_callback (GConfClient* client, ka_gconf_set_principal (client, applet); } else if (g_strcmp0 (key, KA_GCONF_KEY_PROMPT_MINS) == 0) { ka_gconf_set_prompt_mins (client, applet); - } else if (g_strcmp0 (key, KA_GCONF_KEY_SHOW_TRAYICON) == 0) { - 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_PK_ANCHORS) == 0) { @@ -195,7 +180,6 @@ ka_gconf_init (KaApplet* applet) /* setup defaults */ ka_gconf_set_principal (client, 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_pk_anchors(client, applet); ka_gconf_set_tgt_forwardable(client, applet); diff --git a/src/ka-pwdialog.c b/src/ka-pwdialog.c index da34471..0570ac2 100644 --- a/src/ka-pwdialog.c +++ b/src/ka-pwdialog.c @@ -25,6 +25,7 @@ #include "ka-applet-priv.h" #include "ka-dialog.h" #include "ka-pwdialog.h" +#include "ka-entry-buffer.h" struct _KaPwDialog { GObject parent; @@ -196,7 +197,7 @@ ka_pwdialog_hide (const KaPwDialog* pwdialog, gboolean force) const gchar* ka_pwdialog_get_password(KaPwDialog *pwdialog) { - return gtk_secure_entry_get_text (GTK_SECURE_ENTRY (pwdialog->priv->pw_entry)); + return gtk_entry_get_text (GTK_ENTRY(pwdialog->priv->pw_entry)); } gboolean @@ -229,7 +230,6 @@ ka_pwdialog_setup (KaPwDialog* pwdialog, const gchar *krb5prompt, { KaPwDialogPrivate *priv = pwdialog->priv; gchar *wrong_markup = NULL; - GtkWidget *e; gchar *prompt; int pw4len; @@ -251,13 +251,8 @@ ka_pwdialog_setup (KaPwDialog* pwdialog, const gchar *krb5prompt, } } - e = gtk_entry_new (); - gtk_secure_entry_set_invisible_char (GTK_SECURE_ENTRY (priv->pw_entry), - gtk_entry_get_invisible_char (GTK_ENTRY (e))); - gtk_widget_destroy (e); - /* Clear the password entry field */ - gtk_secure_entry_set_text (GTK_SECURE_ENTRY (priv->pw_entry), ""); + gtk_entry_set_text (GTK_ENTRY (priv->pw_entry), ""); /* Use the prompt label that krb5 provides us */ gtk_label_set_text (GTK_LABEL (priv->krb_label), prompt); @@ -292,18 +287,21 @@ KaPwDialog* ka_pwdialog_create(GtkBuilder* xml) { KaPwDialog *pwdialog = ka_pwdialog_new(); + KaEntryBuffer *buffer = ka_entry_buffer_new (); KaPwDialogPrivate *priv = pwdialog->priv; GtkWidget *entry_hbox = NULL; priv->dialog = GTK_WIDGET (gtk_builder_get_object (xml, "krb5_dialog")); priv->status_label = GTK_WIDGET (gtk_builder_get_object (xml, "krb5_status_label")); priv->krb_label = GTK_WIDGET (gtk_builder_get_object (xml, "krb5_message_label")); - priv->pw_entry = GTK_WIDGET (gtk_secure_entry_new ()); + priv->pw_entry = GTK_WIDGET (gtk_entry_new_with_buffer (GTK_ENTRY_BUFFER(buffer))); + gtk_entry_set_visibility(GTK_ENTRY(priv->pw_entry), FALSE); + g_object_unref (buffer); priv->error_dialog = ka_error_dialog_new(); entry_hbox = GTK_WIDGET (gtk_builder_get_object (xml, "entry_hbox")); gtk_container_add (GTK_CONTAINER (entry_hbox), priv->pw_entry); - gtk_secure_entry_set_activates_default (GTK_SECURE_ENTRY (priv->pw_entry), TRUE); + gtk_entry_set_activates_default (GTK_ENTRY (priv->pw_entry), TRUE); gtk_widget_show (priv->pw_entry); return pwdialog; diff --git a/src/ka-pwdialog.h b/src/ka-pwdialog.h index 8b39402..1c244f8 100644 --- a/src/ka-pwdialog.h +++ b/src/ka-pwdialog.h @@ -23,9 +23,9 @@ #include <glib.h> #include <glib-object.h> +#include <gtk/gtk.h> #include "config.h" -#include "gtksecentry.h" G_BEGIN_DECLS diff --git a/src/krb5-auth-dialog.desktop.in b/src/krb5-auth-dialog.desktop.in index 6c83b31..5569646 100644 --- a/src/krb5-auth-dialog.desktop.in +++ b/src/krb5-auth-dialog.desktop.in @@ -1,9 +1,11 @@ [Desktop Entry] -_Name=Network Authentication +_Name=Kerberos Authentication _Comment=Kerberos Network Authentication Dialog Exec=krb5-auth-dialog Terminal=false Type=Application +NoDisplay=true +Icon=krb-valid-ticket X-GNOME-Bugzilla-Bugzilla=GNOME X-GNOME-Bugzilla-Product=krb5-auth-dialog X-GNOME-Bugzilla-Component=general diff --git a/src/krb5-auth-dialog.schemas.in b/src/krb5-auth-dialog.schemas.in index bb59f8e..4a88f2b 100644 --- a/src/krb5-auth-dialog.schemas.in +++ b/src/krb5-auth-dialog.schemas.in @@ -1,19 +1,6 @@ <gconfschemafile> <schemalist> <schema> - <key>/schemas/apps/krb5-auth-dialog/show_trayicon</key> - <applyto>/apps/krb5-auth-dialog/show_trayicon</applyto> - <owner>krb5-auth-dialog</owner> - <type>bool</type> - <default>1</default> - - <locale name="C"> - <short>Show trayicon</short> - <long>Show a trayicon in the status area of the panel</long> - </locale> - </schema> - - <schema> <key>/schemas/apps/krb5-auth-dialog/principal</key> <applyto>/apps/krb5-auth-dialog/principal</applyto> <owner>krb5-auth-dialog</owner> diff --git a/src/krb5-auth-dialog.xml b/src/krb5-auth-dialog.xml index 0df79ef..f36f537 100644 --- a/src/krb5-auth-dialog.xml +++ b/src/krb5-auth-dialog.xml @@ -4,11 +4,10 @@ <!-- interface-naming-policy toplevel-contextual --> <object class="GtkDialog" id="krb5_dialog"> <property name="border_width">6</property> - <property name="title" translatable="yes">Network Authentication</property> + <property name="title" translatable="yes">Kerberos Authentication</property> <property name="resizable">False</property> <property name="window_position">center-always</property> <property name="type_hint">dialog</property> - <property name="has_separator">False</property> <child internal-child="vbox"> <object class="GtkVBox" id="dialog-vbox2"> <property name="visible">True</property> @@ -157,7 +156,6 @@ <property name="title" translatable="yes">Service Tickets</property> <property name="resizable">False</property> <property name="type_hint">normal</property> - <property name="has_separator">False</property> <child internal-child="vbox"> <object class="GtkVBox" id="tickets-vbox2"> <property name="visible">True</property> |