anjuta r4715 - in trunk: . plugins/file-manager plugins/subversion
- From: jhs svn gnome org
- To: svn-commits-list gnome org
- Subject: anjuta r4715 - in trunk: . plugins/file-manager plugins/subversion
- Date: Sun, 8 Feb 2009 22:44:21 +0000 (UTC)
Author: jhs
Date: Sun Feb 8 22:44:21 2009
New Revision: 4715
URL: http://svn.gnome.org/viewvc/anjuta?rev=4715&view=rev
Log:
2009-02-08 Johannes Schmid <jhs gnome org>
* plugins/file-manager/file-model.c (file_model_get_vcs_status):
* plugins/file-manager/plugin.c (get_vcs_plugin),
(project_root_added), (file_manager_activate):
* plugins/subversion/anjuta-subversion.plugin.in:
Only load correct IAnjutaVcs plugin for project
Modified:
trunk/ChangeLog
trunk/plugins/file-manager/file-model.c
trunk/plugins/file-manager/plugin.c
trunk/plugins/subversion/anjuta-subversion.plugin.in
Modified: trunk/plugins/file-manager/file-model.c
==============================================================================
--- trunk/plugins/file-manager/file-model.c (original)
+++ trunk/plugins/file-manager/file-model.c Sun Feb 8 22:44:21 2009
@@ -262,13 +262,7 @@
GtkTreePath* path = gtk_tree_model_get_path (GTK_TREE_MODEL(model),
iter);
FileModelPrivate* priv = FILE_MODEL_GET_PRIVATE(model);
- AnjutaPlugin* plugin = ANJUTA_PLUGIN(g_object_get_data (G_OBJECT(priv->view), "__plugin"));
-
- g_return_if_fail (plugin != NULL);
-
- IAnjutaVcs* ivcs = anjuta_shell_get_interface (plugin->shell,
- IAnjutaVcs,
- NULL);
+ IAnjutaVcs* ivcs = g_object_get_data (G_OBJECT(priv->view), "__ivcs");
if (ivcs)
{
VcsData* data = g_new0(VcsData, 1);
Modified: trunk/plugins/file-manager/plugin.c
==============================================================================
--- trunk/plugins/file-manager/plugin.c (original)
+++ trunk/plugins/file-manager/plugin.c Sun Feb 8 22:44:21 2009
@@ -30,6 +30,7 @@
#include <libanjuta/anjuta-preferences.h>
#include <libanjuta/interfaces/ianjuta-file-loader.h>
#include <libanjuta/interfaces/ianjuta-file-manager.h>
+#include <libanjuta/interfaces/ianjuta-vcs.h>
#include <libanjuta/interfaces/ianjuta-project-manager.h>
#include <libanjuta/interfaces/ianjuta-preferences.h>
#include "plugin.h"
@@ -90,6 +91,61 @@
g_object_unref (file);
}
+static IAnjutaVcs*
+get_vcs_plugin(AnjutaFileManager* file_manager, const gchar* root_uri)
+{
+ typedef struct
+ {
+ const gchar* file;
+ const gchar* name;
+ } VcsSystem;
+ VcsSystem vcs_systems[] = {
+ {".svn", "Subversion"},
+ {".git", "Git"},
+ {NULL, NULL}
+ };
+
+ gint i;
+ const gchar* vcs_system = NULL;
+ IAnjutaVcs* ivcs = NULL;
+ for (i = 0; vcs_systems[i].name != NULL; i++)
+ {
+ gchar* vcs_uri = g_build_filename (root_uri, vcs_systems[i].file, NULL);
+ GFile* vcs_file = g_file_new_for_uri (vcs_uri);
+ if (g_file_query_exists(vcs_file, NULL))
+ {
+ vcs_system = vcs_systems[i].name;
+ }
+ g_free (vcs_uri);
+ g_object_unref (vcs_file);
+ if (vcs_system)
+ break;
+ }
+
+ if (vcs_system)
+ {
+ /* Load current language editor support plugins */
+ AnjutaPluginManager* plugin_manager = anjuta_shell_get_plugin_manager (ANJUTA_PLUGIN(file_manager)->shell, NULL);
+ GList* plugin_descs = anjuta_plugin_manager_query (plugin_manager,
+ "Anjuta Plugin",
+ "Interfaces",
+ "IAnjutaVcs",
+ "Vcs",
+ "System",
+ vcs_system, NULL);
+ if (plugin_descs)
+ {
+ gchar* plugin_id;
+ anjuta_plugin_description_get_string (plugin_descs->data, "Anjuta Plugin", "Location",
+ &plugin_id);
+ ivcs = IANJUTA_VCS(anjuta_plugin_manager_get_plugin_by_id (plugin_manager,
+ plugin_id));
+ g_list_free (plugin_descs);
+ }
+ }
+ return ivcs;
+}
+
static void
project_root_added (AnjutaPlugin *plugin, const gchar *name,
const GValue *value, gpointer user_data)
@@ -102,11 +158,17 @@
if (root_uri)
{
g_object_set (G_OBJECT(file_manager->fv), "base_uri", root_uri, NULL);
+ g_object_set_data (G_OBJECT(file_manager->fv), "__ivcs",
+ get_vcs_plugin (file_manager,
+ root_uri));
+
file_view_refresh (file_manager->fv);
file_manager->have_project = TRUE;
}
else
{
+ g_object_set_data (G_OBJECT(file_manager->fv), "__ivcs",
+ NULL);
file_manager_set_default_uri (file_manager);
file_view_refresh (file_manager->fv);
}
@@ -235,7 +297,6 @@
GTK_SHADOW_IN);
file_manager->fv = ANJUTA_FILE_VIEW (file_view_new ());
- g_object_set_data (G_OBJECT(file_manager->fv), "__plugin", ANJUTA_PLUGIN(file_manager));
g_signal_connect (G_OBJECT (file_manager->fv), "file-open",
G_CALLBACK (on_file_view_open_file), file_manager);
Modified: trunk/plugins/subversion/anjuta-subversion.plugin.in
==============================================================================
--- trunk/plugins/subversion/anjuta-subversion.plugin.in (original)
+++ trunk/plugins/subversion/anjuta-subversion.plugin.in Sun Feb 8 22:44:21 2009
@@ -4,3 +4,6 @@
Location=anjuta-subversion:Subversion
Icon=anjuta-subversion-plugin-48.png
Interfaces=IAnjutaVcs
+
+[Vcs]
+System=Subversion
\ No newline at end of file
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]