Mega-Widget Implementation Details
Once again, briefly, here’s the basic structure of a Perl/Tk mega-widget, but this time using a derived NavListbox widget (described in Section 14.5) as the model:
1 package Tk::NavListbox;
2
3 use vars qw($VERSION);
4 $VERSION = '1.0';
5
6 use Tk::widgets qw(Listbox Dialog);
7 use base qw(Tk::Derived Tk::Listbox);
8 use strict;
9
10 Construct Tk::Widget 'NavListbox';
11
12 sub ClassInit {}
13 sub Populate {}
14
15 1;Line 1 declares the widget’s class name.
Lines 3 and 4 show another way of specifying the module’s version number.
Line 6 concisely declares the widgets used by the module.
Line 7 is the signature line of a derived
mega-widget, because the base class list starts with Tk::Derived and
includes another Tk widget class. Tk::Derived provides all the option
specification and configuration, and method delegation support
methods. A composite mega-widget would list a single base class,
either Tk::Toplevel or Tk::Frame. As Figure 14-4
shows, composite mega-widgets need not include Tk::Derived in their
@ISA array, because Tk::Derived is a base class of
Tk::Frame.
Line 10, also written as
Tk::Widget->Construct('NavListbox'), creates a
constructor named NavListbox in the class
Tk::Widget. When the user types:
$nlb = $mw->NavListbox;Perl eventually finds Tk::Widget::NavListbox via
MainWindow’s @ISA array. This constructor,
like all Perl/Tk widget constructors, then calls
Tk::Widget::new (described next) to actually
create the widget.
Lines 12 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access