Prima::IntUtils - internal functions |
Prima::IntUtils - internal functions
The module provides packages, containing common functionality for some standard classes. The packages are designed as a code containers, not as widget classes, and are to be used as secondary ascendants in the widget inheritance declaration.
Implements routines for emulation of auto repeating mouse events.
A code inside MouseMove
callback can be implemented by
the following scheme:
if ( mouse_pointer_inside_the_scrollable_area) { $self-> scroll_timer_stop; } else { $self-> scroll_timer_start unless $self->scroll_timer_active; return unless $self-> scroll_timer_semaphore; $self-> scroll_timer_semaphore( 0); }
The class uses a semaphore {mouseTransaction}
, which should
be set to non-zero if a widget is in mouse capture state, and set
to zero or undef
otherwise.
The class starts an internal timer, which sets a semaphore and
calls MouseMove
notification when triggered. The timer is
assigned the timeouts, returned by Prima::Application::get_scroll_rate
( see get_scroll_rate in the Prima::Application manpage ).
Provides the common functionality for the widgets that delegate part of their surface to the border elements. A list box can be of an example, where its scroll bars and 3-d borders are such elements.
The property can accept and return the array either as a four scalars, or as an anonymous array of four scalars.
The class is used for widgets that contain optional scroll bars, and provides means for their maintenance. The class is the descendant of the Prima::IntIndents manpage, and adjusts the indents property when scrollbars are shown or hidden, or borderWidth is changed.
The class does not provide range selection for the scrollbars; the descentant classes must implement that.
The descendant classes must follow the guidelines:
borderWidth
, hScroll
, and vScroll
property keys in profile_default()
.
A class may provide autoHScroll
and autoVScroll
property keys in profile_default()
.
init()
method must set {borderWidth}
, {hScroll}
, and {vScroll}
variables to 0 before the initialization, call setup_indents
method,
and then assign the properties from the object profile.
If a class provides autoHScroll
and autoVScroll
properties, these must be set to
0 before the initialization.
borderWidth
, hScroll
, vScroll
,
autoHScroll
, and autoVScroll
properties,
it is mandatory to call the inherited properties.
HScroll_Change
and VScroll_Change
.
{borderWidth} - internal borderWidth storage {hScroll} - internal hScroll value storage {vScroll} - internal vScroll value storage {hScrollBar} - pointer to the horizontal scroll bar {vScrollBar} - pointer to the vertical scroll bar {bone} - rectangular widget between the scrollbars {autoHScroll} - internal autoHScroll value storage {autoVScroll} - internal autoVScroll value storage
The reserved method names:
set_h_scroll set_v_scroll insert_bone setup_indents borderWidth autoHScroll autoVScroll hScroll vScroll
The reserved widget names:
HScroll VScroll Bone
Recommended default value: 2
{hScrollBar}
points to it.
{vScrollBar}
points to it.
Dmitry Karasik, <dmitry@karasik.eu.org>.
Prima, the Prima::Widget manpage, the Prima::InputLine manpage, the Prima::Lists manpage, the Prima::Edit manpage, the Prima::Outlines manpage, the Prima::ScrollBar manpage.
Prima::IntUtils - internal functions |