]> Creatis software - bbtk.git/commitdiff
*** empty log message ***
authorguigues <guigues>
Tue, 2 Dec 2008 13:37:54 +0000 (13:37 +0000)
committerguigues <guigues>
Tue, 2 Dec 2008 13:37:54 +0000 (13:37 +0000)
kernel/src/bbtkKWBlackBox.cxx
kernel/src/bbtkKWBlackBox.h
kernel/src/vtkKWBlackBoxDialog.h
packages/kw/src/bbkwLayoutSplit.cxx
packages/kw/src/bbkwLayoutSplit.h
packages/kw/src/bbkwSlicer.cxx
packages/kw/src/bbkwSlicer.h
packages/kw/src/bbkwSlider.cxx
packages/kw/src/bbkwSlider.h
packages/kw/src/vtkKWSlicer.cxx

index 501ebef7d2707b894d53ac9e78d9fb09e9511d29..3df2005599c64c1f11bb3940eebb209baccee6d4 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkKWBlackBox.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/12/02 10:21:40 $
-  Version:   $Revision: 1.3 $
+  Date:      $Date: 2008/12/02 13:37:54 $
+  Version:   $Revision: 1.4 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -349,12 +349,16 @@ namespace bbtk
                KW::GetApplication()->AddWindow((vtkKWWindowBase*)win);
                win->Create();
                win->SetResizable(0,0);
-               bbUserCreateWidget(win->GetFrame());
 
+               bbUserCreateWidget(win->GetFrame());            
                KW::GetApplication()->Script("place %s -x 0 -y 0 -width %d -height %d",
                                             bbGetOutputWidget()->GetWidgetName(),
                                             bbGetInputWinWidth(),
                                             bbGetInputWinHeight());
+               
+
+
+
 
                /*
                bbGetOutputWidget()->SetParent(win);
@@ -404,7 +408,19 @@ namespace bbtk
   }
   //=========================================================================
   
-  
+  /*
+  //=========================================================================
+  void KWBlackBox::bbPlaceWidget()
+  {
+    vtkKWFrame* parent = (vtkKWFrame*)(bbGetOutputWidget()->GetParent());
+    bbGetOutputWidget->GetApplication()->Script("place %s -x 0 -y 0 -width %s -height %s",
+                                               bbGetOutputWidget()->GetWidgetName(),
+                                               parent->GetWidth(),
+                                               parent->GetHeight());
+  }
+  //=========================================================================
+  */
+
   /*
   // LG 24/11/08 : New widget pipeline
   void KWBlackBox::bbCreateWidgetAndEventHandler(vtkKWWidget* parent)
@@ -444,7 +460,7 @@ namespace bbtk
     
   */
   
-  vtkKWWidget*  KWBlackBox::bbCreateWidgetOfInput(const std::string& in, vtkKWWidget* parent)
+  vtkKWWidget*  KWBlackBox::bbCreateWidgetOfInput(const std::string& in, vtkKWFrame* parent)
   {
     vtkKWWidget* w = 0;
     // If input is connected 
index 78aa8af99c7121ecc69c53e65102ae0c0c8c9bec..754a7dd5fe2ef2d89e89537112f6248539e157ce 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkKWBlackBox.h,v $
   Language:  C++
-  Date:      $Date: 2008/12/02 08:38:08 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2008/12/02 13:37:54 $
+  Version:   $Revision: 1.3 $
 ========================================================================*/
 
 
 #include "bbtkKW.h"
 
 
-  //==================================================================
-  // Forward declaration of the class of window associated to a KWBlackBox
-  class vtkKWBlackBoxWindow;
-  class vtkKWBlackBoxDialog;
-  //==================================================================
+//==================================================================
+// Forward declaration of the class of window associated to a KWBlackBox
+class vtkKWBlackBoxWindow;
+class vtkKWBlackBoxDialog;
+class vtkKWFrame;
+//==================================================================
 
 
 namespace bbtk
@@ -148,7 +149,7 @@ namespace bbtk
     /// User callback for creating the widget associated to the box
     /// ** Must be defined **
     // LG 24/11/08 : New widget pipeline
-    virtual void bbUserCreateWidget(vtkKWWidget* parent) 
+    virtual void bbUserCreateWidget(vtkKWFrame* parent) 
     {
       bbtkError(bbGetTypeName()<<" is a KWBlackBox whose bbUserCreateWidget methods is not overloaded : is it a feature or a bug ?!?");
     }
@@ -156,7 +157,7 @@ namespace bbtk
 
 
     vtkKWWidget* bbCreateWidgetOfInput(const std::string& in, 
-                                      vtkKWWidget* parent);
+                                      vtkKWFrame* parent);
 
 
     //==================================================================
@@ -228,7 +229,7 @@ namespace bbtk
   /// Defines the bbUserCreateWidget method
 #define BBTK_CREATE_KWWIDGET(CALLBACK)                                 \
   public:                                                              \
-  inline void bbUserCreateWidget(vtkKWWidget* parent)                  \
+  inline void bbUserCreateWidget(vtkKWFrame* parent)                   \
   {                                                                    \
     bbtkDebugMessageInc("kw",1,"**> Creating widget for ["             \
                        <<bbGetFullName()<<"]"<<std::endl);             \
index aa951e783579f6725e5639554dd2a0e88452ad1d..00588ffeaac41194b12af9deeafd418ffab54233 100644 (file)
@@ -32,7 +32,7 @@ public:
     mBox.lock()->bbSetWindow(this);
   }
   virtual BBPointer bbGetBlackBox() { return mBox.lock(); }
-  vtkKWWidget* GetFrame() { return mFrame; }
+  vtkKWFrame* GetFrame() { return mFrame; }
   void CreateWidget();
   //  void Pack();
 protected:
index b35f7f1d8a10ea465cb16406965b322066734ae7..10a2097d1e41e0a058598805eb16c679e5ac69b4 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbkwLayoutSplit.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/12/02 10:21:42 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2008/12/02 13:37:56 $
+  Version:   $Revision: 1.3 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -60,36 +60,73 @@ namespace bbkw
   }
 
 
-  void LayoutSplit::CreateWidget(vtkKWWidget* parent) 
+  void LayoutSplit::CreateWidget(vtkKWFrame* parent) 
   {
     vtkKWSplitFrame *splitframe = vtkKWSplitFrame::New();
     bbSetOutputWidget(splitframe);
     splitframe->SetParent(parent);
     splitframe->Create();
-
     splitframe->SetFrame1MinimumSize(5);
     splitframe->SetFrame2MinimumSize(5);
+    splitframe->SetExpandableFrameToBothFrames();
+
+    int width = parent->GetWidth();
+    int height = parent->GetHeight();
+    int orientation = 0;
+    if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"0|H|HORIZONTAL")==true)  
+      { 
+       orientation = 0; 
+     }
+    else if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"1|V|VERTICAL")==true)          
+      {
+       orientation = 1; 
+      }
+    else 
+      {
+       bbtkWarning("Unrecognized value '"<<bbGetInputOrientation()<<"' for input 'Orientation' of LayoutSplit "<<bbGetName()<<std::endl);
+      }
+
+    if (orientation==0)
+      {
+       splitframe->SetOrientationToHorizontal ();
+       width = width / 2;
+      }
+    else 
+      {
+       splitframe->SetOrientationToVertical ();
+       height = height / 2 ;   
+      }  
+
+   width = width - 5;
+   height = height - 5 ;
+    
+    bbGetOutputWidget()->GetApplication()->Script("place %s -x 0 -y 0 -width %d -height %d",
+                                                 bbGetOutputWidget()->GetWidgetName(),
+                                                 parent->GetWidth(),
+                                                 parent->GetHeight() );
 
-    splitframe->GetApplication()->Script("pack %s -side top -expand y",
-                                        splitframe->GetWidgetName());
-    /*
     splitframe->SetReliefToGroove();
     splitframe->SetBorderWidth(2);
-    splitframe->SetExpandableFrameToBothFrames();
-    */
-    bbCreateWidgetOfInput("Widget1",splitframe->GetFrame1());
-    bbCreateWidgetOfInput("Widget2",splitframe->GetFrame2());
-
-    /*   
-         int orientation=0;
-    if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"0|H|HORIZONTAL")==true)  { orientation=0; }
-    if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"1|V|VERTICAL")==true)       { orientation=1; }
-    
 
-         if (orientation==1) { w->SplitHorizontally( w1, w2, 100); }
-    else                { w->SplitVertically( w1, w2, 100);   }
+
+    vtkKWWidget* w1 =  bbCreateWidgetOfInput("Widget1",splitframe->GetFrame1());
+    
+    vtkKWWidget* w2 = bbCreateWidgetOfInput("Widget2",splitframe->GetFrame2());
+
+   splitframe->GetApplication()->Script("place %s -x 0 -y 0 -width %d -height %d",
+                                       w1->GetWidgetName(),
+                                       width,
+                                       height);
+
+  splitframe->GetApplication()->Script("place %s -x 0 -y 0 -width %d -height %d",
+                                      w2->GetWidgetName(),
+                                      width,
+                                      height);
   
-    */
+
+
   }
 
 
index 234afb0fc76ed736ccb3a99fdd715b1bf2d8790a..7aad4daae6bff2cda2ae86e4a2fc75dcf181dd12 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbkwLayoutSplit.h,v $
   Language:  C++
-  Date:      $Date: 2008/11/29 21:41:58 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2008/12/02 13:37:56 $
+  Version:   $Revision: 1.2 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -65,7 +65,7 @@ namespace bbkw
     BBTK_DECLARE_INPUT(Proportion,int);
     BBTK_PROCESS(Process);
     BBTK_CREATE_KWWIDGET(CreateWidget);
-   void CreateWidget(vtkKWWidget*);
+   void CreateWidget(vtkKWFrame*);
 
     void Process();
   protected:
index e122eaf478cc5348ebf055f8323839579a5d08cc..c46d3d135fea5fb8f75271c468d41da47ee83803 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbkwSlicer.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/12/02 08:38:10 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2008/12/02 13:37:56 $
+  Version:   $Revision: 1.3 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -77,7 +77,7 @@ namespace bbkw
       }
   }
   //--------------------------------------------------------------------------
-  void Slicer::CreateWidget(vtkKWWidget* parent) 
+  void Slicer::CreateWidget(vtkKWFrame* parent) 
   {
     vtkKWSlicer* s = vtkKWSlicer::New();
     bbSetOutputWidget(s);
@@ -88,9 +88,11 @@ namespace bbkw
       }
 
     s->Create();
+    //    bbPlaceWidget();
+    /*
     s->GetApplication()->Script("pack %s -side top -expand y",
                                s->GetWidgetName());
-
+    */
   
   }
 
index 32fc4e9ed659227b748b5da5af89042fa52a0518..158dd0c9d2789449c48fc3154bd5834f54377085 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbkwSlicer.h,v $
   Language:  C++
-  Date:      $Date: 2008/11/29 21:41:58 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2008/12/02 13:37:56 $
+  Version:   $Revision: 1.2 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -73,7 +73,7 @@ namespace bbkw
     BBTK_PROCESS(Process);
     BBTK_CREATE_KWWIDGET(CreateWidget);
     void Process();
-    void CreateWidget(vtkKWWidget*);
+    void CreateWidget(vtkKWFrame*);
 
   protected:
     virtual void bbUserConstructor();
index 41a8008b9a447bd14cad6acb497672d19cf02425..8547f401678f494189d41a095ff42de888879589 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbkwSlider.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/11/29 21:41:58 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2008/12/02 13:37:56 $
+  Version:   $Revision: 1.2 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
 #include "bbtkUtilities.h"
 
 #include "vtkKWScale.h"
+#include "vtkObjectFactory.h"
+#include "vtkCommand.h"
 
 namespace bbkw
 {
-  
   /*
-  //-------------------------------------------------------------------------
-  SliderWidget::SliderWidget(Slider* box, kwWindow *parent,
-                            int orientation,
-                            bool changeresolution,
-                            bool labels,
-                            kwString title,
-                            int vmin,
-                            int vmax,
-                            int value,
-                             int reactiveontrack)
-    :  
-    kwPanel( parent, -1, kwDefaultPosition, kwDefaultSize, kwTAB_TRAVERSAL),
-    mBox(box),
-    min(vmin),
-    max(vmax),
-    reactiveOnTrack(reactiveontrack)
-  {
-    kwPanel * panel = this;
-    
-    label_min           = NULL;
-    label_max           = NULL;
-    label_vertical      = NULL;
-    mResolutionOfSlider        = NULL;
-
-    int sizeX,sizeY;
-    long kwlabels=0;
-    long kworientation=0;
-    if (orientation==0) 
-      {
-       sizeX                   = 2;
-       sizeY                   = 40;
-       kworientation   = kwSL_HORIZONTAL;
-       if (labels==true)
-         {
-           kwlabels = kwSL_LABELS;
-         }
-      } 
-    else 
-      {
-       sizeX                   = 20;
-       sizeY                   = 2;
-       kworientation   = kwSL_VERTICAL;
-      }
-    
-    //---------------------------------------------------------------------
-    // 1) Creation of the components of the widget
-    // Any top level sub-widget must have the panel returned by panel
-    // for parent
-    mkwSlider = new kwSlider( panel, 
-                             -1, 0 , 0, 500 , 
-                             kwDefaultPosition, 
-                             kwSize(sizeX,sizeY), 
-                             kworientation  | kwlabels );
-
-    //    mkwSlider->SetInitialSize(kwSize(sizeX,sizeY));
-
-    // mkwSlider->SetTickFreq(100,0);
-    mkwSlider->SetRange(min,max);
-    mkwSlider->SetValue(value);
-
-    //    RefreshLabels();
-
-    // Connecting events to callbacks
-    Connect( mkwSlider->GetId(), 
-            kwEVT_SCROLL_THUMBRELEASE, 
-
-            (kwObjectEventFunction) 
-            (void (kwPanel::*)(kwScrollEvent&))
-            &SliderWidget::OnSliderRelease ); 
-
-    Connect( mkwSlider->GetId(),  
-            kwEVT_SCROLL_THUMBTRACK, 
-
-            (kwObjectEventFunction) 
-            (void (kwPanel::*)(kwScrollEvent&))
-             &SliderWidget::OnSliderTrack ); 
-    
-    Connect( mkwSlider->GetId(),  
-            kwEVT_SCROLL_CHANGED, 
-
-            (kwObjectEventFunction) 
-            (void (kwPanel::*)(kwScrollEvent&))
-             &SliderWidget::OnSliderTrack );
-              
-    // If asked : creation of the other little slider which allows to change 
-    // the resolution of the main slider
-    if (changeresolution==true){
-      // has panel for parent too
-      mResolutionOfSlider = new kwSlider(panel,
-                                        -1,5,1,10,
-                                        kwDefaultPosition,
-                                        kwSize(25,45),
-                                        kwSL_VERTICAL | 
-                                        kwSL_AUTOTICKS |
-                                        kwSL_LEFT  );
-   
-
-      mResolutionOfSlider->SetRange(1,8);
-      mResolutionOfSlider->SetValue(5);
-      // Is kwEVT_COMMAND_SLIDER_UPDATED event 
-      // is connected to the method OnResolutionOfSlider
-      Connect(mResolutionOfSlider->GetId(),
-             kwEVT_COMMAND_SLIDER_UPDATED,
-             (kwObjectEventFunction) 
-             (void (kwPanel::*)(kwScrollEvent&))
-             &SliderWidget::OnResolutionOfSlider ); 
-    }
-    //---------------------------------------------------------------------
-
-    //---------------------------------------------------------------------
-    // 2) Insertion of the components in the window
-    
-    // We use a FlexGridSizer
-    kwFlexGridSizer *sizer;
-
-
-    if (orientation==0) 
-      {
-       // HORIZONTAL
-       if (mResolutionOfSlider!=NULL) 
-         {
-           sizer       = new kwFlexGridSizer(2);
-           if (title!=_T(""))
-             {
-               sizer   -> Add( new kwStaticText(panel,-1, title ) ); 
-               sizer   -> Add( new kwStaticText(panel,-1, _T("") ) ); 
-             }
-         } 
-       else 
-         {
-           sizer       = new kwFlexGridSizer(1);
-           if (title!=_T(""))
-             {
-               sizer   -> Add( new kwStaticText(panel,-1, title ) ); 
-             }
-         }
-       sizer   -> Add( mkwSlider,1,kwGROW ); 
-       sizer   -> AddGrowableCol(0);
-       if (mResolutionOfSlider!=NULL) 
-         {
-           sizer       -> Add( mResolutionOfSlider ); 
-         }
-      } 
-    else 
-      {
-       // VERTICAL 
-       sizer   = new kwFlexGridSizer(1);
-       if (labels==true)  // with lable
-         {
-           label_vertical = new kwStaticText(panel,-1,_T(""));
-           label_min = new kwStaticText(panel,-1,_T(""));
-           label_max = new kwStaticText(panel,-1,_T(""));
-           if (title!=_T(""))
-             {
-               sizer   -> Add( new kwStaticText(panel,-1, title ) );
-               sizer   -> AddGrowableRow(3);
-             } 
-           else 
-             {
-               sizer   -> AddGrowableRow(2);
-             }
-           sizer       -> Add( label_vertical );
-           sizer       -> Add( label_min );
-           sizer       -> Add( mkwSlider,1,kwGROW );
-           sizer       -> Add( label_max );
-           if (mResolutionOfSlider!=NULL) 
-             {
-               sizer   -> Add( mResolutionOfSlider ); 
-             }
-         } 
-       else 
-         {
-           if (title!=_T(""))
-             {
-               sizer   -> Add( new kwStaticText(panel,-1, title ) );
-               sizer   -> AddGrowableRow(1);
-             } 
-           else 
-             {
-               sizer   -> AddGrowableRow(0);
-             }
-           sizer       -> Add( mkwSlider,1,kwGROW );
-           if (mResolutionOfSlider!=NULL) 
-             {
-               sizer   -> Add( mResolutionOfSlider ); 
-             }
-         }
-      }
-    // Initialize the labels 
-    RefreshLabels();  
-    // Insert the sizer in the main panel and refresh the layout
-    panel->SetSizer(sizer);
-  }
-  //-------------------------------------------------------------------------
-  
-
-  //-------------------------------------------------------------------------
-  SliderWidget::~SliderWidget()
-  {
-  }
-  //-------------------------------------------------------------------------
-
-
-  //-------------------------------------------------------------------------
-  void SliderWidget::OnResolutionOfSlider(kwScrollEvent& event)
-  {
-    int value = mkwSlider->GetValue();
-    int delta = (int) (pow( 4 , mResolutionOfSlider->GetValue() ));
-    int minTmp   = value - delta/2;
-    int maxTmp   = value + delta/2;
-    if (minTmp<min)
-      {
-       minTmp = min;
-       //              maxTmp = delta;
-      }
-    if (maxTmp>max)
-      {
-       maxTmp = max;
-      }
-    mkwSlider->SetRange(minTmp,maxTmp);
-    RefreshLabels();
-  }
-  //-------------------------------------------------------------------------
-
-
-
-  //-------------------------------------------------------------------------
-  void SliderWidget::OnSliderTrack(kwScrollEvent& event)
+  //--------------------------------------------------------------------------
+  class Callback : public vtkCommand
   {
-    if(reactiveOnTrack)
+  public:
+    static Callback *New() { return new Callback; }
+    virtual void Execute(vtkObject* caller, unsigned long, void*)
     {
-    // When user releases the slider 
-    // we update the output of the box
-    
-    mBox->bbSetOutputOut( mkwSlider->GetValue() );
-    mBox->bbSetInputIn( mkwSlider->GetValue() );
-    // and signal that the output has changed
-    mBox->bbSignalOutputModification("Out");    
+      //      std::cout << "$$$$$$$$$$$$ Slider CB $$$$$$$$$$$$"<<std::endl;
+      vtkKWScale* scale = (vtkKWScale*)caller;
+      mBox->bbSetOutputOut( scale->GetValue() );
+      mBox->bbSetInputIn( scale->GetValue() );
+      // and signal that the output has changed
+      mBox->bbSignalOutputModification("Out");    
     }
-    RefreshLabels();
-  }
-  //-------------------------------------------------------------------------
-
-
-  //-------------------------------------------------------------------------
-  void SliderWidget::OnSliderRelease(kwScrollEvent& event)
-  {
-    // When user releases the slider 
-    // we update the output of the box
-    mBox->bbSetOutputOut( mkwSlider->GetValue() );
-    mBox->bbSetInputIn( mkwSlider->GetValue() );
-    // and signal that the output has changed
-    mBox->bbSignalOutputModification("Out");
-  }
-  //-------------------------------------------------------------------------
-  
-
-  //-------------------------------------------------------------------------
-  void SliderWidget::RefreshLabels()
-  {
-    kwString strValue;
-    if (label_vertical!=NULL)
-      {
-       strValue.Printf( _T("%d"), mkwSlider->GetValue() );
-       label_vertical->SetLabel(strValue);
-      }
-    if (label_min!=NULL)
-      {
-       strValue.Printf( _T("%d"), mkwSlider->GetMin() );
-       label_min->SetLabel(strValue);
-      }
-    if (label_max!=NULL)
-      {
-       strValue.Printf( _T("%d"), mkwSlider->GetMax() );
-       label_max->SetLabel(strValue);
-      }  
-  }
-  //-------------------------------------------------------------------------
-  
-
-  //-------------------------------------------------------------------------
-  void SliderWidget::SetRange(int min, int max)
-  {
-    this->min = min;
-    this->max = max;
-    mkwSlider->SetRange(min,max);
-    RefreshLabels();
-  }
-  //-------------------------------------------------------------------------
-
- */
-
+    Slider* mBox;
+  };
+  //--------------------------------------------------------------------------
+  */
 
   //--------------------------------------------------------------------------
   //-------------------------------------------------------------------------
@@ -348,7 +75,7 @@ namespace bbkw
   //--------------------------------------------------------------------------
   //--------------------------------------------------------------------------
 
-  //--------------------------------------------------------------------------
+   //--------------------------------------------------------------------------
   BBTK_BLACK_BOX_IMPLEMENTATION(Slider,bbtk::KWBlackBox);
   BBTK_ADD_BLACK_BOX_TO_PACKAGE(kw,Slider);
   
@@ -363,25 +90,30 @@ namespace bbkw
     bbSetInputOrientation("HORIZONTAL");
     bbSetInputChangeResolution(false);
     bbSetInputLabel(true);
+    bbSetInputTitle("");
     bbSetInputReactiveOnTrack(0);    
   }
   
  //--------------------------------------------------------------------------
   void Slider::Process() 
   {
+    bbSetOutputOut( bbGetInputIn() );
   }
   //--------------------------------------------------------------------------
-  void Slider::CreateWidget(vtkKWWidget* parent) 
+
+  //--------------------------------------------------------------------------
+  void Slider::CreateWidget(vtkKWFrame* parent) 
   {
     vtkKWScale* s = vtkKWScale::New();
     bbSetOutputWidget(s);
-    s->SetParent(parent);
+    s->AddObserver(vtkKWScale::ScaleValueChangingEvent,this);
+    s->SetParent((vtkKWWidget*)parent);
     s->Create();
 
     s->SetRange(bbGetInputMin(),bbGetInputMax());
     // s->SetResolution(1.0);
     // s->SetLength(150);
-    s->SetLabelText("A simple scale:");
+    s->SetLabelText(bbGetInputTitle().c_str());
     if (bbtk::Utilities::loosematch(bbGetInputOrientation(),"0|H|HORIZONTAL")==true) 
       {
        s->SetOrientationToHorizontal();
@@ -394,12 +126,25 @@ namespace bbkw
       {
        bbtkWarning("Unrecognized value for input 'Orientation' of "<<bbGetFullName());
       }
-   
-    s->GetApplication()->Script("pack %s -side left -anchor c -expand y",
-                               s->GetWidgetName());
 
     bbSetOutputOut( bbGetInputIn() );
   }
+  //--------------------------------------------------------------------------
+
+  //--------------------------------------------------------------------------
+  
+  void Slider::Execute(vtkObject* caller, unsigned long, void*)
+  {
+    //    std::cout << "$$$$$$$$$$$$ Slider CB $$$$$$$$$$$$"<<std::endl;
+    vtkKWScale* scale = (vtkKWScale*)caller;
+    bbSetOutputOut( scale->GetValue() );
+    bbSetInputIn( scale->GetValue() );
+    // and signal that the output has changed
+    bbSignalOutputModification("Out");    
+  } 
+  //--------------------------------------------------------------------------
+  
+
 
 } //namespace bbkw
 
index 33f40f97c40c3a74655380046548e51800b4e4d4..f2be2cc3ad0de049bd7079fef161c36f9965eba6 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbkwSlider.h,v $
   Language:  C++
-  Date:      $Date: 2008/11/29 21:41:58 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2008/12/02 13:37:56 $
+  Version:   $Revision: 1.2 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -55,7 +55,9 @@
 // Include KWBlackBox definition
 #include "bbtkKWBlackBox.h"
 
-
+class vtkObject;
+class vtkCommand;
+#include "vtkCommand.h"
 
 // Namespace of the package "kw" is "bbkw" 
 // Namespace associated to packages should be of the form :
 namespace bbkw
 {
   
-
-  /*  //--------------------------------------------------------------------------
-  // Forward declaration of the box
-  class Slider;
-  
-  //--------------------------------------------------------------------------
-  // The widget created by the box 
-  class SliderWidget : public kwPanel 
-  {
-  public:
-    /// Ctor with the two first params the parent window and the creator box
-    /// which must be passed to the KwBlackBoxWidget constructor.
-    /// The other params initialize the widget 
-    SliderWidget(Slider* box, kwWindow *parent,
-                int orientation,
-                bool changeresolution,
-                bool label, 
-                kwString title,
-                int vmin,
-                int vmax,
-                int value,
-       int track);
-    /// Dtor
-    ~SliderWidget();
-    /// Events callbacks
-    /// Called when the slider is moved
-    void OnSliderTrack(kwScrollEvent& event);
-    /// Called when the slider is released
-    void OnSliderRelease(kwScrollEvent& event);
-    /// Called when the little slider which controls the resolution
-    /// of the main slider is moved (if activated)
-    void OnResolutionOfSlider(kwScrollEvent& event);
-
-    // Accessors
-    int  GetValue() { return mkwSlider->GetValue(); }
-    void SetRange(int min, int max);
-    // Update the texts which display the min/max/current values of the slider
-    void RefreshLabels();
-       
-  private:
-    Slider*    mBox;
-    kwSlider   *mkwSlider;
-    kwSlider   *mResolutionOfSlider;
-    int        min;
-    int        max;
-    int        reactiveOnTrack;
-    kwStaticText       *label_vertical;
-    kwStaticText       *label_min;
-    kwStaticText       *label_max;
-  };
-  //------------------------------------------------------------------------
-  //------------------------------------------------------------------------
-  //------------------------------------------------------------------------
-
-  */
-  
-  
   //------------------------------------------------------------------------
   // The black box
-  class /*BBTK_EXPORT*/ Slider : public bbtk::KWBlackBox
+  class /*BBTK_EXPORT*/ Slider : public bbtk::KWBlackBox, public vtkCommand
   {
     
     BBTK_BLACK_BOX_INTERFACE(Slider,bbtk::KWBlackBox);
@@ -138,9 +83,10 @@ namespace bbkw
     BBTK_PROCESS(Process);
     BBTK_CREATE_KWWIDGET(CreateWidget);
     void Process();
-    void CreateWidget(vtkKWWidget*);
-
-  protected:
+    void CreateWidget(vtkKWFrame*);
+    virtual void Execute(vtkObject* caller, unsigned long, void*);
+ protected:
     virtual void bbUserConstructor();
   };
   //=================================================================
index 3de69e8a74179658241b1a5b453d3499ba9c1d3c..0e14bb138fc69d8c03a1568960c18bf3f901446e 100644 (file)
@@ -37,7 +37,7 @@ extern "C" int Bbkw_Init(Tcl_Interp *interp);
 
 //----------------------------------------------------------------------------
 vtkStandardNewMacro( vtkKWSlicer );
-vtkCxxRevisionMacro(vtkKWSlicer, "$Revision: 1.3 $");
+vtkCxxRevisionMacro(vtkKWSlicer, "$Revision: 1.4 $");
 
 //----------------------------------------------------------------------------
 vtkKWSlicer::vtkKWSlicer()
@@ -305,7 +305,7 @@ void vtkKWSlicer::CreateWidget()
 void vtkKWSlicer::ProcessCallbackCommandEvents(
   vtkObject *caller, unsigned long event, void *calldata)
 {
-  std::cout << "###### vtkKWSlicer::ProcessCallbackCommandEvents" << std::endl;
+  //  std::cout << "###### vtkKWSlicer::ProcessCallbackCommandEvents" << std::endl;
   if (caller == this->SliceScale && 
       event == vtkKWScale::ScaleValueChangingEvent)
     {