Games::Go::Dg2Tk - Perl extension to convert Games::Go::Diagrams
to perl/Tk windows.
use Games::Go::Dg2Tk
my $dg2tk = B<Games::Go::Dg2Tk-E<gt>new> (options);
my $canvas = $dg2tk->convertDiagram($diagram);
A Games::Go::Dg2Tk object converts a Games::Go::Diagram object
into Tk::Canvas item. The close method calls Tk::MainLoop to dispays
the collection of Canvases.
Bindings for the normal editing keys: Up, Down, Next (PageDown)
and Prior (PageUp) traverse the NoteBook tabs. Tab and Shift-tab also work
as expected.
Left and Right keys select the previous or next NoteBook tab, but
don't display it. Space and Enter (carriage return) display the selected
tab.
- my $dg2tk =
Games::Go::Dg2Tk->new (?options?)
- Any options passed to Dg2Tk that are not recognized are passed in turn to
the Tk::Canvas widgets as they are created (which may cause errors if
Tk::Canvas also does not recognize them).
A new Games::Go::Dg2Tk takes the following options:
- boardSize
=> number
- Sets the size of the board.
Default: 19
- doubleDigits
=> true | false
- Numbers on stones are wrapped back to 1 after they reach 100. Numbers
associated with comments and diagram titles are not affected.
Default: false
- coords => true |
false
- Generates a coordinate grid.
Default: false
- topLine =>
number (Default: 1)
- bottomLine
=> number (Default: 19)
- leftLine =>
number (Default: 1)
- rightLine
=> number (Default: 19)
- The edges of the board that should be displayed. Any portion of the board
that extends beyond these numbers is not included in the output.
- diaCoords
=> sub { # convert $x, $y to Games::Go::Diagram coordinates }
- This callback defines a subroutine to convert coordinates from
$x, $y to whatever
coordinates are used in the Games::Go::Diagram object. The default
diaCoords converts 1-based $x,
$y to the same coordinates used in SGF format
files. You only need to define this if you're using a different coordinate
system in the Diagram.
Default:
sub { my ($x, $y) = @_;
$x = chr($x - 1 + ord('a')); # convert 1 to 'a',
etc
$y = chr($y - 1 + ord('a'));
return("$x$y"); }, # concatenate two letters
- $dg2tk->configure (option => value, ?...?)
- Change Dg2Tk options from values passed at new time.
- $dg2tk->print ($text ? , ... ?)
- For most Dg2 converters, print inserts diagram source code (TeX,
ASCII, whatever) directly into the diagram source stream. Since Tk diplays
the diagrams immediately, there is no concept of a source stream, so
print just generates a warning.
- $dg2tk->printComment ($text ? , ... ?)
- Adds $text to the diagram comments.
- $dg2tk->comment ($comment ? , ... ?)
- For most Dg2 converters, comment inserts comments into the diagram
source code (TeX, ASCII, whatever). Since Tk diplays the diagrams
immediately, there is no concept of a source stream, so comment
does nothing.
- my $canvas =
$dg2tk->convertDiagram ($diagram)
- Converts a Games::Go::Diagram into a Tk::Canvas widget. Returns a
reference to the Canvas. The Canvas is also added to the Tk::NoteBook
collection of diagrams that are displayed (at close time).
- my $converted_text =
$dg2tk->convertText ($text)
- Converts $text into text for display - gee, that's
not very hard. In fact, this method simply returns whatever is passed to
it. This is really just a place-holder for more complicated converters.
Returns the converted text.
- $title = $dg2tk->convertProperties (\%sgfHash)
- convertProperties takes a reference to a hash of properties as
extracted from an SGF file. Each hash key is a property ID and the hash
value is a reference to an array of property values:
$hash->{propertyId}->[values]. The following
SGF properties are recognized:
Both long and short property names are recognized, and all
unrecognized properties are ignored with no warnings. Note that these
properties are all intended as game-level notations.
- $dg2tk->close
- prints any final text to the diagram (currently none) and closes
the dg2tk object. Also closes file if appropriate.
- $dg2tk->notebook
- Returns a reference to the notebook of Tk::Canvas objects.
- $dg2tk->diagrams
- Returns a reference to the list of Tk::Canvas objects that make up the
Tk::NoteBook of diagrams. Note that each item in the list is actually a
Tk::Scrolled object, the actual Tk::Canvas object is:
my $canvas = $dg2tk->diagrams->[$idx]->Subwidget('scrolled');
We ain't got to show you no stinkin' bugs!
Reid Augustin, <reid@hellosix.com>
Copyright (C) 2005 by Reid Augustin
This library is free software; you can redistribute it and/or
modify it under the same terms as Perl itself, either Perl version 5.8.5 or,
at your option, any later version of Perl 5 you may have available.