Changeset 1927 for trunk/gui/scripts
- Timestamp:
- Oct 19, 2010, 6:18:44 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gui/scripts/videodial.tcl
r1926 r1927 36 36 itk_option define -min min Min "" 37 37 itk_option define -max max Max "" 38 itk_option define -minortick minortick Minortick 1 39 itk_option define -majortick majortick Majortick 1 38 40 itk_option define -variable variable Variable "" 39 41 itk_option define -offset offset Offset 1 … … 73 75 protected method _navigate {offset} 74 76 protected method _fixSize {} 77 protected method _fixMinorSize {} 75 78 protected method _fixValue {args} 76 79 protected method _fixOffsets {} … … 99 102 public variable min 0.0 100 103 public variable max 1.0 104 public variable minortick 1 105 public variable majortick 5 101 106 } 102 107 … … 154 159 155 160 blt::table configure $itk_interior c* -resize both 156 blt::table configure $itk_interior r0 -resize both -pady 1157 blt::table configure $itk_interior r1 -resize none -pady 1161 blt::table configure $itk_interior r0 -resize none 162 blt::table configure $itk_interior r1 -resize none 158 163 159 164 160 165 eval itk_initialize $args 161 166 162 $itk_component(majordial) configure -background red 163 $itk_component(minordial) configure -background blue 167 # $itk_component(majordial) configure -background green 168 # $itk_component(minordial) configure -background cyan 164 169 165 170 _fixSize … … 188 193 } 189 194 _current [ms2rel $value] 190 _see "frame[expr int($value)]" 195 set framenum [expr int($value)] 196 _see "frame$framenum" 197 mark current $framenum 191 198 event generate $itk_component(hull) <<Value>> 192 199 } … … 293 300 set where [expr int([rel2ms ${_current}])] 294 301 } elseif {[string is integer $where] == 0} { 295 error "bad value \"$where\": <where> should be an integer value" 296 } 297 foreach {frx0 fry0 frx1 fry1} [$c coords "frame$where"] break 298 set where "frame$where" 302 error "bad value \"$where\": while trying to place marker \"$type\": <where> should be an integer value" 303 } 304 set coords [$c coords "frame$where"] 305 if {![llength $coords]} { 306 # frame marker does not exist 307 # estimate where to put the marker 308 # use frame0 marker as a x=0 point 309 foreach {frx0 fry0 frx1 fry1} [$c coords "frame0"] break 310 set frx0 [expr {$frx0 + ((1.0*$where/$minortick)*${_imspace})}] 311 } else { 312 foreach {frx0 fry0 frx1 fry1} $coords break 313 } 314 # where already contains the frame number 299 315 } elseif {$largs == 2} { 300 316 set flag [lindex $args 0] … … 308 324 foreach {frx0 fry0 frx1 fry1} [$c coords $id] break 309 325 # find the frame# tag to associate with the marker with 310 if {[regexp {frame [0-9]+} $id] == 0} {326 if {[regexp {frame([0-9]+)} $id] == 0} { 311 327 foreach tags [$c gettags $id] { 312 328 if {"" != [set tmp [lsearch -inline -regexp $tags {frame[0-9]+}]]} { … … 318 334 set where $id 319 335 } 336 # store the frame number in where 337 regexp {frame([0-9]+)} $where match where 320 338 } 321 339 default { … … 347 365 set smy1 [expr {$smy0-10}] ;# triangle top y 348 366 set smx2 $smx1 ;# stem bottom right x 349 set smy2 [expr {$cy1+5}];# stem bottom right y367 set smy2 $cy1 ;# stem bottom right y 350 368 set smx3 [expr {$smx0-1}] ;# stem bottom left x 351 369 set smy3 $smy2 ;# stem bottom left y … … 371 389 set _marks($type) $where 372 390 } 391 392 _fixMinorSize 373 393 } 374 394 "end" { … … 381 401 set emy1 [expr {$emy0-10}] ;# triangle top y 382 402 set emx2 $emx1 ;# stem bottom left x 383 set emy2 [expr {$cy1+5}];# stem bottom left y403 set emy2 $cy1 ;# stem bottom left y 384 404 set emx3 [expr {$emx0+1}] ;# stem bottom right x 385 405 set emy3 $emy2 ;# stem bottom right y … … 405 425 set _marks($type) $where 406 426 } 427 428 _fixMinorSize 407 429 } 408 430 "particle*" { … … 427 449 } 428 450 451 _fixMinorSize 452 429 453 } 430 454 "arrow" { … … 448 472 } 449 473 474 _fixMinorSize 475 } 476 "current" { 477 478 set cmx0 $frx0 ;# current marker x0 479 set cmy0 $cy0 ;# current marker y0 480 481 set cmx1 [expr {$cmx0+5}] ;# lower right diagonal edge x 482 set cmy1 [expr {$cmy0-5}] ;# lower right diagonal edge y 483 set cmx2 $cmx1 ;# right top x 484 set cmy2 [expr {$cmy1-5}] ;# right top y 485 set cmx3 [expr {$cmx0-5}] ;# left top x 486 set cmy3 $cmy2 ;# left top y 487 set cmx4 $cmx3 ;# lower left diagonal edge x 488 set cmy4 $cmy1 ;# lower left diagonal edge y 489 490 set tag $type 491 $c delete $tag 492 $c create polygon \ 493 $cmx0 $cmy0 \ 494 $cmx1 $cmy1 \ 495 $cmx2 $cmy2 \ 496 $cmx3 $cmy3 \ 497 $cmx4 $cmy4 \ 498 -outline black -fill red -tags $tag 499 $c create line $cmx0 $cmy0 $cmx0 $cy1 -fill red -tags $tag 500 501 if {[string compare "" $where] != 0} { 502 set _marks($type) $where 503 } 504 450 505 } 451 506 default { … … 470 525 set p [winfo pixels $c $itk_option(-padding)] 471 526 set t [expr {$itk_option(-thickness)+1}] 472 set ay1 [expr {$h- 5}]527 set ay1 [expr {$h-3}] 473 528 474 529 if {"" != $_knob} { … … 583 638 set p [winfo pixels $c $itk_option(-padding)] 584 639 set t [expr {$itk_option(-thickness)+1}] 585 set cy1 [expr {$h- 5}]640 set cy1 [expr {$h-1}] 586 641 set cy0 [expr {$cy1-$t}] 587 642 set cx0 [expr {$p+1}] … … 608 663 set imty [expr {$cy0-5}] ;# height of marker value 609 664 610 set bw 70 ;# bracketwidth, number of imarks 611 set _imspace 10 ;# space between imarks 612 613 614 for {set i [expr {int($min)}]; set imx $cx0} {$i <= $max} {incr i; set imx [expr $imx+${_imspace}]} { 615 if {($i%5) == 0} { 665 # set _imspace 10 ;# space between imarks 666 667 if {$minortick == 0} { 668 set majortick 5 669 } 670 671 if {$minortick == 0} { 672 set minortick 1 673 } 674 675 676 set imx $cx0 677 for {set i [expr {int($min)}]} {$i <= $max} {incr i} { 678 if {($i%$majortick) == 0} { 616 679 # draw major tick 617 680 $c create line $imx $imly0 $imx $imly1 \ … … 622 685 $c create text $imx $imty -anchor center -text $i \ 623 686 -font $itk_option(-font) -tags "frame$i" 624 } else { 687 688 set imx [expr $imx+${_imspace}] 689 } elseif {($i%$minortick) == 0 } { 625 690 # draw minor tick 626 691 $c create line $imx $imsy0 $imx $imsy1 \ … … 628 693 -width $imw \ 629 694 -tags [list shortmark-c imark-c "frame$i"] 630 } 631 } 695 696 set imx [expr $imx+${_imspace}] 697 } 698 } 699 700 701 # calculate the height of the intermediate tick marks 702 # and frame numbers on our canvas, resize the imbox 703 # to include both of them. 704 set box [$c bbox "all"] 705 if {![llength $box]} { 706 set box [list 0 0 0 0] 707 } 708 foreach {cx0 cy0 cx1 cy1} $box break 709 $c coords "imbox" $box 632 710 633 711 # add any marks that the user previously specified 634 712 foreach n [array names _marks] { 635 mark $n -tag $_marks($n) 636 } 637 638 foreach {cx0 cy0 cx1 cy1} [$c bbox "all"] break 639 $c coords "imbox" [list $cx0 $cy0 $cx1 $cy1] 640 $c configure \ 641 -scrollregion [list $cx0 $cy0 $cx1 $cy1] \ 642 -xscrollincrement 1p \ 643 -yscrollincrement 1p 644 if 0 { 645 } 646 713 # mark $n -tag $_marks($n) 714 mark $n $_marks($n) 715 } 716 717 _fixMinorSize 718 } 719 720 721 # ---------------------------------------------------------------------- 722 # USAGE: _fixMinorSize 723 # 724 # Used internally to compute the height of the minor dial based 725 # on the items placed on the canvas 726 # 727 # FIXME: instead of calling this in the mark command, figure out how to 728 # make the canvas the correct size to start with 729 # ---------------------------------------------------------------------- 730 itcl::body Rappture::Videodial::_fixMinorSize {} { 731 # resize the height of the minor timeline canvas 732 # to include everything we know about 733 734 set c $itk_component(minordial) 735 736 set box [$c bbox "all"] 737 if {![llength $box]} { 738 set box [list 0 0 0 0] 739 } 740 741 foreach {x0 y0 x1 y1} $box break 742 set h [expr $y1-$y0+1] ;# add a 1 pixel buffer 743 744 $c configure -height $h -scrollregion $box -xscrollincrement 1p 647 745 } 648 746 … … 800 898 {p q xmax ymax} [$c cget -scrollregion] { 801 899 set xpos [expr {(($x1+$x)/2.0)/$xmax - ($right-$left)/2.0}] 802 set ypos [expr {(($y1+$y)/2.0)/$ymax - ($btm-$top)/2.0}]900 #set ypos [expr {(($y1+$y)/2.0)/$ymax - ($btm-$top)/2.0}] 803 901 } 804 902 $c xview moveto $xpos … … 900 998 901 999 $itk_component(majordial) configure -width $w -height $h 1000 1001 # # resize the height of the minor canvas to include everything we know about 1002 # set box [$itk_component(minordial) bbox "all"] 1003 # if {![llength $box]} { 1004 # set box [list 0 0 0 0] 1005 # } 1006 # foreach {cx0 cy0 cx1 cy1} $box break 1007 # set h [expr $cy1-$cy0+1] 1008 # $itk_component(minordial) configure -height $h 902 1009 } 903 1010
Note: See TracChangeset
for help on using the changeset viewer.