static void status_changed_cb (GtkPrintOperation *op, gpointer user_data) { if (gtk_print_operation_is_finished (op)) { active_prints = g_list_remove (active_prints, op); g_object_unref (op); } update_statusbar (); }
static void print_done (GtkPrintOperation *op, GtkPrintOperationResult res, PrintData *print_data) { GError *error = NULL; if (res == GTK_PRINT_OPERATION_RESULT_ERROR) { GtkWidget *error_dialog; gtk_print_operation_get_error (op, &error); error_dialog = gtk_message_dialog_new (GTK_WINDOW (main_window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Error printing file:\n%s", error ? error->message : "no details"); g_signal_connect (error_dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL); gtk_widget_show (error_dialog); } else if (res == GTK_PRINT_OPERATION_RESULT_APPLY) { if (settings != NULL) g_object_unref (settings); settings = g_object_ref (gtk_print_operation_get_print_settings (op)); } g_free (print_data->text); g_free (print_data->font); g_free (print_data); if (!gtk_print_operation_is_finished (op)) { g_object_ref (op); active_prints = g_list_append (active_prints, op); update_statusbar (); /* This ref is unref:ed when we get the final state change */ g_signal_connect (op, "status_changed", G_CALLBACK (status_changed_cb), NULL); } }
static void photos_print_notification_status_changed (PhotosPrintNotification *self) { PhotosPrintNotificationPrivate *priv = self->priv; const gchar *status_str; gchar *job_name = NULL; gchar *status = NULL; status_str = gtk_print_operation_get_status_string (priv->print_op); g_object_get (priv->print_op, "job-name", &job_name, NULL); status = g_strdup_printf (_("Printing “%s”: %s"), job_name, status_str); gtk_label_set_text (GTK_LABEL (priv->status_label), status); if (gtk_print_operation_is_finished (priv->print_op)) gtk_widget_destroy (GTK_WIDGET (self)); g_free (job_name); g_free (status); }
static VALUE po_is_finished(VALUE self) { return CBOOL2RVAL(gtk_print_operation_is_finished(_SELF(self))); }