| '\" |
| '\" 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. |
| '\" |
| '\" @(#) notebook.n |
| '\" |
| '\" 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::notebook iwid |
| .BS |
| '\" Note: do not modify the .SH NAME line immediately below! |
| '\" |
| '\" |
| .SH NAME |
| iwidgets::notebook \- create and manipulate notebook widgets |
| .SH SYNOPSIS |
| \fBiwidgets::notebook\fR \fIpathName\fR ?\fIoptions\fR? |
| .SH "INHERITANCE" |
| itk::Widget <- iwidgets::Notebook |
| .SH "STANDARD OPTIONS" |
| .LP |
| .nf |
| .ta 4c 8c 12c |
| \fBbackground\fR \fBforeground\fR \fBscrollCommand\fR \fBwidth\fR |
| \fBcursor\fR \fBheight\fR |
| .fi |
| .LP |
| See the "options" manual entry for details on the standard options. |
| .SH "WIDGET-SPECIFIC OPTIONS" |
| .LP |
| .nf |
| Name: \fBauto\fR |
| Class: \fBAuto\fR |
| Command-Line Switch: \fB-auto\fR |
| .fi |
| .IP |
| Specifies whether to use the automatic packing/unpacking algorithm of the |
| notebook. A value of \fBtrue\fR indicates that page frames will be unpacked |
| and packed acoording to the algorithm described in the \fBselect\fR command. |
| A value of \fBfalse\fR leaves the current page packed and subsequent selects, |
| next, or previous commands do not switch pages automatically. In either |
| case the page's associated command (see the \fBadd\fR command's description |
| of the \fBcommand\fR option) is invoked. The value may have any of the |
| forms accepted by the \fBTcl_GetBoolean\fR, such as true, false, 0, 1, yes, |
| or no. |
| .IP |
| For example, if a series of pages in a notebook simply change certain display |
| configurations of a graphical display, the \fB-auto\fR flag could be used. |
| By setting it, the \fB-command\fR procs could do the appropriate reconfiguring |
| of the page when the page is switched. |
| .BE |
| .SH DESCRIPTION |
| .PP |
| The \fBiwidgets::notebook\fR command creates a new window (given by the pathName |
| argument) and makes it into a notebook widget. Additional options, described |
| above may be specified on the command line or in the option database to |
| configure aspects of the notebook such as its colors, font, and text. |
| The \fBiwidgets::notebook\fR command returns its \fIpathName\fR argument. At the time |
| this command is invoked, there must not exist a window named pathName, but |
| pathName's parent must exist. |
| |
| A notebook is a widget that contains a set of pages. It displays one page from |
| the set as the selected page. When a page is selected, the page's contents are |
| displayed in the page area. When first created a notebook has no pages. Pages |
| may be added or deleted using widget commands described below. |
| |
| .SH "NOTEBOOK PAGES" |
| .PP |
| A notebook's pages area contains a single child site \fBframe\fR. When a new |
| page is created it is a child of this frame. The page's child site frame |
| serves as a geometry container for applications to pack widgets into. It is |
| this frame that is automatically unpacked or packed when the \fBauto\fR |
| option is \fBtrue\fR. This creates the effect of one page being visible at |
| a time. When a new page is selected, the previously selected page's child |
| site frame is automatically unpacked from the notebook's child site frame |
| and the newly selected page's child site is packed into the notebook's |
| child site frame. |
| |
| However, sometimes it is desirable to handle page changes in a different |
| manner. By specifying the \fBauto\fR option as \fBfalse\fR, child site |
| packing can be disabled and done differently. For example, all widgets might |
| be packed into the first page's child site frame. Then when a new page is |
| selected, the application can reconfigure the widgets and give the appearance |
| that the page was flipped. |
| |
| In both cases the \fBcommand\fR option for a page specifies a Tcl Command to |
| execute when the page is selected. In the case of \fBauto\fR being \fBtrue\fR, |
| it is called between the unpacking of the previously selected page and the |
| packing of the newly selected page. |
| |
| .SH "WIDGET-SPECIFIC METHODS" |
| .PP |
| The \fBiwidgets::notebookfR 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 a notebook take as one argument an indicator |
| of which page of the notebook to operate on. These indicators are called |
| indexes and may be specified in any of the following forms: |
| .TP |
| \fInumber\fR |
| Specifies the index of the the component. For menus, 0 corresponds to the |
| left-most menu of the menu bar. For entries, 0 corresponds to the top-most |
| entry of the menu. |
| \fInumber\fR |
| Specifies the page numerically, where 0 corresponds to the first page in |
| the notebook, 1 to the second, and so on. |
| .TP |
| \fBselect\fR |
| Specifies the currently selected page's index. If no page is currently |
| selected, the value -1 is returned. |
| .TP |
| \fBend\fR |
| Specifes the last page in the notebooks's index. If the notebook is empty |
| this will return -1. |
| .TP |
| \fIpattern\fR |
| If the index doesn't satisfy the form of a number, then this form is used. |
| Pattern is pattern-matched against the \fBlabel\fR of each page in the |
| notebook, in order from the first to the last page, until a matching entry |
| is found. The rules of \fBTcl_StringMatch\fR are used. |
| .PP |
| '............................................................................. |
| The following commands are possible for notebook widgets: |
| .TP |
| \fIpathName\fR \fBadd\fR ?\fIoption value\fR? |
| Add a new page at the end of the notebook. A new child site frame is |
| created. Returns the child site pathName. If additional arguments are |
| present, they specify any of the following options: |
| .RS |
| .TP |
| \fB-background\fR \fIvalue\fR |
| Specifies a background color to use for displaying the child site frame |
| of this page. If this option is specified as an empty string (the default), |
| then the background option for the overall notebook is used. |
| .TP |
| \fB-command\fR \fIvalue\fR |
| Specifies a Tcl command to be executed when this page is selected. This |
| allows the programmer a hook to reconfigure this page's widgets or any other |
| page's widgets. |
| .IP |
| If the notebook has the auto option set to true, when a page is selected |
| this command will be called immediately after the previously selected page |
| is unpacked and immediately before this page is selected. The index value |
| select is valid during this Tcl command. `index select' will return this |
| page's page number. |
| .IP |
| If the auto option is set to false, when a page is selected the unpack and |
| pack calls are bypassed. This Tcl command is still called. |
| .TP |
| \fB-foreground\fR \fIvalue\fR |
| Specifies a foreground color to use for displaying tab labels when tabs are |
| in their normal unselected state. If this option is specified as an empty |
| string (the default), then the foreground option for the overall notebook |
| is used. |
| .TP |
| \fB-label\fR \fIvalue\fR |
| Specifies a string to associate with this page. This label serves as an |
| additional identifier used to reference the page. This label may be used |
| for the index value in widget commands. |
| .RE |
| .TP |
| \fIpathName\fR \fBchildSite\fR ?\fIindex\fR? |
| If passed no arguments, returns a list of pathNames for all the pages in |
| the notebook. If the notebook is empty, an empty list is returned |
| .IP |
| If index is passed, it returns the pathName for the page's child site |
| frame specified by index. Widgets that are created with this pathName will |
| be displayed when the associated page is selected. If index is not a valid |
| index, an empty string is returned. |
| .TP |
| \fIpathName\fR \fBcget\fR \fIoption\fR |
| Returns the current value of the configuration option given by \fIoption\fR. |
| .TP |
| \fIpathName\fR \fBconfigure\fR ?\fIoption\fR? ?\fIvalue\fR \fIoption\fR \fIvalue\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 option is specified). If one or more option-value 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::notebook\fR command. |
| .TP |
| \fIpathName\fR \fBdelete\fR \fIindex1\fR ?i\fRndex2? |
| Delete all of the pages between \fIindex1\fR and \fIindex2\fR inclusive. |
| If \fIindex2\fR is omitted then it defaults to \fIindex1\fR. Returns an |
| empty string. |
| .TP |
| \fIpathName\fR \fBindex\fR \fIindex\fR |
| Returns the numerical index corresponding to \fIindex\fR. |
| .TP |
| \fBpathName\fR \fBinsert\fR \fIindex\fR ?\fIoption\fR \fIvalue\fR? |
| Insert a new page in the notebook before the page specified by \fIindex\fR. |
| A new child site \fBframe\fR is created. See the \fBadd\fR command for |
| valid options. Returns the child site pathName. |
| .TP |
| \fIpathName\fR \fBnext\fR |
| Advances the selected page to the next page (order is determined by insertion |
| order). If the currently selected page is the last page in the notebook, |
| the selection wraps around to the first page in the notebook. |
| .IP |
| For notebooks with auto set to true the current page's child site is |
| unpacked from the notebook's child site frame. Then the next page's child |
| site is packed into the notebooks child site frame. The Tcl command given |
| with the command option will be invoked between these two operations. |
| .IP |
| For notebooks with auto set to false the Tcl command given with the |
| command option will be invoked. |
| .TP |
| \fIpathName\fR \fBpagecget\fR \fIindex\fR ?\fIoption\fR? |
| Returns the current value of the configuration option given by \fIoption\fR |
| for the page specified by \fIindex\fR. The valid available options are the |
| same as available to the \fBadd\fR command. |
| .TP |
| \fIpathName\fR \fBpageconfigure\fR \fIindex\fR ?\fIoption\fR? ?\fIvalue\fR \fIoption\fR \fIvalue\fR ...? |
| This command is similar to the configure command, except that it applies to |
| the options for an individual page, whereas configure applies to the options |
| for the notebook. Options may have any of the values accepted by the add |
| widget command. If options are specified, options are modified as indicated |
| in the command and the command returns an empty string. If no options are |
| specified, returns a list describing the current options for |
| page \fIindex\fR (see \fBTk_ConfigureInfo\fR for information on the |
| format of this list). |
| .TP |
| \fIpathName\fR \fBprev\fR |
| Moves the selected page to the previous page (order is determined by |
| insertion order). If the currently selected page is the first page in the |
| notebook, the selection wraps around to the last page in the notebook. |
| .IP |
| For notebooks with \fBauto\fR set to \fBtrue\fR the current page's child |
| site is unpacked from the notebook's child site frame. Then the previous |
| page's child site is packed into the notebooks child site frame. The Tcl |
| command given with the command option will be invoked between these two |
| operations. |
| .IP |
| For notebooks with \fBauto\fR set to \fBfalse\fR the Tcl command given with |
| the command option will be invoked. |
| .TP |
| \fIpathName\fR \fBselect\fR \fIindex\fR |
| Selects the page specified by \fIindex\fR as the currently selected page. |
| .IP |
| For notebooks with \fBauto\fR set to \fBtrue\fR the current page's child |
| site is unpacked from the notebook's child site frame. Then the index page's |
| child site is packed into the notebooks child site frame. The Tcl command |
| given with the command option will be invoked between these two operations. |
| .IP |
| For notebooks with \fBauto\fR set to \fBfalse\fR the Tcl command given with |
| the command option will be invoked. |
| .TP |
| \fIpathName\fR \fBview\fR |
| Returns the currently selected page. This command is for compatibility |
| with the scrollbar widget. |
| .TP |
| \fIpathName\fR \fBview\fR \fIindex\fR |
| Selects the page specified by \fIindex\fR as the currently selected page. |
| This command is for compatibility with the scrollbar widget. |
| .TP |
| \fIpathName\fR \fBview\fR \fImoveto\fR \fIfraction\fR |
| Uses the fraction value to determine the corresponding page to move to. |
| This command is for compatibility with the scrollbar widget. |
| .TP |
| \fIpathName\fR \fBview\fR \fIscroll\fR \fInum\fR \fIwhat\fR |
| Uses the \fInum\fR value to determine how many pages to move forward or |
| backward (num can be negative or positive). The \fIwhat\fR argument is |
| ignored. This command is for compatibility with the scrollbar widget. |
| |
| .SH EXAMPLE |
| .PP |
| Following is an example that creates a notebook with two pages. In this example, we use a scrollbar widget to control the notebook widget. |
| .nf |
| .IP |
| .ta 2c 8c 12c |
| .DS |
| package require Iwidgets 4.0 |
| # Create the notebook widget and pack it. |
| iwidgets::notebook .nb -width 100 -height 100 |
| pack .nb -anchor nw \\ |
| -fill both \\ |
| -expand yes \\ |
| -side left \\ |
| -padx 10 \\ |
| -pady 10 |
| .IP |
| # Add two pages to the notebook, labelled |
| # "Page One" and "Page Two", respectively. |
| .nb add -label "Page One" |
| .nb add -label "Page Two" |
| .IP |
| # Get the child site frames of these two pages. |
| set page1CS [.nb childsite 0] |
| set page2CS [.nb childsite "Page Two"] |
| .IP |
| # Create buttons on each page of the notebook |
| button $page1CS.b -text "Button One" |
| pack $page1CS.b |
| button $page2CS.b -text "Button Two" |
| pack $page2CS.b |
| .IP |
| # Select the first page of the notebook |
| .nb select 0 |
| .IP |
| # Create the scrollbar and associate teh scrollbar |
| # and the notebook together, then pack the scrollbar |
| scrollbar .scroll -command ".nb view" |
| .nb configure -scrollcommand ".scroll set" |
| pack .scroll -fill y -expand yes -pady 10 |
| .DE |
| .fi |
| .SH AUTHOR |
| Bill W. Scott |
| .SH KEYWORDS |
| notebook page |