/* This extracts the project URI saved in the session so that it could be * loaded sequencially. Returned string must be freed. */ static GFile* extract_project_from_session (const gchar* session_dir) { AnjutaSession *session; GList *node, *files; GFile *project = NULL; session = anjuta_session_new (session_dir); files = anjuta_session_get_string_list (session, "File Loader", "Files"); /* Find project file */ node = files; for (node = files; node != NULL; node = g_list_next (node)) { gchar *uri = node->data; if (uri) { if (anjuta_util_is_project_file (uri)) { if (project != NULL) g_object_unref (project); project = anjuta_session_get_file_from_relative_uri (session, uri, NULL); } g_free (uri); } } g_list_free (files); g_object_unref (session); return project; }
static void jsdirs_init_treeview (GtkBuilder* bxml) { const gchar *project_root = NULL; GtkTreeIter iter; GtkListStore *list_store = GTK_LIST_STORE (gtk_builder_get_object (bxml, JSDIRS_LISTSTORE)); if (!list_store) return; anjuta_shell_get (ANJUTA_PLUGIN (getPlugin ())->shell, IANJUTA_PROJECT_MANAGER_PROJECT_ROOT_URI, G_TYPE_STRING, &project_root, NULL); GFile *tmp = g_file_new_for_uri (project_root); AnjutaSession *session = anjuta_session_new (g_file_get_path (tmp)); g_object_unref (tmp); GList* dir_list = anjuta_session_get_string_list (session, "options", "js_dirs"); GList *i; gtk_list_store_clear (list_store); for (i = dir_list; i; i = g_list_next (i)) { gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, 0, i->data, -1); } if (!dir_list) { gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, 0, ".", -1); } }
static GList* anjuta_session_get_relative_file_list (AnjutaSession *session, const gchar *section, const gchar *key) { GList *list; GList *item; list = anjuta_session_get_string_list (session, section, key); for (item = g_list_first (list); item != NULL; item = g_list_next (item)) { GFile *file; file = anjuta_session_get_file_from_relative_uri (session, (const gchar *)item->data, NULL); g_free (item->data); item->data = file; } return list; }
GList * gdb_load_pretty_printers (AnjutaSession *session) { GList *session_list; GList *list = NULL; GList *item; session_list = anjuta_session_get_string_list (session, GDB_SECTION, GDB_PRINTER_KEY); for (item = g_list_first (session_list); item != NULL; item = g_list_next (item)) { GdbPrettyPrinter *printer; gchar *name = (gchar *)item->data; gchar *ptr; printer = g_slice_new0 (GdbPrettyPrinter); ptr = strchr (name, ':'); if (ptr != NULL) { if (*name == 'E') printer->enable = TRUE; name = ptr + 1; } ptr = strrchr (name, ':'); if (ptr != NULL) { *ptr = '\0'; printer->function = g_strdup (ptr + 1); } printer->path = g_strdup (name); list = g_list_prepend (list, printer); } g_list_foreach (session_list, (GFunc)g_free, NULL); g_list_free (session_list); return list; }
static void on_session_load (AnjutaShell *shell, AnjutaSessionPhase phase, AnjutaSession *session, DmaStart *self) { gint stop_at_beginning; if (phase != ANJUTA_SESSION_PHASE_NORMAL) return; /* Initialize source_dirs */ if (self->source_dirs != NULL) { g_list_foreach (self->source_dirs, (GFunc)g_free, NULL); g_list_free (self->source_dirs); } self->source_dirs = anjuta_session_get_string_list (session, "Debugger", "Source directories"); stop_at_beginning = anjuta_session_get_int (session, "Debugger", "Stop at beginning"); if (stop_at_beginning == 0) self->stop_at_beginning = TRUE; /* Default value */ else self->stop_at_beginning = stop_at_beginning - 1; g_free (self->remote_debugger); self->remote_debugger = anjuta_session_get_string (session, "Debugger", "Remote target"); }