]> Creatis software - bbtk.git/blobdiff - packages/wx/src/bbwxColourSelectorButton.cxx
ColourDialog --> ColourSelector
[bbtk.git] / packages / wx / src / bbwxColourSelectorButton.cxx
diff --git a/packages/wx/src/bbwxColourSelectorButton.cxx b/packages/wx/src/bbwxColourSelectorButton.cxx
new file mode 100644 (file)
index 0000000..791d967
--- /dev/null
@@ -0,0 +1,148 @@
+/*=========================================================================
+                                                                                
+  Program:   bbtk
+  Module:    $RCSfile: bbwxColourSelectorButton.cxx,v $
+  Language:  C++
+  Date:      $Date: 2008/02/20 11:36:29 $
+  Version:   $Revision: 1.1 $
+                                                                                
+  Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
+  l'Image). All rights reserved. See Doc/License.txt or
+  http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
+                                                                                
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+                                                                                
+=========================================================================*/
+/**
+ * \file 
+ * \brief Short description in one line
+ *
+ * Long 
+ * description
+ *  
+ */
+
+#ifdef _USE_WXWIDGETS_
+
+#include "bbwxColourSelectorButton.h"
+#include "bbwxPackage.h"
+
+
+namespace bbwx
+{
+  
+
+//-------------------------------------------------------------------------
+wxColourPickerCtrlWidget::wxColourPickerCtrlWidget(    ColourSelectorButton* box, 
+                                                                                                       wxWindow *parent, 
+                                                                                                       unsigned char  cr,
+                                                                                                       unsigned char  cg,
+                                                                                                       unsigned char  cb
+                                                                                                       )
+  :   wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
+         mBox(box)
+{
+    bbtkDebugMessage("Process",9,"=> wxColourPickerCtrlWidget::wxColourPickerCtrlWidget"<<std::endl);
+
+    wxPanel * panel = this;
+    picker = new wxColourPickerCtrl(panel,-1,
+                                       wxColour(cr,cg,cb),
+                                       wxDefaultPosition,
+                                       wxDefaultSize,
+                                       wxCLRP_USE_TEXTCTRL
+                               );
+    picker->SetPickerCtrlGrowable(false);
+    picker->SetTextCtrlGrowable(false);
+    
+    Connect ( picker->GetId(),
+             wxEVT_COMMAND_COLOURPICKER_CHANGED,
+             wxColourPickerEventHandler( wxColourPickerCtrlWidget::OnColorChange ) );
+    
+    bbtkDebugMessage("Process",9,"<= wxColourPickerCtrlWidget::wxColourPickerCtrlWidget"<<std::endl);
+    wxFlexGridSizer *sizer = new wxFlexGridSizer(10);
+       sizer -> AddGrowableRow(0);
+       sizer -> Add( picker, 1, wxEXPAND, 0 );         
+       panel -> SetSizer(sizer);
+  }
+
+wxColourPickerCtrlWidget::~wxColourPickerCtrlWidget()
+{
+}
+
+
+//---------------------------------------------------------------------
+void wxColourPickerCtrlWidget::OnColorChange(wxColourPickerEvent& e)
+{
+       UpdateBox();
+}
+
+
+//---------------------------------------------------------------------
+void wxColourPickerCtrlWidget::UpdateBox()
+{
+    char col[100];
+    wxColour c = picker->GetColour();
+    sprintf(col,"%f %f %f",c.Red()/255.,c.Green()/255.,c.Blue()/255.);
+
+    //    std::cout << col << std::endl;
+
+    ColourSelectorButton* b = (ColourSelectorButton*)mBox;
+    b->bbSetOutputOut( col );
+    b->bbSignalOutputModification("Out");
+}
+
+  //--------------------------------------------------------------------------
+  //-------------------------------------------------------------------------
+  // WxBlackBox implementation
+  //--------------------------------------------------------------------------
+  //--------------------------------------------------------------------------
+
+  //--------------------------------------------------------------------------
+
+  BBTK_USER_BLACK_BOX_IMPLEMENTATION(ColourSelectorButton,bbtk::WxBlackBox);
+  BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,ColourSelectorButton);
+  
+  void ColourSelectorButton::bbUserConstructor() 
+  { 
+    bbSetInputIn("1 1 1");
+  }
+
+
+  void ColourSelectorButton::Process() 
+  { 
+    bbtkDebugMessageInc("Process",9,"ColourSelectorButton::Process()"<<std::endl);
+      pickerWidget->UpdateBox();
+    bbtkDebugDecTab("Process",9);
+  }
+
+
+  /**
+   * \brief  Create wxWidget .
+   *
+   *
+   */
+  void ColourSelectorButton::CreateWidget()
+  {
+    bbtkDebugMessage("Process",9,"=> ColourSelectorButton::CreateWidget()"<<std::endl);
+    
+    float r,g,b;
+    sscanf( bbGetInputIn().c_str(), "%f %f %f", &r, &g ,&b);
+    unsigned char cr,cg,cb;
+    cr = (unsigned char)(255.*r);
+    cg = (unsigned char)(255.*g);
+    cb = (unsigned char)(255.*b);
+
+    pickerWidget = new wxColourPickerCtrlWidget(this, bbGetWxParent() , cr , cg , cb );    
+    
+    bbtkDebugMessage("Process",9,"<= ColourSelectorButton::CreateWidget()"<<std::endl);
+
+    bbSetOutputWidget( pickerWidget );
+  }
+
+
+}  //namespace bbwx
+
+#endif  // _USE_WXWIDGETS_
+