As an aide to learning Perl and wxPerl, I ported 45 of the C++ examples from the "wxBook" -"Cross-Platform GUI Programming with wxWidgets" by Smart, Hock, & Csomar. I apologise for the delay in getting these examples posted, but Life Happens.

While I have many years in real-time control system software development, I am new to
Ubuntu, Perl, and wxPerl. It is probably best to not try to learn all of these at the
same time, but that's where I am at.

I purchased a copy of "The wxBook" - "Cross-Platform GUI Programming with wxWidgets"
by Smart, Hock, & Csomar. After two complete read-throughs, I downloaded a copy of
wxIndustrialControls(Appendix E - www.koansoftware.com) and began a port of their
LCD Display program. I soon realized that I did not understand enough about the
relationship between C++ and wxPerl to complete this port.

To get past this learning curve I decided to port the C++ examples from the wxBook
to wxPerl. Over 45 examples have been ported so far. More ports are planned. Each
port was kept as close to the C++ example code as possible. However, changes were
made where required by differences in wxPerl syntax or implementation. Also, code
was added where necessary to provide screen output of the example topic.

The examples were coded to be clear to someone new to wxPerl(like myself) and it
is not my desire to trade clarity for efficiency. I believe in coding for the next
guy that has to maintain my code - KISS. Almost all programs deal with a single topic
unlike some of the other examples available on-line. The single topic implementation
should be easier for a beginner to grasp. I think this style would have shortened
my learning process. An exception is CppTrial-pg086.pl which consists of 20 short
Static and Non-Static Control examples. Most of these are 3-4 lines long and
don't need to be discussed individually.

As much as possible the setup code was kept the same from example to example. The
specific example code was isolated to a subroutine in the bottom half of the
program. These example code subroutines were called directly and via OnPaint and
OnMotion events as necessary to generate screen output of the example results.
You will notice that the setup code did evolve somewhat as the porting
progressed. An example of the learning curve in action!

Lessons Learned

---------------

The 2300+ page wx.pdf manual is hard to use on my relatively slow Thinkpad R31. The
search feature is so slow as to be unusable. So, page through the index to find your
topic, add 28 to the page number, then jump directly to that page.

Not all features in wxwidgets are implemented in wxPerl. Look for wxPerl specific
notes in wx.pdf. A digest of all of these notes would be useful.

wxwidgets features that use "wxArraySomething" will instead use a wxPerl list - @list
or a list reference \@list or array syntax x,y.

use Wx qw(:everything) doesn't really load all modules- like the Grid, HTML and Clipboard
modules. Substantial time can be spent locating the module that exports the function
that you need. It would be nice to have a directory of all the modules and their
exporters, as well as all constant definitions.

All porting was done using Ubuntu 10.10 and the PADRE IDE. This digest is regenerated
by a Perl script at the completion of a new port or modification to a support file like
this introduction(intro.txt).

The .png files used in these examples are not provided in this digest. Pick your own
and modify the path/file names as needed.

RESOURCES

---------

These resources were found to be useful in porting the wxBook examples. Many thanks
to their authors.

Good Luck! The wxBook is probably worth the money as a companion to the example code. I had trouble using the wxWidgets pdf document due to it's size. It takes forever to search for a topic on my old Thinkpad.