Eskil

Check-in [b793bf2638]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:More key bindings on toplevel
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: b793bf263886bb4ab3bf6b3cdc11a88ff700ab64
User & Date: peter 2015-03-01 23:47:08.341
Context
2015-03-06
01:17
Mac support check-in: 8d2623486a user: peter tags: trunk
2015-03-01
23:47
More key bindings on toplevel check-in: b793bf2638 user: peter tags: trunk
22:46
Adapted to newer tclkit for win check-in: 5658a0d62e user: peter tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/eskil.tcl.
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776




2777



2778
2779
2780
2781
2782
2783
2784
            }
            continue
        }
    }
}

# Scroll text windows
proc scrollText {top n what} {
    # Do not scroll if focus is in a text window.
    # This is for scroll bindings in the toplevel.
    if {[winfo class [focus]] != "Text"} {




        $::widgets($top,wDiff1) yview scroll $n $what



    }
}

# 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







|


|
>
>
>
>
|
>
>
>







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
            }
            continue
        }
    }
}

# Scroll text windows
proc scrollText {top args} {
    # Do not scroll if focus is in a text window.
    # This is for scroll bindings in the toplevel.
    set class [winfo class [focus]]
    if {$class in "Text TEntry"} {
        return
    }

    $::widgets($top,wDiff1) {*}$args
    if {[string index [lindex $args 0] 0] eq "x"} {
        # x commands go to both since that is not synched
        $::widgets($top,wDiff2) {*}$args
    }
}

# 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
3225
3226
3227
3228
3229
3230
3231

3232

3233

3234

3235










3236

3237
3238
3239
3240
3241
3242
3243
    grid $top.ft1  $map    $top.sby $top.ft2  -row 2 -sticky news
    grid $top.sbx1 $top.ls -        $top.sbx2 -row 3 -sticky news
    grid columnconfigure $top {0 3} -weight 1
    grid rowconfigure $top 2 -weight 1
    grid $map -pady [expr {[winfo reqwidth $top.sby] - 2}]
    grid $top.ls -sticky ""


    bind $top <Key-Up>    [list scrollText $top -1 u]

    bind $top <Key-Down>  [list scrollText $top  1 u]

    bind $top <Key-Prior> [list scrollText $top -1 pa]

    bind $top <Key-Next>  [list scrollText $top  1 pa]










    bind $top <Key-Escape> [list focus $top]

    if {$::eskil(debug) == 0} {
        bind $top <Key> "backDoor $top %A"
    }

    pack $top.bfn -in $top.f -side right -padx {3 6}
    pack $top.bfp $top.bcm $top.brv $top.blg \
            $top.er2 $top.lr2 $top.er1 $top.lr1 \







>
|
>
|
>
|
>
|
>
>
>
>
>
>
>
>
>
>

>







3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
    grid $top.ft1  $map    $top.sby $top.ft2  -row 2 -sticky news
    grid $top.sbx1 $top.ls -        $top.sbx2 -row 3 -sticky news
    grid columnconfigure $top {0 3} -weight 1
    grid rowconfigure $top 2 -weight 1
    grid $map -pady [expr {[winfo reqwidth $top.sby] - 2}]
    grid $top.ls -sticky ""

    # Allow scrolling from keys at toplevel
    bind $top <Key-Up>    [list scrollText $top yview scroll -1 u]
    bind $top <Key-k>     [list scrollText $top yview scroll -1 u]
    bind $top <Key-Down>  [list scrollText $top yview scroll  1 u]
    bind $top <Key-j>     [list scrollText $top yview scroll  1 u]
    bind $top <Key-Prior> [list scrollText $top yview scroll -1 pa]
    bind $top <Key-b>     [list scrollText $top yview scroll -1 pa]
    bind $top <Key-Next>  [list scrollText $top yview scroll  1 pa]
    bind $top <Key-space> [list scrollText $top yview scroll  1 pa]
    bind $top <Key-Left>  [list scrollText $top xview scroll -5 u]
    bind $top <Key-h>     [list scrollText $top xview scroll -5 u]
    bind $top <Key-Right> [list scrollText $top xview scroll  5 u]
    bind $top <Key-l>     [list scrollText $top xview scroll  5 u]
    bind $top <Key-Home>  [list scrollText $top yview moveto 0]
    bind $top <Key-g>     [list scrollText $top yview moveto 0]
    bind $top <Key-End>   [list scrollText $top yview moveto 1]

    # Go out to toplevel with escape, whereever you are
    bind $top <Key-Escape> [list focus $top]

    if {$::eskil(debug) == 0} {
        bind $top <Key> "backDoor $top %A"
    }

    pack $top.bfn -in $top.f -side right -padx {3 6}
    pack $top.bfp $top.bcm $top.brv $top.blg \
            $top.er2 $top.lr2 $top.er1 $top.lr1 \
Changes to src/vcsvfs.tcl.
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
    while {[llength $todo] > 0} {
        set line [lindex $todo 0]
        set todo [lrange $todo 1 end]
        # Expected format in a line:
        # B baseline
        # F tests/left.txt c1572b3809a1ba6ab2de9307c96b1cfeefdcf0ba
        # D 2015-02-23T23:30:07.509
        if {[regexp {B (.*)} $line -> bUuid]} {
            # Pick up a baseline manifest and parse it first
            set artifact [exec fossil artifact $bUuid]
            set todo [concat [split $artifact \n] $todo]
            continue
        }
        if {[regexp {D (.*)} $line -> cTime]} {
            # Remove decimals and middle T
            regsub {\.\d+} $cTime "" cTime
            regsub {T} $cTime " " cTime
            set commitTime [clock scan $cTime -gmt 1]
        }
        if {[regexp {F (\S+) (\S+)} $line -> fName fSha]} {
            # File names can have spaces, coded with \s
            set fName [string map {\\s " "} $fName]
            dict set finfo $fName sha $fSha
            dict set finfo $fName mtimestr $cTime ;# Anything
            dict set finfo $fName type file
            dict set finfo $fName isfile 1
            dict set finfo $fName isdir 0







|

|



|





|







50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
    while {[llength $todo] > 0} {
        set line [lindex $todo 0]
        set todo [lrange $todo 1 end]
        # Expected format in a line:
        # B baseline
        # F tests/left.txt c1572b3809a1ba6ab2de9307c96b1cfeefdcf0ba
        # D 2015-02-23T23:30:07.509
        if {[regexp {^B (.*)} $line -> bUuid]} {
            # Pick up a baseline manifest and parse it first
            set artifact [exec fossil "artifact" $bUuid]
            set todo [concat [split $artifact \n] $todo]
            continue
        }
        if {[regexp {^D (.*)} $line -> cTime]} {
            # Remove decimals and middle T
            regsub {\.\d+} $cTime "" cTime
            regsub {T} $cTime " " cTime
            set commitTime [clock scan $cTime -gmt 1]
        }
        if {[regexp {^F (\S+) (\S+)} $line -> fName fSha]} {
            # File names can have spaces, coded with \s
            set fName [string map {\\s " "} $fName]
            dict set finfo $fName sha $fSha
            dict set finfo $fName mtimestr $cTime ;# Anything
            dict set finfo $fName type file
            dict set finfo $fName isfile 1
            dict set finfo $fName isdir 0