23 #include <wx/clipbrd.h>
25 #include "wx/canvas/execdlg.h"
27 const int CP_SEL = wxID_HIGHEST + 8801 ;
28 const int CP_ALL = wxID_HIGHEST + 8802 ;
37 int n, const wxString choices[],
long style )
38 : wxListBox ( parent,
id, pos, size, n, choices, style )
41 m_mousemenu =
new wxMenu( _T(
"Copy" ) , (
long )0 );
42 m_mousemenu->Append( CP_SEL, _T(
"selected" ) );
43 m_mousemenu->Append( CP_ALL, _T(
"all" ) );
46 void CopywxListBox::CopySel(
class wxCommandEvent& WXUNUSED( event ) )
48 if ( wxTheClipboard->Open() )
51 data = data + GetStringSelection() + _T(
"\n" );
52 wxTheClipboard->SetData(
new wxTextDataObject( data ) );
53 wxTheClipboard->Close();
57 void CopywxListBox::CopyAll(
class wxCommandEvent& WXUNUSED( event ) )
59 if ( wxTheClipboard->Open() )
63 for ( i = 0; i < GetCount(); i++ )
65 data = data + GetString( i ) + _T(
"\n" );
67 wxTheClipboard->SetData(
new wxTextDataObject( data ) );
68 wxTheClipboard->Close();
72 void CopywxListBox::OnMouseRightDown(
class wxMouseEvent& WXUNUSED( event ) )
74 PopupMenu( m_mousemenu, 0, 0 );
91 EVT_TEXT( IDentry_X, a2dCoordinateEntry::OnEntryXEnter )
92 EVT_TEXT( IDentry_Y, a2dCoordinateEntry::OnEntryYEnter )
94 EVT_TEXT_ENTER( IDentry_X, a2dCoordinateEntry::OnEntryXEnter )
96 EVT_TEXT_ENTER( IDentry_Y, a2dCoordinateEntry::OnEntryYEnter )
98 EVT_TEXT_ENTER( IDentry_CalcCoord, a2dCoordinateEntry::OnEntryCalccoordEnter )
100 EVT_RADIOBOX( IDentry_CartPolar, a2dCoordinateEntry::OnEntryCartpolarSelected )
102 EVT_RADIOBOX( IDentry_AbsRel, a2dCoordinateEntry::OnEntryAbsrelSelected )
104 EVT_CHECKBOX( IDentry_Snap, a2dCoordinateEntry::OnEntrySnapClick )
106 EVT_BUTTON( IDentry_Hide, a2dCoordinateEntry::OnEntryHideClick )
108 EVT_BUTTON( IDentry_Apply, a2dCoordinateEntry::OnEntryApplyClick )
110 EVT_BUTTON( IDentry_Cancel, a2dCoordinateEntry::OnEntryCancelClick )
118 a2dCoordinateEntry::a2dCoordinateEntry( )
125 Create( parent,
id, caption, pos, size, style );
132 bool a2dCoordinateEntry::Create( wxWindow* parent, wxWindowID
id,
const wxString& caption,
const wxPoint& pos,
const wxSize& size,
long style )
144 SetExtraStyle( GetExtraStyle() | wxWS_EX_BLOCK_EVENTS );
145 wxDialog::Create( parent,
id, caption, pos, size, style );
148 GetSizer()->Fit(
this );
149 GetSizer()->SetSizeHints(
this );
162 wxBoxSizer* itemBoxSizer2 =
new wxBoxSizer( wxVERTICAL );
163 itemDialog1->SetSizer( itemBoxSizer2 );
165 wxBoxSizer* itemBoxSizer3 =
new wxBoxSizer( wxHORIZONTAL );
166 itemBoxSizer2->Add( itemBoxSizer3, 0, wxGROW | wxALL, 1 );
168 wxStaticBox* itemStaticBoxSizer4Static =
new wxStaticBox( itemDialog1, wxID_ANY, _(
"Coordinates" ) );
169 wxStaticBoxSizer* itemStaticBoxSizer4 =
new wxStaticBoxSizer( itemStaticBoxSizer4Static, wxVERTICAL );
170 itemBoxSizer3->Add( itemStaticBoxSizer4, 1, wxGROW | wxALL, 0 );
172 wxBoxSizer* itemBoxSizer5 =
new wxBoxSizer( wxHORIZONTAL );
173 itemStaticBoxSizer4->Add( itemBoxSizer5, 0, wxGROW | wxALL, 5 );
175 m_xText =
new wxStaticText( itemDialog1, wxID_STATIC, _(
"X" ), wxDefaultPosition, wxDefaultSize, 0 );
176 itemBoxSizer5->Add( m_xText, 0, wxALL, 5 );
178 m_x =
new wxTextCtrl( itemDialog1, IDentry_X, _T(
"" ), wxDefaultPosition, wxDefaultSize, 0 );
179 itemBoxSizer5->Add( m_x, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
181 m_yText =
new wxStaticText( itemDialog1, wxID_STATIC, _(
"Y" ), wxDefaultPosition, wxDefaultSize, 0 );
182 itemBoxSizer5->Add( m_yText, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
184 m_y =
new wxTextCtrl( itemDialog1, IDentry_Y, _T(
"" ), wxDefaultPosition, wxDefaultSize, 0 );
185 itemBoxSizer5->Add( m_y, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
187 wxBoxSizer* itemBoxSizer10 =
new wxBoxSizer( wxHORIZONTAL );
188 itemStaticBoxSizer4->Add( itemBoxSizer10, 0, wxGROW | wxALL, 5 );
190 wxStaticText* itemStaticText11 =
new wxStaticText( itemDialog1, wxID_STATIC, _(
"Calc Coord" ), wxDefaultPosition, wxDefaultSize, 0 );
191 itemBoxSizer10->Add( itemStaticText11, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
193 m_calcCoord =
new wxTextCtrl( itemDialog1, IDentry_CalcCoord, _T(
"" ), wxDefaultPosition, wxDefaultSize, 0 );
194 itemBoxSizer10->Add( m_calcCoord, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
196 wxBoxSizer* itemBoxSizer13 =
new wxBoxSizer( wxVERTICAL );
197 itemBoxSizer3->Add( itemBoxSizer13, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
199 wxString m_cartPolarStrings[] =
204 m_cartPolar =
new wxRadioBox( itemDialog1, IDentry_CartPolar, _(
"Cart-Polar" ), wxDefaultPosition, wxDefaultSize, 2, m_cartPolarStrings, 1, wxRA_SPECIFY_ROWS );
205 itemBoxSizer13->Add( m_cartPolar, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 1 );
207 wxString m_absRelStrings[] =
212 m_absRel =
new wxRadioBox( itemDialog1, IDentry_AbsRel, _(
"Abs-Rel" ), wxDefaultPosition, wxDefaultSize, 2, m_absRelStrings, 1, wxRA_SPECIFY_ROWS );
213 itemBoxSizer13->Add( m_absRel, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 1 );
215 m_snap =
new wxCheckBox( itemDialog1, IDentry_Snap, _(
"Use Snapping" ), wxDefaultPosition, wxDefaultSize, 0 );
216 m_snap->SetValue( FALSE );
217 itemBoxSizer13->Add( m_snap, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 0 );
219 wxBoxSizer* itemBoxSizer17 =
new wxBoxSizer( wxHORIZONTAL );
220 itemBoxSizer2->Add( itemBoxSizer17, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 0 );
224 m_apply =
new wxButton( itemDialog1, IDentry_Apply, _(
"Oke" ), wxDefaultPosition, wxDefaultSize, 0 );
228 m_hide =
new wxButton( itemDialog1, IDentry_Hide, _(
"Hide" ), wxDefaultPosition, wxDefaultSize, 0 );
229 itemBoxSizer17->Add( m_hide, 0, wxALIGN_CENTER_VERTICAL | wxALL, 0 );
231 m_apply =
new wxButton( itemDialog1, IDentry_Apply, _(
"Apply" ), wxDefaultPosition, wxDefaultSize, 0 );
233 itemBoxSizer17->Add( m_apply, 0, wxALIGN_CENTER_VERTICAL | wxALL, 0 );
235 m_cancel =
new wxButton( itemDialog1, IDentry_Cancel, _(
"Cancel" ), wxDefaultPosition, wxDefaultSize, 0 );
236 itemBoxSizer17->Add( m_cancel, 0, wxALIGN_CENTER_VERTICAL | wxALL, 0 );
303 if ( m_cartPolar->GetSelection() == 0 )
305 m_xText->SetLabel( _T(
"X" ) );
306 m_yText->SetLabel( _T(
"Y" ) );
310 m_xText->SetLabel( _T(
"Ang" ) );
311 m_yText->SetLabel( _T(
"Radius" ) );
313 GetSizer()->Fit(
this );
341 SetReturnCode( wxID_OK );
359 bool polar = m_cartPolar->GetSelection() == 1;
360 bool relative = m_absRel->GetSelection() == 1;
366 relative( relative ).
368 snapped( m_snap->GetValue() ) );
389 m_xcalc = wxAtoi( m_x->GetValue() );
390 m_ycalc = wxAtoi( m_y->GetValue() );
391 bool polar = m_cartPolar->GetSelection() == 1;
392 bool relative = m_absRel->GetSelection() == 1;
403 double radius = m_ycalc;
404 double ang = m_xcalc;
406 m_xcalc = xold + radius * cos(
wxDegToRad( ang ) );
407 m_ycalc = yold + radius * sin(
wxDegToRad( ang ) );
419 double radius = m_ycalc;
420 double ang = m_xcalc;
428 calc.Printf( wxT(
" x = %lg, y = %lg" ), m_xcalc, m_ycalc );
429 m_calcCoord->SetValue( calc );
Display Part of a a2dDrawing, in which a2dCanvasObjects are shown.
void OnEntryCartpolarSelected(wxCommandEvent &event)
wxEVT_COMMAND_RADIOBOX_SELECTED event handler for IDentry_CartPolar
double wxDegToRad(double deg)
conversion from degrees to radians
bool Create(wxWindow *parent, wxWindowID id=SYMBOL_A2DCOORDINATEENTRY_IDNAME, const wxString &caption=SYMBOL_A2DCOORDINATEENTRY_TITLE, const wxPoint &pos=SYMBOL_A2DCOORDINATEENTRY_POSITION, const wxSize &size=SYMBOL_A2DCOORDINATEENTRY_SIZE, long style=SYMBOL_A2DCOORDINATEENTRY_STYLE)
Creation.
void OnEntryCancelClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for IDentry_Cancel
a2dCoordinateEntry()
Constructors.
a2dDrawingPart * GetActiveDrawingPart()
return the currently/last active drawing part.
void OnEntrySnapClick(wxCommandEvent &event)
wxEVT_COMMAND_CHECKBOX_CLICKED event handler for IDentry_Snap
void OnEntryApplyClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for IDentry_Apply
void OnEntryHideClick(wxCommandEvent &event)
wxEVT_COMMAND_BUTTON_CLICKED event handler for IDentry_Hide
double GetLastYEntry() const
holds last mouse Y position in world coordinates, as set by tools.
void OnEntryYEnter(wxCommandEvent &event)
wxEVT_COMMAND_TEXT_ENTER event handler for IDentry_Y
wxBitmap GetBitmapResource(const wxString &name)
Retrieves bitmap resources.
double GetLastXEntry() const
holds last mouse X position in world coordinates, as set by tools.
void OnEntryXEnter(wxCommandEvent &event)
wxEVT_COMMAND_TEXT_ENTER event handler for IDentry_X
wxIcon GetIconResource(const wxString &name)
Retrieves icon resources.
static bool ShowToolTips()
Should we show tooltips?
virtual bool Submit(a2dCommand *command, bool storeIt=true)
next to the base class submit, it sets a2DocumentCommandProcessor for a2dCommand
a2dCommandProcessor * GetCommandProcessor() const
Returns a pointer to the command processor associated with this document.
void OnEntryCalccoordEnter(wxCommandEvent &event)
wxEVT_COMMAND_TEXT_ENTER event handler for IDentry_CalcCoord
void CalcCoordinate()
based on the current setting calculate the cursor position
a2dDrawing * GetDrawing() const
get drawing via top object
a2dCanvasGlobal * a2dCanvasGlobals
global a2dCanvasGlobal to have easy access to global settings
void OnEntryAbsrelSelected(wxCommandEvent &event)
wxEVT_COMMAND_RADIOBOX_SELECTED event handler for IDentry_AbsRel
void CreateControls(long style)
Creates the controls and sizers.
GUI listbox with copy feature.
A pointer class, that automatically calls SmrtPtrOwn/SmrtPtrRelease.