void ide_workbench_add_perspective (IdeWorkbench *self, IdePerspective *perspective) { g_autofree gchar *accel= NULL; g_autofree gchar *icon_name = NULL; g_autofree gchar *id = NULL; g_autofree gchar *title = NULL; GtkWidget *titlebar; g_assert (IDE_IS_WORKBENCH (self)); g_assert (IDE_IS_PERSPECTIVE (perspective)); id = ide_perspective_get_id (perspective); title = ide_perspective_get_title (perspective); icon_name = ide_perspective_get_icon_name (perspective); titlebar = ide_perspective_get_titlebar (perspective); gtk_container_add_with_properties (GTK_CONTAINER (self->perspectives_stack), GTK_WIDGET (perspective), "icon-name", icon_name, "name", id, "needs-attention", FALSE, "title", title, NULL); if (titlebar != NULL) gtk_container_add_with_properties (GTK_CONTAINER (self->header_stack), titlebar, "name", id, NULL); if (!IDE_IS_GREETER_PERSPECTIVE (perspective)) { guint position = 0; gtk_container_child_get (GTK_CONTAINER (self->perspectives_stack), GTK_WIDGET (perspective), "position", &position, NULL); g_list_store_append (self->perspectives, perspective); g_list_store_sort (self->perspectives, ide_workbench_compare_perspective, NULL); } accel = ide_perspective_get_accelerator (perspective); if (accel != NULL) { const gchar *accel_map[] = { accel, NULL }; g_autofree gchar *action_name = NULL; action_name = g_strdup_printf ("win.perspective('%s')", id); gtk_application_set_accels_for_action (GTK_APPLICATION (IDE_APPLICATION_DEFAULT), action_name, accel_map); } }
static void update_jobs_list_cb (cups_job_t *jobs, gint num_of_jobs, gpointer user_data) { PpJobsDialog *dialog = user_data; GtkWidget *clear_all_button; GtkStack *stack; guint i; g_list_store_remove_all (dialog->store); stack = GTK_STACK (gtk_builder_get_object (GTK_BUILDER (dialog->builder), "stack")); clear_all_button = GTK_WIDGET (gtk_builder_get_object (GTK_BUILDER (dialog->builder), "jobs-clear-all-button")); if (num_of_jobs > 0) { gtk_widget_set_sensitive (clear_all_button, TRUE); gtk_stack_set_visible_child_name (stack, "list-jobs-page"); } else { gtk_widget_set_sensitive (clear_all_button, FALSE); gtk_stack_set_visible_child_name (stack, "no-jobs-page"); } for (i = 0; i < num_of_jobs; i++) { PpJob *job; job = g_object_new (pp_job_get_type (), "id", jobs[i].id, "title", jobs[i].title, "state", jobs[i].state, NULL); g_list_store_append (dialog->store, job); } dialog->ref_count--; }
static gint ide_git_vcs_list_status_cb (const gchar *path, GgitStatusFlags flags, gpointer user_data) { ListStatus *state = user_data; g_autoptr(GFile) file = NULL; g_autoptr(IdeVcsFileInfo) info = NULL; IdeVcsFileStatus status = 0; g_assert (path != NULL); g_assert (state != NULL); g_assert (G_IS_LIST_STORE (state->store)); g_assert (G_IS_FILE (state->workdir)); file = g_file_get_child (state->workdir, path); switch (flags) { case GGIT_STATUS_INDEX_DELETED: case GGIT_STATUS_WORKING_TREE_DELETED: status = IDE_VCS_FILE_STATUS_DELETED; break; case GGIT_STATUS_INDEX_RENAMED: status = IDE_VCS_FILE_STATUS_RENAMED; break; case GGIT_STATUS_INDEX_NEW: case GGIT_STATUS_WORKING_TREE_NEW: status = IDE_VCS_FILE_STATUS_ADDED; break; case GGIT_STATUS_INDEX_MODIFIED: case GGIT_STATUS_INDEX_TYPECHANGE: case GGIT_STATUS_WORKING_TREE_MODIFIED: case GGIT_STATUS_WORKING_TREE_TYPECHANGE: status = IDE_VCS_FILE_STATUS_CHANGED; break; case GGIT_STATUS_IGNORED: status = IDE_VCS_FILE_STATUS_IGNORED; break; case GGIT_STATUS_CURRENT: status = IDE_VCS_FILE_STATUS_UNCHANGED; break; default: status = IDE_VCS_FILE_STATUS_UNTRACKED; break; } info = g_object_new (IDE_TYPE_VCS_FILE_INFO, "file", file, "status", status, NULL); g_list_store_append (state->store, info); return 0; }