!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/7.3.33 

uname -a: Linux web25.us.cloudlogin.co 5.10.237-xeon-hst #1 SMP Mon May 5 15:10:04 UTC 2025 x86_64 

uid=233359(alpastrology) gid=888(tty) groups=888(tty),33(tape) 

Safe-mode: OFF (not secure)

/usr/share/tk8.6/   drwxr-xr-x
Free 6181.9 GB of 6263.1 GB (98.7%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     iconlist.tcl (15.6 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# iconlist.tcl
#
#    Implements the icon-list megawidget used in the "Tk" standard file
#    selection dialog boxes.
#
# Copyright (c) 1994-1998 Sun Microsystems, Inc.
# Copyright (c) 2009 Donal K. Fellows
#
# See the file "license.terms" for information on usage and redistribution of
# this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# API Summary:
#    tk::IconList <path> ?<option> <value>? ...
#    <path> add <imageName> <itemList>
#    <path> cget <option>
#    <path> configure ?<option>? ?<value>? ...
#    <path> deleteall
#    <path> destroy
#    <path> get <itemIndex>
#    <path> index <index>
#    <path> invoke
#    <path> see <index>
#    <path> selection anchor ?<int>?
#    <path> selection clear <first> ?<last>?
#    <path> selection get
#    <path> selection includes <item>
#    <path> selection set <first> ?<last>?

package require Tk 8.6

::tk::Megawidget create ::tk::IconList ::tk::FocusableWidget {
    variable w canvas sbar accel accelCB fill font index \
    itemList itemsPerColumn list maxIH maxIW maxTH maxTW noScroll \
    numItems oldX oldY options rect selected selection textList
    constructor args {
    next {*}$args
    set accelCB {}
    }
    destructor {
    my Reset
    next
    }

    method GetSpecs {} {
    concat [next] {
        {-command "" "" ""}
        {-font "" "" "TkIconFont"}
        {-multiple "" "" "0"}
    }
    }

    # ----------------------------------------------------------------------

    method index i {
    if {![info exist list]} {
        set list {}
    }
    switch -regexp -- $i {
        "^-?[0-9]+$" {
        if {$i < 0} {
            set i 0
        }
        if {$i >= [llength $list]} {
            set i [expr {[llength $list] - 1}]
        }
        return $i
        }
        "^anchor$" {
        return $index(anchor)
        }
        "^end$" {
        return [llength $list]
        }
        "@-?[0-9]+,-?[0-9]+" {
        scan $i "@%d,%d" x y
        set item [$canvas find closest \
            [$canvas canvasx $x] [$canvas canvasy $y]]
        return [lindex [$canvas itemcget $item -tags] 1]
        }
    }
    }

    method selection {op args} {
    switch -exact -- $op {
        anchor {
        if {[llength $args] == 1} {
            set index(anchor) [$w index [lindex $args 0]]
        } else {
            return $index(anchor)
        }
        }
        clear {
        switch [llength $args] {
            2 {
            lassign $args first last
            }
            1 {
            set first [set last [lindex $args 0]]
            }
            default {
            return -code error -errorcode {TCL WRONGARGS} \
                "wrong # args: should be\
                \"[lrange [info level 0] 0 1] first ?last?\""
            }
        }

        set first [$w index $first]
        set last [$w index $last]
        if {$first > $last} {
            set tmp $first
            set first $last
            set last $tmp
        }
        set ind 0
        foreach item $selection {
            if {$item >= $first} {
            set first $ind
            break
            }
            incr ind
        }
        set ind [expr {[llength $selection] - 1}]
        for {} {$ind >= 0} {incr ind -1} {
            set item [lindex $selection $ind]
            if {$item <= $last} {
            set last $ind
            break
            }
        }

        if {$first > $last} {
            return
        }
        set selection [lreplace $selection $first $last]
        event generate $w <<ListboxSelect>>
        my DrawSelection
        }
        get {
        return $selection
        }
        includes {
        return [expr {[lindex $args 0] in $selection}]
        }
        set {
        switch [llength $args] {
            2 {
            lassign $args first last
            }
            1 {
            set first [set last [lindex $args 0]]
            }
            default {
            return -code error -errorcode {TCL WRONGARGS} \
                "wrong # args: should be\
                \"[lrange [info level 0] 0 1] first ?last?\""
            }
        }

        set first [$w index $first]
        set last [$w index $last]
        if {$first > $last} {
            set tmp $first
            set first $last
            set last $tmp
        }

        for {set i $first} {$i <= $last} {incr i} {
            lappend selection $i
        }
        set selection [lsort -integer -unique $selection]
        event generate $w <<ListboxSelect>>
        my DrawSelection
        }
    }
    }

    method get item {
    set rTag [lindex $list $item 2]
    lassign $itemList($rTag) iTag tTag text serial
    return $text
    }

    #    Deletes all the items inside the canvas subwidget and reset the
    #    iconList's state.
    #
    method deleteall {} {
    $canvas delete all
    unset -nocomplain selected rect list itemList
    set maxIW 1
    set maxIH 1
    set maxTW 1
    set maxTH 1
    set numItems 0
    set noScroll 1
    set selection {}
    set index(anchor) ""
    $sbar set 0.0 1.0
    $canvas xview moveto 0
    }

    #    Adds an icon into the IconList with the designated image and text
    #
    method add {image items} {
    foreach text $items {
        set iID item$numItems
        set iTag [$canvas create image 0 0 -image $image -anchor nw \
              -tags [list icon $numItems $iID]]
        set tTag [$canvas create text  0 0 -text  $text  -anchor nw \
              -font $options(-font) -fill $fill \
              -tags [list text $numItems $iID]]
        set rTag [$canvas create rect  0 0 0 0 -fill "" -outline "" \
              -tags [list rect $numItems $iID]]

        lassign [$canvas bbox $iTag] x1 y1 x2 y2
        set iW [expr {$x2 - $x1}]
        set iH [expr {$y2 - $y1}]
        if {$maxIW < $iW} {
        set maxIW $iW
        }
        if {$maxIH < $iH} {
        set maxIH $iH
        }

        lassign [$canvas bbox $tTag] x1 y1 x2 y2
        set tW [expr {$x2 - $x1}]
        set tH [expr {$y2 - $y1}]
        if {$maxTW < $tW} {
        set maxTW $tW
        }
        if {$maxTH < $tH} {
        set maxTH $tH
        }

        lappend list [list $iTag $tTag $rTag $iW $iH $tW $tH $numItems]
        set itemList($rTag) [list $iTag $tTag $text $numItems]
        set textList($numItems) [string tolower $text]
        incr numItems
    }
    my WhenIdle Arrange
    return
    }

    #    Gets called when the user invokes the IconList (usually by
    #    double-clicking or pressing the Return key).
    #
    method invoke {} {
    if {$options(-command) ne "" && [llength $selection]} {
        uplevel #0 $options(-command)
    }
    }

    #    If the item is not (completely) visible, scroll the canvas so that it
    #    becomes visible.
    #
    method see rTag {
    if {$noScroll} {
        return
    }
    set sRegion [$canvas cget -scrollregion]
    if {$sRegion eq ""} {
        return
    }

    if {$rTag < 0 || $rTag >= [llength $list]} {
        return
    }

    set bbox [$canvas bbox item$rTag]
    set pad [expr {[$canvas cget -highlightthickness]+[$canvas cget -bd]}]

    set x1 [lindex $bbox 0]
    set x2 [lindex $bbox 2]
    incr x1 [expr {$pad * -2}]
    incr x2 [expr {$pad * -1}]

    set cW [expr {[winfo width $canvas] - $pad*2}]

    set scrollW [expr {[lindex $sRegion 2]-[lindex $sRegion 0]+1}]
    set dispX [expr {int([lindex [$canvas xview] 0]*$scrollW)}]
    set oldDispX $dispX

    # check if out of the right edge
    #
    if {($x2 - $dispX) >= $cW} {
        set dispX [expr {$x2 - $cW}]
    }
    # check if out of the left edge
    #
    if {($x1 - $dispX) < 0} {
        set dispX $x1
    }

    if {$oldDispX ne $dispX} {
        set fraction [expr {double($dispX) / double($scrollW)}]
        $canvas xview moveto $fraction
    }
    }

    # ----------------------------------------------------------------------

    #    Places the icons in a column-major arrangement.
    #
    method Arrange {} {
    if {![info exists list]} {
        if {[info exists canvas] && [winfo exists $canvas]} {
        set noScroll 1
        $sbar configure -command ""
        }
        return
    }

    set W [winfo width  $canvas]
    set H [winfo height $canvas]
    set pad [expr {[$canvas cget -highlightthickness]+[$canvas cget -bd]}]
    if {$pad < 2} {
        set pad 2
    }

    incr W [expr {$pad*-2}]
    incr H [expr {$pad*-2}]

    set dx [expr {$maxIW + $maxTW + 8}]
    if {$maxTH > $maxIH} {
        set dy $maxTH
    } else {
        set dy $maxIH
    }
    incr dy 2
    set shift [expr {$maxIW + 4}]

    set x [expr {$pad * 2}]
    set y [expr {$pad * 1}] ; # Why * 1 ?
    set usedColumn 0
    foreach sublist $list {
        set usedColumn 1
        lassign $sublist iTag tTag rTag iW iH tW tH

        set i_dy [expr {($dy - $iH)/2}]
        set t_dy [expr {($dy - $tH)/2}]

        $canvas coords $iTag $x                    [expr {$y + $i_dy}]
        $canvas coords $tTag [expr {$x + $shift}]  [expr {$y + $t_dy}]
        $canvas coords $rTag $x $y [expr {$x+$dx}] [expr {$y+$dy}]

        incr y $dy
        if {($y + $dy) > $H} {
        set y [expr {$pad * 1}] ; # *1 ?
        incr x $dx
        set usedColumn 0
        }
    }

    if {$usedColumn} {
        set sW [expr {$x + $dx}]
    } else {
        set sW $x
    }

    if {$sW < $W} {
        $canvas configure -scrollregion [list $pad $pad $sW $H]
        $sbar configure -command ""
        $canvas xview moveto 0
        set noScroll 1
    } else {
        $canvas configure -scrollregion [list $pad $pad $sW $H]
        $sbar configure -command [list $canvas xview]
        set noScroll 0
    }

    set itemsPerColumn [expr {($H-$pad) / $dy}]
    if {$itemsPerColumn < 1} {
        set itemsPerColumn 1
    }

    my DrawSelection
    }

    method DrawSelection {} {
    $canvas delete selection
    $canvas itemconfigure selectionText -fill black
    $canvas dtag selectionText
    set cbg [ttk::style lookup TEntry -selectbackground focus]
    set cfg [ttk::style lookup TEntry -selectforeground focus]
    foreach item $selection {
        set rTag [lindex $list $item 2]
        foreach {iTag tTag text serial} $itemList($rTag) {
        break
        }

        set bbox [$canvas bbox $tTag]
        $canvas create rect $bbox -fill $cbg -outline $cbg \
        -tags selection
        $canvas itemconfigure $tTag -fill $cfg -tags selectionText
    }
    $canvas lower selection
    return
    }

    #    Creates an IconList widget by assembling a canvas widget and a
    #    scrollbar widget. Sets all the bindings necessary for the IconList's
    #    operations.
    #
    method Create {} {
    variable hull
    set sbar [ttk::scrollbar $hull.sbar -orient horizontal -takefocus 0]
    catch {$sbar configure -highlightthickness 0}
    set canvas [canvas $hull.canvas -highlightthick 0 -takefocus 1 \
            -width 400 -height 120 -background white]
    pack $sbar -side bottom -fill x -padx 2 -pady {0 2}
    pack $canvas -expand yes -fill both -padx 2 -pady {2 0}

    $sbar configure -command [list $canvas xview]
    $canvas configure -xscrollcommand [list $sbar set]

    # Initializes the max icon/text width and height and other variables
    #
    set maxIW 1
    set maxIH 1
    set maxTW 1
    set maxTH 1
    set numItems 0
    set noScroll 1
    set selection {}
    set index(anchor) ""
    set fg [option get $canvas foreground Foreground]
    if {$fg eq ""} {
        set fill black
    } else {
        set fill $fg
    }

    # Creates the event bindings.
    #
    bind $canvas <Configure>    [namespace code {my WhenIdle Arrange}]

    bind $canvas <1>        [namespace code {my Btn1 %x %y}]
    bind $canvas <B1-Motion>    [namespace code {my Motion1 %x %y}]
    bind $canvas <B1-Leave>        [namespace code {my Leave1 %x %y}]
    bind $canvas <Control-1>    [namespace code {my CtrlBtn1 %x %y}]
    bind $canvas <Shift-1>        [namespace code {my ShiftBtn1 %x %y}]
    bind $canvas <B1-Enter>        [list tk::CancelRepeat]
    bind $canvas <ButtonRelease-1>    [list tk::CancelRepeat]
    bind $canvas <Double-ButtonRelease-1> \
        [namespace code {my Double1 %x %y}]

    bind $canvas <Control-B1-Motion> {;}
    bind $canvas <Shift-B1-Motion>    [namespace code {my ShiftMotion1 %x %y}]

    bind $canvas <<PrevLine>>    [namespace code {my UpDown -1}]
    bind $canvas <<NextLine>>    [namespace code {my UpDown  1}]
    bind $canvas <<PrevChar>>    [namespace code {my LeftRight -1}]
    bind $canvas <<NextChar>>    [namespace code {my LeftRight  1}]
    bind $canvas <Return>        [namespace code {my ReturnKey}]
    bind $canvas <KeyPress>        [namespace code {my KeyPress %A}]
    bind $canvas <Control-KeyPress> ";"
    bind $canvas <Alt-KeyPress>    ";"

    bind $canvas <FocusIn>        [namespace code {my FocusIn}]
    bind $canvas <FocusOut>        [namespace code {my FocusOut}]

    return $w
    }

    #    This procedure is invoked when the mouse leaves an entry window with
    #    button 1 down.  It scrolls the window up, down, left, or right,
    #    depending on where the mouse left the window, and reschedules itself
    #    as an "after" command so that the window continues to scroll until the
    #    mouse moves back into the window or the mouse button is released.
    #
    method AutoScan {} {
    if {![winfo exists $w]} return
    set x $oldX
    set y $oldY
    if {$noScroll} {
        return
    }
    if {$x >= [winfo width $canvas]} {
        $canvas xview scroll 1 units
    } elseif {$x < 0} {
        $canvas xview scroll -1 units
    } elseif {$y >= [winfo height $canvas]} {
        # do nothing
    } elseif {$y < 0} {
        # do nothing
    } else {
        return
    }
    my Motion1 $x $y
    set ::tk::Priv(afterId) [after 50 [namespace code {my AutoScan}]]
    }

    # ----------------------------------------------------------------------

    # Event handlers
    method Btn1 {x y} {
    focus $canvas
    set i [$w index @$x,$y]
    if {$i eq ""} {
        return
    }
    $w selection clear 0 end
    $w selection set $i
    $w selection anchor $i
    }
    method CtrlBtn1 {x y} {
    if {$options(-multiple)} {
        focus $canvas
        set i [$w index @$x,$y]
        if {$i eq ""} {
        return
        }
        if {[$w selection includes $i]} {
        $w selection clear $i
        } else {
        $w selection set $i
        $w selection anchor $i
        }
    }
    }
    method ShiftBtn1 {x y} {
    if {$options(-multiple)} {
        focus $canvas
        set i [$w index @$x,$y]
        if {$i eq ""} {
        return
        }
        if {[$w index anchor] eq ""} {
        $w selection anchor $i
        }
        $w selection clear 0 end
        $w selection set anchor $i
    }
    }

    #    Gets called on button-1 motions
    #
    method Motion1 {x y} {
    set oldX $x
    set oldY $y
    set i [$w index @$x,$y]
    if {$i eq ""} {
        return
    }
    $w selection clear 0 end
    $w selection set $i
    }
    method ShiftMotion1 {x y} {
    set oldX $x
    set oldY $y
    set i [$w index @$x,$y]
    if {$i eq ""} {
        return
    }
    $w selection clear 0 end
    $w selection set anchor $i
    }
    method Double1 {x y} {
    if {[llength $selection]} {
        $w invoke
    }
    }
    method ReturnKey {} {
    $w invoke
    }
    method Leave1 {x y} {
    set oldX $x
    set oldY $y
    my AutoScan
    }
    method FocusIn {} {
    $w state focus
    if {![info exists list]} {
        return
    }
    if {[llength $selection]} {
        my DrawSelection
    }
    }
    method FocusOut {} {
    $w state !focus
    $w selection clear 0 end
    }

    #    Moves the active element up or down by one element
    #
    # Arguments:
    #    amount -    +1 to move down one item, -1 to move back one item.
    #
    method UpDown amount {
    if {![info exists list]} {
        return
    }
    set curr [$w selection get]
    if {[llength $curr] == 0} {
        set i 0
    } else {
        set i [$w index anchor]
        if {$i eq ""} {
        return
        }
        incr i $amount
    }
    $w selection clear 0 end
    $w selection set $i
    $w selection anchor $i
    $w see $i
    }

    #    Moves the active element left or right by one column
    #
    # Arguments:
    #    amount -    +1 to move right one column, -1 to move left one
    #            column
    #
    method LeftRight amount {
    if {![info exists list]} {
        return
    }
    set curr [$w selection get]
    if {[llength $curr] == 0} {
        set i 0
    } else {
        set i [$w index anchor]
        if {$i eq ""} {
        return
        }
        incr i [expr {$amount * $itemsPerColumn}]
    }
    $w selection clear 0 end
    $w selection set $i
    $w selection anchor $i
    $w see $i
    }

    #    Gets called when user enters an arbitrary key in the listbox.
    #
    method KeyPress key {
    append accel $key
    my Goto $accel
    after cancel $accelCB
    set accelCB [after 500 [namespace code {my Reset}]]
    }

    method Goto text {
    if {![info exists list]} {
        return
    }
    if {$text eq "" || $numItems == 0} {
        return
    }

    if {[llength [$w selection get]]} {
        set start [$w index anchor]
    } else {
        set start 0
    }
    set theIndex -1
    set less 0
    set len [string length $text]
    set len0 [expr {$len - 1}]
    set i $start

    # Search forward until we find a filename whose prefix is a
    # case-insensitive match with $text
    while {1} {
        if {[string equal -nocase -length $len0 $textList($i) $text]} {
        set theIndex $i
        break
        }
        incr i
        if {$i == $numItems} {
        set i 0
        }
        if {$i == $start} {
        break
        }
    }

    if {$theIndex > -1} {
        $w selection clear 0 end
        $w selection set $theIndex
        $w selection anchor $theIndex
        $w see $theIndex
    }
    }
    method Reset {} {
    unset -nocomplain accel
    }
}

return

# Local Variables:
# mode: tcl
# fill-column: 78
# End:

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0126 ]--