static void ide_git_vcs_list_status_worker (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable) { ListStatus *state = task_data; g_autoptr(GListStore) store = NULL; g_autoptr(GFile) workdir = NULL; g_autoptr(GgitRepository) repository = NULL; g_autoptr(GgitStatusOptions) options = NULL; g_autoptr(GString) pathspec = NULL; g_autoptr(GError) error = NULL; g_autofree gchar *relative = NULL; gchar *strv[] = { NULL, NULL }; g_assert (G_IS_TASK (task)); g_assert (IDE_IS_GIT_VCS (source_object)); g_assert (!cancellable || G_IS_CANCELLABLE (cancellable)); g_assert (state != NULL); g_assert (G_IS_FILE (state->repository_location)); if (!(repository = ggit_repository_open (state->repository_location, &error))) { g_task_return_error (task, g_steal_pointer (&error)); return; } if (!(workdir = ggit_repository_get_workdir (repository))) { g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_FAILED, "Failed to locate working directory"); return; } g_set_object (&state->workdir, workdir); if (state->directory_or_file != NULL) relative = g_file_get_relative_path (workdir, state->directory_or_file); strv[0] = relative; options = ggit_status_options_new (GGIT_STATUS_OPTION_DEFAULT, GGIT_STATUS_SHOW_INDEX_AND_WORKDIR, (const gchar **)strv); store = g_list_store_new (IDE_TYPE_VCS_FILE_INFO); g_set_object (&state->store, store); if (!ggit_repository_file_status_foreach (repository, options, ide_git_vcs_list_status_cb, state, &error)) g_task_return_error (task, g_steal_pointer (&error)); else g_task_return_pointer (task, g_steal_pointer (&store), g_object_unref); }
static void ide_workbench_init (IdeWorkbench *self) { g_autoptr(GtkWindowGroup) window_group = NULL; gtk_widget_init_template (GTK_WIDGET (self)); self->perspectives = g_list_store_new (IDE_TYPE_PERSPECTIVE); ide_window_settings_register (GTK_WINDOW (self)); g_signal_connect_object (self->perspectives_stack, "notify::visible-child", G_CALLBACK (ide_workbench_notify_visible_child), self, G_CONNECT_SWAPPED); window_group = gtk_window_group_new (); gtk_window_group_add_window (window_group, GTK_WINDOW (self)); }
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; }