static void update_type_list (AnjutaShell *shell, IAnjutaIterable *iter, const gchar *name) { gchar *list = NULL; GValue value = {0,}; if (iter) { ianjuta_iterable_first (iter, NULL); if (ianjuta_iterable_get_length (iter, NULL) > 0) { GString *s = g_string_sized_new(ianjuta_iterable_get_length (iter, NULL) * 10); do { IAnjutaSymbol *symbol = IANJUTA_SYMBOL (iter); const gchar *sname = ianjuta_symbol_get_string (symbol, IANJUTA_SYMBOL_FIELD_NAME, NULL); g_string_append(s, sname); g_string_append_c(s, ' '); } while (ianjuta_iterable_next (iter, NULL)); list = g_string_free(s, FALSE); } } anjuta_shell_get_value (shell, name, &value, NULL); if (G_VALUE_HOLDS_STRING(&value)) { const gchar *value_list = g_value_get_string (&value); if (list == NULL) { anjuta_shell_remove_value (shell, name, NULL); } else if (strcmp (list, value_list) == 0) { g_free (list); } else { g_value_take_string (&value, list); anjuta_shell_add_value (shell, name, &value, NULL); } } else { if (list != NULL) { g_value_init (&value, G_TYPE_STRING); g_value_take_string (&value, list); anjuta_shell_add_value (shell, name, &value, NULL); } } if (G_IS_VALUE (&value)) g_value_unset (&value); }
static void anjuta_test_shell_add_value (AnjutaShell *shell, const char *name, const GValue *value, GError **error) { GValue *copy; AnjutaTestShell *window = ANJUTA_TEST_SHELL (shell); anjuta_shell_remove_value (shell, name, error); copy = g_new0 (GValue, 1); g_value_init (copy, value->g_type); g_value_copy (value, copy); g_hash_table_insert (window->values, g_strdup (name), copy); g_signal_emit_by_name (shell, "value_added", name, copy); }
gboolean anjuta_pm_project_unload (AnjutaPmProject *project, GError **error) { /* Remove value from Anjuta shell */ anjuta_shell_remove_value (project->plugin->shell, IANJUTA_PROJECT_MANAGER_CURRENT_PROJECT, NULL); if (project->project) g_object_unref (project->project); project->project = NULL; project->loaded = FALSE; project->node_capabilities = 0; /* Remove project properties dialogs */ if (project->properties_dialog != NULL) gtk_widget_destroy (project->properties_dialog); project->properties_dialog = NULL; return TRUE; }
static void on_file_view_current_file_changed (AnjutaFileView* view, GFile* file, AnjutaFileManager* file_manager) { if (file) { GValue* value; value = g_new0 (GValue, 1); g_value_init (value, G_TYPE_FILE); g_value_set_object (value, file); anjuta_shell_add_value (ANJUTA_PLUGIN (file_manager)->shell, IANJUTA_FILE_MANAGER_SELECTED_FILE, value, NULL); g_value_unset (value); } else { anjuta_shell_remove_value (ANJUTA_PLUGIN(file_manager)->shell, IANJUTA_FILE_MANAGER_SELECTED_FILE, NULL); } }