home *** CD-ROM | disk | FTP | other *** search
- #
- # CanvasPrintDialog v1.5
- # ----------------------------------------------------------------------
- # Implements a print dialog for printing the contents of a canvas widget
- # to a printer or a file. It is possible to specify page orientation, the
- # number of pages to print the image on and if the output should be
- # stretched to fit the page. The CanvasPrintDialog is derived from the
- # Dialog class and is composed of a CanvasPrintBox with attributes set to
- # manipulate the dialog buttons.
- #
- # ----------------------------------------------------------------------
- # AUTHOR: Tako Schotanus EMAIL: Tako.Schotanus@bouw.tno.nl
- # ----------------------------------------------------------------------
- # Copyright (c) 1995 Tako Schotanus
- # ======================================================================
- # Permission is hereby granted, without written agreement and without
- # license or royalty fees, to use, copy, modify, and distribute this
- # software and its documentation for any purpose, provided that the
- # above copyright notice and the following two paragraphs appear in
- # all copies of this software.
- #
- # IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
- # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
- # ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
- # IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
- # DAMAGE.
- #
- # THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
- # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- # FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- # ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
- # PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- # ======================================================================
-
- #
- # Option database default resources:
- #
- option add *Canvasprintdialog.filename "canvas.ps" widgetDefault
- option add *Canvasprintdialog.hPageCnt 1 widgetDefault
- option add *Canvasprintdialog.orient landscape widgetDefault
- option add *Canvasprintdialog.output printer widgetDefault
- option add *Canvasprintdialog.pageSize A4 widgetDefault
- option add *Canvasprintdialog.posterize 0 widgetDefault
- option add *Canvasprintdialog.printCmd lpr widgetDefault
- option add *Canvasprintdialog.printRegion "" widgetDefault
- option add *Canvasprintdialog.vPageCnt 1 widgetDefault
- option add *Canvasprintdialog.title "Canvas Print Dialog" widgetDefault
- option add *Canvasprintdialog.master "." widgetDefault
-
- #
- # Usual options.
- #
- itk::usual Canvasprintdialog {
- keep -background -cursor -foreground -modality
- }
-
- # ------------------------------------------------------------------
- # CANVASPRINTDIALOG
- # ------------------------------------------------------------------
- itcl::class iwidgets::Canvasprintdialog {
- inherit iwidgets::Dialog
-
- constructor {args} {}
- destructor {}
-
- method deactivate {args} {}
- method getoutput {} {}
- method setcanvas {canv} {}
- method refresh {} {}
- method print {} {}
- }
-
- #
- # Provide a lowercased access method for the Canvasprintdialog class.
- #
- proc ::iwidgets::canvasprintdialog {args} {
- uplevel ::iwidgets::Canvasprintdialog $args
- }
-
- # ------------------------------------------------------------------
- # CONSTRUCTOR
- #
- # Create new file selection dialog.
- # ------------------------------------------------------------------
- itcl::body iwidgets::Canvasprintdialog::constructor {args} {
- component hull configure -borderwidth 0
-
- #
- # Instantiate a file selection box widget.
- #
- itk_component add cpb {
- iwidgets::Canvasprintbox $itk_interior.cpb
- } {
- usual
- keep -printregion -output -printcmd -filename -pagesize \
- -orient -stretch -posterize -hpagecnt -vpagecnt
- }
- pack $itk_component(cpb) -fill both -expand yes
-
- #
- # Hide the apply and help buttons.
- #
- buttonconfigure OK -text Print
- buttonconfigure Apply -command [itcl::code $this refresh] -text Refresh
- hide Help
-
- eval itk_initialize $args
- }
-
- # ------------------------------------------------------------------
- # METHOD: deactivate
- #
- # Redefines method of dialog shell class. Stops the drawing of the
- # thumbnail (when busy) upon deactivation of the dialog.
- # ------------------------------------------------------------------
- itcl::body iwidgets::Canvasprintdialog::deactivate {args} {
- $itk_component(cpb) stop
- return [eval Shell::deactivate $args]
- }
-
- # ------------------------------------------------------------------
- # METHOD: getoutput
- #
- # Thinwrapped method of canvas print box class.
- # ------------------------------------------------------------------
- itcl::body iwidgets::Canvasprintdialog::getoutput {} {
- return [$itk_component(cpb) getoutput]
- }
-
- # ------------------------------------------------------------------
- # METHOD: setcanvas
- #
- # Thinwrapped method of canvas print box class.
- # ------------------------------------------------------------------
- itcl::body iwidgets::Canvasprintdialog::setcanvas {canv} {
- return [$itk_component(cpb) setcanvas $canv]
- }
-
- # ------------------------------------------------------------------
- # METHOD: refresh
- #
- # Thinwrapped method of canvas print box class.
- # ------------------------------------------------------------------
- itcl::body iwidgets::Canvasprintdialog::refresh {} {
- return [$itk_component(cpb) refresh]
- }
-
- # ------------------------------------------------------------------
- # METHOD: print
- #
- # Thinwrapped method of canvas print box class.
- # ------------------------------------------------------------------
- itcl::body iwidgets::Canvasprintdialog::print {} {
- return [$itk_component(cpb) print]
- }
-