• treectrl


    namespace eval DemoIMovie {}
    treectrl .t  -height 900 -width 900
    pack .t
    set ScriptDir [file normalize [file dirname [info script]]]
    set ::thisPlatform unix
    proc Path {args} {
        return [file normalize [eval [list file join $::ScriptDir] $args]]
    }
    proc DemoIMovie::Button1 {T x y} {
        focus $T
        set id [$T identify $x $y]

        # Click outside any item
        if {$id eq ""} {

        # Click in header
        } elseif {[lindex $id 0] eq "header"} {
     ::TreeCtrl::ButtonPress1 $T $x $y

        # Click in item
        } elseif {[lindex $id 0] eq "item"} {
     ::TreeCtrl::ButtonPress1 $T $x $y
     update
     lassign $id where item arg1 arg2 arg3 arg4
     switch $arg1 {
         column {
      set I [lindex $id 1]
      if {[llength $id] == 6} {
          set E [lindex $id end]
          if {$E eq "elemName"} {
       set exists [winfo exists $T.entry]
       ::TreeCtrl::EntryOpen $T $I C0 $E
       if {!$exists} {
           $T.entry configure -borderwidth 0 -justify center \
        -background #ffdc5a
           scan [$T item bbox $I C0 $E] "%d %d %d %d" x1 y1 x2 y2
           place $T.entry -y [expr {$y1 - 1}]
       }
       $T.entry selection clear
       scan [$T item bbox $I C0 elemImg] "%d %d %d %d" x1 y1 x2 y2
       set left $x1
       set right $x2
       place $T.entry -x $left -width [expr {$right - $left}]
       $T.entry icursor [$T.entry index @[expr {$x - ($x1 + 1)}]]
       # Disable mouse tracking
       unset ::TreeCtrl::Priv(buttonMode)
          }
      }
         }
     }
        }
        return -code break
    }


    proc InitPics {args} {
        foreach pattern $args {
     if {[lsearch [image names] $pattern] == -1} {
         foreach file [glob -directory [Path pics] $pattern.gif] {
      set imageName [file root [file tail $file]]
      # I created an image called "file", which clobbered the
      # original Tcl command "file". Then I got confused.
      if {[llength [info commands $imageName]]} {
          error "don't want to create image called \"$imageName\""
      }
      image create photo $imageName -file $file

      # Hack -- Create a "selected" version too
      image create photo ${imageName}Sel
      ${imageName}Sel copy $imageName
     # imagetint ${imageName}Sel $::SystemHighlight 128
         }
     }
        }
        return
    }

    .t configure -showroot no -showbuttons no -showlines no \
    -selectmode browse -orient horizontal -wrap window \
    -showheader no -background #dcdcdc -yscrollsmoothing yes

    .t configure -canvaspadx 8 -canvaspady 8 \
    -itemgapx 8 -itemgapy 8

    .t column create -tags C0

    InitPics imovie-*

    set font1 {Helvetica 12}
    set font2 {Helvetica 14}

    .t element create elemTime text -font [list $font1]
    .t element create elemName text -font [list $font2] -lines 1 -width 80
    .t element create elemRect rect -fill {#ffdc5a {selected} white {}} \
        -outline #827878 -outlinewidth 1
    .t element create elemImg image
    .t element create elemShadow rect -outline gray -outlinewidth 1 -open wn


    set S [.t style create STYLE -orient vertical]
    .t style elements $S {elemShadow elemRect elemTime elemImg elemName}
    .t style layout $S elemShadow -detach yes -padx {1 0} -pady {1 0} -iexpand xy
    .t style layout $S elemTime -padx {2 0}
    .t style layout $S elemImg -pady {0 1}
    .t style layout $S elemName -expand we -ipady {0 2} -padx {0 3} -squeeze x
    .t style layout $S elemRect -union {elemTime elemImg elemName} \
        -ipadx 6 -padx {0 1} -pady {0 1}

        # Set default item style
    .t column configure C0 -itemstyle $S
        bind DemoIMovie <ButtonPress-1> {
     DemoIMovie::Button1 %W %x %y
        }

        for {set i 0} {$i < 5} {incr i} {
      foreach {time name image} {
          15:20 "Clip 1" imovie-01
          19:18 "Clip 2" imovie-02
          07:20 "Clip 3" imovie-03
          07:20 "Clip 4" imovie-04
          07:20 "Clip 5" imovie-05
          07:20 "Clip 6" imovie-06
          07:20 "Clip 7" imovie-07
      } {
          set I [.t item create]
     #   $T item style set $I C0 $S
          .t item element configure $I C0 \
       elemTime -text $time + \
       elemImg -image $image + \
       elemName -text $name
          .t item lastchild root $I
      }
         }
     
    bindtags .t [list .t DemoIMovie  TreeCtrl [winfo toplevel .t] all]

  • 相关阅读:
    JS 中 原生方法 (四) --- Object
    在 JavaScript 中 prototype 和 __proto__ 有什么区别
    VueJs 源码分析 ---(一) 整体对 vuejs 框架的理解
    Node.js API 初解读(三)
    npm 包的 发布 流程
    JS 中 原生方法 (三) --- Date 日期
    JS 中 原生方法 (二) --- 数组 (修---添加ES6新增)
    Mac 下VIM配置
    css预处理器(sass)
    BFC 神奇背后的原理
  • 原文地址:https://www.cnblogs.com/greencolor/p/2180684.html
Copyright © 2020-2023  润新知