From 45e3112c89c4be974014fe0b7f7341e05894f294 Mon Sep 17 00:00:00 2001 From: Guido Günther Date: Sun, 1 Nov 2009 19:51:11 +0100 Subject: Imported Upstream version 0.14 --- src/krb5-auth-dialog.c | 9 +++++++++ src/krb5-auth-dialog.xml | 1 + src/krb5-auth-pwdialog.c | 49 +++++++++++++++++++++++++++++++++--------------- src/krb5-auth-tickets.c | 43 ++++++++++++++++++++++++++++++++---------- src/krb5-auth-tickets.h | 3 +++ 5 files changed, 80 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/krb5-auth-dialog.c b/src/krb5-auth-dialog.c index b8f95c2..e831db2 100644 --- a/src/krb5-auth-dialog.c +++ b/src/krb5-auth-dialog.c @@ -309,6 +309,8 @@ ka_get_service_tickets (GtkListStore *tickets) ccache, &cursor, &creds)) == 0) { + gboolean renewable, proxiable, forwardable; + if (creds.times.starttime) ka_format_time(creds.times.starttime, start_time, sizeof(start_time)); @@ -325,6 +327,10 @@ ka_get_service_tickets (GtkListStore *tickets) "%s (%s)", end_time, _("Expired")); + forwardable = get_cred_forwardable(&creds); + renewable = get_cred_renewable(&creds); + proxiable = get_cred_proxiable(&creds); + ret = krb5_unparse_name (kcontext, creds.server, &name); if (!ret) { gtk_list_store_append(tickets, &iter); @@ -332,6 +338,9 @@ ka_get_service_tickets (GtkListStore *tickets) PRINCIPAL_COLUMN, name, START_TIME_COLUMN, start_time, END_TIME_COLUMN, end_time_markup, + FORWARDABLE_COLUMN, forwardable, + RENEWABLE_COLUMN, renewable, + PROXIABLE_COLUMN, proxiable, -1); free(name); } else diff --git a/src/krb5-auth-dialog.xml b/src/krb5-auth-dialog.xml index f1a9d11..d379265 100644 --- a/src/krb5-auth-dialog.xml +++ b/src/krb5-auth-dialog.xml @@ -155,6 +155,7 @@ 5 Service Tickets + False normal False diff --git a/src/krb5-auth-pwdialog.c b/src/krb5-auth-pwdialog.c index 0bfffd7..7e050b2 100644 --- a/src/krb5-auth-pwdialog.c +++ b/src/krb5-auth-pwdialog.c @@ -59,6 +59,19 @@ ka_pwdialog_init(KaPwDialog *pwdialog) KaPwDialogPrivate); } +static void +ka_pwdialog_finalize(GObject *object) +{ + KaPwDialog* pwdialog = KA_PWDIALOG (object); + GObjectClass *parent_class = G_OBJECT_CLASS (ka_pwdialog_parent_class); + + gtk_widget_destroy (pwdialog->priv->error_dialog); + pwdialog->priv->error_dialog = NULL; + + if (parent_class->finalize != NULL) + parent_class->finalize (object); +} + static void ka_pwdialog_class_init(KaPwDialogClass *klass) { @@ -128,10 +141,8 @@ ka_pwdialog_run(KaPwDialog* self) /* cleanup old error dialog, if present (e.g. user didn't acknowledge * the error but clicked the tray icon again) */ - if (self->priv->error_dialog) { - gtk_widget_destroy (self->priv->error_dialog); - self->priv->error_dialog = NULL; - } + if (self->priv->error_dialog) + gtk_widget_hide (self->priv->error_dialog); /* make sure we pop up on top */ gtk_window_set_keep_above (GTK_WINDOW (dialog), TRUE); @@ -153,20 +164,14 @@ ka_pwdialog_run(KaPwDialog* self) void ka_pwdialog_error(KaPwDialog* self, const char *msg) { - GtkWidget *dialog; - - dialog = gtk_message_dialog_new ( - GTK_WINDOW(self->priv->dialog), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_ERROR, - GTK_BUTTONS_CLOSE, - "%s", KA_NAME); + GtkWidget *dialog = self->priv->error_dialog; + gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("Couldn't acquire kerberos ticket: '%s'"), _(msg)); - self->priv->error_dialog = dialog; + gtk_widget_show (GTK_WIDGET(dialog)); gtk_dialog_run (GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); + gtk_widget_hide(dialog); } @@ -265,6 +270,20 @@ ka_pwdialog_setup (KaPwDialog* pwdialog, const gchar *krb5prompt, g_free (prompt); } + +static GtkWidget* +ka_error_dialog_new(void) +{ + GtkWidget *dialog = gtk_message_dialog_new ( + NULL, GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, + _("%s Error"), KA_NAME); + gtk_window_set_title(GTK_WINDOW(dialog), _(KA_NAME)); + gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), FALSE); + return dialog; +} + + KaPwDialog* ka_pwdialog_create(GtkBuilder* xml) { @@ -276,7 +295,7 @@ ka_pwdialog_create(GtkBuilder* xml) 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->error_dialog = NULL; + 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); diff --git a/src/krb5-auth-tickets.c b/src/krb5-auth-tickets.c index e926324..7c177a9 100644 --- a/src/krb5-auth-tickets.c +++ b/src/krb5-auth-tickets.c @@ -32,38 +32,61 @@ static GtkWidget *tickets_dialog; GtkWidget* ka_tickets_dialog_create(GtkBuilder *xml) { - GtkCellRenderer *renderer; + GtkCellRenderer *text_renderer, *toggle_renderer; GtkTreeViewColumn *column; GtkTreeView *tickets_view; tickets = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, - G_TYPE_STRING); + G_TYPE_STRING, + G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); tickets_dialog = GTK_WIDGET (gtk_builder_get_object (xml, "krb5_tickets_dialog")); tickets_view = GTK_TREE_VIEW (gtk_builder_get_object (xml, "krb5_tickets_treeview")); gtk_tree_view_set_model(GTK_TREE_VIEW(tickets_view), GTK_TREE_MODEL(tickets)); - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes("Principal", - renderer, + text_renderer = gtk_cell_renderer_text_new(); + toggle_renderer = gtk_cell_renderer_toggle_new(); + + column = gtk_tree_view_column_new_with_attributes(_("Principal"), + text_renderer, "text", PRINCIPAL_COLUMN, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tickets_view), column); - column = gtk_tree_view_column_new_with_attributes("Start Time", - renderer, + column = gtk_tree_view_column_new_with_attributes(_("Start Time"), + text_renderer, "text", START_TIME_COLUMN, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tickets_view), column); - column = gtk_tree_view_column_new_with_attributes("End Time", - renderer, + column = gtk_tree_view_column_new_with_attributes(_("End Time"), + text_renderer, "markup", END_TIME_COLUMN, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (tickets_view), column); + column = gtk_tree_view_column_new_with_attributes(_("Fwd"), + toggle_renderer, + "active", + FORWARDABLE_COLUMN, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (tickets_view), column); + column = gtk_tree_view_column_new_with_attributes(_("Proxy"), + toggle_renderer, + "active", + PROXIABLE_COLUMN, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (tickets_view), column); + column = gtk_tree_view_column_new_with_attributes(_("Renew"), + toggle_renderer, + "active", + RENEWABLE_COLUMN, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (tickets_view), column); return tickets_dialog; } @@ -71,7 +94,7 @@ void ka_tickets_dialog_run() { if (ka_get_service_tickets(tickets)) { - gtk_widget_show(tickets_dialog); + gtk_window_present(GTK_WINDOW(tickets_dialog)); gtk_dialog_run(GTK_DIALOG(tickets_dialog)); gtk_widget_hide(tickets_dialog); } else { diff --git a/src/krb5-auth-tickets.h b/src/krb5-auth-tickets.h index a5fa869..02d67b3 100644 --- a/src/krb5-auth-tickets.h +++ b/src/krb5-auth-tickets.h @@ -25,6 +25,9 @@ enum ticket_columns { PRINCIPAL_COLUMN, START_TIME_COLUMN, END_TIME_COLUMN, + FORWARDABLE_COLUMN, + RENEWABLE_COLUMN, + PROXIABLE_COLUMN, N_COLUMNS }; -- cgit