home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 December / PCWorld_2000-12_cd.bin / Komunikace / Comanche / comanche.exe / lib / iwidgets3.0.0 / scripts / canvasprintdialog.itk < prev    next >
Text File  |  1999-02-24  |  6KB  |  156 lines

  1. #
  2. # CanvasPrintDialog v1.5
  3. # ----------------------------------------------------------------------
  4. # Implements a print dialog for printing the contents of a canvas widget
  5. # to a printer or a file. It is possible to specify page orientation, the
  6. # number of pages to print the image on and if the output should be
  7. # stretched to fit the page. The CanvasPrintDialog is derived from the
  8. # Dialog class and is composed of a CanvasPrintBox with attributes set to
  9. # manipulate the dialog buttons.
  10. # ----------------------------------------------------------------------
  11. #  AUTHOR: Tako Schotanus              EMAIL: Tako.Schotanus@bouw.tno.nl
  12. # ----------------------------------------------------------------------
  13. #                   Copyright (c) 1995  Tako Schotanus
  14. # ======================================================================
  15. # Permission is hereby granted, without written agreement and without
  16. # license or royalty fees, to use, copy, modify, and distribute this
  17. # software and its documentation for any purpose, provided that the
  18. # above copyright notice and the following two paragraphs appear in
  19. # all copies of this software.
  20. # IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
  21. # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 
  22. # ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 
  23. # IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
  24. # DAMAGE.
  25. #
  26. # THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 
  27. # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
  28. # FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
  29. # ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
  30. # PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  31. # ======================================================================
  32.  
  33. #
  34. # Option database default resources:
  35. #
  36. option add *Canvasprintdialog.filename "canvas.ps" widgetDefault
  37. option add *Canvasprintdialog.hPageCnt 1 widgetDefault
  38. option add *Canvasprintdialog.orient landscape widgetDefault
  39. option add *Canvasprintdialog.output printer widgetDefault
  40. option add *Canvasprintdialog.pageSize A4 widgetDefault
  41. option add *Canvasprintdialog.posterize 0 widgetDefault
  42. option add *Canvasprintdialog.printCmd lpr widgetDefault
  43. option add *Canvasprintdialog.printRegion "" widgetDefault
  44. option add *Canvasprintdialog.vPageCnt 1 widgetDefault
  45. option add *Canvasprintdialog.title "Canvas Print Dialog" widgetDefault
  46. option add *Canvasprintdialog.master "." widgetDefault
  47.  
  48. #
  49. # Usual options.
  50. #
  51. itk::usual Canvasprintdialog {
  52.     keep -background -cursor -foreground -modality 
  53. }
  54.  
  55. # ------------------------------------------------------------------
  56. # CANVASPRINTDIALOG
  57. # ------------------------------------------------------------------
  58. class iwidgets::Canvasprintdialog {
  59.     inherit iwidgets::Dialog
  60.  
  61.     constructor {args} {}   
  62.     destructor {}
  63.  
  64.     method deactivate {args} {}
  65.     method getoutput {} {}
  66.     method setcanvas {canv} {}
  67.     method refresh {} {}
  68.     method print {} {}
  69. }
  70.  
  71. #
  72. # Provide a lowercased access method for the Canvasprintdialog class.
  73. proc ::iwidgets::canvasprintdialog {args} {
  74.     uplevel ::iwidgets::Canvasprintdialog $args
  75. }
  76.  
  77. # ------------------------------------------------------------------
  78. # CONSTRUCTOR 
  79. #
  80. # Create new file selection dialog.
  81. # ------------------------------------------------------------------
  82. body iwidgets::Canvasprintdialog::constructor {args} {
  83.     component hull configure -borderwidth 0
  84.  
  85.     # 
  86.     # Instantiate a file selection box widget.
  87.     #
  88.     itk_component add cpb {
  89.         iwidgets::Canvasprintbox $itk_interior.cpb
  90.     } {
  91.         usual
  92.         keep -printregion -output -printcmd -filename -pagesize \
  93.              -orient -stretch -posterize -hpagecnt -vpagecnt
  94.     }
  95.     pack $itk_component(cpb) -fill both -expand yes
  96.  
  97.     #
  98.     # Hide the apply and help buttons.
  99.     #
  100.     buttonconfigure OK -text Print
  101.     buttonconfigure Apply -command [code $this refresh] -text Refresh
  102.     hide Help
  103.  
  104.     eval itk_initialize $args
  105. }   
  106.  
  107. # ------------------------------------------------------------------
  108. # METHOD: deactivate
  109. #
  110. # Redefines method of dialog shell class. Stops the drawing of the
  111. # thumbnail (when busy) upon deactivation of the dialog.
  112. # ------------------------------------------------------------------
  113. body iwidgets::Canvasprintdialog::deactivate {args} {
  114.     $itk_component(cpb) stop
  115.     return [eval Shell::deactivate $args]
  116. }
  117.  
  118. # ------------------------------------------------------------------
  119. # METHOD: getoutput
  120. #
  121. # Thinwrapped method of canvas print box class.
  122. # ------------------------------------------------------------------
  123. body iwidgets::Canvasprintdialog::getoutput {} {
  124.     return [$itk_component(cpb) getoutput]
  125. }
  126.  
  127. # ------------------------------------------------------------------
  128. # METHOD: setcanvas
  129. #
  130. # Thinwrapped method of canvas print box class.
  131. # ------------------------------------------------------------------
  132. body iwidgets::Canvasprintdialog::setcanvas {canv} {
  133.     return [$itk_component(cpb) setcanvas $canv]
  134. }
  135.  
  136. # ------------------------------------------------------------------
  137. # METHOD: refresh
  138. #
  139. # Thinwrapped method of canvas print box class.
  140. # ------------------------------------------------------------------
  141. body iwidgets::Canvasprintdialog::refresh {} {
  142.     return [$itk_component(cpb) refresh]
  143. }
  144.  
  145. # ------------------------------------------------------------------
  146. # METHOD: print
  147. #
  148. # Thinwrapped method of canvas print box class.
  149. # ------------------------------------------------------------------
  150. body iwidgets::Canvasprintdialog::print {} {
  151.     return [$itk_component(cpb) print]
  152. }
  153.