Reindex(3pm) perl/Tk Documentation Reindex(3pm)NAME
Tk::Reindex - change the base index of Text-like widgets
SYNOPSIS
use Tk::ReindexedText;
$t1=$w->ReindexedText(-linestart => 2);
use Tk::ReindexedROText;
$t2=$w->ReindexedROText(-linestart => 0);
DESCRIPTION
Creates a new widget class based on Text-like widgets that can redefine the line number base (normally Text widgets start line numbers at
1), or possibly other manipulations on indexes.
STANDARD OPTIONS
The newly-defined widget takes all the same options as the base widget, which defaults to Text.
WIDGET-SPECIFIC OPTIONS
Name: lineStart
Class: LineStart
Switch: -linestart
Sets the line number of the first line in the Text widget. The default -toindexcmd and -fromindexcmd use this configuration option.
-item Name: toIndexCmd fromIndexCmd
-item Class: ToIndexCmd FromIndexCmd
-item Switch: -toindexcmd -fromindexcmd
These two options specify callbacks that are called with a list of indexes and are responsible for translating them to/from indexes
that the base Text widget can understand. The callback is passed the widget followed by a list of indexes, and should return a list of
translated indexes. -toindexcmd should translate from 'user' indexes to 'native' Text-compatible indexes, and -fromindexcmd should
translate from 'native' indexes to 'user' indexes.
The default callbacks simply add/subtract the offset given by the -linestart option for all indexes in 'line.character' format.
It would probably be prudent to make these functions inverses of each other.
CLASS METHODS
import
To make new Reindex widgets, this function should be called via use with the name of the Text-like base class that you are extending
with "Reindex" capability. 'use base(Tk::Reindex Tk::nameofbasewidget)' should also be specified for that widget.
BUGS
I've used the word "indexes" instead of "indices" throughout the documentation.
All the built-in perl code for widget bindings & methods will use the new 'user' indexes. Which means all this index manipulation might
might break code that is trying to parse/manipulate indexes. Or even assume that '1.0' is the beginning index. Tk::Text::Contents comes to
mind.
AUTHOR
Andrew Allen <ada@fc.hp.com>
This code may be distributed under the same conditions as Perl.
Tk1.1 2010-05-29 Reindex(3pm)
Check Out this Related Man Page
overview(3pm) User Contributed Perl Documentation overview(3pm)NAME
Tk - An overview of an Object Oriented Tk8 extension for perl5
SYNOPSIS
"use Tk;"
"$main = MainWindow->new();"
"$widget = $main->Widget(...);"
"$widget->pack(...);"
...
"MainLoop;"
DESCRIPTION
In writing the perl Tk extension, the goals were to provide a complete interface to the latest production version of John Ousterhout's Tk,
while providing an Object Oriented interface to perl code.
CONTENTS
The package is composed of three loosely connected parts:
pTk - Converted Tk source
The pTk sub-directory is a copy of the C code of Tk8.x, modified to allow use by languages other than the original Tcl. (The pTk can
be read as 'perl' Tk or 'portable' Tk, depending on your sensibilities.)
Tk to Perl 'Glue'
The top level directory provides Tk.xs and tkGlue.c which provide the perl-callable interfaces to pTk
Perl code for 'Widget' Classes
The Tk sub-directory contains the various perl modules that comprise the "Classes" that are visible to Tk applications.
The "major" widgets such as Tk::Text are actually in separate directories at the top level (e.g. Text/* for Tk::Text) and are
dynamically loaded as needed on platforms which support perl5's DynaLoader.
CLASS HIERARCHY
package Tk; - the 'base class'
All the "command names" documented in Tcl/Tk are made to look like perl sub's and reside in the Tk package. Their names are all lower
case. Typically there are very few commands at this level which are called directly by applications.
package Tk::Widget; - the 'Widget class'
There are no actual objects of the Tk::Widget class; however all the various Tk window "widgets" inherit from it, and it in turn
inherits all the core Tk functions from Tk.
Tk::Widget provides various functions and interfaces which are common to all Widgets.
A widget is represented to perl as a blessed reference to a hash. There are some members of the hash which are private to Tk and its
tkGlue code. Keys starting with '.' and of the form /_[A-Z][A-Za-z_]+_/ (i.e. starting and ending in _ and with first char after _
being upper case) should be considered reserved to Tk.
Tk::Button, Tk::Entry, Tk::Text ...
There is one class for each of the "Tk" widget item types. Some of them like Tk::Frame do very little indeed, and really only exist so
that they can be derived from or so that focus or menu traversal can discover the "kind" of window being processed.
Other classes, Tk::Text for example, provide a lot of methods used with Tk's "bind" to provide a rich keyboard/mouse interface to the
widgets' data.
These widget classes also include conversions of the Tcl code for event bindings, keyboard focus traversal, menu bars, and menu
keyboard traversal. All the Tcl functions have been converted, but the names have changed (systematically) and they have been split up
between the various classes in what I hope is an appropriate manner. Name changes are normally: dropping initial tk_ as the Tk-ness is
implicit in the Tk:: prefix, and similarly dropping say Menu from the name if it has been moved the Tk::Menu class. Thus 'proc
tkMenuNextEntry' becomes 'sub NextEntry' in the Tk::Menu package.
Tk::Image
This does for Tk8.x's "images" what Tk::Widget does for widgets. Images are new to Tk8.x and the class structure is not mature either.
There are three sub-classes Tk::Bitmap, Tk::Pixmap and Tk::Photo.
It is possible to create dynamic or auto-loaded image types inherited from Tk::Image for other image types or photo formats (e.g.
support for TIFF format).
Composite Widgets
A composite is some kind of 'frame' with subwidgets which give it useful behaviour. Tk::Dialog is an example of a composite widget
classes built from the basic Tk ones. It is intended that user code should not need to be aware that a particular class is a
composite, and create and configure such widgets in the same manner as any other kind. The configure mechanism and the methods of the
class manipulate the subwidgets as required.
Composite widgets are implemented via Tk::Frame and multiple inheritance. The two 'frame' base classes Tk::Frame and Tk::Toplevel
include the additional class Tk::Derived in their inheritance. Tk::Derived provides methods to allow additional configure options to be
defined for a widget.
A Composite widget is typically defined as derived from Tk::Frame or Tk::Toplevel (e.g. Tk::Dialog).
perl v5.14.2 2010-05-29 overview(3pm)