︙ | | |
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
-
+
|
#
#----------------------------------------------------------------------
# $Revision$
#----------------------------------------------------------------------
# the next line restarts using tclsh \
exec tclsh "$0" "$@"
package require Tcl 8.4
package require Tcl 8.5
# Stop Tk from meddling with the command line by copying it first.
set ::eskil(argv) $::argv
set ::eskil(argc) $::argc
set ::argv {}
set ::argc 0
|
︙ | | |
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
-
+
|
# Reportedly, the ttk scrollbar looks bad on Aqua
if {[tk windowingsystem] ne "aqua"} {
interp alias {} scrollbar {} ttk::scrollbar
}
# Provide a ttk-friendly toplevel, fixing background and menubar
if {[info commands ttk::toplevel] eq ""} {
proc ttk::toplevel {w args} {
eval [linsert $args 0 tk::toplevel $w]
tk::toplevel $w {*}$args
place [ttk::frame $w.tilebg] -x 0 -y 0 -relwidth 1 -relheight 1
# Menubar looks out of place on linux. This adjusts the background
# Which is enough to make it reasonable.
set bg [ttk::style configure . -background]
option add *Menubutton.background $bg
option add *Menu.background $bg
return $w
|
︙ | | |
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
-
+
|
}
# Circumvent a bug in ttk::entry that "xview end" does not work.
method xview {args} {
if {[llength $args] == 1} {
set ix [lindex $args 0]
$hull xview [$hull index $ix]
} else {
eval $hull xview $args
$hull xview {*}$args
}
}
}
interp alias {} toplevel {} ttk::toplevel
}
|
︙ | | |
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
|
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
|
-
+
|
set ::diff(filterflag) 0
}
if {$Pref(parse) != 0} {
set opts $Pref(ignore)
if {$Pref(nocase)} {lappend opts -nocase}
if {$Pref(lineparsewords)} {lappend opts -words}
set res [eval DiffUtil::diffStrings $opts \$line1 \$line2]
set res [DiffUtil::diffStrings {*}$opts $line1 $line2]
set dotag 0
set n [expr {[llength $res] / 2}]
$::widgets($top,wLine1) insert end [myFormL $doingLine1] \
"hl$::HighLightCount change"
$::widgets($top,wLine2) insert end [myFormL $doingLine2] \
"hl$::HighLightCount change"
set new1 "new1"
|
︙ | | |
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
|
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
|
-
-
+
+
|
}
if {[info exists ::diff($top,rightFileDiff)]} {
set dFile2 $::diff($top,rightFileDiff)
} else {
set dFile2 $::diff($top,rightFile)
}
set differr [catch {eval DiffUtil::diffFiles $opts \
\$dFile1 \$dFile2} diffres]
set differr [catch {DiffUtil::diffFiles {*}$opts \
$dFile1 $dFile2} diffres]
# In conflict mode we can use the diff information collected when
# parsing the conflict file. This makes sure the blocks in the conflict
# file become change-blocks during merge.
if {$::diff($top,mode) eq "conflict" && $::diff($top,modetype) eq "Pure"} {
set diffres $::diff($top,conflictDiff)
}
|
︙ | | |
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
|
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
|
-
+
-
+
|
proc myOpenFile {args} {
# When in tutorial mode, make sure the Tcl file dialog is used
# to be able to access the files in a starkit.
if {[info exists ::diff(tutorial)] && $::diff(tutorial)} {
# Only do this if tk_getOpenFile is not a proc.
if {[info procs tk_getOpenFile] eq ""} {
# If there is any problem, call the real one
if {![catch {set res [eval ::tk::dialog::file:: open $args]}]} {
if {![catch {set res [::tk::dialog::file:: open {*}$args]}]} {
return $res
}
}
}
return [eval tk_getOpenFile $args]
return [tk_getOpenFile {*}$args]
}
proc doOpenLeft {top {forget 0}} {
if {!$forget && [info exists ::diff($top,leftDir)]} {
set initDir $::diff($top,leftDir)
} elseif {[info exists ::diff($top,rightDir)]} {
set initDir $::diff($top,rightDir)
|
︙ | | |
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
|
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
|
-
+
|
}
default {
return -code error "Bad scrolldirection \"$dir\""
}
}
ttk::frame $w
eval [list $class $w.s] $args
$class $w.s {*}$args
# Move border properties to frame
set bw [$w.s cget -borderwidth]
set relief [$w.s cget -relief]
$w configure -relief $relief -borderwidth $bw
$w.s configure -borderwidth 0
|
︙ | | |
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
|
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
|
-
+
|
set wl $::widgets($top,wLine$n)
if {$hl eq ""} {
set range [$wd tag ranges sel]
} else {
set range [$wl tag ranges hl$::diff($top,separate$n)]
}
set text [eval $wd get $range]
set text [$wd get {*}$range]
set ::diff($top,separatetext$n) $text
# Get the lines involved in the display
set from [lindex $range 0]
set to [lindex $range 1]
foreach {froml fromi} [split $from "."] break
foreach {tol toi} [split $to "."] break
|
︙ | | |
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
|
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
|
-
+
|
}
# Emulate a label that:
# 1 : Displays the right part of the text if there isn't enough room
# 2 : Justfify text to the left if there is enough room.
# 3 : Does not try to allocate space according to its contents
proc fileLabel {w args} {
ttk::entryX $w -style TLabel
eval $w configure $args
$w configure {*}$args
$w configure -takefocus 0 -state readonly ;#-readonlybackground $bg
set i [lsearch $args -textvariable]
if {$i >= 0} {
set var [lindex $args [expr {$i + 1}]]
uplevel \#0 "trace variable $var w \
|
︙ | | |
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
|
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
|
-
+
|
# Build the main window
proc makeDiffWin {{top {}}} {
global Pref tcl_platform debug
if {$top != "" && [winfo exists $top] && [winfo toplevel $top] eq $top} {
# Reuse the old window
eval destroy [winfo children $top]
destroy {*}[winfo children $top]
} else {
# Locate a free toplevel name
if {[info exists ::diff(topDiffCnt)]} {
set t $::diff(topDiffCnt)
} else {
set t 0
}
|
︙ | | |
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
|
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
|
-
+
-
+
|
text $top.ft1.tl -height $Pref(lines) -width 5 -wrap none \
-font myfont -borderwidth 0 -padx 0 -highlightthickness 0 \
-takefocus 0
text $top.ft1.tt -height $Pref(lines) -width $Pref(linewidth) -wrap none \
-xscrollcommand [list $top.sbx1 set] \
-font myfont -borderwidth 0 -padx 1 \
-highlightthickness 0
catch {$top.ft1.tt configure -tabstyle wordprocessor} ;# 8.5
$top.ft1.tt configure -tabstyle wordprocessor
tk::frame $top.ft1.f -width 2 -height 2 -background lightgray
pack $top.ft1.tl -side left -fill y
pack $top.ft1.f -side left -fill y
pack $top.ft1.tt -side right -fill both -expand 1
scrollbar $top.sby -orient vertical
scrollbar $top.sbx1 -orient horizontal -command [list $top.ft1.tt xview]
set ::widgets($top,wLine1) $top.ft1.tl
set ::widgets($top,wDiff1) $top.ft1.tt
ttk::frame $top.ft2 -borderwidth 2 -relief sunken
text $top.ft2.tl -height $Pref(lines) -width 5 -wrap none \
-font myfont -borderwidth 0 -padx 0 -highlightthickness 0 \
-takefocus 0
text $top.ft2.tt -height $Pref(lines) -width $Pref(linewidth) -wrap none \
-xscrollcommand [list $top.sbx2 set] \
-font myfont -borderwidth 0 -padx 1 \
-highlightthickness 0
catch {$top.ft2.tt configure -tabstyle wordprocessor} ;# 8.5
$top.ft2.tt configure -tabstyle wordprocessor
tk::frame $top.ft2.f -width 2 -height 2 -background lightgray
pack $top.ft2.tl -side left -fill y
pack $top.ft2.f -side left -fill y
pack $top.ft2.tt -side right -fill both -expand 1
scrollbar $top.sbx2 -orient horizontal -command [list $top.ft2.tt xview]
set ::widgets($top,wLine2) $top.ft2.tl
set ::widgets($top,wDiff2) $top.ft2.tt
|
︙ | | |