|
NAMEPrima::Themes - object themes managementDESCRIPTIONProvides 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 asPrima::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/themesSEE ALSOPrima, Prima::Object, examples/themes.pl
Visit the GSP FreeBSD Man Page Interface. |