]> Creatis software - bbtk.git/blob - packages/wx/src/bbwxColourSelectorButton.cxx
086f3f36f228cfcbbabc592c0356b47c0bfb9648
[bbtk.git] / packages / wx / src / bbwxColourSelectorButton.cxx
1 /*=========================================================================
2                                                                                 
3   Program:   bbtk
4   Module:    $RCSfile: bbwxColourSelectorButton.cxx,v $
5   Language:  C++
6   Date:      $Date: 2008/09/10 12:01:47 $
7   Version:   $Revision: 1.4 $
8                                                                                 
9   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10   l'Image). All rights reserved. See Doc/License.txt or
11   http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
12                                                                                 
13      This software is distributed WITHOUT ANY WARRANTY; without even
14      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15      PURPOSE.  See the above copyright notices for more information.
16                                                                                 
17 =========================================================================*/
18 /**
19  * \file
20  * \brief Short description in one line
21  *
22  * Long
23  * description
24  *
25  */
26
27 #ifdef _USE_WXWIDGETS_
28
29 #include "bbwxColourSelectorButton.h"
30 #include "bbwxPackage.h"
31
32
33 namespace bbwx
34 {
35
36 //-------------------------------------------------------------------------
37 wxColourPickerCtrlWidget::wxColourPickerCtrlWidget(     ColourSelectorButton* box,
38                                                                                                         wxWindow *parent, 
39                                                                                                         unsigned char  cr,
40                                                                                                         unsigned char  cg,
41                                                                                                         unsigned char  cb
42                                                                                                         )
43   :   wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
44           mBox(box)
45 {
46     bbtkDebugMessage("Process",9,"=> wxColourPickerCtrlWidget::wxColourPickerCtrlWidget"<<std::endl);
47
48     wxPanel * panel = this;
49     picker = new wxColourPickerCtrl(panel,-1,
50                                         wxColour(cr,cg,cb),
51                                         wxDefaultPosition,
52                                         wxDefaultSize,
53                                         wxCLRP_USE_TEXTCTRL
54                                 );
55     picker->SetPickerCtrlGrowable(false);
56     picker->SetTextCtrlGrowable(false);
57
58     Connect ( picker->GetId(),
59               wxEVT_COMMAND_COLOURPICKER_CHANGED,
60               wxColourPickerEventHandler( wxColourPickerCtrlWidget::OnColorChange ) );
61
62     bbtkDebugMessage("Process",9,"<= wxColourPickerCtrlWidget::wxColourPickerCtrlWidget"<<std::endl);
63     wxFlexGridSizer *sizer = new wxFlexGridSizer(10);
64         sizer -> AddGrowableRow(0);
65         sizer -> Add( picker, 1, wxEXPAND, 0 );
66         panel -> SetSizer(sizer);
67   }
68
69 wxColourPickerCtrlWidget::~wxColourPickerCtrlWidget()
70 {
71 }
72
73
74 //---------------------------------------------------------------------
75 void wxColourPickerCtrlWidget::OnColorChange(wxColourPickerEvent& e)
76 {
77         UpdateBox();
78 }
79
80
81 //---------------------------------------------------------------------
82 void wxColourPickerCtrlWidget::UpdateBox()
83 {
84     char col[100];
85     wxColour c = picker->GetColour();
86     sprintf(col,"%f %f %f",c.Red()/255.,c.Green()/255.,c.Blue()/255.);
87
88     //    std::cout << col << std::endl;
89
90     ColourSelectorButton* b = (ColourSelectorButton*)mBox;
91     b->bbSetOutputOut( col );
92     b->bbSignalOutputModification("Out");
93 }
94
95   //--------------------------------------------------------------------------
96   //-------------------------------------------------------------------------
97   // WxBlackBox implementation
98   //--------------------------------------------------------------------------
99   //--------------------------------------------------------------------------
100
101   //--------------------------------------------------------------------------
102
103   BBTK_BLACK_BOX_IMPLEMENTATION(ColourSelectorButton,bbtk::WxBlackBox);
104   BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,ColourSelectorButton);
105   
106   void ColourSelectorButton::bbUserConstructor() 
107   { 
108     bbSetInputIn("1 1 1");
109   }
110
111
112   void ColourSelectorButton::Process() 
113   { 
114     bbtkDebugMessageInc("Process",9,"ColourSelectorButton::Process()"<<std::endl);
115       pickerWidget->UpdateBox();
116     bbtkDebugDecTab("Process",9);
117   }
118
119
120   /**
121    * \brief  Create wxWidget .
122    *
123    *
124    */
125   void ColourSelectorButton::CreateWidget()
126   {
127     bbtkDebugMessage("Process",9,"=> ColourSelectorButton::CreateWidget()"<<std::endl);
128     
129     float r,g,b;
130     sscanf( bbGetInputIn().c_str(), "%f %f %f", &r, &g ,&b);
131     unsigned char cr,cg,cb;
132     cr = (unsigned char)(255.*r);
133     cg = (unsigned char)(255.*g);
134     cb = (unsigned char)(255.*b);
135
136     pickerWidget = new wxColourPickerCtrlWidget(this, bbGetWxParent() , cr , cg , cb );    
137     
138     bbtkDebugMessage("Process",9,"<= ColourSelectorButton::CreateWidget()"<<std::endl);
139
140     bbSetOutputWidget( pickerWidget );
141   }
142
143
144 }  //namespace bbwx
145
146 #endif  // _USE_WXWIDGETS_
147