############################################################################## # $Id: tablelist.wgt,v 1.4 2002/05/14 05:37:17 cgavin Exp $ # # tablelist.wgt widget description file # # Copyright (C) 2002 Christian Gavin # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # ############################################################################## Class Tablelist Lib tablelist Icon ../lib/Widgets/tablelist/tablelist.gif TreeLabel table list DefaultValues -background -foreground DumpChildren no MegaWidget yes CreateCmd ::tablelist::tablelist InsertCmd vTcl::widgets::tablelist::tablelist::insertCmd DumpCmd vTcl::widgets::tablelist::tablelist::dumpCmd EditableTagsCmd vTcl::widgets::tablelist::tablelist::editableTagsCmd ## Procs to ignore when saving IgnoreProc ::tablelist::* IgnoreProc ::mwutil::* ## Right-click menu Function "Edit columns..." vTcl::widgets::tablelist::tablelist::editCmd NewOption -activestyle "active style" choice {underline frame} NewOption -arrowcolor "arrow col" color {} Colors NewOption -arrowdisabledcolor "arrow dis col" color {} Colors NewOption -align "align" choice {left right center} NewOption -formatcommand "format cmd" command NewOption -hide "hide" boolean {0 1} NewOption -incrarrowtype "incr arr type" choice {up down} NewOption -labelalign "label align" choice {left right center} NewOption -labelcommand "label cmd" command NewOption -labelpady "label pady" type NewOption -showlabels "show labels" boolean {0 1} NewOption -showarrow "show arrow" boolean {0 1} NewOption -sortcommand "sort command" command NewOption -sortmode "sort mode" choice {ascii command dictionary integer real} NewOption -showseparators "show separators" boolean {0 1} NewOption -stretch "stretch" type NewOption -stripebackground "strip backgnd" color {} Colors NewOption -stripeforeground "strip foregnd" color {} Colors ## Namespace name is made of lib name and widget name (here there are same) ## namespace eval vTcl::widgets::tablelist::tablelist { proc editCmd {} { vTcl::itemEdit::edit $::vTcl(w,widget) \ vTcl::widgets::tablelist::tablelist::edit } proc insertCmd {target} { $target configure -columns { 0 "Column 1" left 0 "Column 2" left 0 "Column 3" left } } proc dumpCmd {target basename} { set result [vTcl:dump_widget_opt $target $basename] set size [$target columncount] for {set i 0} {$i < $size} {incr i} { set conf [$target columnconfigure $i] set pairs [vTcl:get_subopts_special $conf $target] append result "$::vTcl(tab)$basename columnconfigure $i \\\n" append result "[vTcl:clean_pairs $pairs]\n" } global basenames set body [$target bodypath] set basenames($body) "\[$basename bodypath\]" append result [vTcl:dump_widget_bind $body [vTcl:base_name $body] 0] return $result } proc editableTagsCmd {target} { set result [$target bodypath] set result [concat $result [$target separators]] set result [concat $result [$target labels]] return $result } } namespace eval vTcl::widgets::tablelist::tablelist::edit { proc getTitle {target} { return "Edit columns for $target" } proc getLabelOption {} { return -title } proc getItems {target} { ## first item in the list is the current index set values 0 set size [$target columncount] for {set i 0} {$i < $size} {incr i} { set column [$target columnconfigure $i -title] lappend values [lindex $column 4] } return $values } proc addItem {target} { set columns [$target cget -columns] lappend columns 0 "New column" left $target configure -columns $columns return "New column" } proc removeItem {target index} { set confs [$target cget -columns] set start [expr $index * 3] set end [expr ($index + 1) * 3 - 1] set confs [lreplace $confs $start $end] $target configure -columns $confs } proc itemConfigure {target index args} { if {$args == ""} { set options [$target columnconfigure $index] set result "" foreach option $options { ## only return valid options if {[llength $option] == 5} { lappend result $option } } return $result } else { set result [eval $target columnconfigure $index $args] return $result } } proc moveUpOrDown {target index direction} { error "Not implemented yet!" } }