KiCad PCB EDA Suite
DIALOG_EDIT_COMPONENT_IN_LIBRARY Class Reference

#include <dialog_edit_component_in_lib.h>

Inheritance diagram for DIALOG_EDIT_COMPONENT_IN_LIBRARY:
DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE DIALOG_SHIM KIWAY_HOLDER

Public Member Functions

 DIALOG_EDIT_COMPONENT_IN_LIBRARY (LIB_EDIT_FRAME *parent)
 Constructors. More...
 
 ~DIALOG_EDIT_COMPONENT_IN_LIBRARY ()
 
int ShowQuasiModal ()
 
void EndQuasiModal (int retCode)
 
bool IsQuasiModal ()
 
bool Show (bool show) override
 
bool Enable (bool enable) override
 
void OnPaint (wxPaintEvent &event)
 
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...
 

Public Attributes

LIB_EDIT_FRAMEm_Parent
 
bool m_RecreateToolbar
 
int m_AliasLocation
 

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 SetSizeInDU (int x, int y)
 Set the dialog to the given dimensions in "dialog units". More...
 
int HorizPixelsFromDU (int x)
 Convert an integer number of dialog units to pixels, horizontally. More...
 
int VertPixelsFromDU (int y)
 Convert an integer number of dialog units to pixels, vertically. More...
 

Protected Attributes

wxNotebook * m_NoteBook
 
wxPanel * m_PanelBasic
 
wxCheckBox * m_AsConvertButt
 
wxCheckBox * m_ShowPinNumButt
 
wxCheckBox * m_ShowPinNameButt
 
wxCheckBox * m_PinsNameInsideButt
 
wxStaticLine * m_staticline3
 
wxStaticText * m_staticTextNbUnits
 
wxSpinCtrl * m_SelNumberOfUnits
 
wxStaticText * m_staticTextskew
 
wxSpinCtrl * m_SetSkew
 
wxStaticLine * m_staticline1
 
wxCheckBox * m_OptionPower
 
wxCheckBox * m_OptionPartsLocked
 
wxPanel * m_PanelDoc
 
wxStaticText * m_staticTextDescription
 
wxTextCtrl * m_DocCtrl
 
wxStaticText * m_staticTextKeywords
 
wxTextCtrl * m_KeywordsCtrl
 
wxStaticText * m_staticTextDocFileName
 
wxTextCtrl * m_DocfileCtrl
 
wxButton * m_ButtonCopyDoc
 
wxButton * m_buttonBrowseDocFiles
 
wxPanel * m_PanelAlias
 
wxStaticText * m_staticTextAlias
 
wxListBox * m_PartAliasListCtrl
 
wxButton * m_ButtonAddeAlias
 
wxButton * m_ButtonEditAlias
 
wxButton * m_ButtonDeleteOneAlias
 
wxButton * m_ButtonDeleteAllAlias
 
wxPanel * m_PanelFootprintFilter
 
wxStaticText * m_staticTextFootprints
 
wxListBox * m_FootprintFilterListBox
 
wxButton * m_buttonAddFpF
 
wxButton * m_buttonEditOneFootprintFilter
 
wxButton * m_ButtonDeleteOneFootprintFilter
 
wxButton * m_ButtonDeleteAllFootprintFilter
 
wxStdDialogButtonSizer * m_stdSizerButton
 
wxButton * m_stdSizerButtonOK
 
wxButton * m_stdSizerButtonCancel
 
bool m_fixupsRun
 
std::string m_hash_key
 
EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 

Private Member Functions

void initDlg ()
 
void InitPanelDoc ()
 
void InitBasicPanel ()
 
void OnCancelClick (wxCommandEvent &event) override
 
void OnOkClick (wxCommandEvent &event) override
 
void DeleteAllAliasOfPart (wxCommandEvent &event) override
 
void DeleteAliasOfPart (wxCommandEvent &event) override
 
void EditAliasOfPart (wxCommandEvent &event) override
 
void AddAliasOfPart (wxCommandEvent &event) override
 
bool checkNewAlias (wxString aliasname)
 
bool ChangeNbUnitsPerPackage (int newUnit)
 
bool SetUnsetConvert ()
 
void CopyDocFromRootToAlias (wxCommandEvent &event) override
 
void BrowseAndSelectDocFile (wxCommandEvent &event) override
 
void DeleteAllFootprintFilter (wxCommandEvent &event) override
 
void DeleteOneFootprintFilter (wxCommandEvent &event) override
 
void AddFootprintFilter (wxCommandEvent &event) override
 
void EditOneFootprintFilter (wxCommandEvent &event) override
 
void OnUpdateInterchangeableUnits (wxUpdateUIEvent &event) override
 

Static Private Attributes

static int m_lastOpenedPage = 0
 

Detailed Description

Definition at line 35 of file dialog_edit_component_in_lib.h.

Constructor & Destructor Documentation

DIALOG_EDIT_COMPONENT_IN_LIBRARY::DIALOG_EDIT_COMPONENT_IN_LIBRARY ( LIB_EDIT_FRAME parent)

Constructors.

Definition at line 46 of file dialog_edit_component_in_lib.cpp.

References DIALOG_SHIM::FinishDialogSettings(), initDlg(), m_Parent, and m_RecreateToolbar.

46  :
48 {
49  m_Parent = aParent;
50  m_RecreateToolbar = false;
51 
52  initDlg();
53 
54  // Now all widgets have the size fixed, call FinishDialogSettings
56 }
void FinishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE(wxWindow *parent, wxWindowID id=ID_LIBEDIT_NOTEBOOK, const wxString &title=_("Library Symbol Properties"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
DIALOG_EDIT_COMPONENT_IN_LIBRARY::~DIALOG_EDIT_COMPONENT_IN_LIBRARY ( )

Member Function Documentation

void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddAliasOfPart ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 342 of file dialog_edit_component_in_lib.cpp.

References checkNewAlias(), LIB_ID::FixIllegalChars(), WX_TEXT_ENTRY_DIALOG::GetValue(), LIB_ID::ID_SCH, and DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PartAliasListCtrl.

343 {
344  wxString aliasname;
345 
346  WX_TEXT_ENTRY_DIALOG dlg( this, _( "New Alias:" ), _( "Symbol alias:" ), aliasname );
347 
348  if( dlg.ShowModal() != wxID_OK )
349  return; // cancelled by user
350 
351  aliasname = LIB_ID::FixIllegalChars( dlg.GetValue(), LIB_ID::ID_SCH );
352 
353  if( checkNewAlias( aliasname ) )
354  m_PartAliasListCtrl->Append( aliasname );
355 }
static UTF8 FixIllegalChars(const UTF8 &aLibItemName, LIB_ID_TYPE aType)
Replace illegal LIB_ID item name characters with underscores &#39;_&#39;.
Definition: lib_id.cpp:374
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::AddFootprintFilter ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 516 of file dialog_edit_component_in_lib.cpp.

References DisplayError(), GetChars(), LIB_EDIT_FRAME::GetCurPart(), WX_TEXT_ENTRY_DIALOG::GetValue(), DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonDeleteAllFootprintFilter, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonDeleteOneFootprintFilter, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_buttonEditOneFootprintFilter, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_FootprintFilterListBox, and m_Parent.

517 {
518  wxString Line;
519  LIB_PART* component = m_Parent->GetCurPart();
520 
521  if( component == NULL )
522  return;
523 
524  WX_TEXT_ENTRY_DIALOG dlg( this, _( "Add Footprint Filter" ), _( "Footprint Filter" ), Line );
525  if( dlg.ShowModal() != wxID_OK )
526  return; // cancelled by user
527 
528  Line = dlg.GetValue();
529  Line.Replace( wxT( " " ), wxT( "_" ) );
530 
531  if( Line.IsEmpty() )
532  return;
533 
534  /* test for an existing name: */
535  int index = m_FootprintFilterListBox->FindString( Line );
536 
537  if( index != wxNOT_FOUND )
538  {
539  wxString msg;
540 
541  msg.Printf( _( "Footprint filter \"%s\" is already defined." ), GetChars( Line ) );
542  DisplayError( this, msg );
543  return;
544  }
545 
546  m_FootprintFilterListBox->Append( Line );
547  m_ButtonDeleteAllFootprintFilter->Enable( true );
548  m_ButtonDeleteOneFootprintFilter->Enable( true );
549  m_buttonEditOneFootprintFilter->Enable( true );
550 }
LIB_PART * GetCurPart() const
Return the current part being edited or NULL if none selected.
Define a library symbol object.
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
void DisplayError(wxWindow *parent, const wxString &text, int displaytime)
Function DisplayError displays an error or warning message box with aMessage.
Definition: confirm.cpp:185
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::BrowseAndSelectDocFile ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 456 of file dialog_edit_component_in_lib.cpp.

References PROJECT::DOC_PATH, EDA_FILE_SELECTOR(), SEARCH_STACK::FilenameWithRelativePathInSearchList(), PROJECT::GetRString(), SEARCH_STACK::LastVisitedPath(), DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_DocfileCtrl, KIWAY_HOLDER::Prj(), and PROJECT::SetRString().

457 {
458  PROJECT& prj = Prj();
459  SEARCH_STACK* search = prj.SchSearchS();
460 
461  wxString mask = wxT( "*" );
462  wxString docpath = prj.GetRString( PROJECT::DOC_PATH );
463 
464  if( !docpath )
465  docpath = search->LastVisitedPath( wxT( "doc" ) );
466 
467  wxString fullFileName = EDA_FILE_SELECTOR( _( "Doc Files" ),
468  docpath,
469  wxEmptyString,
470  wxEmptyString,
471  mask,
472  this,
473  wxFD_OPEN,
474  true );
475  if( fullFileName.IsEmpty() )
476  return;
477 
478  /* If the path is already in the library search paths
479  * list, just add the library name to the list. Otherwise, add
480  * the library name with the full or relative path.
481  * the relative path, when possible is preferable,
482  * because it preserve use of default libraries paths, when the path is a sub path of
483  * these default paths
484  */
485  wxFileName fn = fullFileName;
486 
487  prj.SetRString( PROJECT::DOC_PATH, fn.GetPath() );
488 
489  wxString filename = search->FilenameWithRelativePathInSearchList(
490  fullFileName, wxPathOnly( Prj().GetProjectFullName() ) );
491 
492  // Filenames are always stored in unix like mode, ie separator "\" is stored as "/"
493  // to ensure files are identical under unices and windows
494 #ifdef __WINDOWS__
495  filename.Replace( wxT( "\\" ), wxT( "/" ) );
496 #endif
497  m_DocfileCtrl->SetValue( filename );
498 }
Class PROJECT holds project specific data.
Definition: project.h:56
Class SEARCH_STACK looks for files in a number of places.
Definition: search_stack.h:41
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
wxString EDA_FILE_SELECTOR(const wxString &aTitle, const wxString &aPath, const wxString &aFileName, const wxString &aExtension, const wxString &aWildcard, wxWindow *aParent, int aStyle, const bool aKeepWorkingDirectory, const wxPoint &aPosition, wxString *aMruPath)
Function EDA_FILE_SELECTOR.
Definition: gestfich.cpp:82
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:171
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:186
const wxString LastVisitedPath(const wxString &aSubPathToSearch=wxEmptyString)
Function LastVisitedPath is a quirky function inherited from old code that seems to serve particular ...
wxString FilenameWithRelativePathInSearchList(const wxString &aFullFilename, const wxString &aBaseDir)
Function FilenameWithRelativePathInSearchList returns the shortest possible path which can be use lat...
bool DIALOG_EDIT_COMPONENT_IN_LIBRARY::ChangeNbUnitsPerPackage ( int  newUnit)
private

Definition at line 409 of file dialog_edit_component_in_lib.cpp.

References LIB_EDIT_FRAME::GetCurPart(), LIB_PART::GetUnitCount(), IsOK(), m_Parent, and LIB_PART::SetUnitCount().

Referenced by OnOkClick().

410 {
411  LIB_PART* part = m_Parent->GetCurPart();
412 
413  if( !part || part->GetUnitCount() == MaxUnit || MaxUnit < 1 )
414  return false;
415 
416  if( MaxUnit < part->GetUnitCount()
417  && !IsOK( this, _( "Delete extra parts from component?" ) ) )
418  return false;
419 
420  part->SetUnitCount( MaxUnit );
421  return true;
422 }
LIB_PART * GetCurPart() const
Return the current part being edited or NULL if none selected.
void SetUnitCount(int count)
Set the units per part count.
Define a library symbol object.
int GetUnitCount() const
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Function IsOK displays a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:233
bool DIALOG_EDIT_COMPONENT_IN_LIBRARY::checkNewAlias ( wxString  aliasname)
private

Definition at line 358 of file dialog_edit_component_in_lib.cpp.

References DisplayErrorMessage(), DisplayInfoMessage(), GetChars(), LIB_EDIT_FRAME::GetCurLib(), m_Parent, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PartAliasListCtrl, and KIWAY_HOLDER::Prj().

Referenced by AddAliasOfPart(), and EditAliasOfPart().

359 {
360  if( aliasname.IsEmpty() )
361  return false;
362 
363  if( m_PartAliasListCtrl->FindString( aliasname ) != wxNOT_FOUND )
364  {
365  wxString msg;
366  msg.Printf( _( "Alias \"%s\" already exists." ), GetChars( aliasname ) );
367  DisplayInfoMessage( this, msg );
368  return false;
369  }
370 
371  wxString library = m_Parent->GetCurLib();
372 
373  if( !library.empty() && Prj().SchSymbolLibTable()->LoadSymbol( library, aliasname ) != NULL )
374  {
375  wxString msg;
376  msg.Printf( _( "Symbol name \"%s\" already exists in library \"%s\"." ), aliasname, library );
377  DisplayErrorMessage( this, msg );
378  return false;
379  }
380 
381  return true;
382 }
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Function DisplayErrorMessage displays an error message with aMessage.
Definition: confirm.cpp:199
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
wxString GetCurLib() const
The nickname of the current library being edited and empty string if none.
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
void DisplayInfoMessage(wxWindow *aParent, const wxString &aMessage, const wxString &aExtraInfo)
Function DisplayInfoMessage displays an informational message box with aMessage.
Definition: confirm.cpp:216
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::CopyDocFromRootToAlias ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 273 of file dialog_edit_component_in_lib.cpp.

References LIB_PART::GetAlias(), LIB_EDIT_FRAME::GetCurPart(), LIB_ALIAS::GetDescription(), LIB_ALIAS::GetDocFileName(), LIB_ALIAS::GetKeyWords(), DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_DocCtrl, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_DocfileCtrl, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_KeywordsCtrl, and m_Parent.

274 {
275  if( m_Parent == NULL )
276  return;
277 
278  LIB_ALIAS* parent_alias;
279  LIB_PART* component = m_Parent->GetCurPart();
280 
281  if( component == NULL )
282  return;
283 
284  // search for the main alias: this is the first alias in alias list
285  // something like the main component
286  parent_alias = component->GetAlias( 0 );
287 
288  if( parent_alias == NULL ) // Should never occur (bug)
289  return;
290 
291  m_DocCtrl->SetValue( parent_alias->GetDescription() );
292  m_DocfileCtrl->SetValue( parent_alias->GetDocFileName() );
293  m_KeywordsCtrl->SetValue( parent_alias->GetKeyWords() );
294 }
Part library alias object definition.
LIB_ALIAS * GetAlias(size_t aIndex)
LIB_PART * GetCurPart() const
Return the current part being edited or NULL if none selected.
wxString GetDescription() const
Define a library symbol object.
wxString GetDocFileName() const
wxString GetKeyWords() const
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAliasOfPart ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 385 of file dialog_edit_component_in_lib.cpp.

References DisplayError(), LIB_EDIT_FRAME::GetAliasName(), GetChars(), m_Parent, and DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PartAliasListCtrl.

386 {
387  int sel = m_PartAliasListCtrl->GetSelection();
388 
389  if( sel == wxNOT_FOUND )
390  return;
391 
392  wxString aliasname = m_PartAliasListCtrl->GetString( sel );
393 
394  if( aliasname.CmpNoCase( m_Parent->GetAliasName() ) == 0 )
395  {
396  wxString msg;
397  msg.Printf( _( "Current alias \"%s\" cannot be removed." ), GetChars( aliasname ) );
398  DisplayError( this, msg );
399  return;
400  }
401 
402  m_PartAliasListCtrl->Delete( sel );
403 }
const wxString & GetAliasName()
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
void DisplayError(wxWindow *parent, const wxString &text, int displaytime)
Function DisplayError displays an error or warning message box with aMessage.
Definition: confirm.cpp:185
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAllAliasOfPart ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 297 of file dialog_edit_component_in_lib.cpp.

References DisplayErrorMessage(), LIB_EDIT_FRAME::GetAliasName(), IsOK(), m_Parent, and DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PartAliasListCtrl.

298 {
299  if( m_PartAliasListCtrl->GetCount() == 0 )
300  return;
301 
302  if( m_PartAliasListCtrl->FindString( m_Parent->GetAliasName() ) != wxNOT_FOUND )
303  {
304  DisplayErrorMessage( this, _( "Delete All can be done only when editing the main symbol." ) );
305  return;
306  }
307 
308  if( IsOK( this, _( "Remove all aliases from list?" ) ) )
309  m_PartAliasListCtrl->Clear();
310 }
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Function DisplayErrorMessage displays an error message with aMessage.
Definition: confirm.cpp:199
const wxString & GetAliasName()
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Function IsOK displays a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:233
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteAllFootprintFilter ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 501 of file dialog_edit_component_in_lib.cpp.

References IsOK(), DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonDeleteAllFootprintFilter, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonDeleteOneFootprintFilter, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_buttonEditOneFootprintFilter, and DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_FootprintFilterListBox.

502 {
503  if( IsOK( this, _( "OK to delete the footprint filter list ?" ) ) )
504  {
505  m_FootprintFilterListBox->Clear();
506  m_ButtonDeleteAllFootprintFilter->Enable( false );
507  m_ButtonDeleteOneFootprintFilter->Enable( false );
508  m_buttonEditOneFootprintFilter->Enable( false );
509  }
510 }
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Function IsOK displays a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:233
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::DeleteOneFootprintFilter ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 553 of file dialog_edit_component_in_lib.cpp.

References LIB_EDIT_FRAME::GetCurPart(), DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonDeleteAllFootprintFilter, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonDeleteOneFootprintFilter, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_buttonEditOneFootprintFilter, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_FootprintFilterListBox, and m_Parent.

554 {
555  LIB_PART* component = m_Parent->GetCurPart();
556  int ii = m_FootprintFilterListBox->GetSelection();
557 
558  m_FootprintFilterListBox->Delete( ii );
559 
560  if( !component || ( m_FootprintFilterListBox->GetCount() == 0 ) )
561  {
562  m_ButtonDeleteAllFootprintFilter->Enable( false );
563  m_ButtonDeleteOneFootprintFilter->Enable( false );
564  m_buttonEditOneFootprintFilter->Enable( false );
565  }
566 }
LIB_PART * GetCurPart() const
Return the current part being edited or NULL if none selected.
Define a library symbol object.
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::EditAliasOfPart ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 313 of file dialog_edit_component_in_lib.cpp.

References checkNewAlias(), DisplayError(), LIB_ID::FixIllegalChars(), LIB_EDIT_FRAME::GetAliasName(), GetChars(), WX_TEXT_ENTRY_DIALOG::GetValue(), LIB_ID::ID_SCH, m_Parent, and DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PartAliasListCtrl.

314 {
315  int sel = m_PartAliasListCtrl->GetSelection();
316 
317  if( sel == wxNOT_FOUND )
318  return;
319 
320  wxString aliasname = m_PartAliasListCtrl->GetString( sel );
321 
322  if( aliasname.CmpNoCase( m_Parent->GetAliasName() ) == 0 )
323  {
324  wxString msg;
325  msg.Printf( _( "Current alias \"%s\" cannot be edited." ), GetChars( aliasname ) );
326  DisplayError( this, msg );
327  return;
328  }
329 
330  WX_TEXT_ENTRY_DIALOG dlg( this, _( "New Alias:" ), _( "Symbol alias:" ), aliasname );
331 
332  if( dlg.ShowModal() != wxID_OK )
333  return; // cancelled by user
334 
335  aliasname = LIB_ID::FixIllegalChars( dlg.GetValue(), LIB_ID::ID_SCH );
336 
337  if( checkNewAlias( aliasname ) )
338  m_PartAliasListCtrl->SetString( sel, aliasname );
339 }
static UTF8 FixIllegalChars(const UTF8 &aLibItemName, LIB_ID_TYPE aType)
Replace illegal LIB_ID item name characters with underscores &#39;_&#39;.
Definition: lib_id.cpp:374
const wxString & GetAliasName()
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
void DisplayError(wxWindow *parent, const wxString &text, int displaytime)
Function DisplayError displays an error or warning message box with aMessage.
Definition: confirm.cpp:185
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::EditOneFootprintFilter ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 568 of file dialog_edit_component_in_lib.cpp.

References WX_TEXT_ENTRY_DIALOG::GetValue(), and DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_FootprintFilterListBox.

569 {
570  int idx = m_FootprintFilterListBox->GetSelection();
571 
572  if( idx < 0 )
573  return;
574 
575  wxString filter = m_FootprintFilterListBox->GetStringSelection();
576 
577  WX_TEXT_ENTRY_DIALOG dlg( this, wxEmptyString, _( "Edit footprint filter" ), filter );
578 
579  if( dlg.ShowModal() != wxID_OK )
580  return; // Aborted by user
581 
582  filter = dlg.GetValue();
583 
584  if( filter.IsEmpty() )
585  return; // do not accept blank filter.
586 
587  m_FootprintFilterListBox->SetString( idx, filter );
588 }
bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 205 of file dialog_shim.cpp.

Referenced by DIALOG_PRINT_USING_PRINTER::InitValues(), and DIALOG_SHIM::IsQuasiModal().

206 {
207  // so we can do logging of this state change:
208 
209 #if defined(DEBUG)
210  const char* type_id = typeid( *this ).name();
211  printf( "wxDialog %s: %s\n", type_id, enable ? "enabled" : "disabled" );
212 #endif
213 
214  return wxDialog::Enable( enable );
215 }
void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 610 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 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_FOOTPRINTS::OnQuit(), DIALOG_CHOOSE_COMPONENT::OnSchViewDClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp(), and DIALOG_SHIM::~DIALOG_SHIM().

611 {
612  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
613  // handle validation in the same way as other dialogs.
614  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
615  return;
616 
617  SetReturnCode( retCode );
618 
619  if( !IsQuasiModal() )
620  {
621  wxFAIL_MSG( wxT( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal wasn't called" ) );
622  return;
623  }
624 
625  m_qmodal_showing = false;
626 
627  if( m_qmodal_loop )
628  {
629  if( m_qmodal_loop->IsRunning() )
630  m_qmodal_loop->Exit( 0 );
631  else
632  m_qmodal_loop->ScheduleExit( 0 );
633 
634  m_qmodal_loop = NULL;
635  }
636 
639 
640  Show( false );
641 }
bool m_qmodal_showing
Definition: dialog_shim.h:155
EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:154
bool IsQuasiModal()
Definition: dialog_shim.h:103
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:156
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_3D_VIEW_OPTIONS::DIALOG_3D_VIEW_OPTIONS(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), 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_LINE_STYLE::DIALOG_EDIT_LINE_STYLE(), DIALOG_EESCHEMA_OPTIONS::DIALOG_EESCHEMA_OPTIONS(), DIALOG_ENUM_PADS::DIALOG_ENUM_PADS(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL(), 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_PADS_MASK_CLEARANCE::DIALOG_PADS_MASK_CLEARANCE(), 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(), DIALOG_SHIM::IsQuasiModal(), 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(), DIALOG_EDIT_FPTEXT::OnInitDlg(), DIALOG_SET_GRID::OnInitDlg(), DIALOG_PCB_TEXT_PROPERTIES::OnInitDlg(), DIALOG_PRINT_FOR_MODEDIT::OnInitDlg(), DIALOG_MODEDIT_FP_BODY_ITEM_PROPERTIES::OnInitDlg(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), DIALOG_FOOTPRINT_FP_EDITOR::OnInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_SPICE_MODEL::onInitDlg(), DIALOG_FOOTPRINT_BOARD_EDITOR::OnInitDlg(), DIALOG_PRINT_USING_PRINTER::OnInitDlg(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnInitDlg(), TARGET_PROPERTIES_DIALOG_EDITOR::TARGET_PROPERTIES_DIALOG_EDITOR(), DIALOG_SIGNAL_LIST::TransferDataToWindow(), and DIALOG_UPDATE_FIELDS::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 }
int DIALOG_SHIM::HorizPixelsFromDU ( int  x)
protectedinherited

Convert an integer number of dialog units to pixels, horizontally.

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 125 of file dialog_shim.cpp.

Referenced by DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT(), and DIALOG_SHIM::IsQuasiModal().

126 {
127  wxSize sz( x, 0 );
128  return ConvertDialogToPixels( sz ).x;
129 }
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::InitBasicPanel ( )
private

Definition at line 153 of file dialog_edit_component_in_lib.cpp.

References Format(), LIB_EDIT_FRAME::GetCurPart(), LIB_PART::GetPinNameOffset(), LIB_EDIT_FRAME::GetShowDeMorgan(), LIB_PART::GetUnitCount(), LIB_PART::IsPower(), DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_AsConvertButt, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_OptionPartsLocked, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_OptionPower, m_Parent, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PinsNameInsideButt, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_SelNumberOfUnits, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_SetSkew, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ShowPinNameButt, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ShowPinNumButt, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_staticTextNbUnits, MAX_UNIT_COUNT_PER_PACKAGE, LIB_PART::ShowPinNames(), LIB_PART::ShowPinNumbers(), and LIB_PART::UnitsLocked().

Referenced by initDlg().

154 {
155  LIB_PART* component = m_Parent->GetCurPart();
156 
157  if( m_Parent->GetShowDeMorgan() )
158  m_AsConvertButt->SetValue( true );
159 
160  int maxUnits = MAX_UNIT_COUNT_PER_PACKAGE;
161  m_SelNumberOfUnits->SetRange (1, maxUnits );
162 
164  _( "Number of Units (max allowed %d)" ), maxUnits ) );
165 
166 
167  /* Default values for a new component. */
168  if( component == NULL )
169  {
170  m_ShowPinNumButt->SetValue( true );
171  m_ShowPinNameButt->SetValue( true );
172  m_PinsNameInsideButt->SetValue( true );
173  m_SelNumberOfUnits->SetValue( 1 );
174  m_SetSkew->SetValue( 40 );
175  m_OptionPower->SetValue( false );
176  m_OptionPartsLocked->SetValue( false );
177  return;
178  }
179 
180  m_ShowPinNumButt->SetValue( component->ShowPinNumbers() );
181  m_ShowPinNameButt->SetValue( component->ShowPinNames() );
182  m_PinsNameInsideButt->SetValue( component->GetPinNameOffset() != 0 );
183  m_SelNumberOfUnits->SetValue( component->GetUnitCount() );
184  m_SetSkew->SetValue( component->GetPinNameOffset() );
185  m_OptionPower->SetValue( component->IsPower() );
186  m_OptionPartsLocked->SetValue( component->UnitsLocked() && component->GetUnitCount() > 1 );
187 }
bool UnitsLocked() const
Check whether part units are interchangeable.
int GetPinNameOffset()
bool IsPower() const
#define MAX_UNIT_COUNT_PER_PACKAGE
The maximum number of units per package.
Definition: eeschema_id.h:48
bool ShowPinNames()
bool ShowPinNumbers()
LIB_PART * GetCurPart() const
Return the current part being edited or NULL if none selected.
Define a library symbol object.
int GetUnitCount() const
bool GetShowDeMorgan()
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
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::initDlg ( )
private

Definition at line 66 of file dialog_edit_component_in_lib.cpp.

References LIB_EDIT_FRAME::GetAliasName(), LIB_PART::GetAliasNames(), GetChars(), LIB_EDIT_FRAME::GetCurPart(), LIB_PART::GetFootprints(), LIB_PART::GetName(), InitBasicPanel(), InitPanelDoc(), m_AliasLocation, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonDeleteAllFootprintFilter, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonDeleteOneFootprintFilter, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_buttonEditOneFootprintFilter, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_FootprintFilterListBox, m_lastOpenedPage, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_NoteBook, m_Parent, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PartAliasListCtrl, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_staticTextAlias, and DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_stdSizerButtonOK.

Referenced by DIALOG_EDIT_COMPONENT_IN_LIBRARY().

67 {
68  m_AliasLocation = -1;
69 
70  LIB_PART* component = m_Parent->GetCurPart();
71 
72  if( component == NULL )
73  {
74  SetTitle( _( "Library Component Properties" ) );
75  return;
76  }
77 
78  wxString title, staticText;
79  bool isRoot = m_Parent->GetAliasName().CmpNoCase( component->GetName() ) == 0;
80 
81  if( !isRoot )
82  {
83  title.Printf( _( "Properties for %s (alias of %s)" ),
85  GetChars( component->GetName() ) );
86 
87  staticText.Printf( _( "Alias List of %s" ), GetChars( component->GetName() ) );
88  m_staticTextAlias->SetLabelText( staticText );
89  }
90  else
91  title.Printf( _( "Properties for %s" ), GetChars( component->GetName() ) );
92 
93  SetTitle( title );
94  InitPanelDoc();
96 
97  // The component's alias list contains all names (including the root). The UI list
98  // contains only aliases, so exclude the root.
99  m_PartAliasListCtrl->Append( component->GetAliasNames( false ) );
100 
101  // Note: disabling the delete buttons gives us no opportunity to tell the user
102  // why they're disabled. Leave them enabled and bring up an error message instead.
103 
104  /* Read the Footprint Filter list */
105  m_FootprintFilterListBox->Append( component->GetFootprints() );
106 
107  if( component->GetFootprints().GetCount() == 0 )
108  {
109  m_ButtonDeleteAllFootprintFilter->Enable( false );
110  m_ButtonDeleteOneFootprintFilter->Enable( false );
111  m_buttonEditOneFootprintFilter->Enable( false );
112  }
113 
114  m_NoteBook->SetSelection( m_lastOpenedPage );
115 
116  m_stdSizerButtonOK->SetDefault();
117 }
LIB_PART * GetCurPart() const
Return the current part being edited or NULL if none selected.
Define a library symbol object.
wxArrayString & GetFootprints()
const wxString & GetAliasName()
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
wxArrayString GetAliasNames(bool aIncludeRoot=true) const
const wxString & GetName() const
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::InitPanelDoc ( )
private

Definition at line 126 of file dialog_edit_component_in_lib.cpp.

References LIB_PART::GetAlias(), LIB_EDIT_FRAME::GetAliasName(), LIB_EDIT_FRAME::GetCurPart(), LIB_ALIAS::GetDescription(), LIB_ALIAS::GetDocFileName(), LIB_ALIAS::GetKeyWords(), DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_DocCtrl, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_DocfileCtrl, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_KeywordsCtrl, and m_Parent.

Referenced by initDlg().

127 {
128  LIB_ALIAS* alias;
129  LIB_PART* component = m_Parent->GetCurPart();
130 
131  if( component == NULL )
132  return;
133 
134  wxString aliasname = m_Parent->GetAliasName();
135 
136  if( aliasname.IsEmpty() )
137  return;
138 
139  alias = component->GetAlias( aliasname );
140 
141  if( alias != NULL )
142  {
143  m_DocCtrl->SetValue( alias->GetDescription() );
144  m_KeywordsCtrl->SetValue( alias->GetKeyWords() );
145  m_DocfileCtrl->SetValue( alias->GetDocFileName() );
146  }
147 }
Part library alias object definition.
LIB_ALIAS * GetAlias(size_t aIndex)
LIB_PART * GetCurPart() const
Return the current part being edited or NULL if none selected.
wxString GetDescription() const
Define a library symbol object.
wxString GetDocFileName() const
const wxString & GetAliasName()
wxString GetKeyWords() const
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, KIWAY_HOLDER::Prj(), and KIWAY_HOLDER::SetKiway().

Referenced by SCH_EDIT_FRAME::AppendSchematic(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_CHOOSE_COMPONENT::ConstructRightPanel(), PCB_BASE_FRAME::CreateAndShow3D_Frame(), CVPCB_MAINFRAME::CreateScreenCmp(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT(), DIALOG_SHIM::DIALOG_SHIM(), EDIT_TOOL::editFootprintInFpEditor(), SCH_EDIT_FRAME::EditSheet(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), LIB_MANAGER::GetBufferedPart(), LIB_MANAGER::getLibraryBuffer(), FOOTPRINT_EDIT_FRAME::GetPlotSettings(), PCB_EDIT_FRAME::importFile(), SCH_EDIT_FRAME::importFile(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::initBuffers(), SCH_EDIT_FRAME::KiwayMailIn(), KIWAY_PLAYER::language_change(), CVPCB_MAINFRAME::LoadFootprintFiles(), KIWAY_PLAYER::OnChangeIconsOptions(), CVPCB_MAINFRAME::OnEditFootprintLibraryTable(), SCH_BASE_FRAME::OnEditSymbolLibTable(), DIALOG_CHOOSE_COMPONENT::OnIdle(), KICAD_MANAGER_FRAME::OnImportEagleFiles(), 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(), FOOTPRINT_WIZARD_FRAME::ReCreateVToolbar(), LIB_EDIT_FRAME::refreshSchematic(), SCH_EDIT_FRAME::SaveEEFile(), CVPCB_MAINFRAME::SaveFootprintAssociation(), SCH_BASE_FRAME::SelectComponentFromLibBrowser(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), CVPCB_MAINFRAME::SendMessageToEESCHEMA(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::SendMessageToPCBNEW(), SCH_EDIT_FRAME::sendNetlist(), FOOTPRINT_EDIT_FRAME::SetPlotSettings(), FOOTPRINT_VIEWER_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(), LIB_MANAGER::UpdatePart(), and DIALOG_EXCHANGE_FOOTPRINTS::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_EDIT_COMPONENT_IN_LIBRARY::OnCancelClick ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 120 of file dialog_edit_component_in_lib.cpp.

121 {
122  EndModal( wxID_CANCEL );
123 }
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnOkClick ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE.

Definition at line 190 of file dialog_edit_component_in_lib.cpp.

References ChangeNbUnitsPerPackage(), LIB_PART::GetAlias(), LIB_EDIT_FRAME::GetAliasName(), LIB_EDIT_FRAME::GetCurPart(), LIB_PART::GetFootprints(), LIB_PART::GetName(), LIB_PART::GetPinNameOffset(), LIB_EDIT_FRAME::GetShowDeMorgan(), LIB_PART::GetUnitCount(), LIB_PART::LockUnits(), DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_AsConvertButt, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_DocCtrl, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_DocfileCtrl, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_FootprintFilterListBox, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_KeywordsCtrl, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_OptionPartsLocked, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_OptionPower, m_Parent, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PartAliasListCtrl, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PinsNameInsideButt, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_SelNumberOfUnits, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_SetSkew, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ShowPinNameButt, DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ShowPinNumButt, LIB_EDIT_FRAME::SaveCopyInUndoList(), LIB_PART::SetAliases(), LIB_ALIAS::SetDescription(), LIB_ALIAS::SetDocFileName(), LIB_ALIAS::SetKeyWords(), LIB_PART::SetNormal(), LIB_PART::SetPinNameOffset(), LIB_PART::SetPower(), LIB_EDIT_FRAME::SetShowDeMorgan(), LIB_PART::SetShowPinNames(), LIB_PART::SetShowPinNumbers(), and SetUnsetConvert().

191 {
192  /* Update the doc, keyword and doc filename strings */
193  LIB_ALIAS* alias;
194  LIB_PART* component = m_Parent->GetCurPart();
195 
196  if( component == NULL )
197  {
198  EndModal( wxID_CANCEL );
199  return;
200  }
201 
202  m_Parent->SaveCopyInUndoList( component );
203 
204  alias = component->GetAlias( m_Parent->GetAliasName() );
205 
206  wxCHECK_RET( alias != NULL,
207  wxT( "Alias \"" ) + m_Parent->GetAliasName() + wxT( "\" of symbol \"" ) +
208  component->GetName() + wxT( "\" does not exist." ) );
209 
210  alias->SetDescription( m_DocCtrl->GetValue() );
211  alias->SetKeyWords( m_KeywordsCtrl->GetValue() );
212  alias->SetDocFileName( m_DocfileCtrl->GetValue() );
213 
214  // The UI list contains only aliases (ie: not the root's name), while the component's
215  // alias list contains all names (including the root).
216  wxArrayString aliases = m_PartAliasListCtrl->GetStrings();
217  aliases.Add( component->GetName() );
218  component->SetAliases( aliases );
219 
220  int unitCount = m_SelNumberOfUnits->GetValue();
221  ChangeNbUnitsPerPackage( unitCount );
222 
223  if( m_AsConvertButt->GetValue() )
224  {
225  if( !m_Parent->GetShowDeMorgan() )
226  {
227  m_Parent->SetShowDeMorgan( true );
228  SetUnsetConvert();
229  }
230  }
231  else
232  {
233  if( m_Parent->GetShowDeMorgan() )
234  {
235  m_Parent->SetShowDeMorgan( false );
236  SetUnsetConvert();
237  }
238  }
239 
240  component->SetShowPinNumbers( m_ShowPinNumButt->GetValue() );
241  component->SetShowPinNames( m_ShowPinNameButt->GetValue() );
242 
243  if( m_PinsNameInsideButt->GetValue() == false )
244  component->SetPinNameOffset( 0 ); // pin text outside the body (name is on the pin)
245  else
246  {
247  component->SetPinNameOffset( m_SetSkew->GetValue() );
248  // Ensure component->m_TextInside != 0, because the meaning is "text outside".
249  if( component->GetPinNameOffset() == 0 )
250  component->SetPinNameOffset( 20 ); // give a reasonnable value
251  }
252 
253  if( m_OptionPower->GetValue() == true )
254  component->SetPower();
255  else
256  component->SetNormal();
257 
258  /* Set the option "Units locked".
259  * Obviously, cannot be true if there is only one part */
260  component->LockUnits( m_OptionPartsLocked->GetValue() );
261 
262  if( component->GetUnitCount() <= 1 )
263  component->LockUnits( false );
264 
265  /* Update the footprint filter list */
266  component->GetFootprints().Clear();
267  component->GetFootprints() = m_FootprintFilterListBox->GetStrings();
268 
269  EndModal( wxID_OK );
270 }
Part library alias object definition.
void SetPower()
int GetPinNameOffset()
LIB_ALIAS * GetAlias(size_t aIndex)
void SetDocFileName(const wxString &aDocFileName)
void SetShowDeMorgan(bool show)
LIB_PART * GetCurPart() const
Return the current part being edited or NULL if none selected.
Define a library symbol object.
void SetDescription(const wxString &aDescription)
wxArrayString & GetFootprints()
int GetUnitCount() const
void SetAliases(const wxArrayString &aAliasList)
const wxString & GetAliasName()
bool GetShowDeMorgan()
void SetShowPinNumbers(bool aShow)
Set or clear the pin number visibility flag.
void SetKeyWords(const wxString &aKeyWords)
void SaveCopyInUndoList(EDA_ITEM *ItemToCopy, UNDO_REDO_T undoType=UR_LIBEDIT)
Create a copy of the current component, and save it in the undo list.
const wxString & GetName() const
void SetShowPinNames(bool aShow)
Set or clear the pin name visibility flag.
void SetPinNameOffset(int aOffset)
Set the offset in mils of the pin name text from the pin symbol.
void LockUnits(bool aLockUnits)
Set interchangeable the property for part units.
void SetNormal()
void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 271 of file dialog_shim.cpp.

References DIALOG_SHIM::m_fixupsRun, and recursiveDescent().

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

272 {
273  if( !m_fixupsRun )
274  {
275 #if DLGSHIM_SELECT_ALL_IN_TEXT_CONTROLS
276  const bool selectAllInTextCtrls = true;
277 #else
278  const bool selectAllInTextCtrls = false;
279 #endif
280  wxWindow* firstTextCtrl = NULL;
281  wxWindow* windowWithFocus = NULL;
282 
283  recursiveDescent( GetChildren(), selectAllInTextCtrls, firstTextCtrl,
284  windowWithFocus );
285 
286 #if DLGSHIM_USE_SETFOCUS
287  // While it would be nice to honour any focus already set (which was
288  // recorded in windowWithFocus), the reality is that it's currently wrong
289  // far more often than it's right.
290  // So just focus on the first text control if we have one; otherwise the
291  // focus on the dialog itself, which will at least allow esc, return, etc.
292  // to function.
293  if( firstTextCtrl )
294  firstTextCtrl->SetFocus();
295  else
296  SetFocus();
297 #endif
298 
299 #ifdef __WXMAC__
300  fixOSXCancelButtonIssue( this );
301 #endif
302 
303  m_fixupsRun = true;
304  }
305 
306  event.Skip();
307 }
static void recursiveDescent(wxWindowList &children, const bool selectTextInTextCtrls, wxWindow *&firstTextCtrl, wxWindow *&windowWithFocus)
bool m_fixupsRun
Definition: dialog_shim.h:149
void DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnUpdateInterchangeableUnits ( wxUpdateUIEvent &  event)
overrideprivatevirtual
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::AppendSchematic(), PCB_EDIT_FRAME::ArchiveModulesOnBoard(), DIALOG_SYMBOL_REMAP::backupProject(), LIB_VIEW_FRAME::BestZoom(), DIALOG_FOOTPRINT_FP_EDITOR::BrowseAndAdd3DShapeFile(), DIALOG_FOOTPRINT_BOARD_EDITOR::BrowseAndAdd3DShapeFile(), BrowseAndSelectDocFile(), DIALOG_SYMBOL_LIB_TABLE::browseLibrariesHandler(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_FOOTPRINT_FP_EDITOR::Cfg3DPath(), DIALOG_FOOTPRINT_BOARD_EDITOR::Cfg3DPath(), checkNewAlias(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), PCB_BASE_EDIT_FRAME::CreateNewLibrary(), DIALOG_PLOT_SCHEMATIC::createPlotFileName(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), FOOTPRINT_EDIT_FRAME::DeleteModuleFromCurrentLibrary(), DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_FOOTPRINT_BOARD_EDITOR::DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::DIALOG_FOOTPRINT_FP_EDITOR(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_SYMBOL_LIB_TABLE::DIALOG_SYMBOL_LIB_TABLE(), DIALOG_SYMBOL_REMAP::DIALOG_SYMBOL_REMAP(), LIB_VIEW_FRAME::DisplayLibInfos(), LIB_EDIT_FRAME::DisplayLibInfos(), SCH_BASE_FRAME::DisplayListComponentsInLib(), PCB_EDIT_FRAME::doAutoSave(), DIALOG_FOOTPRINT_FP_EDITOR::Edit3DShapeFileName(), DIALOG_FOOTPRINT_BOARD_EDITOR::Edit3DShapeFileName(), SCH_EDIT_FRAME::EditSheet(), PCB_EDIT_FRAME::Export_IDF3(), PCB_EDIT_FRAME::Files_io_from_id(), NETLIST_DIALOG::GenNetlist(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), LIB_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), FOOTPRINT_EDIT_FRAME::GetCurrentLib(), SCH_BASE_FRAME::GetLibAlias(), SCH_BASE_FRAME::GetLibPart(), FOOTPRINT_EDIT_FRAME::getLibPath(), LIB_EDIT_FRAME::getLibraryFileName(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), DIALOG_BOM::getPluginFileName(), LIB_VIEW_FRAME::getSelectedAlias(), FP_THREAD_IFACE::GetTable(), PCB_EDIT_FRAME::importFile(), SCH_EDIT_FRAME::importFile(), DIALOG_FOOTPRINT_FP_EDITOR::initModeditProperties(), DIALOG_FOOTPRINT_BOARD_EDITOR::InitModeditProperties(), PCB_EDIT_FRAME::InstallNetlistFrame(), SCH_EDIT_FRAME::IsSearchCacheObsolete(), KIWAY_HOLDER::Kiway(), SCH_EDIT_FRAME::Load_Component(), SCH_EDIT_FRAME::LoadCmpToFootprintLinkFile(), LIB_EDIT_FRAME::LoadComponentFromCurrentLib(), CVPCB_MAINFRAME::LoadFootprintFiles(), DIALOG_SPICE_MODEL::loadLibrary(), LIB_EDIT_FRAME::LoadOneSymbol(), CVPCB_MAINFRAME::LoadProjectFile(), SCH_EDIT_FRAME::LoadProjectFile(), PCB_EDIT_FRAME::LoadProjectSettings(), DIALOG_DRC_CONTROL::makeValidFileNameReport(), FOOTPRINT_VIEWER_FRAME::OnActivate(), DIALOG_GENCAD_EXPORT_OPTIONS::onBrowse(), DIALOG_DRC_CONTROL::OnButtonBrowseRptFileClick(), DIALOG_EDIT_COMPONENTS_LIBID::onClickOrphansButton(), CVPCB_MAINFRAME::OnEditFootprintLibraryTable(), SCH_BASE_FRAME::OnEditSymbolLibTable(), DIALOG_GENDRILL::OnGenReportFile(), DIALOG_CHOOSE_COMPONENT::OnIdle(), SCH_EDIT_FRAME::OnImportProject(), PCB_EDIT_FRAME::OnLeftClick(), DIALOG_NETLIST::OnOpenNetlistClick(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_SVG_PRINT::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), LIB_EDIT_FRAME::OnPlotCurrentComponent(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), SCH_EDIT_FRAME::OnRightClick(), DIALOG_BOM::OnRunPlugin(), SCH_EDIT_FRAME::OnSaveProject(), DIALOG_CHOOSE_COMPONENT::OnSchViewPaint(), DIALOG_SPICE_MODEL::onSelectLibrary(), LIB_VIEW_FRAME::OnSelectSymbol(), 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(), DIALOG_CHOOSE_COMPONENT::PopulateFootprintSelector(), SCH_EDIT_FRAME::Process_Config(), PCB_EDIT_FRAME::Process_Config(), 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(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), SCH_EDIT_FRAME::SaveEEFile(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), LIB_EDIT_FRAME::saveLibrary(), LIB_EDIT_FRAME::SaveOneSymbol(), CVPCB_MAINFRAME::SaveProjectFile(), SCH_EDIT_FRAME::SaveProjectSettings(), PCB_EDIT_FRAME::SaveProjectSettings(), SCH_BASE_FRAME::saveSymbolLibTables(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), SCH_BASE_FRAME::SelectComponentFromLibrary(), PCB_BASE_FRAME::SelectLibrary(), SCH_BASE_FRAME::SelectLibraryFromList(), LIB_EDIT_FRAME::selectSymLibTable(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), LIB_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), LIB_EDIT_FRAME::SetCurPart(), DIALOG_CHOOSE_COMPONENT::ShowFootprintFor(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), LIB_MANAGER::symTable(), EDA_3D_VIEWER::takeScreenshot(), SIM_PLOT_FRAME::updateNetlistExporter(), SCH_SCREEN::UpdateSymbolLinks(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), FOOTPRINT_EDIT_FRAME::updateTitle(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_FOOTPRINT_BOARD_EDITOR::~DIALOG_FOOTPRINT_BOARD_EDITOR(), and DIALOG_FOOTPRINT_FP_EDITOR::~DIALOG_FOOTPRINT_FP_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:142
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(), KIWAY_HOLDER::Kiway(), 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
Definition: DXF_plotter.cpp:61
void DIALOG_SHIM::SetSizeInDU ( int  x,
int  y 
)
protectedinherited

Set the dialog to the given dimensions in "dialog units".

These are units equivalent to 4* the average character width and 8* the average character height, allowing a dialog to be sized in a way that scales it with the system font.

Definition at line 118 of file dialog_shim.cpp.

Referenced by DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT(), DIALOG_EDIT_COMPONENTS_LIBID::DIALOG_EDIT_COMPONENTS_LIBID(), DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SYMBOL_LIB_TABLE::DIALOG_SYMBOL_LIB_TABLE(), HOTKEYS_EDITOR_DIALOG::HOTKEYS_EDITOR_DIALOG(), HTML_MESSAGE_BOX::HTML_MESSAGE_BOX(), DIALOG_SHIM::IsQuasiModal(), DIALOG_LAYERS_SETUP::OnInitDialog(), and HTML_MESSAGE_BOX::SetDialogSizeInDU().

119 {
120  wxSize sz( x, y );
121  SetSize( ConvertDialogToPixels( sz ) );
122 }
bool DIALOG_EDIT_COMPONENT_IN_LIBRARY::SetUnsetConvert ( )
private

Definition at line 428 of file dialog_edit_component_in_lib.cpp.

References LIB_EDIT_FRAME::GetCurPart(), LIB_EDIT_FRAME::GetShowDeMorgan(), LIB_PART::HasConversion(), IsOK(), m_Parent, LIB_EDIT_FRAME::OnModify(), LIB_PART::SetConversion(), and LIB_EDIT_FRAME::SetShowDeMorgan().

Referenced by OnOkClick().

429 {
430  LIB_PART* component = m_Parent->GetCurPart();
431 
432  if( component == NULL || ( m_Parent->GetShowDeMorgan() == component->HasConversion() ) )
433  return false;
434 
435  if( m_Parent->GetShowDeMorgan() )
436  {
437  if( !IsOK( this, _( "Add new pins for alternate body style ( DeMorgan ) to component?" ) ) )
438  return false;
439  }
440  else if( component->HasConversion() )
441  {
442  if( !IsOK( this, _( "Delete alternate body style (DeMorgan) draw items from component?" ) ) )
443  {
444  m_Parent->SetShowDeMorgan( true );
445  return false;
446  }
447  }
448 
449  component->SetConversion( m_Parent->GetShowDeMorgan() );
450  m_Parent->OnModify();
451 
452  return true;
453 }
void SetConversion(bool aSetConvert)
Set or clear the alternate body style (DeMorgan) for the part.
bool HasConversion() const
Test if part has more than one body conversion type (DeMorgan).
void OnModify()
Must be called after a schematic change in order to set the "modify" flag of the current screen...
void SetShowDeMorgan(bool show)
LIB_PART * GetCurPart() const
Return the current part being edited or NULL if none selected.
Define a library symbol object.
bool GetShowDeMorgan()
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Function IsOK displays a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:233
bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 146 of file dialog_shim.cpp.

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

Referenced by DisplayHotkeyList(), DIALOG_SHIM::EndQuasiModal(), InvokeDialogERC(), DIALOG_SHIM::IsQuasiModal(), DIALOG_SCH_FIND::OnCancel(), DIALOG_DRC_CONTROL::OnLeftDClickClearance(), DIALOG_DRC_CONTROL::OnLeftDClickUnconnected(), DIALOG_DRC_CONTROL::OnPopupMenu(), DIALOG_EXCHANGE_FOOTPRINTS::OnQuit(), POSITION_RELATIVE_TOOL::PositionRelative(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), SCH_COMPONENT::SetPosition(), DRC::ShowDRCDialog(), and DIALOG_SHIM::ShowQuasiModal().

147 {
148  bool ret;
149  const char* hash_key;
150 
151  if( m_hash_key.size() )
152  {
153  // a special case like EDA_LIST_DIALOG, which has multiple uses.
154  hash_key = m_hash_key.c_str();
155  }
156  else
157  {
158  hash_key = typeid(*this).name();
159  }
160 
161  // Show or hide the window. If hiding, save current position and size.
162  // If showing, use previous position and size.
163  if( show )
164  {
165 #ifndef __WINDOWS__
166  wxDialog::Raise(); // Needed on OS X and some other window managers (i.e. Unity)
167 #endif
168  ret = wxDialog::Show( show );
169 
170  // classname is key, returns a zeroed out default EDA_RECT if none existed before.
171  EDA_RECT savedDialogRect = class_map[ hash_key ];
172 
173  if( savedDialogRect.GetSize().x != 0 && savedDialogRect.GetSize().y != 0 )
174  {
175  SetSize( savedDialogRect.GetPosition().x,
176  savedDialogRect.GetPosition().y,
177  std::max( wxDialog::GetSize().x, savedDialogRect.GetSize().x ),
178  std::max( wxDialog::GetSize().y, savedDialogRect.GetSize().y ),
179  0 );
180  }
181 
182  // Be sure that the dialog appears in a visible area
183  // (the dialog position might have been stored at the time when it was
184  // shown on another display)
185  if( wxDisplay::GetFromWindow( this ) == wxNOT_FOUND )
186  Centre();
187  }
188  else
189  {
190  // Save the dialog's position & size before hiding, using classname as key
191  class_map[ hash_key ] = EDA_RECT( wxDialog::GetPosition(), wxDialog::GetSize() );
192 
193 #ifdef __WXMAC__
194  if ( m_eventLoop )
195  m_eventLoop->Exit( GetReturnCode() ); // Needed for APP-MODAL dlgs on OSX
196 #endif
197 
198  ret = wxDialog::Show( show );
199  }
200 
201  return ret;
202 }
const wxSize GetSize() const
Definition: eda_rect.h:101
std::string m_hash_key
Definition: dialog_shim.h:151
static RECT_MAP class_map
const wxPoint GetPosition() const
Definition: eda_rect.h:113
#define max(a, b)
Definition: auxiliary.h:86
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 558 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 SCH_EDIT_FRAME::EditComponent(), SCH_EDIT_FRAME::EditComponentFieldText(), LIB_EDIT_FRAME::EditField(), EDIT_TOOL::ExchangeFootprints(), PCB_EDIT_FRAME::InstallExchangeModuleFrame(), LIB_EDIT_FRAME::InstallFieldsEditorDialog(), SCH_EDIT_FRAME::InstallHierarchyFrame(), InvokeDialogEditComponentsLibId(), InvokeDialogUpdateFields(), SCH_EDIT_FRAME::OnLaunchBomManager(), SCH_EDIT_FRAME::OnRemapSymbols(), LIB_VIEW_FRAME::OnSelectSymbol(), SCH_EDIT_FRAME::OpenProjectFiles(), and SCH_BASE_FRAME::SelectComponentFromLibrary().

559 {
560  // This is an exception safe way to zero a pointer before returning.
561  // Yes, even though DismissModal() clears this first normally, this is
562  // here in case there's an exception before the dialog is dismissed.
563  struct NULLER
564  {
565  void*& m_what;
566  NULLER( void*& aPtr ) : m_what( aPtr ) {}
567  ~NULLER() { m_what = 0; } // indeed, set it to NULL on destruction
568  } clear_this( (void*&) m_qmodal_loop );
569 
570  // release the mouse if it's currently captured as the window having it
571  // will be disabled when this dialog is shown -- but will still keep the
572  // capture making it impossible to do anything in the modal dialog itself
573  wxWindow* win = wxWindow::GetCapture();
574  if( win )
575  win->ReleaseMouse();
576 
577  // Get the optimal parent
578  wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
579 
580  // Show the optimal parent
581  DBG( if( parent ) printf( "%s: optimal parent: %s\n", __func__, typeid(*parent).name() );)
582 
583  wxASSERT_MSG( !m_qmodal_parent_disabler,
584  wxT( "Caller using ShowQuasiModal() twice on same window?" ) );
585 
586  // quasi-modal: disable only my "optimal" parent
588 
589 #ifdef __WXMAC__
590  // Apple in its infinite wisdom will raise a disabled window before even passing
591  // us the event, so we have no way to stop it. Instead, we must set an order on
592  // the windows so that the quasi-modal will be pushed in front of the disabled
593  // window when it is raised.
594  ReparentQuasiModal();
595 #endif
596  Show( true );
597 
598  m_qmodal_showing = true;
599 
600  EVENT_LOOP event_loop;
601 
602  m_qmodal_loop = &event_loop;
603 
604  event_loop.Run();
605 
606  return GetReturnCode();
607 }
bool m_qmodal_showing
Definition: dialog_shim.h:155
EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:154
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:156
Toggle a window&#39;s "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:33
#define DBG(x)
Definition: fctsys.h:33
int DIALOG_SHIM::VertPixelsFromDU ( int  y)
protectedinherited

Convert an integer number of dialog units to pixels, vertically.

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 132 of file dialog_shim.cpp.

Referenced by DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT(), DIALOG_EDIT_COMPONENTS_LIBID::DIALOG_EDIT_COMPONENTS_LIBID(), DIALOG_SHIM::IsQuasiModal(), and DIALOG_LAYERS_SETUP::OnInitDialog().

133 {
134  wxSize sz( 0, y );
135  return ConvertDialogToPixels( sz ).y;
136 }

Member Data Documentation

int DIALOG_EDIT_COMPONENT_IN_LIBRARY::m_AliasLocation

Definition at line 42 of file dialog_edit_component_in_lib.h.

Referenced by initDlg().

wxCheckBox* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_AsConvertButt
protectedinherited
wxButton* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonAddeAlias
protectedinherited
wxButton* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_buttonAddFpF
protectedinherited
wxButton* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_buttonBrowseDocFiles
protectedinherited
wxButton* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonCopyDoc
protectedinherited
wxButton* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonDeleteAllAlias
protectedinherited
wxButton* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonDeleteOneAlias
protectedinherited
wxButton* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ButtonEditAlias
protectedinherited
wxTextCtrl* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_DocCtrl
protectedinherited
wxTextCtrl* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_DocfileCtrl
protectedinherited
bool DIALOG_SHIM::m_fixupsRun
protectedinherited

Definition at line 149 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

wxListBox* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_FootprintFilterListBox
protectedinherited
std::string DIALOG_SHIM::m_hash_key
protectedinherited
wxTextCtrl* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_KeywordsCtrl
protectedinherited
int DIALOG_EDIT_COMPONENT_IN_LIBRARY::m_lastOpenedPage = 0
staticprivate

Definition at line 37 of file dialog_edit_component_in_lib.h.

Referenced by initDlg(), and ~DIALOG_EDIT_COMPONENT_IN_LIBRARY().

wxNotebook* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_NoteBook
protectedinherited
wxCheckBox* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_OptionPower
protectedinherited
wxPanel* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PanelAlias
protectedinherited
wxPanel* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PanelBasic
protectedinherited
wxPanel* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PanelDoc
protectedinherited
wxPanel* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PanelFootprintFilter
protectedinherited
wxListBox* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PartAliasListCtrl
protectedinherited
wxCheckBox* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_PinsNameInsideButt
protectedinherited
EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

Definition at line 154 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
bool DIALOG_EDIT_COMPONENT_IN_LIBRARY::m_RecreateToolbar

Definition at line 41 of file dialog_edit_component_in_lib.h.

Referenced by DIALOG_EDIT_COMPONENT_IN_LIBRARY().

wxSpinCtrl* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_SelNumberOfUnits
protectedinherited
wxSpinCtrl* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_SetSkew
protectedinherited
wxCheckBox* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ShowPinNameButt
protectedinherited
wxCheckBox* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_ShowPinNumButt
protectedinherited
wxStaticLine* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_staticline1
protectedinherited
wxStaticLine* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_staticline3
protectedinherited
wxStaticText* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_staticTextAlias
protectedinherited
wxStaticText* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_staticTextDescription
protectedinherited
wxStaticText* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_staticTextDocFileName
protectedinherited
wxStaticText* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_staticTextFootprints
protectedinherited
wxStaticText* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_staticTextKeywords
protectedinherited
wxStaticText* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_staticTextNbUnits
protectedinherited
wxStaticText* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_staticTextskew
protectedinherited
wxStdDialogButtonSizer* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_stdSizerButton
protectedinherited
wxButton* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_stdSizerButtonCancel
protectedinherited
wxButton* DIALOG_EDIT_COMPONENT_IN_LIBRARY_BASE::m_stdSizerButtonOK
protectedinherited

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