00001
00002
00003
00004
00005
00007
00008 #include "interactive_manipulation_ui.h"
00009
00011
00012 AdvancedOptionsDialogBase::AdvancedOptionsDialogBase( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
00013 {
00014 this->SetSizeHints( wxDefaultSize, wxDefaultSize );
00015
00016 wxBoxSizer* bSizer11;
00017 bSizer11 = new wxBoxSizer( wxVERTICAL );
00018
00019 wxBoxSizer* bSizer12;
00020 bSizer12 = new wxBoxSizer( wxHORIZONTAL );
00021
00022 reactive_grasping_box_ = new wxCheckBox( this, wxID_ANY, wxT("reactive grasping"), wxDefaultPosition, wxDefaultSize, 0 );
00023 bSizer12->Add( reactive_grasping_box_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00024
00025
00026 bSizer12->Add( 0, 0, 1, wxEXPAND, 5 );
00027
00028 adv_text_1_ = new wxStaticText( this, wxID_ANY, wxT("Try to lift after grasp"), wxDefaultPosition, wxDefaultSize, 0 );
00029 adv_text_1_->Wrap( -1 );
00030 bSizer12->Add( adv_text_1_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00031
00032 lift_distance_spin_ = new wxSpinCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 50,-1 ), wxSP_ARROW_KEYS, 0, 10, 0 );
00033 bSizer12->Add( lift_distance_spin_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00034
00035 adv_text_2_ = new wxStaticText( this, wxID_ANY, wxT("cm"), wxDefaultPosition, wxDefaultSize, 0 );
00036 adv_text_2_->Wrap( -1 );
00037 bSizer12->Add( adv_text_2_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00038
00039 bSizer11->Add( bSizer12, 1, wxEXPAND, 5 );
00040
00041 wxBoxSizer* bSizer16;
00042 bSizer16 = new wxBoxSizer( wxHORIZONTAL );
00043
00044 reactive_transport_box_ = new wxCheckBox( this, wxID_ANY, wxT("reactive transport"), wxDefaultPosition, wxDefaultSize, 0 );
00045 bSizer16->Add( reactive_transport_box_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00046
00047
00048 bSizer16->Add( 0, 0, 1, wxEXPAND, 5 );
00049
00050 adv_text_3_ = new wxStaticText( this, wxID_ANY, wxT("Try to retreat after place"), wxDefaultPosition, wxDefaultSize, 0 );
00051 adv_text_3_->Wrap( -1 );
00052 bSizer16->Add( adv_text_3_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00053
00054 retreat_distance_spin_ = new wxSpinCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 50,-1 ), wxSP_ARROW_KEYS, 0, 10, 0 );
00055 bSizer16->Add( retreat_distance_spin_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00056
00057 adv_text_4_ = new wxStaticText( this, wxID_ANY, wxT("cm"), wxDefaultPosition, wxDefaultSize, 0 );
00058 adv_text_4_->Wrap( -1 );
00059 bSizer16->Add( adv_text_4_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00060
00061 bSizer11->Add( bSizer16, 1, wxEXPAND, 5 );
00062
00063 wxBoxSizer* bSizer17;
00064 bSizer17 = new wxBoxSizer( wxHORIZONTAL );
00065
00066 reactive_place_box_ = new wxCheckBox( this, wxID_ANY, wxT("reactive place"), wxDefaultPosition, wxDefaultSize, 0 );
00067 bSizer17->Add( reactive_place_box_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00068
00069
00070 bSizer17->Add( 0, 0, 1, wxEXPAND, 5 );
00071
00072 adv_text_5_ = new wxStaticText( this, wxID_ANY, wxT("Lift / place"), wxDefaultPosition, wxDefaultSize, 0 );
00073 adv_text_5_->Wrap( -1 );
00074 bSizer17->Add( adv_text_5_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00075
00076 wxString lift_direction_choice_Choices[] = { wxT("vertically"), wxT("along approach direction") };
00077 int lift_direction_choice_NChoices = sizeof( lift_direction_choice_Choices ) / sizeof( wxString );
00078 lift_direction_choice_ = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, lift_direction_choice_NChoices, lift_direction_choice_Choices, 0 );
00079 lift_direction_choice_->SetSelection( 0 );
00080 lift_direction_choice_->SetMinSize( wxSize( 150,-1 ) );
00081
00082 bSizer17->Add( lift_direction_choice_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00083
00084 bSizer11->Add( bSizer17, 1, wxEXPAND, 5 );
00085
00086 wxBoxSizer* bSizer13;
00087 bSizer13 = new wxBoxSizer( wxHORIZONTAL );
00088
00089 set_defaults_button_ = new wxButton( this, wxID_ANY, wxT("Set defaults"), wxDefaultPosition, wxDefaultSize, 0 );
00090 bSizer13->Add( set_defaults_button_, 0, wxALL, 5 );
00091
00092
00093 bSizer13->Add( 0, 0, 1, wxEXPAND, 5 );
00094
00095 accept_button_ = new wxButton( this, wxID_OK, wxT("Accept"), wxDefaultPosition, wxDefaultSize, 0 );
00096 bSizer13->Add( accept_button_, 0, wxALL, 5 );
00097
00098 cancel_button_ = new wxButton( this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
00099 bSizer13->Add( cancel_button_, 0, wxALL, 5 );
00100
00101 bSizer11->Add( bSizer13, 1, wxEXPAND, 5 );
00102
00103 this->SetSizer( bSizer11 );
00104 this->Layout();
00105 bSizer11->Fit( this );
00106
00107
00108 reactive_grasping_box_->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( AdvancedOptionsDialogBase::reactiveGraspingClicked ), NULL, this );
00109 reactive_transport_box_->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( AdvancedOptionsDialogBase::reactiveForceClicked ), NULL, this );
00110 set_defaults_button_->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AdvancedOptionsDialogBase::setDefaultsClicked ), NULL, this );
00111 accept_button_->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AdvancedOptionsDialogBase::acceptClicked ), NULL, this );
00112 }
00113
00114 AdvancedOptionsDialogBase::~AdvancedOptionsDialogBase()
00115 {
00116
00117 reactive_grasping_box_->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( AdvancedOptionsDialogBase::reactiveGraspingClicked ), NULL, this );
00118 reactive_transport_box_->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( AdvancedOptionsDialogBase::reactiveForceClicked ), NULL, this );
00119 set_defaults_button_->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AdvancedOptionsDialogBase::setDefaultsClicked ), NULL, this );
00120 accept_button_->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( AdvancedOptionsDialogBase::acceptClicked ), NULL, this );
00121 }
00122
00123 InteractiveManipulationFrameBase::InteractiveManipulationFrameBase( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
00124 {
00125 this->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) );
00126 this->SetMinSize( wxSize( 325,256 ) );
00127
00128 wxBoxSizer* bSizer1;
00129 bSizer1 = new wxBoxSizer( wxVERTICAL );
00130
00131 m_notebook1 = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
00132 grasp_place_panel_ = new wxPanel( m_notebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
00133 grasp_place_panel_->SetFont( wxFont( 9, 70, 90, 90, false, wxEmptyString ) );
00134
00135 wxBoxSizer* bSizer17;
00136 bSizer17 = new wxBoxSizer( wxVERTICAL );
00137
00138 wxBoxSizer* bSizer2;
00139 bSizer2 = new wxBoxSizer( wxHORIZONTAL );
00140
00141 grasp_button_ = new wxButton( grasp_place_panel_, wxID_ANY, wxT("Grasp"), wxDefaultPosition, wxDefaultSize, 0 );
00142 bSizer2->Add( grasp_button_, 0, wxALL, 5 );
00143
00144 m_staticText10 = new wxStaticText( grasp_place_panel_, wxID_ANY, wxT("using"), wxDefaultPosition, wxDefaultSize, 0 );
00145 m_staticText10->Wrap( -1 );
00146 bSizer2->Add( m_staticText10, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00147
00148 wxString grasp_object_choice_Choices[] = { wxT("Gripper Click") };
00149 int grasp_object_choice_NChoices = sizeof( grasp_object_choice_Choices ) / sizeof( wxString );
00150 grasp_object_choice_ = new wxChoice( grasp_place_panel_, wxID_ANY, wxDefaultPosition, wxSize( 150,-1 ), grasp_object_choice_NChoices, grasp_object_choice_Choices, 0 );
00151 grasp_object_choice_->SetSelection( 0 );
00152 bSizer2->Add( grasp_object_choice_, 0, wxALL, 5 );
00153
00154 bSizer17->Add( bSizer2, 0, wxEXPAND, 5 );
00155
00156 place_button_ = new wxButton( grasp_place_panel_, wxID_ANY, wxT("Place"), wxDefaultPosition, wxDefaultSize, 0 );
00157 bSizer17->Add( place_button_, 0, wxALL, 5 );
00158
00159 advanced_options_button_ = new wxButton( grasp_place_panel_, wxID_ANY, wxT("Advanced Options ..."), wxDefaultPosition, wxSize( 150,-1 ), 0 );
00160 bSizer17->Add( advanced_options_button_, 0, wxALL, 5 );
00161
00162 grasp_place_panel_->SetSizer( bSizer17 );
00163 grasp_place_panel_->Layout();
00164 bSizer17->Fit( grasp_place_panel_ );
00165 m_notebook1->AddPage( grasp_place_panel_, wxT("Grasp and place"), true );
00166 collision_panel_ = new wxPanel( m_notebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
00167 collision_panel_->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) );
00168
00169 wxBoxSizer* bSizer4;
00170 bSizer4 = new wxBoxSizer( wxVERTICAL );
00171
00172 wxBoxSizer* bSizer6;
00173 bSizer6 = new wxBoxSizer( wxHORIZONTAL );
00174
00175 reset_button_ = new wxButton( collision_panel_, wxID_ANY, wxT("Reset "), wxDefaultPosition, wxSize( 50,-1 ), 0 );
00176 bSizer6->Add( reset_button_, 0, wxALL, 5 );
00177
00178 wxString reset_choice_Choices[] = { wxT("collision objects"), wxT("attached objects"), wxT("collision map") };
00179 int reset_choice_NChoices = sizeof( reset_choice_Choices ) / sizeof( wxString );
00180 reset_choice_ = new wxChoice( collision_panel_, wxID_ANY, wxDefaultPosition, wxDefaultSize, reset_choice_NChoices, reset_choice_Choices, 0 );
00181 reset_choice_->SetSelection( 0 );
00182 bSizer6->Add( reset_choice_, 0, wxALL, 5 );
00183
00184 bSizer4->Add( bSizer6, 0, 0, 0 );
00185
00186 new_map_button_ = new wxButton( collision_panel_, wxID_ANY, wxT("Take new static map"), wxDefaultPosition, wxDefaultSize, 0 );
00187 bSizer4->Add( new_map_button_, 0, wxALL, 5 );
00188
00189 collision_box_ = new wxCheckBox( collision_panel_, wxID_ANY, wxT("Collision checks enabled"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
00190 collision_box_->SetValue(true);
00191 bSizer4->Add( collision_box_, 0, wxALL, 5 );
00192
00193 model_object_button_ = new wxButton( collision_panel_, wxID_ANY, wxT("Model object"), wxDefaultPosition, wxDefaultSize, 0 );
00194 bSizer4->Add( model_object_button_, 0, wxALL, 5 );
00195
00196 collision_panel_->SetSizer( bSizer4 );
00197 collision_panel_->Layout();
00198 bSizer4->Fit( collision_panel_ );
00199 m_notebook1->AddPage( collision_panel_, wxT("Collision"), false );
00200 m_panel3 = new wxPanel( m_notebook1, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
00201 wxBoxSizer* bSizer171;
00202 bSizer171 = new wxBoxSizer( wxVERTICAL );
00203
00204 wxBoxSizer* bSizer8;
00205 bSizer8 = new wxBoxSizer( wxHORIZONTAL );
00206
00207 arm_go_button_ = new wxButton( m_panel3, wxID_ANY, wxT("Move arm"), wxDefaultPosition, wxSize( -1,-1 ), 0 );
00208 bSizer8->Add( arm_go_button_, 0, wxALL, 5 );
00209
00210 wxString arm_action_choice_Choices[] = { wxT("to side"), wxT("to front"), wxT("open gripper"), wxT("close gripper") };
00211 int arm_action_choice_NChoices = sizeof( arm_action_choice_Choices ) / sizeof( wxString );
00212 arm_action_choice_ = new wxChoice( m_panel3, wxID_ANY, wxDefaultPosition, wxSize( 80,-1 ), arm_action_choice_NChoices, arm_action_choice_Choices, 0 );
00213 arm_action_choice_->SetSelection( 0 );
00214 bSizer8->Add( arm_action_choice_, 0, wxALL, 5 );
00215
00216 wxString arm_planner_choice_Choices[] = { wxT("with planner"), wxT("open-loop") };
00217 int arm_planner_choice_NChoices = sizeof( arm_planner_choice_Choices ) / sizeof( wxString );
00218 arm_planner_choice_ = new wxChoice( m_panel3, wxID_ANY, wxDefaultPosition, wxSize( 110,-1 ), arm_planner_choice_NChoices, arm_planner_choice_Choices, 0 );
00219 arm_planner_choice_->SetSelection( 0 );
00220 bSizer8->Add( arm_planner_choice_, 0, wxALL, 5 );
00221
00222 bSizer171->Add( bSizer8, 0, 0, 5 );
00223
00224 wxBoxSizer* bSizer15;
00225 bSizer15 = new wxBoxSizer( wxHORIZONTAL );
00226
00227 m_staticText9 = new wxStaticText( m_panel3, wxID_ANY, wxT("Gripper: closed"), wxDefaultPosition, wxDefaultSize, 0 );
00228 m_staticText9->Wrap( -1 );
00229 bSizer15->Add( m_staticText9, 0, wxALL, 5 );
00230
00231 gripper_slider_ = new wxSlider( m_panel3, wxID_ANY, 50, 0, 100, wxDefaultPosition, wxSize( 100,-1 ), wxSL_HORIZONTAL );
00232 bSizer15->Add( gripper_slider_, 0, wxALL, 5 );
00233
00234 m_staticText11 = new wxStaticText( m_panel3, wxID_ANY, wxT("open"), wxDefaultPosition, wxDefaultSize, 0 );
00235 m_staticText11->Wrap( -1 );
00236 bSizer15->Add( m_staticText11, 0, wxALL, 5 );
00237
00238 bSizer171->Add( bSizer15, 0, wxEXPAND, 5 );
00239
00240 look_button_ = new wxButton( m_panel3, wxID_ANY, wxT("Look at table"), wxDefaultPosition, wxSize( 120,-1 ), 0 );
00241 bSizer171->Add( look_button_, 0, wxALL, 5 );
00242
00243 m_panel3->SetSizer( bSizer171 );
00244 m_panel3->Layout();
00245 bSizer171->Fit( m_panel3 );
00246 m_notebook1->AddPage( m_panel3, wxT("Helper tools"), false );
00247
00248 bSizer1->Add( m_notebook1, 1, wxALL|wxEXPAND, 0 );
00249
00250 wxBoxSizer* bSizer5;
00251 bSizer5 = new wxBoxSizer( wxHORIZONTAL );
00252
00253 m_staticText39 = new wxStaticText( this, wxID_ANY, wxT("Status:"), wxDefaultPosition, wxDefaultSize, 0 );
00254 m_staticText39->Wrap( -1 );
00255 m_staticText39->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) );
00256
00257 bSizer5->Add( m_staticText39, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00258
00259 status_label_ = new wxStaticText( this, wxID_ANY, wxT("idle"), wxDefaultPosition, wxDefaultSize, 0 );
00260 status_label_->Wrap( -1 );
00261 bSizer5->Add( status_label_, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00262
00263
00264 bSizer5->Add( 0, 0, 1, wxEXPAND, 5 );
00265
00266 bSizer1->Add( bSizer5, 0, wxEXPAND, 0 );
00267
00268 wxBoxSizer* bSizer41;
00269 bSizer41 = new wxBoxSizer( wxHORIZONTAL );
00270
00271 cancel_button_ = new wxButton( this, wxID_ANY, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
00272 bSizer41->Add( cancel_button_, 0, wxALL, 5 );
00273
00274
00275 bSizer41->Add( 0, 0, 1, wxEXPAND, 5 );
00276
00277 m_staticText38 = new wxStaticText( this, wxID_ANY, wxT("Arm:"), wxDefaultPosition, wxDefaultSize, 0 );
00278 m_staticText38->Wrap( -1 );
00279 bSizer41->Add( m_staticText38, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
00280
00281 wxString arm_choice_Choices[] = { wxT("right arm"), wxT("left arm") };
00282 int arm_choice_NChoices = sizeof( arm_choice_Choices ) / sizeof( wxString );
00283 arm_choice_ = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, arm_choice_NChoices, arm_choice_Choices, 0 );
00284 arm_choice_->SetSelection( 0 );
00285 bSizer41->Add( arm_choice_, 0, wxALL, 5 );
00286
00287 bSizer1->Add( bSizer41, 0, wxEXPAND, 0 );
00288
00289 this->SetSizer( bSizer1 );
00290 this->Layout();
00291
00292
00293 grasp_button_->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::graspButtonClicked ), NULL, this );
00294 place_button_->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::placeButtonClicked ), NULL, this );
00295 advanced_options_button_->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::advancedOptionsClicked ), NULL, this );
00296 reset_button_->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::resetButtonClicked ), NULL, this );
00297 new_map_button_->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::takeMapButtonClicked ), NULL, this );
00298 collision_box_->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::collisionBoxClicked ), NULL, this );
00299 model_object_button_->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::modelObjectClicked ), NULL, this );
00300 arm_go_button_->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::armGoButtonClicked ), NULL, this );
00301 gripper_slider_->Connect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( InteractiveManipulationFrameBase::gripperSliderScrollChanged ), NULL, this );
00302 look_button_->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::lookButtonClicked ), NULL, this );
00303 cancel_button_->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::cancelButtonClicked ), NULL, this );
00304 }
00305
00306 InteractiveManipulationFrameBase::~InteractiveManipulationFrameBase()
00307 {
00308
00309 grasp_button_->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::graspButtonClicked ), NULL, this );
00310 place_button_->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::placeButtonClicked ), NULL, this );
00311 advanced_options_button_->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::advancedOptionsClicked ), NULL, this );
00312 reset_button_->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::resetButtonClicked ), NULL, this );
00313 new_map_button_->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::takeMapButtonClicked ), NULL, this );
00314 collision_box_->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::collisionBoxClicked ), NULL, this );
00315 model_object_button_->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::modelObjectClicked ), NULL, this );
00316 arm_go_button_->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::armGoButtonClicked ), NULL, this );
00317 gripper_slider_->Disconnect( wxEVT_SCROLL_CHANGED, wxScrollEventHandler( InteractiveManipulationFrameBase::gripperSliderScrollChanged ), NULL, this );
00318 look_button_->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::lookButtonClicked ), NULL, this );
00319 cancel_button_->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( InteractiveManipulationFrameBase::cancelButtonClicked ), NULL, this );
00320 }