/** * seahorse_widget_destroy: * @swidget: #SeahorseWidget to destroy * * Unrefs @swidget. **/ void seahorse_widget_destroy (SeahorseWidget *swidget) { GtkWidget *widget; gchar *widthkey, *heightkey; gint width, height; g_return_if_fail (swidget != NULL && SEAHORSE_IS_WIDGET (swidget)); widget = seahorse_widget_get_toplevel (swidget); /* Don't save window size for dialogs */ if (!GTK_IS_DIALOG (widget)) { /* Save window size */ gtk_window_get_size (GTK_WINDOW (widget), &width, &height); widthkey = g_strdup_printf ("%s%s%s", WINDOW_SIZE, swidget->name, "_width"); seahorse_gconf_set_integer (widthkey, width); heightkey = g_strdup_printf ("%s%s%s", WINDOW_SIZE, swidget->name, "_height"); seahorse_gconf_set_integer (heightkey, height); g_free (widthkey); g_free (heightkey); } /* Destroy Widget */ if (!swidget->destroying) { swidget->destroying = TRUE; g_object_unref (swidget); } }
/** * seahorse_progress_status_set_operation: * @swidget: The SeahorseWidget to add the operation to * @operation: The operation to add * * Adds the operation to the widget. * */ void seahorse_progress_status_set_operation (SeahorseWidget *swidget, SeahorseOperation *operation) { SeahorseOperation *prev; /* * Note that this is not one off, the operation is monitored until it is * replaced, so if the operation starts up again the progress will be * displayed */ g_return_if_fail (SEAHORSE_IS_WIDGET (swidget)); g_return_if_fail (SEAHORSE_IS_OPERATION (operation)); prev = SEAHORSE_OPERATION (g_object_get_data (G_OBJECT (swidget), "operation")); if (prev) { /* If it's the same operation, just ignore */ if (prev == operation) return; /* If the previous one was a multi operation, just piggy back this one in */ if (SEAHORSE_IS_MULTI_OPERATION (prev)) { g_object_ref (operation); seahorse_multi_operation_take (SEAHORSE_MULTI_OPERATION (prev), operation); return; } /* Otherwise disconnect old progress, replace with new */ disconnect_progress (swidget, prev); } g_object_ref (operation); g_object_set_data_full (G_OBJECT (swidget), "operation", operation, (GDestroyNotify)g_object_unref); g_signal_connect (swidget, "destroy", G_CALLBACK (disconnect_progress), operation); if (!seahorse_operation_is_running (operation)) operation_done (operation, swidget); operation_progress (operation, seahorse_operation_get_message (operation), seahorse_operation_get_progress (operation), swidget); g_signal_connect (operation, "done", G_CALLBACK (operation_done), swidget); g_signal_connect (operation, "progress", G_CALLBACK (operation_progress), swidget); }
/** * seahorse_util_handle_error: * @error: The #GError to print, and clear * @desc: The heading of the box * @...: Parameters to insert into the format string desc. * * Displays an error box. The message is the error message. * Won't display cancel errors. */ void seahorse_util_handle_error (GError **error, gpointer parent, const char* description, ...) { gchar *text = NULL; GtkWidget *widget = NULL; va_list ap; if (!error || !(*error) || g_error_matches (*error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_clear_error (error); return; } va_start (ap, description); if (description) text = g_strdup_vprintf (description, ap); va_end (ap); if (parent == NULL) widget = NULL; else if (GTK_IS_WIDGET (parent)) widget = GTK_WIDGET (parent); else if (GTK_IS_WINDOW (parent)) widget = GTK_WIDGET (parent); else if (SEAHORSE_IS_WIDGET (parent)) widget = seahorse_widget_get_toplevel (parent); else g_warning ("unsupported 'parent' argument passed to seahorse_util_handle_error() "); g_dbus_error_strip_remote_error (*error); seahorse_util_show_error (widget, text, (*error)->message ? (*error)->message : ""); g_free (text); g_clear_error (error); }
const gchar* seahorse_widget_get_name (SeahorseWidget *swidget) { g_return_val_if_fail (SEAHORSE_IS_WIDGET (swidget), NULL); return swidget->name; }