Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Added some balloonhelp. New fields for revision numbers. Added a bit spacing around buttons. Polished menus and tab traversal. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d24dc8fb3c438694868a9976418cf39b |
User & Date: | peter 2003-08-13 20:47:05.000 |
Context
2003-08-19
| ||
22:12 | Major overhaul to support multiple windows. check-in: 70203b9736 user: peter tags: trunk | |
2003-08-13
| ||
20:47 | Added some balloonhelp. New fields for revision numbers. Added a bit spacing around buttons. Polished menus and tab traversal. check-in: d24dc8fb3c user: peter tags: trunk | |
2003-08-07
| ||
20:31 | A few changes to textSearch's API. check-in: eb9b864868 user: peter tags: trunk | |
Changes
Changes to src/eskil.tcl.
︙ | ︙ | |||
14 15 16 17 18 19 20 | #---------------------------------------------------------------------- # the next line restarts using wish \ exec wish "$0" "$@" package provide app-diff 1.0 package require Tk catch {package require textSearch} | > > > > | > | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #---------------------------------------------------------------------- # the next line restarts using wish \ exec wish "$0" "$@" package provide app-diff 1.0 package require Tk catch {package require textSearch} if {[catch {package require psballoon}]} { proc addBalloon {args} {} } else { namespace import -force psballoon::addBalloon } set debug 0 set diffver "Version 1.9.8 2003-08-13" set tmpcnt 0 set tmpfiles {} set thisscript [file join [pwd] [info script]] set thisdir [file dirname $thisscript] set ::diff(cvsExists) [expr {![string equal [auto_execok cvs] ""]}] set ::diff(diffexe) diff set ::diff(thisexe) [list [info nameofexecutable] $thisscript] |
︙ | ︙ | |||
913 914 915 916 917 918 919 | incr mapMax $n1 } } } } proc enableRedo {} { | | | | 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 | incr mapMax $n1 } } } } proc enableRedo {} { .mf.m entryconfigure 0 -state normal } proc disableRedo {} { .mf.m entryconfigure 0 -state disabled } proc busyCursor {} { global oldcursor oldcursor2 if {![info exists oldcursor]} { set oldcursor [. cget -cursor] set oldcursor2 [.ft1.tt cget -cursor] |
︙ | ︙ | |||
1272 1273 1274 1275 1276 1277 1278 | } # Prepare for RCS/CVS diff. Checkout copies of the versions needed. proc prepareRCS {} { global diff Pref set revs {} | < < < | < | < < < < < < < | > > | 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 | } # Prepare for RCS/CVS diff. Checkout copies of the versions needed. proc prepareRCS {} { global diff Pref set revs {} # Search for revision options if {$Pref(doptrev1) != ""} { lappend revs $Pref(doptrev1) } if {$Pref(doptrev2) != ""} { lappend revs $Pref(doptrev2) } switch [llength $revs] { 0 { # Compare local file with latest version. set diff(leftFile) [tmpfile] set diff(rightLabel) $diff(RCSFile) |
︙ | ︙ | |||
1342 1343 1344 1345 1346 1347 1348 | catch {exec co -p$r1 [file nativename $diff(RCSFile)] > $diff(leftFile)} catch {exec co -p$r2 [file nativename $diff(RCSFile)] > $diff(rightFile)} } } } # Make sure labels are updated before processing starts update idletasks | < < < | 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 | catch {exec co -p$r1 [file nativename $diff(RCSFile)] > $diff(leftFile)} catch {exec co -p$r2 [file nativename $diff(RCSFile)] > $diff(rightFile)} } } } # Make sure labels are updated before processing starts update idletasks } # Clean up after a RCS/CVS diff. proc cleanupRCS {} { global diff Pref cleartmp set diff(rightFile) $diff(RCSFile) set diff(leftFile) $diff(RCSFile) } # Prepare for a diff by creating needed temporary files proc prepareFiles {} { if {$::diff(mode) == "RCS" || $::diff(mode) == "CVS"} { prepareRCS } elseif {[string match "conflict*" $::diff(mode)]} { |
︙ | ︙ | |||
2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 | } # Build the main window proc makeDiffWin {} { global Pref tcl_platform debug eval destroy [winfo children .] wm protocol . WM_DELETE_WINDOW cleanupAndExit frame .f grid .f - - - -row 0 -sticky news menubutton .mf -text File -underline 0 -menu .mf.m menu .mf.m if {$debug == 1} { .mf.m add command -label "Redo Diff" -underline 5 -command doDiff } else { .mf.m add command -label "Redo Diff" -underline 5 -command doDiff \ -state disabled } .mf.m add separator | > | | | | | | | | | | | | | | | | 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 | } # Build the main window proc makeDiffWin {} { global Pref tcl_platform debug eval destroy [winfo children .] option add *Menu.tearOff 0 wm protocol . WM_DELETE_WINDOW cleanupAndExit frame .f grid .f - - - -row 0 -sticky news menubutton .mf -text File -underline 0 -menu .mf.m menu .mf.m if {$debug == 1} { .mf.m add command -label "Redo Diff" -underline 5 -command doDiff } else { .mf.m add command -label "Redo Diff" -underline 5 -command doDiff \ -state disabled } .mf.m add separator .mf.m add command -label "Open Both..." -underline 0 -command {openBoth 0} .mf.m add command -label "Open Both (forget)..." -command {openBoth 1} .mf.m add command -label "Open Left File..." -command openLeft .mf.m add command -label "Open Right File..." -command openRight .mf.m add command -label "Open Conflict File..." -command openConflict .mf.m add command -label "Open Patch File..." -command openPatch if {$tcl_platform(platform) == "unix"} { .mf.m add command -label "RCSDiff..." -underline 0 -command openRCS } if {$::diff(cvsExists)} { .mf.m add command -label "CVSDiff..." -underline 0 -command openCVS } .mf.m add separator .mf.m add command -label "Print..." -underline 0 -command doPrint .mf.m add separator .mf.m add command -label "Quit" -underline 0 -command cleanupAndExit menubutton .mo -text "Options" -underline 0 -menu .mo.m menu .mo.m .mo.m add cascade -label "Font" -underline 0 -menu .mo.mf .mo.m add cascade -label "Ignore" -underline 0 -menu .mo.mi .mo.m add cascade -label "Parse" -underline 0 -menu .mo.mp .mo.m add command -label "Colours..." -underline 0 -command makePrefWin .mo.m add checkbutton -label "Diffs only" -variable Pref(onlydiffs) if {$tcl_platform(platform) == "windows"} { .mo.m add checkbutton -label "Force crlf translation" \ -variable Pref(crlf) } .mo.m add separator .mo.m add command -label "Save default" -command saveOptions menu .mo.mf .mo.mf add command -label "Select..." -command makeFontWin .mo.mf add radiobutton -label 6 -variable Pref(fontsize) -value 6 \ -command chFont .mo.mf add radiobutton -label 7 -variable Pref(fontsize) -value 7 \ -command chFont .mo.mf add radiobutton -label 8 -variable Pref(fontsize) -value 8 \ -command chFont .mo.mf add radiobutton -label 9 -variable Pref(fontsize) -value 9 \ |
︙ | ︙ | |||
2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 | -variable Pref(extralineparse) .mo.mp add checkbutton -label "Mark last" -variable Pref(marklast) menubutton .ms -text Search -underline 0 -menu .ms.m menu .ms.m if {[info proc textSearch::searchMenu] != ""} { textSearch::searchMenu .ms.m } menubutton .mh -text Help -underline 0 -menu .mh.m menu .mh.m .mh.m add command -label "Help" -command makeHelpWin .mh.m add command -label "About" -command makeAboutWin | > > > > > > > > > > > > > | | | | < < | > | > > > > | 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 | -variable Pref(extralineparse) .mo.mp add checkbutton -label "Mark last" -variable Pref(marklast) menubutton .ms -text Search -underline 0 -menu .ms.m menu .ms.m if {[info proc textSearch::searchMenu] != ""} { textSearch::searchMenu .ms.m } else { .ms.m add command -label "Text search not available" -state disabled } menubutton .mh -text Help -underline 0 -menu .mh.m menu .mh.m .mh.m add command -label "Help" -command makeHelpWin .mh.m add command -label "About" -command makeAboutWin label .lo -text "Diff Options" addBalloon .lo "Options passed to the external diff.\nNote\ that options for ignoring whitespace are available in\ the Options menu." entry .eo -width 6 -textvariable Pref(dopt) label .lr1 -text "Rev 1" addBalloon .lr1 "Revision number for CVS/RCS diff." entry .er1 -width 6 -textvariable Pref(doptrev1) label .lr2 -text "Rev 2" addBalloon .lr2 "Revision number for CVS/RCS diff." entry .er2 -width 6 -textvariable Pref(doptrev2) button .bfp -text "Prev Diff" -relief raised -command {findDiff -1} \ -underline 0 -padx 15 button .bfn -text "Next Diff" -relief raised -command {findDiff 1} \ -underline 0 -padx 15 bind . <Alt-n> {findDiff 1} bind . <Alt-p> {findDiff -1} catch {font delete myfont} font create myfont -family $Pref(fontfamily) -size $Pref(fontsize) #label .l1 -textvariable diff(leftLabel) -anchor e -width 10 #label .l2 -textvariable diff(rightLabel) -anchor e -width 10 fileLabel .l1 -textvariable diff(leftLabel) fileLabel .l2 -textvariable diff(rightLabel) frame .ft1 -borderwidth 2 -relief sunken text .ft1.tl -height 40 -width 5 -wrap none -yscrollcommand my_yscroll \ -font myfont -borderwidth 0 -padx 0 -highlightthickness 0 \ -takefocus 0 text .ft1.tt -height 40 -width 80 -wrap none -yscrollcommand my_yscroll \ -xscrollcommand ".sbx1 set" -font myfont -borderwidth 0 -padx 1 \ -highlightthickness 0 frame .ft1.f -width 2 -height 2 -bg lightgray pack .ft1.tl -side left -fill y pack .ft1.f -side left -fill y pack .ft1.tt -side right -fill both -expand 1 scrollbar .sby -orient vertical -command "my_yview" scrollbar .sbx1 -orient horizontal -command ".ft1.tt xview" frame .ft2 -borderwidth 2 -relief sunken text .ft2.tl -height 60 -width 5 -wrap none -yscrollcommand my_yscroll \ -font myfont -borderwidth 0 -padx 0 -highlightthickness 0 \ -takefocus 0 text .ft2.tt -height 60 -width 80 -wrap none -yscrollcommand my_yscroll \ -xscrollcommand ".sbx2 set" -font myfont -borderwidth 0 -padx 1 \ -highlightthickness 0 frame .ft2.f -width 2 -height 2 -bg lightgray pack .ft2.tl -side left -fill y pack .ft2.f -side left -fill y pack .ft2.tt -side right -fill both -expand 1 scrollbar .sbx2 -orient horizontal -command ".ft2.tt xview" # Set up a tag for incremental search bindings if {[info proc textSearch::enableSearch] != ""} { textSearch::enableSearch .ft1.tt -label ::diff(isearchLabel) textSearch::enableSearch .ft2.tt -label ::diff(isearchLabel) } label .le -textvariable ::diff(eqLabel) -width 1 addBalloon .le "* means external diff is running.\n= means files do\ not differ.\nBlank means files differ." label .ls -width 1 -pady 0 -padx 0 -textvariable ::diff(isearchLabel) addBalloon .ls "Incremental search indicator" canvas .c -width 6 -bd 0 -selectborderwidth 0 -highlightthickness 0 applyColor .ft1.tt tag configure last -underline 1 .ft2.tt tag configure last -underline 1 foreach w {.ft1.tt .ft2.tt} { |
︙ | ︙ | |||
2905 2906 2907 2908 2909 2910 2911 | grid .l1 .le - .l2 -row 1 -sticky news grid .ft1 .c .sby .ft2 -row 2 -sticky news grid .sbx1 .ls - .sbx2 -row 3 -sticky news grid columnconfigure . {0 3} -weight 1 grid rowconfigure . 2 -weight 1 grid .c -pady [expr {[.sby cget -width] + 2}] | > | > | | | 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 | grid .l1 .le - .l2 -row 1 -sticky news grid .ft1 .c .sby .ft2 -row 2 -sticky news grid .sbx1 .ls - .sbx2 -row 3 -sticky news grid columnconfigure . {0 3} -weight 1 grid rowconfigure . 2 -weight 1 grid .c -pady [expr {[.sby cget -width] + 2}] grid .ls -sticky "" image create photo map .c create image 0 0 -anchor nw -image map bind .c <Configure> {drawMap %h} bind . <Key-Up> {scroll -1 u} bind . <Key-Down> {scroll 1 u} bind . <Key-Prior> {scroll -1 p} bind . <Key-Next> {scroll 1 p} bind . <Key-Escape> {focus .} pack .mf .mo .ms .mh -in .f -side left pack .bfn -in .f -side right -padx {3 6} pack .bfp .er2 .lr2 .er1 .lr1 .eo .lo -in .f -side right -padx 3 if {$debug == 1} { menubutton .md -text Debug -menu .md.m menu .md.m if {$tcl_platform(platform) == "windows"} { .md.m add checkbutton -label Console -variable consolestate \ -onvalue show -offvalue hide \ -command {console $consolestate} .md.m add separator } |
︙ | ︙ | |||
3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 | set diff(conflictFile) "" set diff(limitlines) 0 if {$argc == 0} return set files "" set nextArg "" foreach arg $argv { if {$nextArg != ""} { if {$nextArg == "mergeFile"} { set diff(mergeFile) [file join [pwd] $arg] } elseif {$nextArg == "printFile"} { set diff(printFile) [file join [pwd] $arg] } elseif {$nextArg == "revision"} { | > | > | 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 | set diff(conflictFile) "" set diff(limitlines) 0 if {$argc == 0} return set files "" set nextArg "" set revNo 1 foreach arg $argv { if {$nextArg != ""} { if {$nextArg == "mergeFile"} { set diff(mergeFile) [file join [pwd] $arg] } elseif {$nextArg == "printFile"} { set diff(printFile) [file join [pwd] $arg] } elseif {$nextArg == "revision"} { set Pref(doptrev$revNo) $arg incr revNo } elseif {$nextArg == "limitlines"} { set diff(limitlines) $arg } set nextArg "" continue } if {$arg == "-w"} { |
︙ | ︙ | |||
3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 | } else { tk appname Diff } } elseif {$arg == "-o"} { set nextArg mergeFile } elseif {$arg == "-r"} { set nextArg revision } elseif {[string range $arg 0 0] == "-"} { set Pref(dopt) "$Pref(dopt) $arg" } else { set apa [glob -nocomplain [file join [pwd] $arg]] if {$apa == ""} { puts "Ignoring argument: $arg" } else { | > > > | 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 | } else { tk appname Diff } } elseif {$arg == "-o"} { set nextArg mergeFile } elseif {$arg == "-r"} { set nextArg revision } elseif {[string range $arg 0 1] == "-r"} { set Pref(doptrev$revNo) [string range $arg 2 end] incr revNo } elseif {[string range $arg 0 0] == "-"} { set Pref(dopt) "$Pref(dopt) $arg" } else { set apa [glob -nocomplain [file join [pwd] $arg]] if {$apa == ""} { puts "Ignoring argument: $arg" } else { |
︙ | ︙ | |||
3642 3643 3644 3645 3646 3647 3648 | if {[catch {set ch [open "~/.diffrc" w]} err]} { tk_messageBox -icon error -title "File error" -message \ "Error when trying to save preferences:\n$err" return } foreach i [array names Pref] { | | > > | 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 | if {[catch {set ch [open "~/.diffrc" w]} err]} { tk_messageBox -icon error -title "File error" -message \ "Error when trying to save preferences:\n$err" return } foreach i [array names Pref] { if {![string match "dopt*" $i]} { puts $ch [list set Pref($i) $Pref($i)] } } close $ch } proc getOptions {} { global Pref set Pref(fontsize) 9 set Pref(fontfamily) courier set Pref(ignore) "-b" set Pref(dopt) "" set Pref(doptrev1) "" set Pref(doptrev2) "" set Pref(parse) 2 set Pref(lineparsewords) "0" set Pref(extralineparse) 1 set Pref(colorchange) red set Pref(colornew1) darkgreen set Pref(colornew2) blue set Pref(bgchange) #ffe0e0 |
︙ | ︙ |