3.47 tab-panel%

► |  | The Racket Graphical Interface Toolkit

1 | Windowing
2 | Widget Gallery
3 | Windowing Classes
4 | Windowing Functions
5 | Editors
6 | Snip and Style Classes
7 | Editor Classes
8 | Editor Functions
9 | WXME Decoding
10 | Preferences
11 | Dynamic Loading
12 | Startup Actions
13 | Init Libraries
14 | Platform Dependencies
| Index

▼ | 3 | Windowing Classes

3.1 | area<%>
3.2 | area-container<%>
3.3 | area-container-window<%>
3.4 | button%
3.5 | canvas<%>
3.6 | canvas%
3.7 | check-box%
3.8 | checkable-menu-item%
3.9 | choice%
3.10 | clipboard-client%
3.11 | clipboard<%>
3.12 | combo-field%
3.13 | control<%>
3.14 | column-control-event%
3.15 | control-event%
3.16 | cursor%
3.17 | dialog%
3.18 | event%
3.19 | frame%
3.20 | gauge%
3.21 | group-box-panel%
3.22 | grow-box-spacer-pane%
3.23 | horizontal-pane%
3.24 | horizontal-panel%
3.25 | key-event%
3.26 | labelled-menu-item<%>
3.27 | list-box%
3.28 | list-control<%>
3.29 | menu%
3.30 | menu-bar%
3.31 | menu-item<%>
3.32 | menu-item%
3.33 | menu-item-container<%>
3.34 | message%
3.35 | mouse-event%
3.36 | pane%
3.37 | panel%
3.38 | popup-menu%
3.39 | printer-dc%
3.40 | radio-box%
3.41 | selectable-menu-item<%>
3.42 | separator-menu-item%
3.43 | scroll-event%
3.44 | slider%
3.45 | subarea<%>
3.46 | subwindow<%>
3.47 | tab-panel%
3.48 | text-field%
3.49 | timer%
3.50 | top-level-window<%>
3.51 | vertical-pane%
3.52 | vertical-panel%
3.53 | window<%>

On this page:

new
append
delete
get-item-label
get-number
get-selection
on-reorder
on-close-request
on-new-request
set
set-item-label
set-selection

Inherited methods:
from vertical-panel%
get-orientation
set-orientation
from subwindow<%>
reparent
from window<%>
accept-drop-files
client->screen
enable
focus
get-client-handle
get-client-size
get-cursor
get-handle
get-height
get-label
get-plain-label
get-size
get-width
get-x
get-y
has-focus?
is-enabled?
is-shown?
on-drop-file
on-focus
on-move
on-size
on-subwindow-char
on-subwindow-event
on-subwindow-focus
on-superwindow-activate
on-superwindow-enable
on-superwindow-show
popup-menu
refresh
screen->client
set-cursor
set-label
show
warp-pointer
wheel-event-mode
from area<%>
get-graphical-min-size
get-parent
get-top-level-window
min-height
min-width
stretchable-height
stretchable-width
from subarea<%>
horiz-margin
vert-margin
from area-container<%>
add-child
after-new-child
begin-container-sequence
border
change-children
container-flow-modified
container-size
delete-child
end-container-sequence
get-alignment
get-children
place-children
reflow-container
set-alignment
spacing

top contents ← prev up next →

class tab-panel% : class?
superclass: vertical-panel%

A tab panel arranges its subwindows in a single column, but also includes a horizontal row of tabs at the top of the panel. See also panel%.

The tab-panel% class does not implement the virtual swapping of the panel content when a new tab is selected. Instead, it merely invokes a callback procedure to indicate that a user changed the tab selection.

> > constructor
> > (new tab-panel% |
> > |  | [choices choices] |
> > |  | [parent parent] |
> > | [ | [callback callback] |
> > |  | [style style] |
> > |  | [font font] |
> > |  | [enabled enabled] |
> > |  | [vert-margin vert-margin] |
> > |  | [horiz-margin horiz-margin] |
> > |  | [border border] |
> > |  | [spacing spacing] |
> > |  | [alignment alignment] |
> > |  | [min-width min-width] |
> > |  | [min-height min-height] |
> > |  | [stretchable-width stretchable-width] |
> > |  | [stretchable-height stretchable-height]]) |
> → (is-a?/c tab-panel%)
> choices : (listof label-string?)
> | parent |  | : |  |
> (or/c (is-a?/c frame%) (is-a?/c dialog%)
> (is-a?/c panel%) (is-a?/c pane%))
> | callback |  | : |  |
> ((is-a?/c tab-panel%) (is-a?/c control-event%)
> . -> . any)
> |  |  | = |  | (lambda (b e) (void))
> | style |  | : |  |
> (listof (or/c 'no-border
> 'can-reorder 'can-close 'new-button
> 'flat-portable 'deleted))
> |  |  | = |  | null
> font : (is-a?/c font%) = normal-control-font
> enabled : any/c = #t
> vert-margin : spacing-integer? = 0
> horiz-margin : spacing-integer? = 0
> border : spacing-integer? = 0
> spacing : spacing-integer? = 0
> | alignment |  | : |  |
> (list/c (or/c 'left 'center 'right)
> (or/c 'top 'center 'bottom))
> |  |  | = |  | '(center top)
> min-width : (or/c dimension-integer? #f) = #f
> min-height : (or/c dimension-integer? #f) = #f
> stretchable-width : any/c = #t
> stretchable-height : any/c = #t

Creates a tab pane, where the choices list specifies the tab labels.

Each string in choices can contain an ampersand, which (in the future) may create a mnemonic for clicking the corresponding tab. A double ampersand is converted to a single ampersand.

The callback procedure is called (with the event type 'tab-panel) when the user changes the tab selection.

If the style list includes 'no-border, no border is drawn around the panel content. If the style list includes 'can-reorder, then the user may be able to drag tabs to reorder them, in which case on-reorder is called; reordering is always enabled if 'no-border is also included in style. If the style list includes 'can-close, then the user may be able to click a close icon for a tab, in which case on-close-request is called; closing is always enabled if 'no-border is also included in style. If the style list includes 'flat-portable or if the PLT_FLAT_PORTABLE_TAB_PANEL environment variable is defined when racket/gui is loaded, and if the style list also includes 'no-border, then a platform-independent implementation is used for the tab control; the 'flat-portable flag is effectively always included in style on Windows if either 'can-reorder or 'can-close is included. If the style list includes 'new-button and the platform-independent implementation is used for the tab control, then a new tab button is added to the right of the last tab to allow inserting new tabs. If the new tab button is clicked, on-new-request is called. If style includes 'deleted, then the tab panel is created as hidden, and it does not affect its parent’s geometry; the tab panel can be made active later by calling parent’s add-child method.

The font argument determines the font for the control. For information about the enabled argument, see window<%>. For information about the horiz-margin and vert-margin arguments, see subarea<%>. For information about the min-width, min-height, stretchable-width, and stretchable-height arguments, see area<%>.

Changed in version 1.55 of package gui-lib: Added the 'can-reorder and 'can-close styles.
Changed in version 1.56: Added the 'flat-portable style with reordering and closing support on Windows.
Changed in version 1.62: Added the 'new-button style.

> method (send a-tab-panel append choice) → void?
> choice : label-string?

Adds a tab to the right end of panel’s top row of tabs.

The label string choice can contain &, which (in the future) may create a mnemonic for clicking the new tab. A && is converted to &.

> method (send a-tab-panel delete n) → void?
> n : exact-nonnegative-integer?

Deletes an existing tab. If n is equal to or larger than the number of tabs on the panel, an exn:fail:contract exception is raised.

> method (send a-tab-panel get-item-label n) → string?
> n : exact-nonnegative-integer?

Gets the label of a tab by position. Tabs are numbered from 0. If n is equal to or larger than the number of tabs in the panel, an exn:fail:contract exception is raised.

> method (send a-tab-panel get-number) → exact-nonnegative-integer?

Returns the number of tabs on the panel.

> method (send a-tab-panel get-selection)
> → (or/c exact-nonnegative-integer? #f)

Returns the index (counting from 0) of the currently selected tab. If the panel has no tabs, the result is #f.

> method (send a-tab-panel on-reorder former-indices) → void?
> former-indices : (listof exact-nonnegative-integer?)

Refine this method with augment.
Called when the user reorders tabs by dragging, which is enabled where available by including the 'can-reorder style (possibly with 'no-border) when creating the panel. The former-indices list reports, for each new tab position, the position where the tab was located before reordering.

Added in version 1.55 of package gui-lib.

> method (send a-tab-panel on-close-request index) → void?
> index : exact-nonnegative-integer?

Called when the user clicks the close box in a tab, which is enabled where available by including the 'can-close style (possibly with 'no-border) when creating the panel. The index argument identifies the tab to potentially close.

Added in version 1.55 of package gui-lib.

> method (send a-tab-panel on-new-request) → void?

Called when the user clicks the new tab button in a tab panel, which is enabled where available by including the 'new-button style.

Added in version 1.62 of package gui-lib.

> method (send a-tab-panel set choices) → void?
> choices : (listof label-string?)

Removes all tabs from the panel and installs tabs with the given labels.

> method (send a-tab-panel set-item-label n label) → void?
> n : exact-nonnegative-integer?
> label : label-string?

Set the label for tab n to label. If n is equal to or larger than the number of tabs in the panel, an exn:fail:contract exception is raised.

> method (send a-tab-panel set-selection n) → void?
> n : exact-nonnegative-integer?

Sets the currently selected tab by index (counting from 0). If n is equal to or larger than the number of tabs in the panel, an exn:fail:contract exception is raised.
top contents ← prev up next →