KiCad PCB EDA Suite
DIALOG_MOVE_EXACT Class Reference

#include <dialog_move_exact.h>

Inheritance diagram for DIALOG_MOVE_EXACT:
DIALOG_MOVE_EXACT_BASE DIALOG_SHIM KIWAY_HOLDER

Classes

struct  MOVE_EXACT_OPTIONS
 Persistent dialog options. More...
 

Public Member Functions

 DIALOG_MOVE_EXACT (PCB_BASE_FRAME *aParent, MOVE_PARAMETERS &aParams)
 
 ~DIALOG_MOVE_EXACT ()
 
int ShowQuasiModal ()
 
void EndQuasiModal (int retCode)
 
bool IsQuasiModal ()
 
bool Show (bool show) override
 
bool Enable (bool enable) override
 
KIWAYKiway () const
 Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in. More...
 
PROJECTPrj () const
 Function Prj returns a reference to the PROJECT "associated with" this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 Function SetKiway. More...
 

Protected Member Functions

virtual void OnClose (wxCloseEvent &event)
 
void FinishDialogSettings ()
 In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls. More...
 
void FixOSXCancelButtonIssue ()
 A ugly hack to fix an issue on OSX: when typing ctrl+c in a wxTextCtrl inside a dialog, it is closed instead of copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer, when the dlg is created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority to copy text standard accelerator, and the dlg is closed when trying to copy text this function do nothing on other platforms. More...
 

Protected Attributes

wxBoxSizer * bMainSizer
 
wxCheckBox * m_polarCoords
 
wxStaticText * m_xLabel
 
wxTextCtrl * m_xEntry
 
wxStaticText * m_xUnit
 
wxButton * m_clearX
 
wxStaticText * m_yLabel
 
wxTextCtrl * m_yEntry
 
wxStaticText * m_yUnit
 
wxButton * m_clearY
 
wxStaticText * m_rotLabel
 
wxTextCtrl * m_rotEntry
 
wxStaticText * m_rotUnit
 
wxButton * m_clearRot
 
wxRadioBox * m_originChooser
 
wxBoxSizer * bAnchorSizer
 
wxCheckBox * m_cbOverride
 
wxChoice * m_anchorChoice
 
wxStaticLine * m_staticline1
 
wxStdDialogButtonSizer * m_stdButtons
 
wxButton * m_stdButtonsOK
 
wxButton * m_stdButtonsCancel
 
std::string m_hash_key
 
EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 

Private Member Functions

void OnTextFocusLost (wxFocusEvent &event) override
 
void OnPolarChanged (wxCommandEvent &event) override
 
void OnClear (wxCommandEvent &event) override
 
void OnOriginChanged (wxCommandEvent &event) override
 
void OnOverrideChanged (wxCommandEvent &event) override
 
void OnOkClick (wxCommandEvent &event) override
 
void ToPolarDeg (double x, double y, double &r, double &q)
 Convert a given Cartesian point into a polar representation. More...
 
bool GetTranslationInIU (wxPoint &val, bool polar)
 Get the (Cartesian) translation described by the text entries. More...
 
void updateDlgTexts (bool aPolar)
 

Private Attributes

wxPointm_translation
 
double & m_rotation
 
MOVE_EXACT_ORIGINm_origin
 
MOVE_EXACT_ANCHORm_anchor
 
bool & m_allowOverride
 
bool & m_editingFootprint
 

Static Private Attributes

static MOVE_EXACT_OPTIONS m_options
 

Detailed Description

Definition at line 62 of file dialog_move_exact.h.

Constructor & Destructor Documentation

DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT ( PCB_BASE_FRAME aParent,
MOVE_PARAMETERS aParams 
)

Definition at line 38 of file dialog_move_exact.cpp.

References DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::anchor, ANCHOR_CENTER_FOOTPRINT, ANCHOR_FROM_LIBRARY, ANCHOR_TOP_LEFT_PAD, DIALOG_MOVE_EXACT_BASE::bAnchorSizer, DIALOG_MOVE_EXACT_BASE::bMainSizer, DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::entry1, DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::entry2, DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::entryRotation, g_UserUnit, GetAbbreviatedUnitsLabel(), PCB_BASE_FRAME::GetAuxOrigin(), PCB_BASE_FRAME::GetGridOrigin(), PCB_BASE_FRAME::GetScreen(), m_allowOverride, DIALOG_MOVE_EXACT_BASE::m_anchorChoice, DIALOG_MOVE_EXACT_BASE::m_cbOverride, m_editingFootprint, BASE_SCREEN::m_O_Curseur, m_options, DIALOG_MOVE_EXACT_BASE::m_originChooser, DIALOG_MOVE_EXACT_BASE::m_polarCoords, DIALOG_MOVE_EXACT_BASE::m_rotEntry, DIALOG_MOVE_EXACT_BASE::m_stdButtonsOK, DIALOG_MOVE_EXACT_BASE::m_xEntry, DIALOG_MOVE_EXACT_BASE::m_xUnit, DIALOG_MOVE_EXACT_BASE::m_yEntry, DIALOG_MOVE_EXACT_BASE::m_yUnit, DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::origin, DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::overrideAnchor, DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::polarCoords, RELATIVE_TO_CURRENT_POSITION, RELATIVE_TO_DRILL_PLACE_ORIGIN, RELATIVE_TO_GRID_ORIGIN, RELATIVE_TO_USER_ORIGIN, and updateDlgTexts().

38  :
39  DIALOG_MOVE_EXACT_BASE( aParent ),
40  m_translation( aParams.translation ),
41  m_rotation( aParams.rotation ),
42  m_origin( aParams.origin ),
43  m_anchor( aParams.anchor ),
44  m_allowOverride( aParams.allowOverride ),
46 {
47  // set the unit labels
48  m_xUnit->SetLabelText( GetAbbreviatedUnitsLabel( g_UserUnit ) );
49  m_yUnit->SetLabelText( GetAbbreviatedUnitsLabel( g_UserUnit ) );
50 
51  // tabbing goes through the entries in sequence
52  m_yEntry->MoveAfterInTabOrder( m_xEntry );
53  m_rotEntry->MoveAfterInTabOrder( m_yEntry );
54 
55  // and set up the entries according to the saved options
56  m_polarCoords->SetValue( m_options.polarCoords );
57  m_xEntry->SetValue( wxString::FromDouble( m_options.entry1 ) );
58  m_yEntry->SetValue( wxString::FromDouble( m_options.entry2 ) );
59  m_rotEntry->SetValue( wxString::FromDouble( m_options.entryRotation ) );
60  m_originChooser->SetSelection( m_options.origin );
61 
62  if( m_allowOverride )
63  {
66 
67  // ME_ANCHOR_FROM_LIBRARY is not in the wxChoice options so show the first choice instead
69  {
70  m_anchorChoice->SetSelection( ANCHOR_TOP_LEFT_PAD );
71  }
72  else
73  {
74  m_anchorChoice->SetSelection( m_options.anchor );
75  }
76 
78  {
79  // no footprint override necessary in this mode
80  m_cbOverride->Disable();
81  m_anchorChoice->Disable();
82  }
83 
84  if( m_editingFootprint )
85  {
86  // there is no point in showing the center footprint option when editing footprints
88  }
89  }
90  else
91  {
92  // hide the checkbox and choice control if overides are not allowed
93  bMainSizer->Hide( bAnchorSizer, true );
94  }
95 
96  if( wxPoint( 0, 0 ) == aParent->GetScreen()->m_O_Curseur )
97  {
98  // disble the user origin option when the user oigin is not set
99  m_originChooser->Enable( RELATIVE_TO_USER_ORIGIN, false );
100  m_originChooser->SetItemToolTip( RELATIVE_TO_USER_ORIGIN,
101  wxString( "The user origin is currently not set\n"
102  "Set it by using the <space> hotkey" ) );
103  }
104 
105  if( wxPoint( 0, 0 ) == aParent->GetGridOrigin() )
106  {
107  // disble the grid origin option when the user oigin is not set
108  m_originChooser->Enable( RELATIVE_TO_GRID_ORIGIN, false );
109  m_originChooser->SetItemToolTip( RELATIVE_TO_GRID_ORIGIN,
110  wxString( "The grid origin is currently not set\n"
111  "Set it by using the tool in the <place> menu" ) );
112  }
113 
114  if( wxPoint( 0, 0 ) == aParent->GetAuxOrigin() )
115  {
116  // disble the grid origin option when the drill/place oigin is not set
119  wxString( "The drill/place origin is currently not set\n"
120  "Set it by using the tool in the <place> menu" ) );
121  }
122 
123  updateDlgTexts( m_polarCoords->IsChecked() );
124 
125  m_stdButtonsOK->SetDefault();
126 
127  GetSizer()->SetSizeHints( this );
128  Layout();
129 }
const wxPoint & GetGridOrigin() const override
Function GetGridOrigin returns the absolute coordinates of the origin of the snap grid...
MOVE_EXACT_ORIGIN origin
MOVE_EXACT_ORIGIN & m_origin
wxPoint m_O_Curseur
Relative Screen cursor coordinate (on grid) in user units.
const wxPoint & GetAuxOrigin() const override
Function GetAuxOrigin returns the origin of the axis used for plotting and various exports...
void updateDlgTexts(bool aPolar)
wxString GetAbbreviatedUnitsLabel(EDA_UNITS_T aUnit)
Definition: base_units.cpp:479
EDA_UNITS_T g_UserUnit
Global variables definitions.
Definition: common.cpp:56
DIALOG_MOVE_EXACT_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Move Item"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(509, 277), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
PCB_SCREEN * GetScreen() const override
Function GetScreen returns a pointer to a BASE_SCREEN or one of its derivatives.
MOVE_EXACT_ANCHOR & m_anchor
static MOVE_EXACT_OPTIONS m_options
MOVE_EXACT_ANCHOR anchor
DIALOG_MOVE_EXACT::~DIALOG_MOVE_EXACT ( )

Definition at line 132 of file dialog_move_exact.cpp.

133 {
134 }

Member Function Documentation

bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 181 of file dialog_shim.cpp.

Referenced by DIALOG_PRINT_USING_PRINTER::InitValues().

182 {
183  // so we can do logging of this state change:
184 
185 #if defined(DEBUG)
186  const char* type_id = typeid( *this ).name();
187  printf( "wxDialog %s: %s\n", type_id, enable ? "enabled" : "disabled" );
188 #endif
189 
190  return wxDialog::Enable( enable );
191 }
void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 539 of file dialog_shim.cpp.

References DIALOG_SHIM::IsQuasiModal(), DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, DIALOG_SHIM::m_qmodal_showing, and DIALOG_SHIM::Show().

Referenced by HK_PROMPT_DIALOG::EndFlexible(), DIALOG_SHIM::OnButton(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnCancelButtonClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnCancelButtonClick(), DIALOG_EDIT_ONE_FIELD::OnCancelClick(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnCloseDialog(), DIALOG_EDIT_ONE_FIELD::OnCloseDialog(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnCloseDialog(), DIALOG_CHOOSE_COMPONENT::OnCloseTimer(), DIALOG_SHIM::OnCloseWindow(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnOKButtonClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), DIALOG_EDIT_ONE_FIELD::OnOkClick(), DIALOG_EXCHANGE_MODULE::OnQuit(), DIALOG_CHOOSE_COMPONENT::OnSchViewDClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp(), and DIALOG_SHIM::~DIALOG_SHIM().

540 {
541  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
542  // handle validation in the same way as other dialogs.
543  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
544  return;
545 
546  SetReturnCode( retCode );
547 
548  if( !IsQuasiModal() )
549  {
550  wxFAIL_MSG( wxT( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal wasn't called" ) );
551  return;
552  }
553 
554  m_qmodal_showing = false;
555 
556  if( m_qmodal_loop )
557  {
558  if( m_qmodal_loop->IsRunning() )
559  m_qmodal_loop->Exit( 0 );
560  else
561  m_qmodal_loop->ScheduleExit( 0 );
562 
563  m_qmodal_loop = NULL;
564  }
565 
568 
569  Show( false );
570 }
bool m_qmodal_showing
Definition: dialog_shim.h:132
EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:131
bool IsQuasiModal()
Definition: dialog_shim.h:93
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:133
void DIALOG_SHIM::FinishDialogSettings ( )
protectedinherited

In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls.

FinishDialogSettings must be called from derived classes, when all widgets are initialized, and therefore their size fixed. If TransferDataToWindow() is used to initialize widgets, at end of TransferDataToWindow, or better at end of a wxInitDialogEvent handler

In any case, the best way is to call it in a wxInitDialogEvent handler after calling TransfertDataToWindow(), which is the default wxInitDialogEvent handler wxDialog

Definition at line 103 of file dialog_shim.cpp.

References PCAD2KICAD::Center.

Referenced by DIALOG_BOM::DIALOG_BOM(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_DESIGN_RULES::DIALOG_DESIGN_RULES(), DIALOG_DIMENSION_EDITOR::DIALOG_DIMENSION_EDITOR(), DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS(), DIALOG_DRC_CONTROL::DIALOG_DRC_CONTROL(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::DIALOG_EDIT_COMPONENT_IN_LIBRARY(), DIALOG_EESCHEMA_OPTIONS::DIALOG_EESCHEMA_OPTIONS(), DIALOG_ENUM_PADS::DIALOG_ENUM_PADS(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_KEEPOUT_AREA_PROPERTIES::DIALOG_KEEPOUT_AREA_PROPERTIES(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_LIB_EDIT_DRAW_ITEM::DIALOG_LIB_EDIT_DRAW_ITEM(), DIALOG_LIB_EDIT_TEXT::DIALOG_LIB_EDIT_TEXT(), DIALOG_LIB_NEW_COMPONENT::DIALOG_LIB_NEW_COMPONENT(), DIALOG_LIBEDIT_OPTIONS::DIALOG_LIBEDIT_OPTIONS(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_SCH_EDIT_SHEET_PIN::DIALOG_SCH_EDIT_SHEET_PIN(), DIALOG_SCH_SHEET_PROPS::DIALOG_SCH_SHEET_PROPS(), DIALOG_SELECT_PRETTY_LIB::DIALOG_SELECT_PRETTY_LIB(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_EDIT_ONE_FIELD::init(), NETLIST_DIALOG::NETLIST_DIALOG(), DIALOG_LIB_EDIT_PIN::OnInitDialog(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnInitDialog(), DIALOG_TRACK_VIA_PROPERTIES::OnInitDlg(), DIALOG_GRAPHIC_ITEMS_OPTIONS::OnInitDlg(), DialogEditModuleText::OnInitDlg(), DIALOG_SET_GRID::OnInitDlg(), DIALOG_PCB_TEXT_PROPERTIES::OnInitDlg(), DIALOG_PRINT_FOR_MODEDIT::OnInitDlg(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), DIALOG_MODULE_MODULE_EDITOR::OnInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_SPICE_MODEL::onInitDlg(), DIALOG_MODULE_BOARD_EDITOR::OnInitDlg(), DIALOG_PRINT_USING_PRINTER::OnInitDlg(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnInitDlg(), TARGET_PROPERTIES_DIALOG_EDITOR::TARGET_PROPERTIES_DIALOG_EDITOR(), and DIALOG_SIGNAL_LIST::TransferDataToWindow().

104 {
105  // must be called from the constructor of derived classes,
106  // when all widgets are initialized, and therefore their size fixed
107 
108  // SetSizeHints fixes the minimal size of sizers in the dialog
109  // (SetSizeHints calls Fit(), so no need to call it)
110  GetSizer()->SetSizeHints( this );
111 
112  // the default position, when calling the first time the dlg
113  Center();
114 }
void DIALOG_SHIM::FixOSXCancelButtonIssue ( )
protectedinherited

A ugly hack to fix an issue on OSX: when typing ctrl+c in a wxTextCtrl inside a dialog, it is closed instead of copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer, when the dlg is created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority to copy text standard accelerator, and the dlg is closed when trying to copy text this function do nothing on other platforms.

Definition at line 116 of file dialog_shim.cpp.

Referenced by DIALOG_SHIM::Show().

117 {
118 #ifdef __WXMAC__
119  // A ugly hack to fix an issue on OSX: ctrl+c closes the dialog instead of
120  // copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer
121  // created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority
122  // to copy text standard accelerator, and the dlg is closed when trying to copy text
123  wxButton* button = dynamic_cast< wxButton* > ( wxWindow::FindWindowById( wxID_CANCEL, this ) );
124 
125  if( button )
126  button->SetLabel( _( "Cancel" ) );
127 #endif
128 }
bool DIALOG_MOVE_EXACT::GetTranslationInIU ( wxPoint val,
bool  polar 
)
private

Get the (Cartesian) translation described by the text entries.

Parameters
valoutput translation vector
polarinterpret as polar coords
Returns
false if error (though the text conversion functions don't report errors)

Definition at line 146 of file dialog_move_exact.cpp.

References DEG2RAD(), DEGREES, DoubleValueFromString(), DIALOG_MOVE_EXACT_BASE::m_xEntry, DIALOG_MOVE_EXACT_BASE::m_yEntry, ValueFromTextCtrl(), wxPoint::x, and wxPoint::y.

Referenced by OnOkClick(), and OnPolarChanged().

147 {
148  if( polar )
149  {
150  const int r = ValueFromTextCtrl( *m_xEntry );
151  const double q = DoubleValueFromString( DEGREES, m_yEntry->GetValue() );
152 
153  val.x = r * cos( DEG2RAD( q / 10.0 ) );
154  val.y = r * sin( DEG2RAD( q / 10.0 ) );
155  }
156  else
157  {
158  // direct read
159  val.x = ValueFromTextCtrl( *m_xEntry );
160  val.y = ValueFromTextCtrl( *m_yEntry );
161  }
162 
163  // no validation to do here, but in future, you could return false here
164  return true;
165 }
int ValueFromTextCtrl(const wxTextCtrl &aTextCtr)
Convert the number Value in a string according to the internal units and the selected unit (g_UserUni...
Definition: base_units.cpp:384
double DEG2RAD(double deg)
Definition: trigo.h:191
double DoubleValueFromString(EDA_UNITS_T aUnits, const wxString &aTextValue)
Function DoubleValueFromString converts aTextValue to a double.
Definition: base_units.cpp:301
KIWAY& KIWAY_HOLDER::Kiway ( ) const
inlineinherited

Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in.

A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER.

Definition at line 60 of file kiway_player.h.

References KIWAY_HOLDER::m_kiway.

Referenced by SCH_EDIT_FRAME::AppendOneEEProject(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_CHOOSE_COMPONENT::ConstructRightPanel(), CVPCB_MAINFRAME::CreateScreenCmp(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_SHIM::DIALOG_SHIM(), EDIT_TOOL::editFootprintInFpEditor(), SCH_EDIT_FRAME::EditSheet(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), FOOTPRINT_EDIT_FRAME::GetPlotSettings(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::initBuffers(), LIB_EDIT_FRAME::InstallConfigFrame(), PCB_EDIT_FRAME::InstallModuleOptionsFrame(), KIWAY_PLAYER::language_change(), SCH_SHEET::Load(), CVPCB_MAINFRAME::LoadFootprintFiles(), KIWAY_PLAYER::OnChangeIconsOptions(), CVPCB_MAINFRAME::OnEditFootprintLibraryTable(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), SCH_EDIT_FRAME::OnLeftClick(), SCH_BASE_FRAME::OnOpenLibraryViewer(), SCH_EDIT_FRAME::OnSimulate(), DIALOG_EDIT_ONE_FIELD::OnTextValueSelectButtonClick(), FOOTPRINT_EDIT_FRAME::OnUpdateInsertModuleInBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadModuleFromBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateReplaceModuleInBoard(), SCH_EDIT_FRAME::OpenProjectFiles(), KIWAY_HOLDER::Prj(), PCB_EDIT_FRAME::Process_Config(), PCB_EDIT_FRAME::Process_Special_Functions(), FOOTPRINT_EDIT_FRAME::ProcessPreferences(), CVPCB_MAINFRAME::ReadNetListAndLinkFiles(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), LIB_EDIT_FRAME::refreshSchematic(), SCH_EDIT_FRAME::SaveEEFile(), CVPCB_MAINFRAME::SaveFootprintAssociation(), SCH_BASE_FRAME::SelectComponentFromLibBrowser(), CVPCB_MAINFRAME::SendMessageToEESCHEMA(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::SendMessageToPCBNEW(), SCH_EDIT_FRAME::sendNetlist(), FOOTPRINT_EDIT_FRAME::SetPlotSettings(), DISPLAY_FOOTPRINTS_FRAME::Show3D_Frame(), FOOTPRINT_VIEWER_FRAME::Show3D_Frame(), FOOTPRINT_EDIT_FRAME::Show3D_Frame(), FOOTPRINT_WIZARD_FRAME::Show3D_Frame(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::showButtonHandler(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::showButtonHandler(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), and DIALOG_EXCHANGE_MODULE::ViewAndSelectFootprint().

61  {
62  wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine.
63  return *m_kiway;
64  }
KIWAY * m_kiway
Definition: kiway_player.h:85
void DIALOG_MOVE_EXACT::OnClear ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MOVE_EXACT_BASE.

Definition at line 249 of file dialog_move_exact.cpp.

References DIALOG_MOVE_EXACT_BASE::m_clearRot, DIALOG_MOVE_EXACT_BASE::m_clearX, DIALOG_MOVE_EXACT_BASE::m_clearY, DIALOG_MOVE_EXACT_BASE::m_rotEntry, DIALOG_MOVE_EXACT_BASE::m_xEntry, and DIALOG_MOVE_EXACT_BASE::m_yEntry.

250 {
251  wxObject* obj = event.GetEventObject();
252  wxTextCtrl* entry = NULL;
253 
254  if( obj == m_clearX )
255  {
256  entry = m_xEntry;
257  }
258  else if( obj == m_clearY )
259  {
260  entry = m_yEntry;
261  }
262  else if( obj == m_clearRot )
263  {
264  entry = m_rotEntry;
265  }
266 
267  if( entry )
268  entry->SetValue( "0" );
269 }
virtual void DIALOG_MOVE_EXACT_BASE::OnClose ( wxCloseEvent &  event)
inlineprotectedvirtualinherited
void DIALOG_MOVE_EXACT::OnOkClick ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MOVE_EXACT_BASE.

Definition at line 272 of file dialog_move_exact.cpp.

References DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::anchor, ANCHOR_FROM_LIBRARY, DEGREES, DoubleValueFromString(), DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::entry1, DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::entry2, DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::entryRotation, GetTranslationInIU(), m_allowOverride, m_anchor, DIALOG_MOVE_EXACT_BASE::m_anchorChoice, DIALOG_MOVE_EXACT_BASE::m_cbOverride, m_options, m_origin, DIALOG_MOVE_EXACT_BASE::m_originChooser, DIALOG_MOVE_EXACT_BASE::m_polarCoords, m_rotation, DIALOG_MOVE_EXACT_BASE::m_rotEntry, m_translation, DIALOG_MOVE_EXACT_BASE::m_xEntry, DIALOG_MOVE_EXACT_BASE::m_yEntry, DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::origin, DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::overrideAnchor, DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS::polarCoords, and UNSCALED_UNITS.

273 {
275  m_origin = static_cast<MOVE_EXACT_ORIGIN>( m_originChooser->GetSelection() );
276 
277  if( m_cbOverride->IsChecked() && m_allowOverride )
278  {
279  m_anchor = static_cast<MOVE_EXACT_ANCHOR>( m_anchorChoice->GetSelection() );
280  }
281  else
282  {
284  }
285 
286  // for the output, we only deliver a Cartesian vector
287  bool ok = GetTranslationInIU( m_translation, m_polarCoords->IsChecked() );
288 
289  if( ok )
290  {
291  // save the settings
292  m_options.polarCoords = m_polarCoords->GetValue();
297  m_options.anchor = static_cast<MOVE_EXACT_ANCHOR>( m_anchorChoice->GetSelection() );
298  m_options.overrideAnchor = m_cbOverride->IsChecked();
299  event.Skip();
300  }
301 }
MOVE_EXACT_ORIGIN
MOVE_EXACT_ORIGIN & m_origin
MOVE_EXACT_ANCHOR
bool GetTranslationInIU(wxPoint &val, bool polar)
Get the (Cartesian) translation described by the text entries.
MOVE_EXACT_ANCHOR & m_anchor
static MOVE_EXACT_OPTIONS m_options
double DoubleValueFromString(EDA_UNITS_T aUnits, const wxString &aTextValue)
Function DoubleValueFromString converts aTextValue to a double.
Definition: base_units.cpp:301
void DIALOG_MOVE_EXACT::OnOriginChanged ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MOVE_EXACT_BASE.

Definition at line 199 of file dialog_move_exact.cpp.

References m_allowOverride, DIALOG_MOVE_EXACT_BASE::m_anchorChoice, DIALOG_MOVE_EXACT_BASE::m_cbOverride, DIALOG_MOVE_EXACT_BASE::m_originChooser, and RELATIVE_TO_CURRENT_POSITION.

200 {
201  if( m_originChooser->GetSelection() == RELATIVE_TO_CURRENT_POSITION )
202  {
203  //no need to override the achor in this mode since the reference in the current position
204  m_cbOverride->Disable();
205  m_anchorChoice->Disable();
206  }
207  else if( m_allowOverride )
208  {
209  m_cbOverride->Enable();
210 
211  if( m_cbOverride->IsChecked() )
212  m_anchorChoice->Enable();
213  }
214 }
void DIALOG_MOVE_EXACT::OnOverrideChanged ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MOVE_EXACT_BASE.

Definition at line 217 of file dialog_move_exact.cpp.

References DIALOG_MOVE_EXACT_BASE::m_anchorChoice, and DIALOG_MOVE_EXACT_BASE::m_cbOverride.

218 {
219  if( m_cbOverride->IsChecked() )
220  {
221  m_anchorChoice->Enable();
222  }
223  else
224  {
225  m_anchorChoice->Disable();
226  }
227 }
void DIALOG_MOVE_EXACT::OnPolarChanged ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MOVE_EXACT_BASE.

Definition at line 168 of file dialog_move_exact.cpp.

References GetTranslationInIU(), KiROUND(), DIALOG_MOVE_EXACT_BASE::m_polarCoords, DIALOG_MOVE_EXACT_BASE::m_xEntry, DIALOG_MOVE_EXACT_BASE::m_yEntry, PutValueInLocalUnits(), ToPolarDeg(), updateDlgTexts(), wxPoint::x, and wxPoint::y.

169 {
170  bool newPolar = m_polarCoords->IsChecked();
171  updateDlgTexts( newPolar );
172  wxPoint val;
173 
174  // get the value as previously stored
175  GetTranslationInIU( val, !newPolar );
176 
177  if( newPolar )
178  {
179  // convert to polar coordinates
180  double r, q;
181  ToPolarDeg( val.x, val.y, r, q );
182 
183  PutValueInLocalUnits( *m_xEntry, KiROUND( r / 10.0) * 10 );
184  m_yEntry->SetValue( wxString::FromDouble( q ) );
185  }
186  else
187  {
188  // vector is already in Cartesian, so just render out
189  // note - round off the last decimal place (10nm) to prevent
190  // (some) rounding causing errors when round-tripping
191  // you can never eliminate entirely, however
192  PutValueInLocalUnits( *m_xEntry, KiROUND( val.x / 10.0 ) * 10 );
193  PutValueInLocalUnits( *m_yEntry, KiROUND( val.y / 10.0 ) * 10 );
194  }
195  Layout();
196 }
static int KiROUND(double v)
KiROUND rounds a floating point number to an int using "round halfway cases away from zero"...
Definition: common.h:107
void updateDlgTexts(bool aPolar)
bool GetTranslationInIU(wxPoint &val, bool polar)
Get the (Cartesian) translation described by the text entries.
void PutValueInLocalUnits(wxTextCtrl &aTextCtr, int aValue)
Function PutValueInLocalUnits converts aValue from internal units to user units and append the units ...
Definition: base_units.cpp:265
void ToPolarDeg(double x, double y, double &r, double &q)
Convert a given Cartesian point into a polar representation.
void DIALOG_MOVE_EXACT::OnTextFocusLost ( wxFocusEvent &  event)
overrideprivatevirtual

Reset a text field to be 0 if it was exited while blank

Reimplemented from DIALOG_MOVE_EXACT_BASE.

Definition at line 304 of file dialog_move_exact.cpp.

305 {
306  wxTextCtrl* obj = static_cast<wxTextCtrl*>( event.GetEventObject() );
307 
308  if( obj->GetValue().IsEmpty() )
309  obj->SetValue( "0" );
310 
311  event.Skip();
312 }
PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Function Prj returns a reference to the PROJECT "associated with" this KIWAY.

Definition at line 34 of file kiway_holder.cpp.

References KIWAY_HOLDER::Kiway(), and KIWAY::Prj().

Referenced by SCH_EDIT_FRAME::AnnotateComponents(), SCH_EDIT_FRAME::AppendOneEEProject(), PCB_EDIT_FRAME::ArchiveModulesOnBoard(), LIB_VIEW_FRAME::BestZoom(), DIALOG_MODULE_MODULE_EDITOR::BrowseAndAdd3DShapeFile(), DIALOG_MODULE_BOARD_EDITOR::BrowseAndAdd3DShapeFile(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::BrowseAndSelectDocFile(), DIALOG_EXCHANGE_MODULE::BrowseAndSelectFootprint(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_MODULE_MODULE_EDITOR::Cfg3DPath(), DIALOG_MODULE_BOARD_EDITOR::Cfg3DPath(), SCH_EDIT_FRAME::CheckAnnotate(), SCH_SCREEN::CheckComponentsToPartsLinks(), SCH_EDIT_FRAME::ConvertPart(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), SCH_EDIT_FRAME::CreateArchiveLibrary(), PCB_BASE_EDIT_FRAME::CreateNewLibrary(), DIALOG_PLOT_SCHEMATIC::createPlotFileName(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), FOOTPRINT_EDIT_FRAME::DeleteModuleFromCurrentLibrary(), LIB_EDIT_FRAME::DeleteOnePart(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_EESCHEMA_CONFIG::DIALOG_EESCHEMA_CONFIG(), DIALOG_FP_LIB_TABLE::DIALOG_FP_LIB_TABLE(), DIALOG_MODULE_BOARD_EDITOR::DIALOG_MODULE_BOARD_EDITOR(), DIALOG_MODULE_MODULE_EDITOR::DIALOG_MODULE_MODULE_EDITOR(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD(), LIB_VIEW_FRAME::DisplayLibInfos(), SCH_BASE_FRAME::DisplayListComponentsInLib(), PCB_EDIT_FRAME::doAutoSave(), DIALOG_MODULE_MODULE_EDITOR::Edit3DShapeFileName(), DIALOG_MODULE_BOARD_EDITOR::Edit3DShapeFileName(), SCH_EDIT_FRAME::EditComponentFieldText(), SCH_EDIT_FRAME::EditSheet(), PCB_EDIT_FRAME::Export_IDF3(), PCB_EDIT_FRAME::ExportToGenCAD(), PCB_EDIT_FRAME::ExportVRML_File(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), DIALOG_GENDRILL::GenDrillAndMapFiles(), NETLIST_DIALOG::GenNetlist(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), LIB_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), LIB_EDIT_FRAME::GetCurPart(), FOOTPRINT_EDIT_FRAME::GetCurrentLib(), FOOTPRINT_EDIT_FRAME::getLibPath(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), DIALOG_BOM::getPluginFileName(), LIB_VIEW_FRAME::getSelectedAlias(), FP_THREAD_IFACE::GetTable(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::InitBuffers(), DIALOG_MODULE_MODULE_EDITOR::initModeditProperties(), DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties(), LIB_EDIT_FRAME::InstallConfigFrame(), SCH_EDIT_FRAME::InstallConfigFrame(), PCB_EDIT_FRAME::InstallNetlistFrame(), SCH_EDIT_FRAME::IsSearchCacheObsolete(), SCH_EDIT_FRAME::Load_Component(), SCH_EDIT_FRAME::LoadCmpToFootprintLinkFile(), CVPCB_MAINFRAME::LoadFootprintFiles(), SCH_EDIT_FRAME::LoadOneEEFile(), LIB_EDIT_FRAME::LoadOneLibraryPart(), LIB_EDIT_FRAME::LoadOneSymbol(), CVPCB_MAINFRAME::LoadProjectFile(), SCH_EDIT_FRAME::LoadProjectFile(), PCB_EDIT_FRAME::LoadProjectSettings(), DIALOG_DRC_CONTROL::makeValidFileNameReport(), FOOTPRINT_VIEWER_FRAME::OnActivate(), DIALOG_EESCHEMA_CONFIG::OnAddOrInsertLibClick(), DIALOG_EESCHEMA_CONFIG::OnAddOrInsertPath(), DIALOG_DRC_CONTROL::OnButtonBrowseRptFileClick(), LIB_EDIT_FRAME::OnCloseWindow(), CVPCB_MAINFRAME::OnEditFootprintLibraryTable(), DIALOG_GENDRILL::OnGenReportFile(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), PCB_EDIT_FRAME::OnLeftClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), DIALOG_NETLIST::OnOpenNetlistClick(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_SVG_PRINT::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_MODULE_POSITION::OnOutputDirectoryBrowseClicked(), LIB_EDIT_FRAME::OnPlotCurrentComponent(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), SCH_EDIT_FRAME::OnRightClick(), DIALOG_BOM::OnRunPlugin(), DIALOG_NETLIST::OnSaveMessagesToFile(), SCH_EDIT_FRAME::OnSaveProject(), DIALOG_SPICE_MODEL::onSelectIcLib(), LIB_VIEW_FRAME::OnSelectSymbol(), SCH_EDIT_FRAME::OnSelectUnit(), DIALOG_SPICE_MODEL::onSemiSelectLib(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnTestChipName(), FOOTPRINT_EDIT_FRAME::OnUpdateSelectCurrentLib(), LIB_EDIT_FRAME::OnViewEntryDoc(), LIB_VIEW_FRAME::onViewSymbolDocument(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_FRAME::PasteListOfItems(), PCB_EDITOR_CONTROL::PlaceModule(), SCH_EDIT_FRAME::prepareForNetlist(), SCH_EDIT_FRAME::Process_Config(), PCB_EDIT_FRAME::Process_Config(), SCH_EDIT_FRAME::Process_Special_Functions(), SCH_EDIT_FRAME::ProcessCmpToFootprintLinkFile(), FOOTPRINT_EDIT_FRAME::ProcessPreferences(), CVPCB_MAINFRAME::ReadNetListAndLinkFiles(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), LIB_VIEW_FRAME::ReCreateHToolbar(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), LIB_VIEW_FRAME::ReCreateListCmp(), LIB_VIEW_FRAME::ReCreateListLib(), LIB_VIEW_FRAME::RedrawActiveWindow(), EDA_3D_VIEWER::ReloadRequest(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), SCH_EDIT_FRAME::RescueProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), SCH_SCREEN::Save(), LIB_EDIT_FRAME::SaveActiveLibrary(), SCH_EDIT_FRAME::SaveEEFile(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), LIB_EDIT_FRAME::SaveOneSymbol(), CVPCB_MAINFRAME::SaveProjectFile(), SCH_EDIT_FRAME::SaveProjectSettings(), PCB_EDIT_FRAME::SaveProjectSettings(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), SCH_BASE_FRAME::SelectComponentFromLibrary(), FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint(), PCB_BASE_FRAME::SelectLibrary(), SCH_BASE_FRAME::SelectLibraryFromList(), SCH_EDIT_FRAME::sendNetlist(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), LIB_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), LIB_EDIT_FRAME::SetCurPart(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), EDA_3D_VIEWER::takeScreenshot(), DIALOG_ERC::TestErc(), DIALOG_SPICE_MODEL::updateFromFile(), SIM_PLOT_FRAME::updateNetlistExporter(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), CVPCB_MAINFRAME::UpdateTitle(), FOOTPRINT_EDIT_FRAME::updateTitle(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_MODULE_BOARD_EDITOR::~DIALOG_MODULE_BOARD_EDITOR(), and DIALOG_MODULE_MODULE_EDITOR::~DIALOG_MODULE_MODULE_EDITOR().

35 {
36  return Kiway().Prj();
37 }
KIWAY & Kiway() const
Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in...
Definition: kiway_player.h:60
VTBL_ENTRY PROJECT & Prj() const
Function Prj returns the PROJECT associated with this KIWAY.
Definition: kiway.cpp:144
void KIWAY_HOLDER::SetKiway ( wxWindow *  aDest,
KIWAY aKiway 
)
inherited

Function SetKiway.

Parameters
aDestis the recipient of aKiway pointer. It is only used for debugging, since "this" is not a wxWindow*. "this" is a KIWAY_HOLDER mix-in.
aKiwayis often from a parent window, or from KIFACE::CreateWindow().

Definition at line 41 of file kiway_holder.cpp.

References KIWAY_HOLDER::m_kiway, and name.

Referenced by DIALOG_SHIM::DIALOG_SHIM(), and SIM_PLOT_FRAME::SIM_PLOT_FRAME().

42 {
43 #if defined(DEBUG)
44  // offer a trap point for debugging most any window
45  wxASSERT( aDest );
46  if( !strcmp( typeid(aDest).name(), "DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB" ) )
47  {
48  int breakhere=1;
49  (void) breakhere;
50  }
51 #endif
52 
53  (void) aDest;
54 
55  m_kiway = aKiway;
56 }
KIWAY * m_kiway
Definition: kiway_player.h:85
const char * name
bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 138 of file dialog_shim.cpp.

References class_map, DIALOG_SHIM::FixOSXCancelButtonIssue(), EDA_RECT::GetPosition(), EDA_RECT::GetSize(), DIALOG_SHIM::m_hash_key, wxPoint::x, and wxPoint::y.

Referenced by DisplayHotkeyList(), DIALOG_SHIM::EndQuasiModal(), InvokeDialogERC(), DIALOG_SCH_FIND::OnCancel(), DIALOG_DRC_CONTROL::OnLeftDClickClearance(), DIALOG_DRC_CONTROL::OnLeftDClickUnconnected(), DIALOG_DRC_CONTROL::OnPopupMenu(), DIALOG_EXCHANGE_MODULE::OnQuit(), CVPCB_MAINFRAME::ReadNetListAndLinkFiles(), DRC::ShowDRCDialog(), and DIALOG_SHIM::ShowQuasiModal().

139 {
140  bool ret;
141  const char* hash_key;
142 
143  if( m_hash_key.size() )
144  {
145  // a special case like EDA_LIST_DIALOG, which has multiple uses.
146  hash_key = m_hash_key.c_str();
147  }
148  else
149  {
150  hash_key = typeid(*this).name();
151  }
152 
153  // Show or hide the window. If hiding, save current position and size.
154  // If showing, use previous position and size.
155  if( show )
156  {
157  wxDialog::Raise(); // Needed on OS X and some other window managers (i.e. Unity)
158  ret = wxDialog::Show( show );
159 
160  // classname is key, returns a zeroed out default EDA_RECT if none existed before.
161  EDA_RECT r = class_map[ hash_key ];
162 
163  if( r.GetSize().x != 0 && r.GetSize().y != 0 )
164  SetSize( r.GetPosition().x, r.GetPosition().y, r.GetSize().x, r.GetSize().y, 0 );
165  }
166  else
167  {
168  // Save the dialog's position & size before hiding, using classname as key
169  EDA_RECT r( wxDialog::GetPosition(), wxDialog::GetSize() );
170  class_map[ hash_key ] = r;
171 
172  ret = wxDialog::Show( show );
173  }
174 
176 
177  return ret;
178 }
std::string m_hash_key
Definition: dialog_shim.h:128
void FixOSXCancelButtonIssue()
A ugly hack to fix an issue on OSX: when typing ctrl+c in a wxTextCtrl inside a dialog, it is closed instead of copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer, when the dlg is created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority to copy text standard accelerator, and the dlg is closed when trying to copy text this function do nothing on other platforms.
static RECT_MAP class_map
const wxPoint & GetPosition() const
Class EDA_RECT handles the component boundary box.
const wxSize & GetSize() const
int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 494 of file dialog_shim.cpp.

References DBG, DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, DIALOG_SHIM::m_qmodal_showing, and DIALOG_SHIM::Show().

Referenced by LIB_EDIT_FRAME::DeleteOnePart(), SCH_EDIT_FRAME::EditComponent(), SCH_EDIT_FRAME::EditComponentFieldText(), LIB_EDIT_FRAME::EditField(), EDIT_TOOL::ExchangeFootprints(), PCB_EDIT_FRAME::InstallExchangeModuleFrame(), LIB_EDIT_FRAME::InstallFieldsEditorDialog(), LIB_VIEW_FRAME::OnSelectSymbol(), and SCH_BASE_FRAME::SelectComponentFromLibrary().

495 {
496  // This is an exception safe way to zero a pointer before returning.
497  // Yes, even though DismissModal() clears this first normally, this is
498  // here in case there's an exception before the dialog is dismissed.
499  struct NULLER
500  {
501  void*& m_what;
502  NULLER( void*& aPtr ) : m_what( aPtr ) {}
503  ~NULLER() { m_what = 0; } // indeed, set it to NULL on destruction
504  } clear_this( (void*&) m_qmodal_loop );
505 
506  // release the mouse if it's currently captured as the window having it
507  // will be disabled when this dialog is shown -- but will still keep the
508  // capture making it impossible to do anything in the modal dialog itself
509  wxWindow* win = wxWindow::GetCapture();
510  if( win )
511  win->ReleaseMouse();
512 
513  // Get the optimal parent
514  wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
515 
516  // Show the optimal parent
517  DBG( if( parent ) printf( "%s: optimal parent: %s\n", __func__, typeid(*parent).name() );)
518 
519  wxASSERT_MSG( !m_qmodal_parent_disabler,
520  wxT( "Caller using ShowQuasiModal() twice on same window?" ) );
521 
522  // quasi-modal: disable only my "optimal" parent
524 
525  Show( true );
526 
527  m_qmodal_showing = true;
528 
529  EVENT_LOOP event_loop;
530 
531  m_qmodal_loop = &event_loop;
532 
533  event_loop.Run();
534 
535  return GetReturnCode();
536 }
bool m_qmodal_showing
Definition: dialog_shim.h:132
EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:131
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:133
Toggle a window's "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:33
#define DBG(x)
Definition: fctsys.h:33
void DIALOG_MOVE_EXACT::ToPolarDeg ( double  x,
double  y,
double &  r,
double &  q 
)
private

Convert a given Cartesian point into a polar representation.

Linear units are not considered, the answer is in the same units as given Angle is returned in degrees

Definition at line 137 of file dialog_move_exact.cpp.

References RAD2DEG().

Referenced by OnPolarChanged().

138 {
139  // convert to polar coordinates
140  r = hypot ( x, y );
141 
142  q = ( r != 0) ? RAD2DEG( atan2( y, x ) ) : 0;
143 }
double RAD2DEG(double rad)
Definition: trigo.h:192
void DIALOG_MOVE_EXACT::updateDlgTexts ( bool  aPolar)
private

Definition at line 230 of file dialog_move_exact.cpp.

References DEGREES, g_UserUnit, GetAbbreviatedUnitsLabel(), DIALOG_MOVE_EXACT_BASE::m_xLabel, DIALOG_MOVE_EXACT_BASE::m_yLabel, and DIALOG_MOVE_EXACT_BASE::m_yUnit.

Referenced by DIALOG_MOVE_EXACT(), and OnPolarChanged().

231 {
232  if( aPolar )
233  {
234  m_xLabel->SetLabelText( _( "Distance:" ) ); // Polar radius
235  m_yLabel->SetLabelText( _( "Angle:" ) ); // Polar theta or angle
236 
237  m_yUnit->SetLabelText( GetAbbreviatedUnitsLabel( DEGREES ) );
238  }
239  else
240  {
241  m_xLabel->SetLabelText( _( "Move vector X:" ) );
242  m_yLabel->SetLabelText( _( "Move vector Y:" ) );
243 
244  m_yUnit->SetLabelText( GetAbbreviatedUnitsLabel( g_UserUnit ) );
245  }
246 }
wxString GetAbbreviatedUnitsLabel(EDA_UNITS_T aUnit)
Definition: base_units.cpp:479
EDA_UNITS_T g_UserUnit
Global variables definitions.
Definition: common.cpp:56

Member Data Documentation

wxBoxSizer* DIALOG_MOVE_EXACT_BASE::bAnchorSizer
protectedinherited
wxBoxSizer* DIALOG_MOVE_EXACT_BASE::bMainSizer
protectedinherited
bool& DIALOG_MOVE_EXACT::m_allowOverride
private

Definition at line 70 of file dialog_move_exact.h.

Referenced by DIALOG_MOVE_EXACT(), OnOkClick(), and OnOriginChanged().

MOVE_EXACT_ANCHOR& DIALOG_MOVE_EXACT::m_anchor
private

Definition at line 69 of file dialog_move_exact.h.

Referenced by OnOkClick().

wxChoice* DIALOG_MOVE_EXACT_BASE::m_anchorChoice
protectedinherited
wxCheckBox* DIALOG_MOVE_EXACT_BASE::m_cbOverride
protectedinherited
wxButton* DIALOG_MOVE_EXACT_BASE::m_clearRot
protectedinherited
wxButton* DIALOG_MOVE_EXACT_BASE::m_clearX
protectedinherited
wxButton* DIALOG_MOVE_EXACT_BASE::m_clearY
protectedinherited
bool& DIALOG_MOVE_EXACT::m_editingFootprint
private

Definition at line 71 of file dialog_move_exact.h.

Referenced by DIALOG_MOVE_EXACT().

std::string DIALOG_SHIM::m_hash_key
protectedinherited
DIALOG_MOVE_EXACT::MOVE_EXACT_OPTIONS DIALOG_MOVE_EXACT::m_options
staticprivate

Definition at line 138 of file dialog_move_exact.h.

Referenced by DIALOG_MOVE_EXACT(), and OnOkClick().

MOVE_EXACT_ORIGIN& DIALOG_MOVE_EXACT::m_origin
private

Definition at line 68 of file dialog_move_exact.h.

Referenced by OnOkClick().

wxRadioBox* DIALOG_MOVE_EXACT_BASE::m_originChooser
protectedinherited
wxCheckBox* DIALOG_MOVE_EXACT_BASE::m_polarCoords
protectedinherited
EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

Definition at line 131 of file dialog_shim.h.

Referenced by DIALOG_SHIM::EndQuasiModal(), and DIALOG_SHIM::ShowQuasiModal().

WDO_ENABLE_DISABLE* DIALOG_SHIM::m_qmodal_parent_disabler
protectedinherited
bool DIALOG_SHIM::m_qmodal_showing
protectedinherited
double& DIALOG_MOVE_EXACT::m_rotation
private

Definition at line 67 of file dialog_move_exact.h.

Referenced by OnOkClick().

wxTextCtrl* DIALOG_MOVE_EXACT_BASE::m_rotEntry
protectedinherited
wxStaticText* DIALOG_MOVE_EXACT_BASE::m_rotLabel
protectedinherited
wxStaticText* DIALOG_MOVE_EXACT_BASE::m_rotUnit
protectedinherited
wxStaticLine* DIALOG_MOVE_EXACT_BASE::m_staticline1
protectedinherited
wxStdDialogButtonSizer* DIALOG_MOVE_EXACT_BASE::m_stdButtons
protectedinherited
wxButton* DIALOG_MOVE_EXACT_BASE::m_stdButtonsCancel
protectedinherited
wxButton* DIALOG_MOVE_EXACT_BASE::m_stdButtonsOK
protectedinherited
wxPoint& DIALOG_MOVE_EXACT::m_translation
private

Definition at line 66 of file dialog_move_exact.h.

Referenced by OnOkClick().

wxStaticText* DIALOG_MOVE_EXACT_BASE::m_xLabel
protectedinherited
wxStaticText* DIALOG_MOVE_EXACT_BASE::m_xUnit
protectedinherited
wxStaticText* DIALOG_MOVE_EXACT_BASE::m_yLabel
protectedinherited
wxStaticText* DIALOG_MOVE_EXACT_BASE::m_yUnit
protectedinherited

The documentation for this class was generated from the following files: