]> Creatis software - bbtk.git/blob - packages/wx/src/bbwxColourSelectorButton.cxx
=== MAJOR RELEASE ====
[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/04/18 12:59:52 $
7   Version:   $Revision: 1.3 $
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 //-------------------------------------------------------------------------
38 wxColourPickerCtrlWidget::wxColourPickerCtrlWidget(     ColourSelectorButton* box, 
39                                                                                                         wxWindow *parent, 
40                                                                                                         unsigned char  cr,
41                                                                                                         unsigned char  cg,
42                                                                                                         unsigned char  cb
43                                                                                                         )
44   :   wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
45           mBox(box)
46 {
47     bbtkDebugMessage("Process",9,"=> wxColourPickerCtrlWidget::wxColourPickerCtrlWidget"<<std::endl);
48
49     wxPanel * panel = this;
50     picker = new wxColourPickerCtrl(panel,-1,
51                                         wxColour(cr,cg,cb),
52                                         wxDefaultPosition,
53                                         wxDefaultSize,
54                                         wxCLRP_USE_TEXTCTRL
55                                 );
56     picker->SetPickerCtrlGrowable(false);
57     picker->SetTextCtrlGrowable(false);
58     
59     Connect ( picker->GetId(),
60               wxEVT_COMMAND_COLOURPICKER_CHANGED,
61               wxColourPickerEventHandler( wxColourPickerCtrlWidget::OnColorChange ) );
62     
63     bbtkDebugMessage("Process",9,"<= wxColourPickerCtrlWidget::wxColourPickerCtrlWidget"<<std::endl);
64     wxFlexGridSizer *sizer = new wxFlexGridSizer(10);
65         sizer -> AddGrowableRow(0);
66         sizer -> Add( picker, 1, wxEXPAND, 0 );         
67         panel -> SetSizer(sizer);
68   }
69
70 wxColourPickerCtrlWidget::~wxColourPickerCtrlWidget()
71 {
72 }
73
74
75 //---------------------------------------------------------------------
76 void wxColourPickerCtrlWidget::OnColorChange(wxColourPickerEvent& e)
77 {
78         UpdateBox();
79 }
80
81
82 //---------------------------------------------------------------------
83 void wxColourPickerCtrlWidget::UpdateBox()
84 {
85     char col[100];
86     wxColour c = picker->GetColour();
87     sprintf(col,"%f %f %f",c.Red()/255.,c.Green()/255.,c.Blue()/255.);
88
89     //    std::cout << col << std::endl;
90
91     ColourSelectorButton* b = (ColourSelectorButton*)mBox;
92     b->bbSetOutputOut( col );
93     b->bbSignalOutputModification("Out");
94 }
95
96   //--------------------------------------------------------------------------
97   //-------------------------------------------------------------------------
98   // WxBlackBox implementation
99   //--------------------------------------------------------------------------
100   //--------------------------------------------------------------------------
101
102   //--------------------------------------------------------------------------
103
104   BBTK_BLACK_BOX_IMPLEMENTATION(ColourSelectorButton,bbtk::WxBlackBox);
105   BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,ColourSelectorButton);
106   
107   void ColourSelectorButton::bbUserConstructor() 
108   { 
109     bbSetInputIn("1 1 1");
110   }
111
112
113   void ColourSelectorButton::Process() 
114   { 
115     bbtkDebugMessageInc("Process",9,"ColourSelectorButton::Process()"<<std::endl);
116       pickerWidget->UpdateBox();
117     bbtkDebugDecTab("Process",9);
118   }
119
120
121   /**
122    * \brief  Create wxWidget .
123    *
124    *
125    */
126   void ColourSelectorButton::CreateWidget()
127   {
128     bbtkDebugMessage("Process",9,"=> ColourSelectorButton::CreateWidget()"<<std::endl);
129     
130     float r,g,b;
131     sscanf( bbGetInputIn().c_str(), "%f %f %f", &r, &g ,&b);
132     unsigned char cr,cg,cb;
133     cr = (unsigned char)(255.*r);
134     cg = (unsigned char)(255.*g);
135     cb = (unsigned char)(255.*b);
136
137     pickerWidget = new wxColourPickerCtrlWidget(this, bbGetWxParent() , cr , cg , cb );    
138     
139     bbtkDebugMessage("Process",9,"<= ColourSelectorButton::CreateWidget()"<<std::endl);
140
141     bbSetOutputWidget( pickerWidget );
142   }
143
144
145 }  //namespace bbwx
146
147 #endif  // _USE_WXWIDGETS_
148