static void populate_jobs_list (PpJobsDialog *dialog) { GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkCellRenderer *title_renderer; GtkTreeView *treeview; treeview = (GtkTreeView*) gtk_builder_get_object (dialog->builder, "job-treeview"); renderer = gtk_cell_renderer_text_new (); title_renderer = gtk_cell_renderer_text_new (); /* Translators: Name of column showing titles of print jobs */ column = gtk_tree_view_column_new_with_attributes (_("Job Title"), title_renderer, "text", JOB_TITLE_COLUMN, NULL); g_object_set (G_OBJECT (title_renderer), "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_tree_view_column_set_fixed_width (column, 180); gtk_tree_view_column_set_min_width (column, 180); gtk_tree_view_column_set_max_width (column, 180); gtk_tree_view_append_column (treeview, column); /* Translators: Name of column showing statuses of print jobs */ column = gtk_tree_view_column_new_with_attributes (_("Job State"), renderer, "text", JOB_STATE_COLUMN, NULL); gtk_tree_view_column_set_expand (column, TRUE); gtk_tree_view_append_column (treeview, column); /* Translators: Name of column showing times of creation of print jobs */ column = gtk_tree_view_column_new_with_attributes (_("Time"), renderer, "text", JOB_CREATION_TIME_COLUMN, NULL); gtk_tree_view_column_set_expand (column, TRUE); gtk_tree_view_append_column (treeview, column); g_signal_connect (gtk_tree_view_get_selection (treeview), "changed", G_CALLBACK (job_selection_changed_cb), dialog); update_jobs_list (dialog); }
void pp_jobs_dialog_update (PpJobsDialog *dialog) { update_jobs_list (dialog); }
PpJobsDialog * pp_jobs_dialog_new (GtkWindow *parent, UserResponseCallback user_callback, gpointer user_data, gchar *printer_name) { PpJobsDialog *dialog; GtkButton *clear_all_button; GError *error = NULL; gchar *objects[] = { "jobs-dialog", NULL }; guint builder_result; gchar *title; dialog = g_new0 (PpJobsDialog, 1); dialog->builder = gtk_builder_new (); dialog->parent = GTK_WIDGET (parent); builder_result = gtk_builder_add_objects_from_resource (dialog->builder, "/org/gnome/control-center/printers/jobs-dialog.ui", objects, &error); if (builder_result == 0) { g_warning ("Could not load ui: %s", error->message); g_error_free (error); return NULL; } dialog->dialog = (GtkWidget *) gtk_builder_get_object (dialog->builder, "jobs-dialog"); dialog->user_callback = user_callback; dialog->user_data = user_data; dialog->printer_name = g_strdup (printer_name); dialog->ref_count = 0; /* connect signals */ g_signal_connect (dialog->dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); g_signal_connect (dialog->dialog, "response", G_CALLBACK (jobs_dialog_response_cb), dialog); clear_all_button = GTK_BUTTON (gtk_builder_get_object (dialog->builder, "jobs-clear-all-button")); g_signal_connect (clear_all_button, "clicked", G_CALLBACK (on_clear_all_button_clicked), dialog); /* Translators: This is the printer name for which we are showing the active jobs */ title = g_strdup_printf (C_("Printer jobs dialog title", "%s — Active Jobs"), printer_name); gtk_window_set_title (GTK_WINDOW (dialog->dialog), title); g_free (title); dialog->listbox = GTK_LIST_BOX (gtk_builder_get_object (dialog->builder, "jobs-listbox")); gtk_list_box_set_header_func (dialog->listbox, cc_list_box_update_header_func, NULL, NULL); dialog->store = g_list_store_new (pp_job_get_type ()); gtk_list_box_bind_model (dialog->listbox, G_LIST_MODEL (dialog->store), create_listbox_row, NULL, NULL); update_jobs_list (dialog); gtk_window_set_transient_for (GTK_WINDOW (dialog->dialog), GTK_WINDOW (parent)); gtk_window_present (GTK_WINDOW (dialog->dialog)); gtk_widget_show_all (GTK_WIDGET (dialog->dialog)); return dialog; }