Author: hawk Date: Thu Nov 25 09:39:07 2010 GMT Module: packages Tag: HEAD ---- Log message: - merged from OpenSUSE: make gnomesu look and act more like PolicyKit-gnome (HIG compliant, use the icon theme, etc.)
---- Files affected: packages/libgnomesu: libgnomesu-modernize.patch (NONE -> 1.1) (NEW) ---- Diffs: ================================================================ Index: packages/libgnomesu/libgnomesu-modernize.patch diff -u /dev/null packages/libgnomesu/libgnomesu-modernize.patch:1.1 --- /dev/null Thu Nov 25 10:39:07 2010 +++ packages/libgnomesu/libgnomesu-modernize.patch Thu Nov 25 10:39:02 2010 @@ -0,0 +1,889 @@ +Index: src/gnomesu-auth-dialog.c +=================================================================== +--- src/gnomesu-auth-dialog.c.orig ++++ src/gnomesu-auth-dialog.c +@@ -1,5 +1,7 @@ + /* libgnomesu - Library for providing superuser privileges to GNOME apps. +- * Copyright (C) 2004 Hongli Lai ++ * Copyright (C) 2004 Hongli Lai ++ * Copyright (C) 2007 David Zeuthen <[email protected]> ++ * Copyright (C) 2008 Novell, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public +@@ -24,29 +26,159 @@ + #include <libintl.h> + + #include "gnomesu-auth-dialog.h" +-#include "auth-icon.csource" + #include "utils.h" + + #undef _ + #define _(x) ((gchar *) dgettext (GETTEXT_PACKAGE, x)) + +- + G_BEGIN_DECLS + +-static gpointer parent_class = NULL; +- + struct _GnomesuAuthDialogPrivate { ++ GdkCursor *watch; + GtkWidget *left_action_area; +- GtkWidget *icon; +- GtkWidget *desc_label; ++ GtkWidget *message_label; ++ GtkWidget *message_label_secondary; ++ GtkWidget *user_combobox; ++ GtkWidget *prompt_label; + GtkWidget *command_desc_label; + GtkWidget *command_label; +- GtkWidget *prompt_label; +- GtkWidget *input; +- GtkWidget *mode_label; +- GdkCursor *watch; ++ GtkWidget *password_entry; ++ GtkWidget *details_expander; ++ GtkWidget *icon; + }; + ++G_DEFINE_TYPE (GnomesuAuthDialog, gnomesu_auth_dialog, GTK_TYPE_DIALOG); ++ ++// ============================================================================ ++// PRIVATE UTILITIES ++// ============================================================================ ++ ++static GList * ++split_lines_strip_markup (const gchar *text, gssize length, gint max_lines) ++{ ++ GList *lines = NULL; ++ gint line_count = 0; ++ GString *str; ++ const gchar *p; ++ const gchar *end; ++ gint ignore_ref = 0; ++ ++ g_return_val_if_fail (text != NULL, NULL); ++ ++ if (length < 0) ++ length = strlen (text); ++ ++ str = g_string_sized_new (length); ++ ++ p = text; ++ end = text + length; ++ ++ while (p != end) { ++ const gchar *next; ++ next = g_utf8_next_char (p); ++ ++ switch (*p) { ++ case '<': ignore_ref++; break; ++ case '>': ignore_ref--; break; ++ default: ++ if (ignore_ref <= 0) { ++ if (*p == '\n' && (max_lines <= 0 || line_count < max_lines - 1)) { ++ lines = g_list_append (lines, g_string_free (str, FALSE)); ++ str = g_string_sized_new (end - p + 1); ++ line_count++; ++ break; ++ } ++ ++ g_string_append_len (str, p, next - p); ++ } ++ break; ++ } ++ ++ p = next; ++ } ++ ++ lines = g_list_append (lines, g_string_free (str, FALSE)); ++ return lines; ++} ++ ++static void ++gnomesu_auth_dialog_set_icon_internal (GnomesuAuthDialog *auth_dialog, GdkPixbuf *vendor_pixbuf) ++{ ++ GdkPixbuf *pixbuf; ++ GdkPixbuf *copy_pixbuf; ++ ++ gint icon_size = 48, half_size; ++ gint v_width, v_height; ++ gint v_scale_width, v_scale_height; ++ gint ofs_x, ofs_y; ++ gdouble s_x, s_y; ++ ++ pixbuf = NULL; ++ copy_pixbuf = NULL; ++ half_size = icon_size / 2; ++ ++ pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), ++ GTK_STOCK_DIALOG_AUTHENTICATION, icon_size, 0, NULL); ++ if (pixbuf == NULL) ++ goto out; ++ ++ if (vendor_pixbuf == NULL) { ++ gtk_image_set_from_pixbuf (GTK_IMAGE (auth_dialog->_priv->icon), pixbuf); ++ goto out; ++ } ++ ++ /* need to copy the pixbuf since we're modifying it */ ++ copy_pixbuf = gdk_pixbuf_copy (pixbuf); ++ if (copy_pixbuf == NULL) ++ goto out; ++ ++ /* compute scaling and translating for overlay */ ++ v_width = gdk_pixbuf_get_width (vendor_pixbuf); ++ v_height = gdk_pixbuf_get_height (vendor_pixbuf); ++ v_scale_width = v_width <= half_size ? v_width : half_size; ++ v_scale_height = v_height <= half_size ? v_height : half_size; ++ s_x = v_width <= half_size ? 1.0 : half_size / (gdouble)v_width; ++ s_y = v_height <= half_size ? 1.0 : half_size / (gdouble)v_height; ++ ofs_x = half_size + (half_size - v_scale_width); ++ ofs_y = half_size + (half_size - v_scale_height); ++ ++ /* blend the vendor icon in the bottom right quarter */ ++ gdk_pixbuf_composite (vendor_pixbuf, ++ copy_pixbuf, ++ ofs_x, ofs_y, v_scale_width, v_scale_height, ++ ofs_x, ofs_y, s_x, s_y, ++ GDK_INTERP_BILINEAR, ++ 255); ++ ++ gtk_image_set_from_pixbuf (GTK_IMAGE (auth_dialog->_priv->icon), copy_pixbuf); ++ ++out: ++ if (pixbuf != NULL) ++ g_object_unref (pixbuf); ++ if (copy_pixbuf != NULL) ++ g_object_unref (copy_pixbuf); ++ if (vendor_pixbuf != NULL) ++ g_object_unref (vendor_pixbuf); ++} ++ ++static GtkWidget * ++add_row (GtkWidget *table, int row, const char *label_text, gboolean centered, GtkWidget *entry) ++{ ++ GtkWidget *label; ++ ++ label = gtk_label_new_with_mnemonic (label_text); ++ gtk_label_set_use_markup (GTK_LABEL (label), TRUE); ++ gtk_misc_set_alignment (GTK_MISC (label), 1.0, centered ? 0.5 : 0.0); ++ ++ gtk_table_attach (GTK_TABLE (table), label, ++ 0, 1, row, row + 1, ++ GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); ++ gtk_table_attach_defaults (GTK_TABLE (table), entry, ++ 1, 2, row, row + 1); ++ gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry); ++ ++ return label; ++} + + static GtkWidget * + create_stock_button (const gchar *stock, const gchar *labelstr) +@@ -71,7 +203,6 @@ create_stock_button (const gchar *stock, + return button; + } + +- + static void + clear_entry (GtkWidget *entry) + { +@@ -93,26 +224,63 @@ clear_entry (GtkWidget *entry) + if (blank) g_free (blank); + } + ++void ++indicate_auth_error (GnomesuAuthDialog *auth_dialog) ++{ ++ gint x, y, n; ++ ++ gtk_window_get_position (GTK_WINDOW (auth_dialog), &x, &y); ++ ++ for (n = 0; n < 10; n++) { ++ gint diff = n % 2 == 0 ? -15 : 15; ++ gtk_window_move (GTK_WINDOW (auth_dialog), x + diff, y); ++ ++ while (gtk_events_pending ()) { ++ gtk_main_iteration (); ++ } ++ ++ g_usleep (10000); ++ } ++ ++ gtk_window_move (GTK_WINDOW (auth_dialog), x, y); ++} ++ ++// ============================================================================ ++// GTK CLASS/OBJECT INITIALIZING ++// ============================================================================ ++ ++static gboolean ++delete_event_handler (GtkWindow *window, gpointer user_data) ++{ ++ return TRUE; ++} + + static void +-gnomesu_auth_dialog_instance_init (GTypeInstance *instance, gpointer g_class) ++gnomesu_auth_dialog_init (GnomesuAuthDialog *auth_dialog) + { +- GtkDialog *dialog = (GtkDialog *) instance; +- GnomesuAuthDialog *adialog = (GnomesuAuthDialog *) instance; +- GtkWidget *action_area_parent, *hbox; ++ GtkDialog *dialog = GTK_DIALOG (auth_dialog); ++ GnomesuAuthDialogPrivate *priv; ++ GtkWidget *action_area_parent; + GtkWidget *left_action_area; +- GtkWidget *vbox; +- GtkWidget *icon, *label; +- GtkWidget *table, *input; +- GtkWidget *button; ++ GtkWidget *default_button; ++ ++ priv = auth_dialog->_priv = g_new0 (GnomesuAuthDialogPrivate, 1); ++ ++ priv->watch = gdk_cursor_new (GDK_WATCH); + +- adialog->_priv = g_new0 (GnomesuAuthDialogPrivate, 1); ++ gtk_dialog_add_button (dialog, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); ++ default_button = gtk_dialog_add_button (dialog, _("C_ontinue"), GTK_RESPONSE_OK); ++ gtk_widget_set_can_default (default_button, TRUE); ++ gtk_dialog_set_default_response (dialog, GTK_RESPONSE_OK); ++ gtk_window_set_default (GTK_WINDOW (dialog), default_button); + +- gtk_window_set_title (GTK_WINDOW (dialog), _("Password needed")); + gtk_dialog_set_has_separator (dialog, FALSE); +- gtk_widget_realize (GTK_WIDGET (dialog)); +- adialog->_priv->watch = gdk_cursor_new (GDK_WATCH); ++ gtk_container_set_border_width (GTK_CONTAINER (dialog), 5); ++ gtk_box_set_spacing (GTK_BOX (dialog->vbox), 2); /* 2 * 5 + 2 = 12 */ ++ gtk_container_set_border_width (GTK_CONTAINER (dialog->action_area), 5); ++ gtk_box_set_spacing (GTK_BOX (dialog->action_area), 6); + ++ GtkWidget *hbox, *main_vbox, *vbox; + + /* Reparent dialog->action_area into a hbox */ + g_object_ref (dialog->action_area); +@@ -129,171 +297,164 @@ gnomesu_auth_dialog_instance_init (GType + /* gtk_button_box_set_spacing (GTK_BUTTON_BOX (left_action_area), 12); */ + gtk_box_set_spacing (GTK_BOX (left_action_area), 12); + gtk_button_box_set_layout (GTK_BUTTON_BOX (left_action_area), GTK_BUTTONBOX_START); +- adialog->_priv->left_action_area = left_action_area; ++ priv->left_action_area = left_action_area; + gtk_box_pack_start (GTK_BOX (hbox), left_action_area, FALSE, FALSE, 0); + + gtk_box_pack_start (GTK_BOX (hbox), dialog->action_area, TRUE, TRUE, 0); + g_object_unref (dialog->action_area); + gtk_widget_show_all (action_area_parent); + +- +- /* HBox with icon and description label */ +- vbox = gtk_vbox_new (FALSE, 12); +- gtk_container_set_border_width (GTK_CONTAINER (vbox), 10); +- gtk_box_pack_start (GTK_BOX (dialog->vbox), vbox, TRUE, TRUE, 0); +- + hbox = gtk_hbox_new (FALSE, 12); +- gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, FALSE, 0); +- +- adialog->_priv->icon = icon = gtk_image_new (); +- gtk_misc_set_alignment (GTK_MISC (icon), 0.5, 0.0); +- gtk_box_pack_start (GTK_BOX (hbox), icon, FALSE, FALSE, 0); +- +- adialog->_priv->desc_label = label = gtk_label_new (""); +- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); +- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0); +- gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); ++ gtk_container_set_border_width (GTK_CONTAINER (hbox), 5); ++ gtk_box_pack_start (GTK_BOX (dialog->vbox), hbox, TRUE, TRUE, 0); + +- +- /* Command label */ +- table = gtk_table_new (2, 2, FALSE); +- gtk_table_set_col_spacings (GTK_TABLE (table), 6); ++ priv->icon = gtk_image_new_from_stock (GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_DIALOG); ++ gtk_misc_set_alignment (GTK_MISC (priv->icon), 0.5, 0.0); ++ gtk_box_pack_start (GTK_BOX (hbox), priv->icon, FALSE, FALSE, 0); ++ ++ main_vbox = gtk_vbox_new (FALSE, 10); ++ gtk_box_pack_start (GTK_BOX (hbox), main_vbox, TRUE, TRUE, 0); ++ ++ /* main message */ ++ priv->message_label = gtk_label_new (NULL); ++ gtk_misc_set_alignment (GTK_MISC (priv->message_label), 0.0, 0.5); ++ gtk_label_set_line_wrap (GTK_LABEL (priv->message_label), TRUE); ++ gtk_box_pack_start (GTK_BOX (main_vbox), GTK_WIDGET (priv->message_label), ++ FALSE, FALSE, 0); ++ ++ /* secondary message */ ++ priv->message_label_secondary = gtk_label_new (NULL); ++ gtk_label_set_markup (GTK_LABEL (priv->message_label_secondary), ""); ++ gtk_misc_set_alignment (GTK_MISC (priv->message_label_secondary), 0.0, 0.5); ++ gtk_label_set_line_wrap (GTK_LABEL (priv->message_label_secondary), TRUE); ++ gtk_box_pack_start (GTK_BOX (main_vbox), GTK_WIDGET (priv->message_label_secondary), ++ FALSE, FALSE, 0); ++ ++ /* password entry */ ++ vbox = gtk_vbox_new (FALSE, 6); ++ gtk_box_pack_start (GTK_BOX (main_vbox), vbox, FALSE, FALSE, 0); ++ ++ GtkWidget *table_alignment; ++ GtkWidget *table; ++ table_alignment = gtk_alignment_new (0.0, 0.0, 1.0, 1.0); ++ gtk_box_pack_start (GTK_BOX (vbox), table_alignment, FALSE, FALSE, 0); ++ table = gtk_table_new (1, 2, FALSE); ++ gtk_table_set_col_spacings (GTK_TABLE (table), 12); + gtk_table_set_row_spacings (GTK_TABLE (table), 6); +- gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); +- +- adialog->_priv->command_desc_label = label = gtk_label_new (_("Command:")); +- gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); +- gtk_table_attach (GTK_TABLE (table), label, +- 0, 1, 0, 1, +- GTK_FILL, GTK_FILL, +- 0, 0); +- +- adialog->_priv->command_label = label = gtk_label_new (""); +- gtk_label_set_selectable (GTK_LABEL (label), TRUE); +- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); +- gtk_table_attach (GTK_TABLE (table), label, +- 1, 2, 0, 1, +- GTK_FILL | GTK_EXPAND, GTK_FILL, +- 0, 0); +- +- +- /* Input entry */ +- adialog->_priv->prompt_label = label = gtk_label_new ("_Password:"); +- gtk_label_set_use_underline (GTK_LABEL (label), TRUE); +- gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5); +- gtk_table_attach (GTK_TABLE (table), label, +- 0, 1, 1, 2, +- GTK_FILL, GTK_FILL, +- 0, 0); +- +- adialog->_priv->input = input = gtk_entry_new (); +- g_signal_connect (input, "destroy", G_CALLBACK (clear_entry), NULL); +- gtk_entry_set_activates_default (GTK_ENTRY (input), TRUE); +- gtk_entry_set_visibility (GTK_ENTRY (input), FALSE); +- gtk_table_attach (GTK_TABLE (table), input, +- 1, 2, 1, 2, +- GTK_EXPAND | GTK_FILL, 0, +- 0, 0); +- gtk_label_set_mnemonic_widget (GTK_LABEL (label), input); +- +- +- /* Mode label */ +- adialog->_priv->mode_label = label = gtk_label_new (""); +- gtk_misc_set_alignment (GTK_MISC (label), 0.5, 0.5); +- gtk_label_set_selectable (GTK_LABEL (label), TRUE); +- gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); +- gtk_widget_modify_font (label, pango_font_description_from_string ("Bold")); +- gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0); +- +- +- /* Add OK and Cancel buttons */ +- button = gtk_button_new_from_stock (GTK_STOCK_CANCEL); +- gtk_widget_show (button); +- gtk_dialog_add_action_widget (dialog, button, GTK_RESPONSE_CANCEL); +- +- button = create_stock_button (GTK_STOCK_OK, _("C_ontinue")); +- GTK_WIDGET_SET_FLAGS (button, GTK_HAS_DEFAULT | GTK_CAN_DEFAULT); +- gtk_widget_show (button); +- gtk_dialog_add_action_widget (dialog, button, GTK_RESPONSE_OK); +- gtk_widget_grab_default (button); ++ gtk_container_add (GTK_CONTAINER (table_alignment), table); ++ priv->password_entry = gtk_entry_new (); ++ gtk_entry_set_visibility (GTK_ENTRY (priv->password_entry), FALSE); ++ gtk_entry_set_activates_default (GTK_ENTRY (priv->password_entry), TRUE); ++ priv->prompt_label = add_row (table, 0, "", TRUE, priv->password_entry); ++ ++ priv->details_expander = gtk_expander_new_with_mnemonic (_("<small><b>_Details</b></small>")); ++ gtk_expander_set_use_markup (GTK_EXPANDER (priv->details_expander), TRUE); ++ gtk_box_pack_start (GTK_BOX (dialog->vbox), priv->details_expander, FALSE, FALSE, 0); ++ ++ GtkWidget *details_vbox; ++ details_vbox = gtk_vbox_new (FALSE, 10); ++ gtk_container_add (GTK_CONTAINER (priv->details_expander), details_vbox); ++ ++ table_alignment = gtk_alignment_new (0.0, 0.0, 1.0, 1.0); ++ gtk_box_pack_start (GTK_BOX (details_vbox), table_alignment, FALSE, FALSE, 0); ++ table = gtk_table_new (1, 3, FALSE); ++ ++ gint expander_size; ++ gtk_widget_style_get (priv->details_expander, ++ "expander-size", &expander_size, ++ NULL); + ++ gtk_alignment_set_padding (GTK_ALIGNMENT (table_alignment), 6, 0, 2 * expander_size, 6); ++ gtk_table_set_col_spacings (GTK_TABLE (table), 12); ++ gtk_table_set_row_spacings (GTK_TABLE (table), 6); ++ gtk_container_add (GTK_CONTAINER (table_alignment), table); + ++ /* Command Label */ ++ priv->command_label = gtk_label_new (NULL); ++ gtk_misc_set_alignment (GTK_MISC (priv->command_label), 0, 0); ++ gtk_label_set_selectable (GTK_LABEL (priv->command_label), TRUE); ++ ++ GtkWidget *scroll = gtk_scrolled_window_new (NULL, NULL); ++ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); ++ gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scroll), priv->command_label); ++ gtk_viewport_set_shadow_type (GTK_VIEWPORT (gtk_bin_get_child (GTK_BIN (scroll))), GTK_SHADOW_NONE); ++ ++ gchar *msg = g_markup_printf_escaped ("<small><b>%s</b></small>", _("Command:")); ++ priv->command_desc_label = add_row (table, 0, msg, FALSE, scroll); ++ g_free (msg); + + gtk_widget_show_all (dialog->vbox); +- gnomesu_auth_dialog_set_desc (adialog, NULL); +- gnomesu_auth_dialog_set_icon (adialog, NULL); +- gnomesu_auth_dialog_set_command (adialog, NULL); +- gnomesu_auth_dialog_set_mode (adialog, GNOMESU_MODE_NORMAL); +- g_object_set (dialog, +- "resizable", FALSE, +- NULL); +-} ++ gtk_widget_grab_default (default_button); + +- +-static void +-gnomesu_auth_dialog_finalize (GObject *obj) +-{ +- gdk_cursor_unref (GNOMESU_AUTH_DIALOG (obj)->_priv->watch); +- g_free (GNOMESU_AUTH_DIALOG (obj)->_priv); +- G_OBJECT_CLASS (parent_class)->finalize (obj); ++ /* Configure */ ++ gnomesu_auth_dialog_set_desc (auth_dialog, NULL); ++ gnomesu_auth_dialog_set_icon (auth_dialog, NULL); ++ gnomesu_auth_dialog_set_command (auth_dialog, NULL); ++ gnomesu_auth_dialog_set_prompt (auth_dialog, NULL); ++ gnomesu_auth_dialog_set_mode (auth_dialog, GNOMESU_MODE_NORMAL); + } + +- + static void + gnomesu_auth_dialog_response (GtkDialog *dialog, gint response_id) + { + if (response_id != GTK_RESPONSE_OK) +- clear_entry (GNOMESU_AUTH_DIALOG (dialog)->_priv->input); +- if (GTK_DIALOG_CLASS (parent_class)->response) +- GTK_DIALOG_CLASS (parent_class)->response (dialog, response_id); +-} ++ clear_entry (GNOMESU_AUTH_DIALOG (dialog)->_priv->password_entry); + ++ if (GTK_DIALOG_CLASS (gnomesu_auth_dialog_parent_class)->response) ++ GTK_DIALOG_CLASS (gnomesu_auth_dialog_parent_class)->response (dialog, response_id); ++} + + static void +-gnomesu_auth_dialog_class_init (gpointer c, gpointer d) ++gnomesu_auth_dialog_finalize (GObject *object) + { +- GtkDialogClass *class = (GtkDialogClass *) c; +- GObjectClass *oclass = (GObjectClass *) c; ++ GnomesuAuthDialog *auth_dialog = GNOMESU_AUTH_DIALOG (object); + +- parent_class = g_type_class_peek_parent (class); +- class->response = gnomesu_auth_dialog_response; +- oclass->finalize = gnomesu_auth_dialog_finalize; ++ g_free (auth_dialog->_priv); ++ ++ G_OBJECT_CLASS (gnomesu_auth_dialog_parent_class)->finalize (object); + } + ++static void ++gnomesu_auth_dialog_class_init (GnomesuAuthDialogClass * klass) ++{ ++ GObjectClass *gobject_class = G_OBJECT_CLASS (klass); ++ ++ gnomesu_auth_dialog_parent_class = (GObjectClass *) g_type_class_peek_parent (klass); + +-GType +-gnomesu_auth_dialog_get_type () +-{ +- static GType class_type = 0; +- if (!class_type) { +- static const GTypeInfo class_info = { +- sizeof (GnomesuAuthDialogClass), +- NULL, /* base_init */ +- NULL, /* base_finalize */ +- gnomesu_auth_dialog_class_init, /* class_init */ +- NULL, /* class_finalize */ +- NULL, /* class_data */ +- sizeof (GnomesuAuthDialog), +- 0, /* n_preallocs */ +- gnomesu_auth_dialog_instance_init /* instance_init */ +- }; +- class_type = g_type_register_static (GTK_TYPE_DIALOG, +- "GnomesuAuthDialog", &class_info, 0); +- } +- return class_type; ++ gobject_class->finalize = gnomesu_auth_dialog_finalize; ++ GTK_DIALOG_CLASS (klass)->response = gnomesu_auth_dialog_response; + } + ++// ============================================================================ ++// PUBLIC API ++// ============================================================================ + + GtkWidget * +-gnomesu_auth_dialog_new (void) ++gnomesu_auth_dialog_new () + { +- GtkWidget *dialog; ++ GnomesuAuthDialog *auth_dialog; ++ GtkWindow *window; + +- dialog = gtk_widget_new (GNOMESU_TYPE_AUTH_DIALOG, NULL); +- gtk_widget_realize (dialog); +- return dialog; +-} ++ auth_dialog = g_object_new (GNOMESU_TYPE_AUTH_DIALOG, NULL); ++ window = GTK_WINDOW (auth_dialog); ++ ++ gtk_window_set_position (window, GTK_WIN_POS_CENTER); ++ gtk_window_set_modal (window, TRUE); ++ gtk_window_set_resizable (window, FALSE); ++ gtk_window_set_keep_above (window, TRUE); ++ gtk_window_set_resizable (window, FALSE); ++ gtk_window_set_icon_name (window, GTK_STOCK_DIALOG_AUTHENTICATION); ++ ++ gchar *title = g_strdup (_("Password needed")); ++ LGSD (replace_all) (&title, "needed", "Needed"); ++ gtk_window_set_title (window, title); ++ g_free (title); + ++ g_signal_connect (auth_dialog, "delete-event", ++ G_CALLBACK (delete_event_handler), NULL); ++ ++ return GTK_WIDGET (auth_dialog); ++} + + GtkWidget * + gnomesu_auth_dialog_add_button (GnomesuAuthDialog *dialog, const char *stock_id, +@@ -312,7 +473,6 @@ gnomesu_auth_dialog_add_button (GnomesuA + return button; + } + +- + static void + on_action_button_click (GtkWidget *button, gpointer response) + { +@@ -320,7 +480,6 @@ on_action_button_click (GtkWidget *butto + gtk_dialog_response (dialog, GPOINTER_TO_INT (response)); + } + +- + void + gnomesu_auth_dialog_add_custom_button (GnomesuAuthDialog *dialog, GtkWidget *button, + gint response_id) +@@ -334,7 +493,6 @@ gnomesu_auth_dialog_add_custom_button (G + GINT_TO_POINTER (response_id)); + } + +- + gchar * + gnomesu_auth_dialog_prompt (GnomesuAuthDialog *dialog) + { +@@ -348,6 +506,39 @@ gnomesu_auth_dialog_prompt (GnomesuAuthD + return NULL; + } + ++void <<Diff was trimmed, longer than 597 lines>> _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
