summaryrefslogtreecommitdiff
path: root/itcl/iwidgets/generic/canvasprintdialog.itk
diff options
context:
space:
mode:
Diffstat (limited to 'itcl/iwidgets/generic/canvasprintdialog.itk')
-rw-r--r--itcl/iwidgets/generic/canvasprintdialog.itk155
1 files changed, 155 insertions, 0 deletions
diff --git a/itcl/iwidgets/generic/canvasprintdialog.itk b/itcl/iwidgets/generic/canvasprintdialog.itk
new file mode 100644
index 00000000000..ddd14cfc1a6
--- /dev/null
+++ b/itcl/iwidgets/generic/canvasprintdialog.itk
@@ -0,0 +1,155 @@
+#
+# 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]
+}