NAME¶
Padre::Wx::Role::Main - Convenience methods for children of the main window
DESCRIPTION¶
This role implements the fairly common method pattern for Wx elements that are
children of Padre::Wx::Main.
It provides accessors for easy access to the most commonly needed elements, and
shortcut integration with the Padre::Current context system.
METHODS¶
"ide"¶
my $ide = $object->ide;
Get the Padre IDE instance that this object is a child of.
"config"¶
my $config = $object->config;
Get the Padre::Config for the current user. Provided mainly as a convenience
because it is needed so often.
Please note that this method does NOT integrate with the Padre::Current context
system. Any project-specific configuration of overrides of default behaviour
will not be present in this configuration object.
For a project-aware configuration, use the following instead.
$self->current->config;
"main"¶
my $main = $object->main;
Get the Padre::Wx::Main main window that this object is a child of.
"aui"¶
my $aui = $object->aui;
Convenient access to the Wx Advanced User Interface (AUI) Manager object.
current¶
my $current = $object->current;
Get a new "Padre::Current" context object, for access to other parts
of the current context.
lock_update¶
my $lock = $object->lock_update;
The Padre::Locker API in Padre provides a solid and extensible system for
locking of IDE resources when large-scale change of state is to occur.
Unfortunately, there are some cases in which this mechanism can cause problems.
Window update locking using this API is done on the entire main window. The
resulting "Freeze"/"Thaw" calls are recursive on Windows,
and as "Thaw" calls invalidate the painted state of widgets, this
results in a global redraw and on the non-double-bufferred Windows platform
this causes flickering.
When a piece of code is making very targeted changes to just the graphical state
of the application and will only need an UPDATE lock (i.e. does not need
refresh or database locks) the alternative "lock_update" method
provides a convenience for creating a Wx::WindowUpdateLocker independent of
the main locking API.
By using a localised lock and avoiding a global update lock, this should remove
global flickering on these changes, and limit flickering to just the element
being update, which should be much less noticeable.
COPYRIGHT & LICENSE¶
Copyright 2008-2012 The Padre development team as listed in Padre.pm.
This program is free software; you can redistribute it and/or modify it under
the same terms as Perl 5 itself.
The full text of the license can be found in the LICENSE file included with this
module.