00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00040 #ifdef _USE_WXWIDGETS_
00041
00042 #include "bbwxColourSelectorButton.h"
00043 #include "bbwxPackage.h"
00044
00045
00046 namespace bbwx
00047 {
00048
00049
00050 wxColourPickerCtrlWidget::wxColourPickerCtrlWidget( ColourSelectorButton* box,
00051 wxWindow *parent,
00052 unsigned char cr,
00053 unsigned char cg,
00054 unsigned char cb
00055 )
00056 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL),
00057 mBox(box)
00058 {
00059 bbtkDebugMessage("Process",9,"=> wxColourPickerCtrlWidget::wxColourPickerCtrlWidget"<<std::endl);
00060
00061 wxPanel * panel = this;
00062 picker = new wxColourPickerCtrl(panel,-1,
00063 wxColour(cr,cg,cb),
00064 wxDefaultPosition,
00065 wxDefaultSize,
00066 wxCLRP_USE_TEXTCTRL
00067 );
00068 picker->SetPickerCtrlGrowable(false);
00069 picker->SetTextCtrlGrowable(false);
00070
00071 Connect ( picker->GetId(),
00072 wxEVT_COMMAND_COLOURPICKER_CHANGED,
00073 wxColourPickerEventHandler( wxColourPickerCtrlWidget::OnColorChange ) );
00074
00075 bbtkDebugMessage("Process",9,"<= wxColourPickerCtrlWidget::wxColourPickerCtrlWidget"<<std::endl);
00076 wxFlexGridSizer *sizer = new wxFlexGridSizer(10);
00077 sizer -> AddGrowableRow(0);
00078 sizer -> Add( picker, 1, wxEXPAND, 0 );
00079 panel -> SetSizer(sizer);
00080 }
00081
00082 wxColourPickerCtrlWidget::~wxColourPickerCtrlWidget()
00083 {
00084 }
00085
00086
00087
00088 void wxColourPickerCtrlWidget::OnColorChange(wxColourPickerEvent& e)
00089 {
00090 UpdateBox();
00091 }
00092
00093
00094
00095 void wxColourPickerCtrlWidget::UpdateBox()
00096 {
00097 char col[100];
00098 wxColour c = picker->GetColour();
00099 sprintf(col,"%f %f %f",c.Red()/255.,c.Green()/255.,c.Blue()/255.);
00100
00101
00102
00103 ColourSelectorButton* b = (ColourSelectorButton*)mBox;
00104 b->bbSetOutputOut( col );
00105 b->bbSignalOutputModification("Out");
00106 }
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116 BBTK_BLACK_BOX_IMPLEMENTATION(ColourSelectorButton,bbtk::WxBlackBox);
00117 BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,ColourSelectorButton);
00118
00119 void ColourSelectorButton::bbUserConstructor()
00120 {
00121 bbSetInputIn("1 1 1");
00122 }
00123
00124
00125 void ColourSelectorButton::Process()
00126 {
00127 bbtkDebugMessageInc("Process",9,"ColourSelectorButton::Process()"<<std::endl);
00128 pickerWidget->UpdateBox();
00129 bbtkDebugDecTab("Process",9);
00130 }
00131
00132
00138 void ColourSelectorButton::CreateWidget()
00139 {
00140 bbtkDebugMessage("Process",9,"=> ColourSelectorButton::CreateWidget()"<<std::endl);
00141
00142 float r,g,b;
00143 sscanf( bbGetInputIn().c_str(), "%f %f %f", &r, &g ,&b);
00144 unsigned char cr,cg,cb;
00145 cr = (unsigned char)(255.*r);
00146 cg = (unsigned char)(255.*g);
00147 cb = (unsigned char)(255.*b);
00148
00149 pickerWidget = new wxColourPickerCtrlWidget(this, bbGetWxParent() , cr , cg , cb );
00150
00151 bbtkDebugMessage("Process",9,"<= ColourSelectorButton::CreateWidget()"<<std::endl);
00152
00153 bbSetOutputWidget( pickerWidget );
00154 }
00155
00156
00157 }
00158
00159 #endif // _USE_WXWIDGETS_
00160