topic "Pusher";
[2 $$0,0#00000000000000000000000000000000:Default]
[i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class]
[l288;2 $$2,0#27521748481378242620020725143825:desc]
[0 $$3,0#96390100711032703541132217272105:end]
[H6;0 $$4,0#05600065144404261032431302351956:begin]
[i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:item]
[l288;a4;*@5;1 $$6,6#70004532496200323422659154056402:requirement]
[l288;i1121;b17;O9;~~~.1408;2 $$7,0#10431211400427159095818037425705:param]
[i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam]
[b42;2 $$9,9#13035079074754324216151401829390:normal]
[{_} 
[ {{10000@3 [s0;%% [*@(229)4 Pusher]]}}&]
[s3; &]
[s1;:Pusher`:`:class: [@(0.0.255)3 class][3 _][*3 Pusher][3 _:_][@(0.0.255)3 public][3 _][*@3;3 Ctrl
]&]
[s9;%% Pusher is a base class for classes that perform simple action 
when clicked by mouse or by some keyboard interface (usually 
access key). Pusher handles all mouse input and checks whether 
keyboard events match Pusher`'s access key, however keyboard 
input can be also processed by derived classes and projected 
into Pusher`'s state by its methods (KeyPush, FinishPush). Accelerator 
key for Pusher is assigned either through the label (using `'`&`' 
or `'`\b`', see [^topic`:`/`/CtrlLib`/src`/LabelBase`$en`-us^ LabelBase]).&]
[s9;%% When Pusher is pushed and mouse is then released while hovering 
over pusher, PerformAction virtual method is invoked and its 
standard implementation invokes in turn WhenAction callback. 
Other than that, WhenPush and WhenRepeat callbacks are available.&]
[s0;%% &]
[s5;K%% [/ Derived from] [^topic`:`/`/CtrlCore`/src`/Ctrl`$en`-us`#`:`:Ctrl`:`:class Ctrl^ C
trl]&]
[s3;%% &]
[s0; &]
[ {{10000F(128)G(128)@1 [s0;%% [* Constructor Detail]]}}&]
[s3; &]
[s5;:Pusher`:`:Pusher`(`): [* Pusher]()&]
[s2;%% Initializes Pusher. Font is sent to standard GUI font, accelerator 
key is cleared.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:`~Pusher`(`): [@(0.0.255) `~][* Pusher]()&]
[s2;%% Default destructor.&]
[s3;%% &]
[s0; &]
[ {{10000F(128)G(128)@1 [s0;%% [* Protected Field List]]}}&]
[s3; &]
[s5;:Pusher`:`:accesskey: [_^byte^ byte]_[* accesskey]&]
[s2;%% Access key assigned to the Pusher.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:label: [_^String^ String]_[* label]&]
[s2;%% Text assigned to the Pusher.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:font: [_^Font^ Font]_[* font]&]
[s2;%% Font assigned to the Pusher.&]
[s3;%% &]
[s0;%% &]
[ {{10000F(128)G(128)@1 [s0;%% [* Protected Member List]]}}&]
[s3; &]
[s5;:Pusher`:`:KeyPush`(`): [@(0.0.255) void]_[* KeyPush]()&]
[s2;%% This method puts Pusher into `"pushed by keyboard`" state. 
It should be used as reaction to accelerator key by derived class.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:IsPush`(`)const: [@(0.0.255) bool]_[* IsPush]()_[@(0.0.255) const]&]
[s7;%% [*/ Return value]-|true when in pushed state.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:IsKeyPush`(`): [@(0.0.255) bool]_[* IsKeyPush]()&]
[s7;%% [*/ Return value]-|true when in pushed state initiated by keyboard.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:FinishPush`(`): [@(0.0.255) bool]_[* FinishPush]()&]
[s2;%% Forces end of pushed state and invokes PerformAction method 
(default implementation invokes standard WhenAction callback).&]
[s3;%% &]
[s4;%% &]
[s5;:Pusher`:`:RefreshPush`(`): [@(0.0.255) virtual] [@(0.0.255) void]_[* RefreshPush]()&]
[s2;%% This method should refresh part of concrete derived Pusher 
class that is being graphically changed as reaction to push state. 
Default implementation calls Refresh, however some classes (like 
Option) overload this to minimize repaint area size.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:RefreshFocus`(`): [@(0.0.255) virtual] [@(0.0.255) void]_[* RefreshFocus]()&]
[s2;%% This method should refresh part of concrete derived Pusher 
class that is being graphically changed as reaction to change 
of input focus. Default implementation calls Refresh, however 
some classes (like Option) overload this to minimize repaint 
area size.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:PerformAction`(`): [@(0.0.255) virtual] [@(0.0.255) void]_[* PerformAction](
)&]
[s2;%% This method is called when `"push`" is finished. Default implementation 
invokes WhenAction.&]
[s3;%% &]
[s0; &]
[ {{10000F(128)G(128)@1 [s0;%% [* Public Member List]]}}&]
[s3; &]
[s5;:Pusher`:`:SetFont`(Font`): [_^Pusher^ Pusher][@(0.0.255) `&]_[* SetFont]([_^Font^ Font]_
[*@3 fnt])&]
[s2;%% Sets the font that should be used in painting the concrete 
derived Pusher class. Pusher itself does not use this font anywhere, 
but most derived classes do.&]
[s7;%% [*C@3 fnt]-|Font.&]
[s7;%% [*/ Return value]-|`*this for method chaining.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:SetLabel`(const char`*`): [_^Pusher^ Pusher][@(0.0.255) `&]_[* SetLabel]([@(0.0.255) c
onst]_[@(0.0.255) char]_`*[*@3 text])&]
[s2;%% Sets the text of pusher. Pusher itself does not use this font 
anywhere, but most derived classes do. Text can contain `'`&`' 
or `'`\b`' characters to define access keys.&]
[s7;%% [*C@3 text]-|new text&]
[s7;%% [*/ Return value]-|`*this for method chaining.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:PseudoPush`(`): [@(0.0.255) void]_[* PseudoPush]()&]
[s2;%% Invokes `"push emulation`". Pusher will animate through states 
as if it would be pushed by the user, including calls to PerformAction 
(WhenAction), WhenPush and WhenRepeat.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:WhenPush: [_^Callback^ Callback]_[* WhenPush]&]
[s2;%% This callback is invoked when pusher goes from `"unpushed`" 
to `"pushed`" state.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:WhenRepeat: [_^Callback^ Callback]_[* WhenRepeat]&]
[s2;%% `"Pusher autorepeat`" `- this callback is periodically invoked 
when user holds mouse button over Pusher `- it emulates keyboard 
autorepeat (e.g. arrow buttons in scrollbar).&]
[s3; &]
[s4; &]
[s5;:Pusher`:`:ClickFocus`(bool`): [@(0.0.255) virtual] [_^Pusher^ Pusher][@(0.0.255) `&]_[* C
lickFocus]([@(0.0.255) bool]_[*@3 cf]_`=_[@(0.0.255) true])&]
[s2;%% If [%-*@3 cf] is true, Pusher will get focused on a mouse click.&]
[s7;%% [*@3 cf]-|click focusing&]
[s7;%% [*/ Return value]-|`*this for method chaining.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:NoClickFocus`(`): [_^Pusher^ Pusher][@(0.0.255) `&]_[* NoClickFocus]()&]
[s2;%% Same as [^topic`:`/`/CtrlLib`/src`/Pusher`$en`-us`#Pusher`:`:ClickFocus`(bool`)^ C
lickFocus](false).&]
[s3; &]
[s4; &]
[s5;:Pusher`:`:IsClickFocus`(`)const: [@(0.0.255) bool]_[* IsClickFocus]()_[@(0.0.255) cons
t]&]
[s2;%% Retrieves the value of ClickFocus.&]
[s3; &]
[s4; &]
[s5;:Pusher`:`:GetFont`(`)const: [_^Font^ Font]_[* GetFont]()_[@(0.0.255) const]&]
[s2;%% Returns the font that should be used in painting the concrete 
derived Pusher class. Pusher itself does not use this font anywhere, 
but most derived classes do.&]
[s3; &]
[s4; &]
[s5;:Pusher`:`:GetLabel`(`)const: [_^String^ String]_[* GetLabel]()_[@(0.0.255) const]&]
[s2;%% Returns the text of pusher. Pusher itself does not use this 
font anywhere, but most derived classes do. Text can contain 
`'`&`' or `'`\b`' characters to define access keys.&]
[s3;%% &]
[s4; &]
[s5;:Pusher`:`:GetVisualState`(`)const: [@(0.0.255) int]_[* GetVisualState]()_[@(0.0.255) c
onst]&]
[s2;%% Returns the current visual state of the current pusher:&]
[s7;%% CTRL`_NORMAL-|pusher is enabled and not interacting with mouse&]
[s7;%% CTRL`_HOT-|pusher is enabled and under the mouse cursor&]
[s7;%% CTRL`_PRESSED-|pusher is enabled and pressed&]
[s7;%% CTRL`_DISABLED-|pusher is disabled&]
[s3; &]
[s0; ]]