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, PCB_GENERAL_SETTINGS::Colors(), 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(), KIWAY_HOLDER::Prj(), and PCB_BASE_FRAME::Settings().

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  &aParent->Settings().Colors(),
91  &m_shapes3D_list );
92 
93  bLowerSizer3D->Add( m_PreviewPane, 1, wxEXPAND, 5 );
94 
95  m_NoteBook->SetSelection( m_page );
96  m_sdbSizerStdButtonsOK->SetDefault();
97 
98  m_ReferenceCopy = NULL;
99  m_ValueCopy = NULL;
101  m_OrientValue = 0;
102 
103  // Layout() gets called correctly in TransferDataToWindow().
104 }
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
PCB_GENERAL_SETTINGS & Settings()
COLORS_DESIGN_SETTINGS & Colors()
DIALOG_MODULE_BOARD_EDITOR::~DIALOG_MODULE_BOARD_EDITOR ( )

Definition at line 108 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().

109 {
110  m_shapes3D_list.clear();
111 
112  // free the memory used by all models, otherwise models which were
113  // browsed but not used would consume memory
114  Prj().Get3DCacheManager()->FlushCache( false );
115 
116  // the GL canvas has to be visible before it is destroyed
117  m_page = m_NoteBook->GetSelection();
118  m_NoteBook->SetSelection( 1 );
119 
120  delete m_ReferenceCopy;
121  m_ReferenceCopy = NULL;
122 
123  delete m_ValueCopy;
124  m_ValueCopy = NULL;
125 
126  delete m_PreviewPane;
127  m_PreviewPane = NULL; // just in case, to avoid double-free
128 
129  // this is already deleted by the board used on preview pane so
130  // no need to delete here
131  // delete m_currentModuleCopy;
132  // m_currentModuleCopy = NULL;
133 }
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 525 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().

526 {
527  PROJECT& prj = Prj();
528  S3D_INFO model;
529 
530  wxString initialpath = prj.GetRString( PROJECT::VIEWER_3D_PATH );
531  wxString sidx = prj.GetRString( PROJECT::VIEWER_3D_FILTER_INDEX );
532  int filter = 0;
533 
534  if( !sidx.empty() )
535  {
536  long tmp;
537  sidx.ToLong( &tmp );
538 
539  if( tmp > 0 && tmp <= INT_MAX )
540  filter = (int) tmp;
541  }
542 
543  if( !S3D::Select3DModel( this, Prj().Get3DCacheManager(),
544  initialpath, filter, &model ) || model.m_Filename.empty() )
545  {
546  return;
547  }
548 
549  prj.SetRString( PROJECT::VIEWER_3D_PATH, initialpath );
550  sidx = wxString::Format( wxT( "%i" ), filter );
552  S3D_FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
553  wxString alias;
554  wxString shortPath;
555  wxString filename = model.m_Filename;
556 
557  if( res && res->SplitAlias( filename, alias, shortPath ) )
558  {
559  alias.Append( wxT( ":" ) );
560  alias.Append( shortPath );
561  m_3D_ShapeNameListBox->Append( alias );
562  }
563  else
564  {
565  m_3D_ShapeNameListBox->Append( filename );
566  }
567 
568 #ifdef __WINDOWS__
569  // In Kicad files, filenames and paths are stored using Unix notation
570  model.m_Filename.Replace( "\\", "/" );
571 #endif
572 
573  m_shapes3D_list.push_back( model );
576 
577  if( m_PreviewPane )
579 
580  return;
581 }
Class PROJECT holds project specific data.
Definition: project.h:56
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 782 of file dialog_edit_module_for_BoardEditor.cpp.

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

783 {
784  if( S3D::Configure3DPaths( this, Prj().Get3DCacheManager()->GetResolver() ) )
785  if( m_LastSelected3DShapeIndex >= 0 )
786  if( m_PreviewPane )
788 }
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 473 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().

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

Referenced by DIALOG_PRINT_USING_PRINTER::InitValues().

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

Definition at line 540 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().

541 {
542  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
543  // handle validation in the same way as other dialogs.
544  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
545  return;
546 
547  SetReturnCode( retCode );
548 
549  if( !IsQuasiModal() )
550  {
551  wxFAIL_MSG( wxT( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal wasn't called" ) );
552  return;
553  }
554 
555  m_qmodal_showing = false;
556 
557  if( m_qmodal_loop )
558  {
559  if( m_qmodal_loop->IsRunning() )
560  m_qmodal_loop->Exit( 0 );
561  else
562  m_qmodal_loop->ScheduleExit( 0 );
563 
564  m_qmodal_loop = NULL;
565  }
566 
569 
570  Show( false );
571 }
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 104 of file dialog_shim.cpp.

References PCAD2KICAD::Center.

Referenced by COLOR4D_PICKER_DLG::COLOR4D_PICKER_DLG(), 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_GLOBAL_SYM_LIB_TABLE_CONFIG::DIALOG_GLOBAL_SYM_LIB_TABLE_CONFIG(), 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().

105 {
106  // must be called from the constructor of derived classes,
107  // when all widgets are initialized, and therefore their size fixed
108 
109  // SetSizeHints fixes the minimal size of sizers in the dialog
110  // (SetSizeHints calls Fit(), so no need to call it)
111  GetSizer()->SetSizeHints( this );
112 
113  // the default position, when calling the first time the dlg
114  Center();
115 }
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 117 of file dialog_shim.cpp.

Referenced by DIALOG_SHIM::Show().

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

Reimplemented from DIALOG_MODULE_BOARD_EDITOR_BASE.

Definition at line 230 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().

231 {
232  if( m_CurrentModule->GetTimeStamp() == 0 ) // Module Editor needs a non null timestamp
233  {
235  m_Parent->OnModify();
236  }
237 
238  EndModal( PRM_EDITOR_WANT_MODEDIT );
239 }
virtual void OnModify() override
Function OnModify must be called after a board change to set the modified flag.
Definition: pcbframe.cpp:994
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 137 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().

138 {
141 
144 
145  m_LayerCtrl->SetSelection(
146  (m_CurrentModule->GetLayer() == B_Cu) ? 1 : 0 );
147 
148  bool custom_orientation = false;
149  switch( int( m_CurrentModule->GetOrientation() ) )
150  {
151  case 0:
152  m_OrientCtrl->SetSelection( 0 );
153  break;
154 
155  case 900:
156  case -2700:
157  m_OrientCtrl->SetSelection( 1 );
158  break;
159 
160  case -900:
161  case 2700:
162  m_OrientCtrl->SetSelection( 2 );
163  break;
164 
165  case -1800:
166  case 1800:
167  m_OrientCtrl->SetSelection( 3 );
168  break;
169 
170  default:
171  m_OrientCtrl->SetSelection( 4 );
172  custom_orientation = true;
173  break;
174  }
175 
176  m_OrientValueCtrl->Enable( custom_orientation );
178  m_OrientValidator.TransferToWindow();
179 
180  // Initialize dialog relative to masks clearances
184 
187 
188  // These 2 parameters are usually < 0, so prepare entering a negative
189  // value, if current is 0
191 
193  m_SolderPasteMarginCtrl->SetValue( wxT( "-" ) +
194  m_SolderPasteMarginCtrl->GetValue() );
195 
196  // Add solder paste margin ration in per cent
197  // for the usual default value 0.0, display -0.0 (or -0,0 in some countries)
198  wxString msg;
199  msg.Printf( wxT( "%f" ),
201 
203  msg[0] == '0') // Sometimes Printf adds a sign if the value is very small (0.0)
204  m_SolderPasteMarginRatioCtrl->SetValue( wxT("-") + msg );
205  else
206  m_SolderPasteMarginRatioCtrl->SetValue( msg );
207 
209  {
210  default:
212  m_ZoneConnectionChoice->SetSelection( 0 );
213  break;
214 
215  case PAD_ZONE_CONN_FULL:
216  m_ZoneConnectionChoice->SetSelection( 1 );
217  break;
218 
220  m_ZoneConnectionChoice->SetSelection( 2 );
221  break;
222 
223  case PAD_ZONE_CONN_NONE:
224  m_ZoneConnectionChoice->SetSelection( 3 );
225  break;
226  }
227 }
int GetLocalClearance() const
Definition: class_module.h:179
const wxPoint & GetPosition() const override
Definition: class_module.h:155
wxFloatingPointValidator< double > m_OrientValidator
ZoneConnection GetZoneConnection() const
Definition: class_module.h:189
double GetLocalSolderPasteMarginRatio() const
Definition: class_module.h:185
Pads are not covered.
Definition: zones.h:57
double GetOrientation() const
Definition: class_module.h:160
wxString GetAbbreviatedUnitsLabel(EDA_UNITS_T aUnit)
Definition: base_units.cpp:479
int GetLocalSolderMaskMargin() const
Definition: class_module.h:176
int GetLocalSolderPasteMargin() const
Definition: class_module.h:182
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 280 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().

281 {
282  wxString default_path;
283  wxGetEnv( KISYS3DMOD, &default_path );
284 #ifdef __WINDOWS__
285  default_path.Replace( wxT( "/" ), wxT( "\\" ) );
286 #endif
287 
289 
290  // Init 3D shape list
291  m_3D_ShapeNameListBox->Clear();
292  std::list<S3D_INFO>::iterator sM = m_CurrentModule->Models().begin();
293  std::list<S3D_INFO>::iterator eM = m_CurrentModule->Models().end();
294  m_shapes3D_list.clear();
295 
296  wxString origPath;
297  wxString alias;
298  wxString shortPath;
299  S3D_FILENAME_RESOLVER* res = Prj().Get3DCacheManager()->GetResolver();
300 
301  while( sM != eM )
302  {
303  m_shapes3D_list.push_back( *sM );
304  origPath = sM->m_Filename;
305 
306  if( res && res->SplitAlias( origPath, alias, shortPath ) )
307  {
308  origPath = alias;
309  origPath.append( ":" );
310  origPath.append( shortPath );
311  }
312 
313  m_3D_ShapeNameListBox->Append( origPath );
314  ++sM;
315 
316  }
317 
322  m_ReferenceCtrl->SetValue( m_ReferenceCopy->GetText() );
323  m_ValueCtrl->SetValue( m_ValueCopy->GetText() );
324 
325  // Shows the footprint's schematic path.
327 
328  m_AttributsCtrl->SetItemToolTip( 0,
329  _( "Use this attribute for most non SMD components\n"
330  "Components with this option are not put in the footprint position list file" ) );
331  m_AttributsCtrl->SetItemToolTip( 1,
332  _( "Use this attribute for SMD components.\n"
333  "Only components with this option are put in the footprint position list file" ) );
334  m_AttributsCtrl->SetItemToolTip( 2,
335  _( "Use this attribute for \"virtual\" components drawn on board\n"
336  "like an edge connector (old ISA PC bus for instance)" ) );
337 
338  // Controls on right side of the dialog
339  switch( m_CurrentModule->GetAttributes() & 255 )
340  {
341  case 0:
342  m_AttributsCtrl->SetSelection( 0 );
343  break;
344 
345  case MOD_CMS:
346  m_AttributsCtrl->SetSelection( 1 );
347  break;
348 
349  case MOD_VIRTUAL:
350  m_AttributsCtrl->SetSelection( 2 );
351  break;
352 
353  default:
354  m_AttributsCtrl->SetSelection( 0 );
355  break;
356  }
357 
358  if( m_CurrentModule->IsLocked() )
359  m_AutoPlaceCtrl->SetSelection( 2 );
360  else if( m_CurrentModule->PadsLocked() )
361  m_AutoPlaceCtrl->SetSelection( 1 );
362  else
363  m_AutoPlaceCtrl->SetSelection( 0 );
364 
365  m_AutoPlaceCtrl->SetItemToolTip( 0,
366  _( "Component can be freely moved and auto placed. User "
367  "can arbitrarily select and edit component's pads." ) );
368  m_AutoPlaceCtrl->SetItemToolTip( 1,
369  _( "Component can be freely moved and auto placed, but its "
370  "pads cannot be selected or edited." ) );
371  m_AutoPlaceCtrl->SetItemToolTip( 2,
372  _( "Component is locked: it cannot be freely moved or auto "
373  "placed." ) );
374 
376 
378 
379  // if m_3D_ShapeNameListBox is not empty, preselect first 3D shape
380  if( m_3D_ShapeNameListBox->GetCount() > 0 )
381  {
384 
385  if( m_PreviewPane )
387  }
388  else
389  {
390  if( m_PreviewPane )
391  m_PreviewPane->ResetModelData( true );
392  }
393 
394  // We have modified the UI, so call Fit() for m_Panel3D
395  // to be sure the m_Panel3D sizers are initiliazed before opening the dialog
396  m_Panel3D->GetSizer()->Fit( m_Panel3D );
397 
398  // For some reason, on Linux, after the call to
399  // m_PreviewPane->SetModelDataIdx( m_LastSelected3DShapeIndex, true )
400  // the dialog has no longer the focus. Force it:
401  m_sdbSizerStdButtonsOK->SetFocus();
402 }
void ResetModelData(bool aReloadPreviewModule=false)
ResetModelData - Clear the values and reload the preview board.
TEXTE_MODULE & Reference()
Definition: class_module.h:463
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:150
int GetPlacementCost90() const
Definition: class_module.h:533
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:272
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:462
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:197
bool IsLocked() const override
Function IsLocked.
Definition: class_module.h:236
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:173
int GetPlacementCost180() const
Definition: class_module.h:530
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(), SCH_BASE_FRAME::OnEditSymbolLibTable(), 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::ReadNetListAndFpFiles(), 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 248 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.

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

Reimplemented from DIALOG_MODULE_BOARD_EDITOR_BASE.

Definition at line 405 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().

406 {
408 
409  if( m_LastSelected3DShapeIndex < 0 ) // happens under wxGTK when
410  // deleting an item in
411  // m_3D_ShapeNameListBox wxListBox
412  {
413  if( m_PreviewPane )
415 
416  return;
417  }
418 
419  if( m_LastSelected3DShapeIndex >= (int) m_shapes3D_list.size() )
420  {
421  wxMessageBox( wxT( "On3DShapeNameSelected() error" ) );
423 
424  if( m_PreviewPane )
426 
427  return;
428  }
429 
430  if( m_PreviewPane )
432 }
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 758 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().

759 {
761 
766  m_ReferenceCtrl->SetValue( m_ReferenceCopy->GetText() );
767 }
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 770 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().

771 {
773 
778  m_ValueCtrl->SetValue( m_ValueCopy->GetText() );
779 }
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(), SCH_EDIT_FRAME::backAnnotateFootprints(), 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(), DIALOG_SYMBOL_LIB_TABLE::DIALOG_SYMBOL_LIB_TABLE(), 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(), 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(), DIALOG_BOM_EDITOR::LoadComponents(), 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(), SCH_BASE_FRAME::OnEditSymbolLibTable(), 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::ReadNetListAndFpFiles(), 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 436 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().

437 {
438  int ii = m_3D_ShapeNameListBox->GetSelection();
439 
440  if( ii < 0 )
441  {
442  if( m_PreviewPane )
443  m_PreviewPane->ResetModelData( true );
444 
445  return;
446  }
447 
448  m_shapes3D_list.erase( m_shapes3D_list.begin() + ii );
449  m_3D_ShapeNameListBox->Delete( ii );
450 
451  if( m_3D_ShapeNameListBox->GetCount() > 0 )
452  {
453  if( ii > 0 )
455  else
457 
459 
460  if( m_PreviewPane )
462  }
463  else
464  {
465  if( m_PreviewPane )
466  m_PreviewPane->ResetModelData( true );
467  }
468 
469  return;
470 }
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 139 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_ANNOTATE::OnApplyClick(), DIALOG_SCH_FIND::OnCancel(), DIALOG_ANNOTATE::OnCancelClick(), DIALOG_DRC_CONTROL::OnLeftDClickClearance(), DIALOG_DRC_CONTROL::OnLeftDClickUnconnected(), DIALOG_DRC_CONTROL::OnPopupMenu(), DIALOG_EXCHANGE_MODULE::OnQuit(), POSITION_RELATIVE_TOOL::PositionRelative(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), DRC::ShowDRCDialog(), and DIALOG_SHIM::ShowQuasiModal().

140 {
141  bool ret;
142  const char* hash_key;
143 
144  if( m_hash_key.size() )
145  {
146  // a special case like EDA_LIST_DIALOG, which has multiple uses.
147  hash_key = m_hash_key.c_str();
148  }
149  else
150  {
151  hash_key = typeid(*this).name();
152  }
153 
154  // Show or hide the window. If hiding, save current position and size.
155  // If showing, use previous position and size.
156  if( show )
157  {
158  wxDialog::Raise(); // Needed on OS X and some other window managers (i.e. Unity)
159  ret = wxDialog::Show( show );
160 
161  // classname is key, returns a zeroed out default EDA_RECT if none existed before.
162  EDA_RECT r = class_map[ hash_key ];
163 
164  if( r.GetSize().x != 0 && r.GetSize().y != 0 )
165  SetSize( r.GetPosition().x, r.GetPosition().y, r.GetSize().x, r.GetSize().y, 0 );
166  }
167  else
168  {
169  // Save the dialog's position & size before hiding, using classname as key
170  EDA_RECT r( wxDialog::GetPosition(), wxDialog::GetSize() );
171  class_map[ hash_key ] = r;
172 
173  ret = wxDialog::Show( show );
174  }
175 
177 
178  return ret;
179 }
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 495 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(), InvokeDialogCreateBOMEditor(), LIB_VIEW_FRAME::OnSelectSymbol(), and SCH_BASE_FRAME::SelectComponentFromLibrary().

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

608 {
609  wxPoint modpos;
610  wxString msg;
611 
612  if( !Validate() || !DIALOG_MODULE_BOARD_EDITOR_BASE::TransferDataFromWindow() ||
613  !m_PanelProperties->TransferDataFromWindow() )
614  {
615  wxMessageBox( _( "Error: invalid or missing footprint parameter" ) );
616  return false;
617  }
618 
619  if( !m_Panel3D->TransferDataFromWindow() )
620  {
621  wxMessageBox( _( "Error: invalid or missing 3D parameter" ) );
622  return false;
623  }
624 
625  if( m_DC )
626  {
629  }
630 
631  BOARD_COMMIT commit( m_Parent );
632  commit.Modify( m_CurrentModule );
633 
634  // Init Fields (should be first, because they can be moved or/and flipped later):
635  TEXTE_MODULE& reference = m_CurrentModule->Reference();
636  reference = *m_ReferenceCopy;
637  TEXTE_MODULE& value = m_CurrentModule->Value();
638  value = *m_ValueCopy;
639 
640  // Initialize masks clearances
644 
645  double dtmp = 0.0;
646  msg = m_SolderPasteMarginRatioCtrl->GetValue();
647  msg.ToDouble( &dtmp );
648 
649  // A -50% margin ratio means no paste on a pad, the ratio must be >= -50%
650  if( dtmp < -50.0 )
651  dtmp = -50.0;
652  // A margin ratio is always <= 0
653  // 0 means use full pad copper area
654  if( dtmp > 0.0 )
655  dtmp = 0.0;
656 
658 
659  switch( m_ZoneConnectionChoice->GetSelection() )
660  {
661  default:
662  case 0:
664  break;
665 
666  case 1:
668  break;
669 
670  case 2:
672  break;
673 
674  case 3:
676  break;
677  }
678 
679  // Set Module Position
680  modpos.x = ValueFromTextCtrl( *m_ModPositionX );
681  modpos.y = ValueFromTextCtrl( *m_ModPositionY );
682  m_CurrentModule->SetPosition( modpos );
683  m_CurrentModule->SetLocked( m_AutoPlaceCtrl->GetSelection() == 2 );
684  m_CurrentModule->SetPadsLocked( m_AutoPlaceCtrl->GetSelection() == 1 );
685 
686  switch( m_AttributsCtrl->GetSelection() )
687  {
688  case 0:
690  break;
691 
692  case 1:
694  break;
695 
696  case 2:
698  break;
699  }
700 
703 
704  /* Now, set orientation. must be made after others changes,
705  * because rotation changes fields positions on board according to the new orientation
706  * (relative positions are not modified)
707  */
708  int orient = KiROUND( m_OrientValue * 10.0 );
709 
710  if( m_CurrentModule->GetOrientation() != orient )
712  orient - m_CurrentModule->GetOrientation() );
713 
714  // Set component side, that also have effect on the fields positions on board
715  bool change_layer = false;
716  if( m_LayerCtrl->GetSelection() == 0 ) // layer req = COMPONENT
717  {
718  if( m_CurrentModule->GetLayer() == B_Cu )
719  change_layer = true;
720  }
721  else if( m_CurrentModule->GetLayer() == F_Cu )
722  change_layer = true;
723 
724  if( change_layer )
726 
727  // This will update the S3D_INFO list into the current module
728  msg.Clear();
729 
730  if( !m_PreviewPane->ValidateWithMessage( msg ) )
731  {
732  DisplayError( this, msg );
733  return false;
734  }
735 
736  std::list<S3D_INFO>* draw3D = &m_CurrentModule->Models();
737  draw3D->clear();
738  draw3D->insert( draw3D->end(), m_shapes3D_list.begin(), m_shapes3D_list.end() );
739 
741 
742  // This is a simple edition, we must create an undo entry
743  if( m_CurrentModule->GetFlags() == 0 )
744  commit.Push( _( "Modify module properties" ) );
745 
746  SetReturnCode( PRM_EDITOR_EDIT_OK );
747 
748  if( m_DC )
749  {
752  }
753 
754  return true;
755 }
void SetPlacementCost90(int aCost)
Definition: class_module.h:534
STATUS_FLAGS GetFlags() const
Definition: base_struct.h:255
TEXTE_MODULE & Reference()
Definition: class_module.h:463
void Rotate(const wxPoint &aRotCentre, double aAngle) override
Function Rotate Rotate this object.
void SetLocalClearance(int aClearance)
Definition: class_module.h:180
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:531
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:155
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:188
std::list< S3D_INFO > & Models()
Definition: class_module.h:150
void SetLocalSolderPasteMarginRatio(double aRatio)
Definition: class_module.h:186
Pads are not covered.
Definition: zones.h:57
double GetOrientation() const
Definition: class_module.h:160
TEXTE_MODULE & Value()
read/write accessors:
Definition: class_module.h:462
void SetPadsLocked(bool aPadsLocked)
Definition: class_module.h:274
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:177
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:183
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:246
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:71
Use thermal relief for pads.
Definition: zones.h:58
void SetAttributes(int aAttributes)
Definition: class_module.h:198
pads are covered by copper
Definition: zones.h:59
bool DIALOG_MODULE_BOARD_EDITOR::TransferDataToWindow ( )
overrideprivate

Definition at line 584 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().

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

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: