[Goodies-commits] r7636 - in thunar-vcs-plugin/trunk: . po thunar-vcs-plugin tvp-git-helper tvp-svn-helper

Peter de Ridder peter at xfce.org
Sun Jun 28 14:46:29 CEST 2009


Author: peter
Date: 2009-06-28 12:46:28 +0000 (Sun, 28 Jun 2009)
New Revision: 7636

Added:
   thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-git-action.c
   thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-git-action.h
   thunar-vcs-plugin/trunk/tvp-git-helper/
   thunar-vcs-plugin/trunk/tvp-git-helper/Makefile.am
   thunar-vcs-plugin/trunk/tvp-git-helper/main.c
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-add.c
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-add.h
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch-dialog.c
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch-dialog.h
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch.c
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch.h
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-common.c
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-common.h
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-dialog-common.c
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-dialog-common.h
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-file-selection-dialog.c
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-file-selection-dialog.h
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset-dialog.c
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset-dialog.h
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset.c
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset.h
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status-dialog.c
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status-dialog.h
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status.c
   thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status.h
Modified:
   thunar-vcs-plugin/trunk/Makefile.am
   thunar-vcs-plugin/trunk/configure.ac.in
   thunar-vcs-plugin/trunk/po/POTFILES.in
   thunar-vcs-plugin/trunk/po/ar.po
   thunar-vcs-plugin/trunk/po/ca.po
   thunar-vcs-plugin/trunk/po/cs.po
   thunar-vcs-plugin/trunk/po/da.po
   thunar-vcs-plugin/trunk/po/de.po
   thunar-vcs-plugin/trunk/po/en_GB.po
   thunar-vcs-plugin/trunk/po/es.po
   thunar-vcs-plugin/trunk/po/fr.po
   thunar-vcs-plugin/trunk/po/gl.po
   thunar-vcs-plugin/trunk/po/hu.po
   thunar-vcs-plugin/trunk/po/id.po
   thunar-vcs-plugin/trunk/po/lv.po
   thunar-vcs-plugin/trunk/po/nl.po
   thunar-vcs-plugin/trunk/po/pl.po
   thunar-vcs-plugin/trunk/po/pt.po
   thunar-vcs-plugin/trunk/po/pt_BR.po
   thunar-vcs-plugin/trunk/po/sv.po
   thunar-vcs-plugin/trunk/po/thunar-vcs-plugin.pot
   thunar-vcs-plugin/trunk/po/ur.po
   thunar-vcs-plugin/trunk/po/ur_PK.po
   thunar-vcs-plugin/trunk/thunar-vcs-plugin/Makefile.am
   thunar-vcs-plugin/trunk/thunar-vcs-plugin/thunar-vcs-plugin.c
   thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-provider.c
   thunar-vcs-plugin/trunk/tvp-svn-helper/
Log:
Added basic git support the the thunar-vcs-plugin.

Modified: thunar-vcs-plugin/trunk/Makefile.am
===================================================================
--- thunar-vcs-plugin/trunk/Makefile.am	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/Makefile.am	2009-06-28 12:46:28 UTC (rev 7636)
@@ -3,7 +3,8 @@
 	icons								\
 	po								\
 	thunar-vcs-plugin						\
-	tvp-svn-helper
+	tvp-svn-helper							\
+	tvp-git-helper
 
 distclean-local:
 	rm -rf *.spec *.cache *~

Modified: thunar-vcs-plugin/trunk/configure.ac.in
===================================================================
--- thunar-vcs-plugin/trunk/configure.ac.in	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/configure.ac.in	2009-06-28 12:46:28 UTC (rev 7636)
@@ -175,5 +175,6 @@
 po/Makefile.in
 thunar-vcs-plugin/Makefile
 tvp-svn-helper/Makefile
+tvp-git-helper/Makefile
 ])
 

Modified: thunar-vcs-plugin/trunk/po/POTFILES.in
===================================================================
--- thunar-vcs-plugin/trunk/po/POTFILES.in	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/POTFILES.in	2009-06-28 12:46:28 UTC (rev 7636)
@@ -39,3 +39,14 @@
 tvp-svn-helper/tsh-trust-dialog.c
 tvp-svn-helper/tsh-unlock.c
 tvp-svn-helper/tsh-update.c
+tvp-git-helper/main.c
+tvp-git-helper/tgh-add.c
+tvp-git-helper/tgh-branch-dialog.c
+tvp-git-helper/tgh-branch.c
+tvp-git-helper/tgh-common.c
+tvp-git-helper/tgh-dialog-common.c
+tvp-git-helper/tgh-file-selection-dialog.c
+tvp-git-helper/tgh-reset-dialog.c
+tvp-git-helper/tgh-reset.c
+tvp-git-helper/tgh-status-dialog.c
+tvp-git-helper/tgh-status.c

Modified: thunar-vcs-plugin/trunk/po/ar.po
===================================================================
--- thunar-vcs-plugin/trunk/po/ar.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/ar.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -2,7 +2,7 @@
 msgstr ""
 "Project-Id-Version: xfce\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2008-07-15 16:14+0200\n"
 "Last-Translator: Mohamed Magdy <mohamedmk at gmail.com>\n"
 "Language-Team: Arabeyes <doc at arabeyes.org>\n"
@@ -13,16 +13,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr ""
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr ""
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr ""
 
@@ -198,7 +204,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr ""
 
@@ -325,11 +333,11 @@
 msgid "Infinity"
 msgstr ""
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr ""
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr ""
 
@@ -397,7 +405,7 @@
 msgid "Execute revert action"
 msgstr ""
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr ""
 
@@ -413,7 +421,7 @@
 msgid "Execute update action"
 msgstr ""
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr ""
 
@@ -487,7 +495,7 @@
 msgid "Revert Related Options:"
 msgstr ""
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr ""
 
@@ -790,10 +798,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr ""
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr ""
 
@@ -959,7 +971,7 @@
 msgid "Check Repository"
 msgstr ""
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr ""
 
@@ -994,3 +1006,41 @@
 #: tvp-svn-helper/tsh-trust-dialog.c:77
 msgid "Trust"
 msgstr ""
+
+#: tvp-git-helper/main.c:77
+msgid "Execute branch action"
+msgstr ""
+
+#: tvp-git-helper/main.c:83
+msgid "Execute reset action"
+msgstr ""
+
+#: tvp-git-helper/main.c:102
+msgid "Branch Related Options:"
+msgstr ""
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+msgid "Reset Related Options:"
+msgstr ""
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+msgid "Reset"
+msgstr ""
+
+#: tvp-git-helper/tgh-add.c:50
+msgid "Add finished"
+msgstr ""
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""

Modified: thunar-vcs-plugin/trunk/po/ca.po
===================================================================
--- thunar-vcs-plugin/trunk/po/ca.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/ca.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: \n"
 "Last-Translator: Harald Servat <redcrash at gmail.com>\n"
 "Language-Team: Harald Servat <redcrash at gmail.com>\n"
@@ -18,16 +18,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Afegir"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Afegir"
 
@@ -203,7 +209,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Estat"
 
@@ -330,11 +338,11 @@
 msgid "Infinity"
 msgstr "Infinitat"
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Imprimir informació de la versió"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "Executar l'acció d'afegir"
 
@@ -402,7 +410,7 @@
 msgid "Execute revert action"
 msgstr "Executar l'acció de restituir"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "Executar l'acció d'estat"
 
@@ -418,7 +426,7 @@
 msgid "Execute update action"
 msgstr "Executar l'acció d'actualitzar"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "Opcions relacionades amb afegir:"
 
@@ -492,7 +500,7 @@
 msgid "Revert Related Options:"
 msgstr "Opcions relacionades amb restituir:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "Opcions relatives a l'estat:"
 
@@ -804,10 +812,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Camí"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr "Selecciona tot/cap"
 
@@ -973,7 +985,7 @@
 msgid "Check Repository"
 msgstr "Comprovar repositori"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "L'estat ha fallat"
 
@@ -1008,3 +1020,47 @@
 #: tvp-svn-helper/tsh-trust-dialog.c:77
 msgid "Trust"
 msgstr "Confiança"
+
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "Executar l'acció de culpar"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Executar l'acció de restituir"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Opcions relatives a culpar:"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Opcions relacionades amb restituir:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Restituir"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "La neteja ha finalitzat"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""

Modified: thunar-vcs-plugin/trunk/po/cs.po
===================================================================
--- thunar-vcs-plugin/trunk/po/cs.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/cs.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: xfce 4-i18-goodies\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2009-06-06 22:04+0100\n"
 "Last-Translator: Michal Várady <miko.vaji at gmail.com>\n"
 "Language-Team: Czech\n"
@@ -18,16 +18,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Přidat (add)"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Přidat (add)"
 
@@ -203,7 +209,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Stav (status)"
 
@@ -330,11 +338,11 @@
 msgid "Infinity"
 msgstr "Nekonečná"
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Vypíše informaci o verzi"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "Spustit akci přidání (add)"
 
@@ -402,7 +410,7 @@
 msgid "Execute revert action"
 msgstr "Spustit akci obnovení (revert)"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "Spustit akci stavu (status)"
 
@@ -418,7 +426,7 @@
 msgid "Execute update action"
 msgstr "Spustit akci aktualizace (update)"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "Volby týkající se přidávání (add):"
 
@@ -492,7 +500,7 @@
 msgid "Revert Related Options:"
 msgstr "Volby týkající se obnovování (revert):"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "Volby týkající se stavu (status):"
 
@@ -795,10 +803,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Cesta"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr "Vybrat vše nebo zrušit výběr"
 
@@ -964,7 +976,7 @@
 msgid "Check Repository"
 msgstr "Ověřit repozitář"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "Stav selhal"
 
@@ -1000,6 +1012,50 @@
 msgid "Trust"
 msgstr "Důvěřovat"
 
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "Spustit akci vypsání detailů (blame)"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Spustit akci obnovení (revert)"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Volby týkající se výpisu detailů (blame):"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Volby týkající se obnovování (revert):"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Obnovit předchozí (revert)"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Čištění ukončeno"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "%1$s on %2$s"
 #~ msgstr "%1$s na serveru %2$s"
 

Modified: thunar-vcs-plugin/trunk/po/da.po
===================================================================
--- thunar-vcs-plugin/trunk/po/da.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/da.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin 0.0.3\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2009-05-01 13:18+0100\n"
 "Last-Translator: Per Kongstad <p_kongstad at op.pl>\n"
 "Language-Team: Danish <dansk at dansk-gruppen.dk>\n"
@@ -20,16 +20,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Tilføj"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Tilføj"
 
@@ -207,7 +213,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Status"
 
@@ -334,11 +342,11 @@
 msgid "Infinity"
 msgstr "Evighed"
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Udskriv versionsinformation"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "Kør handlingen tilføj"
 
@@ -406,7 +414,7 @@
 msgid "Execute revert action"
 msgstr "Kør forkastehandling"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "Kør statushandling"
 
@@ -422,7 +430,7 @@
 msgid "Execute update action"
 msgstr "Udfør opdatérhandling"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "Tilføj-relaterede tilvalg:"
 
@@ -496,7 +504,7 @@
 msgid "Revert Related Options:"
 msgstr "Forkast-relaterede tilvalg:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "Status-relaterede tilvalg:"
 
@@ -799,10 +807,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Sti"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr "Markér/afmarkér alle"
 
@@ -968,7 +980,7 @@
 msgid "Check Repository"
 msgstr "Tjek arkiv"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "Status fejlede"
 
@@ -1004,6 +1016,50 @@
 msgid "Trust"
 msgstr "Stol på"
 
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "Kør anklagehandling"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Kør forkastehandling"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Anklag-relaterede tilvalg:"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Forkast-relaterede tilvalg:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Forkast"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Oprydning afsluttet"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "%1$s on %2$s"
 #~ msgstr "%1$s på %2$s"
 

Modified: thunar-vcs-plugin/trunk/po/de.po
===================================================================
--- thunar-vcs-plugin/trunk/po/de.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/de.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2009-04-14 23:02+0200\n"
 "Last-Translator: Fabian Nowak <timystery at arcor.de>\n"
 "Language-Team: German\n"
@@ -19,16 +19,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Hinzufügen"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Hinzufügen"
 
@@ -204,7 +210,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Status"
 
@@ -331,11 +339,11 @@
 msgid "Infinity"
 msgstr "Unendlich"
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Versionsinformationen ausgeben"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "Aktion »Hinzufügen« ausführen"
 
@@ -403,7 +411,7 @@
 msgid "Execute revert action"
 msgstr "Aktion »Rückgängig« ausführen"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "Aktion »Status« ausführen"
 
@@ -419,7 +427,7 @@
 msgid "Execute update action"
 msgstr "Aktion »Aktualisieren« ausführen"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "Optionen fürs Hinzufügen:"
 
@@ -493,7 +501,7 @@
 msgid "Revert Related Options:"
 msgstr "Optionen fürs Rückängigmachen:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "Optionen für den Zustand:"
 
@@ -805,10 +813,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Pfad"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr "Alle auswählen/abwählen"
 
@@ -974,7 +986,7 @@
 msgid "Check Repository"
 msgstr "Ablage überprüfen"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "Status fehlgeschlagen"
 
@@ -1009,3 +1021,47 @@
 #: tvp-svn-helper/tsh-trust-dialog.c:77
 msgid "Trust"
 msgstr "Vertrauen"
+
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "Aktion »Beschuldigen« ausführen"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Aktion »Rückgängig« ausführen"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Optionen fürs Beschuldigen:"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Optionen fürs Rückängigmachen:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Rückgängig"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Aufräumen vollständig"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""

Modified: thunar-vcs-plugin/trunk/po/en_GB.po
===================================================================
--- thunar-vcs-plugin/trunk/po/en_GB.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/en_GB.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: thunart-svn-plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2008-05-10 13:15+1000\n"
 "Last-Translator: Jeff Bailes <thepizzaking at gmail.com>\n"
 "Language-Team: English/GB\n"
@@ -19,16 +19,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Add"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Add"
 
@@ -208,7 +214,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Status"
 
@@ -337,11 +345,11 @@
 msgid "Infinity"
 msgstr ""
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Print version information"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "Execute add action"
 
@@ -412,7 +420,7 @@
 msgid "Execute revert action"
 msgstr "Execute revert action"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "Execute status action"
 
@@ -429,7 +437,7 @@
 msgid "Execute update action"
 msgstr "Execute update action"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "Add Related Options:"
 
@@ -506,7 +514,7 @@
 msgid "Revert Related Options:"
 msgstr "Revert Related Options:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "Status Related Options:"
 
@@ -824,10 +832,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Path"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr ""
 
@@ -998,7 +1010,7 @@
 msgid "Check Repository"
 msgstr "Check Repository"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "Status failed"
 
@@ -1034,6 +1046,50 @@
 msgid "Trust"
 msgstr "Trust"
 
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "Execute move action"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Execute revert action"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Delete Related Options:"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Revert Related Options:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Revert"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Cleanup finished"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "%1$s on %2$s"
 #~ msgstr "%1$s on %2$s"
 

Modified: thunar-vcs-plugin/trunk/po/es.po
===================================================================
--- thunar-vcs-plugin/trunk/po/es.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/es.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin 0.0.3\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2008-12-16 21:49+0100\n"
 "Last-Translator: Abel Martín <abel.martin.ruiz at gmail.com>\n"
 "Language-Team: Spanish <xfce-i18n at xfce.org>\n"
@@ -19,16 +19,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Añadir"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Añadir"
 
@@ -206,7 +212,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Estado"
 
@@ -335,11 +343,11 @@
 msgid "Infinity"
 msgstr ""
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Imprimir información de versión"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "Ejecutar acción añadir"
 
@@ -408,7 +416,7 @@
 msgid "Execute revert action"
 msgstr "Ejecutar acción revertir"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "Ejecutar acción estado"
 
@@ -424,7 +432,7 @@
 msgid "Execute update action"
 msgstr "Ejecutar acción actualizar"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "Opciones relacionadas con añadir:"
 
@@ -499,7 +507,7 @@
 msgid "Revert Related Options:"
 msgstr "Opciones relacionadas con revertir:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "Opciones relacionadas con estado:"
 
@@ -813,10 +821,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Ruta"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr "Seleccionar/Deseleccionar todos"
 
@@ -984,7 +996,7 @@
 msgid "Check Repository"
 msgstr "Comprobar repositorio"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "Fallo al obtener el estado"
 
@@ -1020,6 +1032,50 @@
 msgid "Trust"
 msgstr "Confianza"
 
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "Ejecutar acción diferencias detalladas"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Ejecutar acción revertir"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Opciones relacionadas con revisión detallada:"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Opciones relacionadas con revertir:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Revertir"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Eliminación de bloqueos finalizada"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "%1$s on %2$s"
 #~ msgstr "%1$s de %2$s"
 

Modified: thunar-vcs-plugin/trunk/po/fr.po
===================================================================
--- thunar-vcs-plugin/trunk/po/fr.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/fr.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: xfce-i 18n\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2007-10-24 13:04+0100\n"
 "Last-Translator: Mike Massonnet <mmassonnet at gmail.com>\n"
 "Language-Team: French\n"
@@ -19,16 +19,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr ""
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Ajouter"
 
@@ -225,7 +231,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "État"
 
@@ -357,11 +365,11 @@
 msgid "Infinity"
 msgstr ""
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Afficher l'information sur la version"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 #, fuzzy
 msgid "Execute add action"
 msgstr "Exécuter une mise à jour"
@@ -445,7 +453,7 @@
 msgid "Execute revert action"
 msgstr "Exécuter une extraction"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 #, fuzzy
 msgid "Execute status action"
 msgstr "Exécuter une mise à jour"
@@ -464,7 +472,7 @@
 msgid "Execute update action"
 msgstr "Exécuter une mise à jour"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr ""
 
@@ -544,7 +552,7 @@
 msgid "Revert Related Options:"
 msgstr ""
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr ""
 
@@ -876,10 +884,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Chemin"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr ""
 
@@ -1058,7 +1070,7 @@
 msgid "Check Repository"
 msgstr ""
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 #, fuzzy
 msgid "Status failed"
 msgstr "État"
@@ -1095,7 +1107,51 @@
 msgid "Trust"
 msgstr ""
 
+#: tvp-git-helper/main.c:77
 #, fuzzy
+msgid "Execute branch action"
+msgstr "Exécuter une extraction"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Exécuter une extraction"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Exécuter une mise à jour"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Exécuter une mise à jour"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Restaurer"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Nettoyer les verrous"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
+#, fuzzy
 #~ msgid "Modify Property Recursive"
 #~ msgstr "Éditer les propriétés"
 

Modified: thunar-vcs-plugin/trunk/po/gl.po
===================================================================
--- thunar-vcs-plugin/trunk/po/gl.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/gl.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2009-04-14 22:02+0100\n"
 "Last-Translator: Leandro Regueiro <leandro.regueiro at gmail.com>\n"
 "Language-Team: Galician <proxecto at trasno.net>\n"
@@ -22,16 +22,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Engadir"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Engadir"
 
@@ -222,7 +228,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Estado"
 
@@ -353,11 +361,11 @@
 msgid "Infinity"
 msgstr "infinito"
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Mostrar a información da versión"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "Executar a acción de engadir"
 
@@ -440,7 +448,7 @@
 msgid "Execute revert action"
 msgstr "Desface-la última acción"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 #, fuzzy
 msgid "Execute status action"
 msgstr "Desface-la última acción"
@@ -460,7 +468,7 @@
 msgid "Execute update action"
 msgstr "Desface-la última acción"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 #, fuzzy
 msgid "Add Related Options:"
 msgstr ""
@@ -596,7 +604,7 @@
 "\n"
 "Opcións dispoñibles:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 #, fuzzy
 msgid "Status Related Options:"
 msgstr ""
@@ -962,10 +970,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Ruta"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 #, fuzzy
 msgid "Select/Unselect all"
 msgstr "Seleccionar todos os erros"
@@ -1156,7 +1168,7 @@
 msgid "Check Repository"
 msgstr "Comprobar o repositorio"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 #, fuzzy
 msgid "Status failed"
 msgstr "Fallou"
@@ -1193,6 +1205,56 @@
 msgid "Trust"
 msgstr "Confiar"
 
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "Desface-la última acción"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Desface-la última acción"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr ""
+"[OPCIÓNS...] [FICHEIRO...]\n"
+"\n"
+"Opcións dispoñibles:"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr ""
+"[OPCIÓNS...] [FICHEIRO...]\n"
+"\n"
+"Opcións dispoñibles:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Reverter"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Debuxo rematado"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "%1$s on %2$s"
 #~ msgstr "%1$s en %2$s"
 

Modified: thunar-vcs-plugin/trunk/po/hu.po
===================================================================
--- thunar-vcs-plugin/trunk/po/hu.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/hu.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -2,7 +2,7 @@
 msgstr ""
 "Project-Id-Version: Thunar SVN plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2007-06-04 08:37+0100\n"
 "Last-Translator: SZERVÁC Attila <sas at 321.hu>\n"
 "Language-Team: Hungarian\n"
@@ -15,16 +15,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr ""
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Hozzáad"
 
@@ -220,7 +226,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Állapot"
 
@@ -352,11 +360,11 @@
 msgid "Infinity"
 msgstr ""
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Verzió kiírása"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 #, fuzzy
 msgid "Execute add action"
 msgstr "Frissítési művelet futtatása"
@@ -440,7 +448,7 @@
 msgid "Execute revert action"
 msgstr "Checkout művelet futtatása"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 #, fuzzy
 msgid "Execute status action"
 msgstr "Frissítési művelet futtatása"
@@ -459,7 +467,7 @@
 msgid "Execute update action"
 msgstr "Frissítési művelet futtatása"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr ""
 
@@ -539,7 +547,7 @@
 msgid "Revert Related Options:"
 msgstr ""
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr ""
 
@@ -869,10 +877,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Útvonal"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr ""
 
@@ -1050,7 +1062,7 @@
 msgid "Check Repository"
 msgstr ""
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 #, fuzzy
 msgid "Status failed"
 msgstr "Állapot"
@@ -1087,7 +1099,51 @@
 msgid "Trust"
 msgstr ""
 
+#: tvp-git-helper/main.c:77
 #, fuzzy
+msgid "Execute branch action"
+msgstr "Checkout művelet futtatása"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Checkout művelet futtatása"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Frissítési művelet futtatása"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Frissítési művelet futtatása"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Visszaállít"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Tisztít"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
+#, fuzzy
 #~ msgid "Modify Property Recursive"
 #~ msgstr "Tulajdonságok szerkesztése"
 

Modified: thunar-vcs-plugin/trunk/po/id.po
===================================================================
--- thunar-vcs-plugin/trunk/po/id.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/id.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2009-04-09 21:38-0400\n"
 "Last-Translator: Andhika Padmawan <andhika.padmawan at gmail.com>\n"
 "Language-Team: Indonesian <id at li.org>\n"
@@ -17,16 +17,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Tambah"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Tambah"
 
@@ -202,7 +208,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Status"
 
@@ -329,11 +337,11 @@
 msgid "Infinity"
 msgstr "Ketakterhinggaan"
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Cetak informasi versi"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "Eksekusi aksi tambah"
 
@@ -401,7 +409,7 @@
 msgid "Execute revert action"
 msgstr "Eksekusi aksi kembalikan"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "Eksekusi aksi status"
 
@@ -417,7 +425,7 @@
 msgid "Execute update action"
 msgstr "Eksekusi aksi mutakhirkan"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "Opsi Tambah Terkait:"
 
@@ -491,7 +499,7 @@
 msgid "Revert Related Options:"
 msgstr "Opsi Kembalikan Terkait:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "Opsi Status Terkait:"
 
@@ -803,10 +811,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Alamat"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr "Pilih/Tak Pilih semua"
 
@@ -972,7 +984,7 @@
 msgid "Check Repository"
 msgstr "Cek Gudang"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "Status gagal"
 
@@ -1008,6 +1020,50 @@
 msgid "Trust"
 msgstr "Percaya"
 
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "Eksekusi aksi salahkan"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Eksekusi aksi kembalikan"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Opsi Terkait Salahkan:"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Opsi Kembalikan Terkait:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Kembalikan"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Bersihkan selesai"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "%1$s on %2$s"
 #~ msgstr "%1$s di %2$s"
 

Modified: thunar-vcs-plugin/trunk/po/lv.po
===================================================================
--- thunar-vcs-plugin/trunk/po/lv.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/lv.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2007-11-15 21:18+0300\n"
 "Last-Translator: Rihards Priedītis <rprieditis at inbox.lv>\n"
 "Language-Team: Latvian <rprieditis at inbox.lv>\n"
@@ -17,16 +17,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr ""
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Pievienot"
 
@@ -223,7 +229,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Status"
 
@@ -355,11 +363,11 @@
 msgid "Infinity"
 msgstr ""
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Izdrukāt versijas informāciju"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 #, fuzzy
 msgid "Execute add action"
 msgstr "Izpildīt atjaunošanas darbību"
@@ -443,7 +451,7 @@
 msgid "Execute revert action"
 msgstr "Izpildīt izrakstīšanas darbību"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 #, fuzzy
 msgid "Execute status action"
 msgstr "Izpildīt atjaunošanas darbību"
@@ -462,7 +470,7 @@
 msgid "Execute update action"
 msgstr "Izpildīt atjaunošanas darbību"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr ""
 
@@ -542,7 +550,7 @@
 msgid "Revert Related Options:"
 msgstr ""
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr ""
 
@@ -874,10 +882,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Ceļš"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr ""
 
@@ -1056,7 +1068,7 @@
 msgid "Check Repository"
 msgstr ""
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 #, fuzzy
 msgid "Status failed"
 msgstr "Status"
@@ -1093,7 +1105,51 @@
 msgid "Trust"
 msgstr ""
 
+#: tvp-git-helper/main.c:77
 #, fuzzy
+msgid "Execute branch action"
+msgstr "Izpildīt izrakstīšanas darbību"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Izpildīt izrakstīšanas darbību"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Izpildīt atjaunošanas darbību"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Izpildīt atjaunošanas darbību"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Atgriezt"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Uzkopt"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
+#, fuzzy
 #~ msgid "Modify Property Recursive"
 #~ msgstr "Rediģēt Rekvizītus"
 

Modified: thunar-vcs-plugin/trunk/po/nl.po
===================================================================
--- thunar-vcs-plugin/trunk/po/nl.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/nl.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2008-06-12 00:44+0200\n"
 "Last-Translator: Peter de Ridder <peter at xfce.org>\n"
 "Language-Team: Dutch <xfce-i18n at xfce.org>\n"
@@ -17,16 +17,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr ""
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Toevoegen"
 
@@ -202,7 +208,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Status"
 
@@ -329,11 +337,11 @@
 msgid "Infinity"
 msgstr "Oneindig"
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Versie informatie tonen"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "Toevoeg actie uitvoeren"
 
@@ -401,7 +409,7 @@
 msgid "Execute revert action"
 msgstr "Terug haal actie uitvoeren"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "Status actie uitvoeren"
 
@@ -417,7 +425,7 @@
 msgid "Execute update action"
 msgstr "Bijwerk actie uitvoeren"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "Toevoegen gerelateerde opties:"
 
@@ -491,7 +499,7 @@
 msgid "Revert Related Options:"
 msgstr "Terug haal gerelateerde opties:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "Status gerelateerde opties:"
 
@@ -803,10 +811,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Pad"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr "Alles selecteren/deselecteren"
 
@@ -972,7 +984,7 @@
 msgid "Check Repository"
 msgstr ""
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "Status gefaald"
 
@@ -1007,3 +1019,47 @@
 #: tvp-svn-helper/tsh-trust-dialog.c:77
 msgid "Trust"
 msgstr "Vertrouwen"
+
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "Beschuldig actie uitvoeren"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Terug haal actie uitvoeren"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Bechuldigen gerelateerde opties:"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Terug haal gerelateerde opties:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Terug Halen"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Klaar met opschonen"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""

Modified: thunar-vcs-plugin/trunk/po/pl.po
===================================================================
--- thunar-vcs-plugin/trunk/po/pl.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/pl.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin 0.0.2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2009-04-06 11:57+0100\n"
 "Last-Translator: Piotr Sokół <piotr.sokol at 10g.pl>\n"
 "Language-Team: Polish\n"
@@ -20,16 +20,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "Kontrola wersji SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Dodaj..."
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Dodawanie"
 
@@ -212,7 +218,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Stan"
 
@@ -340,11 +348,11 @@
 msgid "Infinity"
 msgstr ""
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr ""
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr ""
 
@@ -412,7 +420,7 @@
 msgid "Execute revert action"
 msgstr ""
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr ""
 
@@ -428,7 +436,7 @@
 msgid "Execute update action"
 msgstr ""
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr ""
 
@@ -502,7 +510,7 @@
 msgid "Revert Related Options:"
 msgstr ""
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr ""
 
@@ -820,10 +828,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Ścieżka"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 #, fuzzy
 msgid "Select/Unselect all"
 msgstr "Zaznaczenie/odznaczenie wszyskich"
@@ -993,7 +1005,7 @@
 msgid "Check Repository"
 msgstr ""
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr ""
 
@@ -1031,6 +1043,46 @@
 msgid "Trust"
 msgstr ""
 
+#: tvp-git-helper/main.c:77
+msgid "Execute branch action"
+msgstr ""
+
+#: tvp-git-helper/main.c:83
+msgid "Execute reset action"
+msgstr ""
+
+#: tvp-git-helper/main.c:102
+msgid "Branch Related Options:"
+msgstr ""
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+msgid "Reset Related Options:"
+msgstr ""
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Cofanie zmian"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Zakończono porządkowanie"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "Desktop"
 #~ msgstr "Pulpit"
 

Modified: thunar-vcs-plugin/trunk/po/pt.po
===================================================================
--- thunar-vcs-plugin/trunk/po/pt.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/pt.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2008-11-01 11:37+0100\n"
 "Last-Translator: Nuno Miguel <nunis at netcabo.pt>\n"
 "Language-Team: \n"
@@ -18,16 +18,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Adicionar"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Adicionar"
 
@@ -205,7 +211,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Status"
 
@@ -334,11 +342,11 @@
 msgid "Infinity"
 msgstr ""
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Imprimir informação da versão"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "Executar acção add"
 
@@ -407,7 +415,7 @@
 msgid "Execute revert action"
 msgstr "Executar acção de reversão"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "Executar acção de actualização"
 
@@ -423,7 +431,7 @@
 msgid "Execute update action"
 msgstr "Executar acção de actualização"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "Adicionar Opções Relacionadas:"
 
@@ -498,7 +506,7 @@
 msgid "Revert Related Options:"
 msgstr "Opções de Reversão:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "Opções de Estado:"
 
@@ -812,10 +820,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Caminho"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr "Seleccionar/De-seleccionar tudo"
 
@@ -983,7 +995,7 @@
 msgid "Check Repository"
 msgstr "Verificar Repositório"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "Estado falhou"
 
@@ -1019,6 +1031,50 @@
 msgid "Trust"
 msgstr "Confiar"
 
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "Executar acção de culpa"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Executar acção de reversão"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Opções de culpa"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Opções de Reversão:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Reverter"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Limpeza concluída"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "%1$s on %2$s"
 #~ msgstr "%1$s em %2$s"
 

Modified: thunar-vcs-plugin/trunk/po/pt_BR.po
===================================================================
--- thunar-vcs-plugin/trunk/po/pt_BR.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/pt_BR.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2008-06-13 02:01+0200\n"
 "Last-Translator: Og Maciel <ogmaciel at gnome.org>\n"
 "Language-Team: Brazilian Portuguese <ldp-br at bazar2.conectiva.com.br>\n"
@@ -19,16 +19,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Adicionar"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Adicionar"
 
@@ -206,7 +212,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Status"
 
@@ -335,11 +343,11 @@
 msgid "Infinity"
 msgstr ""
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Imprimir informação da versão"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "Executar ação de adição"
 
@@ -408,7 +416,7 @@
 msgid "Execute revert action"
 msgstr "Executar ação de reversão"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "Executar ação de status"
 
@@ -424,7 +432,7 @@
 msgid "Execute update action"
 msgstr "Executar ação de atualização"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "Opções de adição:"
 
@@ -499,7 +507,7 @@
 msgid "Revert Related Options:"
 msgstr "Opções de reversão:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "Opções de status:"
 
@@ -813,10 +821,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Caminho"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr "Selecionar/Deselecionar tudo"
 
@@ -984,7 +996,7 @@
 msgid "Check Repository"
 msgstr "Checar repositório"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "Falha de status"
 
@@ -1020,6 +1032,50 @@
 msgid "Trust"
 msgstr "Confiança"
 
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "Executar ação de culpa"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "Executar ação de reversão"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "Opções de culpa:"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "Opções de reversão:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "Reverter"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "Limpeza concluída"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "%1$s on %2$s"
 #~ msgstr "%1$s em %2$s"
 

Modified: thunar-vcs-plugin/trunk/po/sv.po
===================================================================
--- thunar-vcs-plugin/trunk/po/sv.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/sv.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2009-01-05 11:51+0100\n"
 "Last-Translator: Daniel Nylander <po at danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
@@ -17,16 +17,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "Lägg till"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "Lägg till"
 
@@ -203,7 +209,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "Status"
 
@@ -331,11 +339,11 @@
 msgid "Infinity"
 msgstr ""
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "Skriv ut versionsinformation"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr ""
 
@@ -403,7 +411,7 @@
 msgid "Execute revert action"
 msgstr ""
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr ""
 
@@ -419,7 +427,7 @@
 msgid "Execute update action"
 msgstr ""
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr ""
 
@@ -493,7 +501,7 @@
 msgid "Revert Related Options:"
 msgstr ""
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr ""
 
@@ -800,10 +808,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "Sökväg"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr ""
 
@@ -970,7 +982,7 @@
 msgid "Check Repository"
 msgstr ""
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr ""
 
@@ -1006,6 +1018,44 @@
 msgid "Trust"
 msgstr ""
 
+#: tvp-git-helper/main.c:77
+msgid "Execute branch action"
+msgstr ""
+
+#: tvp-git-helper/main.c:83
+msgid "Execute reset action"
+msgstr ""
+
+#: tvp-git-helper/main.c:102
+msgid "Branch Related Options:"
+msgstr ""
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+msgid "Reset Related Options:"
+msgstr ""
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+msgid "Reset"
+msgstr ""
+
+#: tvp-git-helper/tgh-add.c:50
+msgid "Add finished"
+msgstr ""
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "%1$s on %2$s"
 #~ msgstr "%1$s på %2$s"
 

Modified: thunar-vcs-plugin/trunk/po/thunar-vcs-plugin.pot
===================================================================
--- thunar-vcs-plugin/trunk/po/thunar-vcs-plugin.pot	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/thunar-vcs-plugin.pot	2009-06-28 12:46:28 UTC (rev 7636)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -18,16 +18,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr ""
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr ""
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr ""
 
@@ -203,7 +209,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr ""
 
@@ -330,11 +338,11 @@
 msgid "Infinity"
 msgstr ""
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr ""
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr ""
 
@@ -402,7 +410,7 @@
 msgid "Execute revert action"
 msgstr ""
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr ""
 
@@ -418,7 +426,7 @@
 msgid "Execute update action"
 msgstr ""
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr ""
 
@@ -492,7 +500,7 @@
 msgid "Revert Related Options:"
 msgstr ""
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr ""
 
@@ -795,10 +803,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr ""
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr ""
 
@@ -964,7 +976,7 @@
 msgid "Check Repository"
 msgstr ""
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr ""
 
@@ -999,3 +1011,41 @@
 #: tvp-svn-helper/tsh-trust-dialog.c:77
 msgid "Trust"
 msgstr ""
+
+#: tvp-git-helper/main.c:77
+msgid "Execute branch action"
+msgstr ""
+
+#: tvp-git-helper/main.c:83
+msgid "Execute reset action"
+msgstr ""
+
+#: tvp-git-helper/main.c:102
+msgid "Branch Related Options:"
+msgstr ""
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+msgid "Reset Related Options:"
+msgstr ""
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+msgid "Reset"
+msgstr ""
+
+#: tvp-git-helper/tgh-add.c:50
+msgid "Add finished"
+msgstr ""
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""

Modified: thunar-vcs-plugin/trunk/po/ur.po
===================================================================
--- thunar-vcs-plugin/trunk/po/ur.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/ur.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2009-05-14 02:39+0500\n"
 "Last-Translator: Muhammad Ali Makki <makki.ma at gmail.com>\n"
 "Language-Team: Urdu <makki.ma at gmail.com>\n"
@@ -21,16 +21,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "مینیو|شامل کریں"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "شامل کریں"
 
@@ -206,7 +212,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "حالت"
 
@@ -333,11 +341,11 @@
 msgid "Infinity"
 msgstr "مطلق"
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "ورژن معلومات طبع کریں"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "شامل کرنے کی حرکت چلائیں"
 
@@ -405,7 +413,7 @@
 msgid "Execute revert action"
 msgstr "ریورٹ حرکت چلائیں"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "حالت حرکت چلائیں"
 
@@ -421,7 +429,7 @@
 msgid "Execute update action"
 msgstr "تجدید کریں"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "متعلقہ اختیارات شامل کریں:"
 
@@ -495,7 +503,7 @@
 msgid "Revert Related Options:"
 msgstr "متعلقہ اختیارات منعکس کریں:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "متعلقہ اختیارات کی حالت:"
 
@@ -807,10 +815,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "پاتھ"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr "منتتخب/نامنتخب تمام"
 
@@ -976,7 +988,7 @@
 msgid "Check Repository"
 msgstr "ریپازٹری چیک کریں"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "حالت ناکام"
 
@@ -1012,5 +1024,49 @@
 msgid "Trust"
 msgstr "اعتماد"
 
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "بلیم حرکت چلائیں"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "ریورٹ حرکت چلائیں"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "بلیم متعلقہ اختیارات:"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "متعلقہ اختیارات منعکس کریں:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "واپس"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "صاف کرنا مکمل ہوا"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "SVN _Checkout"
 #~ msgstr "SVN _چیک آؤٹ"

Modified: thunar-vcs-plugin/trunk/po/ur_PK.po
===================================================================
--- thunar-vcs-plugin/trunk/po/ur_PK.po	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/po/ur_PK.po	2009-06-28 12:46:28 UTC (rev 7636)
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: thunar-svn-plugin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-06-28 14:10+0200\n"
+"POT-Creation-Date: 2009-06-28 14:42+0200\n"
 "PO-Revision-Date: 2009-05-14 02:39+0500\n"
 "Last-Translator: Muhammad Ali Makki <makki.ma at gmail.com>\n"
 "Language-Team: Urdu <makki.ma at gmail.com>\n"
@@ -21,16 +21,22 @@
 
 #. append the svn submenu action
 #. Lets see if we are dealing with a working copy
-#: thunar-vcs-plugin/tvp-provider.c:435 thunar-vcs-plugin/tvp-provider.c:467
+#: thunar-vcs-plugin/tvp-provider.c:436 thunar-vcs-plugin/tvp-provider.c:473
 msgid "SVN"
 msgstr "SVN"
 
+#. append the git submenu action
+#: thunar-vcs-plugin/tvp-provider.c:441 thunar-vcs-plugin/tvp-provider.c:478
+msgid "GIT"
+msgstr ""
+
 #: thunar-vcs-plugin/tvp-svn-action.c:298
 msgid "Menu|Add"
 msgstr "مینیو|شامل کریں"
 
 #: thunar-vcs-plugin/tvp-svn-action.c:298 tvp-svn-helper/main.c:246
 #: tvp-svn-helper/tsh-add.c:113 tvp-svn-helper/tsh-add.c:126
+#: tvp-git-helper/main.c:98 tvp-git-helper/tgh-add.c:105
 msgid "Add"
 msgstr "شامل کریں"
 
@@ -206,7 +212,9 @@
 
 #: thunar-vcs-plugin/tvp-svn-action.c:427 tvp-svn-helper/main.c:314
 #: tvp-svn-helper/tsh-file-selection-dialog.c:125
-#: tvp-svn-helper/tsh-status-dialog.c:247
+#: tvp-svn-helper/tsh-status-dialog.c:247 tvp-git-helper/main.c:110
+#: tvp-git-helper/tgh-file-selection-dialog.c:120
+#: tvp-git-helper/tgh-reset-dialog.c:93 tvp-git-helper/tgh-status-dialog.c:125
 msgid "Status"
 msgstr "حالت"
 
@@ -333,11 +341,11 @@
 msgid "Infinity"
 msgstr "مطلق"
 
-#: tvp-svn-helper/main.c:105
+#: tvp-svn-helper/main.c:105 tvp-git-helper/main.c:64
 msgid "Print version information"
 msgstr "ورژن معلومات طبع کریں"
 
-#: tvp-svn-helper/main.c:112
+#: tvp-svn-helper/main.c:112 tvp-git-helper/main.c:71
 msgid "Execute add action"
 msgstr "شامل کرنے کی حرکت چلائیں"
 
@@ -405,7 +413,7 @@
 msgid "Execute revert action"
 msgstr "ریورٹ حرکت چلائیں"
 
-#: tvp-svn-helper/main.c:214
+#: tvp-svn-helper/main.c:214 tvp-git-helper/main.c:89
 msgid "Execute status action"
 msgstr "حالت حرکت چلائیں"
 
@@ -421,7 +429,7 @@
 msgid "Execute update action"
 msgstr "تجدید کریں"
 
-#: tvp-svn-helper/main.c:246
+#: tvp-svn-helper/main.c:246 tvp-git-helper/main.c:98
 msgid "Add Related Options:"
 msgstr "متعلقہ اختیارات شامل کریں:"
 
@@ -495,7 +503,7 @@
 msgid "Revert Related Options:"
 msgstr "متعلقہ اختیارات منعکس کریں:"
 
-#: tvp-svn-helper/main.c:314
+#: tvp-svn-helper/main.c:314 tvp-git-helper/main.c:110
 msgid "Status Related Options:"
 msgstr "متعلقہ اختیارات کی حالت:"
 
@@ -807,10 +815,14 @@
 #: tvp-svn-helper/tsh-log-message-dialog.c:92
 #: tvp-svn-helper/tsh-notify-dialog.c:94
 #: tvp-svn-helper/tsh-status-dialog.c:116
+#: tvp-git-helper/tgh-branch-dialog.c:104
+#: tvp-git-helper/tgh-file-selection-dialog.c:92
+#: tvp-git-helper/tgh-reset-dialog.c:87 tvp-git-helper/tgh-status-dialog.c:104
 msgid "Path"
 msgstr "پاتھ"
 
 #: tvp-svn-helper/tsh-file-selection-dialog.c:118
+#: tvp-git-helper/tgh-file-selection-dialog.c:113
 msgid "Select/Unselect all"
 msgstr "منتتخب/نامنتخب تمام"
 
@@ -976,7 +988,7 @@
 msgid "Check Repository"
 msgstr "ریپازٹری چیک کریں"
 
-#: tvp-svn-helper/tsh-status.c:86
+#: tvp-svn-helper/tsh-status.c:86 tvp-git-helper/tgh-common.c:40
 msgid "Status failed"
 msgstr "حالت ناکام"
 
@@ -1012,5 +1024,49 @@
 msgid "Trust"
 msgstr "اعتماد"
 
+#: tvp-git-helper/main.c:77
+#, fuzzy
+msgid "Execute branch action"
+msgstr "بلیم حرکت چلائیں"
+
+#: tvp-git-helper/main.c:83
+#, fuzzy
+msgid "Execute reset action"
+msgstr "ریورٹ حرکت چلائیں"
+
+#: tvp-git-helper/main.c:102
+#, fuzzy
+msgid "Branch Related Options:"
+msgstr "بلیم متعلقہ اختیارات:"
+
+#: tvp-git-helper/main.c:102 tvp-git-helper/tgh-branch-dialog.c:119
+msgid "Branch"
+msgstr ""
+
+#: tvp-git-helper/main.c:106
+#, fuzzy
+msgid "Reset Related Options:"
+msgstr "متعلقہ اختیارات منعکس کریں:"
+
+#: tvp-git-helper/main.c:106 tvp-git-helper/tgh-reset-dialog.c:108
+#: tvp-git-helper/tgh-reset.c:125
+#, fuzzy
+msgid "Reset"
+msgstr "واپس"
+
+#: tvp-git-helper/tgh-add.c:50
+#, fuzzy
+msgid "Add finished"
+msgstr "صاف کرنا مکمل ہوا"
+
+#: tvp-git-helper/tgh-add.c:118
+msgid "Adding ..."
+msgstr ""
+
+#: tvp-git-helper/tgh-common.c:115
+#: tvp-git-helper/tgh-file-selection-dialog.c:267
+msgid "untracked"
+msgstr ""
+
 #~ msgid "SVN _Checkout"
 #~ msgstr "SVN _چیک آؤٹ"

Modified: thunar-vcs-plugin/trunk/thunar-vcs-plugin/Makefile.am
===================================================================
--- thunar-vcs-plugin/trunk/thunar-vcs-plugin/Makefile.am	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/thunar-vcs-plugin/Makefile.am	2009-06-28 12:46:28 UTC (rev 7636)
@@ -19,6 +19,8 @@
 	tvp-svn-action.h						\
 	tvp-svn-property-page.c						\
 	tvp-svn-property-page.h						\
+	tvp-git-action.c						\
+	tvp-git-action.h						\
 	tvp-provider.c							\
 	tvp-provider.h							\
 	thunar-vcs-plugin.c
@@ -28,7 +30,8 @@
 	$(THUNARX_CFLAGS)						\
 	$(THUNAR_VFS_CFLAGS)						\
 	$(APR_CFLAGS)							\
-	-DTVP_SVN_HELPER=\"$(libexecdir)/tvp-svn-helper\"
+	-DTVP_SVN_HELPER=\"$(libexecdir)/tvp-svn-helper\"		\
+	-DTVP_GIT_HELPER=\"$(libexecdir)/tvp-git-helper\"
 
 thunar_vcs_plugin_la_LDFLAGS =						\
 	-avoid-version							\

Modified: thunar-vcs-plugin/trunk/thunar-vcs-plugin/thunar-vcs-plugin.c
===================================================================
--- thunar-vcs-plugin/trunk/thunar-vcs-plugin/thunar-vcs-plugin.c	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/thunar-vcs-plugin/thunar-vcs-plugin.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -26,6 +26,7 @@
 #include <thunar-vcs-plugin/tvp-provider.h>
 #include <thunar-vcs-plugin/tvp-svn-action.h>
 #include <thunar-vcs-plugin/tvp-svn-property-page.h>
+#include <thunar-vcs-plugin/tvp-git-action.h>
 
 
 
@@ -60,6 +61,7 @@
   tvp_provider_register_type (plugin);
   tvp_svn_action_register_type (plugin);
   tvp_svn_property_page_register_type (plugin);
+  tvp_git_action_register_type (plugin);
 
   /* setup the plugin provider type list */
   type_list[0] = TVP_TYPE_PROVIDER;

Added: thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-git-action.c
===================================================================
--- thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-git-action.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-git-action.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,406 @@
+/*-
+ * Copyright (c) 2006 Peter de Ridder <peter at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunarx/thunarx.h>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+#include <thunar-vcs-plugin/tvp-git-action.h>
+
+#include <string.h>
+
+#include <sys/wait.h>
+
+
+
+static void tsh_cclosure_marshal_VOID__POINTER_STRING (GClosure     *closure,
+                                                       GValue       *return_value G_GNUC_UNUSED,
+                                                       guint         n_param_values,
+                                                       const GValue *param_values,
+                                                       gpointer      invocation_hint G_GNUC_UNUSED,
+                                                       gpointer      marshal_data);
+
+
+
+struct _TvpGitActionClass
+{
+    GtkActionClass __parent__;
+};
+
+
+
+struct _TvpGitAction
+{
+    GtkAction __parent__;
+
+    struct {
+        unsigned is_parent : 1;
+    } property;
+
+    GList *files;
+    GtkWidget *window;
+};
+
+
+
+enum {
+    PROPERTY_IS_PARENT = 1,
+};
+
+
+
+enum {
+    SIGNAL_NEW_PROCESS = 0,
+    SIGNAL_COUNT
+};
+
+
+
+static guint action_signal[SIGNAL_COUNT];
+
+
+
+static GtkWidget *tvp_git_action_create_menu_item (GtkAction *action);
+
+
+
+static void tvp_git_action_finalize (GObject*);
+
+static void tvp_git_action_set_property (GObject*, guint, const GValue*, GParamSpec*);
+
+
+static GQuark tvp_action_arg_quark = 0;
+
+
+static void tvp_action_exec (GtkAction *item, TvpGitAction *tvp_action);
+
+static void tvp_action_unimplemented (GtkAction *, const gchar *);
+
+
+
+THUNARX_DEFINE_TYPE (TvpGitAction, tvp_git_action, GTK_TYPE_ACTION)
+
+
+
+static void
+tvp_git_action_class_init (TvpGitActionClass *klass)
+{
+    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+    GtkActionClass *gtkaction_class = GTK_ACTION_CLASS (klass);
+
+    gobject_class->finalize = tvp_git_action_finalize;
+    gobject_class->set_property = tvp_git_action_set_property;
+
+    gtkaction_class->create_menu_item = tvp_git_action_create_menu_item;
+
+    g_object_class_install_property (gobject_class, PROPERTY_IS_PARENT,
+            g_param_spec_boolean ("is-parent", "", "", FALSE, G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE));
+
+    action_signal[SIGNAL_NEW_PROCESS] = g_signal_new("new-process", G_OBJECT_CLASS_TYPE(gobject_class), G_SIGNAL_RUN_FIRST,
+            0, NULL, NULL, tsh_cclosure_marshal_VOID__POINTER_STRING, G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_STRING);
+
+    tvp_action_arg_quark = g_quark_from_static_string ("tvp-action-arg");
+}
+
+
+
+static void
+tvp_git_action_init (TvpGitAction *self)
+{
+    self->property.is_parent = 0;
+    self->files = NULL;
+    self->window = NULL;
+}
+
+
+
+GtkAction *
+tvp_git_action_new (const gchar *name,
+        const gchar *label,
+        GList *files,
+        GtkWidget *window,
+        gboolean is_parent)
+{
+    g_return_val_if_fail(name, NULL);
+    g_return_val_if_fail(label, NULL);
+
+    GtkAction *action = g_object_new (TVP_TYPE_GIT_ACTION,
+            "hide-if-empty", FALSE,
+            "name", name,
+            "label", label,
+            "is-parent", is_parent,
+#if !GTK_CHECK_VERSION(2,9,0)
+            "stock-id", "git",
+#else
+            "icon-name", "git",
+#endif
+            NULL);
+    TVP_GIT_ACTION (action)->files = thunarx_file_info_list_copy (files);
+    //  TVP_GIT_ACTION (action)->window = gtk_widget_ref (window);
+    TVP_GIT_ACTION (action)->window = window;
+    return action;
+}
+
+
+
+static void
+tvp_git_action_finalize (GObject *object)
+{
+    thunarx_file_info_list_free (TVP_GIT_ACTION (object)->files);
+    TVP_GIT_ACTION (object)->files = NULL;
+    //  gtk_widget_unref (TVP_GIT_ACTION (object)->window);
+    TVP_GIT_ACTION (object)->window = NULL;
+
+    G_OBJECT_CLASS (tvp_git_action_parent_class)->finalize (object);
+}
+
+
+
+static void
+tvp_git_action_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec)
+{
+    switch (property_id)
+    {
+        case PROPERTY_IS_PARENT:
+            TVP_GIT_ACTION (object)->property.is_parent = g_value_get_boolean (value)?1:0;
+            break;
+        default:
+            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+            break;
+    }
+}
+
+
+static void
+add_subaction(GtkAction *action, GtkMenuShell *menu, const gchar *name, const gchar *text, const gchar *tooltip, const gchar *stock, gchar *arg)
+{
+    GtkAction *subaction;
+    GtkWidget *subitem;
+
+    subaction = gtk_action_new (name, text, tooltip, stock);
+    g_object_set_qdata (G_OBJECT (subaction), tvp_action_arg_quark, arg);
+    g_signal_connect_after (subaction, "activate", G_CALLBACK (tvp_action_exec), action);
+
+    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);
+}
+
+
+static void
+add_subaction_u (GtkMenuShell *menu, const gchar *name, const gchar *text, const gchar *tooltip, const gchar *stock, gchar *arg)
+{
+    GtkAction *subaction;
+    GtkWidget *subitem;
+
+    subaction = gtk_action_new (name, text, tooltip, stock);
+    g_signal_connect_after (subaction, "activate", G_CALLBACK (tvp_action_unimplemented), arg);
+
+    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);
+}
+
+
+static GtkWidget *
+tvp_git_action_create_menu_item (GtkAction *action)
+{
+    GtkWidget *item;
+    GtkWidget *menu;
+
+    item = GTK_ACTION_CLASS(tvp_git_action_parent_class)->create_menu_item (action);
+
+    menu = gtk_menu_new ();
+    gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), menu);
+
+    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"));
+    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"));
+    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"));
+    add_subaction_u(GTK_MENU_SHELL(menu), "tvp::grep", Q_("Menu|Grep"), _("Grep"), NULL, _("Grep"));
+    add_subaction_u(GTK_MENU_SHELL(menu), "tvp::init", Q_("Menu|Init"), _("Init"), NULL, _("Init"));
+    add_subaction_u(GTK_MENU_SHELL(menu), "tvp::log", Q_("Menu|Log"), _("Log"), GTK_STOCK_INDEX, _("Log"));
+    add_subaction_u(GTK_MENU_SHELL(menu), "tvp::merge", Q_("Menu|Merge"), _("Merge"), NULL, _("Merge"));
+    add_subaction_u(GTK_MENU_SHELL(menu), "tvp::move", Q_("Menu|Move"), _("Move"), GTK_STOCK_DND_MULTIPLE, _("Move"));
+    add_subaction_u(GTK_MENU_SHELL(menu), "tvp::pull", Q_("Menu|Pull"), _("Pull"), NULL, _("Pull"));
+    add_subaction_u(GTK_MENU_SHELL(menu), "tvp::push", Q_("Menu|Push"), _("Push"), NULL, _("Push"));
+    add_subaction_u(GTK_MENU_SHELL(menu), "tvp::rebase", Q_("Menu|Rebase"), _("Rebase"), NULL, _("Rebase"));
+    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"));
+    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"));
+
+    return item;
+}
+
+
+
+static void tvp_action_unimplemented (GtkAction *item, const gchar *tvp_action)
+{
+    GtkWidget *dialog = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, _("Action %s is unimplemented"), tvp_action);
+    gtk_dialog_run (GTK_DIALOG (dialog));
+    gtk_widget_destroy(dialog);
+}
+
+
+
+static void tvp_action_exec (GtkAction *item, TvpGitAction *tvp_action)
+{
+    guint size, i;
+    gchar **argv;
+    GList *iter;
+    gchar *uri;
+    gchar *filename;
+    gchar *file;
+    gchar *watch_path = NULL;
+    gint pid;
+    GError *error = NULL;
+    GdkScreen *screen = gtk_window_get_screen (GTK_WINDOW (tvp_action->window));
+
+    iter = tvp_action->files;
+
+    size = g_list_length (iter);
+
+    argv = g_new (gchar *, size + 3);
+
+    argv[0] = g_strdup (TVP_GIT_HELPER);
+    argv[1] = g_strdup (g_object_get_qdata (G_OBJECT (item), tvp_action_arg_quark));
+    argv[size + 2] = NULL;
+
+    if(iter)
+    {
+        if(tvp_action->property.is_parent)
+        {
+            uri = thunarx_file_info_get_uri (iter->data);
+            watch_path = g_filename_from_uri (uri, NULL, NULL);
+            g_free (uri);
+        }
+        else
+        {
+            uri = thunarx_file_info_get_parent_uri (iter->data);
+            watch_path = g_filename_from_uri (uri, NULL, NULL);
+            g_free (uri);
+        }
+    }
+
+    for (i = 0; i < size; i++)
+    {
+        /* determine the URI for the file info */
+        uri = thunarx_file_info_get_uri (iter->data);
+        if (G_LIKELY (uri != NULL))
+        {
+            /* determine the local filename for the URI */
+            filename = g_filename_from_uri (uri, NULL, NULL);
+            if (G_LIKELY (filename != NULL))
+            {
+                file = filename;
+                /* strip the "file://" part of the uri */
+                if (strncmp (file, "file://", 7) == 0)
+                {
+                    file += 7;
+                }
+
+                file = g_strdup (file);
+
+                /* remove trailing '/' cause git can't handle that */
+                if (file[strlen (file) - 1] == '/')
+                {
+                    file[strlen (file) - 1] = '\0';
+                }
+
+                argv[i+2] = file;
+
+                /* release the filename */
+                g_free (filename);
+            }
+
+            /* release the URI */
+            g_free (uri);
+        }
+
+        iter = g_list_next (iter);
+    }
+    pid = 0;
+    if (!gdk_spawn_on_screen (screen, NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, &pid, &error))
+    {
+        GtkWidget *dialog = gtk_message_dialog_new (GTK_WINDOW (tvp_action->window), GTK_DIALOG_DESTROY_WITH_PARENT|GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Could not spawn \'" TVP_GIT_HELPER "\'");
+        gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s.", error->message);
+        gtk_dialog_run (GTK_DIALOG (dialog));
+        gtk_widget_destroy (dialog);
+        g_error_free (error);
+    }
+    else
+    {
+        g_signal_emit(tvp_action, action_signal[SIGNAL_NEW_PROCESS], 0, &pid, watch_path);
+    }
+    g_free (watch_path);
+    g_strfreev (argv);
+}
+
+
+
+static void
+tsh_cclosure_marshal_VOID__POINTER_STRING (GClosure     *closure,
+        GValue       *return_value G_GNUC_UNUSED,
+        guint         n_param_values,
+        const GValue *param_values,
+        gpointer      invocation_hint G_GNUC_UNUSED,
+        gpointer      marshal_data)
+{
+    typedef void (*TshMarshalFunc_VOID__POINTER_STRING) (gpointer       data1,
+            gconstpointer  arg_1,
+            gconstpointer  arg_2,
+            gpointer       data2);
+    register TshMarshalFunc_VOID__POINTER_STRING callback;
+    register GCClosure *cc = (GCClosure*) closure;
+    register gpointer data1, data2;
+
+    g_return_if_fail (n_param_values == 3);
+
+    if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+        data1 = closure->data;
+        data2 = g_value_peek_pointer (param_values + 0);
+    }
+    else
+    {
+        data1 = g_value_peek_pointer (param_values + 0);
+        data2 = closure->data;
+    }
+    callback = (TshMarshalFunc_VOID__POINTER_STRING) (marshal_data ? marshal_data : cc->callback);
+
+    callback (data1,
+            g_value_get_pointer (param_values + 1),
+            g_value_get_string (param_values + 2),
+            data2);
+}
+

Added: thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-git-action.h
===================================================================
--- thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-git-action.h	                        (rev 0)
+++ thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-git-action.h	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,49 @@
+/*-
+ * Copyright (c) 2006 Peter de Ridder <peter at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __TVP_GIT_ACTION_H__
+#define __TVP_GIT_ACTION_H__
+
+#include <gtk/gtk.h>
+#include <thunarx/thunarx.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _TvpGitActionClass TvpGitActionClass;
+typedef struct _TvpGitAction      TvpGitAction;
+
+#define TVP_TYPE_GIT_ACTION             (tvp_git_action_get_type ())
+#define TVP_GIT_ACTION(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), TVP_TYPE_GIT_ACTION, TvpGitAction))
+#define TVP_GIT_ACTION_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), TVP_TYPE_GIT_ACTION, TvpGitActionClass))
+#define TVP_IS_GIT_ACTION(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TVP_TYPE_GIT_ACTION))
+#define TVP_IS_GIT_ACTION_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), TVP_TYPE_GIT_ACTION))
+#define TVP_GIT_ACTION_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), TVP_TYPE_GIT_ACTION, TvpGitActionClass))
+
+GType      tvp_git_action_get_type      (void) G_GNUC_CONST G_GNUC_INTERNAL;
+void       tvp_git_action_register_type (ThunarxProviderPlugin *) G_GNUC_INTERNAL;
+
+GtkAction *tvp_git_action_new           (const gchar*,
+                                         const gchar*,
+                                         GList *,
+                                         GtkWidget *,
+                                         gboolean) G_GNUC_MALLOC G_GNUC_INTERNAL;
+
+G_END_DECLS;
+
+#endif /* !__TVP_GIT_ACTION_H__ */

Modified: thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-provider.c
===================================================================
--- thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-provider.c	2009-06-28 12:13:49 UTC (rev 7635)
+++ thunar-vcs-plugin/trunk/thunar-vcs-plugin/tvp-provider.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -36,6 +36,7 @@
 #include <thunar-vcs-plugin/tvp-svn-backend.h>
 #include <thunar-vcs-plugin/tvp-svn-action.h>
 #include <thunar-vcs-plugin/tvp-svn-property-page.h>
+#include <thunar-vcs-plugin/tvp-git-action.h>
 #include <thunar-vcs-plugin/tvp-provider.h>
 
 /* use g_access() on win32 */
@@ -436,6 +437,11 @@
   g_signal_connect(action, "new-process", G_CALLBACK(tvp_new_process), menu_provider);
   actions = g_list_append (actions, action);
 
+  /* append the git submenu action */
+  action = tvp_git_action_new ("Tvp::git", _("GIT"), files, window, FALSE);
+  g_signal_connect(action, "new-process", G_CALLBACK(tvp_new_process), menu_provider);
+  actions = g_list_append (actions, action);
+
   return actions;
 }
 
@@ -469,6 +475,11 @@
   /* append the svn submenu action */
   actions = g_list_append (actions, action);
 
+  action = tvp_git_action_new ("Tvp::git", _("GIT"), files, window, TRUE);
+  g_signal_connect(action, "new-process", G_CALLBACK(tvp_new_process), menu_provider);
+  /* append the git submenu action */
+  actions = g_list_append (actions, action);
+
   g_list_free (files);
 
   return actions;


Property changes on: thunar-vcs-plugin/trunk/tvp-git-helper
___________________________________________________________________
Added: svn:ignore
   + Makefile
Makefile.in
.deps
.libs
tvp-git-helper


Added: thunar-vcs-plugin/trunk/tvp-git-helper/Makefile.am
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/Makefile.am	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/Makefile.am	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,55 @@
+
+AM_CPPFLAGS =								\
+	-I$(top_builddir)						\
+	-I$(top_srcdir)							\
+        -DBINDIR=\"$(bindir)\"                                          \
+        -DDATADIR=\"$(datadir)\"                                        \
+	-DLIBDIR=\"$(libdir)\"						\
+	-DLIBEXECDIR=\"$(libexecdir)\"					\
+	-DPACKAGE_LOCALE_DIR=\"$(localedir)\"				\
+	$(PLATFORM_CPPFLAGS)
+
+libexec_PROGRAMS =							\
+	tvp-git-helper
+
+tvp_git_helper_SOURCES =						\
+	main.c								\
+	tgh-add.h							\
+	tgh-add.c							\
+	tgh-branch.h							\
+	tgh-branch.c							\
+	tgh-common.h							\
+	tgh-common.c							\
+	tgh-reset.h							\
+	tgh-reset.c							\
+	tgh-status.h							\
+	tgh-status.c							\
+	tgh-dialog-common.h						\
+	tgh-dialog-common.c						\
+	tgh-branch-dialog.h						\
+	tgh-branch-dialog.c						\
+	tgh-file-selection-dialog.h					\
+	tgh-file-selection-dialog.c					\
+	tgh-reset-dialog.h						\
+	tgh-reset-dialog.c						\
+	tgh-status-dialog.h						\
+	tgh-status-dialog.c
+
+tvp_git_helper_CPPFLAGS =						\
+	-DG_LOG_DOMAIN=\"tvp-git-helper\"
+
+tvp_git_helper_CFLAGS =							\
+	$(PLATFORM_CFLAGS)						\
+	$(THUNAR_VFS_CFLAGS)						\
+	$(GTK_CFLAGS)							\
+	$(GLIB_CFLAGS)							\
+	$(GOBJECT_CFLAGS)
+
+tvp_git_helper_LDFLAGS =						\
+	$(PLATFORM_LIBS)						\
+	$(THUNAR_VFS_LIBS)						\
+	$(GTK_LIBS)							\
+	$(GLIB_LIBS)							\
+	$(GOBJECT_LIBS)
+
+# vi:set ts=8 sw=8 noet ai nocindent:

Added: thunar-vcs-plugin/trunk/tvp-git-helper/main.c
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/main.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/main.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,155 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <glib.h>
+#include <glib/gprintf.h>
+#include <gtk/gtk.h>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+#include "tgh-add.h"
+#include "tgh-branch.h"
+#include "tgh-reset.h"
+#include "tgh-status.h"
+
+static GPid pid;
+static gboolean has_child = FALSE;
+
+void tgh_replace_child (gboolean new_child, GPid new_pid)
+{
+  if(has_child)
+    g_spawn_close_pid(pid);
+
+  has_child = new_child;
+  pid = new_pid;
+}
+
+int main (int argc, char *argv[])
+{
+  /* CMD-line options */
+  gboolean print_version = FALSE;
+  gboolean add = FALSE;
+  gboolean branch = FALSE;
+  gboolean reset = FALSE;
+  gboolean status = FALSE;
+  gchar **files = NULL;
+  GError *error = NULL;
+
+  GOptionGroup *option_group;
+  GOptionContext *option_context;
+
+  GOptionEntry general_options_table[] =
+  {
+    { "version", 'v', 0, G_OPTION_ARG_NONE, &print_version, N_("Print version information"), NULL },
+    { G_OPTION_REMAINING, '\0', G_OPTION_ARG_FILENAME, G_OPTION_ARG_FILENAME_ARRAY, &files, NULL, NULL },
+    { NULL, '\0', 0, 0, NULL, NULL, NULL }
+  };
+
+  GOptionEntry add_options_table[] =
+  {
+    { "add", '\0', 0, G_OPTION_ARG_NONE, &add, N_("Execute add action"), NULL },
+    { NULL, '\0', 0, 0, NULL, NULL, NULL }
+  };
+
+  GOptionEntry branch_options_table[] =
+  {
+    { "branch", '\0', 0, G_OPTION_ARG_NONE, &branch, N_("Execute branch action"), NULL },
+    { NULL, '\0', 0, 0, NULL, NULL, NULL }
+  };
+
+  GOptionEntry reset_options_table[] =
+  {
+    { "reset", '\0', 0, G_OPTION_ARG_NONE, &reset, N_("Execute reset action"), NULL },
+    { NULL, '\0', 0, 0, NULL, NULL, NULL }
+  };
+
+  GOptionEntry status_options_table[] =
+  {
+    { "status", '\0', 0, G_OPTION_ARG_NONE, &status, N_("Execute status action"), NULL },
+    { NULL, '\0', 0, 0, NULL, NULL, NULL }
+  };
+
+  option_context = g_option_context_new("<action> [options] [args]");
+
+  g_option_context_add_main_entries(option_context, general_options_table, GETTEXT_PACKAGE);
+  g_option_context_add_group(option_context, gtk_get_option_group(TRUE));
+
+  option_group = g_option_group_new("add", N_("Add Related Options:"), N_("Add"), NULL, NULL);
+  g_option_group_add_entries(option_group, add_options_table);
+  g_option_context_add_group(option_context, option_group);
+
+  option_group = g_option_group_new("branch", N_("Branch Related Options:"), N_("Branch"), NULL, NULL);
+  g_option_group_add_entries(option_group, branch_options_table);
+  g_option_context_add_group(option_context, option_group);
+
+  option_group = g_option_group_new("reset", N_("Reset Related Options:"), N_("Reset"), NULL, NULL);
+  g_option_group_add_entries(option_group, reset_options_table);
+  g_option_context_add_group(option_context, option_group);
+
+  option_group = g_option_group_new("status", N_("Status Related Options:"), N_("Status"), NULL, NULL);
+  g_option_group_add_entries(option_group, status_options_table);
+  g_option_context_add_group(option_context, option_group);
+
+  if(!g_option_context_parse(option_context, &argc, &argv, &error))
+  {
+    g_fprintf(stderr, "%s: %s\n\tTry --help-all\n", g_get_prgname(), error->message);
+    g_error_free(error);
+  }
+
+  if(print_version)
+  {
+    g_print(PACKAGE_STRING "\n\tcompiled on " __DATE__ ", " __TIME__ "\n");
+    return EXIT_SUCCESS;
+  }
+
+  if(add)
+  {
+    has_child = tgh_add(files, &pid);
+  }
+
+  if(branch)
+  {
+    has_child = tgh_branch(files, &pid);
+  }
+
+  if(reset)
+  {
+    has_child = tgh_reset(files, &pid);
+  }
+
+  if(status)
+  {
+    has_child = tgh_status(files, &pid);
+  }
+
+  if(has_child)
+  {
+    gtk_main ();
+
+    tgh_replace_child(FALSE, 0);
+  }
+
+  return EXIT_SUCCESS;
+}
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-add.c
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-add.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-add.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,124 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+#include "tgh-common.h"
+#include "tgh-dialog-common.h"
+#include "tgh-file-selection-dialog.h"
+
+#include "tgh-add.h"
+
+struct exit_args
+{
+  TghOutputParser *parser;
+  GtkWidget *dialog;
+};
+
+static void child_exit(GPid pid, gint status, gpointer user_data)
+{
+  struct exit_args *args = user_data;
+
+  gtk_widget_destroy(args->dialog);
+
+  if(WEXITSTATUS(status) <= 1)
+  {
+    GtkWidget *dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_OTHER, GTK_BUTTONS_CLOSE, _("Add finished"));
+    tgh_dialog_start(GTK_DIALOG(dialog), TRUE);
+  }
+
+  tgh_child_exit(pid, status, args->parser);
+
+  g_free(args);
+}
+
+gboolean add_spawn (GtkWidget *dialog, gchar **files, GPid *pid)
+{
+  GError *error = NULL;
+  gint fd_err;
+  GIOChannel *chan_err;
+  TghOutputParser *parser;
+  gsize length;
+  gint i;
+  gchar **argv;
+  struct exit_args *args = g_new(struct exit_args, 1);
+
+  length = 3;
+  length += g_strv_length(files);
+
+  argv = g_new(gchar*, length);
+
+  argv[0] = "git";
+  argv[1] = "add";
+  argv[length-1] = NULL;
+
+  i = 2;
+  while(*files)
+    argv[i++] = *files++;
+
+  if(!g_spawn_async_with_pipes(NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, NULL, pid, NULL, NULL, &fd_err, &error))
+  {
+    return FALSE;
+  }
+
+  parser = tgh_error_parser_new(GTK_WIDGET(dialog));
+
+  args->parser = parser;
+  args->dialog = dialog;
+
+  g_child_watch_add(*pid, (GChildWatchFunc)child_exit, args);
+
+  chan_err = g_io_channel_unix_new(fd_err);
+  g_io_add_watch(chan_err, G_IO_IN|G_IO_HUP, (GIOFunc)tgh_parse_output_func, parser);
+
+  return TRUE;
+}
+
+gboolean tgh_add (gchar **files, GPid *pid)
+{
+  GtkWidget *dialog;
+
+  dialog = tgh_file_selection_dialog_new (_("Add"), NULL, 0, files, TGH_FILE_SELECTION_FLAG_MODIFIED|TGH_FILE_SELECTION_FLAG_UNTRACKED);
+  if(gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_OK)
+  {
+    gtk_widget_destroy (dialog);
+    return FALSE;
+  }
+  g_strfreev (files);
+  files = tgh_file_selection_dialog_get_files (TGH_FILE_SELECTION_DIALOG (dialog));
+  gtk_widget_destroy (dialog);
+
+  if(!files)
+    return FALSE;
+
+  dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_OTHER, GTK_BUTTONS_CANCEL, _("Adding ..."));
+	g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (tgh_cancel), NULL);
+  tgh_dialog_start(GTK_DIALOG(dialog), TRUE);
+
+  return add_spawn(dialog, files, pid);
+}
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-add.h
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-add.h	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-add.h	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,27 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __TGH_ADD_H__
+#define __TGH_ADD_H__
+
+G_BEGIN_DECLS
+
+gboolean tgh_add (gchar **, GPid *);
+
+G_END_DECLS
+
+#endif /*__TGH_ADD_H__*/
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch-dialog.c
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch-dialog.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch-dialog.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,213 @@
+/*-
+ * Copyright (c) 2006 Peter de Ridder <peter at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs.h>
+#include <gtk/gtk.h>
+
+#include "tgh-common.h"
+#include "tgh-branch-dialog.h"
+
+static void cancel_clicked (GtkButton*, gpointer);
+static void refresh_clicked (GtkButton*, gpointer);
+
+struct _TghBranchDialog
+{
+  GtkDialog dialog;
+
+  GtkWidget *tree_view;
+  GtkWidget *close;
+  GtkWidget *cancel;
+  GtkWidget *refresh;
+};
+
+struct _TghBranchDialogClass
+{
+  GtkDialogClass dialog_class;
+};
+
+G_DEFINE_TYPE (TghBranchDialog, tgh_branch_dialog, GTK_TYPE_DIALOG)
+
+enum {
+  SIGNAL_CANCEL = 0,
+  SIGNAL_REFRESH,
+  SIGNAL_COUNT
+};
+
+static guint signals[SIGNAL_COUNT];
+
+static void
+tgh_branch_dialog_class_init (TghBranchDialogClass *klass)
+{
+  signals[SIGNAL_CANCEL] = g_signal_new("cancel-clicked",
+    G_OBJECT_CLASS_TYPE (klass),
+    G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+    0, NULL, NULL,
+    g_cclosure_marshal_VOID__VOID,
+    G_TYPE_NONE, 0);
+  signals[SIGNAL_REFRESH] = g_signal_new("refresh-clicked",
+    G_OBJECT_CLASS_TYPE (klass),
+    G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+    0, NULL, NULL,
+    g_cclosure_marshal_VOID__VOID,
+    G_TYPE_NONE, 0);
+}
+
+enum {
+  COLUMN_BRANCH = 0,
+  COLUMN_ACTIVE,
+  COLUMN_COUNT
+};
+
+static void
+tgh_branch_dialog_init (TghBranchDialog *dialog)
+{
+  GtkWidget *button;
+  GtkWidget *tree_view;
+  GtkWidget *scroll_window;
+  GtkCellRenderer *renderer;
+  GtkTreeModel *model;
+
+  scroll_window = gtk_scrolled_window_new (NULL, NULL);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+  dialog->tree_view = tree_view = gtk_tree_view_new ();
+  
+  renderer = gtk_cell_renderer_toggle_new ();
+  gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE(renderer), TRUE);
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
+                                               -1, ("Active"),
+                                               renderer, "active",
+                                               COLUMN_ACTIVE, NULL);
+
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
+                                               -1, _("Path"),
+                                               renderer, "text",
+                                               COLUMN_BRANCH, NULL);
+
+  model = GTK_TREE_MODEL (gtk_list_store_new (COLUMN_COUNT, G_TYPE_STRING, G_TYPE_BOOLEAN));
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), model);
+
+  g_object_unref (model);
+
+  gtk_container_add (GTK_CONTAINER (scroll_window), tree_view);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scroll_window, TRUE, TRUE, 0);
+  gtk_widget_show (tree_view);
+  gtk_widget_show (scroll_window);
+
+  gtk_window_set_title (GTK_WINDOW (dialog), _("Branch"));
+
+  gtk_button_box_set_layout(GTK_BUTTON_BOX (GTK_DIALOG (dialog)->action_area), GTK_BUTTONBOX_EDGE);
+
+  dialog->cancel = button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), button, FALSE, TRUE, 0);
+  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (cancel_clicked), dialog);
+  gtk_widget_show (button);
+
+  dialog->refresh = button = gtk_button_new_from_stock(GTK_STOCK_REFRESH);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), button, FALSE, TRUE, 0);
+  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (refresh_clicked), dialog);
+  gtk_widget_hide (button);
+
+  dialog->close = button = gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
+  gtk_widget_show (button);
+
+  gtk_window_set_default_size (GTK_WINDOW (dialog), 500, 400);
+}
+
+GtkWidget*
+tgh_branch_dialog_new (const gchar *title, GtkWindow *parent, GtkDialogFlags flags)
+{
+  TghBranchDialog *dialog = g_object_new (TGH_TYPE_BRANCH_DIALOG, NULL);
+
+  if(title)
+    gtk_window_set_title (GTK_WINDOW(dialog), title);
+
+  if(parent)
+    gtk_window_set_transient_for (GTK_WINDOW(dialog), parent);
+
+  if(flags & GTK_DIALOG_MODAL)
+    gtk_window_set_modal (GTK_WINDOW(dialog), TRUE);
+
+  if(flags & GTK_DIALOG_DESTROY_WITH_PARENT)
+    gtk_window_set_destroy_with_parent (GTK_WINDOW(dialog), TRUE);
+
+  if(flags & GTK_DIALOG_NO_SEPARATOR)
+    gtk_dialog_set_has_separator (GTK_DIALOG(dialog), FALSE);
+
+  return GTK_WIDGET(dialog);
+}
+
+void       
+tgh_branch_dialog_add (TghBranchDialog *dialog, const gchar *branch, gboolean active)
+{
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+
+  g_return_if_fail (TGH_IS_BRANCH_DIALOG (dialog));
+
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->tree_view));
+
+  gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+  gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+                      COLUMN_BRANCH, branch,
+                      COLUMN_ACTIVE, active,
+                      -1);
+}
+
+void
+tgh_branch_dialog_done (TghBranchDialog *dialog)
+{
+  g_return_if_fail (TGH_IS_BRANCH_DIALOG (dialog));
+
+  gtk_widget_hide (dialog->cancel);
+  gtk_widget_show (dialog->refresh);
+}
+
+static void
+cancel_clicked (GtkButton *button, gpointer user_data)
+{
+  TghBranchDialog *dialog = TGH_BRANCH_DIALOG (user_data);
+
+  gtk_widget_hide (dialog->cancel);
+  gtk_widget_show (dialog->refresh);
+  
+  g_signal_emit (dialog, signals[SIGNAL_CANCEL], 0);
+}
+
+static void
+refresh_clicked (GtkButton *button, gpointer user_data)
+{
+  GtkTreeModel *model;
+  TghBranchDialog *dialog = TGH_BRANCH_DIALOG (user_data);
+
+  gtk_widget_hide (dialog->refresh);
+  gtk_widget_show (dialog->cancel);
+
+  g_signal_emit (dialog, signals[SIGNAL_REFRESH], 0);
+
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->tree_view));
+  gtk_list_store_clear (GTK_LIST_STORE (model));
+}
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch-dialog.h
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch-dialog.h	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch-dialog.h	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,50 @@
+/*-
+ * Copyright (c) 2006 Peter de Ridder <peter at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __TGH_BRANCH_DIALOG_H__
+#define __TGH_BRANCH_DIALOG_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _TghBranchDialogClass TghBranchDialogClass;
+typedef struct _TghBranchDialog      TghBranchDialog;
+
+#define TGH_TYPE_BRANCH_DIALOG             (tgh_branch_dialog_get_type ())
+#define TGH_BRANCH_DIALOG(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), TGH_TYPE_BRANCH_DIALOG, TghBranchDialog))
+#define TGH_BRANCH_DIALOG_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), TGH_TYPE_BRANCH_DIALOG, TghBranchDialogClass))
+#define TGH_IS_BRANCH_DIALOG(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TGH_TYPE_BRANCH_DIALOG))
+#define TGH_IS_BRANCH_DIALOG_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), TGH_TYPE_BRANCH_DIALOG))
+#define TGH_BRANCH_DIALOG_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), TGH_TYPE_BRANCH_DIALOG, TghBranchDialogClass))
+
+GType      tgh_branch_dialog_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+GtkWidget* tgh_branch_dialog_new      (const gchar *title,
+                                       GtkWindow *parent,
+                                       GtkDialogFlags flags) G_GNUC_MALLOC G_GNUC_INTERNAL;
+
+void       tgh_branch_dialog_add      (TghBranchDialog *dialog,
+                                       const gchar *branch,
+                                       gboolean active);
+void       tgh_branch_dialog_done     (TghBranchDialog *dialog);
+
+G_END_DECLS;
+
+#endif /* !__TGH_BRANCH_DIALOG_H__ */

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch.c
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,95 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+#include "tgh-common.h"
+#include "tgh-dialog-common.h"
+#include "tgh-branch-dialog.h"
+
+#include "tgh-branch.h"
+
+static gchar *argv[] = {"git", "branch", NULL};
+
+struct proc_args
+{
+    GtkWidget *dialog;
+    gchar *error;
+    gchar **files;
+};
+
+gboolean branch_spawn (TghBranchDialog *dialog, GPid *pid)
+{
+  GError *error = NULL;
+  gint fd_out;
+  gint fd_err;
+  GIOChannel *chan_out;
+  GIOChannel *chan_err;
+  TghOutputParser *parser;
+
+  if(!g_spawn_async_with_pipes(NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, NULL, pid, NULL, &fd_out, &fd_err, &error))
+  {
+    return FALSE;
+  }
+
+  parser = tgh_error_parser_new(GTK_WIDGET(dialog));
+
+  g_child_watch_add(*pid, (GChildWatchFunc)tgh_child_exit, parser);
+
+  chan_out = g_io_channel_unix_new(fd_out);
+  chan_err = g_io_channel_unix_new(fd_err);
+  g_io_add_watch(chan_out, G_IO_IN|G_IO_HUP, (GIOFunc)tgh_parse_output_func, tgh_branch_parser_new(GTK_WIDGET(dialog)));
+  g_io_add_watch(chan_err, G_IO_IN|G_IO_HUP, (GIOFunc)tgh_parse_output_func, parser);
+
+  return TRUE;
+}
+
+static void create_branch_child(TghBranchDialog *dialog, gpointer user_data)
+{
+  GPid pid;
+  if (branch_spawn(dialog, &pid))
+    tgh_replace_child(TRUE, pid);
+  else
+    tgh_branch_dialog_done(dialog);
+}
+
+gboolean tgh_branch (gchar **files, GPid *pid)
+{
+  GtkWidget *dialog;
+
+  dialog = tgh_branch_dialog_new (NULL, NULL, 0);
+  g_signal_connect(dialog, "cancel-clicked", tgh_cancel, NULL);
+  tgh_dialog_start (GTK_DIALOG (dialog), TRUE);
+
+  g_signal_connect(dialog, "refresh-clicked", G_CALLBACK(create_branch_child), NULL);
+
+  if (files)
+      chdir(files[0]);
+
+  return branch_spawn(TGH_BRANCH_DIALOG(dialog), pid);
+}
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch.h
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch.h	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-branch.h	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,27 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __TGH_BRANCH_H__
+#define __TGH_BRANCH_H__
+
+G_BEGIN_DECLS
+
+gboolean tgh_branch (gchar**, GPid*);
+
+G_END_DECLS
+
+#endif /*__TGH_BRANCH_H__*/
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-common.c
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-common.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-common.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,204 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+#include "tgh-dialog-common.h"
+#include "tgh-status-dialog.h"
+#include "tgh-branch-dialog.h"
+
+#include "tgh-common.h"
+
+static void
+create_error_dialog(GtkWindow *parent, gchar *message)
+{
+  GtkWidget *error;
+  error = gtk_message_dialog_new(GTK_WINDOW(parent), GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Status failed"));
+  gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(error), g_strstrip(message));
+  tgh_dialog_start(GTK_DIALOG(error), FALSE);
+}
+
+void
+tgh_cancel(void)
+{
+}
+
+typedef struct {
+  TghOutputParser parent;
+  gchar *error;
+  GtkWidget *dialog;
+  gboolean done, show_error;
+} TghErrorParser;
+
+void
+tgh_child_exit(GPid pid, gint status, gpointer user_data)
+{
+  TghErrorParser *parser = user_data;
+  if(WEXITSTATUS(status) > 1)
+  {
+    if(parser->done)
+      create_error_dialog(GTK_WINDOW(parser->dialog), parser->error);
+    else
+      parser->show_error = TRUE;
+  }
+  tgh_replace_child(FALSE, 0);
+}
+
+static void
+error_parser_func(TghErrorParser *parser, gchar *line)
+{
+  if(line)
+    parser->error = g_strconcat(parser->error, line, NULL);
+  else
+    if(parser->show_error)
+      create_error_dialog(GTK_WINDOW(parser->dialog), parser->error);
+    else
+      parser->done = TRUE;
+}
+
+TghOutputParser*
+tgh_error_parser_new(GtkWidget *dialog)
+{
+  TghErrorParser *parser = g_new0(TghErrorParser,1);
+
+  TGH_OUTPUT_PARSER(parser)->parse = TGH_OUTPUT_PARSER_FUNC(error_parser_func);
+
+  parser->error = g_strdup("");
+  parser->dialog = dialog;
+
+  return TGH_OUTPUT_PARSER(parser);
+}
+
+typedef struct {
+  TghOutputParser parent;
+  GtkWidget *dialog;
+  gboolean commit;
+} TghStatusParser;
+
+static void
+status_parser_func(TghStatusParser *parser, gchar *line)
+{
+  TghStatusDialog *dialog = TGH_STATUS_DIALOG(parser->dialog);
+  if(line)
+  {
+    if(strstr(line, "git reset"))
+      parser->commit = TRUE;
+    else if(strstr(line, "git add"))
+      parser->commit = FALSE;
+    if(line[0] == '#' && line[1] == '\t')
+    {
+      gchar *file = strchr(line, ':');
+      gchar *state = _("untracked");
+      if(file)
+      {
+        *file = '\0';
+        state = line+2;
+        file = g_strstrip(file+1);
+      }
+      else
+        file = g_strstrip(line+2);
+
+      tgh_status_dialog_add(dialog, file, state, parser->commit);
+    }
+  }
+  else
+  {
+    tgh_status_dialog_done(dialog);
+    g_free(parser);
+  }
+}
+
+TghOutputParser*
+tgh_status_parser_new (GtkWidget *dialog)
+{
+  TghStatusParser *parser = g_new(TghStatusParser,1);
+
+  TGH_OUTPUT_PARSER(parser)->parse = TGH_OUTPUT_PARSER_FUNC(status_parser_func);
+
+  parser->dialog = dialog;
+
+  return TGH_OUTPUT_PARSER(parser);
+}
+
+typedef struct {
+  TghOutputParser parent;
+  GtkWidget *dialog;
+} TghBranchParser;
+
+static void
+branch_parser_func(TghStatusParser *parser, gchar *line)
+{
+  TghBranchDialog *dialog = TGH_BRANCH_DIALOG(parser->dialog);
+  if(line)
+  {
+    gboolean active = line[0] == '*';
+    gchar *branch = g_strstrip(line+2);
+    tgh_branch_dialog_add(dialog, branch, active);
+  }
+  else
+  {
+    tgh_branch_dialog_done(dialog);
+    g_free(parser);
+  }
+}
+
+TghOutputParser*
+tgh_branch_parser_new (GtkWidget *dialog)
+{
+  TghBranchParser *parser = g_new(TghBranchParser,1);
+
+  TGH_OUTPUT_PARSER(parser)->parse = TGH_OUTPUT_PARSER_FUNC(branch_parser_func);
+
+  parser->dialog = dialog;
+
+  return TGH_OUTPUT_PARSER(parser);
+}
+
+gboolean
+tgh_parse_output_func(GIOChannel *source, GIOCondition condition, gpointer data)
+{
+  TghOutputParser *parser = TGH_OUTPUT_PARSER (data);
+  gchar *line;
+
+  if(condition & G_IO_IN)
+  {
+    while(g_io_channel_read_line(source, &line, NULL, NULL, NULL) == G_IO_STATUS_NORMAL)
+    {
+      parser->parse(parser, line);
+      g_free(line);
+    }
+  }
+
+  if(condition & G_IO_HUP)
+  {
+    parser->parse(parser, NULL);
+    g_io_channel_unref(source);
+    return FALSE;
+  }
+  return TRUE;
+}
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-common.h
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-common.h	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-common.h	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,48 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __TGH_COMMON_H__
+#define __TGH_COMMON_H__
+
+G_BEGIN_DECLS
+
+void tgh_replace_child  (gboolean, GPid);
+void tgh_cancel         (void);
+void tgh_child_exit     (GPid, gint, gpointer);
+
+#define TGH_OUTPUT_PARSER(x) ((TghOutputParser*)(x))
+#define TGH_OUTPUT_PARSER_FUNC(x) ((TghOutputParserFunc)(x))
+
+typedef struct _TghOutputParser TghOutputParser;
+
+typedef void (*TghOutputParserFunc) (TghOutputParser *, gchar *);
+
+struct _TghOutputParser {
+  TghOutputParserFunc parse;
+};
+
+TghOutputParser* tgh_error_parser_new  (GtkWidget *);
+
+TghOutputParser* tgh_status_parser_new (GtkWidget *);
+
+TghOutputParser* tgh_branch_parser_new (GtkWidget *);
+
+gboolean tgh_parse_output_func  (GIOChannel *, GIOCondition, gpointer);
+
+G_END_DECLS
+
+#endif /*__TGH_COMMON_H__*/
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-dialog-common.c
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-dialog-common.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-dialog-common.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,51 @@
+
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs.h>
+#include <gtk/gtk.h>
+
+#include "tgh-dialog-common.h"
+
+static void quit_response (GtkDialog*, gint, gpointer);
+static void close_response (GtkDialog*, gint, gpointer);
+
+void
+tgh_dialog_start (GtkDialog *dialog, gboolean quit_on_exit)
+{
+  g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (quit_on_exit?quit_response:close_response), NULL);
+
+  gtk_widget_show (GTK_WIDGET (dialog));
+}
+
+static void
+quit_response (GtkDialog *dialog, gint response, gpointer user_data)
+{
+  gtk_widget_destroy (GTK_WIDGET (dialog));
+
+  gtk_main_quit();
+}
+
+static void
+close_response (GtkDialog *dialog, gint response, gpointer user_data)
+{
+  gtk_widget_destroy (GTK_WIDGET (dialog));
+}
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-dialog-common.h
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-dialog-common.h	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-dialog-common.h	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,27 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __TGH_DIALOG_COMMON_H__
+#define __TGH_DIALOG_COMMON_H__
+
+G_BEGIN_DECLS
+
+void tgh_dialog_start (GtkDialog*, gboolean);
+
+G_END_DECLS
+
+#endif /*__TGH_DIALOG_COMMON_H__*/
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-file-selection-dialog.c
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-file-selection-dialog.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-file-selection-dialog.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,369 @@
+/*-
+ * Copyright (c) 2006 Peter de Ridder <peter at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs.h>
+#include <gtk/gtk.h>
+
+#include "tgh-common.h"
+#include "tgh-file-selection-dialog.h"
+
+typedef struct {
+  TghOutputParser parent;
+  GtkWidget *dialog;
+  enum {STATE_ADDED, STATE_MODIFIED, STATE_UNTRACKED} state;
+} StatusParser;
+
+static void status_parser_func(StatusParser *, gchar *);
+static void selection_cell_toggled (GtkCellRendererToggle *, gchar *, gpointer);
+static void selection_all_toggled (GtkToggleButton *, gpointer);
+
+struct _TghFileSelectionDialog
+{
+  GtkDialog dialog;
+
+  GtkWidget *tree_view;
+  GtkWidget *all;
+
+  TghFileSelectionFlags flags;
+};
+
+struct _TghFileSelectionDialogClass
+{
+  GtkDialogClass dialog_class;
+};
+
+G_DEFINE_TYPE (TghFileSelectionDialog, tgh_file_selection_dialog, GTK_TYPE_DIALOG)
+
+static void
+tgh_file_selection_dialog_class_init (TghFileSelectionDialogClass *klass)
+{
+}
+
+enum {
+  COLUMN_PATH = 0,
+  COLUMN_STAT,
+  COLUMN_SELECTION,
+  COLUMN_COUNT
+};
+
+static void
+tgh_file_selection_dialog_init (TghFileSelectionDialog *dialog)
+{
+  GtkWidget *tree_view;
+  GtkWidget *scroll_window;
+  GtkWidget *all;
+  GtkCellRenderer *renderer;
+  GtkTreeModel *model;
+
+  scroll_window = gtk_scrolled_window_new (NULL, NULL);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+  dialog->tree_view = tree_view = gtk_tree_view_new ();
+
+  renderer = gtk_cell_renderer_toggle_new ();
+  g_signal_connect (renderer, "toggled", G_CALLBACK (selection_cell_toggled), dialog);
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
+                                               -1, "", renderer,
+                                               "active", COLUMN_SELECTION,
+                                               NULL);
+
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
+                                               -1, _("Path"), renderer,
+                                               "text", COLUMN_PATH,
+                                               NULL);
+  
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
+                                               -1, ("State"), renderer,
+                                               "text", COLUMN_STAT,
+                                               NULL);
+
+  model = GTK_TREE_MODEL (gtk_list_store_new (COLUMN_COUNT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN));
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), model);
+
+  g_object_unref (model);
+
+  gtk_container_add (GTK_CONTAINER (scroll_window), tree_view);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scroll_window, TRUE, TRUE, 0);
+  gtk_widget_show (tree_view);
+  gtk_widget_show (scroll_window);
+
+  dialog->all = all = gtk_check_button_new_with_label (_("Select/Unselect all"));
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (all), TRUE);
+  gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (all), TRUE);
+  g_signal_connect (all, "toggled", G_CALLBACK (selection_all_toggled), dialog);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), all, FALSE, FALSE, 0);
+  gtk_widget_show (all);
+
+  gtk_window_set_title (GTK_WINDOW (dialog), _("Status"));
+
+  gtk_dialog_add_buttons (GTK_DIALOG (dialog),
+                          GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                          GTK_STOCK_OK, GTK_RESPONSE_OK,
+                          NULL);
+  gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, -1);
+  gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
+
+  gtk_window_set_default_size (GTK_WINDOW (dialog), 300, 200);
+}
+
+static TghOutputParser* status_parser_new (GtkWidget *dialog)
+{
+  StatusParser *parser = g_new(StatusParser,1);
+
+  TGH_OUTPUT_PARSER(parser)->parse = TGH_OUTPUT_PARSER_FUNC(status_parser_func);
+
+  parser->dialog = dialog;
+
+  return TGH_OUTPUT_PARSER(parser);
+}
+
+GtkWidget*
+tgh_file_selection_dialog_new (const gchar *title, GtkWindow *parent, GtkDialogFlags flags, gchar **files, TghFileSelectionFlags selection_flags)
+{
+  gsize length;
+  gint i;
+  gchar **argv;
+  GPid pid;
+  gint fd_out, fd_err;
+  GError *error = NULL;
+  TghOutputParser *parser;
+  GIOChannel *chan_out, *chan_err;
+
+  TghFileSelectionDialog *dialog = g_object_new (TGH_TYPE_FILE_SELECTION_DIALOG, NULL);
+
+  if(title)
+    gtk_window_set_title (GTK_WINDOW(dialog), title);
+
+  if(parent)
+    gtk_window_set_transient_for (GTK_WINDOW(dialog), parent);
+
+  if(flags & GTK_DIALOG_MODAL)
+    gtk_window_set_modal (GTK_WINDOW(dialog), TRUE);
+
+  if(flags & GTK_DIALOG_DESTROY_WITH_PARENT)
+    gtk_window_set_destroy_with_parent (GTK_WINDOW(dialog), TRUE);
+
+  if(flags & GTK_DIALOG_NO_SEPARATOR)
+    gtk_dialog_set_has_separator (GTK_DIALOG(dialog), FALSE);
+
+  dialog->flags = selection_flags;
+
+  length = 3;
+  if(files)
+    length += g_strv_length(files);
+
+  argv = g_new(gchar*, length);
+
+  argv[0] = "git";
+  argv[1] = "status";
+  argv[length-1] = NULL;
+
+  i = 2;
+  if(files)
+    while(*files)
+      argv[i++] = *files++;
+
+  if(!g_spawn_async_with_pipes(NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, NULL, &pid, NULL, &fd_out, &fd_err, &error))
+  {
+    return FALSE;
+  }
+
+  parser = tgh_error_parser_new(GTK_WIDGET(dialog));
+
+  g_child_watch_add(pid, (GChildWatchFunc)tgh_child_exit, parser);
+
+  chan_out = g_io_channel_unix_new(fd_out);
+  chan_err = g_io_channel_unix_new(fd_err);
+  g_io_add_watch(chan_out, G_IO_IN|G_IO_HUP, (GIOFunc)tgh_parse_output_func, status_parser_new(GTK_WIDGET(dialog)));
+  g_io_add_watch(chan_err, G_IO_IN|G_IO_HUP, (GIOFunc)tgh_parse_output_func, parser);
+
+  return GTK_WIDGET(dialog);
+}
+
+gchar**
+tgh_file_selection_dialog_get_files (TghFileSelectionDialog *dialog)
+{
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+  gchar **files, **files_iter;
+  guint count = 0;
+  gboolean selection;
+
+  g_return_val_if_fail (TGH_IS_FILE_SELECTION_DIALOG (dialog), NULL);
+
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->tree_view));
+
+  if (gtk_tree_model_get_iter_first (model, &iter))
+  {
+    do {
+      gtk_tree_model_get (model, &iter,
+                          COLUMN_SELECTION, &selection,
+                          -1);
+      if (selection)
+        count++;
+    } while (gtk_tree_model_iter_next (model, &iter));
+  }
+
+  if (!count)
+    return NULL;
+
+  files_iter = files = g_new(gchar *, count+1);
+
+  if (gtk_tree_model_get_iter_first (model, &iter))
+  {
+    do {
+      gtk_tree_model_get (model, &iter,
+                          COLUMN_SELECTION, &selection,
+                          -1);
+      if (selection)
+      {
+        gtk_tree_model_get (model, &iter,
+                            COLUMN_PATH, files_iter,
+                            -1);
+        files_iter++;
+      }
+    } while (gtk_tree_model_iter_next (model, &iter));
+  }
+
+  *files_iter = NULL;
+
+  return files;
+}
+
+static void
+status_parser_func(StatusParser *parser, gchar *line)
+{
+  TghFileSelectionDialog *dialog = TGH_FILE_SELECTION_DIALOG(parser->dialog);
+  if(line)
+  {
+    gboolean add = FALSE;
+    gboolean select = FALSE;
+    if(line[0] == '#' && line[1] == '\t')
+    {
+      gchar *file = strchr(line, ':');
+      gchar *state = _("untracked");
+      if(file)
+      {
+        *file = '\0';
+        state = line+2;
+        file = g_strstrip(file+1);
+      }
+      else
+        file = g_strstrip(line+2);
+
+      switch(parser->state)
+      {
+        case STATE_ADDED:
+          if(dialog->flags & TGH_FILE_SELECTION_FLAG_ADDED)
+            add = TRUE;
+          select = TRUE;
+          break;
+        case STATE_MODIFIED:
+          if(dialog->flags & TGH_FILE_SELECTION_FLAG_MODIFIED)
+            add = TRUE;
+          if(!(dialog->flags & TGH_FILE_SELECTION_FLAG_ADDED))
+            select = TRUE;
+          break;
+        case STATE_UNTRACKED:
+          if(dialog->flags & TGH_FILE_SELECTION_FLAG_UNTRACKED)
+            add = TRUE;
+          if(!(dialog->flags & (TGH_FILE_SELECTION_FLAG_ADDED|TGH_FILE_SELECTION_FLAG_MODIFIED)))
+            select = TRUE;
+          break;
+      }
+
+      if (add)
+      {
+        GtkTreeModel *model;
+        GtkTreeIter iter;
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->tree_view));
+
+        gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+        gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+                            COLUMN_PATH, file,
+                            COLUMN_STAT, state,
+                            COLUMN_SELECTION, select,
+                            -1);
+      }
+    }
+    else if(strstr(line, "git reset"))
+      parser->state = STATE_ADDED;
+    else if(strstr(line, "git add"))
+      parser->state = STATE_UNTRACKED;
+    else if(strstr(line, "git checkout"))
+      parser->state = STATE_MODIFIED;
+  }
+  else
+  {
+    g_free(parser);
+  }
+}
+
+static void selection_cell_toggled (GtkCellRendererToggle *renderer, gchar *path, gpointer user_data)
+{
+  TghFileSelectionDialog *dialog = TGH_FILE_SELECTION_DIALOG (user_data);
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+  gboolean selection;
+
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->tree_view));
+
+  gtk_tree_model_get_iter_from_string (model, &iter, path);
+
+  gtk_tree_model_get (model, &iter,
+                      COLUMN_SELECTION, &selection,
+                      -1);
+  gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+                      COLUMN_SELECTION, !selection,
+                      -1);
+
+  gtk_toggle_button_set_inconsistent (GTK_TOGGLE_BUTTON (dialog->all), TRUE);
+}
+
+static void selection_all_toggled (GtkToggleButton *button, gpointer user_data)
+{
+  TghFileSelectionDialog *dialog = TGH_FILE_SELECTION_DIALOG (user_data);
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+  gboolean selection;
+
+  gtk_toggle_button_set_inconsistent (button, FALSE);
+  
+  selection = gtk_toggle_button_get_active (button);
+
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->tree_view));
+
+  if (gtk_tree_model_get_iter_first (model, &iter))
+  {
+    do {
+      gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+                          COLUMN_SELECTION, selection,
+                          -1);
+    } while (gtk_tree_model_iter_next (model, &iter));
+  }
+}
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-file-selection-dialog.h
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-file-selection-dialog.h	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-file-selection-dialog.h	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,55 @@
+/*-
+ * Copyright (c) 2006 Peter de Ridder <peter at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __TGH_FILE_SELECTION_DIALOG_H__
+#define __TGH_FILE_SELECTION_DIALOG_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS;
+
+typedef enum {
+  TGH_FILE_SELECTION_FLAG_ADDED     = 1<<0,
+  TGH_FILE_SELECTION_FLAG_MODIFIED  = 1<<1,
+  TGH_FILE_SELECTION_FLAG_UNTRACKED = 1<<2
+} TghFileSelectionFlags;
+
+typedef struct _TghFileSelectionDialogClass TghFileSelectionDialogClass;
+typedef struct _TghFileSelectionDialog      TghFileSelectionDialog;
+
+#define TGH_TYPE_FILE_SELECTION_DIALOG            (tgh_file_selection_dialog_get_type ())
+#define TGH_FILE_SELECTION_DIALOG(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), TGH_TYPE_FILE_SELECTION_DIALOG, TghFileSelectionDialog))
+#define TGH_FILE_SELECTION_DIALOG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), TGH_TYPE_FILE_SELECTION_DIALOG, TghFileSelectionDialogClass))
+#define TGH_IS_FILE_SELECTION_DIALOG(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TGH_TYPE_FILE_SELECTION_DIALOG))
+#define TGH_IS_FILE_SELECTION_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TGH_TYPE_FILE_SELECTION_DIALOG))
+#define TGH_FILE_SELECTION_DIALOG_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), TGH_TYPE_FILE_SELECTION_DIALOG, TghFileSelectionDialogClass))
+
+GType      tgh_file_selection_dialog_get_type   (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+GtkWidget* tgh_file_selection_dialog_new        (const gchar *title,
+                                                 GtkWindow *parent,
+                                                 GtkDialogFlags flags,
+                                                 gchar **files,
+                                                 TghFileSelectionFlags selection_flags) G_GNUC_MALLOC G_GNUC_INTERNAL;
+
+gchar**    tgh_file_selection_dialog_get_files  (TghFileSelectionDialog *dialog);
+
+G_END_DECLS;
+
+#endif /* !__TGH_FILE_SELECTION_DIALOG_H__ */

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset-dialog.c
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset-dialog.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset-dialog.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,186 @@
+/*-
+ * Copyright (c) 2006 Peter de Ridder <peter at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs.h>
+#include <gtk/gtk.h>
+
+#include "tgh-reset-dialog.h"
+
+static void cancel_clicked (GtkButton*, gpointer);
+
+struct _TghResetDialog
+{
+  GtkDialog dialog;
+
+  GtkWidget *tree_view;
+  GtkWidget *close;
+  GtkWidget *cancel;
+};
+
+struct _TghResetDialogClass
+{
+  GtkDialogClass dialog_class;
+};
+
+G_DEFINE_TYPE (TghResetDialog, tgh_reset_dialog, GTK_TYPE_DIALOG)
+
+enum {
+  SIGNAL_CANCEL = 0,
+  SIGNAL_COUNT
+};
+
+static guint signals[SIGNAL_COUNT];
+
+static void
+tgh_reset_dialog_class_init (TghResetDialogClass *klass)
+{
+  signals[SIGNAL_CANCEL] = g_signal_new("cancel-clicked",
+    G_OBJECT_CLASS_TYPE (klass),
+    G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+    0, NULL, NULL,
+    g_cclosure_marshal_VOID__VOID,
+    G_TYPE_NONE, 0);
+}
+
+enum {
+  COLUMN_PATH = 0,
+  COLUMN_STAT,
+  COLUMN_COUNT
+};
+
+static void
+tgh_reset_dialog_init (TghResetDialog *dialog)
+{
+  GtkWidget *button;
+  GtkWidget *tree_view;
+  GtkWidget *scroll_window;
+  GtkCellRenderer *renderer;
+  GtkTreeModel *model;
+
+  scroll_window = gtk_scrolled_window_new (NULL, NULL);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+  dialog->tree_view = tree_view = gtk_tree_view_new ();
+  
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
+                                               -1, _("Path"),
+                                               renderer, "text",
+                                               COLUMN_PATH, NULL);
+  
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
+                                               -1, _("Status"),
+                                               renderer, "text",
+                                               COLUMN_STAT, NULL);
+
+  model = GTK_TREE_MODEL (gtk_list_store_new (COLUMN_COUNT, G_TYPE_STRING, G_TYPE_STRING));
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), model);
+
+  g_object_unref (model);
+
+  gtk_container_add (GTK_CONTAINER (scroll_window), tree_view);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scroll_window, TRUE, TRUE, 0);
+  gtk_widget_show (tree_view);
+  gtk_widget_show (scroll_window);
+
+  gtk_window_set_title (GTK_WINDOW (dialog), _("Reset"));
+
+  dialog->close = button = gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
+  gtk_widget_hide (button);
+
+  dialog->cancel = button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
+  gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dialog)->action_area), button, FALSE, TRUE, 0);
+  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (cancel_clicked), dialog);
+  gtk_widget_show (button);
+
+  gtk_window_set_default_size (GTK_WINDOW (dialog), 500, 400);
+}
+
+GtkWidget*
+tgh_reset_dialog_new (const gchar *title, GtkWindow *parent, GtkDialogFlags flags)
+{
+  TghResetDialog *dialog = g_object_new (TGH_TYPE_RESET_DIALOG, NULL);
+
+  if(title)
+    gtk_window_set_title (GTK_WINDOW(dialog), title);
+
+  if(parent)
+    gtk_window_set_transient_for (GTK_WINDOW(dialog), parent);
+
+  if(flags & GTK_DIALOG_MODAL)
+    gtk_window_set_modal (GTK_WINDOW(dialog), TRUE);
+
+  if(flags & GTK_DIALOG_DESTROY_WITH_PARENT)
+    gtk_window_set_destroy_with_parent (GTK_WINDOW(dialog), TRUE);
+
+  if(flags & GTK_DIALOG_NO_SEPARATOR)
+    gtk_dialog_set_has_separator (GTK_DIALOG(dialog), FALSE);
+
+  return GTK_WIDGET(dialog);
+}
+
+void       
+tgh_reset_dialog_add (TghResetDialog *dialog, const gchar *file, const gchar *state)
+{
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+  GtkTreePath *path;
+
+  g_return_if_fail (TGH_IS_RESET_DIALOG (dialog));
+
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->tree_view));
+
+  gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+  gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+                      COLUMN_PATH, file,
+                      COLUMN_STAT, state,
+                      -1);
+
+  path = gtk_tree_model_get_path (model, &iter);
+  gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (dialog->tree_view), path, NULL, FALSE, 0, 0);
+
+  gtk_tree_path_free (path);
+}
+
+void
+tgh_reset_dialog_done (TghResetDialog *dialog)
+{
+  g_return_if_fail (TGH_IS_RESET_DIALOG (dialog));
+
+  gtk_widget_hide (dialog->cancel);
+  gtk_widget_show (dialog->close);
+}
+
+static void
+cancel_clicked (GtkButton *button, gpointer user_data)
+{
+  TghResetDialog *dialog = TGH_RESET_DIALOG (user_data);
+  
+  gtk_widget_hide (dialog->cancel);
+  gtk_widget_show (dialog->close);
+  
+  g_signal_emit (dialog, signals[SIGNAL_CANCEL], 0);
+}
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset-dialog.h
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset-dialog.h	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset-dialog.h	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,50 @@
+/*-
+ * Copyright (c) 2006 Peter de Ridder <peter at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __TGH_RESET_DIALOG_H__
+#define __TGH_RESET_DIALOG_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _TghResetDialogClass TghResetDialogClass;
+typedef struct _TghResetDialog      TghResetDialog;
+
+#define TGH_TYPE_RESET_DIALOG             (tgh_reset_dialog_get_type ())
+#define TGH_RESET_DIALOG(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), TGH_TYPE_RESET_DIALOG, TghResetDialog))
+#define TGH_RESET_DIALOG_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), TGH_TYPE_RESET_DIALOG, TghResetDialogClass))
+#define TGH_IS_RESET_DIALOG(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TGH_TYPE_RESET_DIALOG))
+#define TGH_IS_RESET_DIALOG_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), TGH_TYPE_RESET_DIALOG))
+#define TGH_RESET_DIALOG_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), TGH_TYPE_RESET_DIALOG, TghResetDialogClass))
+
+GType      tgh_reset_dialog_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+GtkWidget* tgh_reset_dialog_new      (const gchar *title,
+                                       GtkWindow *parent,
+                                       GtkDialogFlags flags) G_GNUC_MALLOC G_GNUC_INTERNAL;
+
+void       tgh_reset_dialog_add      (TghResetDialog *dialog,
+                                       const gchar *path,
+                                       const gchar *action);
+void       tgh_reset_dialog_done     (TghResetDialog *dialog);
+
+G_END_DECLS;
+
+#endif /* !__TGH_RESET_DIALOG_H__ */

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset.c
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,144 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+#include "tgh-common.h"
+#include "tgh-dialog-common.h"
+#include "tgh-file-selection-dialog.h"
+#include "tgh-reset-dialog.h"
+
+#include "tgh-reset.h"
+
+typedef struct
+{
+  TghOutputParser parent;
+  GtkWidget *dialog;
+} ResetParser;
+
+static void reset_parser_func(ResetParser *parser, gchar *line)
+{
+  TghResetDialog *dialog = TGH_RESET_DIALOG(parser->dialog);
+  if(line)
+  {
+    gchar *file = line;
+    gchar *state = strchr(line, ':');
+    if(state)
+    {
+      *state++ = '\0';
+      state = g_strstrip(state);
+    }
+    else
+    {
+      state = "";
+      file = g_strstrip(file);
+    }
+
+    tgh_reset_dialog_add(dialog, file, state);
+  }
+  else
+  {
+    tgh_reset_dialog_done(dialog);
+    g_free(parser);
+  }
+}
+
+TghOutputParser* reset_parser_new(GtkWidget *dialog)
+{
+  ResetParser *parser = g_new(ResetParser, 1);
+
+  TGH_OUTPUT_PARSER(parser)->parse = TGH_OUTPUT_PARSER_FUNC(reset_parser_func);
+
+  parser->dialog = dialog;
+
+  return TGH_OUTPUT_PARSER(parser);
+}
+
+gboolean reset_spawn (GtkWidget *dialog, gchar **files, GPid *pid)
+{
+  GError *error = NULL;
+  gint fd_out, fd_err;
+  GIOChannel *chan_out, *chan_err;
+  TghOutputParser *parser;
+  gsize length;
+  gint i;
+  gchar **argv;
+
+  length = 3;
+  length += g_strv_length(files);
+
+  argv = g_new(gchar*, length);
+
+  argv[0] = "git";
+  argv[1] = "reset";
+  argv[length-1] = NULL;
+
+  i = 2;
+  while(*files)
+    argv[i++] = *files++;
+
+  if(!g_spawn_async_with_pipes(NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, NULL, pid, NULL, &fd_out, &fd_err, &error))
+  {
+    return FALSE;
+  }
+
+  parser = tgh_error_parser_new(GTK_WIDGET(dialog));
+
+  g_child_watch_add(*pid, (GChildWatchFunc)tgh_child_exit, parser);
+
+  chan_out = g_io_channel_unix_new(fd_out);
+  chan_err = g_io_channel_unix_new(fd_err);
+  g_io_add_watch(chan_out, G_IO_IN|G_IO_HUP, (GIOFunc)tgh_parse_output_func, reset_parser_new(dialog));
+  g_io_add_watch(chan_err, G_IO_IN|G_IO_HUP, (GIOFunc)tgh_parse_output_func, parser);
+
+  return TRUE;
+}
+
+gboolean tgh_reset (gchar **files, GPid *pid)
+{
+  GtkWidget *dialog;
+
+  dialog = tgh_file_selection_dialog_new (_("Reset"), NULL, 0, files, TGH_FILE_SELECTION_FLAG_ADDED);
+  if(gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_OK)
+  {
+    gtk_widget_destroy (dialog);
+    return FALSE;
+  }
+  g_strfreev (files);
+  files = tgh_file_selection_dialog_get_files (TGH_FILE_SELECTION_DIALOG (dialog));
+  gtk_widget_destroy (dialog);
+
+  if(!files)
+    return FALSE;
+
+  dialog = tgh_reset_dialog_new(NULL, NULL, 0);
+  g_signal_connect(dialog, "cancel-clicked", tgh_cancel, NULL);
+	tgh_dialog_start (GTK_DIALOG (dialog), TRUE);
+
+  return reset_spawn(dialog, files, pid);
+}
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset.h
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset.h	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-reset.h	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,27 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __TGH_RESET_H__
+#define __TGH_RESET_H__
+
+G_BEGIN_DECLS
+
+gboolean tgh_reset (gchar **, GPid *);
+
+G_END_DECLS
+
+#endif /*__TGH_RESET_H__*/
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status-dialog.c
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status-dialog.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status-dialog.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,220 @@
+/*-
+ * Copyright (c) 2006 Peter de Ridder <peter at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <thunar-vfs/thunar-vfs.h>
+#include <gtk/gtk.h>
+
+#include "tgh-common.h"
+#include "tgh-status-dialog.h"
+
+static void cancel_clicked (GtkButton*, gpointer);
+static void refresh_clicked (GtkButton*, gpointer);
+
+struct _TghStatusDialog
+{
+  GtkDialog dialog;
+
+  GtkWidget *tree_view;
+  GtkWidget *close;
+  GtkWidget *cancel;
+  GtkWidget *refresh;
+};
+
+struct _TghStatusDialogClass
+{
+  GtkDialogClass dialog_class;
+};
+
+G_DEFINE_TYPE (TghStatusDialog, tgh_status_dialog, GTK_TYPE_DIALOG)
+
+enum {
+  SIGNAL_CANCEL = 0,
+  SIGNAL_REFRESH,
+  SIGNAL_COUNT
+};
+
+static guint signals[SIGNAL_COUNT];
+
+static void
+tgh_status_dialog_class_init (TghStatusDialogClass *klass)
+{
+  signals[SIGNAL_CANCEL] = g_signal_new("cancel-clicked",
+    G_OBJECT_CLASS_TYPE (klass),
+    G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+    0, NULL, NULL,
+    g_cclosure_marshal_VOID__VOID,
+    G_TYPE_NONE, 0);
+  signals[SIGNAL_REFRESH] = g_signal_new("refresh-clicked",
+    G_OBJECT_CLASS_TYPE (klass),
+    G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+    0, NULL, NULL,
+    g_cclosure_marshal_VOID__VOID,
+    G_TYPE_NONE, 0);
+}
+
+enum {
+  COLUMN_PATH = 0,
+  COLUMN_STAT,
+  COLUMN_ADDED,
+  COLUMN_COUNT
+};
+
+static void
+tgh_status_dialog_init (TghStatusDialog *dialog)
+{
+  GtkWidget *button;
+  GtkWidget *tree_view;
+  GtkWidget *scroll_window;
+  GtkCellRenderer *renderer;
+  GtkTreeModel *model;
+
+  scroll_window = gtk_scrolled_window_new (NULL, NULL);
+  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+  dialog->tree_view = tree_view = gtk_tree_view_new ();
+  
+  renderer = gtk_cell_renderer_toggle_new ();
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
+                                               -1, ("Commit"),
+                                               renderer, "active",
+                                               COLUMN_ADDED, NULL);
+
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
+                                               -1, _("Path"),
+                                               renderer, "text",
+                                               COLUMN_PATH, NULL);
+  
+  renderer = gtk_cell_renderer_text_new ();
+  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view),
+                                               -1, ("State"),
+                                               renderer, "text",
+                                               COLUMN_STAT, NULL);
+
+  model = GTK_TREE_MODEL (gtk_list_store_new (COLUMN_COUNT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN));
+
+  gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), model);
+
+  g_object_unref (model);
+
+  gtk_container_add (GTK_CONTAINER (scroll_window), tree_view);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scroll_window, TRUE, TRUE, 0);
+  gtk_widget_show (tree_view);
+  gtk_widget_show (scroll_window);
+
+  gtk_window_set_title (GTK_WINDOW (dialog), _("Status"));
+
+  gtk_button_box_set_layout(GTK_BUTTON_BOX (GTK_DIALOG (dialog)->action_area), GTK_BUTTONBOX_EDGE);
+
+  dialog->cancel = button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), button, FALSE, TRUE, 0);
+  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (cancel_clicked), dialog);
+  gtk_widget_show (button);
+
+  dialog->refresh = button = gtk_button_new_from_stock(GTK_STOCK_REFRESH);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), button, FALSE, TRUE, 0);
+  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (refresh_clicked), dialog);
+  gtk_widget_hide (button);
+
+  dialog->close = button = gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
+  gtk_widget_show (button);
+
+  gtk_window_set_default_size (GTK_WINDOW (dialog), 500, 400);
+}
+
+GtkWidget*
+tgh_status_dialog_new (const gchar *title, GtkWindow *parent, GtkDialogFlags flags)
+{
+  TghStatusDialog *dialog = g_object_new (TGH_TYPE_STATUS_DIALOG, NULL);
+
+  if(title)
+    gtk_window_set_title (GTK_WINDOW(dialog), title);
+
+  if(parent)
+    gtk_window_set_transient_for (GTK_WINDOW(dialog), parent);
+
+  if(flags & GTK_DIALOG_MODAL)
+    gtk_window_set_modal (GTK_WINDOW(dialog), TRUE);
+
+  if(flags & GTK_DIALOG_DESTROY_WITH_PARENT)
+    gtk_window_set_destroy_with_parent (GTK_WINDOW(dialog), TRUE);
+
+  if(flags & GTK_DIALOG_NO_SEPARATOR)
+    gtk_dialog_set_has_separator (GTK_DIALOG(dialog), FALSE);
+
+  return GTK_WIDGET(dialog);
+}
+
+void       
+tgh_status_dialog_add (TghStatusDialog *dialog, const gchar *file, const gchar *state, gboolean commit)
+{
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+
+  g_return_if_fail (TGH_IS_STATUS_DIALOG (dialog));
+
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->tree_view));
+
+  gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+  gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+                      COLUMN_PATH, file,
+                      COLUMN_STAT, state,
+                      COLUMN_ADDED, commit,
+                      -1);
+}
+
+void
+tgh_status_dialog_done (TghStatusDialog *dialog)
+{
+  g_return_if_fail (TGH_IS_STATUS_DIALOG (dialog));
+
+  gtk_widget_hide (dialog->cancel);
+  gtk_widget_show (dialog->refresh);
+}
+
+static void
+cancel_clicked (GtkButton *button, gpointer user_data)
+{
+  TghStatusDialog *dialog = TGH_STATUS_DIALOG (user_data);
+
+  gtk_widget_hide (dialog->cancel);
+  gtk_widget_show (dialog->refresh);
+  
+  g_signal_emit (dialog, signals[SIGNAL_CANCEL], 0);
+}
+
+static void
+refresh_clicked (GtkButton *button, gpointer user_data)
+{
+  GtkTreeModel *model;
+  TghStatusDialog *dialog = TGH_STATUS_DIALOG (user_data);
+
+  gtk_widget_hide (dialog->refresh);
+  gtk_widget_show (dialog->cancel);
+
+  g_signal_emit (dialog, signals[SIGNAL_REFRESH], 0);
+
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->tree_view));
+  gtk_list_store_clear (GTK_LIST_STORE (model));
+}
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status-dialog.h
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status-dialog.h	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status-dialog.h	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,51 @@
+/*-
+ * Copyright (c) 2006 Peter de Ridder <peter at xfce.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __TGH_STATUS_DIALOG_H__
+#define __TGH_STATUS_DIALOG_H__
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS;
+
+typedef struct _TghStatusDialogClass TghStatusDialogClass;
+typedef struct _TghStatusDialog      TghStatusDialog;
+
+#define TGH_TYPE_STATUS_DIALOG             (tgh_status_dialog_get_type ())
+#define TGH_STATUS_DIALOG(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), TGH_TYPE_STATUS_DIALOG, TghStatusDialog))
+#define TGH_STATUS_DIALOG_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), TGH_TYPE_STATUS_DIALOG, TghStatusDialogClass))
+#define TGH_IS_STATUS_DIALOG(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TGH_TYPE_STATUS_DIALOG))
+#define TGH_IS_STATUS_DIALOG_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), TGH_TYPE_STATUS_DIALOG))
+#define TGH_STATUS_DIALOG_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), TGH_TYPE_STATUS_DIALOG, TghStatusDialogClass))
+
+GType      tgh_status_dialog_get_type (void) G_GNUC_CONST G_GNUC_INTERNAL;
+
+GtkWidget* tgh_status_dialog_new      (const gchar *title,
+                                       GtkWindow *parent,
+                                       GtkDialogFlags flags) G_GNUC_MALLOC G_GNUC_INTERNAL;
+
+void       tgh_status_dialog_add      (TghStatusDialog *dialog,
+                                       const gchar *path,
+                                       const gchar *state,
+                                       gboolean commit);
+void       tgh_status_dialog_done     (TghStatusDialog *dialog);
+
+G_END_DECLS;
+
+#endif /* !__TGH_STATUS_DIALOG_H__ */

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status.c
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status.c	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status.c	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,95 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include <thunar-vfs/thunar-vfs.h>
+
+#include "tgh-common.h"
+#include "tgh-dialog-common.h"
+#include "tgh-status-dialog.h"
+
+#include "tgh-status.h"
+
+static gchar *argv[] = {"git", "status", NULL};
+
+struct proc_args
+{
+    GtkWidget *dialog;
+    gchar *error;
+    gchar **files;
+};
+
+gboolean status_spawn (TghStatusDialog *dialog, GPid *pid)
+{
+  GError *error = NULL;
+  gint fd_out;
+  gint fd_err;
+  GIOChannel *chan_out;
+  GIOChannel *chan_err;
+  TghOutputParser *parser;
+
+  if(!g_spawn_async_with_pipes(NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, NULL, NULL, pid, NULL, &fd_out, &fd_err, &error))
+  {
+    return FALSE;
+  }
+
+  parser = tgh_error_parser_new(GTK_WIDGET(dialog));
+
+  g_child_watch_add(*pid, (GChildWatchFunc)tgh_child_exit, parser);
+
+  chan_out = g_io_channel_unix_new(fd_out);
+  chan_err = g_io_channel_unix_new(fd_err);
+  g_io_add_watch(chan_out, G_IO_IN|G_IO_HUP, (GIOFunc)tgh_parse_output_func, tgh_status_parser_new(GTK_WIDGET(dialog)));
+  g_io_add_watch(chan_err, G_IO_IN|G_IO_HUP, (GIOFunc)tgh_parse_output_func, parser);
+
+  return TRUE;
+}
+
+static void create_status_child(TghStatusDialog *dialog, gpointer user_data)
+{
+  GPid pid;
+  if (status_spawn(dialog, &pid))
+    tgh_replace_child(TRUE, pid);
+  else
+    tgh_status_dialog_done(dialog);
+}
+
+gboolean tgh_status (gchar **files, GPid *pid)
+{
+  GtkWidget *dialog;
+
+  dialog = tgh_status_dialog_new (NULL, NULL, 0);
+  g_signal_connect(dialog, "cancel-clicked", tgh_cancel, NULL);
+  tgh_dialog_start (GTK_DIALOG (dialog), TRUE);
+
+  g_signal_connect(dialog, "refresh-clicked", G_CALLBACK(create_status_child), NULL);
+
+  if (files)
+      chdir(files[0]);
+
+  return status_spawn(TGH_STATUS_DIALOG(dialog), pid);
+}
+

Added: thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status.h
===================================================================
--- thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status.h	                        (rev 0)
+++ thunar-vcs-plugin/trunk/tvp-git-helper/tgh-status.h	2009-06-28 12:46:28 UTC (rev 7636)
@@ -0,0 +1,27 @@
+/*-
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef __TGH_STATUS_H__
+#define __TGH_STATUS_H__
+
+G_BEGIN_DECLS
+
+gboolean tgh_status (gchar**, GPid*);
+
+G_END_DECLS
+
+#endif /*__TGH_STATUS_H__*/
+


Property changes on: thunar-vcs-plugin/trunk/tvp-svn-helper
___________________________________________________________________
Modified: svn:ignore
   - Makefile
Makefile.in
.deps
.libs
tsp-svn-helper


   + Makefile
Makefile.in
.deps
.libs
tvp-svn-helper





More information about the Goodies-commits mailing list