summaryrefslogtreecommitdiff
path: root/tix/library/MultView.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tix/library/MultView.tcl')
-rw-r--r--tix/library/MultView.tcl152
1 files changed, 152 insertions, 0 deletions
diff --git a/tix/library/MultView.tcl b/tix/library/MultView.tcl
new file mode 100644
index 00000000000..3a8029d014a
--- /dev/null
+++ b/tix/library/MultView.tcl
@@ -0,0 +1,152 @@
+# MultView.tcl --
+#
+# Implements the multi-view widget
+#
+# Copyright (c) 1996, Expert Interface Technologies
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+
+
+tixWidgetClass tixMultiView {
+ -classname TixMultiView
+ -superclass tixPrimitive
+ -method {
+ add
+ }
+ -flag {
+ -browsecmd -command -view
+ }
+ -forcecall {
+ -view
+ }
+ -configspec {
+ {-browsecmd browseCmd BrowseCmd ""}
+ {-command command Command ""}
+ {-view view View icon tixMultiView:VerifyView}
+ }
+ -alias {
+ }
+
+ -default {
+ }
+}
+
+proc tixMultiView:InitWidgetRec {w} {
+ upvar #0 $w data
+ global env
+
+ tixChainMethod $w InitWidgetRec
+}
+
+#----------------------------------------------------------------------
+# Construct widget
+#----------------------------------------------------------------------
+proc tixMultiView:ConstructWidget {w} {
+ upvar #0 $w data
+
+ tixChainMethod $w ConstructWidget
+
+ set data(w:stlist) [tixScrolledTList $w.stlist]
+ set data(w:sgrid) [tixScrolledGrid $w.sgrid]
+ set data(w:icon) [tixIconView $w.icon]
+
+ set data(w:tlist) [$data(w:stlist) subwidget tlist]
+ set data(w:grid) [$data(w:sgrid) subwidget grid]
+
+ $data(w:grid) config -formatcmd "tixMultiView:GridFormat $w" \
+ -leftmargin 0 -topmargin 1
+}
+
+proc tixMultiView:SetBindings {w} {
+ upvar #0 $w data
+
+ tixChainMethod $w SetBindings
+}
+
+proc tixMultiView:GetWid {w which} {
+ upvar #0 $w data
+
+ case $which {
+ list {
+ return $data(w:stlist)
+ }
+ icon {
+ return $data(w:icon)
+ }
+ detail {
+ return $data(w:sgrid)
+ }
+ }
+}
+#----------------------------------------------------------------------
+# Configuration
+#----------------------------------------------------------------------
+proc tixMultiView:config-view {w value} {
+ upvar #0 $w data
+
+ if {$data(-view) != ""} {
+ pack forget [tixMultiView:GetWid $w $data(-view)]
+ }
+
+ pack [tixMultiView:GetWid $w $value] -expand yes -fill both
+}
+#----------------------------------------------------------------------
+# Private methods
+#----------------------------------------------------------------------
+proc tixMultiView:GridFormat {w area x1 y1 x2 y2} {
+ upvar #0 $w data
+
+ case $area {
+ main {
+ }
+ {x-margin y-margin s-margin} {
+ # cborder specifies consecutive 3d borders
+ #
+ $data(w:grid) format cborder $x1 $y1 $x2 $y2 \
+ -fill 1 -relief raised -bd 2 -bg gray60 \
+ -selectbackground gray80
+ }
+ }
+
+}
+
+#----------------------------------------------------------------------
+# Public methods
+#----------------------------------------------------------------------
+
+# Return value is the index of "$name" in the grid subwidget
+#
+#
+proc tixMultiView:add {w name args} {
+ upvar #0 $w data
+
+ set validOptions {-image -text}
+
+ set opt(-image) ""
+ set opt(-text) ""
+
+ tixHandleOptions -nounknown opt $validOptions $args
+
+ $data(w:icon) add $name $opt(-image) $opt(-text)
+ $data(w:tlist) insert end -itemtype imagetext \
+ -image $opt(-image) -text $opt(-text)
+ $data(w:grid) set 0 end -itemtype imagetext \
+ -image $opt(-image) -text $opt(-text)
+
+ return max
+}
+
+#----------------------------------------------------------------------
+# checker
+#----------------------------------------------------------------------
+proc tixMultiView:VerifyView {value} {
+ case $value {
+ {icon list detail} {
+ return $value
+ }
+ }
+ error "bad view \"$value\", must be detail, icon or list"
+}
+