'\"
'\" Copyright (c) 1995 DSC Technologies Corporation
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
'\" @(#) panedwindow.n 1.21 94/12/17 16:04:44
'\" 
'\" The definitions below are for supplemental macros used in Tcl/Tk
'\" manual entries.
'\"
'\" .HS name section [date [version]]
'\"	Replacement for .TH in other man pages.  See below for valid
'\"	section names.
'\"
'\" .AP type name in/out [indent]
'\"	Start paragraph describing an argument to a library procedure.
'\"	type is type of argument (int, etc.), in/out is either "in", "out",
'\"	or "in/out" to describe whether procedure reads or modifies arg,
'\"	and indent is equivalent to second arg of .IP (shouldn't ever be
'\"	needed;  use .AS below instead)
'\"
'\" .AS [type [name]]
'\"	Give maximum sizes of arguments for setting tab stops.  Type and
'\"	name are examples of largest possible arguments that will be passed
'\"	to .AP later.  If args are omitted, default tab stops are used.
'\"
'\" .BS
'\"	Start box enclosure.  From here until next .BE, everything will be
'\"	enclosed in one large box.
'\"
'\" .BE
'\"	End of box enclosure.
'\"
'\" .VS
'\"	Begin vertical sidebar, for use in marking newly-changed parts
'\"	of man pages.
'\"
'\" .VE
'\"	End of vertical sidebar.
'\"
'\" .DS
'\"	Begin an indented unfilled display.
'\"
'\" .DE
'\"	End of indented unfilled display.
'\"
'\" @(#) man.macros 1.1 94/08/09 13:07:19
.\"
'\"	# Heading for Tcl/Tk man pages
.de HS
.ds ^3 \\0
.if !"\\$3"" .ds ^3 \\$3
.if '\\$2'cmds'      .TH "\\$1" 1 "\\*(^3" "\\$4" "\\$5"
.if '\\$2'lib'       .TH "\\$1" 3 "\\*(^3" "\\$4" "\\$5"
.if '\\$2'ncmds'     .TH "\\$1" n "\\*(^3" "\\$4" "\\$5"
.if '\\$2'tcl'       .TH "\\$1" n "\\*(^3"  Tcl   "Tcl Built-In Commands"
.if '\\$2'tk'        .TH "\\$1" n "\\*(^3"  Tk    "Tk Commands"
.if '\\$2'tclc'      .TH "\\$1" 3 "\\*(^3"  Tcl   "Tcl Library Procedures"
.if '\\$2'tkc'       .TH "\\$1" 3 "\\*(^3"  Tk    "Tk Library Procedures"
.if '\\$2'tclcmds'   .TH "\\$1" 1 "\\*(^3"  Tk    "Tcl Applications"
.if '\\$2'tkcmds'    .TH "\\$1" 1 "\\*(^3"  Tk    "Tk Applications"
.if '\\$2'iwid'      .TH "\\$1" 1 "\\*(^3"  Tk    "[incr Widgets]"
.if t .wh -1.3i ^B
.nr ^l \\n(.l
.ad b
..
'\"	# Start an argument description
.de AP
.ie !"\\$4"" .TP \\$4
.el \{\
.   ie !"\\$2"" .TP \\n()Cu
.   el          .TP 15
.\}
.ie !"\\$3"" \{\
.ta \\n()Au \\n()Bu
\&\\$1	\\fI\\$2\\fP	(\\$3)
.\".b
.\}
.el \{\
.br
.ie !"\\$2"" \{\
\&\\$1	\\fI\\$2\\fP
.\}
.el \{\
\&\\fI\\$1\\fP
.\}
.\}
..
'\"	# define tabbing values for .AP
.de AS
.nr )A 10n
.if !"\\$1"" .nr )A \\w'\\$1'u+3n
.nr )B \\n()Au+15n
.\"
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
.nr )C \\n()Bu+\\w'(in/out)'u+2n
..
'\"	# BS - start boxed text
'\"	# ^y = starting y location
'\"	# ^b = 1
.de BS
.br
.mk ^y
.nr ^b 1u
.if n .nf
.if n .ti 0
.if n \l'\\n(.lu\(ul'
.if n .fi
..
'\"	# BE - end boxed text (draw box now)
.de BE
.nf
.ti 0
.mk ^t
.ie n \l'\\n(^lu\(ul'
.el \{\
.\"	Draw four-sided box normally, but don't draw top of
.\"	box if the box started on an earlier page.
.ie !\\n(^b-1 \{\
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.el \}\
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.\}
.fi
.br
.nr ^b 0
..
'\"	# VS - start vertical sidebar
'\"	# ^Y = starting y location
'\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
.de VS
.mk ^Y
.ie n 'mc \s12\(br\s0
.el .nr ^v 1u
..
'\"	# VE - end of vertical sidebar
.de VE
.ie n 'mc
.el \{\
.ev 2
.nf
.ti 0
.mk ^t
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
.sp -1
.fi
.ev
.\}
.nr ^v 0
..
'\"	# Special macro to handle page bottom:  finish off current
'\"	# box/sidebar if in box/sidebar mode, then invoked standard
'\"	# page bottom macro.
.de ^B
.ev 2
'ti 0
'nf
.mk ^t
.if \\n(^b \{\
.\"	Draw three-sided box if this is the box's first page,
.\"	draw two sides but no top otherwise.
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
.\}
.if \\n(^v \{\
.nr ^x \\n(^tu+1v-\\n(^Yu
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
.\}
.bp
'fi
.ev
.if \\n(^b \{\
.mk ^y
.nr ^b 2
.\}
.if \\n(^v \{\
.mk ^Y
.\}
..
'\"	# DS - begin display
.de DS
.RS
.nf
.sp
..
'\"	# DE - end display
.de DE
.fi
.RE
.sp
..
.HS iwidgets::panedwindow iwid
.BS
'\" Note:  do not modify the .SH NAME line immediately below!
.SH NAME
iwidgets::panedwindow \- Create and manipulate a paned window widget
.SH SYNOPSIS
\fBiwidgets::panedwindow\fI \fIpathName \fR?\fIoptions\fR?
.SH "INHERITANCE"
itk::Widget <- iwidgets::Panedwindow
.SH "STANDARD OPTIONS"
.LP
.nf
.ta 4c 8c 12c
\fBbackground\fR	\fBcursor\fR
.fi
.LP
See the "options" manual entry for details on the standard options.
.SH "WIDGET-SPECIFIC OPTIONS"
.LP
.nf
Name:	\fBheight\fR
Class:	\fBHeight\fR
Command-Line Switch:	\fB-height\fR
.fi
.IP
Specifies the overall height of the paned window in any of the forms 
acceptable to \fBTk_GetPixels\fR.  The default is 10 pixels.
.LP
.nf
Name:	\fBorient\fR
Class:	\fBOrient\fR
Command-Line Switch:	\fB-orient\fR
.fi
.IP
Specifies the orientation of the separators: \fBvertical\fR or 
\fBhorizontal\fR.  The default is horizontal.
.LP
.nf
Name:	\fBsashBorderWidth\fR
Class:	\fBBorderWidth\fR
Command-Line Switch:	\fB-sashborderwidth\fR
.fi
.IP
Specifies a value indicating the width of the 3-D border to draw 
around the outside of the sash in any of the forms acceptable to 
\fBTk_GetPixels\fR.  The default is 2 pixels.
.LP
.nf
Name:	\fBsashCursor\fR
Class:	\fBCursor\fR
Command-Line Switch:	\fB-sashcursor\fR
.fi
.IP
Specifies the type of cursor to be displayed in the sash.  The default
is crosshair.
.LP
.nf
Name:	\fBsashHeight\fR
Class:	\fBHeight\fR
Command-Line Switch:	\fB-sashheight\fR
.fi
.IP
Specifies the height of the sash in any of the forms acceptable to 
\fBTk_GetPixels\fR.  The default is 10 pixels.
.LP
.nf
Name:	\fBsashIndent\fR
Class:	\fBSashIndent\fR
Command-Line Switch 	\fBsashindent\fR
.fi
.IP
Specifies the placement of the sash along the panes in any of the forms 
acceptable to \fBTk_GetPixels\fR.  A positive
value causes the sash to be offset from the near (left/top) side
of the pane, and a negative value causes the sash to be offset from
the far (right/bottom) side.  If the offset is greater than the 
width, then the sash is placed flush against the side.  The
default is -10 pixels.
.LP
.nf
Name:	\fBsashWidth\fR
Class:	\fBWidth\fR
Command-Line Switch:	\fB-sashwidth\fR
.fi
.IP
Specifies the width of the sash in any of the forms acceptable to 
\fBTk_GetPixels\fR.  The default is 10 pixels.
.LP
.nf
Name:	\fBshowHandle\fR
Class:	\fBShowHandle\fR
Command-Line Switch:	\fB-showhandle\fR
.fi
.IP
Specifies whether or not to display the sashes on the window panes.
The default is 1, and valid options are 0 and 1.
.LP
.nf
Name:	\fBthickness\fR
Class:	\fBThickness\fR
Command-Line Switch:	\fB-thickness\fR
.fi
.IP
Specifies the thickness of the separators in any of the forms acceptable to 
\fBTk_GetPixels\fR.  The default is 3 pixels.
.LP
.LP
.nf
Name:	\fBwidth\fR
Class:	\fBWidth\fR
Command-Line Switch:	\fB-width\fR
.fi
.IP
Specifies the overall width of the paned window in any of the forms 
acceptable to \fBTk_GetPixels\fR.  The default is 10 pixels.
.LP
.BE

.SH DESCRIPTION
.PP
The \fBiwidgets::panedwindow\fR command creates a multiple paned window widget 
capable of orienting the panes
either vertically or horizontally.  Each pane is itself a frame acting
as a child site for other widgets.  The border separating each pane 
contains a sash which allows user positioning of the panes relative to
one another.  

.SH "METHODS"
.PP
The \fBiwidgets::panedwindow\fR command creates a new Tcl command whose
name is \fIpathName\fR.  This
command may be used to invoke various
operations on the widget.  It has the following general form:
.DS C
\fIpathName option \fR?\fIarg arg ...\fR?
.DE
\fIOption\fR and the \fIarg\fRs
determine the exact behavior of the command.  
.PP
Many of the widget commands for the \fBpanedwindow\fR take as one argument an
indicator of which pane of the paned window to operate on.  These indicators
are called \fIindexes\fR and allow reference and manipulation of panes 
regardless of their current map state.  Paned window indexes may be 
specified in any of the following forms:
.TP 12
\fInumber\fR
Specifies the pane numerically, where 0 corresponds to the nearest 
(top/left-most) pane of the paned window. 
.TP 12
\fBend\fR
Indicates the farthest (bottom/right-most) pane of the paned window.
.TP 12
\fIpattern\fR
If the index doesn't satisfy one of the above forms then this
form is used.  \fIPattern\fR is pattern-matched against the tag of
each pane in the panedwindow, in order from left/top to right/left,
until a matching entry is found.  The rules of \fBTcl_StringMatch\fR
are used.

.SH "WIDGET-SPECIFIC METHODS"
.TP
\fIpathName \fBadd\fR \fItag\fR ?\fIoption value option value\fR?
Adds a new pane to the paned window on the far side (right/bottom).  The 
following options may be specified:
.RS
.TP
\fB-margin\fR \fIvalue\fR
Specifies the border distance between the pane and pane contents is any of
the forms acceptable to \fBTk_GetPixels\fR.  The default is 8 pixels.
.TP
\fB-minimum\fR \fIvalue\fR
Specifies the minimum size that a pane's contents may reach not
inclusive of twice the margin in any of the forms acceptable to 
\fBTk_GetPixels\fR.  The default is 10 pixels.

The \fBadd\fR method returns the path name of the pane.
.RE
.TP
\fIpathName \fBcget\fR \fIoption\fR
Returns the current value of the configuration option given
by \fIoption\fR.
\fIOption\fR may have any of the values accepted by the \fBiwidgets::panedwindow\fR
command.
.TP
\fIpathName \fBchildsite\fR ?\fIindex\fR?
Returns a list of the child site path names or a specific child site given 
an index.  The list is constructed from the near side (left/top) to the far 
side (right/bottom).
.TP
\fIpathName\fR \fBconfigure\fR ?\fIoption\fR? ?\fIvalue option value ...\fR?
Query or modify the configuration options of the widget.
If no \fIoption\fR is specified, returns a list describing all of
the available options for \fIpathName\fR (see \fBTk_ConfigureInfo\fR for
information on the format of this list).  If \fIoption\fR is specified
with no \fIvalue\fR, then the command returns a list describing the
one named option (this list will be identical to the corresponding
sublist of the value returned if no \fIoption\fR is specified).  If
one or more \fIoption\-value\fR pairs are specified, then the command
modifies the given widget option(s) to have the given value(s);  in
this case the command returns an empty string.
\fIOption\fR may have any of the values accepted by the \fBiwidgets::panedwindow\fR
command.
.TP
\fIpathName \fBdelete\fR \fIindex\fR
Deletes a specified pane given an \fIindex\fR.
.TP
\fIpathName \fBfraction\fR \fIpercentage\fR \fIpercentage\fR ?\fIpercentage percentage ...\fR?
Sets the visible percentage of the panes.  Specifies a set of
percentages which are applied to the visible panes from the near side
(left/top).  The number of percentages must be equal to the current number
of visible (mapped) panes and add up to 100.
.TP
\fIpathName \fBhide\fR \fIindex\fR
Changes the visiblity of the specified pane, allowing a previously displayed
pane to be visually removed rather than deleted.
.TP
\fIpathName \fBindex\fR \fIindex\fR
Returns the numerical index corresponding to index.
.TP
\fIpathName \fBinsert \fIindex\fR \fItag\fR ?\fIoption value option value ...\fR?
Same as the \fBadd\fR command except that it inserts the new
pane just before the one given by \fIindex\fR, instead of appending
to the end of the panedwindow.  The \fIoption\fR, and \fIvalue\fR
arguments have the same interpretation as for the \fBadd\fR widget
command.  
.TP
\fIpathName \fBpaneconfigure\fR \fIindex\fR ?\fIoptions\fR?
This command is similar to the \fBconfigure\fR command, except that
it applies to the options for an individual pane, whereas \fBconfigure\fR
applies to the options for the paned window as a whole.
\fIOptions\fR may have any of the values accepted by the \fBadd\fR
widget command.  If \fIoptions\fR are specified, options are modified
as indicated in the command and the command returns an empty string.
If no \fIoptions\fR are specified, returns a list describing
the current options for entry \fIindex\fR (see \fBTk_ConfigureInfo\fR for
information on the format of this list).
.TP
\fIpathName \fBreset\fR
Redisplays the pane window using default percentages.
.TP
\fIpathName \fBshow\fR \fIindex\fR
Changes the visiblity of the specified pane, allowing a previously hidden
pane to be displayed.

.SH "NOTES"
.IP
Dynamic changing of the margin and or minimum options to values which
make the current configuration invalid will block subsequent sash
movement until the fractions are modified via the fraction method.
For example a panedwindow is created with three panes and the minimum
and margin options are at their default settings.  Next the user moves
the sashes to compact the panes to one side.  Now, if the minimum is
increased on the most compressed pane via the paneconfigure method to 
a large enough value, then sash movement is blocked
until the fractions are adjusted.  This situation is unusual and under
normal operation of the panedwindow, this problem will never occur.
.LP

.SH EXAMPLE
.DS
 package require Iwidgets 4.0
 iwidgets::panedwindow .pw -width 300 -height 300 
 .pw add top
 .pw add middle -margin 10
 .pw add bottom -margin 10 -minimum 10

 pack .pw -fill both -expand yes

 foreach pane [.pw childSite] {
    button $pane.b -text $pane -relief raised -borderwidth 2
    pack $pane.b -fill both -expand yes
 }

 .pw fraction 50 30 20
 .pw paneconfigure 0 -minimum 20
 .pw paneconfigure bottom -margin 15
.DE
.SH ACKNOWLEDGEMENTS:
.LP
Jay Schmidgall
.IP
1994 - Base logic posted to comp.lang.tcl
.LP
Joe Hidebrand <hildjj@fuentez.com>
.IP
07/25/94 - Posted first multipane version to comp.lang.tcl
.LP
.IP
07/28/94 - Added support for vertical panes
.LP
Ken Copeland <ken@hilco.com>
.IP
09/28/95 - Smoothed out the sash movement and added squeezable panes.
.LP
.SH AUTHOR
Mark L. Ulferts
.SH KEYWORDS
panedwindow, widget
