[anjuta/sdb-core-trans: 291/291] Merge branch 'sdb-core-trans'
- From: Johannes Schmid <jhs src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [anjuta/sdb-core-trans: 291/291] Merge branch 'sdb-core-trans'
- Date: Fri, 19 Nov 2010 17:16:12 +0000 (UTC)
commit 57349badeee18b69e992d630ecfb5ae5932776ad
Merge: 6f001af 6583b12
Author: Johannes Schmid <jhs gnome org>
Date: Fri Nov 19 17:35:48 2010 +0100
Merge branch 'sdb-core-trans'
Conflicts:
libanjuta/anjuta-utils.c
plugins/language-support-cpp-java/plugin.c
plugins/symbol-db/anjuta-symbol-db.ui
plugins/symbol-db/plugin.c
plugins/symbol-db/symbol-db-prefs.c
plugins/symbol-db/symbol-db-prefs.h
libanjuta/anjuta-utils.c | 29 +
libanjuta/anjuta-utils.h | 3 +-
libanjuta/interfaces/libanjuta.idl | 61 ++
.../anjuta-language-cpp-java.ui | 64 ++-
plugins/language-support-cpp-java/plugin.c | 57 ++
plugins/symbol-db/Makefile.am | 2 -
plugins/symbol-db/anjuta-symbol-db.ui | 111 +----
plugins/symbol-db/benchmark/symbol-db/benchmark.c | 6 +-
plugins/symbol-db/plugin.c | 459 +++++++++------
plugins/symbol-db/plugin.h | 9 +-
plugins/symbol-db/symbol-db-engine-core.c | 466 ++++++++++-----
plugins/symbol-db/symbol-db-engine-core.h | 73 ++-
plugins/symbol-db/symbol-db-engine-priv.h | 45 +-
plugins/symbol-db/symbol-db-engine-utils.c | 2 +-
plugins/symbol-db/symbol-db-engine-utils.h | 4 +-
plugins/symbol-db/symbol-db-prefs.c | 618 --------------------
plugins/symbol-db/symbol-db-prefs.h | 77 ---
plugins/symbol-db/symbol-db-system.c | 23 +-
plugins/symbol-db/symbol-db-system.h | 4 +-
plugins/symbol-db/tables.sql | 6 +-
20 files changed, 911 insertions(+), 1208 deletions(-)
---
diff --cc libanjuta/anjuta-utils.c
index 8cf9559,b36bcda..fd8122b
--- a/libanjuta/anjuta-utils.c
+++ b/libanjuta/anjuta-utils.c
@@@ -2423,15 -2431,31 +2423,44 @@@ anjuta_util_drop_get_files (GtkSelectio
return files;
}
+/*
+ * anjuta_util_get_user_mail:
+ *
+ * Returns: The e-mail Address of the logged-in user. The resulting string
+ * must be free'd after use.
+ */
+gchar*
+anjuta_util_get_user_mail()
+{
+ /* FIXME: Use libfolks or something like it to query the mail address */
+ return g_strconcat(g_get_user_name (), "@", g_get_host_name (), NULL);
+}
++
+ /**
+ * anjuta_utils_clone_string_gptrarray:
+ * @source: The source GPtrArray containing items representing strings
+ *
+ * Clones the contents of source GPtrArray into a new allocated GPtrArray.
+ *
+ * Return a new allocated GPtrArray with strings g_strdup (), NULL on error.
+ * The returned array has set g_free as GDestroyNotity function, so that user
+ * should only care to g_ptr_array_unref () without freeing the strings.
+ */
+ GPtrArray *
+ anjuta_util_clone_string_gptrarray (const GPtrArray* source)
+ {
+ gint i;
+ GPtrArray *dest;
+
+ g_return_val_if_fail (source != NULL, NULL);
+
+ dest = g_ptr_array_sized_new (source->len);
+ g_ptr_array_set_free_func (dest, g_free);
+
+ for (i = 0; i < source->len; i++)
+ {
+ g_ptr_array_add (dest, g_strdup (g_ptr_array_index (source, i)));
+ }
+
+ return dest;
+ }
diff --cc plugins/language-support-cpp-java/anjuta-language-cpp-java.ui
index 256f420,b4fde16..9dd9b1e
--- a/plugins/language-support-cpp-java/anjuta-language-cpp-java.ui
+++ b/plugins/language-support-cpp-java/anjuta-language-cpp-java.ui
@@@ -1,9 -1,22 +1,10 @@@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="2.16"/>
+ <!-- interface-requires anjuta 0.0 -->
<!-- interface-naming-policy toplevel-contextual -->
- <object class="GtkAdjustment" id="adjustment1">
- <property name="upper">100</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
- </object>
- <object class="GtkAdjustment" id="adjustment2">
+ <object class="GtkAdjustment" id="adjustment4">
<property name="upper">100</property>
- <property name="value">4</property>
- <property name="step_increment">1</property>
- <property name="page_increment">10</property>
- </object>
- <object class="GtkAdjustment" id="adjustment3">
- <property name="upper">50</property>
- <property name="value">10</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
@@@ -308,16 -287,18 +310,16 @@@
<child>
<object class="GtkFrame" id="frame45">
<property name="visible">True</property>
-- <property name="border_width">5</property>
++ <property name="border_width">0</property>
<property name="label_xalign">0</property>
<property name="label_yalign">0</property>
<property name="shadow_type">none</property>
<child>
<object class="GtkVBox" id="vbox1118">
<property name="visible">True</property>
- <property name="spacing">5</property>
- <property name="orientation">vertical</property>
- <property name="spacing">5</property>
++ <property name="spacing">0</property>
<child>
- <object class="GtkCheckButton" id="preferences_toggle:bool:1:1:language.cpp.code.completion.enable">
+ <object class="GtkCheckButton" id="preferences_toggle:bool:1:1:cpp-completion-enable">
<property name="label" translatable="yes">Enable code completion</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@@ -471,9 -453,59 +473,63 @@@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment6">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="AnjutaPkgConfigChooser" id="pkg_config_chooser1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">False</property>
+ <property name="headers_clickable">False</property>
+ <property name="search_column">0</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="xpad">6</property>
+ <property name="label" translatable="yes">Available API tags</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
++ <property name="fill">False</property>
++ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
</object>
<packing>
-- <property name="position">1</property>
++ <property name="fill">False</property>
++ <property name="expand">False</property>
++ <property name="position">1</property>
</packing>
</child>
<child type="tab">
diff --cc plugins/language-support-cpp-java/plugin.c
index ddc3de6,8164950..a10f816
--- a/plugins/language-support-cpp-java/plugin.c
+++ b/plugins/language-support-cpp-java/plugin.c
@@@ -51,17 -52,16 +52,19 @@@
#define PREFS_BUILDER PACKAGE_DATA_DIR"/glade/anjuta-language-cpp-java.ui"
#define ICON_FILE "anjuta-language-cpp-java-plugin.png"
+ #define FIXME_DEFAULT_PACKAGE_VERSION "1.0"
+
/* Preferences keys */
-#define PREF_INDENT_AUTOMATIC "language.cpp.indent.automatic"
-#define PREF_INDENT_STATEMENT_SIZE "language.cpp.indent.statement.size"
-#define PREF_INDENT_BRACE_SIZE "language.cpp.indent.brace.size"
-#define PREF_INDENT_PARANTHESE_LINEUP "language.cpp.indent.paranthese.lineup"
-#define PREF_INDENT_PARANTHESE_SIZE "language.cpp.indent.paranthese.size"
-#define PREF_BRACE_AUTOCOMPLETION "language.cpp.brace.autocompletion"
+#define PREF_SCHEMA "org.gnome.anjuta.cpp"
+#define PREF_INDENT_AUTOMATIC "cpp-indent-automatic"
+#define PREF_INDENT_MODELINE "cpp-indent-modeline"
+#define PREF_INDENT_STATEMENT_SIZE "cpp-indent-statement-size"
+#define PREF_INDENT_BRACE_SIZE "cpp-indent-brace-size"
+#define PREF_INDENT_PARANTHESE_LINEUP "cpp-indent-paranthese-lineup"
+#define PREF_INDENT_PARANTHESE_SIZE "cpp-indent-paranthese-size"
+#define PREF_BRACE_AUTOCOMPLETION "cpp-brace-autocompletion"
+#define PREF_COMMENT_LEADING_ASTERISK "cpp-multiline-leading-asterisk"
#define TAB_SIZE (ianjuta_editor_get_tabsize (editor, NULL))
@@@ -2048,10 -2009,12 +2051,11 @@@ cpp_java_plugin_class_init (GObjectClas
klass->dispose = cpp_java_plugin_dispose;
}
-#define PREF_WIDGET_SPACE "preferences_toggle:bool:1:1:language.cpp.code.completion.space.after.func"
-#define PREF_WIDGET_BRACE "preferences_toggle:bool:1:1:language.cpp.code.completion.brace.after.func"
-#define PREF_WIDGET_AUTO "preferences_toggle:bool:1:1:language.cpp.code.completion.enable"
+#define PREF_WIDGET_SPACE "preferences_toggle:bool:1:1:cpp-completion-space-after-func"
+#define PREF_WIDGET_BRACE "preferences_toggle:bool:1:1:cpp-completion-brace-after-func"
+#define PREF_WIDGET_AUTO "preferences_toggle:bool:1:1:cpp-completion-enable"
+ #define PREF_WIDGET_PKG_CONFIG "pkg_config_chooser1"
-
static void
on_autocompletion_toggled (GtkToggleButton* button,
GtkBuilder* bxml)
diff --cc plugins/symbol-db/anjuta-symbol-db.ui
index c9c6163,7c35e9d..36eb8a4
--- a/plugins/symbol-db/anjuta-symbol-db.ui
+++ b/plugins/symbol-db/anjuta-symbol-db.ui
@@@ -27,28 -28,9 +28,6 @@@
<placeholder/>
</child>
<child>
- <object class="GtkHBox" id="hbox2">
- <property name="visible">True</property>
- <child>
- <object class="GtkCheckButton" id="preferences_toggle:bool:1:1:symboldb-scan-prj-pkgs">
- <property name="label" translatable="yes">Automatically scan project's packages</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="has_tooltip">True</property>
- <property name="tooltip_text" translatable="yes">This option enables the default packages required by your opened project, e.g. Glib and GTK+ if you create a GTK+ project (may require more CPU work)</property>
- <property name="draw_indicator">True</property>
- </object>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
<object class="GtkHBox" id="hbox4">
<property name="visible">True</property>
<child>
diff --cc plugins/symbol-db/plugin.c
index 87f2d77,d0fbc0e..1421722
--- a/plugins/symbol-db/plugin.c
+++ b/plugins/symbol-db/plugin.c
@@@ -49,6 -48,12 +48,14 @@@
#define ICON_FILE "anjuta-symbol-db-plugin-48.png"
#define UI_FILE PACKAGE_DATA_DIR"/ui/anjuta-symbol-db-plugin.xml"
+ #define BUILDER_FILE PACKAGE_DATA_DIR"/glade/anjuta-symbol-db.ui"
+ #define BUILDER_ROOT "symbol_prefs"
+ #define ICON_FILE "anjuta-symbol-db-plugin-48.png"
-#define PREFS_BUFFER_UPDATE "preferences_toggle:bool:1:1:symboldb.buffer_update"
-#define PREFS_PARALLEL_SCAN "preferences_toggle:bool:1:1:symboldb.parallel_scan"
++#define BUFFER_UPDATE "symboldb-buffer-update"
++#define PARALLEL_SCAN "symboldb-parallel-scan"
++#define PREFS_BUFFER_UPDATE "preferences_toggle:bool:1:1:symboldb-buffer-update"
++#define PREFS_PARALLEL_SCAN "preferences_toggle:bool:1:1:symboldb-parallel-scan"
+
#define TIMEOUT_INTERVAL_SYMBOLS_UPDATE 10
#define TIMEOUT_SECONDS_AFTER_LAST_TIP 5
@@@ -506,7 -508,7 +512,7 @@@ on_editor_buffer_symbol_update_scan_en
}
/* add a default timeout to the updating of buffer symbols */
- tags_update = g_settings_get_boolean (sdb_plugin->settings, BUFFER_AUTOSCAN);
- tags_update = anjuta_preferences_get_bool (sdb_plugin->prefs, PREFS_BUFFER_UPDATE);
++ tags_update = g_settings_get_boolean (sdb_plugin->settings, BUFFER_UPDATE);
if (tags_update)
{
@@@ -683,7 -685,7 +689,8 @@@ value_added_current_editor (AnjutaPlugi
g_object_set (sdb_plugin->file_model, "file-path", local_path, NULL);
/* add a default timeout to the updating of buffer symbols */
- tags_update = g_settings_get_boolean (sdb_plugin->settings, BUFFER_AUTOSCAN);
- tags_update = anjuta_preferences_get_bool (sdb_plugin->prefs, PREFS_BUFFER_UPDATE);
++ tags_update = g_settings_get_boolean (sdb_plugin->settings, BUFFER_UPDATE);
++
if (tags_update)
{
@@@ -1465,10 -1449,9 +1448,10 @@@ do_check_offline_files_changed (SymbolD
}
}
+ /*if (it != NULL) g_object_unref (it);*/
g_object_unref (it);
g_object_unref (model);
- g_ptr_array_free (to_add_files, TRUE);
+ g_ptr_array_unref (to_add_files);
g_hash_table_destroy (prj_elements_hash);
return real_added > 0 ? TRUE : FALSE;
@@@ -1509,21 -1577,9 +1577,9 @@@ on_session_load (AnjutaShell *shell, An
anjuta_session_get_session_directory (session));
sdb_plugin->session_loading = TRUE;
- if (sdb_plugin->session_packages == NULL)
- {
- /* hey, does user want to import system sources for this project? */
- gboolean automatic_scan = g_settings_get_boolean (sdb_plugin->settings,
- PROJECT_AUTOSCAN);
-
- if (automatic_scan == TRUE)
- {
- sdb_plugin->session_packages = ianjuta_project_manager_get_packages (pm, NULL);
- }
- }
-
/* get preferences about the parallel scan */
- gboolean parallel_scan = anjuta_preferences_get_bool (sdb_plugin->prefs,
- PREFS_PARALLEL_SCAN);
+ gboolean parallel_scan = g_settings_get_boolean (sdb_plugin->settings,
- PARALLEL_SCAN);
++ PARALLEL_SCAN);
if (parallel_scan == TRUE &&
symbol_db_engine_is_connected (sdb_plugin->sdbe_globals) == TRUE)
@@@ -1752,7 -1742,7 +1805,7 @@@ on_project_root_added (AnjutaPlugin *pl
if (needs_sources_scan == TRUE)
{
DEBUG_PRINT ("Importing sources.");
-- do_import_project_sources (plugin, pm, root_dir);
++ do_import_project_sources (ANJUTA_PLUGIN_SYMBOL_DB(plugin), pm, root_dir);
}
else
{
@@@ -1770,10 -1760,8 +1823,9 @@@
if (sources_array != NULL && sources_array->len > 0)
{
- do_import_project_sources_after_abort (plugin, sources_array);
-
- g_ptr_array_foreach (sources_array, (GFunc)g_free, NULL);
- g_ptr_array_free (sources_array, TRUE);
- do_import_project_sources_after_abort (plugin, sources_array);
++ do_import_project_sources_after_abort (ANJUTA_PLUGIN_SYMBOL_DB (plugin),
++ sources_array);
+ g_ptr_array_unref (sources_array);
}
/* check for offline changes */
@@@ -1885,8 -1869,8 +1935,9 @@@ on_scan_end_manager (SymbolDBEngine *db
sdb_plugin);
/* get preferences about the parallel scan */
- gboolean parallel_scan = anjuta_preferences_get_bool (sdb_plugin->prefs,
- PREFS_PARALLEL_SCAN);
+ gboolean parallel_scan = g_settings_get_boolean (sdb_plugin->settings,
- PARALLEL_SCAN);
++ PARALLEL_SCAN);
++
/* check the system population has a parallel fashion or not. */
if (parallel_scan == FALSE)
@@@ -2512,28 -2448,34 +2519,35 @@@ ipreferences_merge(IAnjutaPreferences*
{
DEBUG_PRINT ("%s", "SymbolDB: ipreferences_merge");
SymbolDBPlugin *sdb_plugin;
+ GtkWidget *buf_up_widget;
++ GError* error = NULL;
sdb_plugin = ANJUTA_PLUGIN_SYMBOL_DB (ipref);
-
- if (sdb_plugin->sdbp == NULL)
- {
- sdb_plugin->sdbp = symbol_db_prefs_new (sdb_plugin->sdbs,
- sdb_plugin->sdbe_project,
- sdb_plugin->sdbe_globals,
- sdb_plugin->settings,
- sdb_plugin->session_packages);
-
- /* connect the signals to retrieve package modifications */
- g_signal_connect (G_OBJECT (sdb_plugin->sdbp), "package-add",
- G_CALLBACK (on_prefs_package_add),
- sdb_plugin);
- g_signal_connect (G_OBJECT (sdb_plugin->sdbp), "package-remove",
- G_CALLBACK (on_prefs_package_remove),
- sdb_plugin);
- g_signal_connect (G_OBJECT (sdb_plugin->sdbp), "buffer-update-toggled",
- G_CALLBACK (on_prefs_buffer_update_toggled),
- sdb_plugin);
+
+ if (sdb_plugin->prefs_bxml == NULL)
- {
- GError* error = NULL;
++ {
+ /* Create the preferences page */
+ sdb_plugin->prefs_bxml = gtk_builder_new ();
+ if (!gtk_builder_add_from_file (sdb_plugin->prefs_bxml, BUILDER_FILE, &error))
+ {
+ g_warning ("Couldn't load builder file: %s", error->message);
+ g_error_free(error);
+ }
}
+
+ anjuta_preferences_add_from_builder (prefs,
- sdb_plugin->prefs_bxml,
- BUILDER_ROOT,
- _("Symbol Database"),
- ICON_FILE);
++ sdb_plugin->prefs_bxml,
++ sdb_plugin->settings,
++ BUILDER_ROOT,
++ _("Symbol Database"),
++ ICON_FILE);
+
+ buf_up_widget = GTK_WIDGET (gtk_builder_get_object (sdb_plugin->prefs_bxml,
+ PREFS_BUFFER_UPDATE));
+
+ g_signal_connect (buf_up_widget, "toggled",
+ G_CALLBACK (on_prefs_buffer_update_toggled),
+ sdb_plugin);
}
static void
@@@ -2574,6 -2517,190 +2589,118 @@@ isymbol_manager_create_query (IAnjutaSy
return IANJUTA_SYMBOL_QUERY (query);
}
+ static gboolean
+ isymbol_manager_add_package (IAnjutaSymbolManager *isymbol_manager,
+ const gchar* pkg_name,
+ const gchar* pkg_version,
+ GList* files,
+ GError *err)
+ {
+ SymbolDBPlugin *sdb_plugin;
+ IAnjutaLanguage *lang_manager;
+ GPtrArray *files_array;
+ GList *node;
+
+ g_return_val_if_fail (isymbol_manager != NULL, FALSE);
+
+ sdb_plugin = ANJUTA_PLUGIN_SYMBOL_DB (isymbol_manager);
+ lang_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN (sdb_plugin)->shell, IAnjutaLanguage,
+ NULL);
+
+ if (symbol_db_engine_add_new_project (sdb_plugin->sdbe_globals, NULL, pkg_name,
+ pkg_version) == FALSE)
+ {
+ return FALSE;
+ }
+
+ files_array = g_ptr_array_sized_new (g_list_length (files));
+ g_ptr_array_set_free_func (files_array, g_free);
+
+ node = files;
+ while (node != NULL)
+ {
+ g_ptr_array_add (files_array, g_strdup (node->data));
+
+ node = node->next;
+ }
+
+ symbol_db_engine_add_new_files_async (sdb_plugin->sdbe_globals, lang_manager,
+ pkg_name, pkg_version, files_array);
+
+ g_ptr_array_unref (files_array);
+
+ return TRUE;
+ }
+
+ static gboolean
+ isymbol_manager_activate_package (IAnjutaSymbolManager *isymbol_manager,
+ const gchar *pkg_name,
+ const gchar *pkg_version,
+ GError *err)
+ {
+ SymbolDBPlugin *sdb_plugin;
+ GList *versions;
+
+ g_return_val_if_fail (isymbol_manager != NULL, FALSE);
+
+ sdb_plugin = ANJUTA_PLUGIN_SYMBOL_DB (isymbol_manager);
+
+ /* check whether the package already exists in the session packages. */
+ if ((versions = g_hash_table_lookup (sdb_plugin->session_packages, pkg_name)) != NULL)
+ {
+ GList *node;
+
+ /* if the package is already activated return true */
+ node = versions;
+ while (node != NULL)
+ {
+ if (g_strcmp0 (node->data, pkg_version) == 0)
+ return TRUE;
+
+ node = g_list_next (node);
+ }
+
+ /* check in the db: it may have a different version from the one already activated */
+ if (symbol_db_engine_project_exists (sdb_plugin->sdbe_globals, pkg_name,
+ pkg_version) == TRUE)
+ {
+ GList *new_versions;
+
+ /* this is a rare case so the performance playing with glist should not be
+ taken into consideration */
+ new_versions = anjuta_util_glist_strings_dup (versions);
+
+ /* ok, the package version exists in db. Append it to the versions glist */
+ new_versions = g_list_prepend (new_versions, g_strdup (pkg_version));
+
+ /* go ahead and insert it, replacing the old one */
+ g_hash_table_insert (sdb_plugin->session_packages, g_strdup (pkg_name),
+ new_versions);
+
+ return TRUE;
+ }
+
+ /* nothing found on db. This is hopeless */
+ return FALSE;
+ }
+
+ if (symbol_db_engine_project_exists (sdb_plugin->sdbe_globals, pkg_name,
+ pkg_version) == TRUE)
+ {
+ GList *versions = NULL;
+
+ versions = g_list_append (versions, g_strdup (pkg_version));
+ /* ok, package exists in db. Add it to session packages */
+ g_hash_table_insert (sdb_plugin->session_packages,
+ g_strdup (pkg_name),
+ versions);
+ return TRUE;
+ }
+
+ /* user should add a package before activating it. */
+ return FALSE;
+ }
+
-static gboolean
-isymbol_manager_add_and_activate_package (IAnjutaSymbolManager *isymbol_manager,
- const gchar *pkg_name,
- const gchar *pkg_version,
- GList *files,
- GError *err)
-{
- SymbolDBPlugin *sdb_plugin;
-
- g_return_val_if_fail (isymbol_manager != NULL, FALSE);
-
- sdb_plugin = ANJUTA_PLUGIN_SYMBOL_DB (isymbol_manager);
-
- if (isymbol_manager_add_package (isymbol_manager, pkg_name, pkg_version,
- files, err) == FALSE)
- return FALSE;
-
- if (isymbol_manager_activate_package (isymbol_manager, pkg_name, pkg_version,
- err) == FALSE)
- {
- return FALSE;
- }
-
- return TRUE;
-}
-
-static gboolean
-isymbol_manager_deactivate_package (IAnjutaSymbolManager *isymbol_manager,
- const gchar *pkg_name,
- const gchar *pkg_version,
- GError *err)
-{
- SymbolDBPlugin *sdb_plugin;
- GList *versions;
- GList *node;
-
- g_return_val_if_fail (isymbol_manager != NULL, FALSE);
-
- sdb_plugin = ANJUTA_PLUGIN_SYMBOL_DB (isymbol_manager);
-
- if ((versions = g_hash_table_lookup (sdb_plugin->session_packages, pkg_name)) == NULL)
- return FALSE;
-
- /* we can safely remove the whole list if it's composed by just one element */
- if (g_list_length (versions) == 1)
- {
- g_hash_table_remove (sdb_plugin->session_packages, pkg_name);
- return TRUE;
- }
-
- /* ok, if we reach this point we have a list with more than an element.
- * Remove one and replace the item in the hash table.
- */
- node = versions;
- while (node != NULL)
- {
- if (g_strcmp0 (node->data, pkg_version) == 0)
- {
- versions = g_list_remove_link (versions, node);
- g_free (node->data);
- g_list_free (node);
-
- node = versions;
- continue;
- }
-
- node = g_list_next (node);
- }
-
- return TRUE;
-}
-
static void
isymbol_manager_iface_init (IAnjutaSymbolManagerIface *iface)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]