# # Gradient Panel # # a clone of Karsten Lentzsch GradientPanel in Tcl # using the canvas and the gradient code found in # tclers wiki. It is implemented using Snit as pure tcl # megawidget. # # # Links: # Karsten Lentzsch www.jgoodies.com # Snit: http://www.wjduquette.com/snit/ # Gradient: http://wiki.tcl.tk/6100 # # Author: Carsten Zerbst carsten.zerbst@groy-groy.de # package require snit package require Tk package require Img package provide gradientpanel 0.1 snit::widgetadaptor gradientpanel { option -font option -text option -title option -bg0 -default white option -bg1 option -fg -default black option -icon constructor { args } { # Create a canvas widget installhull [ canvas $self] $self configure -height 125 $self configurelist $args # if nothing set, determine gradient color if {[string length [$self cget -bg1]] == 0} { # try to determine new end color frame $self.dummyframe $self configure -bg1 [ $self.dummyframe cget -bg] destroy $self.dummyframe } # same for font if {[string length [$self cget -font]] == 0} { label $self.dummylabel $self configure -font [ $self.dummylabel cget -font] destroy $self.dummylabel } $self _drawText $self _drawGradient bind $win <Configure> [list $self _drawGradient ] } # this delegates some methods to be able to manipulate # the canvas context delegate method * to hull delegate option * to hull # use to draw the text method _drawText { } { set font [$self cget -font ] $self delete text $self create text 30 30 -text [$self cget -title] -anchor w \ -font $font -fill [$self cget -fg] -tag [list text title] set y 50 if {[llength $font] > 2} { set messagefont [lreplace $font 2 2 normal] } else { set messagefont $font } foreach tok [split [$self cget -text] \n] { $self create text 40 $y -text $tok -anchor w \ -font $messagefont -fill [$self cget -fg] \ -tag [list text message] incr y 18 } } # used to redraw the gradient and icon after resize method _drawGradient { } { $self delete gradient set width [winfo width $win] set height [winfo height $win] set max $width; if {[catch {winfo rgb $self [ $self cget -bg0 ]} color1]} { puts stderr $color1 return -code error "Invalid color [ $self cget -bg0 ]" } if {[catch {winfo rgb $self [ $self cget -bg1 ]} color2]} { return -code error "Invalid color [ $self cget -bg1 ]" } # Check color resolution. Low color resolution results in stripes # instead of a smooth gradient. In this case we better use only # bg0 as background if {[lindex [ winfo rgb $self #010000 ] 0] != 257 } { $win create rectangle 0 0 $width $height -tags gradient -fill [ $self cget -bg0 ] } else { foreach {r1 g1 b1} $color1 break foreach {r2 g2 b2} $color2 break set rRange [expr $r2.0 - $r1] set gRange [expr $g2.0 - $g1] set bRange [expr $b2.0 - $b1] set rRatio [expr $rRange / $max] set gRatio [expr $gRange / $max] set bRatio [expr $bRange / $max] for {set i 0} {$i < $max} {incr i } { set nR [expr int( $r1 + ($rRatio * $i) )] set nG [expr int( $g1 + ($gRatio * $i) )] set nB [expr int( $b1 + ($bRatio * $i) )] set col [format {%4.4x} $nR] append col [format {%4.4x} $nG] append col [format {%4.4x} $nB] $win create line $i 0 $i $height -tags gradient -fill #${col} } } $self lower gradient # draw icon $self delete icon set icon [$self cget -icon] if {[string length $icon ] > 0} { set distance 10 set xmin [expr [lindex [$win bbox text] 2] + $distance] set width [ winfo width $self] set x [expr $width - [image width $icon ]] if { $xmin > $x } { set x $xmin } set y [ winfo height $self] $self create image $x $y -image $icon -anchor sw -tag icon } } } A simple example looks like this package require Tk if {[catch {package require gradientpanel}]} { source gradientpanel.tcl } set bild "R0lGODlhnAB9AOcAAP39/f7+/v////n5+fDw8Ofn5+jo6Obm5vf398rKytTU 1NPT09HR0bm5ucDAwMLCwry8vOvr66CgoF1dXUlJSUVFRWpqanV1dY2NjZeX l39/f4uLi7+/v+3t7dDQ0GxsbDIyMjU1NVBQUJmZmU1NTVtbW09PT1hYWG1t ba6urvz8/PHx8enp6eDg4Nra2s7Ozpqamjs7O0FBQYSEhHd3d0dHRz4+PkRE REhISEpKSlNTU3BwcK2trcHBwc/Pz7u7u7CwsD09PVZWVl5eXk5OTkxMTEND Q1dXV35+fjo6Ojk5OVJSUnFxcW5ubrW1tZycnJOTk4qKipubm319fVxcXEtL S4mJiVlZWTY2NjAwMC8vLy4uLjExMUBAQGNjY76+vtvb29zc3N7e3tjY2MvL y6ysrHZ2dl9fX8nJyTQ0NFpaWmZmZmtra6Ojo+zs7O7u7uTk5KWlpZSUlIGB gWlpaWBgYHJycq+vr4WFhYyMjIODg9fX19nZ2erq6tbW1rKysqSkpHp6eo+P j+Xl5eHh4aurq4CAgLGxsaioqIeHh0JCQnx8fJiYmO/v7/Pz8/X19d3d3czM zMTExM3NzY6OjkZGRlVVVZWVldLS0vr6+vj4+PT09MjIyKenp3Nzc3R0dHl5 eePj4+Li4tXV1bS0tKGhoWdnZ29vb5+fn8fHx6qqqpaWlp2dnWhoaIKCglRU VFFRUWJiYmRkZJCQkLq6ujw8PD8/P2VlZbOzs6ampqmpqXh4eHt7e4aGhmFh YTg4ODc3NzMzM7a2tsXFxZ6enoiIiJKSkpGRkb29vbe3t6Kiori4uN/f38PD w/Ly8sbGxi0tLSwsLCgoKCUlJSYmJioqKisrKycnJykpKSMjIyEhISAgICIi IiQkJB4eHh8fH/////////////////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////////yH5BAEKAP8ALAAAAACcAH0AAAj+AP8JHEiwoMGD CBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuX MGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGRAI4qRRhAAIABBAoYOLC0aoAA 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 WIZeSIRT8C6OCAgAOw==" # # Example code # proc example { } { #set m1 [ image create photo -file möwe.png] set m1 [ image create photo -data $::bild] set text [join [list "Lorem ipsum dolor sit amet, consectetuer adipiscing elit." \ "Pellentesque at tortor. Morbi ac wisi imperdiet enim" \ "mattis egestas. Sed ac"] \n] set title "Lorem Ipsum" set gp [ gradientpanel create .test -text $text -title $title -icon $m1 ] label .rest -text "The Rest of Your Panel" grid $gp -sticky ew grid .rest -sticky nesw grid columnconfigure . 0 -weight 1 grid rowconfigure . 1 -weight 1 wm geometry . 600x300 } example
escargo 10 Aug 2005 - Added code to _drawText for cases where the font name is less than 3 elements; modified the example so that if the page is processed by wish-reaper the single file becomes executable.
schlenk - How about adding this widget to tklib?One minor suggestion: add an option -titlefont to configure the font for the title indepentently from the rest of the text