--- /dev/null
+/*=========================================================================
+
+ 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_
+