summaryrefslogtreecommitdiff
path: root/git-gui
diff options
context:
space:
mode:
authorLibravatar Shawn O. Pearce <spearce@spearce.org>2006-11-15 22:35:26 -0500
committerLibravatar Shawn O. Pearce <spearce@spearce.org>2006-11-17 23:56:15 -0500
commit4aca740b3915b35d7fa1707be79b268b0cc94123 (patch)
treea6568626d15eab9e892e04460560ffec2e34cc0c /git-gui
parentgit-gui: Correctly handle GIT_DIR environment variable. (diff)
downloadtgif-4aca740b3915b35d7fa1707be79b268b0cc94123.tar.xz
git-gui: Create Windows shortcut icons for git-gui.
If we are running on Windows we now offer a 'Create Desktop Icon' menu item under the Project menu. This pops up a save dialog box letting the user create a .bat file on their desktop (or somewhere else). The .bat script will startup Cygwin with a login shell then launch git-gui in the current working directory. This is very useful for Windows users who have little to no desire to start a command window just to run a git-gui session. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'git-gui')
-rwxr-xr-xgit-gui55
1 files changed, 55 insertions, 0 deletions
diff --git a/git-gui b/git-gui
index 7c2f803fec..def6a5e070 100755
--- a/git-gui
+++ b/git-gui
@@ -2002,6 +2002,54 @@ proc do_save_config {w} {
destroy $w
}
+proc do_windows_shortcut {} {
+ global gitdir appname argv0
+
+ set reponame [lindex [file split \
+ [file normalize [file dirname $gitdir]]] \
+ end]
+
+ if {[catch {
+ set desktop [exec cygpath \
+ --windows \
+ --absolute \
+ --long-name \
+ --desktop]
+ }]} {
+ set desktop .
+ }
+ set fn [tk_getSaveFile \
+ -parent . \
+ -title "$appname ($reponame): Create Desktop Icon" \
+ -initialdir $desktop \
+ -initialfile "Git $reponame.bat"]
+ if {$fn != {}} {
+ if {[catch {
+ set fd [open $fn w]
+ set sh [exec cygpath \
+ --windows \
+ --absolute \
+ --long-name \
+ /bin/sh]
+ set me [exec cygpath \
+ --unix \
+ --absolute \
+ $argv0]
+ set gd [exec cygpath \
+ --unix \
+ --absolute \
+ $gitdir]
+ puts -nonewline $fd "\"$sh\" --login -c \""
+ puts -nonewline $fd "GIT_DIR=\\\"$gd\\\""
+ puts -nonewline $fd " \\\"$me\\\""
+ puts $fd "&\""
+ close $fd
+ } err]} {
+ error_popup "Cannot write script:\n\n$err"
+ }
+ }
+}
+
proc toggle_or_diff {w x y} {
global file_lists ui_index ui_other
global last_clicked selected_paths
@@ -2168,6 +2216,13 @@ if {!$single_commit} {
.mbar.project add command -label {Repack Database} \
-command do_repack \
-font font_ui
+
+ if {$tcl_platform(platform) eq {windows}} {
+ .mbar.project add command \
+ -label {Create Desktop Icon} \
+ -command do_windows_shortcut \
+ -font font_ui
+ }
}
.mbar.project add command -label Quit \
-command do_quit \