]> Creatis software - bbtk.git/commitdiff
Add CheckBox
authorjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Tue, 13 Jan 2009 09:57:11 +0000 (09:57 +0000)
committerjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Tue, 13 Jan 2009 09:57:11 +0000 (09:57 +0000)
packages/wx/bbs/appli/exampleCheckBox.bbs [new file with mode: 0644]
packages/wx/src/bbwxCheckBox.cxx [new file with mode: 0644]
packages/wx/src/bbwxCheckBox.h [new file with mode: 0644]
packages/wx/src/bbwxSlider.cxx

diff --git a/packages/wx/bbs/appli/exampleCheckBox.bbs b/packages/wx/bbs/appli/exampleCheckBox.bbs
new file mode 100644 (file)
index 0000000..8c7e850
--- /dev/null
@@ -0,0 +1,23 @@
+description "Simple use of wx::CheckBox widget"
+author "jpr@creatis.insa-lyon.fr"
+category "example"
+
+# Load the packages
+load std
+load wx
+
+# Create the Objects
+new CheckBox   chkbox
+new OutputText text
+new LayoutLine layout
+
+# Graphical pipeline
+connect chkbox.Widget    layout.Widget1
+connect text.Widget      layout.Widget2
+
+# Execution pipeline
+connect chkbox.BoxChange text.BoxExecute
+connect chkbox.Out       text.In
+
+# Go!
+exec layout
diff --git a/packages/wx/src/bbwxCheckBox.cxx b/packages/wx/src/bbwxCheckBox.cxx
new file mode 100644 (file)
index 0000000..33f6a61
--- /dev/null
@@ -0,0 +1,208 @@
+/*=========================================================================                                                                               
+  Program:   bbtk
+  Module:    $RCSfile: bbwxCheckBox.cxx,v $
+  Language:  C++
+  Date:      $Date: 2009/01/13 09:57:13 $
+  Version:   $Revision: 1.1 $
+=========================================================================*/
+
+/* ---------------------------------------------------------------------
+
+* 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.
+* ------------------------------------------------------------------------ */                                                                         
+
+/**
+ * \file 
+ * \brief Short description in one line
+ *
+ * Long 
+ * description
+ *  
+ */
+
+#ifdef _USE_WXWIDGETS_
+
+#include "bbwxCheckBox.h"
+#include "bbwxPackage.h"
+#include "bbtkUtilities.h"
+
+namespace bbwx
+{
+  //--------------------------------------------------------------------------
+  // The widget created by the box 
+  class CheckBoxWidget : public wxPanel 
+  {
+  public:
+    /// Ctor with the two first params the parent window and the creator box
+    /// which must be passed to the WxBlackBoxWidget constructor.
+    /// The other params initialize the widget 
+    CheckBoxWidget(CheckBox* box, wxWindow *parent,
+                wxString title,
+                bool value
+                 );
+    /// Dtor
+    ~CheckBoxWidget();
+    /// Events callbacks
+    /// Called when the box is clicked
+    void OnCheckBoxClick(wxCommandEvent& event);
+
+    // Accessors
+    bool GetValue() { return mwxCheckBox->GetValue(); }
+    void SetValue(bool val);
+    // Update the texts which display the min/max/current values of the slider
+       
+  private:
+    CheckBox*    mBox;
+    wxCheckBox   *mwxCheckBox;
+
+    bool       val;
+  };
+  //------------------------------------------------------------------------
+  //------------------------------------------------------------------------
+  //------------------------------------------------------------------------
+
+  
+    
+  //-------------------------------------------------------------------------
+  CheckBoxWidget::CheckBoxWidget(CheckBox* box, wxWindow *parent,
+                            wxString title,
+                            bool value)
+    :  
+    wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
+    mBox(box),
+    val(value)
+  {
+    wxPanel * panel = this;
+    int sizeX, sizeY;
+    
+    sizeX = sizeY = -1; // just to see JPR
+    
+    
+
+    //---------------------------------------------------------------------
+    // 1) Creation of the components of the widget
+    // Any top level sub-widget must have the panel returned by panel
+    // for parent
+    mwxCheckBox = new wxCheckBox( panel, 
+                             -1, 
+                             title,
+                             wxDefaultPosition, 
+                             //wxSize(sizeX,sizeY),
+                             wxDefaultSize, 
+                             wxCHK_2STATE | wxALIGN_RIGHT);      
+
+    mwxCheckBox->SetValue(value);
+
+    // Connecting events to callbacks
+    Connect( mwxCheckBox->GetId(), 
+            wxEVT_COMMAND_CHECKBOX_CLICKED, 
+            (wxObjectEventFunction) 
+            (void (wxPanel::*)(wxScrollEvent&))
+            &CheckBoxWidget::OnCheckBoxClick);
+             
+    //---------------------------------------------------------------------
+
+    //---------------------------------------------------------------------
+    // 2) Insertion of the components in the window
+    
+    // We use a FlexGridSizer
+    wxFlexGridSizer *sizer;
+   sizer       = new wxFlexGridSizer(1);
+    // Insert the sizer in the main panel and refresh the layout
+    panel->SetSizer(sizer);
+  }
+  //-------------------------------------------------------------------------
+  
+
+  //-------------------------------------------------------------------------
+  CheckBoxWidget::~CheckBoxWidget()
+  {
+  }
+  //-------------------------------------------------------------------------
+
+
+  //-------------------------------------------------------------------------
+
+
+
+  //-------------------------------------------------------------------------
+  void CheckBoxWidget::OnCheckBoxClick(wxCommandEvent& event)
+  {
+    // When user clicks the box 
+    // we update the output of the box
+    mBox->bbSetOutputOut( mwxCheckBox->GetValue() );
+    mBox->bbSetInputIn( mwxCheckBox->GetValue() );
+    // and signal that the output has changed
+    mBox->bbSignalOutputModification(std::string("Out"));
+  }
+  //-------------------------------------------------------------------------
+
+  //-------------------------------------------------------------------------
+  
+
+  //-------------------------------------------------------------------------
+  void CheckBoxWidget::SetValue(bool value)
+  {
+    this->val = value;
+    mwxCheckBox->SetValue(value);
+  }
+  //-------------------------------------------------------------------------
+
+  //--------------------------------------------------------------------------
+  //-------------------------------------------------------------------------
+  // WxBlackBox implementation
+  //--------------------------------------------------------------------------
+  //--------------------------------------------------------------------------
+
+  //--------------------------------------------------------------------------
+  BBTK_BLACK_BOX_IMPLEMENTATION(CheckBox,bbtk::WxBlackBox);
+  BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,CheckBox);
+  
+  //--------------------------------------------------------------------------
+  void CheckBox::bbUserConstructor() 
+  { 
+    bbSetInputIn(false);
+    bbSetOutputOut(false);
+  }
+  
+  //--------------------------------------------------------------------------
+  void CheckBox::Process() 
+  {
+    bbSetOutputOut( bbGetInputIn() );
+  }
+
+  void CheckBox::CreateWidget(wxWindow* parent)
+  {
+   
+    CheckBoxWidget *w =  new CheckBoxWidget(this, 
+                                       parent, 
+                                       bbtk::std2wx( bbGetInputTitle() ),
+                                       bbGetInputIn() 
+                                       );
+    bbSetOutputWidget( w );
+  }
+  
+
+} //namespace bbwx
+
+#endif // _USE_WXWIDGETS_ 
+
+
diff --git a/packages/wx/src/bbwxCheckBox.h b/packages/wx/src/bbwxCheckBox.h
new file mode 100644 (file)
index 0000000..778016a
--- /dev/null
@@ -0,0 +1,105 @@
+/*=========================================================================                                                                               
+  Program:   bbtk
+  Module:    $RCSfile: bbwxCheckBox.h,v $
+  Language:  C++
+  Date:      $Date: 2009/01/13 09:57:13 $
+  Version:   $Revision: 1.1 $
+=========================================================================*/
+
+/* ---------------------------------------------------------------------
+
+* 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.
+* ------------------------------------------------------------------------ */                                                                         
+
+/**
+ * \file 
+ * \brief Short description in one line
+ * 
+ * Long description which 
+ * can span multiple lines
+*/
+
+/**
+ * \class bbwx::CheckBox
+ * \brief 
+
+ * \class bbwx::CheckBoxWidget
+ * \brief 
+ */
+
+#ifdef _USE_WXWIDGETS_
+
+// Prevents multiple inclusions : use symbols of the form
+// __FILENAME_INCLUDED__ 
+// where FILENAME must be replaced by the actual file name
+#ifndef __bbwxCheckBox_h_INCLUDED__
+#define __bbwxCheckBox_h_INCLUDED__
+
+// Include wxBlackBox definition
+#include "bbtkWxBlackBox.h"
+
+#include "bbwx_EXPORT.h"
+
+
+// Namespace of the package "wx" is "bbwx" 
+// Namespace associated to packages should be of the form :
+// bbPACKAGENAME
+namespace bbwx
+{
+  
+  //------------------------------------------------------------------------
+  // The black box
+  class bbwx_EXPORT CheckBox : public bbtk::WxBlackBox
+  {
+    
+    BBTK_BLACK_BOX_INTERFACE(CheckBox,bbtk::WxBlackBox);
+    BBTK_DECLARE_INPUT(In,bool);
+    BBTK_DECLARE_INPUT(Title,std::string);
+    BBTK_DECLARE_OUTPUT(Out,bool);
+    BBTK_PROCESS(Process);
+    BBTK_CREATE_WIDGET(CreateWidget);
+    void Process();
+    void CreateWidget(wxWindow*);
+
+  protected:
+    virtual void bbUserConstructor();
+  };
+  //=================================================================
+  //=================================================================
+  // the black box description
+  BBTK_BEGIN_DESCRIBE_BLACK_BOX(CheckBox,bbtk::WxBlackBox);
+  BBTK_NAME("CheckBox");
+  BBTK_AUTHOR("jpr@creatis.insa-lyon.fr");
+  // Already inserted for any WxBlackBox  BBTK_CATEGORY("widget");
+  BBTK_DESCRIPTION("CheckBox widget (wxCheckBox)");
+  BBTK_INPUT(CheckBox, In,   "Initial value of the CheckBox (default false)",bool,       "");
+  BBTK_INPUT(CheckBox, Title,"Title shown above the CheckBox (default '') ", std::string,"");
+  BBTK_OUTPUT(CheckBox,Out,  "Current value of the CheckBox",                bool,       "");
+  BBTK_END_DESCRIBE_BLACK_BOX(CheckBox);
+  //=================================================================
+  
+
+
+} //namespace bbwx
+
+#endif  //__bbtkwxCheckBox_h_INCLUDED__
+
+#endif //_USE_WXWIDGETS_
index 3e5dd55077c2eaf7b911171188cd326670c153f6..c4050e21da4aabb9060d1939302ab428111a4a97 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbwxSlider.cxx,v $
   Language:  C++
-  Date:      $Date: 2009/01/08 10:18:39 $
-  Version:   $Revision: 1.17 $
+  Date:      $Date: 2009/01/13 09:57:13 $
+  Version:   $Revision: 1.18 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -61,7 +61,7 @@ namespace bbwx
                 int vmin,
                 int vmax,
                 int value,
-       int track);
+         int track);
     /// Dtor
     ~SliderWidget();
     /// Events callbacks
@@ -161,21 +161,18 @@ namespace bbwx
     // Connecting events to callbacks
     Connect( mwxSlider->GetId(), 
             wxEVT_SCROLL_THUMBRELEASE, 
-
             (wxObjectEventFunction) 
             (void (wxPanel::*)(wxScrollEvent&))
             &SliderWidget::OnSliderRelease ); 
 
     Connect( mwxSlider->GetId(),  
             wxEVT_SCROLL_THUMBTRACK, 
-
             (wxObjectEventFunction) 
             (void (wxPanel::*)(wxScrollEvent&))
              &SliderWidget::OnSliderTrack ); 
     
     Connect( mwxSlider->GetId(),  
             wxEVT_SCROLL_CHANGED, 
-
             (wxObjectEventFunction) 
             (void (wxPanel::*)(wxScrollEvent&))
              &SliderWidget::OnSliderTrack );