[Xfce4-commits] <thunar-vcs-plugin:thunarx-2> * thunar-vcs-plugin/tvp-provider.c thunar-vcs-plugin/tvp-git-action.[ch]: Added extra flags to tvp_git_action_new. * thunar-vcs-plugin/yvp-{svn, git}-action.c: Only show menu items if they are implemented.

Peter de Ridder noreply at xfce.org
Sun Nov 29 19:04:17 CET 2009


Updating branch refs/heads/thunarx-2
         to 956d4903bccd42425a79ae546d0ae2dabdff1317 (commit)
       from 134427c074ba04a2e94390e7f6be105921d978d0 (commit)

commit 956d4903bccd42425a79ae546d0ae2dabdff1317
Author: Peter de Ridder <peter at xfce.org>
Date:   Sun Oct 11 23:21:15 2009 +0200

    * thunar-vcs-plugin/tvp-provider.c
      thunar-vcs-plugin/tvp-git-action.[ch]: Added extra flags to
      tvp_git_action_new.
    * thunar-vcs-plugin/yvp-{svn,git}-action.c: Only show menu items if they
      are implemented.

 thunar-vcs-plugin/tvp-git-action.c |   15 +++++++++++----
 thunar-vcs-plugin/tvp-git-action.h |    2 ++
 thunar-vcs-plugin/tvp-provider.c   |   36 ++++++++++++++++++++++++++++++++----
 thunar-vcs-plugin/tvp-svn-action.c |    5 +++--
 4 files changed, 48 insertions(+), 10 deletions(-)

diff --git a/thunar-vcs-plugin/tvp-git-action.c b/thunar-vcs-plugin/tvp-git-action.c
index 57bfe31..f0b32c5 100644
--- a/thunar-vcs-plugin/tvp-git-action.c
+++ b/thunar-vcs-plugin/tvp-git-action.c
@@ -139,7 +139,9 @@ tvp_git_action_new (const gchar *name,
         const gchar *label,
         GList *files,
         GtkWidget *window,
-        gboolean is_parent)
+        gboolean is_parent,
+        gboolean is_direcotry,
+        gboolean is_file)
 {
   GtkAction *action;
 
@@ -223,8 +225,9 @@ add_subaction_u (GtkMenuShell *menu, const gchar *name, const gchar *text, const
     subitem = gtk_action_create_menu_item (subaction);
     g_object_get (G_OBJECT (subaction), "tooltip", &tooltip, NULL);
     gtk_widget_set_tooltip_text(subitem, tooltip);
-    gtk_menu_shell_append (menu, subitem);
-    gtk_widget_show(subitem);
+    //gtk_menu_shell_append (menu, subitem);
+    //gtk_widget_show(subitem);
+    gtk_widget_unref (subitem);
 }
 
 
@@ -233,6 +236,7 @@ tvp_git_action_create_menu_item (GtkAction *action)
 {
     GtkWidget *item;
     GtkWidget *menu;
+    TvpGitAction *tvp_action = TVP_GIT_ACTION (action);
 
     item = GTK_ACTION_CLASS(tvp_git_action_parent_class)->create_menu_item (action);
 
@@ -241,9 +245,11 @@ tvp_git_action_create_menu_item (GtkAction *action)
 
     add_subaction (action, GTK_MENU_SHELL(menu), "tvp::add", Q_("Menu|Add"), _("Add"), GTK_STOCK_ADD, "--add");
     add_subaction_u(GTK_MENU_SHELL(menu), "tvp::bisect", Q_("Menu|Bisect"), _("Bisect"), NULL, _("Bisect"));
+  if(tvp_action->property.is_parent)
     add_subaction (action, GTK_MENU_SHELL(menu), "tvp::branch", Q_("Menu|Branch"), _("Branch"), NULL, "--branch");
     add_subaction_u(GTK_MENU_SHELL(menu), "tvp::checkout", Q_("Menu|Checkout"), _("Checkout"), GTK_STOCK_CONNECT, _("Checkout"));
-    add_subaction_u(GTK_MENU_SHELL(menu), "tvp::clone", Q_("Menu|Clone"), _("Clone"), GTK_STOCK_COPY, _("Clone"));
+  if(tvp_action->property.is_parent)
+    add_subaction (action, GTK_MENU_SHELL(menu), "tvp::clone", Q_("Menu|Clone"), _("Clone"), GTK_STOCK_COPY, "--clone");
     add_subaction_u(GTK_MENU_SHELL(menu), "tvp::commit", Q_("Menu|Commit"), _("Commit"), GTK_STOCK_APPLY, _("Commit"));
     add_subaction_u(GTK_MENU_SHELL(menu), "tvp::diff", Q_("Menu|Diff"), _("Diff"), GTK_STOCK_FIND_AND_REPLACE, _("Diff"));
     add_subaction_u(GTK_MENU_SHELL(menu), "tvp::fetch", Q_("Menu|Fetch"), _("Fetch"), NULL, _("Fetch"));
@@ -258,6 +264,7 @@ tvp_git_action_create_menu_item (GtkAction *action)
     add_subaction (action, GTK_MENU_SHELL(menu), "tvp::reset", Q_("Menu|Reset"), _("Reset"), GTK_STOCK_UNDO, "--reset");
     add_subaction_u(GTK_MENU_SHELL(menu), "tvp::remove", Q_("Menu|Remove"), _("Remove"), GTK_STOCK_DELETE, _("Remove"));
     add_subaction_u(GTK_MENU_SHELL(menu), "tvp::show", Q_("Menu|Show"), _("Show"), NULL, _("Show"));
+  if(tvp_action->property.is_parent)
     add_subaction (action, GTK_MENU_SHELL(menu), "tvp::status", Q_("Menu|Status"), _("Status"), GTK_STOCK_DIALOG_INFO, "--status");
     add_subaction_u(GTK_MENU_SHELL(menu), "tvp::tag", Q_("Menu|Tag"), _("Tag"), NULL, _("Tag"));
 
diff --git a/thunar-vcs-plugin/tvp-git-action.h b/thunar-vcs-plugin/tvp-git-action.h
index d6a16ee..a016249 100644
--- a/thunar-vcs-plugin/tvp-git-action.h
+++ b/thunar-vcs-plugin/tvp-git-action.h
@@ -42,6 +42,8 @@ GtkAction *tvp_git_action_new           (const gchar*,
                                          const gchar*,
                                          GList *,
                                          GtkWidget *,
+                                         gboolean,
+                                         gboolean,
                                          gboolean) G_GNUC_MALLOC G_GNUC_INTERNAL;
 
 G_END_DECLS;
diff --git a/thunar-vcs-plugin/tvp-provider.c b/thunar-vcs-plugin/tvp-provider.c
index 13560ac..ac77ffc 100644
--- a/thunar-vcs-plugin/tvp-provider.c
+++ b/thunar-vcs-plugin/tvp-provider.c
@@ -386,19 +386,25 @@ tvp_provider_get_file_actions (ThunarxMenuProvider *menu_provider,
 {
   GList              *actions = NULL;
   GtkAction          *action;
-#ifdef HAVE_SUBVERSION
   ThunarVfsPathScheme scheme;
   ThunarVfsInfo      *info;
+  GList              *lp;
+#ifdef HAVE_SUBVERSION
   gboolean            parent_wc = FALSE;
   gboolean            directory_is_wc = FALSE;
   gboolean            directory_is_not_wc = FALSE;
   gboolean            file_is_vc = FALSE;
   gboolean            file_is_not_vc = FALSE;
-  GList              *lp;
   gint                n_files = 0;
   GSList             *file_status;
   GSList             *iter;
+#endif
+#ifdef HAVE_GIT
+  gboolean            directory = FALSE;
+  gboolean            file = FALSE;
+#endif
 
+#ifdef HAVE_SUBVERSION
   file_status = tvp_get_parent_status (files->data);
 
   /* check all supplied files */
@@ -459,8 +465,30 @@ tvp_provider_get_file_actions (ThunarxMenuProvider *menu_provider,
 #endif
 
 #ifdef HAVE_GIT
+  /* check all supplied files */
+  for (lp = files; lp != NULL; lp = lp->next, ++n_files)
+  {
+    /* check if the file is a local file */
+    info = thunarx_file_info_get_vfs_info (lp->data);
+    scheme = thunar_vfs_path_get_scheme (info->path);
+    thunar_vfs_info_unref (info);
+
+    /* unable to handle non-local files */
+    if (G_UNLIKELY (scheme != THUNAR_VFS_PATH_SCHEME_FILE))
+      return NULL;
+
+    if (thunarx_file_info_is_directory (lp->data))
+    {
+      directory = TRUE;
+    }
+    else
+    {
+      file = TRUE;
+    }
+  }
+
   /* append the git submenu action */
-  action = tvp_git_action_new ("Tvp::git", _("GIT"), files, window, FALSE);
+  action = tvp_git_action_new ("Tvp::git", _("GIT"), files, window, FALSE, directory, file);
   g_signal_connect(action, "new-process", G_CALLBACK(tvp_new_process), menu_provider);
   actions = g_list_append (actions, action);
 #endif
@@ -501,7 +529,7 @@ tvp_provider_get_folder_actions (ThunarxMenuProvider *menu_provider,
 #endif
 
 #ifdef HAVE_GIT
-  action = tvp_git_action_new ("Tvp::git", _("GIT"), files, window, TRUE);
+  action = tvp_git_action_new ("Tvp::git", _("GIT"), files, window, TRUE, TRUE, FALSE);
   g_signal_connect(action, "new-process", G_CALLBACK(tvp_new_process), menu_provider);
   /* append the git submenu action */
   actions = g_list_append (actions, action);
diff --git a/thunar-vcs-plugin/tvp-svn-action.c b/thunar-vcs-plugin/tvp-svn-action.c
index eaf64c2..092fb7d 100644
--- a/thunar-vcs-plugin/tvp-svn-action.c
+++ b/thunar-vcs-plugin/tvp-svn-action.c
@@ -278,8 +278,9 @@ add_subaction_u (GtkMenuShell *menu, const gchar *name, const gchar *text, const
     subitem = gtk_action_create_menu_item (subaction);
     g_object_get (G_OBJECT (subaction), "tooltip", &tooltip, NULL);
     gtk_widget_set_tooltip_text(subitem, tooltip);
-    gtk_menu_shell_append (menu, subitem);
-    gtk_widget_show(subitem);
+    //gtk_menu_shell_append (menu, subitem);
+    //gtk_widget_show(subitem);
+    gtk_widget_unref (subitem);
 }
 
 



More information about the Xfce4-commits mailing list