Merge branch 'jn/gitweb-our-squelch'
[gitweb.git] / git-gui / lib / index.tcl
index 3c1fce7475d362d1880d915ff4bdf168fda28593..e9db0c49895fbebdf8dbe7c0472546a05fea26a0 100644 (file)
@@ -8,36 +8,41 @@ 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 .]"
-               pack [label $w.msg \
-                       -justify left \
-                       -anchor w \
-                       -text [strcat \
-                               [mc "Updating the Git index failed.  A rescan will be automatically started to resynchronize git-gui."] \
-                               "\n\n$err"] \
-                       ] -anchor w
-
-               frame $w.buttons
-               button $w.buttons.continue \
+               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 [get_bg_color $w]
+               $w.msg tag configure bold -font font_uibold -justify center
+               ${NS}::scrollbar $w.vs -command [list $w.msg yview]
+               $w.msg insert end $s bold \n\n$err {}
+               $w.msg configure -state disabled
+
+               ${NS}::button $w.continue \
                        -text [mc "Continue"] \
                        -command [list destroy $w]
-               pack $w.buttons.continue -side right -padx 5
-               button $w.buttons.unlock \
+               ${NS}::button $w.unlock \
                        -text [mc "Unlock Index"] \
                        -command "destroy $w; _delete_indexlock"
-               pack $w.buttons.unlock -side right
-               pack $w.buttons -side bottom -fill x -pady 10 -padx 10
+               grid $w.msg - $w.vs -sticky news
+               grid $w.unlock $w.continue - -sticky se -padx 2 -pady 2
+               grid columnconfigure $w 0 -weight 1
+               grid rowconfigure $w 0 -weight 1
 
                wm protocol $w WM_DELETE_WINDOW update
-               bind $w.buttons.continue <Visibility> "
+               bind $w.continue <Visibility> "
                        grab $w
-                       focus $w.buttons.continue
+                       focus %W
                "
+               wm deiconify $w
                tkwait window $w
 
                $::main_status stop
@@ -99,6 +104,7 @@ proc write_update_indexinfo {fd pathList totalCnt batch after} {
                switch -glob -- [lindex $s 0] {
                A? {set new _O}
                M? {set new _M}
+               T_ {set new _T}
                D_ {set new _D}
                D? {set new _?}
                ?? {continue}
@@ -162,6 +168,8 @@ proc write_update_index {fd pathList totalCnt batch after} {
                ?D {set new D_}
                _O -
                AM {set new A_}
+               _T {set new T_}
+               _U -
                U? {
                        if {[file exists $path]} {
                                set new M_
@@ -231,6 +239,7 @@ proc write_checkout_index {fd pathList totalCnt batch after} {
                switch -glob -- [lindex $file_states($path) 0] {
                U? {continue}
                ?M -
+               ?T -
                ?D {
                        puts -nonewline $fd "[encoding convertto $path]\0"
                        display_file $path ?_
@@ -252,6 +261,7 @@ proc unstage_helper {txt paths} {
                switch -glob -- [lindex $file_states($path) 0] {
                A? -
                M? -
+               T_ -
                D? {
                        lappend pathList $path
                        if {$path eq $current_diff_path} {
@@ -293,10 +303,18 @@ proc add_helper {txt paths} {
        set after {}
        foreach path $paths {
                switch -glob -- [lindex $file_states($path) 0] {
+               _U -
+               U? {
+                       if {$path eq $current_diff_path} {
+                               unlock_index
+                               merge_stage_workdir $path
+                               return
+                       }
+               }
                _O -
                ?M -
                ?D -
-               U? {
+               ?T {
                        lappend pathList $path
                        if {$path eq $current_diff_path} {
                                set after {reshow_diff;}
@@ -336,6 +354,7 @@ proc do_add_all {} {
                switch -glob -- [lindex $file_states($path) 0] {
                U? {continue}
                ?M -
+               ?T -
                ?D {lappend paths $path}
                }
        }
@@ -353,6 +372,7 @@ proc revert_helper {txt paths} {
                switch -glob -- [lindex $file_states($path) 0] {
                U? {continue}
                ?M -
+               ?T -
                ?D {
                        lappend pathList $path
                        if {$path eq $current_diff_path} {
@@ -409,11 +429,11 @@ proc do_revert_selection {} {
 
        if {[array size selected_paths] > 0} {
                revert_helper \
-                       {Reverting selected files} \
+                       [mc "Reverting selected files"] \
                        [array names selected_paths]
        } elseif {$current_diff_path ne {}} {
                revert_helper \
-                       "Reverting [short_path $current_diff_path]" \
+                       [mc "Reverting %s" [short_path $current_diff_path]] \
                        [list $current_diff_path]
        }
 }