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>
This commit is contained in:
Shawn O. Pearce 2006-11-15 22:35:26 -05:00
Родитель fbee8500a5
Коммит 4aca740b39
1 изменённых файлов: 55 добавлений и 0 удалений

55
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 \