X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkWxBlackBox.h;h=700fa3e044a32849732f2995e398f759f1a3c0c0;hb=1cad1aa48a5353dc6844018dc8b756f876e17394;hp=e0418a101c308dd92639adb203c58fa14b8955af;hpb=5ca30b861f60def2666a1c675e8b45df0a713f95;p=bbtk.git diff --git a/kernel/src/bbtkWxBlackBox.h b/kernel/src/bbtkWxBlackBox.h index e0418a1..700fa3e 100644 --- a/kernel/src/bbtkWxBlackBox.h +++ b/kernel/src/bbtkWxBlackBox.h @@ -3,8 +3,8 @@ Program: bbtk Module: $RCSfile: bbtkWxBlackBox.h,v $ Language: C++ - Date: $Date: 2008/02/08 10:05:38 $ - Version: $Revision: 1.7 $ + Date: $Date: 2008/03/10 12:28:43 $ + Version: $Revision: 1.9 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -74,15 +74,37 @@ namespace bbtk public: typedef WxBlackBoxWindow Window; - /// Returns the window associated to the box + /// Returns the **OWN** window associated to the box /// If 0 returned = no window Window* bbGetWindow() { return bbmWindow; } - /// Returns the Parent Window that must be used to create the widget - wxWindow* bbGetWxParent() { return Wx::GetTopWindow(); } + /// Returns the window containing the widget associated to the box + /// Which can be the own window of **ANOTHER** box in case of + /// a hierarchy of widgets. + /// More precisely : + /// If bbGetWindow() != 0 then returns bbGetWindow() + /// Else if the output 'Widget' is connected + /// then returns bbGetContainingWindow() of the box connected to 'Widget' + /// Else returns 0; + Window* bbGetContainingWindow(); + /// Returns the parent wxWindow that must be used to create the widget + wxWindow* bbGetWxParent(); + /// Returns true iff the 'containing window' exists and is shown + /// (see bbGetContainingWindow). + bool bbIsShown(); + + //================================================================== + /// User callback invoked when the containing window is shown + virtual void bbUserOnShow() {} + //================================================================== + //================================================================== + /// User callback invoked when the containing window is hidden + virtual void bbUserOnHide() {} + //================================================================== + protected: @@ -100,24 +122,35 @@ namespace bbtk /// ** Must be defined ** virtual void bbUserCreateWidget() { - bbtkError(bbGetTypeName()<<" is a WxBlackBox whose bbUserCreateWidget methods is undefined : cannot work !!"); + bbtkError(bbGetTypeName()<<" is a WxBlackBox whose bbUserCreateWidget methods is not overloaded : is it a feature or a bug ?!?"); } //================================================================== + + + + + + + + //================================================================== - /// Calls the user defined widget creation method - /// and the user processing method and then displays the window - virtual void bbProcess() - { - if (bbGetOutputWidget()==0) this->bbUserCreateWidget(); - this->bbUserProcess(); - bbShowWindow(); - } + /// Overloaded processing method for WxBlackBoxes : + /// 1) if the widget is null then + /// calls the user defined widget creation method : bbUserCreateWidget() + /// 2) calls the user defined processing method : bbUserProcess() + /// 3) displays the window : bbShowWindow(); + virtual void bbProcess(); //================================================================== //================================================================== - /// Specific methods for windows creation during pipeline execution + /// If necessary creates the WxBlackBoxWindow associated to the box + /// and shows it + /// (does nothing if the box output 'Widget' is connected which + /// means that the box does not have its own window but is contained + /// into another window) void bbShowWindow(); + /// Hides the WxBlackBoxWindow associated to the box (if exists) void bbHideWindow(); //================================================================== @@ -145,6 +178,9 @@ namespace bbtk void bbInitAttributes(); + protected : + /// Main processing method of the box. Overloaded to handle windows inclusion : if the output Widget is connected then the execution is transfered to the box to which it is connected (the container window must be created and displayed - this box will be also executed by the normal pipeline recursion mechanism) + virtual void bbExecute(bool force = false); }; //=================================================================