|  |  
 |   |   
 NAMEPrima::Themes - object themes management DESCRIPTIONProvides layer for theme registration in Prima. Themes are loosely grouped alternations of default class properties and behavior, by default stored in "Prima/themes" subdirectory. The theme realization is implemented as interception of object profile during its creation, inside "::profile_add". Various themes apply various alterations, one way only - once an object is applied a theme, it cannot be neither changed nor revoked thereafter. Theme configuration can be stored in an rc file, ~/.prima/themes, and is loaded automatically, unless $Prima::Themes::load_rc_file explicitly set to 0 before loading the "Prima::Themes" module. In effect, any Prima application not aware of themes can be coupled with themes in the rc file by the following: perl -MPrima::Themes program "Prima::Themes" namespace provides registration and execution functionality. "Prima::Themes::Proxy" is a class for overriding certain methods, for internal realization of a theme. For interactive theme selection use examples/theme.pl sample program. SYNOPSIS        # register a theme file
        use Prima::Themes qw(color);
        # or
        use Prima::Themes; load('color');
        # list registered themes
        print Prima::Themes::list;
        # install a theme
        Prima::Themes::install('cyan');
        # list installed themes
        print Prima::Themes::list_active;
        # create object with another theme while 'cyan' is active
        Class->create( theme => 'yellow');
        # remove a theme
        Prima::Themes::uninstall('cyan');
Prima::Themes
 Prima::Themes::ProxyAn instance of "Prima::Themes::Proxy", created as Prima::Themes::Proxy-> new( $OBJECT) is a non-functional wrapper for any Perl object $OBJECT. All methods of $OBJECT, except "AUTOLOAD", "DESTROY", and "new", are forwarded to $OBJECT itself transparently. The class can be used, for example, to deny all changes to "lineWidth" inside object's painting routine:         package ConstLineWidth;
        use vars qw(@ISA);
        @ISA = qw(Prima::Themes::Proxy);
        sub lineWidth { 1 } # line width is always 1 now!
        Prima::Themes::register( '~/lib/constlinewidth.pm', 'constlinewidth',
                [ 'Prima::Widget' => {
                        onPaint => sub {
                                my ( $object, $canvas) = @_;
                                $object-> on_paint( ConstLineWidth-> new( $canvas));
                        },
                } ]
        );
AUTHORDmitry Karasik, <dmitry@karasik.eu.org>. FILES~/.prima/themes SEE ALSOPrima, Prima::Object, examples/themes.pl 
 
 |