git-gui: use themed tk widgets with Tk 8.5
PATCH 1/1 git-gui: use themed tk widgets with Tk 8.5
This patch enables the use of themed Tk widgets with Tk 8.5 and above. These make a significant difference on Windows in making the application appear native. On Windows and MacOSX ttk defaults to the native look as much as possible. On X11 the user may select a theme using the TkTheme XRDB resource class by adding an line to the .Xresources file. The set of installed theme names is available using the Tk command 'ttk::themes'. The default on X11 is similar to the current un-themed style - a kind of thin bordered motif look.
A new git config variable 'gui.usettk' may be set to disable this if the user prefers the classic Tk look. Using Tk 8.4 will also avoid the use of themed widgets as these are only available since 8.5.
Some support is included for Tk 8.6 features (themed spinbox and native font chooser for MacOSX and Windows).
---
There is a screenshot of this running on Windows 7 at
http://www.patthoyts.tk/screenshots/git-gui-win32.png
It has been tested on Linux but not on MacOSX yet.
git-gui.sh | 158 ++++++++++++++++++++++++-------------- lib/about.tcl | 37 +++------- lib/blame.tcl | 22 +++--- lib/branch_checkout.tcl | 20 +++-- lib/branch_create.tcl | 45 ++++++----- lib/branch_delete.tcl | 24 +++--- lib/branch_rename.tcl | 32 +++++--- lib/browser.tcl | 41 ++++++----- lib/choose_font.tcl | 31 ++++---- lib/choose_repository.tcl | 94 +++++++++++------------ lib/choose_rev.tcl | 51 +++++++------ lib/class.tcl | 7 ++ lib/console.tcl | 17 ++-- lib/database.tcl | 20 +++--- lib/error.tcl | 15 ++-- lib/index.tcl | 13 ++- lib/merge.tcl | 14 ++-- lib/option.tcl | 67 +++++++++------- lib/remote_add.tcl | 37 +++++----- lib/remote_branch_delete.tcl | 51 ++++++------ lib/search.tcl | 11 ++- lib/sshkey.tcl | 20 +++-- lib/status_bar.tcl | 14 ++-- lib/themed.tcl | 174 ++++++++++++++++++++++++++++++++++++++++++ lib/tools_dlg.tcl | 87 ++++++++++----------- lib/transport.tcl | 48 ++++++----- 26 files changed, 697 insertions(+), 453 deletions(-) create mode 100644 lib/themed.tcl
git-gui.sh +102 -56
@@ -677,12 +677,17 @@ if {[is_Windows]} { ## config defaults set cursor_ptr arrow -font create font_diff -family Courier -size 10 font create font_ui -catch { - label .dummy - eval font configure font_ui [font actual [.dummy cget -font]] - destroy .dummy +if {[lsearch -exact [font names] TkDefaultFont] != -1} { + eval [linsert [font actual TkDefaultFont] 0 font configure font_ui] + eval [linsert [font actual TkFixedFont] 0 font create font_diff] +} else { + font create font_diff -family Courier -size 10 + catch { + label .dummy + eval font configure font_ui [font actual [.dummy cget -font]] + destroy .dummy + } } font create font_uiitalic
@@ -697,6 +702,9 @@ foreach class {Button Checkbutton Entry Label } if {![is_MacOSX]} { option add *Menu.font font_ui + option add *Entry.borderWidth 1 startupFile + option add *Entry.relief sunken startupFile + option add *RadioButton.anchor w startupFile } unset class
@@ -749,6 +757,18 @@ proc apply_config {} { font configure ${font}bold -weight bold font configure ${font}italic -slant italic } + + global use_ttk NS + set use_ttk 0 + set NS {} + if {$repo_config(gui.usettk)} { + set use_ttk [package vsatisfies [package provide Tk] 8.5] + if {$use_ttk} { + set NS ttk + bind [winfo class .] <<ThemeChanged>> [list InitTheme] + pave_toplevel . + } + } } set default_config(branch.autosetupmerge) true
@@ -775,6 +795,7 @@ set default_config(gui.fontui) [font configure font_ui] set default_config(gui.fontdiff) [font configure font_diff] # TODO: this option should be added to the git-config documentation set default_config(gui.maxfilesdisplayed) 5000 +set default_config(gui.usettk) 1 set font_descs { {fontui font_ui {mc "Main Font"}} {fontdiff font_diff {mc "Diff/Console Font"}}
@@ -2093,7 +2114,7 @@ proc do_quit {{rc {1}}} { global ui_comm is_quitting repo_config commit_type global GITGUI_BCK_exists GITGUI_BCK_i global ui_comm_spell - global ret_code + global ret_code use_ttk if {$is_quitting} return set is_quitting 1
@@ -2151,8 +2172,13 @@ proc do_quit {{rc {1}}} { } set cfg_geometry [list] lappend cfg_geometry [wm geometry .] - lappend cfg_geometry [lindex [.vpane sash coord 0] 0] - lappend cfg_geometry [lindex [.vpane.files sash coord 0] 1] + if {$use_ttk} { + lappend cfg_geometry [.vpane sashpos 0] + lappend cfg_geometry [.vpane.files sashpos 0] + } else { + lappend cfg_geometry [lindex [.vpane sash coord 0] 0] + lappend cfg_geometry [lindex [.vpane.files sash coord 0] 1] + } if {[catch {set rc_geometry $repo_config(gui.geometry)}]} { set rc_geometry {} }
@@ -2919,14 +2945,13 @@ default { # -- Branch Control # -frame .branch \ - -borderwidth 1 \ - -relief sunken -label .branch.l1 \ +${NS}::frame .branch +if {!$use_ttk} {.branch configure -borderwidth 1 -relief sunken} +${NS}::label .branch.l1 \ -text [mc "Current Branch:"] \ -anchor w \ -justify left -label .branch.cb \ +${NS}::label .branch.cb \ -textvariable current_branch \ -anchor w \ -justify left
@@ -2936,15 +2961,20 @@ pack .branch -side top -fill x # -- Main Window Layout # -panedwindow .vpane -orient horizontal -panedwindow .vpane.files -orient vertical -.vpane add .vpane.files -sticky nsew -height 100 -width 200 +${NS}::panedwindow .vpane -orient horizontal +${NS}::panedwindow .vpane.files -orient vertical +if {$use_ttk} { + .vpane add .vpane.files +} else { + .vpane add .vpane.files -sticky nsew -height 100 -width 200 +} pack .vpane -anchor n -side top -fill both -expand 1 # -- Index File List # -frame .vpane.files.index -height 100 -width 200 -label .vpane.files.index.title -text [mc "Staged Changes (Will Commit)"] \ +${NS}::frame .vpane.files.index -height 100 -width 200 +tlabel .vpane.files.index.title \ + -text [mc "Staged Changes (Will Commit)"] \ -background lightgreen -foreground black text $ui_index -background white -foreground black \ -borderwidth 0 \
@@ -2954,8 +2984,8 @@ text $ui_index -background white -foreground black \ -xscrollcommand {.vpane.files.index.sx set} \ -yscrollcommand {.vpane.files.index.sy set} \ -state disabled -scrollbar .vpane.files.index.sx -orient h -command [list $ui_index xview] -scrollbar .vpane.files.index.sy -orient v -command [list $ui_index yview] +${NS}::scrollbar .vpane.files.index.sx -orient h -command [list $ui_index xview] +${NS}::scrollbar .vpane.files.index.sy -orient v -command [list $ui_index yview] pack .vpane.files.index.title -side top -fill x pack .vpane.files.index.sx -side bottom -fill x pack .vpane.files.index.sy -side right -fill y
@@ -2963,8 +2993,8 @@ pack $ui_index -side left -fill both -expand 1 # -- Working Directory File List # -frame .vpane.files.workdir -height 100 -width 200 -label .vpane.files.workdir.title -text [mc "Unstaged Changes"] \ +${NS}::frame .vpane.files.workdir -height 100 -width 200 +tlabel .vpane.files.workdir.title -text [mc "Unstaged Changes"] \ -background lightsalmon -foreground black text $ui_workdir -background white -foreground black \ -borderwidth 0 \
@@ -2974,15 +3004,19 @@ text $ui_workdir -background white -foreground black \ -xscrollcommand {.vpane.files.workdir.sx set} \ -yscrollcommand {.vpane.files.workdir.sy set} \ -state disabled -scrollbar .vpane.files.workdir.sx -orient h -command [list $ui_workdir xview] -scrollbar .vpane.files.workdir.sy -orient v -command [list $ui_workdir yview] +${NS}::scrollbar .vpane.files.workdir.sx -orient h -command [list $ui_workdir xview] +${NS}::scrollbar .vpane.files.workdir.sy -orient v -command [list $ui_workdir yview] pack .vpane.files.workdir.title -side top -fill x pack .vpane.files.workdir.sx -side bottom -fill x pack .vpane.files.workdir.sy -side right -fill y pack $ui_workdir -side left -fill both -expand 1 -.vpane.files add .vpane.files.workdir -sticky nsew -.vpane.files add .vpane.files.index -sticky nsew +.vpane.files add .vpane.files.workdir +.vpane.files add .vpane.files.index +if {!$use_ttk} { + .vpane.files paneconfigure .vpane.files.workdir -sticky news + .vpane.files paneconfigure .vpane.files.index -sticky news +} foreach i [list $ui_index $ui_workdir] { rmsel_tag $i
@@ -2992,68 +3026,69 @@ unset i # -- Diff and Commit Area # -frame .vpane.lower -height 300 -width 400 -frame .vpane.lower.commarea -frame .vpane.lower.diff -relief sunken -borderwidth 1 +${NS}::frame .vpane.lower -height 300 -width 400 +${NS}::frame .vpane.lower.commarea +${NS}::frame .vpane.lower.diff -relief sunken -borderwidth 1 pack .vpane.lower.diff -fill both -expand 1 pack .vpane.lower.commarea -side bottom -fill x -.vpane add .vpane.lower -sticky nsew +.vpane add .vpane.lower +if {!$use_ttk} {.vpane paneconfigure .vpane.lower -sticky nsew} # -- Commit Area Buttons # -frame .vpane.lower.commarea.buttons -label .vpane.lower.commarea.buttons.l -text {} \ +${NS}::frame .vpane.lower.commarea.buttons +${NS}::label .vpane.lower.commarea.buttons.l -text {} \ -anchor w \ -justify left pack .vpane.lower.commarea.buttons.l -side top -fill x pack .vpane.lower.commarea.buttons -side left -fill y -button .vpane.lower.commarea.buttons.rescan -text [mc Rescan] \ +${NS}::button .vpane.lower.commarea.buttons.rescan -text [mc Rescan] \ -command ui_do_rescan pack .vpane.lower.commarea.buttons.rescan -side top -fill x lappend disable_on_lock \ {.vpane.lower.commarea.buttons.rescan conf -state} -button .vpane.lower.commarea.buttons.incall -text [mc "Stage Changed"] \ +${NS}::button .vpane.lower.commarea.buttons.incall -text [mc "Stage Changed"] \ -command do_add_all pack .vpane.lower.commarea.buttons.incall -side top -fill x lappend disable_on_lock \ {.vpane.lower.commarea.buttons.incall conf -state} if {![is_enabled nocommitmsg]} { - button .vpane.lower.commarea.buttons.signoff -text [mc "Sign Off"] \ + ${NS}::button .vpane.lower.commarea.buttons.signoff -text [mc "Sign Off"] \ -command do_signoff pack .vpane.lower.commarea.buttons.signoff -side top -fill x } -button .vpane.lower.commarea.buttons.commit -text [commit_btn_caption] \ +${NS}::button .vpane.lower.commarea.buttons.commit -text [commit_btn_caption] \ -command do_commit pack .vpane.lower.commarea.buttons.commit -side top -fill x lappend disable_on_lock \ {.vpane.lower.commarea.buttons.commit conf -state} if {![is_enabled nocommit]} { - button .vpane.lower.commarea.buttons.push -text [mc Push] \ + ${NS}::button .vpane.lower.commarea.buttons.push -text [mc Push] \ -command do_push_anywhere pack .vpane.lower.commarea.buttons.push -side top -fill x } # -- Commit Message Buffer # -frame .vpane.lower.commarea.buffer -frame .vpane.lower.commarea.buffer.header +${NS}::frame .vpane.lower.commarea.buffer +${NS}::frame .vpane.lower.commarea.buffer.header set ui_comm .vpane.lower.commarea.buffer.t set ui_coml .vpane.lower.commarea.buffer.header.l if {![is_enabled nocommit]} { - radiobutton .vpane.lower.commarea.buffer.header.new \ + ${NS}::radiobutton .vpane.lower.commarea.buffer.header.new \ -text [mc "New Commit"] \ -command do_select_commit_type \ -variable selected_commit_type \ -value new lappend disable_on_lock \ [list .vpane.lower.commarea.buffer.header.new conf -state] - radiobutton .vpane.lower.commarea.buffer.header.amend \ + ${NS}::radiobutton .vpane.lower.commarea.buffer.header.amend \ -text [mc "Amend Last Commit"] \ -command do_select_commit_type \ -variable selected_commit_type \
@@ -3062,7 +3097,7 @@ if {![is_enabled nocommit]} { [list .vpane.lower.commarea.buffer.header.amend conf -state] } -label $ui_coml \ +${NS}::label $ui_coml \ -anchor w \ -justify left proc trace_commit_type {varname args} {
@@ -3094,7 +3129,7 @@ text $ui_comm -background white -foreground black \ -width $repo_config(gui.commitmsgwidth) -height 9 -wrap none \ -font font_diff \ -yscrollcommand {.vpane.lower.commarea.buffer.sby set} -scrollbar .vpane.lower.commarea.buffer.sby \ +${NS}::scrollbar .vpane.lower.commarea.buffer.sby \ -command [list $ui_comm yview] pack .vpane.lower.commarea.buffer.header -side top -fill x pack .vpane.lower.commarea.buffer.sby -side right -fill y
@@ -3160,19 +3195,19 @@ proc trace_current_diff_path {varname args} { } trace add variable current_diff_path write trace_current_diff_path -frame .vpane.lower.diff.header -background gold -label .vpane.lower.diff.header.status \ +gold_frame .vpane.lower.diff.header +tlabel .vpane.lower.diff.header.status \ -background gold \ -foreground black \ -width $max_status_desc \ -anchor w \ -justify left -label .vpane.lower.diff.header.file \ +tlabel .vpane.lower.diff.header.file \ -background gold \ -foreground black \ -anchor w \ -justify left -label .vpane.lower.diff.header.path \ +tlabel .vpane.lower.diff.header.path \ -background gold \ -foreground black \ -anchor w \
@@ -3196,7 +3231,7 @@ bind_button3 .vpane.lower.diff.header.path "tk_popup $ctxm %X %Y" # -- Diff Body # -frame .vpane.lower.diff.body +${NS}::frame .vpane.lower.diff.body set ui_diff .vpane.lower.diff.body.t text $ui_diff -background white -foreground black \ -borderwidth 0 \
@@ -3205,9 +3240,9 @@ text $ui_diff -background white -foreground black \ -xscrollcommand {.vpane.lower.diff.body.sbx set} \ -yscrollcommand {.vpane.lower.diff.body.sby set} \ -state disabled -scrollbar .vpane.lower.diff.body.sbx -orient horizontal \ +${NS}::scrollbar .vpane.lower.diff.body.sbx -orient horizontal \ -command [list $ui_diff xview] -scrollbar .vpane.lower.diff.body.sby -orient vertical \ +${NS}::scrollbar .vpane.lower.diff.body.sby -orient vertical \ -command [list $ui_diff yview] pack .vpane.lower.diff.body.sbx -side bottom -fill x pack .vpane.lower.diff.body.sby -side right -fill y
@@ -3428,12 +3463,17 @@ $main_status show [mc "Initializing..."] catch { set gm $repo_config(gui.geometry) wm geometry . [lindex $gm 0] -.vpane sash place 0 \ - [lindex $gm 1] \ - [lindex [.vpane sash coord 0] 1] -.vpane.files sash place 0 \ - [lindex [.vpane.files sash coord 0] 0] \ - [lindex $gm 2] +if {$use_ttk} { + .vpane sashpos 0 [lindex $gm 1] + .vpane.files sashpos 0 [lindex $gm 2] +} else { + .vpane sash place 0 \ + [lindex $gm 1] \ + [lindex [.vpane sash coord 0] 1] + .vpane.files sash place 0 \ + [lindex [.vpane.files sash coord 0] 0] \ + [lindex $gm 2] +} unset gm }
@@ -3701,3 +3741,9 @@ if {[is_enabled retcode]} { if {$picked && [is_config_true gui.autoexplore]} { do_explore } + +# Local variables: +# mode: tcl +# indent-tabs-mode: t +# tab-width: 4 +# End:
lib/about.tcl +10 -27
@@ -4,31 +4,26 @@ proc do_about {} { global appvers copyright oguilib global tcl_patchLevel tk_patchLevel - global ui_comm_spell + global ui_comm_spell NS use_ttk set w .about_dialog - toplevel $w + Dialog $w wm geometry $w "+[winfo rootx .]+[winfo rooty .]" pack [git_logo $w.git_logo] -side left -fill y -padx 10 -pady 10 - label $w.header -text [mc "About %s" [appname]] \ - -font font_uibold + ${NS}::label $w.header -text [mc "About %s" [appname]] \ + -font font_uibold -anchor center pack $w.header -side top -fill x - frame $w.buttons - button $w.buttons.close -text {Close} \ + ${NS}::frame $w.buttons + ${NS}::button $w.buttons.close -text {Close} \ -default active \ -command [list destroy $w] pack $w.buttons.close -side right pack $w.buttons -side bottom -fill x -pady 10 -padx 10 - label $w.desc \ - -text "[mc "git-gui - a graphical user interface for Git."]\n$copyright" \ - -padx 5 -pady 5 \ - -justify left \ - -anchor w \ - -borderwidth 1 \ - -relief solid + paddedlabel $w.desc \ + -text "[mc "git-gui - a graphical user interface for Git."]\n$copyright" pack $w.desc -side top -fill x -padx 5 -pady 5 set v {}
@@ -52,22 +47,10 @@ proc do_about {} { append d "git exec dir: [gitexec]\n" append d "git-gui lib: $oguilib" - label $w.vers \ - -text $v \ - -padx 5 -pady 5 \ - -justify left \ - -anchor w \ - -borderwidth 1 \ - -relief solid + paddedlabel $w.vers -text $v pack $w.vers -side top -fill x -padx 5 -pady 5 - label $w.dirs \ - -text $d \ - -padx 5 -pady 5 \ - -justify left \ - -anchor w \ - -borderwidth 1 \ - -relief solid + paddedlabel $w.dirs -text $d pack $w.dirs -side top -fill x -padx 5 -pady 5 menu $w.ctxm -tearoff 0
lib/blame.tcl +11 -11
@@ -61,7 +61,7 @@ field tooltip_timer {} ; # Current timer event for our tooltip field tooltip_commit {} ; # Commit(s) in tooltip constructor new {i_commit i_path i_jump} { - global cursor_ptr M1B M1T have_tk85 + global cursor_ptr M1B M1T have_tk85 use_ttk NS variable active_color variable group_colors
@@ -73,15 +73,15 @@ constructor new {i_commit i_path i_jump} { set font_w [font measure font_diff "0"] - frame $w.header -background gold - label $w.header.commit_l \ + gold_frame $w.header + tlabel $w.header.commit_l \ -text [mc "Commit:"] \ -background gold \ -foreground black \ -anchor w \ -justify left set w_back $w.header.commit_b - label $w_back \ + tlabel $w_back \ -image ::blame::img_back_arrow \ -borderwidth 0 \ -relief flat \
@@ -94,20 +94,20 @@ constructor new {i_commit i_path i_jump} { [cb _history_menu] } " - label $w.header.commit \ + tlabel $w.header.commit \ -textvariable @commit \ -background gold \ -foreground black \ -anchor w \ -justify left - label $w.header.path_l \ + tlabel $w.header.path_l \ -text [mc "File:"] \ -background gold \ -foreground black \ -anchor w \ -justify left set w_path $w.header.path - label $w_path \ + tlabel $w_path \ -background gold \ -foreground black \ -anchor w \
@@ -209,10 +209,10 @@ constructor new {i_commit i_path i_jump} { set w_columns [list $w_amov $w_asim $w_line $w_file] - scrollbar $w.file_pane.out.sbx \ + ${NS}::scrollbar $w.file_pane.out.sbx \ -orient h \ -command [list $w_file xview] - scrollbar $w.file_pane.out.sby \ + ${NS}::scrollbar $w.file_pane.out.sby \ -orient v \ -command [list scrollbar2many $w_columns yview] eval grid $w_columns $w.file_pane.out.sby -sticky nsew
@@ -254,10 +254,10 @@ constructor new {i_commit i_path i_jump} { -background $active_color \ -font font_ui $w_cviewer tag raise sel - scrollbar $w.file_pane.cm.sbx \ + ${NS}::scrollbar $w.file_pane.cm.sbx \ -orient h \ -command [list $w_cviewer xview] - scrollbar $w.file_pane.cm.sby \ + ${NS}::scrollbar $w.file_pane.cm.sby \ -orient v \ -command [list $w_cviewer yview] pack $w.file_pane.cm.sby -side right -fill y
lib/branch_checkout.tcl +12 -8
@@ -10,21 +10,24 @@ field opt_fetch 1; # refetch tracking branch if used? field opt_detach 0; # force a detached head case? constructor dialog {} { - make_toplevel top w + global use_ttk NS + make_dialog top w + wm withdraw $w wm title $top [append "[appname] ([reponame]): " [mc "Checkout Branch"]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" } - label $w.header -text [mc "Checkout Branch"] -font font_uibold + ${NS}::label $w.header -text [mc "Checkout Branch"] \ + -font font_uibold -anchor center pack $w.header -side top -fill x - frame $w.buttons - button $w.buttons.create -text [mc Checkout] \ + ${NS}::frame $w.buttons + ${NS}::button $w.buttons.create -text [mc Checkout] \ -default active \ -command [cb _checkout] pack $w.buttons.create -side right - button $w.buttons.cancel -text [mc Cancel] \ + ${NS}::button $w.buttons.cancel -text [mc Cancel] \ -command [list destroy $w] pack $w.buttons.cancel -side right -padx 5 pack $w.buttons -side bottom -fill x -pady 10 -padx 10
@@ -33,14 +36,14 @@ constructor dialog {} { $w_rev bind_listbox <Double-Button-1> [cb _checkout] pack $w.rev -anchor nw -fill both -expand 1 -pady 5 -padx 5 - labelframe $w.options -text [mc Options] + ${NS}::labelframe $w.options -text [mc Options] - checkbutton $w.options.fetch \ + ${NS}::checkbutton $w.options.fetch \ -text [mc "Fetch Tracking Branch"] \ -variable @opt_fetch pack $w.options.fetch -anchor nw - checkbutton $w.options.detach \ + ${NS}::checkbutton $w.options.detach \ -text [mc "Detach From Local Branch"] \ -variable @opt_detach pack $w.options.detach -anchor nw
@@ -50,6 +53,7 @@ constructor dialog {} { bind $w <Visibility> [cb _visible] bind $w <Key-Escape> [list destroy $w] bind $w <Key-Return> [cb _checkout]\;break + wm deiconify $w tkwait window $w }
lib/branch_create.tcl +23 -22
111 lines not on this page · raw message
lib/branch_delete.tcl +12 -12
@@ -9,41 +9,40 @@ field w_check ; # revision picker for merge test field w_delete ; # delete button constructor dialog {} { - global current_branch + global current_branch use_ttk NS - make_toplevel top w + make_dialog top w + wm withdraw $w wm title $top [append "[appname] ([reponame]): " [mc "Delete Branch"]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" } - label $w.header -text [mc "Delete Local Branch"] -font font_uibold + ${NS}::label $w.header -text [mc "Delete Local Branch"] \ + -font font_uibold -anchor center pack $w.header -side top -fill x - frame $w.buttons + ${NS}::frame $w.buttons set w_delete $w.buttons.delete - button $w_delete \ + ${NS}::button $w_delete \ -text [mc Delete] \ -default active \ -state disabled \ -command [cb _delete] pack $w_delete -side right - button $w.buttons.cancel \ + ${NS}::button $w.buttons.cancel \ -text [mc Cancel] \ -command [list destroy $w] pack $w.buttons.cancel -side right -padx 5 pack $w.buttons -side bottom -fill x -pady 10 -padx 10 - labelframe $w.list -text [mc "Local Branches"] + ${NS}::labelframe $w.list -text [mc "Local Branches"] set w_heads $w.list.l - listbox $w_heads \ + slistbox $w_heads \ -height 10 \ -width 70 \ -selectmode extended \ - -exportselection false \ - -yscrollcommand [list $w.list.sby set] - scrollbar $w.list.sby -command [list $w.list.l yview] - pack $w.list.sby -side right -fill y + -exportselection false pack $w.list.l -side left -fill both -expand 1 pack $w.list -fill both -expand 1 -pady 5 -padx 5
@@ -67,6 +66,7 @@ constructor dialog {} { " bind $w <Key-Escape> [list destroy $w] bind $w <Key-Return> [cb _delete]\;break + wm deiconify $w tkwait window $w }
lib/branch_rename.tcl +19 -13
@@ -8,9 +8,10 @@ field oldname field newname constructor dialog {} { - global current_branch + global current_branch use_ttk NS - make_toplevel top w + make_dialog top w + wm withdraw $w wm title $top [append "[appname] ([reponame]): " [mc "Rename Branch"]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
@@ -19,27 +20,31 @@ constructor dialog {} { set oldname $current_branch set newname [get_config gui.newbranchtemplate] - label $w.header -text [mc "Rename Branch"] -font font_uibold + ${NS}::label $w.header -text [mc "Rename Branch"]\ + -font font_uibold -anchor center pack $w.header -side top -fill x - frame $w.buttons - button $w.buttons.rename -text [mc Rename] \ + ${NS}::frame $w.buttons + ${NS}::button $w.buttons.rename -text [mc Rename] \ -default active \ -command [cb _rename] pack $w.buttons.rename -side right - button $w.buttons.cancel -text [mc Cancel] \ + ${NS}::button $w.buttons.cancel -text [mc Cancel] \ -command [list destroy $w] pack $w.buttons.cancel -side right -padx 5 pack $w.buttons -side bottom -fill x -pady 10 -padx 10 - frame $w.rename - label $w.rename.oldname_l -text [mc "Branch:"] - eval tk_optionMenu $w.rename.oldname_m @oldname [load_all_heads] + ${NS}::frame $w.rename + ${NS}::label $w.rename.oldname_l -text [mc "Branch:"] + if {$use_ttk} { + ttk::combobox $w.rename.oldname_m -textvariable @oldname \ + -values [load_all_heads] -state readonly + } else { + eval tk_optionMenu $w.rename.oldname_m @oldname [load_all_heads] + } - label $w.rename.newname_l -text [mc "New Name:"] - entry $w.rename.newname_t \ - -borderwidth 1 \ - -relief sunken \ + ${NS}::label $w.rename.newname_l -text [mc "New Name:"] + ${NS}::entry $w.rename.newname_t \ -width 40 \ -textvariable @newname \ -validate key \
@@ -60,6 +65,7 @@ constructor dialog {} { $w.rename.newname_t icursor end focus $w.rename.newname_t " + wm deiconify $w tkwait window $w }
lib/browser.tcl +23 -18
100 lines not on this page · raw message
lib/choose_font.tcl +17 -14
@@ -17,6 +17,7 @@ variable all_families [list] ; # All fonts known to Tk constructor pick {path title a_family a_size} { variable all_families + global use_ttk NS set v_family $a_family set v_size $a_size
@@ -27,29 +28,30 @@ constructor pick {path title a_family a_size} { set f_family $pv_family set f_size $pv_size - make_toplevel top w + make_dialog top w + wm withdraw $top wm title $top "[appname] ([reponame]): $title" wm geometry $top "+[winfo rootx $path]+[winfo rooty $path]" - label $w.header -text $title -font font_uibold + ${NS}::label $w.header -text $title -font font_uibold -anchor center pack $w.header -side top -fill x - frame $w.buttons - button $w.buttons.select \ + ${NS}::frame $w.buttons + ${NS}::button $w.buttons.select \ -text [mc Select] \ -default active \ -command [cb _select] - button $w.buttons.cancel \ + ${NS}::button $w.buttons.cancel \ -text [mc Cancel] \ -command [list destroy $w] pack $w.buttons.select -side right pack $w.buttons.cancel -side right -padx 5 pack $w.buttons -side bottom -fill x -pady 10 -padx 10 - frame $w.inner + ${NS}::frame $w.inner - frame $w.inner.family - label $w.inner.family.l \ + ${NS}::frame $w.inner.family + ${NS}::label $w.inner.family.l \ -text [mc "Font Family"] \ -anchor w set w_family $w.inner.family.v
@@ -64,16 +66,16 @@ constructor pick {path title a_family a_size} { -height 10 \ -yscrollcommand [list $w.inner.family.sby set] rmsel_tag $w_family - scrollbar $w.inner.family.sby -command [list $w_family yview] + ${NS}::scrollbar $w.inner.family.sby -command [list $w_family yview] pack $w.inner.family.l -side top -fill x pack $w.inner.family.sby -side right -fill y pack $w_family -fill both -expand 1 - frame $w.inner.size - label $w.inner.size.l \ + ${NS}::frame $w.inner.size + ${NS}::label $w.inner.size.l \ -text [mc "Font Size"] \ -anchor w - spinbox $w.inner.size.v \ + tspinbox $w.inner.size.v \ -textvariable @f_size \ -from 2 -to 80 -increment 1 \ -width 3
@@ -86,8 +88,8 @@ constructor pick {path title a_family a_size} { grid columnconfigure $w.inner 0 -weight 1 pack $w.inner -fill both -expand 1 -padx 5 -pady 5 - frame $w.example - label $w.example.l \ + ${NS}::frame $w.example + ${NS}::label $w.example.l \ -text [mc "Font Example"] \ -anchor w set w_example $w.example.t
@@ -129,6 +131,7 @@ constructor pick {path title a_family a_size} { grab $w focus $w " + wm deiconify $w tkwait window $w }
lib/choose_repository.tcl +44 -50
219 lines not on this page · raw message
lib/choose_rev.tcl +28 -23
140 lines not on this page · raw message
lib/class.tcl +7 -0
@@ -134,6 +134,13 @@ proc delete_this {{t {}}} { if {[namespace exists $t]} {namespace delete $t} } +proc make_dialog {t w args} { + upvar $t top $w pfx this this + global use_ttk + uplevel [linsert $args 0 make_toplevel $t $w] + pave_toplevel $pfx +} + proc make_toplevel {t w args} { upvar $t top $w pfx this this
lib/console.tcl +9 -8
@@ -27,20 +27,20 @@ constructor embed {path title} { } method _init {} { - global M1B + global M1B use_ttk NS if {$is_toplevel} { - make_toplevel top w -autodelete 0 + make_dialog top w -autodelete 0 wm title $top "[appname] ([reponame]): $t_short" } else { - frame $w + ${NS}::frame $w } set console_cr 1.0 set w_t $w.m.t - frame $w.m - label $w.m.l1 \ + ${NS}::frame $w.m + ${NS}::label $w.m.l1 \ -textvariable @t_long \ -anchor w \ -justify left \
@@ -78,7 +78,7 @@ method _init {} { " if {$is_toplevel} { - button $w.ok -text [mc "Close"] \ + ${NS}::button $w.ok -text [mc "Close"] \ -state disabled \ -command [list destroy $w] pack $w.ok -side bottom -anchor e -pady 10 -padx 10
@@ -206,13 +206,14 @@ method done {ok} { } method _sb_set {sb orient first last} { + global NS if {![winfo exists $sb]} { if {$first == $last || ($first == 0 && $last == 1)} return if {$orient eq {h}} { - scrollbar $sb -orient h -command [list $w_t xview] + ${NS}::scrollbar $sb -orient h -command [list $w_t xview] pack $sb -fill x -side bottom -before $w_t } else { - scrollbar $sb -orient v -command [list $w_t yview] + ${NS}::scrollbar $sb -orient v -command [list $w_t yview] pack $sb -fill y -side right -before $w_t } }
lib/database.tcl +10 -10
@@ -2,6 +2,7 @@ # Copyright (C) 2006, 2007 Shawn Pearce proc do_stats {} { + global use_ttk NS set fd [git_read count-objects -v] while {[gets $fd line] > 0} { if {[regexp {^([^:]+): (\d+)$} $line _ name value]} {
@@ -21,24 +22,22 @@ proc do_stats {} { } set w .stats_view - toplevel $w + Dialog $w + wm withdraw $w wm geometry $w "+[winfo rootx .]+[winfo rooty .]" - label $w.header -text [mc "Database Statistics"] - pack $w.header -side top -fill x - - frame $w.buttons -border 1 - button $w.buttons.close -text [mc Close] \ + ${NS}::frame $w.buttons + ${NS}::button $w.buttons.close -text [mc Close] \ -default active \ -command [list destroy $w] - button $w.buttons.gc -text [mc "Compress Database"] \ + ${NS}::button $w.buttons.gc -text [mc "Compress Database"] \ -default normal \ -command "destroy $w;do_gc" pack $w.buttons.close -side right pack $w.buttons.gc -side left pack $w.buttons -side bottom -fill x -pady 10 -padx 10 - frame $w.stat -borderwidth 1 -relief solid + ${NS}::labelframe $w.stat -text [mc "Database Statistics"] foreach s { {count {mc "Number of loose objects"}} {size {mc "Disk space used by loose objects"} { KiB}}
@@ -55,8 +54,8 @@ proc do_stats {} { set value "$value[lindex $s 2]" } - label $w.stat.l_$name -text "$label:" -anchor w - label $w.stat.v_$name -text $value -anchor w + ${NS}::label $w.stat.l_$name -text "$label:" -anchor w + ${NS}::label $w.stat.v_$name -text $value -anchor w grid $w.stat.l_$name $w.stat.v_$name -sticky we -padx {0 5} } pack $w.stat -pady 10 -padx 10
@@ -65,6 +64,7 @@ proc do_stats {} { bind $w <Key-Escape> [list destroy $w] bind $w <Key-Return> [list destroy $w] wm title $w [append "[appname] ([reponame]): " [mc "Database Statistics"]] + wm deiconify $w tkwait window $w }
lib/error.tcl +9 -6
@@ -71,11 +71,13 @@ proc ask_popup {msg} { } proc hook_failed_popup {hook msg {is_fatal 1}} { + global use_ttk NS set w .hookfail - toplevel $w + Dialog $w + wm withdraw $w - frame $w.m - label $w.m.l1 -text "$hook hook failed:" \ + ${NS}::frame $w.m + ${NS}::label $w.m.l1 -text "$hook hook failed:" \ -anchor w \ -justify left \ -font font_uibold
@@ -87,10 +89,10 @@ proc hook_failed_popup {hook msg {is_fatal 1}} { -width 80 -height 10 \ -font font_diff \ -yscrollcommand [list $w.m.sby set] - scrollbar $w.m.sby -command [list $w.m.t yview] + ${NS}::scrollbar $w.m.sby -command [list $w.m.t yview] pack $w.m.l1 -side top -fill x if {$is_fatal} { - label $w.m.l2 \ + ${NS}::label $w.m.l2 \ -text [mc "You must correct the above errors before committing."] \ -anchor w \ -justify left \
@@ -104,7 +106,7 @@ proc hook_failed_popup {hook msg {is_fatal 1}} { $w.m.t insert 1.0 $msg $w.m.t conf -state disabled - button $w.ok -text OK \ + ${NS}::button $w.ok -text OK \ -width 15 \ -command "destroy $w" pack $w.ok -side bottom -anchor e -pady 10 -padx 10
@@ -112,5 +114,6 @@ proc hook_failed_popup {hook msg {is_fatal 1}} { bind $w <Visibility> "grab $w; focus $w" bind $w <Key-Return> "destroy $w" wm title $w [strcat "[appname] ([reponame]): " [mc "error"]] + wm deiconify $w tkwait window $w }
lib/index.tcl +8 -5
@@ -8,26 +8,28 @@ proc _delete_indexlock {} { } proc _close_updateindex {fd after} { + global use_ttk NS fconfigure $fd -blocking 1 if {[catch {close $fd} err]} { set w .indexfried - toplevel $w + Dialog $w + wm withdraw $w wm title $w [strcat "[appname] ([reponame]): " [mc "Index Error"]] wm geometry $w "+[winfo rootx .]+[winfo rooty .]" set s [mc "Updating the Git index failed. A rescan will be automatically started to resynchronize git-gui."] text $w.msg -yscrollcommand [list $w.vs set] \ -width [string length $s] -relief flat \ -borderwidth 0 -highlightthickness 0 \ - -background [$w cget -background] + -background [get_bg_color $w] $w.msg tag configure bold -font font_uibold -justify center - scrollbar $w.vs -command [list $w.msg yview] + ${NS}::scrollbar $w.vs -command [list $w.msg yview] $w.msg insert end $s bold \n\n$err {} $w.msg configure -state disabled - button $w.continue \ + ${NS}::button $w.continue \ -text [mc "Continue"] \ -command [list destroy $w] - button $w.unlock \ + ${NS}::button $w.unlock \ -text [mc "Unlock Index"] \ -command "destroy $w; _delete_indexlock" grid $w.msg - $w.vs -sticky news
@@ -40,6 +42,7 @@ proc _close_updateindex {fd after} { grab $w focus %W " + wm deiconify $w tkwait window $w $::main_status stop
lib/merge.tcl +7 -7
@@ -139,14 +139,14 @@ method _finish {cons ok} { constructor dialog {} { global current_branch - global M1B + global M1B use_ttk NS if {![_can_merge $this]} { delete_this return } - make_toplevel top w + make_dialog top w wm title $top [append "[appname] ([reponame]): " [mc "Merge"]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]"
@@ -154,21 +154,21 @@ constructor dialog {} { set _start [cb _start] - label $w.header \ + ${NS}::label $w.header \ -text [mc "Merge Into %s" $current_branch] \ -font font_uibold pack $w.header -side top -fill x - frame $w.buttons - button $w.buttons.visualize \ + ${NS}::frame $w.buttons + ${NS}::button $w.buttons.visualize \ -text [mc Visualize] \ -command [cb _visualize] pack $w.buttons.visualize -side left - button $w.buttons.merge \ + ${NS}::button $w.buttons.merge \ -text [mc Merge] \ -command $_start pack $w.buttons.merge -side right - button $w.buttons.cancel \ + ${NS}::button $w.buttons.cancel \ -text [mc "Cancel"] \ -command [cb _cancel] pack $w.buttons.cancel -side right -padx 5
lib/option.tcl +37 -30
142 lines not on this page · raw message
lib/remote_add.tcl +18 -19
@@ -13,45 +13,43 @@ field location {}; # location of the remote the user has chosen field opt_action fetch; # action to do after registering the remote locally constructor dialog {} { - global repo_config + global repo_config use_ttk NS - make_toplevel top w + make_dialog top w + wm withdraw $top wm title $top [append "[appname] ([reponame]): " [mc "Add Remote"]] if {$top ne {.}} { wm geometry $top "+[winfo rootx .]+[winfo rooty .]" } - label $w.header -text [mc "Add New Remote"] -font font_uibold + ${NS}::label $w.header -text [mc "Add New Remote"] \ + -font font_uibold -anchor center pack $w.header -side top -fill x - frame $w.buttons - button $w.buttons.create -text [mc Add] \ + ${NS}::frame $w.buttons + ${NS}::button $w.buttons.create -text [mc Add] \ -default active \ -command [cb _add] pack $w.buttons.create -side right - button $w.buttons.cancel -text [mc Cancel] \ + ${NS}::button $w.buttons.cancel -text [mc Cancel] \ -command [list destroy $w] pack $w.buttons.cancel -side right -padx 5 pack $w.buttons -side bottom -fill x -pady 10 -padx 10 - labelframe $w.desc -text [mc "Remote Details"] + ${NS}::labelframe $w.desc -text [mc "Remote Details"] - label $w.desc.name_l -text [mc "Name:"] + ${NS}::label $w.desc.name_l -text [mc "Name:"] set w_name $w.desc.name_t - entry $w_name \ - -borderwidth 1 \ - -relief sunken \ + ${NS}::entry $w_name \ -width 40 \ -textvariable @name \ -validate key \ -validatecommand [cb _validate_name %d %S] grid $w.desc.name_l $w_name -sticky we -padx {0 5} - label $w.desc.loc_l -text [mc "Location:"] + ${NS}::label $w.desc.loc_l -text [mc "Location:"] set w_loc $w.desc.loc_t - entry $w_loc \ - -borderwidth 1 \ - -relief sunken \ + ${NS}::entry $w_loc \ -width 40 \ -textvariable @location grid $w.desc.loc_l $w_loc -sticky we -padx {0 5}
@@ -59,21 +57,21 @@ constructor dialog {} { grid columnconfigure $w.desc 1 -weight 1 pack $w.desc -anchor nw -fill x -pady 5 -padx 5 - labelframe $w.action -text [mc "Further Action"] + ${NS}::labelframe $w.action -text [mc "Further Action"] - radiobutton $w.action.fetch \ + ${NS}::radiobutton $w.action.fetch \ -text [mc "Fetch Immediately"] \ -value fetch \ -variable @opt_action pack $w.action.fetch -anchor nw - radiobutton $w.action.push \ + ${NS}::radiobutton $w.action.push \ -text [mc "Initialize Remote Repository and Push"] \ -value push \ -variable @opt_action pack $w.action.push -anchor nw - radiobutton $w.action.none \ + ${NS}::radiobutton $w.action.none \ -text [mc "Do Nothing Else Now"] \ -value none \ -variable @opt_action
@@ -85,6 +83,7 @@ constructor dialog {} { bind $w <Visibility> [cb _visible] bind $w <Key-Escape> [list destroy $w] bind $w <Key-Return> [cb _add]\;break + wm deiconify $top tkwait window $w }
lib/remote_branch_delete.tcl +26 -25
113 lines not on this page · raw message
lib/search.tcl +6 -5
@@ -14,15 +14,16 @@ field smarktop field smarkbot constructor new {i_w i_text args} { + global use_ttk NS set w $i_w set ctext $i_text - frame $w - label $w.l -text [mc Find:] + ${NS}::frame $w + ${NS}::label $w.l -text [mc Find:] entry $w.ent -textvariable ${__this}::searchstring -background lightgreen - button $w.bn -text [mc Next] -command [cb find_next] - button $w.bp -text [mc Prev] -command [cb find_prev] - checkbutton $w.cs -text [mc Case-Sensitive] \ + ${NS}::button $w.bn -text [mc Next] -command [cb find_next] + ${NS}::button $w.bp -text [mc Prev] -command [cb find_prev] + ${NS}::checkbutton $w.cs -text [mc Case-Sensitive] \ -variable ${__this}::casesensitive -command [cb _incrsearch] pack $w.l -side left pack $w.cs -side right
lib/sshkey.tcl +11 -9
@@ -15,7 +15,7 @@ proc find_ssh_key {} { } proc do_ssh_key {} { - global sshkey_title have_tk85 sshkey_fd + global sshkey_title have_tk85 sshkey_fd use_ttk NS set w .sshkey_dialog if {[winfo exists $w]} {
@@ -23,7 +23,7 @@ proc do_ssh_key {} { return } - toplevel $w + Dialog $w wm transient $w . set finfo [find_ssh_key]
@@ -35,9 +35,9 @@ proc do_ssh_key {} { set gen_state disabled } - frame $w.header -relief flat - label $w.header.lbl -textvariable sshkey_title -anchor w - button $w.header.gen -text [mc "Generate Key"] \ + ${NS}::frame $w.header + ${NS}::label $w.header.lbl -textvariable sshkey_title -anchor w + ${NS}::button $w.header.gen -text [mc "Generate Key"] \ -command [list make_ssh_key $w] -state $gen_state pack $w.header.lbl -side left -expand 1 -fill x pack $w.header.gen -side right
@@ -46,14 +46,16 @@ proc do_ssh_key {} { text $w.contents -width 60 -height 10 -wrap char -relief sunken pack $w.contents -fill both -expand 1 if {$have_tk85} { - $w.contents configure -inactiveselectbackground darkblue + set clr darkblue + if {$use_ttk} { set clr [ttk::style lookup . -selectbackground] } + $w.contents configure -inactiveselectbackground $clr } - frame $w.buttons - button $w.buttons.close -text [mc Close] \ + ${NS}::frame $w.buttons + ${NS}::button $w.buttons.close -text [mc Close] \ -default active -command [list destroy $w] pack $w.buttons.close -side right - button $w.buttons.copy -text [mc "Copy To Clipboard"] \ + ${NS}::button $w.buttons.copy -text [mc "Copy To Clipboard"] \ -command [list tk_textCopy $w.contents] pack $w.buttons.copy -side left pack $w.buttons -side bottom -fill x -pady 5 -padx 5
lib/status_bar.tcl +8 -6
@@ -13,14 +13,16 @@ field units {}; # unit of progress field meter {}; # current core git progress meter (if active) constructor new {path} { + global use_ttk NS set w $path set w_l $w.l set w_c $w.c - frame $w \ - -borderwidth 1 \ - -relief sunken - label $w_l \ + ${NS}::frame $w + if {!$use_ttk} { + $w configure -borderwidth 1 -relief sunken + } + ${NS}::label $w_l \ -textvariable @status \ -anchor w \ -justify left
@@ -41,8 +43,8 @@ constructor two_line {path} { set w_l $w.l set w_c $w.c - frame $w - label $w_l \ + ${NS}::frame $w + ${NS}::label $w_l \ -textvariable @status \ -anchor w \ -justify left
lib/themed.tcl new file +174 -0
174 lines not on this page · raw message
lib/tools_dlg.tcl +40 -47
221 lines not on this page · raw message
lib/transport.tcl +26 -22
110 lines not on this page · raw message
Signature · 1 line
1.6.6
Heya,
Quoted 2 lines · Pat Thoyts
There is a screenshot of this running on Windows 7 at
http://www.patthoyts.tk/screenshots/git-gui-win32.png
Wow, that looks a lot better than what we have currently.
Quoted 1 line
26 files changed, 697 insertions(+), 453 deletions(-)
But that's a huge change, is there no way to make it smaller (spliti t up in multiple patches), so that it's easier to review?
Signature · 3 lines
Cheers, Sverre Rabbelier
Quoted 10 lines · Pat Thoyts
This patch enables the use of themed Tk widgets with Tk 8.5 and above. These make a significant difference on Windows in making the application appear native. On Windows and MacOSX ttk defaults to the native look as much as possible. On X11 the user may select a theme using the TkTheme XRDB resource class by adding an line to the .Xresources file. The set of installed theme names is available using the Tk command '
ttk::themes'. The default on X11 is similar to the current un-themed style - a kind of thin bordered motif look.
Quoted 6 lines
A new git config variable 'gui.usettk' may be set to disable this if the user prefers the classic Tk look. Using Tk 8.4 will also avoid the use of themed widgets as these are only available since 8.5.
Some support is included for Tk 8.6 features (themed spinbox and native font chooser for MacOSX and Windows).
Thanks. I've been running with this pretty much all day today; it seems sane. I'll probably push it shortly.
Signature · 1 line
Shawn.
Hi,
Quoted 15 lines · Shawn O. Pearce
Quoted 14 lines · Pat Thoyts
This patch enables the use of themed Tk widgets with Tk 8.5 and above. These make a significant difference on Windows in making the application appear native. On Windows and MacOSX ttk defaults to the native look as much as possible. On X11 the user may select a theme using the TkTheme XRDB resource class by adding an line to the .Xresources file. The set of installed theme names is available using the Tk command '
ttk::themes'. The default on X11 is similar to the current un-themed style - a kind of thin bordered motif look.A new git config variable 'gui.usettk' may be set to disable this if the user prefers the classic Tk look. Using Tk 8.4 will also avoid the use of themed widgets as these are only available since 8.5.
Quoted 5 lines
Quoted 2 lines
Some support is included for Tk 8.6 features (themed spinbox and native font chooser for MacOSX and Windows).
Thanks. I've been running with this pretty much all day today; it seems sane. I'll probably push it shortly.
Thanks. Can you notify me when you do so? I will merge into 4msysgit.git directly then.
Ciao,
Dscho
Quoted 4 lines · Johannes Schindelin
Quoted 3 lines · Shawn O. Pearce
Quoted 2 lines · Pat Thoyts
This patch enables the use of themed Tk widgets with Tk 8.5 and above.
...
Quoted 5 lines
Quoted 2 lines
Thanks. I've been running with this pretty much all day today; it seems sane. I'll probably push it shortly.
Thanks. Can you notify me when you do so? I will merge into 4msysgit.git directly then.
Its already there.
Signature · 1 line
Shawn.
Quoted 5 lines · Shawn O. Pearce
Quoted 4 lines · Johannes Schindelin
Quoted 3 lines · Shawn O. Pearce
Quoted 2 lines · Pat Thoyts
This patch enables the use of themed Tk widgets with Tk 8.5 and above.
Quoted 8 lines
...
Quoted 5 lines
Quoted 2 lines
Thanks. I've been running with this pretty much all day today; it seems sane. I'll probably push it shortly.
Thanks. Can you notify me when you do so? I will merge into 4msysgit.git directly then.
Its already there.
Is that an insn for me to pull?
Quoted 10 lines · Junio C Hamano
Quoted 9 lines · Shawn O. Pearce
Quoted 4 lines · Johannes Schindelin
Quoted 3 lines · Shawn O. Pearce
Quoted 2 lines · Pat Thoyts
This patch enables the use of themed Tk widgets with Tk 8.5 and above.
...
Quoted 3 lines
Quoted 2 lines
Thanks. I've been running with this pretty much all day today; it seems sane. I'll probably push it shortly.
Quoted 6 lines
Quoted 4 lines
Quoted 2 lines
Thanks. Can you notify me when you do so? I will merge into 4msysgit.git directly then.
Its already there.
Is that an insn for me to pull?
You can pull my master branch if you like; though I wouldn't suggest it for anything other than 'next' yet:
The following changes since commit 87cd09f43e56de5235d09aef3ff5d840419fef49:
Giuseppe Bilotta (1):
git-gui: work from the .git dir
are available in the git repository at:
git://git.spearce.org/git-gui.git master
Christian Stimming (1):
git-gui: Update German translation (12 new or changed strings).
Giuseppe Bilotta (4):
git-gui: handle non-standard worktree locations
git-gui: handle bare repos correctly
git-gui: update shortcut tools to use _gitworktree
git-gui: set GIT_DIR and GIT_WORK_TREE after setup
Jeff Epler (1):
git-gui: Support applying a range of changes at once
Jens Lehmann (2):
git-gui: Use git diff --submodule when available
git-gui: Add a special diff popup menu for submodules
Pat Thoyts (1):
git-gui: use themed tk widgets with Tk 8.5
Peter Oberndorfer (1):
git-gui: use different icon for new and modified files in the index
Shawn O. Pearce (2):
git-gui: Remove unused icon file_parttick
git-gui: Update translation template
git-gui.sh | 397 +++++++++++++++------ lib/about.tcl | 37 +-- lib/blame.tcl | 22 +- lib/branch_checkout.tcl | 20 +- lib/branch_create.tcl | 45 ++-- lib/branch_delete.tcl | 24 +- lib/branch_rename.tcl | 32 +- lib/browser.tcl | 41 ++- lib/choose_font.tcl | 31 +- lib/choose_repository.tcl | 94 +++--- lib/choose_rev.tcl | 51 ++-- lib/class.tcl | 7 + lib/console.tcl | 17 +- lib/database.tcl | 20 +- lib/diff.tcl | 259 ++++++++------ lib/error.tcl | 15 +- lib/index.tcl | 13 +- lib/merge.tcl | 14 +- lib/option.tcl | 67 ++-- lib/remote_add.tcl | 37 +- lib/remote_branch_delete.tcl | 51 ++-- lib/search.tcl | 11 +- lib/shortcut.tcl | 7 +- lib/sshkey.tcl | 20 +- lib/status_bar.tcl | 14 +- lib/themed.tcl | 174 +++++++++ lib/tools_dlg.tcl | 87 ++--- lib/transport.tcl | 48 ++-- po/de.po | 824 ++++++++++++++++++++++-------------------- po/git-gui.pot | 584 +++++++++++++++-------------- 30 files changed, 1772 insertions(+), 1291 deletions(-) create mode 100644 lib/themed.tcl
Signature · 1 line
Shawn.
PATCH 1/1 git gui: Quote git path properly when starting another gui in a submodule
In do_git_gui() the path of the git executable has to be put into a list, otherwise calling it will fail when when spaces are present in its path.
---
Am 28.01.2010 03:56, schrieb Shawn O. Pearce:
Quoted 3 lines
Jens Lehmann (2):
git-gui: Use git diff --submodule when available
git-gui: Add a special diff popup menu for submodules
Today Heiko reported me this bug I introduced with the second patch. Sorry for the hassle.
git-gui/git-gui.sh | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
git-gui/git-gui.sh +1 -1
@@ -2000,7 +2000,7 @@ proc do_git_gui {} { # -- Always start git gui through whatever we were loaded with. This # lets us bypass using shell process on Windows systems. # - set exe [_which git] + set exe [list [_which git]] if {$exe eq {}} { error_popup [mc "Couldn't find git gui in PATH"] } else {
Signature · 1 line
1.7.0.rc0.163.g808df.dirty
Shawn O. Pearce
AppliedRe: [PATCH] git gui: Quote git path properly when starting another gui in a submodule
Quoted 8 lines · Jens Lehmann
In
do_git_gui()the path of the git executable has to be put into a list, otherwise calling it will fail when when spaces are present in its path.Reported-by Heiko Voigt <[email protected]>Signed-off-by Jens Lehmann <[email protected]>---
Quoted 7 lines
Am 28.01.2010 03:56, schrieb Shawn O. Pearce:
Quoted 3 lines
Jens Lehmann (2):
git-gui: Use git diff --submodule when available
git-gui: Add a special diff popup menu for submodulesToday Heiko reported me this bug I introduced with the second patch. Sorry for the hassle.
Applied, thanks.
Signature · 1 line
Shawn.
Quoted 1 line · Pat Thoyts
This patch enables the use of themed Tk widgets with Tk 8.5 and above.
With this patch, the sizes of the file lists are not restored correctly anymore. The upper list (unstage files) always appears in the "native" size. A fix for this would be appreciated.
However!
It has always been the case that the (restored) height and width of the list of unstaged files could not be larger than the "original" window size (i.e., the size before the stored geometry is applied).
Appearently, the pane widgets restrict its sash sizes to their total size, and the total window geometry was applied only after sash sizes were set.
As a work-around for this problem I have modified git-gui to start up with a much larger list of unstaged files (400x600 or so) so that the initial "original" size is also much larger, and then the restored size can be anything smaller than [this size plus the size of the widgets around it]. This work-around does not work anymore. The list of unstaged files always opens with the same (tiny) size. .git/config contains this after exiting git-gui:
[gui]
geometry = 1183x906+88+32 184 204
wmstate = normal
The sash sizes are stored correctly in .git/config, but are not restored. Perhaps you have an idea to fix this?
(I'm on Windows, btw.)
-- Hannes
Quoted 7 lines · Johannes Sixt
Quoted 1 line · Pat Thoyts
This patch enables the use of themed Tk widgets with Tk 8.5 and above.
With this patch, the sizes of the file lists are not restored correctly anymore. The upper list (unstage files) always appears in the "native" size. A fix for this would be appreciated.
The ttk::panedwindow has different sash handling to the non themed version. I'll try and get onto this soon.
Signature · 2 lines
Pat Thoyts http://www.patthoyts.tk/ PGP fingerprint 2C 6E 98 07 2C 59 C8 97 10 CE 11 E6 04 E0 B9 DD