KiCad PCB EDA Suite
DIALOG_MODULE_BOARD_EDITOR Class Reference

#include <dialog_edit_module_for_BoardEditor.h>

Inheritance diagram for DIALOG_MODULE_BOARD_EDITOR:
DIALOG_MODULE_BOARD_EDITOR_BASE DIALOG_SHIM KIWAY_HOLDER

Public Types

enum  FP_PRM_EDITOR_RETVALUE { PRM_EDITOR_ABORT, PRM_EDITOR_WANT_EXCHANGE_FP, PRM_EDITOR_EDIT_OK, PRM_EDITOR_WANT_MODEDIT }
 

Public Member Functions

 DIALOG_MODULE_BOARD_EDITOR (PCB_EDIT_FRAME *aParent, MODULE *aModule, wxDC *aDC)
 
 ~DIALOG_MODULE_BOARD_EDITOR ()
 
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

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

wxNotebook * m_NoteBook
 
wxPanel * m_PanelProperties
 
wxStaticText * m_staticTextRef
 
wxTextCtrl * m_ReferenceCtrl
 
wxButton * m_button4
 
wxStaticText * m_staticTextVal
 
wxTextCtrl * m_ValueCtrl
 
wxButton * m_button5
 
wxRadioBox * m_LayerCtrl
 
wxRadioBox * m_OrientCtrl
 
wxStaticText * m_staticTextRotation
 
wxTextCtrl * m_OrientValueCtrl
 
wxStaticText * m_staticTextPos
 
wxStaticText * m_XPosLabel
 
wxTextCtrl * m_ModPositionX
 
wxStaticText * m_XPosUnit
 
wxStaticText * m_YPosLabel
 
wxTextCtrl * m_ModPositionY
 
wxStaticText * m_YPosUnit
 
wxStaticText * m_TextSheetPath
 
wxTextCtrl * m_textCtrlSheetPath
 
wxButton * m_buttonExchange
 
wxButton * m_buttonModuleEditor
 
wxRadioBox * m_AttributsCtrl
 
wxRadioBox * m_AutoPlaceCtrl
 
wxStaticText * m_staticText11
 
wxSlider * m_CostRot90Ctrl
 
wxStaticText * m_staticText12
 
wxSlider * m_CostRot180Ctrl
 
wxStaticText * m_staticText16
 
wxChoice * m_ZoneConnectionChoice
 
wxStaticText * m_staticTextInfo
 
wxStaticText * m_staticTextNetClearance
 
wxTextCtrl * m_NetClearanceValueCtrl
 
wxStaticText * m_NetClearanceUnits
 
wxStaticLine * m_staticline1
 
wxStaticLine * m_staticline2
 
wxStaticLine * m_staticline3
 
wxStaticText * m_MaskClearanceTitle
 
wxTextCtrl * m_SolderMaskMarginCtrl
 
wxStaticText * m_SolderMaskMarginUnits
 
wxStaticText * m_staticTextSolderPaste
 
wxTextCtrl * m_SolderPasteMarginCtrl
 
wxStaticText * m_SolderPasteMarginUnits
 
wxStaticText * m_staticTextRatio
 
wxTextCtrl * m_SolderPasteMarginRatioCtrl
 
wxStaticText * m_SolderPasteRatioMarginUnits
 
wxPanel * m_Panel3D
 
wxBoxSizer * bSizerMain3D
 
wxListBox * m_3D_ShapeNameListBox
 
wxButton * m_buttonAdd
 
wxButton * m_buttonRemove
 
wxButton * m_buttonEdit
 
wxButton * m_button8
 
wxBoxSizer * bLowerSizer3D
 
wxStdDialogButtonSizer * m_sdbSizerStdButtons
 
wxButton * m_sdbSizerStdButtonsOK
 
wxButton * m_sdbSizerStdButtonsCancel
 
std::string m_hash_key
 
EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 

Private Member Functions

void BrowseAndAdd3DShapeFile ()
 
void InitBoardProperties ()
 
void InitModeditProperties ()
 
void Edit3DShapeFileName ()
 
void OnEditValue (wxCommandEvent &event) override
 
void OnEditReference (wxCommandEvent &event) override
 
void On3DShapeSelection (wxCommandEvent &event)
 
void On3DShapeNameSelected (wxCommandEvent &event) override
 
void Edit3DShapeFilename (wxCommandEvent &event) override
 
void Remove3DShape (wxCommandEvent &event) override
 
void Add3DShape (wxCommandEvent &event) override
 
void GotoModuleEditor (wxCommandEvent &event) override
 
void ExchangeModule (wxCommandEvent &event) override
 
void ModuleOrientEvent (wxCommandEvent &event) override
 
void Cfg3DPath (wxCommandEvent &event) override
 
void OnInitDlg (wxInitDialogEvent &event) override
 
bool TransferDataToWindow () override
 
bool TransferDataFromWindow () override
 

Private Attributes

PCB_EDIT_FRAMEm_Parent
 
wxDC * m_DC
 
MODULEm_CurrentModule
 
TEXTE_MODULEm_ReferenceCopy
 
TEXTE_MODULEm_ValueCopy
 
std::vector< S3D_INFOm_shapes3D_list
 
int m_LastSelected3DShapeIndex
 
PANEL_PREV_3Dm_PreviewPane
 
MODULEm_currentModuleCopy
 
wxFloatingPointValidator< double > m_OrientValidator
 
double m_OrientValue
 

Static Private Attributes

static size_t m_page = 0
 Module editor: Dialog for editing module properties in the pcb editor. More...
 

Detailed Description

Definition at line 35 of file dialog_edit_module_for_BoardEditor.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

DIALOG_MODULE_BOARD_EDITOR::DIALOG_MODULE_BOARD_EDITOR ( PCB_EDIT_FRAME aParent,
MODULE aModule,
wxDC *  aDC 
)

Definition at line 61 of file dialog_edit_module_for_BoardEditor.cpp.

References DIALOG_MODULE_BOARD_EDITOR_BASE::bLowerSizer3D, KiBitmap(), m_CurrentModule, m_currentModuleCopy, m_DC, m_LastSelected3DShapeIndex, DIALOG_MODULE_BOARD_EDITOR_BASE::m_NoteBook, m_OrientValidator, m_OrientValue, DIALOG_MODULE_BOARD_EDITOR_BASE::m_OrientValueCtrl, m_page, DIALOG_MODULE_BOARD_EDITOR_BASE::m_Panel3D, m_Parent, m_PreviewPane, m_ReferenceCopy, DIALOG_MODULE_BOARD_EDITOR_BASE::m_sdbSizerStdButtonsOK, m_shapes3D_list, m_ValueCopy, Pgm(), and KIWAY_HOLDER::Prj().

63  :
66 {
67  wxASSERT( aParent != NULL );
68  wxASSERT( aModule != NULL );
69 
70  m_Parent = aParent;
71  m_DC = aDC;
72  m_CurrentModule = aModule;
73 
74  m_currentModuleCopy = new MODULE( *aModule );
75 
76  // Give an icon
77  wxIcon icon;
78  icon.CopyFromBitmap( KiBitmap( icon_modedit_xpm ) );
79  SetIcon( icon );
80 
81  m_OrientValidator.SetRange( -360.0, 360.0 );
82  m_OrientValueCtrl->SetValidator( m_OrientValidator );
84 
85  aParent->Prj().Get3DCacheManager()->GetResolver()->SetProgramBase( &Pgm() );
86 
88  aParent->Prj().Get3DCacheManager(),
90  &m_shapes3D_list );
91 
92  bLowerSizer3D->Add( m_PreviewPane, 1, wxEXPAND, 5 );
93 
94  m_NoteBook->SetSelection( m_page );
95  m_sdbSizerStdButtonsOK->SetDefault();
96 
97  m_ReferenceCopy = NULL;
98  m_ValueCopy = NULL;
100  m_OrientValue = 0;
101 
102  // Layout() gets called correctly in TransferDataToWindow().
103 }
PGM_BASE & Pgm()
The global Program "get" accessor.
Definition: kicad.cpp:65
wxFloatingPointValidator< double > m_OrientValidator
static size_t m_page
Module editor: Dialog for editing module properties in the pcb editor.
DIALOG_MODULE_BOARD_EDITOR_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Footprint Properties"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
wxBitmap KiBitmap(BITMAP_DEF aBitmap)
Function KiBitmap constructs a wxBitmap from a memory record, held in a BITMAP_DEF.
Definition: bitmap.cpp:36
DIALOG_MODULE_BOARD_EDITOR::~DIALOG_MODULE_BOARD_EDITOR ( )

Definition at line 107 of file dialog_edit_module_for_BoardEditor.cpp.

References DIALOG_MODULE_BOARD_EDITOR_BASE::m_NoteBook, m_page, m_PreviewPane, m_ReferenceCopy, m_shapes3D_list, m_ValueCopy, and KIWAY_HOLDER::Prj().

108 {
109  m_shapes3D_list.clear();
110 
111  // free the memory used by all models, otherwise models which were
112  // browsed but not used would consume memory
113  Prj().Get3DCacheManager()->FlushCache( false );
114 
115  // the GL canvas has to be visible before it is destroyed
116  m_page = m_NoteBook->GetSelection();
117  m_NoteBook->SetSelection( 1 );
118 
119  delete m_ReferenceCopy;
120  m_ReferenceCopy = NULL;
121 
122  delete m_ValueCopy;
123  m_ValueCopy = NULL;
124 
125  delete m_PreviewPane;
126  m_PreviewPane = NULL; // just in case, to avoid double-free
127 
128  // this is already deleted by the board used on preview pane so
129  // no need to delete here
130  // delete m_currentModuleCopy;
131  // m_currentModuleCopy = NULL;
132 }
static size_t m_page
Module editor: Dialog for editing module properties in the pcb editor.
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.

Member Function Documentation

void DIALOG_MODULE_BOARD_EDITOR::Add3DShape ( wxCommandEvent &  event)
inlineoverrideprivatevirtual
void DIALOG_MODULE_BOARD_EDITOR::BrowseAndAdd3DShapeFile ( )
private

Definition at line 524 of file dialog_edit_module_for_BoardEditor.cpp.

References Format(), PROJECT::GetRString(), DIALOG_MODULE_BOARD_EDITOR_BASE::m_3D_ShapeNameListBox, S3D_INFO::m_Filename, m_LastSelected3DShapeIndex, m_PreviewPane, m_shapes3D_list, KIWAY_HOLDER::Prj(), S3D::Select3DModel(), PANEL_PREV_3D::SetModelDataIdx(), PROJECT::SetRString(), S3D_FILENAME_RESOLVER::SplitAlias(), PROJECT::VIEWER_3D_FILTER_INDEX, and PROJECT::VIEWER_3D_PATH.

Referenced by Add3DShape().

525 {
526  PROJECT& prj = Prj();
527  S3D_INFO model;
528 
529  wxString initialpath = prj.GetRString( PROJECT::VIEWER_3D_PATH );
530  wxString sidx = prj.GetRString( PROJECT::VIEWER_3D_FILTER_INDEX );
531  int filter = 0;
532 
533  if( !sidx.empty() )
534  {
535  long tmp;
536  sidx.ToLong( &tmp );
537 
538  if( tmp > 0 && tmp <= INT_MAX )
539  filter = (int) tmp;
540  }
541 
542  if( !S3D::Select3DModel( this, Prj().Get3DCacheManager(),
543  initialpath, filter, &model ) || model.m_Filename.empty() )
544  {
545  return;
546  }
547 
548  prj.SetRString( PROJECT::VIEWER_3D_PATH, initialpath );
549  sidx = wxString::Format( wxT( "%i" ), filter );
551  S3D_FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
552  wxString alias;
553  wxString shortPath;
554  wxString filename = model.m_Filename;
555 
556  if( res && res->SplitAlias( filename, alias, shortPath ) )
557  {
558  alias.Append( wxT( ":" ) );
559  alias.Append( shortPath );
560  m_3D_ShapeNameListBox->Append( alias );
561  }
562  else
563  {
564  m_3D_ShapeNameListBox->Append( filename );
565  }
566 
567 #ifdef __WINDOWS__
568  // In Kicad files, filenames and paths are stored using Unix notation
569  model.m_Filename.Replace( "\\", "/" );
570 #endif
571 
572  m_shapes3D_list.push_back( model );
575 
576  if( m_PreviewPane )
578 
579  return;
580 }
Class PROJECT holds project specific data.
Definition: project.h:52
bool SplitAlias(const wxString &aFileName, wxString &anAlias, wxString &aRelPath)
Function SplitAlias returns true if the given name contains an alias and populates the string anAlias...
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
void SetModelDataIdx(int idx, bool aReloadPreviewModule=false)
SetModelDataIdx - This will set the index of the INFO list that was set on the parent.
bool Select3DModel(wxWindow *aParent, S3D_CACHE *aCache, wxString &prevModelSelectDir, int &prevModelWildcard, S3D_INFO *aModel)
VTBL_ENTRY void SetRString(RSTRING_T aStringId, const wxString &aString)
Function SetRString stores a "retained string", which is any session and project specific string iden...
Definition: project.cpp:162
VTBL_ENTRY const wxString & GetRString(RSTRING_T aStringId)
Function GetRString returns a "retained string", which is any session and project specific string ide...
Definition: project.cpp:177
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
wxString m_Filename
The 3D shape filename in 3D library.
Definition: 3d_info.h:45
void DIALOG_MODULE_BOARD_EDITOR::Cfg3DPath ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MODULE_BOARD_EDITOR_BASE.

Definition at line 781 of file dialog_edit_module_for_BoardEditor.cpp.

References S3D::Configure3DPaths(), m_LastSelected3DShapeIndex, m_PreviewPane, KIWAY_HOLDER::Prj(), and PANEL_PREV_3D::SetModelDataIdx().

782 {
783  if( S3D::Configure3DPaths( this, Prj().Get3DCacheManager()->GetResolver() ) )
784  if( m_LastSelected3DShapeIndex >= 0 )
785  if( m_PreviewPane )
787 }
bool Configure3DPaths(wxWindow *aParent, S3D_FILENAME_RESOLVER *aResolver)
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
void SetModelDataIdx(int idx, bool aReloadPreviewModule=false)
SetModelDataIdx - This will set the index of the INFO list that was set on the parent.
void DIALOG_MODULE_BOARD_EDITOR::Edit3DShapeFileName ( )
private

Definition at line 472 of file dialog_edit_module_for_BoardEditor.cpp.

References DIALOG_MODULE_BOARD_EDITOR_BASE::m_3D_ShapeNameListBox, m_PreviewPane, m_shapes3D_list, KIWAY_HOLDER::Prj(), PANEL_PREV_3D::UpdateModelName(), and S3D_FILENAME_RESOLVER::ValidateFileName().

Referenced by Edit3DShapeFilename().

473 {
474  int idx = m_3D_ShapeNameListBox->GetSelection();
475 
476  if( idx < 0 )
477  return;
478 
479  // Edit filename
480  wxString filename = m_3D_ShapeNameListBox->GetStringSelection();
481  wxTextEntryDialog dlg( this, wxEmptyString, wxEmptyString, filename );
482 
483  bool hasAlias;
484  S3D_FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
485 
486  if( dlg.ShowModal() != wxID_OK )
487  return;
488 
489  filename = dlg.GetValue();
490 
491  if( filename.empty() )
492  return;
493 
494  if( !res->ValidateFileName( filename, hasAlias ) )
495  {
496  wxString msg = _( "Invalid filename: " );
497  msg.append( filename );
498  wxMessageBox( msg, _( "Edit 3D file name" ) );
499 
500  return;
501  }
502 
503  m_3D_ShapeNameListBox->SetString( idx, filename );
504 
505  // if the user has specified an alias in the name then prepend ':'
506  if( hasAlias )
507  filename.insert( 0, wxT( ":" ) );
508 
509  #ifdef __WINDOWS__
510  // In Kicad files, filenames and paths are stored using Unix notation
511  filename.Replace( wxT( "\\" ), wxT( "/" ) );
512  #endif
513 
514  m_shapes3D_list[idx].m_Filename = filename;
515 
516  // This assumes that the index didn't change and will just update the filename
517  if( m_PreviewPane )
518  m_PreviewPane->UpdateModelName( filename );
519 
520  return;
521 }
bool ValidateFileName(const wxString &aFileName, bool &hasAlias)
Function ValidateName returns true if the given path is a valid aliased relative path.
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
void UpdateModelName(wxString const &aModel)
void DIALOG_MODULE_BOARD_EDITOR::Edit3DShapeFilename ( wxCommandEvent &  event)
inlineoverrideprivatevirtual
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_MODULE_BOARD_EDITOR::ExchangeModule ( wxCommandEvent &  event)
overrideprivatevirtual
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(), 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 }
void DIALOG_MODULE_BOARD_EDITOR::GotoModuleEditor ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MODULE_BOARD_EDITOR_BASE.

Definition at line 229 of file dialog_edit_module_for_BoardEditor.cpp.

References GetNewTimeStamp(), EDA_ITEM::GetTimeStamp(), m_CurrentModule, m_Parent, PCB_EDIT_FRAME::OnModify(), PRM_EDITOR_WANT_MODEDIT, and EDA_ITEM::SetTimeStamp().

230 {
231  if( m_CurrentModule->GetTimeStamp() == 0 ) // Module Editor needs a non null timestamp
232  {
234  m_Parent->OnModify();
235  }
236 
237  EndModal( PRM_EDITOR_WANT_MODEDIT );
238 }
virtual void OnModify() override
Function OnModify must be called after a board change to set the modified flag.
Definition: pcbframe.cpp:996
time_t GetNewTimeStamp()
Definition: common.cpp:166
void SetTimeStamp(time_t aNewTimeStamp)
Definition: base_struct.h:203
time_t GetTimeStamp() const
Definition: base_struct.h:204
void DIALOG_MODULE_BOARD_EDITOR::InitBoardProperties ( )
private

Definition at line 136 of file dialog_edit_module_for_BoardEditor.cpp.

References B_Cu, g_UserUnit, GetAbbreviatedUnitsLabel(), BOARD_ITEM::GetLayer(), MODULE::GetLocalClearance(), MODULE::GetLocalSolderMaskMargin(), MODULE::GetLocalSolderPasteMargin(), MODULE::GetLocalSolderPasteMarginRatio(), MODULE::GetOrientation(), MODULE::GetPosition(), MODULE::GetZoneConnection(), m_CurrentModule, DIALOG_MODULE_BOARD_EDITOR_BASE::m_LayerCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_ModPositionX, DIALOG_MODULE_BOARD_EDITOR_BASE::m_ModPositionY, DIALOG_MODULE_BOARD_EDITOR_BASE::m_NetClearanceUnits, DIALOG_MODULE_BOARD_EDITOR_BASE::m_NetClearanceValueCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_OrientCtrl, m_OrientValidator, m_OrientValue, DIALOG_MODULE_BOARD_EDITOR_BASE::m_OrientValueCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderMaskMarginCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderMaskMarginUnits, DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderPasteMarginCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderPasteMarginRatioCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderPasteMarginUnits, DIALOG_MODULE_BOARD_EDITOR_BASE::m_XPosUnit, DIALOG_MODULE_BOARD_EDITOR_BASE::m_YPosUnit, DIALOG_MODULE_BOARD_EDITOR_BASE::m_ZoneConnectionChoice, PAD_ZONE_CONN_FULL, PAD_ZONE_CONN_INHERITED, PAD_ZONE_CONN_NONE, PAD_ZONE_CONN_THERMAL, PutValueInLocalUnits(), wxPoint::x, and wxPoint::y.

Referenced by TransferDataToWindow().

137 {
140 
143 
144  m_LayerCtrl->SetSelection(
145  (m_CurrentModule->GetLayer() == B_Cu) ? 1 : 0 );
146 
147  bool custom_orientation = false;
148  switch( int( m_CurrentModule->GetOrientation() ) )
149  {
150  case 0:
151  m_OrientCtrl->SetSelection( 0 );
152  break;
153 
154  case 900:
155  case -2700:
156  m_OrientCtrl->SetSelection( 1 );
157  break;
158 
159  case -900:
160  case 2700:
161  m_OrientCtrl->SetSelection( 2 );
162  break;
163 
164  case -1800:
165  case 1800:
166  m_OrientCtrl->SetSelection( 3 );
167  break;
168 
169  default:
170  m_OrientCtrl->SetSelection( 4 );
171  custom_orientation = true;
172  break;
173  }
174 
175  m_OrientValueCtrl->Enable( custom_orientation );
177  m_OrientValidator.TransferToWindow();
178 
179  // Initialize dialog relative to masks clearances
183 
186 
187  // These 2 parameters are usually < 0, so prepare entering a negative
188  // value, if current is 0
190 
192  m_SolderPasteMarginCtrl->SetValue( wxT( "-" ) +
193  m_SolderPasteMarginCtrl->GetValue() );
194 
195  // Add solder paste margin ration in per cent
196  // for the usual default value 0.0, display -0.0 (or -0,0 in some countries)
197  wxString msg;
198  msg.Printf( wxT( "%f" ),
200 
202  msg[0] == '0') // Sometimes Printf adds a sign if the value is very small (0.0)
203  m_SolderPasteMarginRatioCtrl->SetValue( wxT("-") + msg );
204  else
205  m_SolderPasteMarginRatioCtrl->SetValue( msg );
206 
208  {
209  default:
211  m_ZoneConnectionChoice->SetSelection( 0 );
212  break;
213 
214  case PAD_ZONE_CONN_FULL:
215  m_ZoneConnectionChoice->SetSelection( 1 );
216  break;
217 
219  m_ZoneConnectionChoice->SetSelection( 2 );
220  break;
221 
222  case PAD_ZONE_CONN_NONE:
223  m_ZoneConnectionChoice->SetSelection( 3 );
224  break;
225  }
226 }
int GetLocalClearance() const
Definition: class_module.h:167
const wxPoint & GetPosition() const override
Definition: class_module.h:144
wxFloatingPointValidator< double > m_OrientValidator
ZoneConnection GetZoneConnection() const
Definition: class_module.h:177
double GetLocalSolderPasteMarginRatio() const
Definition: class_module.h:173
Pads are not covered.
Definition: zones.h:57
double GetOrientation() const
Definition: class_module.h:148
wxString GetAbbreviatedUnitsLabel(EDA_UNITS_T aUnit)
Definition: base_units.cpp:479
int GetLocalSolderMaskMargin() const
Definition: class_module.h:164
int GetLocalSolderPasteMargin() const
Definition: class_module.h:170
EDA_UNITS_T g_UserUnit
Global variables definitions.
Definition: common.cpp:56
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
PCB_LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.
Use thermal relief for pads.
Definition: zones.h:58
pads are covered by copper
Definition: zones.h:59
void DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties ( )
private

Definition at line 279 of file dialog_edit_module_for_BoardEditor.cpp.

References MODULE::GetAttributes(), MODULE::GetPath(), MODULE::GetPlacementCost180(), MODULE::GetPlacementCost90(), EDA_TEXT::GetText(), MODULE::IsLocked(), KISYS3DMOD, DIALOG_MODULE_BOARD_EDITOR_BASE::m_3D_ShapeNameListBox, DIALOG_MODULE_BOARD_EDITOR_BASE::m_AttributsCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_AutoPlaceCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_CostRot180Ctrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_CostRot90Ctrl, m_CurrentModule, m_LastSelected3DShapeIndex, DIALOG_MODULE_BOARD_EDITOR_BASE::m_Panel3D, m_PreviewPane, m_ReferenceCopy, DIALOG_MODULE_BOARD_EDITOR_BASE::m_ReferenceCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_sdbSizerStdButtonsOK, m_shapes3D_list, DIALOG_MODULE_BOARD_EDITOR_BASE::m_textCtrlSheetPath, m_ValueCopy, DIALOG_MODULE_BOARD_EDITOR_BASE::m_ValueCtrl, MOD_CMS, MOD_VIRTUAL, MODULE::Models(), MODULE::PadsLocked(), KIWAY_HOLDER::Prj(), MODULE::Reference(), PANEL_PREV_3D::ResetModelData(), PANEL_PREV_3D::SetModelDataIdx(), EDA_ITEM::SetParent(), S3D_FILENAME_RESOLVER::SplitAlias(), and MODULE::Value().

Referenced by TransferDataToWindow().

280 {
281  wxString default_path;
282  wxGetEnv( KISYS3DMOD, &default_path );
283 #ifdef __WINDOWS__
284  default_path.Replace( wxT( "/" ), wxT( "\\" ) );
285 #endif
286 
288 
289  // Init 3D shape list
290  m_3D_ShapeNameListBox->Clear();
291  std::list<S3D_INFO>::iterator sM = m_CurrentModule->Models().begin();
292  std::list<S3D_INFO>::iterator eM = m_CurrentModule->Models().end();
293  m_shapes3D_list.clear();
294 
295  wxString origPath;
296  wxString alias;
297  wxString shortPath;
298  S3D_FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
299 
300  while( sM != eM )
301  {
302  m_shapes3D_list.push_back( *sM );
303  origPath = sM->m_Filename;
304 
305  if( res && res->SplitAlias( origPath, alias, shortPath ) )
306  {
307  origPath = alias;
308  origPath.append( ":" );
309  origPath.append( shortPath );
310  }
311 
312  m_3D_ShapeNameListBox->Append( origPath );
313  ++sM;
314 
315  }
316 
321  m_ReferenceCtrl->SetValue( m_ReferenceCopy->GetText() );
322  m_ValueCtrl->SetValue( m_ValueCopy->GetText() );
323 
324  // Shows the footprint's schematic path.
326 
327  m_AttributsCtrl->SetItemToolTip( 0,
328  _( "Use this attribute for most non SMD components\n"
329  "Components with this option are not put in the footprint position list file" ) );
330  m_AttributsCtrl->SetItemToolTip( 1,
331  _( "Use this attribute for SMD components.\n"
332  "Only components with this option are put in the footprint position list file" ) );
333  m_AttributsCtrl->SetItemToolTip( 2,
334  _( "Use this attribute for \"virtual\" components drawn on board\n"
335  "like an edge connector (old ISA PC bus for instance)" ) );
336 
337  // Controls on right side of the dialog
338  switch( m_CurrentModule->GetAttributes() & 255 )
339  {
340  case 0:
341  m_AttributsCtrl->SetSelection( 0 );
342  break;
343 
344  case MOD_CMS:
345  m_AttributsCtrl->SetSelection( 1 );
346  break;
347 
348  case MOD_VIRTUAL:
349  m_AttributsCtrl->SetSelection( 2 );
350  break;
351 
352  default:
353  m_AttributsCtrl->SetSelection( 0 );
354  break;
355  }
356 
357  if( m_CurrentModule->IsLocked() )
358  m_AutoPlaceCtrl->SetSelection( 2 );
359  else if( m_CurrentModule->PadsLocked() )
360  m_AutoPlaceCtrl->SetSelection( 1 );
361  else
362  m_AutoPlaceCtrl->SetSelection( 0 );
363 
364  m_AutoPlaceCtrl->SetItemToolTip( 0,
365  _( "Component can be freely moved and auto placed. User "
366  "can arbitrarily select and edit component's pads." ) );
367  m_AutoPlaceCtrl->SetItemToolTip( 1,
368  _( "Component can be freely moved and auto placed, but its "
369  "pads cannot be selected or edited." ) );
370  m_AutoPlaceCtrl->SetItemToolTip( 2,
371  _( "Component is locked: it cannot be freely moved or auto "
372  "placed." ) );
373 
375 
377 
378  // if m_3D_ShapeNameListBox is not empty, preselect first 3D shape
379  if( m_3D_ShapeNameListBox->GetCount() > 0 )
380  {
383 
384  if( m_PreviewPane )
386  }
387  else
388  {
389  if( m_PreviewPane )
390  m_PreviewPane->ResetModelData( true );
391  }
392 
393  // We have modified the UI, so call Fit() for m_Panel3D
394  // to be sure the m_Panel3D sizers are initiliazed before opening the dialog
395  m_Panel3D->GetSizer()->Fit( m_Panel3D );
396 
397  // For some reason, on Linux, after the call to
398  // m_PreviewPane->SetModelDataIdx( m_LastSelected3DShapeIndex, true )
399  // the dialog has no longer the focus. Force it:
400  m_sdbSizerStdButtonsOK->SetFocus();
401 }
void ResetModelData(bool aReloadPreviewModule=false)
ResetModelData - Clear the values and reload the preview board.
TEXTE_MODULE & Reference()
Definition: class_module.h:456
Set for modules listed in the automatic insertion list (usually SMD footprints)
Definition: class_module.h:77
std::list< S3D_INFO > & Models()
Definition: class_module.h:140
int GetPlacementCost90() const
Definition: class_module.h:526
bool SplitAlias(const wxString &aFileName, wxString &anAlias, wxString &aRelPath)
Function SplitAlias returns true if the given name contains an alias and populates the string anAlias...
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
bool PadsLocked() const
Definition: class_module.h:260
void SetModelDataIdx(int idx, bool aReloadPreviewModule=false)
SetModelDataIdx - This will set the index of the INFO list that was set on the parent.
void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:213
TEXTE_MODULE & Value()
read/write accessors:
Definition: class_module.h:455
const wxString & GetText() const
Function GetText returns the string associated with the text object.
Definition: eda_text.h:130
#define KISYS3DMOD
A variable name whose value holds the path of 3D shape files.
Definition: 3d_viewer.h:38
int GetAttributes() const
Definition: class_module.h:185
bool IsLocked() const override
Function IsLocked.
Definition: class_module.h:224
Virtual component: when created by copper shapes on board (Like edge card connectors, mounting hole...)
Definition: class_module.h:79
const wxString & GetPath() const
Definition: class_module.h:161
int GetPlacementCost180() const
Definition: class_module.h:523
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_MODULE_BOARD_EDITOR::ModuleOrientEvent ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MODULE_BOARD_EDITOR_BASE.

Definition at line 247 of file dialog_edit_module_for_BoardEditor.cpp.

References DIALOG_MODULE_BOARD_EDITOR_BASE::m_OrientCtrl, m_OrientValidator, m_OrientValue, and DIALOG_MODULE_BOARD_EDITOR_BASE::m_OrientValueCtrl.

248 {
249  bool custom_orientation = false;
250 
251  switch( m_OrientCtrl->GetSelection() )
252  {
253  case 0:
254  m_OrientValue = 0.0;
255  break;
256 
257  case 1:
258  m_OrientValue = 90.0;
259  break;
260 
261  case 2:
262  m_OrientValue = 270.0;
263  break;
264 
265  case 3:
266  m_OrientValue = 180.0;
267  break;
268 
269  default:
270  custom_orientation = true;
271  break;
272  }
273 
274  m_OrientValidator.TransferToWindow();
275  m_OrientValueCtrl->Enable( custom_orientation );
276 }
wxFloatingPointValidator< double > m_OrientValidator
void DIALOG_MODULE_BOARD_EDITOR::On3DShapeNameSelected ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MODULE_BOARD_EDITOR_BASE.

Definition at line 404 of file dialog_edit_module_for_BoardEditor.cpp.

References DIALOG_MODULE_BOARD_EDITOR_BASE::m_3D_ShapeNameListBox, m_LastSelected3DShapeIndex, m_PreviewPane, m_shapes3D_list, PANEL_PREV_3D::ResetModelData(), and PANEL_PREV_3D::SetModelDataIdx().

405 {
407 
408  if( m_LastSelected3DShapeIndex < 0 ) // happens under wxGTK when
409  // deleting an item in
410  // m_3D_ShapeNameListBox wxListBox
411  {
412  if( m_PreviewPane )
414 
415  return;
416  }
417 
418  if( m_LastSelected3DShapeIndex >= (int) m_shapes3D_list.size() )
419  {
420  wxMessageBox( wxT( "On3DShapeNameSelected() error" ) );
422 
423  if( m_PreviewPane )
425 
426  return;
427  }
428 
429  if( m_PreviewPane )
431 }
void ResetModelData(bool aReloadPreviewModule=false)
ResetModelData - Clear the values and reload the preview board.
void SetModelDataIdx(int idx, bool aReloadPreviewModule=false)
SetModelDataIdx - This will set the index of the INFO list that was set on the parent.
void DIALOG_MODULE_BOARD_EDITOR::On3DShapeSelection ( wxCommandEvent &  event)
private
void DIALOG_MODULE_BOARD_EDITOR::OnEditReference ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MODULE_BOARD_EDITOR_BASE.

Definition at line 757 of file dialog_edit_module_for_BoardEditor.cpp.

References EDA_DRAW_FRAME::GetCrossHairPosition(), EDA_TEXT::GetText(), EDA_TEXT::GetTextPos(), PCB_BASE_FRAME::InstallTextModOptionsFrame(), m_CurrentModule, m_Parent, m_ReferenceCopy, DIALOG_MODULE_BOARD_EDITOR_BASE::m_ReferenceCtrl, EDA_DRAW_FRAME::SetCrossHairPosition(), and EDA_ITEM::SetParent().

758 {
760 
765  m_ReferenceCtrl->SetValue( m_ReferenceCopy->GetText() );
766 }
const wxPoint & GetTextPos() const
Definition: eda_text.h:224
void InstallTextModOptionsFrame(TEXTE_MODULE *TextMod, wxDC *DC)
void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:213
const wxString & GetText() const
Function GetText returns the string associated with the text object.
Definition: eda_text.h:130
void SetCrossHairPosition(const wxPoint &aPosition, bool aSnapToGrid=true)
Function SetCrossHairPosition sets the screen cross hair position to aPosition in logical (drawing) u...
wxPoint GetCrossHairPosition(bool aInvertY=false) const
Function GetCrossHairPosition return the current cross hair position in logical (drawing) coordinates...
void DIALOG_MODULE_BOARD_EDITOR::OnEditValue ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MODULE_BOARD_EDITOR_BASE.

Definition at line 769 of file dialog_edit_module_for_BoardEditor.cpp.

References EDA_DRAW_FRAME::GetCrossHairPosition(), EDA_TEXT::GetText(), EDA_TEXT::GetTextPos(), PCB_BASE_FRAME::InstallTextModOptionsFrame(), m_CurrentModule, m_Parent, m_ValueCopy, DIALOG_MODULE_BOARD_EDITOR_BASE::m_ValueCtrl, EDA_DRAW_FRAME::SetCrossHairPosition(), and EDA_ITEM::SetParent().

770 {
772 
777  m_ValueCtrl->SetValue( m_ValueCopy->GetText() );
778 }
const wxPoint & GetTextPos() const
Definition: eda_text.h:224
void InstallTextModOptionsFrame(TEXTE_MODULE *TextMod, wxDC *DC)
void SetParent(EDA_ITEM *aParent)
Definition: base_struct.h:213
const wxString & GetText() const
Function GetText returns the string associated with the text object.
Definition: eda_text.h:130
void SetCrossHairPosition(const wxPoint &aPosition, bool aSnapToGrid=true)
Function SetCrossHairPosition sets the screen cross hair position to aPosition in logical (drawing) u...
wxPoint GetCrossHairPosition(bool aInvertY=false) const
Function GetCrossHairPosition return the current cross hair position in logical (drawing) coordinates...
void DIALOG_MODULE_BOARD_EDITOR::OnInitDlg ( wxInitDialogEvent &  event)
inlineoverrideprivatevirtual

Reimplemented from DIALOG_MODULE_BOARD_EDITOR_BASE.

Definition at line 93 of file dialog_edit_module_for_BoardEditor.h.

References DIALOG_SHIM::FinishDialogSettings(), and TransferDataToWindow().

94  {
95  // Call the default wxDialog handler of a wxInitDialogEvent
97 
98  // Now all widgets have the size fixed, call FinishDialogSettings
100  }
void FinishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
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(), BrowseAndAdd3DShapeFile(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::BrowseAndSelectDocFile(), DIALOG_EXCHANGE_MODULE::BrowseAndSelectFootprint(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_MODULE_MODULE_EDITOR::Cfg3DPath(), 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_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(), 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(), 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(), 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 DIALOG_MODULE_BOARD_EDITOR::Remove3DShape ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_MODULE_BOARD_EDITOR_BASE.

Definition at line 435 of file dialog_edit_module_for_BoardEditor.cpp.

References DIALOG_MODULE_BOARD_EDITOR_BASE::m_3D_ShapeNameListBox, m_LastSelected3DShapeIndex, m_PreviewPane, m_shapes3D_list, PANEL_PREV_3D::ResetModelData(), and PANEL_PREV_3D::SetModelDataIdx().

436 {
437  int ii = m_3D_ShapeNameListBox->GetSelection();
438 
439  if( ii < 0 )
440  {
441  if( m_PreviewPane )
442  m_PreviewPane->ResetModelData( true );
443 
444  return;
445  }
446 
447  m_shapes3D_list.erase( m_shapes3D_list.begin() + ii );
448  m_3D_ShapeNameListBox->Delete( ii );
449 
450  if( m_3D_ShapeNameListBox->GetCount() > 0 )
451  {
452  if( ii > 0 )
454  else
456 
458 
459  if( m_PreviewPane )
461  }
462  else
463  {
464  if( m_PreviewPane )
465  m_PreviewPane->ResetModelData( true );
466  }
467 
468  return;
469 }
void ResetModelData(bool aReloadPreviewModule=false)
ResetModelData - Clear the values and reload the preview board.
void SetModelDataIdx(int idx, bool aReloadPreviewModule=false)
SetModelDataIdx - This will set the index of the INFO list that was set on the parent.
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
bool DIALOG_MODULE_BOARD_EDITOR::TransferDataFromWindow ( )
overrideprivate

Definition at line 606 of file dialog_edit_module_for_BoardEditor.cpp.

References B_Cu, MODULE::CalculateBoundingBox(), EDA_DRAW_PANEL::CrossHairOff(), EDA_DRAW_PANEL::CrossHairOn(), DisplayError(), MODULE::Draw(), F_Cu, MODULE::Flip(), EDA_DRAW_FRAME::GetCanvas(), EDA_ITEM::GetFlags(), BOARD_ITEM::GetLayer(), MODULE::GetOrientation(), MODULE::GetPosition(), GR_OR, GR_XOR, KiROUND(), DIALOG_MODULE_BOARD_EDITOR_BASE::m_AttributsCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_AutoPlaceCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_CostRot180Ctrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_CostRot90Ctrl, m_CurrentModule, m_DC, DIALOG_MODULE_BOARD_EDITOR_BASE::m_LayerCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_ModPositionX, DIALOG_MODULE_BOARD_EDITOR_BASE::m_ModPositionY, DIALOG_MODULE_BOARD_EDITOR_BASE::m_NetClearanceValueCtrl, m_OrientValue, DIALOG_MODULE_BOARD_EDITOR_BASE::m_Panel3D, DIALOG_MODULE_BOARD_EDITOR_BASE::m_PanelProperties, m_Parent, m_PreviewPane, m_ReferenceCopy, m_shapes3D_list, DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderMaskMarginCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderPasteMarginCtrl, DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderPasteMarginRatioCtrl, m_ValueCopy, DIALOG_MODULE_BOARD_EDITOR_BASE::m_ZoneConnectionChoice, MOD_CMS, MOD_VIRTUAL, MODULE::Models(), COMMIT::Modify(), PAD_ZONE_CONN_FULL, PAD_ZONE_CONN_INHERITED, PAD_ZONE_CONN_NONE, PAD_ZONE_CONN_THERMAL, PRM_EDITOR_EDIT_OK, BOARD_COMMIT::Push(), MODULE::Reference(), MODULE::Rotate(), MODULE::SetAttributes(), MODULE::SetLocalClearance(), MODULE::SetLocalSolderMaskMargin(), MODULE::SetLocalSolderPasteMargin(), MODULE::SetLocalSolderPasteMarginRatio(), MODULE::SetLocked(), MODULE::SetPadsLocked(), MODULE::SetPlacementCost180(), MODULE::SetPlacementCost90(), MODULE::SetPosition(), MODULE::SetZoneConnection(), PANEL_PREV_3D::ValidateWithMessage(), MODULE::Value(), ValueFromTextCtrl(), wxPoint::x, and wxPoint::y.

607 {
608  wxPoint modpos;
609  wxString msg;
610 
611  if( !Validate() || !DIALOG_MODULE_BOARD_EDITOR_BASE::TransferDataFromWindow() ||
612  !m_PanelProperties->TransferDataFromWindow() )
613  {
614  wxMessageBox( _( "Error: invalid or missing footprint parameter" ) );
615  return false;
616  }
617 
618  if( !m_Panel3D->TransferDataFromWindow() )
619  {
620  wxMessageBox( _( "Error: invalid or missing 3D parameter" ) );
621  return false;
622  }
623 
624  if( m_DC )
625  {
628  }
629 
630  BOARD_COMMIT commit( m_Parent );
631  commit.Modify( m_CurrentModule );
632 
633  // Init Fields (should be first, because they can be moved or/and flipped later):
634  TEXTE_MODULE& reference = m_CurrentModule->Reference();
635  reference = *m_ReferenceCopy;
636  TEXTE_MODULE& value = m_CurrentModule->Value();
637  value = *m_ValueCopy;
638 
639  // Initialize masks clearances
643 
644  double dtmp = 0.0;
645  msg = m_SolderPasteMarginRatioCtrl->GetValue();
646  msg.ToDouble( &dtmp );
647 
648  // A -50% margin ratio means no paste on a pad, the ratio must be >= -50%
649  if( dtmp < -50.0 )
650  dtmp = -50.0;
651  // A margin ratio is always <= 0
652  // 0 means use full pad copper area
653  if( dtmp > 0.0 )
654  dtmp = 0.0;
655 
657 
658  switch( m_ZoneConnectionChoice->GetSelection() )
659  {
660  default:
661  case 0:
663  break;
664 
665  case 1:
667  break;
668 
669  case 2:
671  break;
672 
673  case 3:
675  break;
676  }
677 
678  // Set Module Position
679  modpos.x = ValueFromTextCtrl( *m_ModPositionX );
680  modpos.y = ValueFromTextCtrl( *m_ModPositionY );
681  m_CurrentModule->SetPosition( modpos );
682  m_CurrentModule->SetLocked( m_AutoPlaceCtrl->GetSelection() == 2 );
683  m_CurrentModule->SetPadsLocked( m_AutoPlaceCtrl->GetSelection() == 1 );
684 
685  switch( m_AttributsCtrl->GetSelection() )
686  {
687  case 0:
689  break;
690 
691  case 1:
693  break;
694 
695  case 2:
697  break;
698  }
699 
702 
703  /* Now, set orientation. must be made after others changes,
704  * because rotation changes fields positions on board according to the new orientation
705  * (relative positions are not modified)
706  */
707  int orient = KiROUND( m_OrientValue * 10.0 );
708 
709  if( m_CurrentModule->GetOrientation() != orient )
711  orient - m_CurrentModule->GetOrientation() );
712 
713  // Set component side, that also have effect on the fields positions on board
714  bool change_layer = false;
715  if( m_LayerCtrl->GetSelection() == 0 ) // layer req = COMPONENT
716  {
717  if( m_CurrentModule->GetLayer() == B_Cu )
718  change_layer = true;
719  }
720  else if( m_CurrentModule->GetLayer() == F_Cu )
721  change_layer = true;
722 
723  if( change_layer )
725 
726  // This will update the S3D_INFO list into the current module
727  msg.Clear();
728 
729  if( !m_PreviewPane->ValidateWithMessage( msg ) )
730  {
731  DisplayError( this, msg );
732  return false;
733  }
734 
735  std::list<S3D_INFO>* draw3D = &m_CurrentModule->Models();
736  draw3D->clear();
737  draw3D->insert( draw3D->end(), m_shapes3D_list.begin(), m_shapes3D_list.end() );
738 
740 
741  // This is a simple edition, we must create an undo entry
742  if( m_CurrentModule->GetFlags() == 0 )
743  commit.Push( _( "Modify module properties" ) );
744 
745  SetReturnCode( PRM_EDITOR_EDIT_OK );
746 
747  if( m_DC )
748  {
751  }
752 
753  return true;
754 }
void SetPlacementCost90(int aCost)
Definition: class_module.h:527
STATUS_FLAGS GetFlags() const
Definition: base_struct.h:255
TEXTE_MODULE & Reference()
Definition: class_module.h:456
void Rotate(const wxPoint &aRotCentre, double aAngle) override
Function Rotate Rotate this object.
void SetLocalClearance(int aClearance)
Definition: class_module.h:168
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 SetPlacementCost180(int aCost)
Definition: class_module.h:524
EDA_DRAW_PANEL * GetCanvas()
Definition: draw_frame.h:299
void CalculateBoundingBox()
Function CalculateBoundingBox calculates the bounding box in board coordinates.
void Draw(EDA_DRAW_PANEL *aPanel, wxDC *aDC, GR_DRAWMODE aDrawMode, const wxPoint &aOffset=ZeroOffset) override
Function Draw draws the footprint to the aDC.
void Flip(const wxPoint &aCentre) override
Function Flip Flip this object, i.e.
const wxPoint & GetPosition() const override
Definition: class_module.h:144
bool ValidateWithMessage(wxString &aErrorMessage)
verify X,Y and Z scale factors are acceptable (> 0.001 and < 1000.0)
Set for modules listed in the automatic insertion list (usually SMD footprints)
Definition: class_module.h:77
void SetZoneConnection(ZoneConnection aType)
Definition: class_module.h:176
std::list< S3D_INFO > & Models()
Definition: class_module.h:140
void SetLocalSolderPasteMarginRatio(double aRatio)
Definition: class_module.h:174
Pads are not covered.
Definition: zones.h:57
double GetOrientation() const
Definition: class_module.h:148
TEXTE_MODULE & Value()
read/write accessors:
Definition: class_module.h:455
void SetPadsLocked(bool aPadsLocked)
Definition: class_module.h:262
void SetPosition(const wxPoint &aPos) override
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
void CrossHairOff(wxDC *DC)
Definition: draw_panel.cpp:253
void SetLocalSolderMaskMargin(int aMargin)
Definition: class_module.h:165
Definition: gr_basic.h:42
PCB_LAYER_ID GetLayer() const
Function GetLayer returns the primary layer this item is on.
void SetLocalSolderPasteMargin(int aMargin)
Definition: class_module.h:171
void CrossHairOn(wxDC *DC)
Definition: draw_panel.cpp:260
void SetLocked(bool isLocked) override
Function SetLocked sets the MODULE_is_LOCKED bit in the m_ModuleStatus.
Definition: class_module.h:234
Virtual component: when created by copper shapes on board (Like edge card connectors, mounting hole...)
Definition: class_module.h:79
void DisplayError(wxWindow *parent, const wxString &text, int displaytime)
Function DisplayError displays an error or warning message box with aMessage.
Definition: confirm.cpp:69
Use thermal relief for pads.
Definition: zones.h:58
void SetAttributes(int aAttributes)
Definition: class_module.h:186
pads are covered by copper
Definition: zones.h:59
bool DIALOG_MODULE_BOARD_EDITOR::TransferDataToWindow ( )
overrideprivate

Definition at line 583 of file dialog_edit_module_for_BoardEditor.cpp.

References InitBoardProperties(), InitModeditProperties(), DIALOG_MODULE_BOARD_EDITOR_BASE::m_Panel3D, and DIALOG_MODULE_BOARD_EDITOR_BASE::m_PanelProperties.

Referenced by OnInitDlg().

584 {
585  if( !wxDialog::TransferDataToWindow() ||
586  !m_PanelProperties->TransferDataToWindow() )
587  {
588  wxMessageBox( _( "Error: invalid footprint parameter" ) );
589  return false;
590  }
591 
592  if( !m_Panel3D->TransferDataToWindow() )
593  {
594  wxMessageBox( _( "Error: invalid 3D parameter" ) );
595  return false;
596  }
597 
600  Layout();
601 
602  return true;
603 }

Member Data Documentation

wxBoxSizer* DIALOG_MODULE_BOARD_EDITOR_BASE::bLowerSizer3D
protectedinherited
wxBoxSizer* DIALOG_MODULE_BOARD_EDITOR_BASE::bSizerMain3D
protectedinherited
wxRadioBox* DIALOG_MODULE_BOARD_EDITOR_BASE::m_AttributsCtrl
protectedinherited
wxRadioBox* DIALOG_MODULE_BOARD_EDITOR_BASE::m_AutoPlaceCtrl
protectedinherited
wxButton* DIALOG_MODULE_BOARD_EDITOR_BASE::m_button4
protectedinherited
wxButton* DIALOG_MODULE_BOARD_EDITOR_BASE::m_button5
protectedinherited
wxButton* DIALOG_MODULE_BOARD_EDITOR_BASE::m_button8
protectedinherited
wxButton* DIALOG_MODULE_BOARD_EDITOR_BASE::m_buttonAdd
protectedinherited
wxButton* DIALOG_MODULE_BOARD_EDITOR_BASE::m_buttonEdit
protectedinherited
wxButton* DIALOG_MODULE_BOARD_EDITOR_BASE::m_buttonExchange
protectedinherited
wxButton* DIALOG_MODULE_BOARD_EDITOR_BASE::m_buttonModuleEditor
protectedinherited
wxButton* DIALOG_MODULE_BOARD_EDITOR_BASE::m_buttonRemove
protectedinherited
wxSlider* DIALOG_MODULE_BOARD_EDITOR_BASE::m_CostRot180Ctrl
protectedinherited
wxSlider* DIALOG_MODULE_BOARD_EDITOR_BASE::m_CostRot90Ctrl
protectedinherited
MODULE* DIALOG_MODULE_BOARD_EDITOR::m_currentModuleCopy
private

Definition at line 47 of file dialog_edit_module_for_BoardEditor.h.

Referenced by DIALOG_MODULE_BOARD_EDITOR().

wxDC* DIALOG_MODULE_BOARD_EDITOR::m_DC
private
std::string DIALOG_SHIM::m_hash_key
protectedinherited
int DIALOG_MODULE_BOARD_EDITOR::m_LastSelected3DShapeIndex
private
wxRadioBox* DIALOG_MODULE_BOARD_EDITOR_BASE::m_LayerCtrl
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_MaskClearanceTitle
protectedinherited
wxTextCtrl* DIALOG_MODULE_BOARD_EDITOR_BASE::m_ModPositionX
protectedinherited
wxTextCtrl* DIALOG_MODULE_BOARD_EDITOR_BASE::m_ModPositionY
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_NetClearanceUnits
protectedinherited
wxTextCtrl* DIALOG_MODULE_BOARD_EDITOR_BASE::m_NetClearanceValueCtrl
protectedinherited
wxNotebook* DIALOG_MODULE_BOARD_EDITOR_BASE::m_NoteBook
protectedinherited
wxFloatingPointValidator<double> DIALOG_MODULE_BOARD_EDITOR::m_OrientValidator
private
double DIALOG_MODULE_BOARD_EDITOR::m_OrientValue
private
wxTextCtrl* DIALOG_MODULE_BOARD_EDITOR_BASE::m_OrientValueCtrl
protectedinherited
size_t DIALOG_MODULE_BOARD_EDITOR::m_page = 0
staticprivate

Module editor: Dialog for editing module properties in the pcb editor.

Definition at line 45 of file dialog_edit_module_for_BoardEditor.h.

Referenced by DIALOG_MODULE_BOARD_EDITOR(), and ~DIALOG_MODULE_BOARD_EDITOR().

wxPanel* DIALOG_MODULE_BOARD_EDITOR_BASE::m_PanelProperties
protectedinherited
PCB_EDIT_FRAME* DIALOG_MODULE_BOARD_EDITOR::m_Parent
private
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
wxTextCtrl* DIALOG_MODULE_BOARD_EDITOR_BASE::m_ReferenceCtrl
protectedinherited
wxStdDialogButtonSizer* DIALOG_MODULE_BOARD_EDITOR_BASE::m_sdbSizerStdButtons
protectedinherited
wxButton* DIALOG_MODULE_BOARD_EDITOR_BASE::m_sdbSizerStdButtonsCancel
protectedinherited
wxButton* DIALOG_MODULE_BOARD_EDITOR_BASE::m_sdbSizerStdButtonsOK
protectedinherited
wxTextCtrl* DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderMaskMarginCtrl
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderMaskMarginUnits
protectedinherited
wxTextCtrl* DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderPasteMarginCtrl
protectedinherited
wxTextCtrl* DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderPasteMarginRatioCtrl
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderPasteMarginUnits
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_SolderPasteRatioMarginUnits
protectedinherited
wxStaticLine* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticline1
protectedinherited
wxStaticLine* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticline2
protectedinherited
wxStaticLine* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticline3
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticText11
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticText12
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticText16
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticTextInfo
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticTextNetClearance
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticTextPos
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticTextRatio
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticTextRef
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticTextRotation
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticTextSolderPaste
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_staticTextVal
protectedinherited
wxTextCtrl* DIALOG_MODULE_BOARD_EDITOR_BASE::m_textCtrlSheetPath
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_TextSheetPath
protectedinherited
wxTextCtrl* DIALOG_MODULE_BOARD_EDITOR_BASE::m_ValueCtrl
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_XPosLabel
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_XPosUnit
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_YPosLabel
protectedinherited
wxStaticText* DIALOG_MODULE_BOARD_EDITOR_BASE::m_YPosUnit
protectedinherited
wxChoice* DIALOG_MODULE_BOARD_EDITOR_BASE::m_ZoneConnectionChoice
protectedinherited

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