You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
5.5 KiB
Plaintext
156 lines
5.5 KiB
Plaintext
#
|
|
# 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]
|
|
}
|