KiCad PCB EDA Suite
LAYERS_MAP_DIALOG Class Reference

Show the Gerber files loaded and allow the user to choose between Gerber layers and pcb layers. More...

#include <dialog_layers_select_to_pcb.h>

Inheritance diagram for LAYERS_MAP_DIALOG:
LAYERS_MAP_DIALOG_BASE DIALOG_SHIM KIWAY_HOLDER

Public Types

enum  HOLDER_TYPE { DIALOG , FRAME , PANEL }
 

Public Member Functions

 LAYERS_MAP_DIALOG (GERBVIEW_FRAME *parent)
 
 ~LAYERS_MAP_DIALOG ()
 
int * GetLayersLookUpTable ()
 
void SetInitialFocus (wxWindow *aWindow)
 Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown. More...
 
int ShowQuasiModal ()
 
void EndQuasiModal (int retCode)
 
bool IsQuasiModal () const
 
bool Show (bool show) override
 
bool Enable (bool enable) override
 
void OnPaint (wxPaintEvent &event)
 
void OnModify ()
 
void SetPosition (const wxPoint &aNewPosition)
 Force the position of the dialog to a new position. More...
 
EDA_UNITS GetUserUnits () const
 
void SetupStandardButtons (std::map< int, wxString > aLabels={})
 
HOLDER_TYPE GetType () const
 
KIWAYKiway () const
 Return a reference to the KIWAY that this object has an opportunity to participate in. More...
 
bool HasKiway () const
 Safety check before asking for the Kiway reference. More...
 
PROJECTPrj () const
 Return a reference to the PROJECT associated with this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 It is only used for debugging, since "this" is not a wxWindow*. More...
 

Static Public Member Functions

static int GetCopperLayersCount ()
 
static bool IsCtrl (int aChar, const wxKeyEvent &e)
 
static bool IsShiftCtrl (int aChar, const wxKeyEvent &e)
 

Protected Member Functions

bool TransferDataFromWindow () override
 
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) const
 Convert an integer number of dialog units to pixels, horizontally. More...
 
int vertPixelsFromDU (int y) const
 Convert an integer number of dialog units to pixels, vertically. More...
 
void resetSize ()
 Clear the existing dialog size and position. More...
 
virtual void OnCharHook (wxKeyEvent &aEvt)
 

Protected Attributes

wxStaticText * m_staticTextLayerSel
 
wxBoxSizer * m_bSizerLayerList
 
wxFlexGridSizer * m_flexLeftColumnBoxSizer
 
wxStaticLine * m_staticlineSep
 
wxFlexGridSizer * m_flexRightColumnBoxSizer
 
wxStaticText * m_staticTextCopperlayerCount
 
wxComboBox * m_comboCopperLayersCount
 
wxButton * m_buttonStore
 
wxButton * m_buttonRetrieve
 
wxButton * m_buttonReset
 
wxStaticLine * m_staticline1
 
wxStdDialogButtonSizer * m_sdbSizerButtons
 
wxButton * m_sdbSizerButtonsOK
 
wxButton * m_sdbSizerButtonsCancel
 
EDA_UNITS m_units
 
std::string m_hash_key
 
bool m_useCalculatedSize
 
bool m_firstPaintEvent
 
wxWindow * m_initialFocusTarget
 
WX_EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 
EDA_BASE_FRAMEm_parentFrame
 
std::vector< wxWindow * > m_tabOrder
 
wxSize m_initialSize
 

Private Member Functions

void initDialog ()
 
void normalizeBrdLayersCount ()
 
void OnBrdLayersCountSelection (wxCommandEvent &event) override
 
void OnSelectLayer (wxCommandEvent &event)
 
void OnStoreSetup (wxCommandEvent &event) override
 
void OnGetSetup (wxCommandEvent &event) override
 
void OnResetClick (wxCommandEvent &event) override
 
int findKnownGerbersLoaded (std::vector< int > &aGerber2KicadMapping)
 Find number of loaded Gerbers where the matching KiCad layer can be identified. More...
 
int findNumAltiumGerbersLoaded (std::vector< int > &aGerber2KicadMapping)
 Find number of loaded Gerbers using Altium file extensions. More...
 
int findNumKiCadGerbersLoaded (std::vector< int > &aGerber2KicadMapping)
 Find number of loaded Gerbers using KiCad naming convention. More...
 
int findNumX2GerbersLoaded (std::vector< int > &aGerber2KicadMapping)
 Find number of loaded Gerbers using X2 File Functions to define layers. More...
 
void _wxFB_OnBrdLayersCountSelection (wxCommandEvent &event)
 
void _wxFB_OnStoreSetup (wxCommandEvent &event)
 
void _wxFB_OnGetSetup (wxCommandEvent &event)
 
void _wxFB_OnResetClick (wxCommandEvent &event)
 
void OnCloseWindow (wxCloseEvent &aEvent)
 Properly handle the wxCloseEvent when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM. More...
 
void OnButton (wxCommandEvent &aEvent)
 Properly handle the default button events when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM. More...
 
void OnGridEditorShown (wxGridEvent &event)
 
void OnGridEditorHidden (wxGridEvent &event)
 
 DECLARE_EVENT_TABLE ()
 

Private Attributes

GERBVIEW_FRAMEm_Parent
 
int m_gerberActiveLayersCount
 
int m_layersLookUpTable [GERBER_DRAWLAYERS_COUNT]
 
int m_buttonTable [int(GERBER_DRAWLAYERS_COUNT)+1]
 
wxStaticText * m_layersList [int(GERBER_DRAWLAYERS_COUNT)+1]
 
KIWAYm_kiway
 
HOLDER_TYPE m_type
 

Static Private Attributes

static int m_exportBoardCopperLayersCount = 2
 

Detailed Description

Show the Gerber files loaded and allow the user to choose between Gerber layers and pcb layers.

Definition at line 39 of file dialog_layers_select_to_pcb.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 39 of file kiway_holder.h.

Constructor & Destructor Documentation

◆ LAYERS_MAP_DIALOG()

LAYERS_MAP_DIALOG::LAYERS_MAP_DIALOG ( GERBVIEW_FRAME parent)

◆ ~LAYERS_MAP_DIALOG()

LAYERS_MAP_DIALOG::~LAYERS_MAP_DIALOG ( )
inline

Definition at line 42 of file dialog_layers_select_to_pcb.h.

42{};

Member Function Documentation

◆ _wxFB_OnBrdLayersCountSelection()

void LAYERS_MAP_DIALOG_BASE::_wxFB_OnBrdLayersCountSelection ( wxCommandEvent &  event)
inlineprivateinherited

Definition at line 48 of file dialog_layers_select_to_pcb_base.h.

48{ OnBrdLayersCountSelection( event ); }
virtual void OnBrdLayersCountSelection(wxCommandEvent &event)

References LAYERS_MAP_DIALOG_BASE::OnBrdLayersCountSelection().

◆ _wxFB_OnGetSetup()

void LAYERS_MAP_DIALOG_BASE::_wxFB_OnGetSetup ( wxCommandEvent &  event)
inlineprivateinherited

Definition at line 50 of file dialog_layers_select_to_pcb_base.h.

50{ OnGetSetup( event ); }
virtual void OnGetSetup(wxCommandEvent &event)

References LAYERS_MAP_DIALOG_BASE::OnGetSetup().

◆ _wxFB_OnResetClick()

void LAYERS_MAP_DIALOG_BASE::_wxFB_OnResetClick ( wxCommandEvent &  event)
inlineprivateinherited

Definition at line 51 of file dialog_layers_select_to_pcb_base.h.

51{ OnResetClick( event ); }
virtual void OnResetClick(wxCommandEvent &event)

References LAYERS_MAP_DIALOG_BASE::OnResetClick().

◆ _wxFB_OnStoreSetup()

void LAYERS_MAP_DIALOG_BASE::_wxFB_OnStoreSetup ( wxCommandEvent &  event)
inlineprivateinherited

Definition at line 49 of file dialog_layers_select_to_pcb_base.h.

49{ OnStoreSetup( event ); }
virtual void OnStoreSetup(wxCommandEvent &event)

References LAYERS_MAP_DIALOG_BASE::OnStoreSetup().

◆ DECLARE_EVENT_TABLE()

DIALOG_SHIM::DECLARE_EVENT_TABLE ( )
privateinherited

◆ Enable()

bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 319 of file dialog_shim.cpp.

320{
321 // so we can do logging of this state change:
322 return wxDialog::Enable( enable );
323}

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 487 of file dialog_shim.cpp.

488{
489 // Hook up validator and transfer data from controls handling so quasi-modal dialogs
490 // handle validation in the same way as other dialogs.
491 if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
492 return;
493
494 SetReturnCode( retCode );
495
496 if( !IsQuasiModal() )
497 {
498 wxFAIL_MSG( wxT( "Either DIALOG_SHIM::EndQuasiModal was called twice, or ShowQuasiModal"
499 "wasn't called" ) );
500 return;
501 }
502
503 if( m_qmodal_loop )
504 {
505 if( m_qmodal_loop->IsRunning() )
506 m_qmodal_loop->Exit( 0 );
507 else
508 m_qmodal_loop->ScheduleExit( 0 );
509
510 m_qmodal_loop = nullptr;
511 }
512
514 m_qmodal_parent_disabler = nullptr;
515
516 Show( false );
517}
bool Show(bool show) override
bool IsQuasiModal() const
Definition: dialog_shim.h:106
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:218
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:215

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

Referenced by EDA_3D_CONTROLLER::Main(), NETLIST_DIALOG::OnAddGenerator(), DIALOG_SHIM::OnButton(), DIALOG_EDIT_SYMBOLS_LIBID::onCancel(), DIALOG_LIB_SYMBOL_PROPERTIES::OnCancelButtonClick(), DIALOG_SYMBOL_PROPERTIES::OnCancelButtonClick(), DIALOG_LIB_EDIT_PIN_TABLE::OnClose(), DIALOG_CHOOSE_FOOTPRINT::OnCloseTimer(), DIALOG_SHIM::OnCloseWindow(), NETLIST_DIALOG::OnDelGenerator(), DIALOG_SYMBOL_PROPERTIES::OnEditLibrarySymbol(), DIALOG_SYMBOL_PROPERTIES::OnEditSymbol(), DIALOG_SYMBOL_PROPERTIES::OnExchangeSymbol(), PCB_ONE_LAYER_SELECTOR::OnLeftGridCellClick(), PCB_ONE_LAYER_SELECTOR::OnRightGridCellClick(), DIALOG_SYMBOL_PROPERTIES::OnUpdateSymbol(), DIALOG_CHOOSE_FOOTPRINT::OnUseBrowser(), DIALOG_PUSH_PAD_PROPERTIES::PadPropertiesAccept(), and DIALOG_SHIM::~DIALOG_SHIM().

◆ findKnownGerbersLoaded()

int LAYERS_MAP_DIALOG::findKnownGerbersLoaded ( std::vector< int > &  aGerber2KicadMapping)
private

Find number of loaded Gerbers where the matching KiCad layer can be identified.

The passed vector<int> will be returned with the same number of elements as there are Gerber files. The indices into it are 1:1 with the loaded Gerber files. Any Gerber that maps will have its entry set to the KiCad PCB layer number. Gerbers that can be identified or which don't map to an equivalent KiCad PCB layer will be set to UNSELECTED_LAYER.

Parameters
aGerber2KicadMappingpassed to return KiCad PCB layer number for each Gerber.
Returns
The number of loaded Gerbers that have Altium extensions.

Definition at line 436 of file dialog_layers_select_to_pcb.cpp.

437{
438 int numKnownGerbers = 0;
439
440 // We can automatically map Gerbers using different techniques. The first thing we
441 // try is to see if any of the loaded Gerbers were created by or use the
442 // Altium/Protel file extensions
443 numKnownGerbers += findNumAltiumGerbersLoaded( aGerber2KicadMapping );
444
445 // Next we check if any of the loaded Gerbers are X2 Gerbers and if they contain
446
447 // layer information in "File Functions". For info about X2 Gerbers see
448 // http://www.ucamco.com/files/downloads/file/81/the_gerber_file_format_specification.pdf
449 numKnownGerbers += findNumX2GerbersLoaded( aGerber2KicadMapping );
450
451 // Finally, check if any of the loaded Gerbers use the KiCad naming conventions
452 numKnownGerbers += findNumKiCadGerbersLoaded( aGerber2KicadMapping );
453
454 return numKnownGerbers;
455}
int findNumX2GerbersLoaded(std::vector< int > &aGerber2KicadMapping)
Find number of loaded Gerbers using X2 File Functions to define layers.
int findNumAltiumGerbersLoaded(std::vector< int > &aGerber2KicadMapping)
Find number of loaded Gerbers using Altium file extensions.
int findNumKiCadGerbersLoaded(std::vector< int > &aGerber2KicadMapping)
Find number of loaded Gerbers using KiCad naming convention.

References findNumAltiumGerbersLoaded(), findNumKiCadGerbersLoaded(), and findNumX2GerbersLoaded().

Referenced by initDialog().

◆ findNumAltiumGerbersLoaded()

int LAYERS_MAP_DIALOG::findNumAltiumGerbersLoaded ( std::vector< int > &  aGerber2KicadMapping)
private

Find number of loaded Gerbers using Altium file extensions.

The passed vector<int> will be returned with the same number of elements as there are Gerber files. The indices into it are 1:1 with the loaded Gerber files. Any Gerber that maps will have its entry set to the KiCad PCB layer number. Gerbers that aren't using Altium extensions or which don't map to an equivalent KiCad PCB layer will be set to UNSELECTED_LAYER.

Parameters
aGerber2KicadMappingpassed to return KiCad PCB layer number for each Gerber.
Returns
The number of loaded Gerbers that have Altium extensions.

Definition at line 458 of file dialog_layers_select_to_pcb.cpp.

459{
460 // The next comment preserves initializer formatting below it
461 // clang-format off
462 // This map contains the known Altium file extensions for Gerbers that we care about,
463 // along with their corresponding KiCad layer
464 std::map<wxString, PCB_LAYER_ID> altiumExt{
465 { wxT( "GTL" ), F_Cu }, // Top copper
466 { wxT( "G1" ), In1_Cu }, // Inner layers 1 - 30
467 { wxT( "G2" ), In2_Cu },
468 { wxT( "G3" ), In3_Cu },
469 { wxT( "G4" ), In4_Cu },
470 { wxT( "G5" ), In5_Cu },
471 { wxT( "G6" ), In6_Cu },
472 { wxT( "G7" ), In7_Cu },
473 { wxT( "G8" ), In8_Cu },
474 { wxT( "G9" ), In9_Cu },
475 { wxT( "G10" ), In10_Cu },
476 { wxT( "G11" ), In11_Cu },
477 { wxT( "G12" ), In12_Cu },
478 { wxT( "G13" ), In13_Cu },
479 { wxT( "G14" ), In14_Cu },
480 { wxT( "G15" ), In15_Cu },
481 { wxT( "G16" ), In16_Cu },
482 { wxT( "G17" ), In17_Cu },
483 { wxT( "G18" ), In18_Cu },
484 { wxT( "G19" ), In19_Cu },
485 { wxT( "G20" ), In20_Cu },
486 { wxT( "G21" ), In21_Cu },
487 { wxT( "G22" ), In22_Cu },
488 { wxT( "G23" ), In23_Cu },
489 { wxT( "G24" ), In24_Cu },
490 { wxT( "G25" ), In25_Cu },
491 { wxT( "G26" ), In26_Cu },
492 { wxT( "G27" ), In27_Cu },
493 { wxT( "G28" ), In28_Cu },
494 { wxT( "G29" ), In29_Cu },
495 { wxT( "G30" ), In30_Cu },
496 { wxT( "GBL" ), B_Cu }, // Bottom copper
497 { wxT( "GTP" ), F_Paste }, // Paste top
498 { wxT( "GBP" ), B_Paste }, // Paste bottom
499 { wxT( "GTO" ), F_SilkS }, // Silkscreen top
500 { wxT( "GBO" ), B_SilkS }, // Silkscreen bottom
501 { wxT( "GTS" ), F_Mask }, // Soldermask top
502 { wxT( "GBS" ), B_Mask }, // Soldermask bottom
503 { wxT( "GM1" ), Eco1_User }, // Altium mechanical layer 1
504 { wxT( "GM2" ), Eco2_User }, // Altium mechanical layer 2
505 { wxT( "GKO" ), Edge_Cuts } // PCB Outline
506 };
507 // clang-format on
508
509 std::map<wxString, PCB_LAYER_ID>::iterator it;
510
511 int numAltiumMatches = 0; // Assume we won't find Altium Gerbers
512
514
515 // If the passed vector isn't empty but is too small to hold the loaded
516 // Gerbers, then bail because something isn't right.
517
518 if( ( aGerber2KicadMapping.size() != 0 )
519 && ( aGerber2KicadMapping.size() != (size_t) m_gerberActiveLayersCount ) )
520 return numAltiumMatches;
521
522 // If the passed vector is empty, set it to the same number of elements as there
523 // are loaded Gerbers, and set each to "UNSELECTED_LAYER"
524
525 if( aGerber2KicadMapping.size() == 0 )
526 aGerber2KicadMapping.assign( m_gerberActiveLayersCount, UNSELECTED_LAYER );
527
528 // Loop through all loaded Gerbers looking for any with Altium specific extensions
529 for( int ii = 0; ii < m_gerberActiveLayersCount; ii++ )
530 {
531 if( images->GetGbrImage( ii ) )
532 {
533 // Get file name of Gerber loaded on this layer.
534 wxFileName fn( images->GetGbrImage( ii )->m_FileName );
535
536 // Get uppercase version of file extension
537 wxString FileExt = fn.GetExt();
538 FileExt.MakeUpper();
539
540 // Check for matching Altium Gerber file extension we'll handle
541 it = altiumExt.find( FileExt );
542
543 if( it != altiumExt.end() )
544 {
545 // We got a match, so store the KiCad layer number. We verify it's set to
546 // "UNSELECTED_LAYER" in case the passed vector already had entries
547 // matched to other known Gerber files. This will preserve them.
548
549 if( aGerber2KicadMapping[ii] == UNSELECTED_LAYER )
550 {
551 aGerber2KicadMapping[ii] = it->second;
552 numAltiumMatches++;
553 }
554 }
555 }
556 }
557
558 // Return number of Altium Gerbers we found. Each index in the passed vector corresponds to
559 // a loaded Gerber layer, and the entry will contain the index to the matching
560 // KiCad layer for Altium Gerbers, or "UNSELECTED_LAYER" for the rest.
561 return numAltiumMatches;
562}
GERBER_FILE_IMAGE_LIST * GetImagesList() const
Definition: gbr_layout.cpp:41
GERBER_FILE_IMAGE_LIST is a helper class to handle a list of GERBER_FILE_IMAGE files which are loaded...
GERBER_FILE_IMAGE * GetGbrImage(int aIdx)
GBR_LAYOUT * GetGerberLayout() const
@ In22_Cu
Definition: layer_ids.h:86
@ In11_Cu
Definition: layer_ids.h:75
@ In29_Cu
Definition: layer_ids.h:93
@ In30_Cu
Definition: layer_ids.h:94
@ In17_Cu
Definition: layer_ids.h:81
@ Edge_Cuts
Definition: layer_ids.h:113
@ F_Paste
Definition: layer_ids.h:101
@ In9_Cu
Definition: layer_ids.h:73
@ In19_Cu
Definition: layer_ids.h:83
@ In7_Cu
Definition: layer_ids.h:71
@ In28_Cu
Definition: layer_ids.h:92
@ In26_Cu
Definition: layer_ids.h:90
@ B_Mask
Definition: layer_ids.h:106
@ B_Cu
Definition: layer_ids.h:95
@ Eco1_User
Definition: layer_ids.h:111
@ F_Mask
Definition: layer_ids.h:107
@ In21_Cu
Definition: layer_ids.h:85
@ In23_Cu
Definition: layer_ids.h:87
@ B_Paste
Definition: layer_ids.h:100
@ In15_Cu
Definition: layer_ids.h:79
@ In2_Cu
Definition: layer_ids.h:66
@ UNSELECTED_LAYER
Definition: layer_ids.h:61
@ In10_Cu
Definition: layer_ids.h:74
@ F_SilkS
Definition: layer_ids.h:104
@ In4_Cu
Definition: layer_ids.h:68
@ Eco2_User
Definition: layer_ids.h:112
@ In16_Cu
Definition: layer_ids.h:80
@ In24_Cu
Definition: layer_ids.h:88
@ In1_Cu
Definition: layer_ids.h:65
@ B_SilkS
Definition: layer_ids.h:103
@ In13_Cu
Definition: layer_ids.h:77
@ In8_Cu
Definition: layer_ids.h:72
@ In14_Cu
Definition: layer_ids.h:78
@ In12_Cu
Definition: layer_ids.h:76
@ In27_Cu
Definition: layer_ids.h:91
@ In6_Cu
Definition: layer_ids.h:70
@ In5_Cu
Definition: layer_ids.h:69
@ In3_Cu
Definition: layer_ids.h:67
@ In20_Cu
Definition: layer_ids.h:84
@ F_Cu
Definition: layer_ids.h:64
@ In18_Cu
Definition: layer_ids.h:82
@ In25_Cu
Definition: layer_ids.h:89

References B_Cu, B_Mask, B_Paste, B_SilkS, Eco1_User, Eco2_User, Edge_Cuts, F_Cu, F_Mask, F_Paste, F_SilkS, GERBER_FILE_IMAGE_LIST::GetGbrImage(), GERBVIEW_FRAME::GetGerberLayout(), GBR_LAYOUT::GetImagesList(), In10_Cu, In11_Cu, In12_Cu, In13_Cu, In14_Cu, In15_Cu, In16_Cu, In17_Cu, In18_Cu, In19_Cu, In1_Cu, In20_Cu, In21_Cu, In22_Cu, In23_Cu, In24_Cu, In25_Cu, In26_Cu, In27_Cu, In28_Cu, In29_Cu, In2_Cu, In30_Cu, In3_Cu, In4_Cu, In5_Cu, In6_Cu, In7_Cu, In8_Cu, In9_Cu, GERBER_FILE_IMAGE::m_FileName, m_gerberActiveLayersCount, m_Parent, and UNSELECTED_LAYER.

Referenced by findKnownGerbersLoaded().

◆ findNumKiCadGerbersLoaded()

int LAYERS_MAP_DIALOG::findNumKiCadGerbersLoaded ( std::vector< int > &  aGerber2KicadMapping)
private

Find number of loaded Gerbers using KiCad naming convention.

The passed vector<int> will be returned with the same number of elements as there are Gerber files. The indices into it are 1:1 with the loaded Gerber files. Any Gerber that maps will have its entry set to the KiCad PCB layer number. Gerbers that aren't using KiCad naming or which don't map to an equivalent KiCad PCB layer will be set to UNSELECTED_LAYER.

Parameters
aGerber2KicadMappingpassed to return KiCad PCB layer number for each Gerber.
Returns
The number of loaded Gerbers using KiCad naming conventions.

Definition at line 565 of file dialog_layers_select_to_pcb.cpp.

566{
567 // The next comment preserves initializer formatting below it
568 // clang-format off
569 // This map contains the known KiCad suffixes used for Gerbers that we care about,
570 // along with their corresponding KiCad layer
571 std::map<wxString, PCB_LAYER_ID> kicadLayers
572 {
573 { "-F_Cu", F_Cu },
574 { "-In1_Cu", In1_Cu },
575 { "-In2_Cu", In2_Cu },
576 { "-In3_Cu", In3_Cu },
577 { "-In4_Cu", In4_Cu },
578 { "-In5_Cu", In5_Cu },
579 { "-In6_Cu", In6_Cu },
580 { "-In7_Cu", In7_Cu },
581 { "-In8_Cu", In8_Cu },
582 { "-In9_Cu", In9_Cu },
583 { "-In10_Cu", In10_Cu },
584 { "-In11_Cu", In11_Cu },
585 { "-In12_Cu", In12_Cu },
586 { "-In13_Cu", In13_Cu },
587 { "-In14_Cu", In14_Cu },
588 { "-In15_Cu", In15_Cu },
589 { "-In16_Cu", In16_Cu },
590 { "-In17_Cu", In17_Cu },
591 { "-In18_Cu", In18_Cu },
592 { "-In19_Cu", In19_Cu },
593 { "-In20_Cu", In20_Cu },
594 { "-In21_Cu", In21_Cu },
595 { "-In22_Cu", In22_Cu },
596 { "-In23_Cu", In23_Cu },
597 { "-In24_Cu", In24_Cu },
598 { "-In25_Cu", In25_Cu },
599 { "-In26_Cu", In26_Cu },
600 { "-In27_Cu", In27_Cu },
601 { "-In28_Cu", In28_Cu },
602 { "-In29_Cu", In29_Cu },
603 { "-In30_Cu", In30_Cu },
604 { "-B_Cu", B_Cu },
605 { "-B_Adhes", B_Adhes },
606 { "-F_Adhes", F_Adhes },
607 { "-B_Paste", B_Paste },
608 { "-F_Paste", F_Paste },
609 { "-B_SilkS", B_SilkS },
610 { "-F_SilkS", F_SilkS },
611 { "-B_Mask", B_Mask },
612 { "-F_Mask", F_Mask },
613 { "-Dwgs_User", Dwgs_User },
614 { "-Cmts_User", Cmts_User },
615 { "-Eco1_User", Eco1_User },
616 { "-Eco2_User", Eco2_User },
617 { "-Edge_Cuts", Edge_Cuts }
618 };
619 // clang-format on
620
621 std::map<wxString, PCB_LAYER_ID>::iterator it;
622
623 int numKicadMatches = 0; // Assume we won't find KiCad Gerbers
624
626
627 // If the passed vector isn't empty but is too small to hold the loaded
628 // Gerbers, then bail because something isn't right.
629
630 if( ( aGerber2KicadMapping.size() != 0 )
631 && ( aGerber2KicadMapping.size() < (size_t) m_gerberActiveLayersCount ) )
632 return numKicadMatches;
633
634 // If the passed vector is empty, set it to the same number of elements as there
635 // are loaded Gerbers, and set each to "UNSELECTED_LAYER"
636
637 if( aGerber2KicadMapping.size() == 0 )
638 aGerber2KicadMapping.assign( m_gerberActiveLayersCount, UNSELECTED_LAYER );
639
640 // Loop through all loaded Gerbers looking for any with KiCad specific layer names
641 for( int ii = 0; ii < m_gerberActiveLayersCount; ii++ )
642 {
643 if( images->GetGbrImage( ii ) )
644 {
645 // Get file name of Gerber loaded on this layer.
646 wxFileName fn( images->GetGbrImage( ii )->m_FileName );
647
648 wxString layerName = fn.GetName();
649
650 // To create Gerber file names, KiCad appends a suffix consisting of a "-" and the
651 // name of the layer to the project name. We need to isolate the suffix if present
652 // and see if it's a known KiCad layer name. Start by looking for the last "-" in
653 // the file name.
654 int dashPos = layerName.Find( '-', true );
655
656 // If one was found, isolate the suffix from the "-" to the end of the file name
657 wxString suffix;
658
659 if( dashPos != wxNOT_FOUND )
660 suffix = layerName.Right( layerName.length() - dashPos );
661
662 // Check if the string we've isolated matches any known KiCad layer names
663 it = kicadLayers.find( suffix );
664
665 if( it != kicadLayers.end() )
666 {
667 // We got a match, so store the KiCad layer number. We verify it's set to
668 // "UNSELECTED_LAYER" in case the passed vector already had entries
669 // matched to other known Gerber files. This will preserve them.
670
671 if( aGerber2KicadMapping[ii] == UNSELECTED_LAYER )
672 {
673 aGerber2KicadMapping[ii] = it->second;
674 numKicadMatches++;
675 }
676 }
677 }
678 }
679
680 // Return number of KiCad Gerbers we found. Each index in the passed vector corresponds to
681 // a loaded Gerber layer, and the entry will contain the index to the matching
682 // KiCad layer for KiCad Gerbers, or "UNSELECTED_LAYER" for the rest.
683 return numKicadMatches;
684}
@ B_Adhes
Definition: layer_ids.h:97
@ Dwgs_User
Definition: layer_ids.h:109
@ Cmts_User
Definition: layer_ids.h:110
@ F_Adhes
Definition: layer_ids.h:98

References B_Adhes, B_Cu, B_Mask, B_Paste, B_SilkS, Cmts_User, Dwgs_User, Eco1_User, Eco2_User, Edge_Cuts, F_Adhes, F_Cu, F_Mask, F_Paste, F_SilkS, GERBER_FILE_IMAGE_LIST::GetGbrImage(), GERBVIEW_FRAME::GetGerberLayout(), GBR_LAYOUT::GetImagesList(), In10_Cu, In11_Cu, In12_Cu, In13_Cu, In14_Cu, In15_Cu, In16_Cu, In17_Cu, In18_Cu, In19_Cu, In1_Cu, In20_Cu, In21_Cu, In22_Cu, In23_Cu, In24_Cu, In25_Cu, In26_Cu, In27_Cu, In28_Cu, In29_Cu, In2_Cu, In30_Cu, In3_Cu, In4_Cu, In5_Cu, In6_Cu, In7_Cu, In8_Cu, In9_Cu, GERBER_FILE_IMAGE::m_FileName, m_gerberActiveLayersCount, m_Parent, and UNSELECTED_LAYER.

Referenced by findKnownGerbersLoaded().

◆ findNumX2GerbersLoaded()

int LAYERS_MAP_DIALOG::findNumX2GerbersLoaded ( std::vector< int > &  aGerber2KicadMapping)
private

Find number of loaded Gerbers using X2 File Functions to define layers.

The passed vector<int> will be returned with the same number of elements as there are Gerber files. The indices into it are 1:1 with the loaded Gerber files. Any Gerber that maps will have its entry set to the KiCad PCB layer number. Gerbers that aren't using X2 File functions or which don't map to an equivalent KiCad PCB layer will be set to UNSELECTED_LAYER.

Parameters
aGerber2KicadMappingpassed to return KiCad PCB layer number for each Gerber.
Returns
The number of loaded Gerbers with X2 File Functions.

Definition at line 687 of file dialog_layers_select_to_pcb.cpp.

688{
689 // The next comment preserves initializer formatting below it
690 // clang-format off
691 // This map contains the known KiCad X2 "File Function" values used for Gerbers that we
692 // care about, along with their corresponding KiCad layer
693 std::map<wxString, PCB_LAYER_ID> kicadLayers
694 {
695 { wxT( "Top" ), F_Cu },
696 { wxT( "L2" ), In1_Cu },
697 { wxT( "L3" ), In2_Cu },
698 { wxT( "L4" ), In3_Cu },
699 { wxT( "L5" ), In4_Cu },
700 { wxT( "L6" ), In5_Cu },
701 { wxT( "L7" ), In6_Cu },
702 { wxT( "L8" ), In7_Cu },
703 { wxT( "L9" ), In8_Cu },
704 { wxT( "L10" ), In9_Cu },
705 { wxT( "L11" ), In10_Cu },
706 { wxT( "L12" ), In11_Cu },
707 { wxT( "L13" ), In12_Cu },
708 { wxT( "L14" ), In13_Cu },
709 { wxT( "L15" ), In14_Cu },
710 { wxT( "L16" ), In15_Cu },
711 { wxT( "L17" ), In16_Cu },
712 { wxT( "L18" ), In17_Cu },
713 { wxT( "L19" ), In18_Cu },
714 { wxT( "L20" ), In19_Cu },
715 { wxT( "L21" ), In20_Cu },
716 { wxT( "L22" ), In21_Cu },
717 { wxT( "L23" ), In22_Cu },
718 { wxT( "L24" ), In23_Cu },
719 { wxT( "L25" ), In24_Cu },
720 { wxT( "L26" ), In25_Cu },
721 { wxT( "L27" ), In26_Cu },
722 { wxT( "L28" ), In27_Cu },
723 { wxT( "L29" ), In28_Cu },
724 { wxT( "L30" ), In29_Cu },
725 { wxT( "Bot" ), B_Cu },
726 { wxT( "BotGlue" ), B_Adhes },
727 { wxT( "TopGlue" ), F_Adhes },
728 { wxT( "BotPaste" ), B_Paste },
729 { wxT( "TopPaste" ), F_Paste },
730 { wxT( "BotLegend" ), B_SilkS },
731 { wxT( "TopLegend" ), F_SilkS },
732 { wxT( "BotSoldermask" ), B_Mask },
733 { wxT( "TopSoldermask" ), F_Mask },
734 { wxT( "FabricationDrawing" ), Dwgs_User },
735 { wxT( "OtherDrawing" ), Cmts_User },
736 { wxT( "TopAssemblyDrawing" ), Eco1_User },
737 { wxT( "BotAssemblyDrawing" ), Eco2_User },
738 { wxT( "PProfile" ), Edge_Cuts }, // Plated PCB outline
739 { wxT( "NPProfile" ), Edge_Cuts } // Non-plated PCB outline
740 };
741 // clang-format on
742
743 std::map<wxString, PCB_LAYER_ID>::iterator it;
744
745 int numKicadMatches = 0; // Assume we won't find KiCad Gerbers
746
747 wxString mapThis;
748
750
751 // If the passed vector isn't empty but is too small to hold the loaded
752 // Gerbers, then bail because something isn't right.
753
754 if( ( aGerber2KicadMapping.size() != 0 )
755 && ( aGerber2KicadMapping.size() < (size_t) m_gerberActiveLayersCount ) )
756 return numKicadMatches;
757
758 // If the passed vector is empty, set it to the same number of elements as there
759 // are loaded Gerbers, and set each to "UNSELECTED_LAYER"
760
761 if( aGerber2KicadMapping.size() == 0 )
762 aGerber2KicadMapping.assign( m_gerberActiveLayersCount, UNSELECTED_LAYER );
763
764 // Loop through all loaded Gerbers looking for any with X2 File Functions
765 for( int ii = 0; ii < m_gerberActiveLayersCount; ii++ )
766 {
767 if( images->GetGbrImage( ii ) )
768 {
770
771 mapThis = "";
772
773 if( images->GetGbrImage( ii )->m_IsX2_file )
774 {
775 wxCHECK( x2, numKicadMatches );
776
777 if( x2->IsCopper() )
778 {
779 // This is a copper layer, so figure out which one
780 mapThis = x2->GetBrdLayerSide(); // Returns "Top", "Bot" or "Inr"
781
782 // To map inner layers properly, we need the layer number
783 if( mapThis.IsSameAs( wxT( "Inr" ), false ) )
784 mapThis = x2->GetBrdLayerId(); // Returns "L2", "L5", etc
785 }
786 else
787 {
788 // Create strings like "TopSolderMask" or "BotPaste" for non-copper layers
789 mapThis << x2->GetBrdLayerId() << x2->GetFileType();
790 }
791
792 // Check if the string we've isolated matches any known X2 layer names
793 it = kicadLayers.find( mapThis );
794
795 if( it != kicadLayers.end() )
796 {
797 // We got a match, so store the KiCad layer number. We verify it's set to
798 // "UNSELECTED_LAYER" in case the passed vector already had entries
799 // matched to other known Gerber files. This will preserve them.
800
801 if( aGerber2KicadMapping[ii] == UNSELECTED_LAYER )
802 {
803 aGerber2KicadMapping[ii] = it->second;
804 numKicadMatches++;
805 }
806 }
807 }
808 }
809 }
810
811 return numKicadMatches;
812}
X2_ATTRIBUTE_FILEFUNCTION * m_FileFunction
bool m_IsX2_file
< True if a X2 gerber attribute was found in file.
X2_ATTRIBUTE_FILEFUNCTION ( from TF.FileFunction in Gerber file) Example file function: TF....
bool IsCopper()
return true if the filefunction type is "Copper"
const wxString & GetBrdLayerSide()
the brd layer Pos: Top, Bot, Inr same as GetBrdLayerId() for non copper type
const wxString & GetFileType()
the type of layer (Copper, Soldermask ... )
const wxString & GetBrdLayerId()
the brd layer identifier: Ln, only for Copper type or Top, Bot for other types

References B_Adhes, B_Cu, B_Mask, B_Paste, B_SilkS, Cmts_User, Dwgs_User, Eco1_User, Eco2_User, Edge_Cuts, F_Adhes, F_Cu, F_Mask, F_Paste, F_SilkS, X2_ATTRIBUTE_FILEFUNCTION::GetBrdLayerId(), X2_ATTRIBUTE_FILEFUNCTION::GetBrdLayerSide(), X2_ATTRIBUTE_FILEFUNCTION::GetFileType(), GERBER_FILE_IMAGE_LIST::GetGbrImage(), GERBVIEW_FRAME::GetGerberLayout(), GBR_LAYOUT::GetImagesList(), In10_Cu, In11_Cu, In12_Cu, In13_Cu, In14_Cu, In15_Cu, In16_Cu, In17_Cu, In18_Cu, In19_Cu, In1_Cu, In20_Cu, In21_Cu, In22_Cu, In23_Cu, In24_Cu, In25_Cu, In26_Cu, In27_Cu, In28_Cu, In29_Cu, In2_Cu, In3_Cu, In4_Cu, In5_Cu, In6_Cu, In7_Cu, In8_Cu, In9_Cu, X2_ATTRIBUTE_FILEFUNCTION::IsCopper(), GERBER_FILE_IMAGE::m_FileFunction, m_gerberActiveLayersCount, GERBER_FILE_IMAGE::m_IsX2_file, m_Parent, and UNSELECTED_LAYER.

Referenced by findKnownGerbersLoaded().

◆ finishDialogSettings()

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 after all widgets have been initialized, and therefore their size fixed. If TransferDataToWindow() is used to initialize widgets, at the end of TransferDataToWindow, or better yet, at end of a wxInitDialogEvent handler.

Definition at line 158 of file dialog_shim.cpp.

159{
160 // must be called from the constructor of derived classes,
161 // when all widgets are initialized, and therefore their size fixed
162
163 // SetSizeHints fixes the minimal size of sizers in the dialog
164 // (SetSizeHints calls Fit(), so no need to call it)
165 GetSizer()->SetSizeHints( this );
166}

Referenced by CONVERT_SETTINGS_DIALOG::CONVERT_SETTINGS_DIALOG(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOM::DIALOG_BOM(), DIALOG_BUS_MANAGER::DIALOG_BUS_MANAGER(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_CLEANUP_TRACKS_AND_VIAS::DIALOG_CLEANUP_TRACKS_AND_VIAS(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_DRC::DIALOG_DRC(), DIALOG_EDIT_SYMBOLS_LIBID::DIALOG_EDIT_SYMBOLS_LIBID(), DIALOG_ENUM_PADS::DIALOG_ENUM_PADS(), DIALOG_ERC::DIALOG_ERC(), 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_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_FOOTPRINT_CHECKER::DIALOG_FOOTPRINT_CHECKER(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_GENCAD_EXPORT_OPTIONS::DIALOG_GENCAD_EXPORT_OPTIONS(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS(), DIALOG_GLOBAL_LIB_TABLE_CONFIG::DIALOG_GLOBAL_LIB_TABLE_CONFIG(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IMAGE_PROPERTIES::DIALOG_IMAGE_PROPERTIES(), DIALOG_IMPORTED_LAYERS::DIALOG_IMPORTED_LAYERS(), DIALOG_INSPECTOR::DIALOG_INSPECTOR(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_NEW_SYMBOL::DIALOG_LIB_NEW_SYMBOL(), DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES(), DIALOG_LIB_TEXTBOX_PROPERTIES::DIALOG_LIB_TEXTBOX_PROPERTIES(), DIALOG_LINE_PROPERTIES::DIALOG_LINE_PROPERTIES(), DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS(), DIALOG_LOCKED_ITEMS_QUERY::DIALOG_LOCKED_ITEMS_QUERY(), DIALOG_MANAGE_REPOSITORIES::DIALOG_MANAGE_REPOSITORIES(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_NET_INSPECTOR::DIALOG_NET_INSPECTOR(), DIALOG_NETLIST_IMPORT::DIALOG_NETLIST_IMPORT(), DIALOG_NON_COPPER_ZONES_EDITOR::DIALOG_NON_COPPER_ZONES_EDITOR(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::DIALOG_PAD_PRIMITIVE_POLY_PROPS(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PASTE_SPECIAL::DIALOG_PASTE_SPECIAL(), DIALOG_PCM::DIALOG_PCM(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_PRINT_GENERIC::DIALOG_PRINT_GENERIC(), DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER(), DIALOG_PUSH_PAD_PROPERTIES::DIALOG_PUSH_PAD_PROPERTIES(), DIALOG_REGULATOR_FORM::DIALOG_REGULATOR_FORM(), DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SELECT_3DMODEL::DIALOG_SELECT_3DMODEL(), DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SHEET_PROPERTIES::DIALOG_SHEET_PROPERTIES(), DIALOG_SIM_MODEL< T >::DIALOG_SIM_MODEL(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_UNUSED_PAD_LAYERS::DIALOG_UNUSED_PAD_LAYERS(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), DIALOG_UPDATE_SYMBOL_FIELDS::DIALOG_UPDATE_SYMBOL_FIELDS(), DIALOG_WIRE_BUS_PROPERTIES::DIALOG_WIRE_BUS_PROPERTIES(), PAGED_DIALOG::finishInitialization(), DIALOG_CONSTRAINTS_REPORTER::FinishInitialization(), DIALOG_FIELD_PROPERTIES::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_DIALOG::NETLIST_DIALOG(), DIALOG_SHEET_PROPERTIES::OnInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_SYMBOL_PROPERTIES::OnInitDlg(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), TEARDROP_DIALOG::TEARDROP_DIALOG(), DIALOG_SIGNAL_LIST::TransferDataToWindow(), DIALOG_COLOR_PICKER::TransferDataToWindow(), and DIALOG_BOARD_STATISTICS::TransferDataToWindow().

◆ GetCopperLayersCount()

static int LAYERS_MAP_DIALOG::GetCopperLayersCount ( )
inlinestatic

◆ GetLayersLookUpTable()

int * LAYERS_MAP_DIALOG::GetLayersLookUpTable ( )
inline

Definition at line 44 of file dialog_layers_select_to_pcb.h.

44{ return m_layersLookUpTable; }
int m_layersLookUpTable[GERBER_DRAWLAYERS_COUNT]

References m_layersLookUpTable.

Referenced by GERBVIEW_CONTROL::ExportToPcbnew().

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( ) const
inlineinherited

Definition at line 46 of file kiway_holder.h.

46{ return m_type; }
HOLDER_TYPE m_type
Definition: kiway_holder.h:85

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUserUnits()

◆ HasKiway()

bool KIWAY_HOLDER::HasKiway ( ) const
inlineinherited

Safety check before asking for the Kiway reference.

Returns
true if kiway is non-null

Definition at line 63 of file kiway_holder.h.

64 {
65 return m_kiway != nullptr;
66 }
KIWAY * m_kiway
Definition: kiway_holder.h:84

References KIWAY_HOLDER::m_kiway.

Referenced by DIALOG_SHIM::~DIALOG_SHIM().

◆ horizPixelsFromDU()

int DIALOG_SHIM::horizPixelsFromDU ( int  x) const
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 176 of file dialog_shim.cpp.

177{
178 wxSize sz( x, 0 );
179 return ConvertDialogToPixels( sz ).x;
180}

Referenced by DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), and DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

◆ initDialog()

void LAYERS_MAP_DIALOG::initDialog ( )
private

Definition at line 77 of file dialog_layers_select_to_pcb.cpp.

78{
79 wxStaticText* label;
80 wxStaticText* text;
81 int item_ID;
82 wxString msg;
83 wxSize goodSize;
85
86 for( int ii = 0; ii < GERBER_DRAWLAYERS_COUNT; ++ii )
87 {
88 // Specify the default value for each member of these arrays.
89 m_buttonTable[ii] = -1;
91 }
92
93 // Ensure we have:
94 // At least 2 copper layers and less than max pcb copper layers count
95 // Even number of layers because a board *must* have even layers count
97
98 int idx = ( m_exportBoardCopperLayersCount / 2 ) - 1;
99 m_comboCopperLayersCount->SetSelection( idx );
100
103
104 for( unsigned ii = 0; ii < GERBER_DRAWLAYERS_COUNT; ++ii )
105 {
106 if( images->GetGbrImage( ii ) == nullptr )
107 break;
108
111 }
112
113 if( m_gerberActiveLayersCount <= GERBER_DRAWLAYERS_COUNT / 2 ) // Only one list is enough
114 m_staticlineSep->Hide();
115
116 wxFlexGridSizer* flexColumnBoxSizer = m_flexLeftColumnBoxSizer;
117
118 for( int ii = 0; ii < m_gerberActiveLayersCount; ii++ )
119 {
120 // Each Gerber layer has an associated static text string (to
121 // identify that layer), a button (for invoking a child dialog
122 // box to change which Pcbnew layer that the Gerber layer is
123 // mapped to), and a second static text string (to depict which
124 // Pcbnew layer that the Gerber layer has been mapped to). Each
125 // of those items are placed into the left hand column, middle
126 // column, and right hand column (respectively) of the Flexgrid
127 // sizer, and the color of the second text string is set to
128 // fuchsia or blue (to respectively indicate whether the Gerber
129 // layer has been mapped to a Pcbnew layer or is not being
130 // exported at all). (Experimentation has shown that if a text
131 // control is used to depict which Pcbnew layer that each Gerber
132 // layer is mapped to (instead of a static text string), then
133 // those controls do not behave in a fully satisfactory manner
134 // in the Linux version. Even when the read-only attribute is
135 // specified for all of those controls, they can still be selected
136 // when the arrow keys or Tab key is used to step through all of
137 // the controls within the dialog box, and directives to set the
138 // foreground color of the text of each such control to blue (to
139 // indicate that the text is of a read-only nature) are disregarded.
140 // Specify a FlexGrid sizer with an appropriate number of rows
141 // and three columns. If nb_items < 16, then the number of rows
142 // is nb_items; otherwise, the number of rows is 16 (with two
143 // separate columns of controls being used if nb_items > 16).
144
145 if( ii == GERBER_DRAWLAYERS_COUNT / 2 )
146 flexColumnBoxSizer = m_flexRightColumnBoxSizer;
147
148 // Provide a text string to identify the Gerber layer
149 msg.Printf( _( "Layer %d" ), m_buttonTable[ii] + 1 );
150
151 label = new wxStaticText( this, wxID_STATIC, msg );
152 flexColumnBoxSizer->Add( label, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
153
154 /* Add file name and extension without path. */
155 wxFileName fn( images->GetGbrImage( ii )->m_FileName );
156 label = new wxStaticText( this, wxID_STATIC, fn.GetFullName() );
157 flexColumnBoxSizer->Add( label, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
158
159 // Provide a button for this layer (which will invoke a child dialog box)
160 item_ID = ID_BUTTON_0 + ii;
161 wxButton * Button = new wxButton( this, item_ID, wxT( "..." ), wxDefaultPosition,
162 wxDefaultSize, wxBU_EXACTFIT );
163
164 flexColumnBoxSizer->Add( Button, 0, wxALIGN_CENTER_VERTICAL | wxALL );
165
166 // Provide another text string to specify which Pcbnew layer that this
167 // Gerber layer is mapped to. All layers initially default to
168 // "Do NotExport" (which corresponds to UNSELECTED_LAYER). Whenever
169 // a layer is set to "Do Not Export" it's displayed in blue. When a
170 // user selects a specific KiCad layer to map to, it's displayed in
171 // magenta which indicates it will be exported.
172 item_ID = ID_TEXT_0 + ii;
173
174 // All layers default to "Do Not Export" displayed in blue
175 msg = _( "Do not export" );
176 text = new wxStaticText( this, item_ID, msg );
177 text->SetForegroundColour( *wxBLUE );
178
179 // When the first of these text strings is being added, determine what
180 // size is necessary to to be able to display any possible string
181 // without it being truncated. Then specify that size as the minimum
182 // size for all of these text strings. (If this minimum size is not
183 // determined in this fashion, then it is possible for the display of
184 // one or more of these strings to be truncated after different Pcbnew
185 // layers are selected.)
186
187 if( ii == 0 )
188 {
189 goodSize = text->GetSize();
190
191 for( int jj = 0; jj < GERBER_DRAWLAYERS_COUNT; ++jj )
192 {
193 text->SetLabel( GetPCBDefaultLayerName( jj ) );
194
195 if( goodSize.x < text->GetSize().x )
196 goodSize.x = text->GetSize().x;
197 }
198 text->SetLabel( msg ); // Reset label to default text
199 }
200
201 text->SetMinSize( goodSize );
202 flexColumnBoxSizer->Add( text, 1, wxALIGN_CENTER_VERTICAL | wxALL, 5 );
203
204 m_layersList[ii] = text;
205 }
206
207 // If the user has never stored any Gerber to KiCad layer mapping,
208 // then disable the button to retrieve it
209 if( config->m_GerberToPcbLayerMapping.size() == 0 )
210 m_buttonRetrieve->Enable( false );
211
212 std::vector<int> gerber2KicadMapping;
213
214 // See how many of the loaded Gerbers can be mapped to KiCad layers automatically
215 int numMappedGerbers = findKnownGerbersLoaded( gerber2KicadMapping );
216
217 if( numMappedGerbers > 0 )
218 {
219 // See if the user wants to map the Altium Gerbers to known KiCad PCB layers
220 int returnVal = wxMessageBox(
221 _( "Gerbers with known layers: " + wxString::Format( wxT( "%i" ), numMappedGerbers )
222 + "\n\nAssign to matching KiCad PCB layers?" ),
223 _( "Automatic Layer Assignment" ), wxOK | wxCANCEL | wxOK_DEFAULT );
224
225 if( returnVal == wxOK )
226 {
227 for( int ii = 0; ii < m_gerberActiveLayersCount; ii++ )
228 {
229 int currLayer = gerber2KicadMapping[ii];
230
231 // Default to "Do Not Export" for unselected or undefined layer
232 if( ( currLayer == UNSELECTED_LAYER ) || ( currLayer == UNDEFINED_LAYER ) )
233 {
234 m_layersList[ii]->SetLabel( _( "Do not export" ) );
235 m_layersList[ii]->SetForegroundColour( *wxBLUE );
236
237 // Set the layer internally to unselected
239 }
240 else
241 {
242 m_layersList[ii]->SetLabel( GetPCBDefaultLayerName( currLayer ) );
243 m_layersList[ii]->SetForegroundColour( wxColour( 255, 0, 128 ) );
244
245 // Set the layer internally to the matching KiCad layer
246 m_layersLookUpTable[ii] = currLayer;
247 }
248 }
249 }
250 }
251}
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
APP_SETTINGS_BASE * KifaceSettings() const
Definition: kiface_base.h:93
wxStaticText * m_layersList[int(GERBER_DRAWLAYERS_COUNT)+1]
int findKnownGerbersLoaded(std::vector< int > &aGerber2KicadMapping)
Find number of loaded Gerbers where the matching KiCad layer can be identified.
int m_buttonTable[int(GERBER_DRAWLAYERS_COUNT)+1]
const wxString GetPCBDefaultLayerName(int aLayerNumber)
#define _(s)
@ UNDEFINED_LAYER
Definition: layer_ids.h:60
#define GERBER_DRAWLAYERS_COUNT
Definition: layer_ids.h:401
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200

References _, config, findKnownGerbersLoaded(), Format(), GERBER_DRAWLAYERS_COUNT, GERBER_FILE_IMAGE_LIST::GetGbrImage(), GERBVIEW_FRAME::GetGerberLayout(), GBR_LAYOUT::GetImagesList(), GetPCBDefaultLayerName(), ID_BUTTON_0, ID_TEXT_0, Kiface(), KIFACE_BASE::KifaceSettings(), LAYERS_MAP_DIALOG_BASE::m_buttonRetrieve, m_buttonTable, LAYERS_MAP_DIALOG_BASE::m_comboCopperLayersCount, m_exportBoardCopperLayersCount, GERBER_FILE_IMAGE::m_FileName, LAYERS_MAP_DIALOG_BASE::m_flexLeftColumnBoxSizer, LAYERS_MAP_DIALOG_BASE::m_flexRightColumnBoxSizer, m_gerberActiveLayersCount, m_layersList, m_layersLookUpTable, m_Parent, LAYERS_MAP_DIALOG_BASE::m_staticlineSep, normalizeBrdLayersCount(), text, UNDEFINED_LAYER, and UNSELECTED_LAYER.

◆ IsCtrl()

static bool DIALOG_SHIM::IsCtrl ( int  aChar,
const wxKeyEvent &  e 
)
inlinestaticinherited

Definition at line 128 of file dialog_shim.h.

129 {
130 return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
131 !e.ShiftDown() && !e.MetaDown();
132 }

◆ IsQuasiModal()

◆ IsShiftCtrl()

static bool DIALOG_SHIM::IsShiftCtrl ( int  aChar,
const wxKeyEvent &  e 
)
inlinestaticinherited

Definition at line 134 of file dialog_shim.h.

135 {
136 return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
137 e.ShiftDown() && !e.MetaDown();
138 }

◆ Kiway()

KIWAY & KIWAY_HOLDER::Kiway ( ) const
inlineinherited

Return 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 53 of file kiway_holder.h.

54 {
55 wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine.
56 return *m_kiway;
57 }

References KIWAY_HOLDER::m_kiway.

Referenced by PROJECT_TREE_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_EDIT_FRAME::AddLibraryFile(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), SCH_EDIT_FRAME::AskToSaveChanges(), CVPCB_MAINFRAME::BuildLibrariesListBox(), FOOTPRINT_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::CanCloseSymbolFromSchematic(), SCH_EDIT_FRAME::canCloseWindow(), PCB_EDIT_FRAME::canCloseWindow(), KICAD_MANAGER_FRAME::CloseProject(), COMMON_CONTROL::ConfigurePaths(), DIALOG_CHOOSE_SYMBOL::ConstructRightPanel(), DIALOG_CHOOSE_FOOTPRINT::ConstructRightPanel(), PCB_BASE_FRAME::CreateAndShow3D_Frame(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SHIM::DIALOG_SHIM(), SCH_EDIT_FRAME::doCloseWindow(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), FIELDS_GRID_TRICKS::doPopupSelection(), BOARD_EDITOR_CONTROL::EditFpInFpEditor(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), BACK_ANNOTATE::FetchNetlistFromPCB(), PCB_EDIT_FRAME::FetchNetlistFromSchematic(), KICAD_MANAGER_FRAME::ImportNonKiCadProject(), SCRIPTING_TOOL::Init(), EDA_DRAW_FRAME::IsScriptingConsoleVisible(), KIWAY_PLAYER::language_change(), KICAD_MANAGER_FRAME::language_change(), DIALOG_CHANGE_SYMBOLS::launchMatchIdSymbolBrowser(), DIALOG_CHANGE_SYMBOLS::launchNewIdSymbolBrowser(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), PGM_SINGLE_TOP::MacOpenFile(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), PL_EDITOR_FRAME::OnExit(), SCH_EDIT_FRAME::OnExit(), FOOTPRINT_EDIT_FRAME::OnExitKiCad(), SYMBOL_EDIT_FRAME::OnExitKiCad(), FOOTPRINT_VIEWER_FRAME::OnExitKiCad(), SAVE_AS_TRAVERSER::OnFile(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), PCB_EDIT_FRAME::OnNetlistChanged(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), EDA_BASE_FRAME::OnPreferences(), SIM_PLOT_FRAME::onProbe(), PCB_EDIT_FRAME::OnQuit(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_FIELD_PROPERTIES::OnTextValueSelectButtonClick(), SIM_PLOT_FRAME::onTune(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadFootprintFromBoard(), SCH_EDIT_FRAME::OnUpdatePCB(), FOOTPRINT_EDIT_FRAME::OnUpdateSaveFootprintToBoard(), SCH_BASE_FRAME::PickSymbolFromLibBrowser(), KIWAY_HOLDER::Prj(), SCH_EDIT_TOOL::Properties(), BACK_ANNOTATE::PushNewLinksToPCB(), FOOTPRINT_WIZARD_FRAME::PythonPluginsReload(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), SCH_EDITOR_CONTROL::rescueProject(), PCB_EDIT_FRAME::RunEeschema(), EE_INSPECTION_TOOL::RunSimulation(), SYMBOL_EDIT_FRAME::Save(), SYMBOL_EDIT_FRAME::saveCurrentSymbol(), CVPCB_MAINFRAME::SaveFootprintAssociation(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), EDA_DRAW_FRAME::ScriptingConsoleEnableDisable(), PCB_BASE_FRAME::SelectFootprintFromLibBrowser(), PCB_BASE_FRAME::SelectLibrary(), SCH_EDIT_FRAME::SendCrossProbeClearHighlight(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), CVPCB_MAINFRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::sendNetlistToCvpcb(), SCH_EDIT_FRAME::SendSelectItems(), SCH_EDIT_FRAME::SetCrossProbeConnection(), SYMBOL_EDIT_FRAME::SetCurSymbol(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), PCB_EDIT_FRAME::ShowFootprintPropertiesDialog(), CVPCB_CONTROL::ShowFootprintViewer(), COMMON_CONTROL::ShowLibraryTable(), COMMON_CONTROL::ShowPlayer(), KICAD_MANAGER_CONTROL::ShowPlayer(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), PCB_EDIT_FRAME::TestStandalone(), BOARD_EDITOR_CONTROL::UpdateSchematicFromPCB(), DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint(), and DIALOG_SHIM::~DIALOG_SHIM().

◆ normalizeBrdLayersCount()

◆ OnBrdLayersCountSelection()

void LAYERS_MAP_DIALOG::OnBrdLayersCountSelection ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from LAYERS_MAP_DIALOG_BASE.

Definition at line 268 of file dialog_layers_select_to_pcb.cpp.

269{
270 int id = event.GetSelection();
271 m_exportBoardCopperLayersCount = ( id + 1 ) * 2;
272}

References m_exportBoardCopperLayersCount.

◆ OnButton()

void DIALOG_SHIM::OnButton ( wxCommandEvent &  aEvent)
privateinherited

Properly handle the default button events when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM.

Definition at line 533 of file dialog_shim.cpp.

534{
535 const int id = aEvent.GetId();
536
537 // If we are pressing a button to exit, we need to enable the escapeID
538 // otherwise the dialog does not process cancel
539 if( id == wxID_CANCEL )
540 SetEscapeId( wxID_ANY );
541
542 if( IsQuasiModal() )
543 {
544 if( id == GetAffirmativeId() )
545 {
546 EndQuasiModal( id );
547 }
548 else if( id == wxID_APPLY )
549 {
550 // Dialogs that provide Apply buttons should make sure data is valid before
551 // allowing a transfer, as there is no other way to indicate failure
552 // (i.e. the dialog can't refuse to close as it might with OK, because it
553 // isn't closing anyway)
554 if( Validate() )
555 {
556 ignore_unused( TransferDataFromWindow() );
557 }
558 }
559 else if( id == GetEscapeId() || (id == wxID_CANCEL && GetEscapeId() == wxID_ANY) )
560 {
561 EndQuasiModal( wxID_CANCEL );
562 }
563 else // not a standard button
564 {
565 aEvent.Skip();
566 }
567
568 return;
569 }
570
571 // This is mandatory to allow wxDialogBase::OnButton() to be called.
572 aEvent.Skip();
573}
void EndQuasiModal(int retCode)
void ignore_unused(const T &)
Definition: ignore.h:24

References DIALOG_SHIM::EndQuasiModal(), ignore_unused(), and DIALOG_SHIM::IsQuasiModal().

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ OnCharHook()

void DIALOG_SHIM::OnCharHook ( wxKeyEvent &  aEvt)
protectedvirtualinherited

Reimplemented in HK_PROMPT_DIALOG, DIALOG_CHOOSE_SYMBOL, and HTML_MESSAGE_BOX.

Definition at line 576 of file dialog_shim.cpp.

577{
578 if( aEvt.GetKeyCode() == 'U' && aEvt.GetModifiers() == wxMOD_CONTROL )
579 {
580 if( m_parentFrame )
581 {
583 return;
584 }
585 }
586 // shift-return (Mac default) or Ctrl-Return (GTK) for OK
587 else if( aEvt.GetKeyCode() == WXK_RETURN && ( aEvt.ShiftDown() || aEvt.ControlDown() ) )
588 {
589 wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
590 return;
591 }
592 else if( aEvt.GetKeyCode() == WXK_TAB && !aEvt.ControlDown() )
593 {
594 wxWindow* currentWindow = wxWindow::FindFocus();
595 int currentIdx = -1;
596 int delta = aEvt.ShiftDown() ? -1 : 1;
597
598 auto advance =
599 [&]( int& idx )
600 {
601 // Wrap-around modulus
602 int size = m_tabOrder.size();
603 idx = ( ( idx + delta ) % size + size ) % size;
604 };
605
606 for( size_t i = 0; i < m_tabOrder.size(); ++i )
607 {
608 if( m_tabOrder[i] == currentWindow )
609 {
610 currentIdx = (int) i;
611 break;
612 }
613 }
614
615 if( currentIdx >= 0 )
616 {
617 advance( currentIdx );
618
619 //todo: We don't currently have non-textentry dialog boxes but this will break if
620 // we add them.
621#ifdef __APPLE__
622 while( dynamic_cast<wxTextEntry*>( m_tabOrder[ currentIdx ] ) == nullptr )
623 advance( currentIdx );
624#endif
625
626 m_tabOrder[ currentIdx ]->SetFocus();
627 return;
628 }
629 }
630
631 aEvt.Skip();
632}
std::vector< wxWindow * > m_tabOrder
Definition: dialog_shim.h:222
EDA_BASE_FRAME * m_parentFrame
Definition: dialog_shim.h:220
virtual void ToggleUserUnits()
constexpr int delta

References delta, DIALOG_SHIM::m_parentFrame, DIALOG_SHIM::m_tabOrder, and EDA_BASE_FRAME::ToggleUserUnits().

Referenced by DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES(), and DIALOG_TEXTBOX_PROPERTIES::~DIALOG_TEXTBOX_PROPERTIES().

◆ OnCloseWindow()

void DIALOG_SHIM::OnCloseWindow ( wxCloseEvent &  aEvent)
privateinherited

Properly handle the wxCloseEvent when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM.

Definition at line 520 of file dialog_shim.cpp.

521{
522 if( IsQuasiModal() )
523 {
524 EndQuasiModal( wxID_CANCEL );
525 return;
526 }
527
528 // This is mandatory to allow wxDialogBase::OnCloseWindow() to be called.
529 aEvent.Skip();
530}

References DIALOG_SHIM::EndQuasiModal(), and DIALOG_SHIM::IsQuasiModal().

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ OnGetSetup()

void LAYERS_MAP_DIALOG::OnGetSetup ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from LAYERS_MAP_DIALOG_BASE.

Definition at line 303 of file dialog_layers_select_to_pcb.cpp.

304{
306
307 m_exportBoardCopperLayersCount = config->m_BoardLayersCount;
309
310 int idx = ( m_exportBoardCopperLayersCount / 2 ) - 1;
311 m_comboCopperLayersCount->SetSelection( idx );
312
313 for( int ii = 0; ii < GERBER_DRAWLAYERS_COUNT; ++ii )
314 {
315 // Ensure the layer mapping in config exists for this layer, and store it
316 if( (size_t)ii >= config->m_GerberToPcbLayerMapping.size() )
317 break;
318
319 m_layersLookUpTable[ii] = config->m_GerberToPcbLayerMapping[ ii ];
320 }
321
322 for( int ii = 0; ii < m_gerberActiveLayersCount; ii++ )
323 {
324 int layer = m_layersLookUpTable[ii];
325
326 if( layer == UNSELECTED_LAYER )
327 {
328 m_layersList[ii]->SetLabel( _( "Do not export" ) );
329 m_layersList[ii]->SetForegroundColour( *wxBLUE );
330 }
331 else if( layer == UNDEFINED_LAYER )
332 {
333 m_layersList[ii]->SetLabel( _( "Hole data" ) );
334 m_layersList[ii]->SetForegroundColour( wxColour( 255, 0, 128 ) );
335 }
336 else
337 {
338 m_layersList[ii]->SetLabel( GetPCBDefaultLayerName( layer ) );
339 m_layersList[ii]->SetForegroundColour( wxColour( 255, 0, 128 ) );
340 }
341 }
342}

References _, config, GERBER_DRAWLAYERS_COUNT, GetPCBDefaultLayerName(), Kiface(), KIFACE_BASE::KifaceSettings(), LAYERS_MAP_DIALOG_BASE::m_comboCopperLayersCount, m_exportBoardCopperLayersCount, m_gerberActiveLayersCount, m_layersList, m_layersLookUpTable, normalizeBrdLayersCount(), UNDEFINED_LAYER, and UNSELECTED_LAYER.

◆ OnGridEditorHidden()

void DIALOG_SHIM::OnGridEditorHidden ( wxGridEvent &  event)
privateinherited

Definition at line 642 of file dialog_shim.cpp.

643{
644 SetEscapeId( wxID_ANY );
645 event.Skip();
646}

◆ OnGridEditorShown()

void DIALOG_SHIM::OnGridEditorShown ( wxGridEvent &  event)
privateinherited

Definition at line 635 of file dialog_shim.cpp.

636{
637 SetEscapeId( wxID_NONE );
638 event.Skip();
639}

◆ OnModify()

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 387 of file dialog_shim.cpp.

388{
390 {
392
393 selectAllInTextCtrls( GetChildren() );
394
397 else
398 KIPLATFORM::UI::ForceFocus( this ); // Focus the dialog itself
399
400 m_firstPaintEvent = false;
401 }
402
403 event.Skip();
404}
bool m_firstPaintEvent
Definition: dialog_shim.h:212
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:213
static void selectAllInTextCtrls(wxWindowList &children)
void FixupCancelButtonCmdKeyCollision(wxWindow *aWindow)
Definition: gtk/ui.cpp:71
void ForceFocus(wxWindow *aWindow)
Pass the current focus to the window.
Definition: gtk/ui.cpp:44

References KIPLATFORM::UI::FixupCancelButtonCmdKeyCollision(), KIPLATFORM::UI::ForceFocus(), DIALOG_SHIM::m_firstPaintEvent, DIALOG_SHIM::m_initialFocusTarget, and selectAllInTextCtrls().

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ OnResetClick()

void LAYERS_MAP_DIALOG::OnResetClick ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from LAYERS_MAP_DIALOG_BASE.

Definition at line 275 of file dialog_layers_select_to_pcb.cpp.

276{
277 for( int ii = 0; ii < m_gerberActiveLayersCount; ++ii )
278 {
280 m_layersList[ii]->SetLabel( _( "Do not export" ) );
281 m_layersList[ii]->SetForegroundColour( *wxBLUE );
282 m_buttonTable[ii] = ii;
283 }
284}

References _, m_buttonTable, m_gerberActiveLayersCount, m_layersList, m_layersLookUpTable, and UNSELECTED_LAYER.

◆ OnSelectLayer()

void LAYERS_MAP_DIALOG::OnSelectLayer ( wxCommandEvent &  event)
private

Definition at line 345 of file dialog_layers_select_to_pcb.cpp.

346{
347 int ii = event.GetId() - ID_BUTTON_0;
348
349 if( ii < 0 || ii >= GERBER_DRAWLAYERS_COUNT )
350 {
351 wxFAIL_MSG( wxT( "Bad layer id" ) );
352 return;
353 }
354
355 int jj = m_layersLookUpTable[ m_buttonTable[ii] ];
356
357 if( jj != UNSELECTED_LAYER && jj != UNDEFINED_LAYER && !IsValidLayer( jj ) )
358 jj = B_Cu; // (Defaults to "Copper" layer.)
359
360 // Get file name of Gerber loaded on this layer
361 wxFileName fn( m_Parent->GetGerberLayout()->GetImagesList()->GetGbrImage( ii )->m_FileName );
362
363 // Surround it with quotes to make it stand out on the dialog title bar
364 wxString layerName = wxT( "\"" ) + fn.GetFullName() + wxT( "\"" );
365
366 // Display dialog to let user select a layer for the Gerber
368
369 if( jj != UNSELECTED_LAYER && jj != UNDEFINED_LAYER && !IsValidLayer( jj ) )
370 return;
371
372 if( jj != m_layersLookUpTable[m_buttonTable[ii]] )
373 {
375
376 if( jj == UNSELECTED_LAYER )
377 {
378 m_layersList[ii]->SetLabel( _( "Do not export" ) );
379
380 // Change the text color to blue (to highlight
381 // that this layer is *not* being exported)
382 m_layersList[ii]->SetForegroundColour( *wxBLUE );
383 }
384 else if( jj == UNDEFINED_LAYER )
385 {
386 m_layersList[ii]->SetLabel( _( "Hole data" ) );
387
388 // Change the text color to fuchsia (to highlight
389 // that this layer *is* being exported)
390 m_layersList[ii]->SetForegroundColour( wxColour( 255, 0, 128 ) );
391 }
392 else
393 {
394 m_layersList[ii]->SetLabel( GetPCBDefaultLayerName( jj ) );
395
396 // Change the text color to fuchsia (to highlight
397 // that this layer *is* being exported)
398 m_layersList[ii]->SetForegroundColour( wxColour( 255, 0, 128 ) );
399 }
400 }
401}
int SelectPCBLayer(int aDefaultLayer, int aCopperLayerCount, const wxString &aGerberName)
Show the dialog box for layer selection.
bool IsValidLayer(int aLayerId)
Test whether a given integer is a valid layer index, i.e.
Definition: layer_ids.h:800

References _, B_Cu, GERBER_DRAWLAYERS_COUNT, GERBER_FILE_IMAGE_LIST::GetGbrImage(), GERBVIEW_FRAME::GetGerberLayout(), GBR_LAYOUT::GetImagesList(), GetPCBDefaultLayerName(), ID_BUTTON_0, IsValidLayer(), m_buttonTable, m_exportBoardCopperLayersCount, GERBER_FILE_IMAGE::m_FileName, m_layersList, m_layersLookUpTable, m_Parent, GERBVIEW_FRAME::SelectPCBLayer(), UNDEFINED_LAYER, and UNSELECTED_LAYER.

◆ OnStoreSetup()

void LAYERS_MAP_DIALOG::OnStoreSetup ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from LAYERS_MAP_DIALOG_BASE.

Definition at line 287 of file dialog_layers_select_to_pcb.cpp.

288{
290 config->m_BoardLayersCount = m_exportBoardCopperLayersCount;
291
292 config->m_GerberToPcbLayerMapping.clear();
293
294 for( int ii = 0; ii < GERBER_DRAWLAYERS_COUNT; ++ii )
295 config->m_GerberToPcbLayerMapping.push_back( m_layersLookUpTable[ii] );
296
297 // Enable the "Get Stored Choice" button in case it was disabled in "initDialog()"
298 // due to no previously stored choices.
299 m_buttonRetrieve->Enable( true );
300}

References config, GERBER_DRAWLAYERS_COUNT, Kiface(), KIFACE_BASE::KifaceSettings(), LAYERS_MAP_DIALOG_BASE::m_buttonRetrieve, m_exportBoardCopperLayersCount, and m_layersLookUpTable.

◆ Prj()

PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Return a reference to the PROJECT associated with this KIWAY.

Definition at line 36 of file kiway_holder.cpp.

37{
38 return Kiway().Prj();
39}
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
Definition: kiway.cpp:192

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

Referenced by SYMBOL_TREE_MODEL_ADAPTER::AddLibraries(), FP_TREE_MODEL_ADAPTER::AddLibraries(), SYMBOL_LIBRARY_MANAGER::addLibrary(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_EDIT_FRAME::addLibTableEntry(), SCH_EDIT_FRAME::AppendSchematic(), AskSaveBoardFileName(), DIALOG_SYMBOL_REMAP::backupProject(), CVPCB_MAINFRAME::buildEquivalenceList(), CVPCB_MAINFRAME::BuildLibrariesListBox(), FOOTPRINT_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::buildSaveAsDialog(), SIM_PLOT_FRAME::canCloseWindow(), PANEL_FP_PROPERTIES_3D_MODEL::Cfg3DPath(), KICAD_MANAGER_FRAME::CloseProject(), PCB_BASE_EDIT_FRAME::createNewLibrary(), PCB_BASE_EDIT_FRAME::CreateNewProjectLibrary(), DIALOG_PLOT_SCHEMATIC::createPDFFile(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), SCH_EDIT_FRAME::CreateScreens(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOARD_STATISTICS::DIALOG_BOARD_STATISTICS(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_GEN_FOOTPRINT_POSITION::DIALOG_GEN_FOOTPRINT_POSITION(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_NETLIST_IMPORT::DIALOG_NETLIST_IMPORT(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_SYMBOL_REMAP::DIALOG_SYMBOL_REMAP(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), FOOTPRINT_PREVIEW_PANEL::DisplayFootprint(), SYMBOL_VIEWER_FRAME::DisplayLibInfos(), CVPCB_MAINFRAME::DisplayStatus(), SCH_EDIT_FRAME::doAutoSave(), PCB_EDIT_FRAME::doAutoSave(), SCH_EDIT_FRAME::doCloseWindow(), FOOTPRINT_EDIT_FRAME::doCloseWindow(), PCB_BASE_EDIT_FRAME::doCloseWindow(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), FIELDS_GRID_TRICKS::doPopupSelection(), FOOTPRINT_EDIT_FRAME::DuplicateFootprint(), KICAD_MANAGER_CONTROL::Execute(), PCB_EDIT_FRAME::Export_IDF3(), PCB_EDIT_FRAME::ExportFootprintsToLibrary(), BOARD_EDITOR_CONTROL::ExportNetlist(), SYMBOL_EDITOR_CONTROL::ExportSymbolAsSVG(), SYMBOL_EDITOR_CONTROL::ExportView(), PCB_EDIT_FRAME::ExportVRML_File(), BACK_ANNOTATE::FetchNetlistFromPCB(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), SYMBOL_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), SIM_PLOT_FRAME::getDefaultFilename(), SIM_PLOT_FRAME::getDefaultPath(), PCB_BASE_EDIT_FRAME::GetDesignRulesPath(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), PCB_EDIT_FRAME::GetLastPath(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), SCH_BASE_FRAME::GetLibSymbol(), DIALOG_PLOT_SCHEMATIC::getOutputPath(), KICAD_MANAGER_FRAME::GetProjectFileName(), SCH_EDIT_FRAME::GetSchematicJunctionSize(), SYMBOL_VIEWER_FRAME::GetSelectedSymbol(), SCH_EDIT_FRAME::importFile(), SCH_EDITOR_CONTROL::ImportFPAssignments(), DIALOG_CONFIG_EQUFILES::Init(), FOOTPRINT_EDIT_FRAME::initLibraryTree(), SCH_EDIT_FRAME::KiwayMailIn(), SYMBOL_EDIT_FRAME::KiwayMailIn(), FOOTPRINT_EDIT_FRAME::KiwayMailIn(), EDA_DRAW_FRAME::LibraryFileBrowser(), PCB_BASE_FRAME::loadFootprint(), CVPCB_MAINFRAME::LoadFootprintFiles(), PCB_EDIT_FRAME::LoadFootprints(), SCH_EDIT_FRAME::LoadProject(), KICAD_MANAGER_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProjectSettings(), PCB_EDIT_FRAME::LoadProjectSettings(), SIM_PLOT_FRAME::LoadSettings(), SCH_EDIT_FRAME::LoadSheetFromFile(), SYMBOL_EDIT_FRAME::LoadSymbolFromCurrentLib(), EDA_BASE_FRAME::LoadWindowState(), SIM_PLOT_FRAME::loadWorkbook(), SIM_PLOT_FRAME::menuSaveWorkbook(), SIM_PLOT_FRAME::menuSaveWorkbookAs(), PANEL_FP_PROPERTIES_3D_MODEL::On3DModelCellChanged(), FOOTPRINT_VIEWER_FRAME::OnActivate(), PANEL_FP_PROPERTIES_3D_MODEL::OnAdd3DModel(), DIALOG_BOARD_SETUP::OnAuxiliaryAction(), PCB_EDIT_FRAME::onBoardLoaded(), KICAD_MANAGER_FRAME::OnBrowseInFileExplorer(), DIALOG_NETLIST_IMPORT::onBrowseNetlistFiles(), WX_HTML_REPORT_PANEL::onBtnSaveToFile(), TEXT_BUTTON_URL::OnButtonClick(), TEXT_BUTTON_FILE_BROWSER::OnButtonClick(), DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton(), DIALOG_SYMBOL_FIELDS_TABLE::OnExport(), DIALOG_EXPORT_STEP::onExportButton(), DIALOG_GENDRILL::OnGenReportFile(), KICAD_MANAGER_FRAME::OnIdle(), SCH_EDIT_FRAME::OnImportProject(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), DIALOG_CONFIG_EQUFILES::OnOkClick(), SCH_EDIT_FRAME::OnOpenCvpcb(), KICAD_MANAGER_FRAME::OnOpenFileInTextEditor(), SCH_EDIT_FRAME::OnOpenPcbnew(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_SCHEMATIC_SETUP::OnPageChanged(), DIALOG_BOARD_SETUP::OnPageChanged(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng(), DIALOG_ERC::OnSaveReport(), DIALOG_DRC::OnSaveReport(), DIALOG_SCH_FIELD_PROPERTIES::onScintillaCharAdded(), DIALOG_TEXT_PROPERTIES::onScintillaCharAdded(), PROPERTIES_FRAME::onScintillaCharAdded(), SYMBOL_VIEWER_FRAME::OnSelectSymbol(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), SCH_EDIT_FRAME::OnUpdatePCB(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL(), PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL(), SCH_EDITOR_CONTROL::Paste(), FOOTPRINT_EDITOR_CONTROL::PasteFootprint(), SCH_BASE_FRAME::PickSymbolFromLibTree(), SYMBOL_EDITOR_CONTROL::PinLibrary(), FOOTPRINT_EDITOR_CONTROL::PinLibrary(), DIALOG_PLOT_SCHEMATIC::plotOneSheetDXF(), DIALOG_PLOT_SCHEMATIC::plotOneSheetHpgl(), DIALOG_CHOOSE_SYMBOL::PopulateFootprintSelector(), SCH_EDITOR_CONTROL::Print(), EDA_DRAW_FRAME::PrintDrawingSheet(), SCH_EDIT_FRAME::PrintPage(), KICAD_MANAGER_FRAME::PrintPrjInfo(), CVPCB_MAINFRAME::readNetListAndFpFiles(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), SYMBOL_VIEWER_FRAME::ReCreateSymbolList(), PANEL_FP_PROPERTIES_3D_MODEL::ReloadModelsFromFootprint(), EDA_3D_VIEWER_FRAME::ReloadRequest(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), FOOTPRINT_EDITOR_CONTROL::RenameFootprint(), SYMBOL_EDIT_FRAME::replaceLibTableEntry(), SCH_EDITOR_CONTROL::RescueLegacyProject(), SCH_EDITOR_CONTROL::RescueSymbolLibTableProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), PCB_EDIT_FRAME::RunEeschema(), FOOTPRINT_EDITOR_CONTROL::SaveAs(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), SYMBOL_EDIT_FRAME::saveLibrary(), PCB_EDIT_FRAME::SavePcbFile(), SCH_EDIT_FRAME::SaveProject(), PCB_EDIT_FRAME::SaveProjectSettings(), DIALOG_BOARD_STATISTICS::saveReportClicked(), SCH_EDIT_FRAME::saveSchematicFile(), EDA_BASE_FRAME::SaveSettings(), SIM_PLOT_FRAME::SaveSettings(), SCH_BASE_FRAME::saveSymbolLibTables(), SIM_PLOT_FRAME::saveWorkbook(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), PCB_BASE_FRAME::SelectFootprintFromLibTree(), PCB_BASE_FRAME::SelectLibrary(), SYMBOL_EDIT_FRAME::SelectLibraryFromList(), PCB_BASE_EDIT_FRAME::selectLibTable(), SYMBOL_EDIT_FRAME::selectSymLibTable(), PCB_EDIT_FRAME::SetBoard(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), SYMBOL_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), SYMBOL_EDIT_FRAME::SetCurSymbol(), PCB_EDIT_FRAME::SetLastPath(), GERBVIEW_FRAME::SetPageSettings(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), EE_INSPECTION_TOOL::ShowDatasheet(), DIALOG_CHOOSE_SYMBOL::ShowFootprintFor(), COMMON_CONTROL::ShowHelp(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SYMBOL_VIEWER_FRAME::ShowModal(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SYMBOL_LIBRARY_MANAGER::symTable(), FP_TREE_SYNCHRONIZING_ADAPTER::Sync(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync(), FOOTPRINT_EDIT_FRAME::SyncLibraryTree(), EDA_3D_VIEWER_FRAME::takeScreenshot(), PCB_EDIT_FRAME::TestStandalone(), DIALOG_EDIT_SYMBOLS_LIBID::TransferDataFromWindow(), NETLIST_DIALOG::TransferDataFromWindow(), DIALOG_SHEET_PROPERTIES::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataToWindow(), SYMBOL_EDITOR_CONTROL::UnpinLibrary(), FOOTPRINT_EDITOR_CONTROL::UnpinLibrary(), SCH_EDIT_FRAME::updateAutoSaveFile(), DIALOG_PAGES_SETTINGS::UpdateDrawingSheetExample(), SCH_EDIT_FRAME::UpdateTitle(), SIM_PLOT_FRAME::updateTitle(), FOOTPRINT_EDIT_FRAME::UpdateTitle(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), PANEL_FP_PROPERTIES_3D_MODEL::validateModelExists(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_FOOTPRINT_PROPERTIES::~DIALOG_FOOTPRINT_PROPERTIES(), EDA_3D_VIEWER_FRAME::~EDA_3D_VIEWER_FRAME(), PANEL_FP_PROPERTIES_3D_MODEL::~PANEL_FP_PROPERTIES_3D_MODEL(), and SCH_EDIT_FRAME::~SCH_EDIT_FRAME().

◆ resetSize()

void DIALOG_SHIM::resetSize ( )
protectedinherited

Clear the existing dialog size and position.

This will cause the dialog size to be clear so the next time the dialog is shown the sizers will layout the dialog accordingly. This useful when there are dialog windows that size changes due to layout dependency hidden controls.

Definition at line 294 of file dialog_shim.cpp.

295{
296 const char* hash_key;
297
298 if( m_hash_key.size() )
299 {
300 // a special case like EDA_LIST_DIALOG, which has multiple uses.
301 hash_key = m_hash_key.c_str();
302 }
303 else
304 {
305 hash_key = typeid(*this).name();
306 }
307
308 std::unordered_map<std::string, wxRect>::iterator it = class_map.find( hash_key );
309
310 if( it == class_map.end() )
311 return;
312
313 wxRect rect = it->second;
314 rect.SetSize( wxSize( 0, 0 ) );
315 class_map[ hash_key ] = rect;
316}
std::string m_hash_key
Definition: dialog_shim.h:203
static std::unordered_map< std::string, wxRect > class_map

References class_map, and DIALOG_SHIM::m_hash_key.

Referenced by DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES().

◆ SetInitialFocus()

void DIALOG_SHIM::SetInitialFocus ( wxWindow *  aWindow)
inlineinherited

Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown.

Definition at line 97 of file dialog_shim.h.

98 {
99 m_initialFocusTarget = aWindow;
100 }

References DIALOG_SHIM::m_initialFocusTarget.

Referenced by FOOTPRINT_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::buildSaveAsDialog(), DIALOG_BOM::DIALOG_BOM(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS(), DIALOG_FIND::DIALOG_FIND(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_FP_PLUGIN_OPTIONS::DIALOG_FP_PLUGIN_OPTIONS(), DIALOG_GET_FOOTPRINT_BY_NAME::DIALOG_GET_FOOTPRINT_BY_NAME(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES(), DIALOG_LIB_TEXTBOX_PROPERTIES::DIALOG_LIB_TEXTBOX_PROPERTIES(), DIALOG_LINE_PROPERTIES::DIALOG_LINE_PROPERTIES(), DIALOG_LOCKED_ITEMS_QUERY::DIALOG_LOCKED_ITEMS_QUERY(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_SCH_FIND::DIALOG_SCH_FIND(), DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_WIRE_BUS_PROPERTIES::DIALOG_WIRE_BUS_PROPERTIES(), EDA_VIEW_SWITCHER::EDA_VIEW_SWITCHER(), HK_PROMPT_DIALOG::HK_PROMPT_DIALOG(), DIALOG_FIELD_PROPERTIES::init(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchAllClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchIDClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchRefClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchSelectedClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchValueClicked(), PANEL_FP_LIB_TABLE::PANEL_FP_LIB_TABLE(), PANEL_SYM_LIB_TABLE::PANEL_SYM_LIB_TABLE(), DIALOG_COPPER_ZONE::TransferDataToWindow(), DIALOG_NON_COPPER_ZONES_EDITOR::TransferDataToWindow(), DIALOG_RULE_AREA_PROPERTIES::TransferDataToWindow(), and WX_TEXT_ENTRY_DIALOG::WX_TEXT_ENTRY_DIALOG().

◆ SetKiway()

void KIWAY_HOLDER::SetKiway ( wxWindow *  aDest,
KIWAY aKiway 
)
inherited

It is only used for debugging, since "this" is not a wxWindow*.

"this" is a KIWAY_HOLDER mix-in.

Parameters
aDestis the recipient of aKiway pointer.
aKiwayis often from a parent window or from KIFACE::CreateWindow().

Definition at line 43 of file kiway_holder.cpp.

44{
45#if defined(DEBUG)
46 // offer a trap point for debugging most any window
47 wxASSERT( aDest );
48 if( !strcmp( typeid(aDest).name(), "DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB" ) )
49 {
50 int breakhere=1;
51 ignore_unused( breakhere );
52 }
53#endif
54
55 ignore_unused( aDest );
56
57 m_kiway = aKiway;
58}
const char * name
Definition: DXF_plotter.cpp:56

References ignore_unused(), KIWAY_HOLDER::m_kiway, and name.

Referenced by BM2CMP_FRAME::BM2CMP_FRAME(), PCB::IFACE::CreateWindow(), InvokePcbLibTableEditor(), InvokeSchEditSymbolLibTable(), PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME(), and SIM_PLOT_FRAME::SIM_PLOT_FRAME().

◆ SetPosition()

void DIALOG_SHIM::SetPosition ( const wxPoint &  aNewPosition)
inherited

Force the position of the dialog to a new position.

Parameters
aNewPositionis the new forced position

Definition at line 197 of file dialog_shim.cpp.

198{
199 wxDialog::SetPosition( aNewPosition );
200
201 // Now update the stored position:
202 const char* hash_key;
203
204 if( m_hash_key.size() )
205 {
206 // a special case like EDA_LIST_DIALOG, which has multiple uses.
207 hash_key = m_hash_key.c_str();
208 }
209 else
210 {
211 hash_key = typeid(*this).name();
212 }
213
214 std::unordered_map<std::string, wxRect>::iterator it = class_map.find( hash_key );
215
216 if( it == class_map.end() )
217 return;
218
219 wxRect rect = it->second;
220 rect.SetPosition( aNewPosition );
221
222 class_map[ hash_key ] = rect;
223}
void SetPosition(const wxString &aStr, const wxString &aDefaultMeasurementUnit, int *aX, int *aY, const wxString &aActualConversion)

References class_map, DIALOG_SHIM::m_hash_key, and PCAD2KICAD::SetPosition().

Referenced by PCB_BASE_FRAME::SelectOneLayer().

◆ setSizeInDU()

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 169 of file dialog_shim.cpp.

170{
171 wxSize sz( x, y );
172 SetSize( ConvertDialogToPixels( sz ) );
173}

Referenced by DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), HTML_MESSAGE_BOX::HTML_MESSAGE_BOX(), and HTML_MESSAGE_BOX::SetDialogSizeInDU().

◆ SetupStandardButtons()

void DIALOG_SHIM::SetupStandardButtons ( std::map< int, wxString >  aLabels = {})
inherited

Definition at line 709 of file dialog_shim.cpp.

710{
711 recursiveDescent( GetSizer(), aLabels );
712}
static void recursiveDescent(wxSizer *aSizer, std::map< int, wxString > &aLabels)

References recursiveDescent().

Referenced by CONVERT_SETTINGS_DIALOG::CONVERT_SETTINGS_DIALOG(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOM::DIALOG_BOM(), DIALOG_BUS_MANAGER::DIALOG_BUS_MANAGER(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CLEANUP_GRAPHICS::DIALOG_CLEANUP_GRAPHICS(), DIALOG_COLOR_PICKER::DIALOG_COLOR_PICKER(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY(), DIALOG_DIELECTRIC_MATERIAL::DIALOG_DIELECTRIC_MATERIAL(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_DRC::DIALOG_DRC(), DIALOG_ERC::DIALOG_ERC(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_FILTER_SELECTION::DIALOG_FILTER_SELECTION(), DIALOG_FOOTPRINT_CHECKER::DIALOG_FOOTPRINT_CHECKER(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_FP_PLUGIN_OPTIONS::DIALOG_FP_PLUGIN_OPTIONS(), DIALOG_GEN_FOOTPRINT_POSITION::DIALOG_GEN_FOOTPRINT_POSITION(), DIALOG_GENDRILL::DIALOG_GENDRILL(), DIALOG_GET_FOOTPRINT_BY_NAME::DIALOG_GET_FOOTPRINT_BY_NAME(), DIALOG_GLOBAL_DELETION::DIALOG_GLOBAL_DELETION(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS(), DIALOG_GLOBAL_LIB_TABLE_CONFIG::DIALOG_GLOBAL_LIB_TABLE_CONFIG(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IMAGE_PROPERTIES::DIALOG_IMAGE_PROPERTIES(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_IMPORT_SETTINGS::DIALOG_IMPORT_SETTINGS(), DIALOG_IMPORTED_LAYERS::DIALOG_IMPORTED_LAYERS(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE(), DIALOG_LIB_NEW_SYMBOL::DIALOG_LIB_NEW_SYMBOL(), DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES(), DIALOG_LIB_TEXTBOX_PROPERTIES::DIALOG_LIB_TEXTBOX_PROPERTIES(), DIALOG_LINE_PROPERTIES::DIALOG_LINE_PROPERTIES(), DIALOG_LOCKED_ITEMS_QUERY::DIALOG_LOCKED_ITEMS_QUERY(), DIALOG_MIGRATE_SETTINGS::DIALOG_MIGRATE_SETTINGS(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_NET_INSPECTOR::DIALOG_NET_INSPECTOR(), DIALOG_NETLIST_IMPORT::DIALOG_NETLIST_IMPORT(), DIALOG_NON_COPPER_ZONES_EDITOR::DIALOG_NON_COPPER_ZONES_EDITOR(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::DIALOG_PAD_PRIMITIVE_POLY_PROPS(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PRIMITIVES_TRANSFORM::DIALOG_PAD_PRIMITIVES_TRANSFORM(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_PCM::DIALOG_PCM(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_PNS_DIFF_PAIR_DIMENSIONS::DIALOG_PNS_DIFF_PAIR_DIMENSIONS(), DIALOG_PNS_LENGTH_TUNING_SETTINGS::DIALOG_PNS_LENGTH_TUNING_SETTINGS(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_PRINT_GENERIC::DIALOG_PRINT_GENERIC(), DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER(), DIALOG_PUSH_PAD_PROPERTIES::DIALOG_PUSH_PAD_PROPERTIES(), DIALOG_REGULATOR_FORM::DIALOG_REGULATOR_FORM(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES(), DIALOG_SCH_IMPORT_SETTINGS::DIALOG_SCH_IMPORT_SETTINGS(), DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SHEET_PROPERTIES::DIALOG_SHEET_PROPERTIES(), DIALOG_SIM_SETTINGS::DIALOG_SIM_SETTINGS(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_UNUSED_PAD_LAYERS::DIALOG_UNUSED_PAD_LAYERS(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), DIALOG_UPDATE_SYMBOL_FIELDS::DIALOG_UPDATE_SYMBOL_FIELDS(), DIALOG_WIRE_BUS_PROPERTIES::DIALOG_WIRE_BUS_PROPERTIES(), EDA_LIST_DIALOG::EDA_LIST_DIALOG(), DIALOG_CONSTRAINTS_REPORTER::FinishInitialization(), HTML_MESSAGE_BOX::HTML_MESSAGE_BOX(), DIALOG_FIELD_PROPERTIES::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_DIALOG::NETLIST_DIALOG(), NETLIST_DIALOG_ADD_GENERATOR::NETLIST_DIALOG_ADD_GENERATOR(), PAGED_DIALOG::PAGED_DIALOG(), DIALOG_CLEANUP_TRACKS_AND_VIAS::setupOKButtonLabel(), WX_TEXT_ENTRY_DIALOG::WX_TEXT_ENTRY_DIALOG(), and WX_UNIT_ENTRY_DIALOG::WX_UNIT_ENTRY_DIALOG().

◆ Show()

bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 226 of file dialog_shim.cpp.

227{
228 bool ret;
229 const char* hash_key;
230
231 if( m_hash_key.size() )
232 {
233 // a special case like EDA_LIST_DIALOG, which has multiple uses.
234 hash_key = m_hash_key.c_str();
235 }
236 else
237 {
238 hash_key = typeid(*this).name();
239 }
240
241 // Show or hide the window. If hiding, save current position and size.
242 // If showing, use previous position and size.
243 if( show )
244 {
245#ifndef __WINDOWS__
246 wxDialog::Raise(); // Needed on OS X and some other window managers (i.e. Unity)
247#endif
248 ret = wxDialog::Show( show );
249
250 // classname is key, returns a zeroed out default EDA_RECT if none existed before.
251 wxRect savedDialogRect = class_map[ hash_key ];
252
253 if( savedDialogRect.GetSize().x != 0 && savedDialogRect.GetSize().y != 0 )
254 {
256 {
257 SetSize( savedDialogRect.GetPosition().x, savedDialogRect.GetPosition().y,
258 wxDialog::GetSize().x, wxDialog::GetSize().y, 0 );
259 }
260 else
261 {
262 SetSize( savedDialogRect.GetPosition().x, savedDialogRect.GetPosition().y,
263 std::max( wxDialog::GetSize().x, savedDialogRect.GetSize().x ),
264 std::max( wxDialog::GetSize().y, savedDialogRect.GetSize().y ),
265 0 );
266 }
267 }
268 else if( m_initialSize != wxDefaultSize )
269 SetSize( m_initialSize );
270
271 // Be sure that the dialog appears in a visible area
272 // (the dialog position might have been stored at the time when it was
273 // shown on another display)
274 if( wxDisplay::GetFromWindow( this ) == wxNOT_FOUND )
275 Centre();
276 }
277 else
278 {
279 // Save the dialog's position & size before hiding, using classname as key
280 class_map[ hash_key ] = wxRect( wxDialog::GetPosition(), wxDialog::GetSize() );
281
282#ifdef __WXMAC__
283 if ( m_eventLoop )
284 m_eventLoop->Exit( GetReturnCode() ); // Needed for APP-MODAL dlgs on OSX
285#endif
286
287 ret = wxDialog::Show( show );
288 }
289
290 return ret;
291}
bool m_useCalculatedSize
Definition: dialog_shim.h:207
wxSize m_initialSize
Definition: dialog_shim.h:225

References class_map, DIALOG_SHIM::m_hash_key, DIALOG_SHIM::m_initialSize, and DIALOG_SHIM::m_useCalculatedSize.

Referenced by FOOTPRINT_EDITOR_CONTROL::CheckFootprint(), EE_INSPECTION_TOOL::CrossProbe(), DRC_TOOL::CrossProbe(), DIALOG_SHIM::EndQuasiModal(), GROUP_TOOL::GroupProperties(), EE_INSPECTION_TOOL::NextMarker(), DRC_TOOL::NextMarker(), SCH_EDIT_FRAME::OnAnnotate(), DIALOG_DRC::OnDRCItemDClick(), DIALOG_ERC::OnERCItemDClick(), DIALOG_CLEANUP_GRAPHICS::OnLeftDClickItem(), DIALOG_CLEANUP_TRACKS_AND_VIAS::OnLeftDClickItem(), DIALOG_FOOTPRINT_CHECKER::OnLeftDClickItem(), GROUP_TOOL::PickNewMember(), EE_INSPECTION_TOOL::PrevMarker(), DRC_TOOL::PrevMarker(), CVPCB_MAINFRAME::readNetListAndFpFiles(), DIALOG_PAD_PROPERTIES::Show(), EDA_VIEW_SWITCHER::Show(), DIALOG_FIND::Show(), DRC_TOOL::ShowDRCDialog(), EE_INSPECTION_TOOL::ShowERCDialog(), SCH_EDIT_FRAME::ShowFindReplaceDialog(), HTML_MESSAGE_BOX::ShowModeless(), DIALOG_SHIM::ShowQuasiModal(), and DIALOG_POSITION_RELATIVE::UpdateAnchor().

◆ ShowQuasiModal()

int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 437 of file dialog_shim.cpp.

438{
439 // This is an exception safe way to zero a pointer before returning.
440 // Yes, even though DismissModal() clears this first normally, this is
441 // here in case there's an exception before the dialog is dismissed.
442 struct NULLER
443 {
444 void*& m_what;
445 NULLER( void*& aPtr ) : m_what( aPtr ) {}
446 ~NULLER() { m_what = nullptr; } // indeed, set it to NULL on destruction
447 } clear_this( (void*&) m_qmodal_loop );
448
449 // release the mouse if it's currently captured as the window having it
450 // will be disabled when this dialog is shown -- but will still keep the
451 // capture making it impossible to do anything in the modal dialog itself
452 wxWindow* win = wxWindow::GetCapture();
453 if( win )
454 win->ReleaseMouse();
455
456 // Get the optimal parent
457 wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
458
459 wxASSERT_MSG( !m_qmodal_parent_disabler, wxT( "Caller using ShowQuasiModal() twice on same "
460 "window?" ) );
461
462 // quasi-modal: disable only my "optimal" parent
464
465 // Apple in its infinite wisdom will raise a disabled window before even passing
466 // us the event, so we have no way to stop it. Instead, we must set an order on
467 // the windows so that the quasi-modal will be pushed in front of the disabled
468 // window when it is raised.
470
471 Show( true );
472
473 m_qmodal_showing = true;
474
475 WX_EVENT_LOOP event_loop;
476
477 m_qmodal_loop = &event_loop;
478
479 event_loop.Run();
480
481 m_qmodal_showing = false;
482
483 return GetReturnCode();
484}
Toggle a window's "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:46
#define WX_EVENT_LOOP
Definition: kiway_player.h:41
void ReparentQuasiModal(wxNonOwnedWindow *aWindow)
Move a window's parent to be the top-level window and force the window to be on top.
Definition: gtk/ui.cpp:65

References DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, DIALOG_SHIM::m_qmodal_showing, KIPLATFORM::UI::ReparentQuasiModal(), DIALOG_SHIM::Show(), and WX_EVENT_LOOP.

Referenced by SCH_EDIT_TOOL::ChangeSymbols(), S3D::Configure3DPaths(), COMMON_CONTROL::ConfigurePaths(), MICROWAVE_TOOL::createFootprint(), MICROWAVE_TOOL::createMicrowaveInductor(), SCH_DRAWING_TOOLS::createNewText(), PCB::IFACE::CreateWindow(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), SYMBOL_EDITOR_EDIT_TOOL::editFieldProperties(), SCH_EDIT_TOOL::editFieldText(), SCH_EDITOR_CONTROL::EditSymbolFields(), SYMBOL_EDITOR_EDIT_TOOL::editSymbolProperties(), GLOBAL_EDIT_TOOL::EditTracksAndVias(), GLOBAL_EDIT_TOOL::ExchangeFootprints(), InvokeCopperZonesEditor(), InvokeDialogCreateBOM(), InvokeDialogEditSymbolsLibId(), InvokeDialogRescueEach(), InvokeNonCopperZonesEditor(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), SYMBOL_VIEWER_FRAME::OnSelectSymbol(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_TOOL::Properties(), EDIT_TOOL::Properties(), SCH_EDITOR_CONTROL::RemapSymbols(), S3D::Select3DModel(), PCB_BASE_FRAME::SelectFootprintFromLibTree(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), PCB_EDIT_FRAME::ShowExchangeFootprintsDialog(), PCB_EDIT_FRAME::ShowFootprintPropertiesDialog(), PCB_BASE_EDIT_FRAME::ShowGraphicItemPropertiesDialog(), PCB_BASE_FRAME::ShowPadPropertiesDialog(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), PCB_BASE_EDIT_FRAME::ShowTextBoxPropertiesDialog(), PCB_BASE_EDIT_FRAME::ShowTextPropertiesDialog(), and PCB_EDIT_FRAME::ToPlotter().

◆ TransferDataFromWindow()

bool LAYERS_MAP_DIALOG::TransferDataFromWindow ( )
overrideprotected

Definition at line 404 of file dialog_layers_select_to_pcb.cpp.

405{
406 if( !wxDialog::TransferDataFromWindow() )
407 return false;
408
409 // Board must have enough copper layers to handle selected internal layers.
411
412 int inner_layer_max = 0;
413
414 for( int ii = 0; ii < GERBER_DRAWLAYERS_COUNT; ++ii )
415 {
416 if( m_layersLookUpTable[ii] < F_Cu )
417 {
418 if( m_layersLookUpTable[ii ] > inner_layer_max )
419 inner_layer_max = m_layersLookUpTable[ii];
420 }
421 }
422
423 // inner_layer_max must be less than (or equal to the number of internal copper layers
424 // internal copper layers = m_exportBoardCopperLayersCount-2
425 if( inner_layer_max > m_exportBoardCopperLayersCount-2 )
426 {
427 wxMessageBox( _( "Exported board does not have enough copper layers to handle selected "
428 "inner layers" ) );
429 return false;
430 }
431
432 return true;
433}

References _, F_Cu, GERBER_DRAWLAYERS_COUNT, m_exportBoardCopperLayersCount, m_layersLookUpTable, and normalizeBrdLayersCount().

◆ vertPixelsFromDU()

int DIALOG_SHIM::vertPixelsFromDU ( int  y) const
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 183 of file dialog_shim.cpp.

184{
185 wxSize sz( 0, y );
186 return ConvertDialogToPixels( sz ).y;
187}

Referenced by DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

Member Data Documentation

◆ m_bSizerLayerList

wxBoxSizer* LAYERS_MAP_DIALOG_BASE::m_bSizerLayerList
protectedinherited

Definition at line 56 of file dialog_layers_select_to_pcb_base.h.

◆ m_buttonReset

wxButton* LAYERS_MAP_DIALOG_BASE::m_buttonReset
protectedinherited

Definition at line 64 of file dialog_layers_select_to_pcb_base.h.

◆ m_buttonRetrieve

wxButton* LAYERS_MAP_DIALOG_BASE::m_buttonRetrieve
protectedinherited

Definition at line 63 of file dialog_layers_select_to_pcb_base.h.

Referenced by initDialog(), and OnStoreSetup().

◆ m_buttonStore

wxButton* LAYERS_MAP_DIALOG_BASE::m_buttonStore
protectedinherited

Definition at line 62 of file dialog_layers_select_to_pcb_base.h.

◆ m_buttonTable

int LAYERS_MAP_DIALOG::m_buttonTable[int(GERBER_DRAWLAYERS_COUNT)+1]
private

Definition at line 130 of file dialog_layers_select_to_pcb.h.

Referenced by initDialog(), OnResetClick(), and OnSelectLayer().

◆ m_comboCopperLayersCount

wxComboBox* LAYERS_MAP_DIALOG_BASE::m_comboCopperLayersCount
protectedinherited

Definition at line 61 of file dialog_layers_select_to_pcb_base.h.

Referenced by initDialog(), and OnGetSetup().

◆ m_exportBoardCopperLayersCount

int LAYERS_MAP_DIALOG::m_exportBoardCopperLayersCount = 2
staticprivate

◆ m_firstPaintEvent

bool DIALOG_SHIM::m_firstPaintEvent
protectedinherited

Definition at line 212 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

◆ m_flexLeftColumnBoxSizer

wxFlexGridSizer* LAYERS_MAP_DIALOG_BASE::m_flexLeftColumnBoxSizer
protectedinherited

Definition at line 57 of file dialog_layers_select_to_pcb_base.h.

Referenced by initDialog().

◆ m_flexRightColumnBoxSizer

wxFlexGridSizer* LAYERS_MAP_DIALOG_BASE::m_flexRightColumnBoxSizer
protectedinherited

Definition at line 59 of file dialog_layers_select_to_pcb_base.h.

Referenced by initDialog().

◆ m_gerberActiveLayersCount

int LAYERS_MAP_DIALOG::m_gerberActiveLayersCount
private

◆ m_hash_key

◆ m_initialFocusTarget

wxWindow* DIALOG_SHIM::m_initialFocusTarget
protectedinherited

Definition at line 213 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint(), and DIALOG_SHIM::SetInitialFocus().

◆ m_initialSize

wxSize DIALOG_SHIM::m_initialSize
protectedinherited

Definition at line 225 of file dialog_shim.h.

Referenced by DIALOG_SHIM::Show().

◆ m_kiway

KIWAY* KIWAY_HOLDER::m_kiway
privateinherited

◆ m_layersList

wxStaticText* LAYERS_MAP_DIALOG::m_layersList[int(GERBER_DRAWLAYERS_COUNT)+1]
private

Definition at line 131 of file dialog_layers_select_to_pcb.h.

Referenced by initDialog(), OnGetSetup(), OnResetClick(), and OnSelectLayer().

◆ m_layersLookUpTable

int LAYERS_MAP_DIALOG::m_layersLookUpTable[GERBER_DRAWLAYERS_COUNT]
private

◆ m_Parent

◆ m_parentFrame

EDA_BASE_FRAME* DIALOG_SHIM::m_parentFrame
protectedinherited

◆ m_qmodal_loop

WX_EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

Definition at line 215 of file dialog_shim.h.

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

◆ m_qmodal_parent_disabler

WDO_ENABLE_DISABLE* DIALOG_SHIM::m_qmodal_parent_disabler
protectedinherited

◆ m_qmodal_showing

bool DIALOG_SHIM::m_qmodal_showing
protectedinherited

Definition at line 217 of file dialog_shim.h.

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

◆ m_sdbSizerButtons

wxStdDialogButtonSizer* LAYERS_MAP_DIALOG_BASE::m_sdbSizerButtons
protectedinherited

Definition at line 66 of file dialog_layers_select_to_pcb_base.h.

◆ m_sdbSizerButtonsCancel

wxButton* LAYERS_MAP_DIALOG_BASE::m_sdbSizerButtonsCancel
protectedinherited

Definition at line 68 of file dialog_layers_select_to_pcb_base.h.

◆ m_sdbSizerButtonsOK

wxButton* LAYERS_MAP_DIALOG_BASE::m_sdbSizerButtonsOK
protectedinherited

Definition at line 67 of file dialog_layers_select_to_pcb_base.h.

◆ m_staticline1

wxStaticLine* LAYERS_MAP_DIALOG_BASE::m_staticline1
protectedinherited

Definition at line 65 of file dialog_layers_select_to_pcb_base.h.

◆ m_staticlineSep

wxStaticLine* LAYERS_MAP_DIALOG_BASE::m_staticlineSep
protectedinherited

Definition at line 58 of file dialog_layers_select_to_pcb_base.h.

Referenced by initDialog().

◆ m_staticTextCopperlayerCount

wxStaticText* LAYERS_MAP_DIALOG_BASE::m_staticTextCopperlayerCount
protectedinherited

Definition at line 60 of file dialog_layers_select_to_pcb_base.h.

◆ m_staticTextLayerSel

wxStaticText* LAYERS_MAP_DIALOG_BASE::m_staticTextLayerSel
protectedinherited

Definition at line 55 of file dialog_layers_select_to_pcb_base.h.

◆ m_tabOrder

◆ m_type

HOLDER_TYPE KIWAY_HOLDER::m_type
privateinherited

Definition at line 85 of file kiway_holder.h.

Referenced by KIWAY_HOLDER::GetType(), and SIM_PLOT_FRAME::onSimFinished().

◆ m_units

◆ m_useCalculatedSize

bool DIALOG_SHIM::m_useCalculatedSize
protectedinherited

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