static void ide_recent_projects_init (IdeRecentProjects *self) { self->projects = g_sequence_new (g_object_unref); self->recent_uris = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); self->file_uri = g_build_filename (g_get_user_data_dir (), ide_get_program_name (), IDE_RECENT_PROJECTS_BOOKMARK_FILENAME, NULL); }
GArray * gb_beautifier_config_get_entries (GbBeautifierWorkbenchAddin *self) { IdeContext *context; IdeVcs *vcs; GArray *entries; GArray *map = NULL; g_autofree gchar *project_config_path = NULL; g_autofree gchar *user_config_path = NULL; g_assert (GB_IS_BEAUTIFIER_WORKBENCH_ADDIN (self)); entries = g_array_new (TRUE, TRUE, sizeof (GbBeautifierConfigEntry)); g_array_set_clear_func (entries, config_entry_clear_func); /* User wide config: ~/.config/gnome-builder/beautifier_plugin */ user_config_path = g_build_filename (g_get_user_config_dir (), ide_get_program_name (), "beautifier_plugin", NULL); map = gb_beautifier_config_get_map (self, user_config_path); add_entries_from_base_path (self, user_config_path, entries, map); if (map != NULL) g_array_free (map, TRUE); /* Project wide config */ if (NULL != (context = ide_workbench_get_context (self->workbench)) && NULL != (vcs = ide_context_get_vcs (context))) { GFile *workdir; g_autofree gchar *workdir_path = NULL; workdir = ide_vcs_get_working_directory (vcs); workdir_path = g_file_get_path (workdir); project_config_path = g_build_filename (workdir_path, ".beautifier", NULL); map = gb_beautifier_config_get_map (self, project_config_path); add_entries_from_base_path (self, project_config_path, entries, map); if (map != NULL) g_array_free (map, TRUE); } /* System wide config */ map = gb_beautifier_config_get_map (self, GB_BEAUTIFIER_PLUGIN_DATADIR); add_entries_from_base_path (self, GB_BEAUTIFIER_PLUGIN_DATADIR, entries, map); if (map != NULL) g_array_free (map, TRUE); return entries; }
static void ide_recent_projects_init (IdeRecentProjects *self) { PeasExtensionSet *set; PeasEngine *engine; self->projects = g_sequence_new (g_object_unref); self->miners = g_ptr_array_new_with_free_func (g_object_unref); self->cancellable = g_cancellable_new (); self->recent_uris = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); self->file_uri = g_build_filename (g_get_user_data_dir (), ide_get_program_name (), IDE_RECENT_PROJECTS_BOOKMARK_FILENAME, NULL); engine = peas_engine_get_default (); set = peas_extension_set_new (engine, IDE_TYPE_PROJECT_MINER, NULL); peas_extension_set_foreach (set, foreach_miner_func, self); g_clear_object (&set); }
static void ide_recent_projects_init (IdeRecentProjects *self) { GIOExtensionPoint *extension_point; GList *extensions; self->projects = g_sequence_new (g_object_unref); self->miners = g_ptr_array_new_with_free_func (g_object_unref); self->cancellable = g_cancellable_new (); self->recent_uris = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); self->file_uri = g_build_filename (g_get_user_data_dir (), ide_get_program_name (), IDE_RECENT_PROJECTS_BOOKMARK_FILENAME, NULL); extension_point = g_io_extension_point_lookup (IDE_PROJECT_MINER_EXTENSION_POINT); extensions = g_io_extension_point_get_extensions (extension_point); for (; extensions; extensions = extensions->next) { IdeProjectMiner *miner; GIOExtension *extension = extensions->data; GType type_id; type_id = g_io_extension_get_type (extension); if (!g_type_is_a (type_id, IDE_TYPE_PROJECT_MINER)) { g_warning ("%s is not an IdeProjectMiner", g_type_name (type_id)); continue; } miner = g_object_new (type_id, NULL); ide_recent_projects_add_miner (self, miner); g_object_unref (miner); } }
static void ide_language_defaults_init_worker (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable) { g_autofree gchar *version_path = NULL; g_autofree gchar *version_contents = NULL; g_autofree gchar *version_dir = NULL; g_autoptr(GBytes) defaults = NULL; g_autoptr(GKeyFile) key_file = NULL; gint global_version; gboolean ret; GError *error = NULL; gint current_version; IDE_ENTRY; g_assert (G_IS_TASK (task)); g_assert (source_object == NULL); g_assert (task_data == NULL); g_assert (!cancellable || G_IS_CANCELLABLE (cancellable)); version_path = g_build_filename (g_get_user_config_dir (), ide_get_program_name (), "syntax", ".defaults", NULL); current_version = ide_language_defaults_get_current_version (version_path, &error); if (current_version < 0) { g_task_return_error (task, error); goto failure; } defaults = ide_language_defaults_get_defaults (&error); if (!defaults) { g_task_return_error (task, error); goto failure; } key_file = g_key_file_new (); ret = g_key_file_load_from_data (key_file, g_bytes_get_data (defaults, NULL), g_bytes_get_size (defaults), G_KEY_FILE_NONE, &error); if (!ret) { g_task_return_error (task, error); goto failure; } if (!g_key_file_has_group (key_file, "global") || !g_key_file_has_key (key_file, "global", "version", NULL)) { g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_INVALID_DATA, _("language defaults missing version in [global] group.")); goto failure; } global_version = g_key_file_get_integer (key_file, "global", "version", &error); if ((global_version == 0) && error) { g_task_return_error (task, error); goto failure; } if (global_version > current_version) { if (!ide_language_defaults_migrate (key_file, current_version, global_version, &error)) { g_task_return_error (task, error); goto failure; } version_contents = g_strdup_printf ("%d", global_version); version_dir = g_path_get_dirname (version_path); if (!g_file_test (version_dir, G_FILE_TEST_IS_DIR)) { if (g_mkdir_with_parents (version_dir, 0750) == -1) { g_task_return_new_error (task, G_IO_ERROR, g_io_error_from_errno (errno), "%s", g_strerror (errno)); goto failure; } } IDE_TRACE_MSG ("Writing new language defaults version to \"%s\"", version_path); if (!g_file_set_contents (version_path, version_contents, -1, &error)) { g_task_return_error (task, error); goto failure; } } g_task_return_boolean (task, TRUE); { GList *list; GList *iter; G_LOCK (lock); initializing = FALSE; initialized = TRUE; list = tasks; tasks = NULL; G_UNLOCK (lock); for (iter = list; iter; iter = iter->next) { g_task_return_boolean (iter->data, TRUE); g_object_unref (iter->data); } g_list_free (list); } IDE_EXIT; failure: { GList *list; GList *iter; G_LOCK (lock); initializing = FALSE; initialized = TRUE; list = tasks; tasks = NULL; G_UNLOCK (lock); for (iter = list; iter; iter = iter->next) { g_task_return_new_error (iter->data, G_IO_ERROR, G_IO_ERROR_FAILED, _("Failed to initialize defaults.")); g_object_unref (iter->data); } g_list_free (list); } IDE_EXIT; }