topic "StatusBar and related widgets"; [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] [{_}%EN-US [s0; [*+150 StatusBar related classes and routines]&] [s3;%- &] [ {{10000@3 [s0; [*@(229)4 InfoCtrl]]}}&] [s3; &] [s1;:InfoCtrl`:`:class:%- [@(0.0.255)3 class][3 _][*3 InfoCtrl][3 _:_][@(0.0.255)3 public][3 _][*@3;3 F rameLR][@(0.0.255)3 <][_^Ctrl^3 Ctrl][@(0.0.255)3 >][3 _]&] [s0; &] [s2; @@image:643&143 (A2cAFwAAAOn/AAAAAHic7dXNCYAwDAVgJ3YPR3ADD+I8riB0hwoeBJO2pjZtI7zwDhJKfz6pumN3CNIq6zIj6XjvOVr3F2c8QAMa0MwGaDXQhqtIhw8gzcLwOSUdI2h8S3znicGfxcizpGMELbaZ2mixteSdvmjBK9AGLXj1LIi9oklwYrZadNbEVNCqHuGe046YIpriEdKf/e5iaTSX8+vX3RVZZXhWsGMHDQEa0ID2r3A0jxIUuEpqnDYkNye2qVgt) &] [s0; &] [s9; InfoCtrl is a simple static Ctrl that represents information field. It is supposed to be used as Frame of StatusBar `- multiple InfoCtrls can be added as Frames to the StatusBar, filling it from the left or right.&] [s9; InfoCtrl is capable of displaying several sections with defined width, defined either as Value or as PaintRect. It is also able to display temporary content for the defined amount of time.&] [s0; &] [s0;%- [%%/ Derived from][%% ]FrameLR&] [s3; &] [s0;%- &] [ {{10000F(128)G(128)@1 [s0; [* Constructor Detail]]}}&] [s3;%- &] [s5;:InfoCtrl`:`:InfoCtrl`(`):%- [* InfoCtrl]()&] [s2; Constructor. Sets ThinInsetFrame as Frame 0 and `"Ready`" as the default text.&] [s3; &] [s0; &] [ {{10000F(128)G(128)@1 [s0; [* Public Method List]]}}&] [s3;%- &] [s5;:InfoCtrl`:`:Set`(int`,const PaintRect`&`,int`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) i nt]_[*@3 tab], [@(0.0.255) const]_[_^PaintRect^ PaintRect][@(0.0.255) `&]_[*@3 info], [@(0.0.255) int]_[*@3 width])&] [s5;:InfoCtrl`:`:Set`(int`,const Value`&`,int`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) in t]_[*@3 tab], [@(0.0.255) const]_[_^Value^ Value][@(0.0.255) `&]_[*@3 info], [@(0.0.255) int]_[*@3 width])&] [s2; Sets (creates if needed) the section of the InfoCtrl.&] [s7; [%-*C@3 tab]-|Index of section.&] [s7; [%-*C@3 info]-|Content of section. Value content is converted to the text using AsString, unless it is Image, which is displayed as is.&] [s7; [%-*C@3 width]-|Width of section in pixels. Negative value indicates that section should be placed given number of pixels from the right border of the InfoCtrl.&] [s3; &] [s4;%- &] [s5;:InfoCtrl`:`:Set`(const PaintRect`&`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) const]_[_^PaintRect^ P aintRect][@(0.0.255) `&]_[*@3 info])&] [s5;:InfoCtrl`:`:Set`(const Value`&`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) const]_[_^Value^ V alue][@(0.0.255) `&]_[*@3 info])&] [s2; Sets the single section that covers the whole InfoCtrl.&] [s7; [%-*C@3 info]-|Content of section.&] [s3; &] [s4;%- &] [s5;:InfoCtrl`:`:Temporary`(const PaintRect`&`,int`):%- [@(0.0.255) void]_[* Temporary]([@(0.0.255) c onst]_[_^PaintRect^ PaintRect][@(0.0.255) `&]_[*@3 info], [@(0.0.255) int]_[*@3 timeoout]_`= _[@3 2000])&] [s5;:InfoCtrl`:`:Temporary`(const Value`&`,int`):%- [@(0.0.255) void]_[* Temporary]([@(0.0.255) c onst]_[_^Value^ Value][@(0.0.255) `&]_[*@3 info], [@(0.0.255) int]_[*@3 timeout]_`=_[@3 2000]) &] [s2; Sets the temporary content, displayed instead of defined sections.&] [s7; [%-*C@3 info]-|Content.&] [s7; [%-*C@3 timeoout]-|Timespan of temporary content.&] [s3; &] [s4;%- &] [s5;:InfoCtrl`:`:EndTemporary`(`):%- [@(0.0.255) void]_[* EndTemporary]()&] [s2; Immediately stops displaying temporary content.&] [s3; &] [s4;%- &] [s5;:InfoCtrl`:`:GetTabCount`(`)const:%- [@(0.0.255) int]_[* GetTabCount]()_[@(0.0.255) con st]&] [s7; [*/ Return value]-|The number of sections.&] [s3; &] [s4;%- &] [s5;:InfoCtrl`:`:operator`=`(const String`&`):%- [@(0.0.255) void]_[* operator`=]([@(0.0.255) c onst]_[_^String^ String][@(0.0.255) `&]_[*@3 s])&] [s2; Same as Set(s).&] [s7; [%-*C@3 s]-|Content of single section covering the whole InfoCtrl.&] [s3; &] [s4;%- &] [s5;:InfoCtrl`:`:SetDefault`(const String`&`):%- [_^InfoCtrl^ InfoCtrl][@(0.0.255) `&]_[* S etDefault]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 d])&] [s2; Sets the default text `- this value is used instead of Null values passed to the Set method.&] [s7; [%-*C@3 d]-|Default text.&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s4;%- &] [s5;:InfoCtrl`:`:Left`(int`):%- [_^InfoCtrl^ InfoCtrl][@(0.0.255) `&]_[* Left]([@(0.0.255) in t]_[*@3 w])&] [s2; Sets up InfoCtrl to be placed [* left] when added as Frame with defined width.&] [s7; [%-*C@3 w]-|Width of InfoCtrl.&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s4;%- &] [s5;:InfoCtrl`:`:Right`(int`):%- [_^InfoCtrl^ InfoCtrl][@(0.0.255) `&]_[* Right]([@(0.0.255) i nt]_[*@3 w])&] [s2; Sets up InfoCtrl to be placed [* right] when added as Frame with defined width.&] [s7; [%-*C@3 w]-|Width of InfoCtrl.&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s0; &] [s0; &] [s0;%- &] [ {{10000@3 [s0; [*@(229)4 StatusBar]]}}&] [s3; &] [s1;:StatusBar`:`:class:%- [@(0.0.255)3 class][3 _][*3 StatusBar][3 _:_][@(0.0.255)3 public][3 _][*@3;3 I nfoCtrl]&] [s0; &] [s2; @@image:1268&131 (A8sAFQAAAOv/AAAAAHic7Zk9jsMgEEZ9/xtsGaXZYstEylG22CbpVuIOThHJIgzzEzAMWB96RWRbBr48YJSE/98AQBvWdXUfw1D8fH8BmY+cgWBUMPcxDA4EqwGCqUCwGiCYCgSrAYKpuAu2LIt7CMVAMJUawZaoFQ/gMIJlo0iu1MdlyZD20qhfC5WCcXMsDmcuNsGyUdDvvcWsqUvJ50b9GmkhmGUFJbufbwjFZI9IOiM5rnq4t8lj6INFsNvlfLuc6MPqsuUmONoqK4YKFueQLKvOgsmHdTesgl3zgslbE5e2YOZEdgUimNdRZd+pxtzBtse4Hcyya6lRzy6YWnF1E0x4+bCCZR82HpH2qOeyKzBFvj2Hvfh0gfeEE2yru4KtBgvvjgnnJnfFZfqVxIIJc6Q57DgGIVhhJN2QBLueXne5GmxfprMr4IdWA4Iz8a1sDbYvEOyQuP9VNDUQTCV2Jlt3Bb4GAxBMJRXsve7qWYPNyIpmaMYwH/c/75GiHb89Ac30xxw=) &] [s0; &] [s9; StatusBar is a Frame Ctrl intended to be used as informational bar at the bottom of the main application window.&] [s9; StatusBar is inherited from InfoCtrl and retains all the functionality of the base class. It adds `"size`-grip`" for resizing of the window (if supported by the platform) and changes its Frame behaviour to be placed at the bottom of its parent window. To add more fields to the StatusBar, use InfoCtrl widgets.&] [s0; &] [s0;%- [%%/ Derived from][%% ][^topic`:`/`/CtrlLib`/src`/StatusBar`$en`-us`#InfoCtrl`:`:class^ I nfoCtrl]&] [s3; &] [s0;%- &] [ {{10000F(128)G(128)@1 [s0; [* Constructor Detail]]}}&] [s3;%- &] [s5;:StatusBar`:`:StatusBar`(`):%- [* StatusBar]()&] [s2; Constructor. Sets the height based on the current system default font. If there is no global WhenHelpDefault() callback defined for the Bar, defines it so that Bar will use StatusBar to display Menu and ToolBar informational texts.&] [s3; &] [s4;%- &] [s5;:StatusBar`:`:`~StatusBar`(`):%- [@(0.0.255) `~][* StatusBar]()&] [s2; Default destructor.&] [s3;%- &] [s0; &] [s0;%- &] [ {{10000F(128)G(128)@1 [s0; [* Public Method List]]}}&] [s3;%- &] [s5;:StatusBar`:`:operator`=`(const String`&`):%- [@(0.0.255) virtual] [@(0.0.255) void]_[* operator`=]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 s]) &] [s2; Same as Set(s).&] [s7; [%-*C@3 s]-|Content of StatusBar.&] [s3; &] [s4;%- &] [s5;:StatusBar`:`:operator Callback1``(`):%- [* operator_Callback1]()&] [s7; [*/ Return value]-|A callback that, when invoked, calls Set for the StatusBar.&] [s3; &] [s4;%- &] [s5;:StatusBar`:`:Height`(int`):%- [_^StatusBar^ StatusBar][@(0.0.255) `&]_[* Height]([@(0.0.255) i nt]_[*@3 `_cy])&] [s2; Sets the height of the StatusBar.&] [s7; [%-*C@3 `_cy]-|The height.&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s4;%- &] [s5;:StatusBar`:`:NoSizeGrip`(`):%- [_^StatusBar^ StatusBar][@(0.0.255) `&]_[* NoSizeGrip]( )&] [s2; Do not display `"size grip`".&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s0; &] [s0; &] [s0;%- &] [ {{10000@3 [s0; [*@(229)4 ProgressInfo]]}}&] [s3; &] [s1;:ProgressInfo`:`:class:%- [@(0.0.255)3 class][3 _][*3 ProgressInfo]&] [s9; This class provides simple tool for displaying progress information in the StatusBar (or generally, in InfoCtrl). It connects to InfoCtrl object and replaces its content with progress indicator.&] [s3; &] [s0;%- &] [ {{10000F(128)G(128)@1 [s0; [* Constructor Detail]]}}&] [s3;%- &] [s5;:ProgressInfo`:`:ProgressInfo`(`):%- [* ProgressInfo]()&] [s2; Constructor.&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:ProgressInfo`(InfoCtrl`&`):%- [* ProgressInfo]([_^InfoCtrl^ InfoCtrl ][@(0.0.255) `&]_[*@3 f])&] [s2; Constructor.&] [s7; [%-*C@3 f]-|Target InfoCtrl.&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:`~ProgressInfo`(`):%- [@(0.0.255) `~][* ProgressInfo]()&] [s2; Destructor. Sets the Null to target InfoCtrl.&] [s3; &] [s0;%- &] [ {{10000F(128)G(128)@1 [s0; [* Public Method List]]}}&] [s3;%- &] [s5;:ProgressInfo`:`:Text`(const String`&`):%- [_^ProgressInfo^ ProgressInfo][@(0.0.255) `& ]_[* Text]([@(0.0.255) const]_[_^String^ String][@(0.0.255) `&]_[*@3 s])&] [s2; Sets the text to be displayed as the label of progress indicator.&] [s7; [%-*C@3 s]-|Text.&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:TextWidth`(int`):%- [_^ProgressInfo^ ProgressInfo][@(0.0.255) `&]_[* T extWidth]([@(0.0.255) int]_[*@3 cx])&] [s2; Sets the width of text. Zero means that the width has to be determined based on text.&] [s7; [%-*C@3 cx]-|Width in pixels.&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:Width`(int`):%- [_^ProgressInfo^ ProgressInfo][@(0.0.255) `&]_[* Width ]([@(0.0.255) int]_[*@3 `_cx])&] [s2; Sets the width of progress indicator. Default is 200.&] [s7; [%-*C@3 `_cx]-|Width in pixels.&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:Placement`(int`):%- [_^ProgressInfo^ ProgressInfo][@(0.0.255) `&]_[* P lacement]([@(0.0.255) int]_[*@3 `_tabi])&] [s2; Can be used to place progress indicator to specific section of InfoCtrl.&] [s7; [%-*C@3 `_tabi]-|Section index. Progress label is placed at [@3 `_tabi], progress indicator at [@3 `_tabi] `+ 1.&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:Info`(InfoCtrl`&`):%- [_^ProgressInfo^ ProgressInfo][@(0.0.255) `&]_ [* Info]([_^InfoCtrl^ InfoCtrl][@(0.0.255) `&]_[*@3 `_info])&] [s2; Specifies the target InfoCtrl.&] [s7; [%-*C@3 `_info]-|InfoCtrl. Must exists during the lifetime of ProgressInfo.&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:Total`(int`):%- [_^ProgressInfo^ ProgressInfo][@(0.0.255) `&]_[* Total ]([@(0.0.255) int]_[*@3 `_total])&] [s2; Sets the total number of progress steps.&] [s7; [%-*C@3 `_total]-|Total number.&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:Set`(int`,int`):%- [_^ProgressInfo^ ProgressInfo][@(0.0.255) `&]_[* Se t]([@(0.0.255) int]_[*@3 `_pos], [@(0.0.255) int]_[*@3 `_total])&] [s2; Sets the new progress information.&] [s7; [%-*C@3 `_pos]-|Current progress.&] [s7; [%-*C@3 `_total]-|Total number of progress steps.&] [s7; [*/ Return value]-|`*this for chaining.&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:Set`(int`):%- [@(0.0.255) void]_[* Set]([@(0.0.255) int]_[*@3 `_pos])&] [s2; Sets the new progress information.&] [s7; [%-*C@3 `_pos]-|Current progress. Total number of steps is set by Total method.&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:Get`(`)const:%- [@(0.0.255) int]_[* Get]()_[@(0.0.255) const]&] [s7; [*/ Return value]-|Current progress.&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:operator`=`(int`):%- [@(0.0.255) void]_[* operator`=]([@(0.0.255) int]_ [*@3 p])&] [s2; Same as Set(p).&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:operator`+`+`(`):%- [@(0.0.255) void]_[* operator`+`+]()&] [s2; Same as Set(Get() `+ 1)&] [s3; &] [s4;%- &] [s5;:ProgressInfo`:`:operator int`(`):%- [* operator_int]()&] [s7; [*/ Return value]-|Get().&] [s3; &] [s0; ]]