packages: libgnomesu/libgnomesu-modernize.patch (NEW) - merged from OpenSUS...
hawk
hawk at pld-linux.org
Thu Nov 25 10:39:07 CET 2010
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 <david at fubar.dk>
++ * 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>>
More information about the pld-cvs-commit
mailing list