summaryrefslogtreecommitdiff
path: root/tix/library/SText.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tix/library/SText.tcl')
-rw-r--r--tix/library/SText.tcl138
1 files changed, 138 insertions, 0 deletions
diff --git a/tix/library/SText.tcl b/tix/library/SText.tcl
new file mode 100644
index 00000000000..ae741f276a5
--- /dev/null
+++ b/tix/library/SText.tcl
@@ -0,0 +1,138 @@
+# SText.tcl --
+#
+# This file implements Scrolled Text widgets
+#
+# 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 tixScrolledText {
+ -classname TixScrolledText
+ -superclass tixScrolledWidget
+ -method {
+ }
+ -flag {
+ }
+ -static {
+ }
+ -configspec {
+ }
+ -default {
+ {.scrollbar both}
+ {*borderWidth 1}
+ {*text.background #c3c3c3}
+ {*text.highlightBackground #d9d9d9}
+ {*text.relief sunken}
+ {*text.takeFocus 1}
+ {*Scrollbar.background #d9d9d9}
+ {*Scrollbar.relief sunken}
+ {*Scrollbar.troughColor #c3c3c3}
+ {*Scrollbar.takeFocus 0}
+ {*Scrollbar.width 15}
+ }
+ -forcecall {
+ -scrollbar
+ }
+}
+
+proc tixScrolledText:ConstructWidget {w} {
+ upvar #0 $w data
+ global tcl_platform
+
+ tixChainMethod $w ConstructWidget
+
+ set data(w:text) \
+ [text $w.text]
+ set data(w:hsb) \
+ [scrollbar $w.hsb -orient horizontal]
+ set data(w:vsb) \
+ [scrollbar $w.vsb -orient vertical]
+
+ if {$data(-sizebox) && $tcl_platform(platform) == "windows"} {
+ set data(w:sizebox) [ide_sizebox $w.sizebox]
+ }
+
+ set data(pw:client) $data(w:text)
+}
+
+proc tixScrolledText:SetBindings {w} {
+ upvar #0 $w data
+
+ tixChainMethod $w SetBindings
+
+ $data(w:text) config \
+ -xscrollcommand "tixScrolledText:XScroll $w"\
+ -yscrollcommand "tixScrolledText:YScroll $w"
+
+ $data(w:hsb) config -command "$data(w:text) xview"
+ $data(w:vsb) config -command "$data(w:text) yview"
+}
+
+#----------------------------------------------------------------------
+#
+# option configs
+#----------------------------------------------------------------------
+proc tixScrolledText:config-takefocus {w value} {
+ upvar #0 $w data
+
+ $data(w:text) config -takefocus $value
+}
+
+proc tixScrolledText:config-scrollbar {w value} {
+ upvar #0 $w data
+
+ if {[string match "auto*" $value]} {
+ set value "both"
+ }
+ set data(-scrollbar) $value
+
+ tixChainMethod $w config-scrollbar $value
+
+ return $value
+}
+
+#----------------------------------------------------------------------
+#
+# Widget commands
+#----------------------------------------------------------------------
+
+
+#----------------------------------------------------------------------
+#
+# Private Methods
+#----------------------------------------------------------------------
+
+#----------------------------------------------------------------------
+# virtual functions to query the client window's scroll requirement
+#----------------------------------------------------------------------
+proc tixScrolledText:GeometryInfo {w mW mH} {
+ upvar #0 $w data
+
+ return [list "$data(x,first) $data(x,last)" "$data(y,first) $data(y,last)"]
+}
+
+proc tixScrolledText:XScroll {w first last} {
+ upvar #0 $w data
+
+ set data(x,first) $first
+ set data(x,last) $last
+
+ $data(w:hsb) set $first $last
+
+ tixWidgetDoWhenIdle tixScrolledWidget:Configure $w
+}
+
+proc tixScrolledText:YScroll {w first last} {
+ upvar #0 $w data
+
+ set data(y,first) $first
+ set data(y,last) $last
+
+ $data(w:vsb) set $first $last
+
+ tixWidgetDoWhenIdle tixScrolledWidget:Configure $w
+}