home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 December / PCWorld_2000-12_cd.bin / Komunikace / Comanche / comanche.exe / lib / iwidgets2.2.0 / scripts / selectiondialog.itk < prev    next >
Text File  |  1999-02-24  |  10KB  |  268 lines

  1. #
  2. # Selectiondialog
  3. # ----------------------------------------------------------------------
  4. # Implements a selection box similar to the OSF/Motif standard selection
  5. # dialog composite widget.  The Selectiondialog is derived from the 
  6. # Dialog class and is composed of a SelectionBox with attributes to
  7. # manipulate the dialog buttons.
  8. # ----------------------------------------------------------------------
  9. #  AUTHOR: Mark L. Ulferts               EMAIL: mulferts@spd.dsccc.com
  10. #
  11. #  @(#) $Id: selectiondialog.itk,v 1.1 1998/07/27 18:49:50 stanton Exp $
  12. # ----------------------------------------------------------------------
  13. #            Copyright (c) 1995 DSC Technologies Corporation
  14. # ======================================================================
  15. # Permission to use, copy, modify, distribute and license this software 
  16. # and its documentation for any purpose, and without fee or written 
  17. # agreement with DSC, is hereby granted, provided that the above copyright 
  18. # notice appears in all copies and that both the copyright notice and 
  19. # warranty disclaimer below appear in supporting documentation, and that 
  20. # the names of DSC Technologies Corporation or DSC Communications 
  21. # Corporation not be used in advertising or publicity pertaining to the 
  22. # software without specific, written prior permission.
  23. # DSC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 
  24. # ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, AND NON-
  25. # INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE
  26. # AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, 
  27. # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. IN NO EVENT SHALL 
  28. # DSC BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 
  29. # ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 
  30. # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTUOUS ACTION,
  31. # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 
  32. # SOFTWARE.
  33. # ======================================================================
  34.  
  35. #
  36. # Default resources.
  37. #
  38. option add *Selectiondialog.borderWidth 2 widgetDefault
  39.  
  40. option add *Selectiondialog.itemsLabel Items widgetDefault
  41. option add *Selectiondialog.itemsLabelPos nw widgetDefault
  42. option add *Selectiondialog.itemsOn yes widgetDefault
  43.  
  44. option add *Selectiondialog.selectionLabel Selection widgetDefault
  45. option add *Selectiondialog.selectionLabelPos nw widgetDefault
  46. option add *Selectiondialog.selectionOn yes widgetDefault
  47.  
  48. option add *Selectiondialog.vscrollMode static widgetDefault
  49. option add *Selectiondialog.hscrollMode dynamic widgetDefault
  50. option add *Selectiondialog.scrollMargin 3 widgetDefault
  51. option add *Selectiondialog.margin 7 widgetDefault
  52.  
  53. option add *Selectiondialog.title "Selection Dialog" widgetDefault
  54.  
  55. option add *Selectiondialog.padX 10 widgetDefault
  56. option add *Selectiondialog.padY 10 widgetDefault
  57.  
  58. option add *Selectiondialog.height 350 widgetDefault
  59. option add *Selectiondialog.width 300 widgetDefault
  60.  
  61. option add *Selectiondialog.master "." widgetDefault
  62.  
  63. #
  64. # Usual options.
  65. #
  66. itk::usual Selectiondialog {
  67.     keep -activebackground -activerelief -background -borderwidth -cursor \
  68.      -elementborderwidth -foreground -highlightcolor -highlightthickness \
  69.      -insertbackground -insertborderwidth -insertofftime -insertontime \
  70.      -insertwidth -jump -labelfont -modality -selectbackground \
  71.      -selectborderwidth -selectforeground -textbackground -textfont \
  72.      -troughcolor
  73. }
  74.  
  75. # ------------------------------------------------------------------
  76. #                           SELECTIONDIALOG
  77. # ------------------------------------------------------------------
  78. class iwidgets::Selectiondialog {
  79.     inherit iwidgets::Dialog
  80.  
  81.     constructor {args} {}
  82.  
  83.     public method childsite {}
  84.     public method get {}
  85.     public method curselection {}
  86.     public method clear {component}
  87.     public method insert {component index args}
  88.     public method delete {first {last {}}}
  89.     public method size {}
  90.     public method scan {option args}
  91.     public method nearest {y}
  92.     public method index {index}
  93.     public method selection {option args}
  94.     public method selectitem {}
  95. }
  96.     
  97. #
  98. # Provide a lowercased access method for the Selectiondialog class.
  99. proc ::iwidgets::selectiondialog {pathName args} {
  100.     uplevel ::iwidgets::Selectiondialog $pathName $args
  101. }
  102.  
  103. # ------------------------------------------------------------------
  104. #                        CONSTRUCTOR
  105. # ------------------------------------------------------------------
  106. body iwidgets::Selectiondialog::constructor {args} {
  107.     component hull configure -borderwidth 0
  108.     itk_option add hull.width hull.height
  109.     
  110.     #
  111.     # Turn off pack propagation for the hull widget so the width
  112.     # and height options become active.
  113.     #
  114.     pack propagate $itk_component(hull) no
  115.     
  116.     # 
  117.     # Instantiate a selection box widget.
  118.     #
  119.     itk_component add sb {
  120.     iwidgets::Selectionbox $itk_interior.sb \
  121.         -width 100 -height 140 -dblclickcommand [code $this invoke]
  122.     } {
  123.     keep -activebackground -activerelief -background -borderwidth \
  124.         -childsitepos -cursor -elementborderwidth \
  125.         -exportselection -foreground \
  126.         -highlightcolor -highlightthickness -hscrollmode \
  127.         -jump -insertbackground -insertborderwidth \
  128.         -insertofftime -insertontime -insertwidth -items \
  129.         -itemslabel -itemslabelpos -itemson -labelfont \
  130.         -labelmargin -margin -relief -repeatdelay \
  131.         -repeatinterval -sbwidth -scrollmargin -selectbackground \
  132.         -selectborderwidth -selectforeground  -selectionlabel \
  133.         -selectionlabelpos -selectionon -textbackground \
  134.         -textfont -troughcolor -vscrollmode \
  135.         -itemscommand -selectioncommand
  136.     }
  137.     configure -itemscommand [code $this selectitem]
  138.     
  139.     pack $itk_component(sb) -fill both -expand yes
  140.     set itk_interior [$itk_component(sb) childsite]
  141.     
  142.     hide Help
  143.  
  144.     eval itk_initialize $args
  145. }   
  146.  
  147. # ------------------------------------------------------------------
  148. #                            METHODS
  149. # ------------------------------------------------------------------
  150.  
  151. # ------------------------------------------------------------------
  152. # METHOD: childsite
  153. #
  154. # Thinwrapped method of selection box class.
  155. # ------------------------------------------------------------------
  156. body iwidgets::Selectiondialog::childsite {} {
  157.     return [$itk_component(sb) childsite]
  158. }
  159.  
  160. # ------------------------------------------------------------------
  161. # METHOD: get
  162. #
  163. # Thinwrapped method of selection box class.
  164. # ------------------------------------------------------------------
  165. body iwidgets::Selectiondialog::get {} {
  166.     return [$itk_component(sb) get]
  167. }
  168.  
  169. # ------------------------------------------------------------------
  170. # METHOD: curselection
  171. #
  172. # Thinwrapped method of selection box class.
  173. # ------------------------------------------------------------------
  174. body iwidgets::Selectiondialog::curselection {} {
  175.     return [$itk_component(sb) curselection]
  176. }
  177.  
  178. # ------------------------------------------------------------------
  179. # METHOD: clear component
  180. #
  181. # Thinwrapped method of selection box class.
  182. # ------------------------------------------------------------------
  183. body iwidgets::Selectiondialog::clear {component} {
  184.     $itk_component(sb) clear $component
  185.     set itk_option(-items) [$itk_component(sb) cget -items]
  186.     return
  187. }
  188.  
  189. # ------------------------------------------------------------------
  190. # METHOD: insert component index args
  191. #
  192. # Thinwrapped method of selection box class.
  193. # ------------------------------------------------------------------
  194. body iwidgets::Selectiondialog::insert {component index args} {
  195.     eval $itk_component(sb) insert $component $index $args
  196.     set itk_option(-items) [$itk_component(sb) cget -items]
  197.     return
  198. }
  199.  
  200. # ------------------------------------------------------------------
  201. # METHOD: delete first ?last?
  202. #
  203. # Thinwrapped method of selection box class.
  204. # ------------------------------------------------------------------
  205. body iwidgets::Selectiondialog::delete {first {last {}}} {
  206.     $itk_component(sb) delete $first $last
  207.     set itk_option(-items) [$itk_component(sb) cget -items]
  208.     return
  209. }
  210.  
  211. # ------------------------------------------------------------------
  212. # METHOD: size
  213. #
  214. # Thinwrapped method of selection box class.
  215. # ------------------------------------------------------------------
  216. body iwidgets::Selectiondialog::size {} {
  217.     return [$itk_component(sb) size]
  218. }
  219.  
  220. # ------------------------------------------------------------------
  221. # METHOD: scan option args
  222. #
  223. # Thinwrapped method of selection box class.
  224. # ------------------------------------------------------------------
  225. body iwidgets::Selectiondialog::scan {option args} {
  226.     return [eval $itk_component(sb) scan $option $args]
  227. }
  228.  
  229. # ------------------------------------------------------------------
  230. # METHOD: nearest y
  231. #
  232. # Thinwrapped method of selection box class.
  233. # ------------------------------------------------------------------
  234. body iwidgets::Selectiondialog::nearest {y} {
  235.     return [$itk_component(sb) nearest $y]
  236. }
  237.  
  238. # ------------------------------------------------------------------
  239. # METHOD: index index
  240. #
  241. # Thinwrapped method of selection box class.
  242. # ------------------------------------------------------------------
  243. body iwidgets::Selectiondialog::index {index} {
  244.     return [$itk_component(sb) index $index]
  245. }
  246.  
  247. # ------------------------------------------------------------------
  248. # METHOD: selection option args
  249. #
  250. # Thinwrapped method of selection box class.
  251. # ------------------------------------------------------------------
  252. body iwidgets::Selectiondialog::selection {option args} {
  253.     eval $itk_component(sb) selection $option $args
  254. }
  255.  
  256. # ------------------------------------------------------------------
  257. # METHOD: selectitem
  258. #
  259. # Set the default button to ok and select the item.
  260. # ------------------------------------------------------------------
  261. body iwidgets::Selectiondialog::selectitem {} {
  262.     default OK
  263.     $itk_component(sb) selectitem
  264. }
  265.