X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkKWBlackBox.h;h=d654f9aee711328d2edaf7c722a919e3b7def149;hb=03cc68dd6b831aa98e1e0fad20a977ffa074be39;hp=6a2eb35f1a5767f7f564c645449d2ebcff422398;hpb=bfd7e9034cbfd9c535e98ccb302c08e5e42da8c6;p=bbtk.git diff --git a/kernel/src/bbtkKWBlackBox.h b/kernel/src/bbtkKWBlackBox.h index 6a2eb35..d654f9a 100644 --- a/kernel/src/bbtkKWBlackBox.h +++ b/kernel/src/bbtkKWBlackBox.h @@ -1,33 +1,40 @@ -/*========================================================================= +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la SantÈ) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + + +/*========================================================================= Program: bbtk Module: $RCSfile: bbtkKWBlackBox.h,v $ Language: C++ - Date: $Date: 2008/12/11 09:50:35 $ - Version: $Revision: 1.5 $ + Date: $Date: 2012/11/16 08:49:01 $ + Version: $Revision: 1.7 $ ========================================================================*/ -/* --------------------------------------------------------------------- - -* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) -* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux -* -* This software is governed by the CeCILL-B license under French law and -* abiding by the rules of distribution of free software. You can use, -* modify and/ or redistribute the software under the terms of the CeCILL-B -* license as circulated by CEA, CNRS and INRIA at the following URL -* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -* or in the file LICENSE.txt. -* -* As a counterpart to the access to the source code and rights to copy, -* modify and redistribute granted by the license, users are provided only -* with a limited warranty and the software's author, the holder of the -* economic rights, and the successive licensors have only limited -* liability. -* -* The fact that you are presently reading this means that you have had -* knowledge of the CeCILL-B license and that you accept its terms. -* ------------------------------------------------------------------------ */ + /** * \brief Short description in one line * @@ -48,189 +55,64 @@ #ifdef USE_KWWIDGETS -#include "bbtkAtomicBlackBox.h" +#include "bbtkWidgetBlackBox.h" #include "bbtkKW.h" -//================================================================== -// Forward declaration of the class of window associated to a KWBlackBox -class vtkKWBlackBoxWindow; -class vtkKWBlackBoxDialog; -class vtkKWFrame; -//================================================================== - namespace bbtk { - - //================================================================== /// Widget black boxes - class BBTK_EXPORT KWBlackBox : public bbtk::AtomicBlackBox + class BBTK_EXPORT KWBlackBox : public bbtk::WidgetBlackBox { - BBTK_BLACK_BOX_INTERFACE(KWBlackBox,bbtk::AtomicBlackBox); - BBTK_DECLARE_INPUT(WinTitle,std::string); - BBTK_DECLARE_INPUT(WinWidth,int); - BBTK_DECLARE_INPUT(WinHeight,int); - BBTK_DECLARE_INPUT(WinDialog,bool); - BBTK_DECLARE_INPUT(WinHide,Void); - BBTK_DECLARE_INPUT(WinClose,Void); - BBTK_DECLARE_OUTPUT(Widget, vtkKWWidget*); - + BBTK_BLACK_BOX_INTERFACE(KWBlackBox,bbtk::WidgetBlackBox); public: - - typedef vtkKWBlackBoxDialog Window; - - /// Returns the **OWN** window associated to the box - /// If 0 returned = no window - Window* bbGetWindow() { return bbmWindow; } - - /// 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 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() {} + //================================================================== + /// Callback for creating a Dialog window (modal) + virtual void bbCreateDialogWindow(); //================================================================== - + //================================================================== - /// User callback invoked when the containing window is hidden - virtual void bbUserOnHide() {} + /// Callback for creating a Frame window + virtual void bbCreateFrameWindow(); //================================================================== - /// Sets the window - inline void bbSetWindow(Window* w) { bbmWindow=w; } - - - protected: + //================================================================== + // virtual void InitWindowManagerIfNeeded(); + virtual void IncNbWindowsAlive(); + virtual void DecNbWindowsAlive(); + virtual int GetNbWindowsAlive(); + virtual bool IsSomeWindowAlive(); - + virtual void IncNbWindowsShown(); + virtual void DecNbWindowsShown(); + virtual int GetNbWindowsShown(); + virtual bool IsSomeWindowShown(); //================================================================== - /// User callback called in the box contructor - virtual void bbUserConstructor(); - /// User callback called in the box copy constructor - virtual void bbUserCopyConstructor(bbtk::BlackBox::Pointer); - /// User callback called in the box destructor - virtual void bbUserDestructor(); - //================================================================== - - //================================================================== - /// User callback for creating the widget associated to the box - /// ** Must be defined ** - // LG 24/11/08 : New widget pipeline - virtual void bbUserCreateWidget(vtkKWFrame* parent) - { - bbtkError(bbGetTypeName()<<" is a KWBlackBox whose bbUserCreateWidget methods is not overloaded : is it a feature or a bug ?!?"); - } - //================================================================== + //================================================================== vtkKWWidget* bbCreateWidgetOfInput(const std::string& in, vtkKWFrame* parent); //================================================================== - //================================================================== - /// Overloaded processing method for KWBlackBoxes - virtual void bbProcess(); - //================================================================== - - //================================================================== - /// If necessary creates the KWBlackBoxWindow 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 KWBlackBoxWindow associated to the box (if exists) - void bbHideWindow(); - /// Closes (destroys) the KWBlackBoxWindow associated to the box (if exists) - void bbCloseWindow(); - //================================================================== - - private: - /// friendship - friend class vtkKWBlackBoxWindow; - // friend class KWBlackBoxWidgetEventHandler; - - /// The KWBlackBoxWindow associated to the box - Window* bbmWindow; - - - void bbInitAttributes(); - }; //================================================================= - //====================================================================== - /// Defines the bbUserCreateWidget method -#define BBTK_CREATE_KWWIDGET(CALLBACK) \ - public: \ - inline void bbUserCreateWidget(vtkKWFrame* parent) \ - { \ - bbtkDebugMessageInc("kw",1,"**> Creating widget for [" \ - < Showing [" \ - < + BBTK_BEGIN_DESCRIBE_BLACK_BOX_BODY(KWBlackBox); BBTK_NAME("KWBlackBox"); - // BBTK_DESCRIPTION("Widget box. The inputs marked with (*) are only used if the widget is not inserted in another widget.\n"); - BBTK_CATEGORY("widget"); - BBTK_INPUT(KWBlackBox,WinTitle, - "Title of the window (*)", - std::string,""); - BBTK_INPUT(KWBlackBox,WinWidth, - "Width of the window (* : only used if the widget is not connected to a Layout box)",int,""); - BBTK_INPUT(KWBlackBox,WinHeight, - "Height of the window (*)",int,""); - BBTK_INPUT(KWBlackBox,WinDialog, - "Set to 'true' to create a dialog window, i.e. which blocks the pipeline until it is closed (modal) (*)",bool,""); - BBTK_INPUT(KWBlackBox,WinHide, - "Any signal received hides the window (*)",Void,"signal"); - BBTK_INPUT(KWBlackBox,WinClose, - "Any signal received closes the window (*)",Void,"signal"); - BBTK_OUTPUT(KWBlackBox,Widget,"Output widget",vtkKWWidget*,""); BBTK_END_DESCRIBE_BLACK_BOX(KWBlackBox); //================================================================= @@ -241,34 +123,6 @@ namespace bbtk - /* - //================================================================= - // Handles the destroy events of a widget associated to a KWBlackBox - // in order to signal the widget death to its associated box - class BBTK_EXPORT KWBlackBoxWidgetEventHandler : public wxEvtHandler - { - public: - /// Ctor with the box and widget - KWBlackBoxWidgetEventHandler( KWBlackBox::Pointer box, wxWindow *widget ); - /// Dtor - ~KWBlackBoxWidgetEventHandler(); - /// Returns true iff is the handler for that window - bool IsHandlerOf( wxWindow* w ) { return mWindow == w; } - // wxWindow* GetKWWindow() { return mWindow; } - /// Method processing the destroy event of the widget - void OnWindowDestroy(wxWindowDestroyEvent&); - // - //bool IsDead() { return mDead; } - - private: - KWBlackBox::WeakPointer mBox; - wxWindow* mWindow; - //bool mDead; - }; - //================================================================= - */ - - } //namespace bbtk