I am probably reinventing some wheel here so please let me know
what should I use instead of my home grown dialog creation.

Basically I create an array such as this and call the build_layout method of
my "dialog generator" which then creates a
Wx::BoxSizer->new( Wx::wxVERTICAL ), inside it creates rows using
Wx::BoxSizer->new( Wx::wxHORIZONTAL )
and in every row it Adds the widgets as describe in the internal array.

Every widget has a 'type', an optional name so we can later get fetch the data
from it,  an argument that is usually its "title" and another optional
argument that
is some widget specific information, usually a default value.


        my @layout = (
                [
                        [ 'Wx::StaticText', undef,              'Module Name:'],
                        [ 'Wx::TextCtrl',   '_module_name_',    ''],
                ],
                [
                        [ 'Wx::StaticText', undef,              'Author:'],
                        [ 'Wx::TextCtrl',   '_author_name_',    ''],
                ],
                [
                        [ 'Wx::StaticText', undef,              'Email:'],
                        [ 'Wx::TextCtrl',   '_email_',          ''],
                ],
                [
                        [ 'Wx::StaticText', undef,              'Builder:'],
                        [ 'Wx::ComboBox',   '_builder_choice_', '',       
[EMAIL PROTECTED],
                ],
                [
                        [ 'Wx::StaticText', undef,              'License:'],
                        [ 'Wx::ComboBox',   '_license_choice_', '',       
[EMAIL PROTECTED],
                ],
                [
                        [ 'Wx::StaticText',      undef,         'Parent 
Directory:'],
                        [ 'Wx::DirPickerCtrl',   '_directory_', '',   'Pick 
parent directory'],
                ],
                [
                        [ 'Wx::Button',     '_ok_',           Wx::wxID_OK],
                        [ 'Wx::Button',     '_cancel_',       Wx::wxID_CANCEL],
                ]

I have to add the events "manually" but the above made my code a lot cleaner
than earlier.

So I wonder how do others make it easier for themselves to create
dialogs in a relatively clean way?

Two dialogs where I have used this already are:

http://svn.perlide.org/padre/trunk/lib/Padre/Wx/FindDialog.pm
http://svn.perlide.org/padre/trunk/lib/Padre/Wx/ModuleStartDialog.pm



Gabor

Reply via email to