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

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

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 486 of file dialog_shim.cpp.

487{
488 // Hook up validator and transfer data from controls handling so quasi-modal dialogs
489 // handle validation in the same way as other dialogs.
490 if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
491 return;
492
493 SetReturnCode( retCode );
494
495 if( !IsQuasiModal() )
496 {
497 wxFAIL_MSG( wxT( "Either DIALOG_SHIM::EndQuasiModal was called twice, or ShowQuasiModal"
498 "wasn't called" ) );
499 return;
500 }
501
502 if( m_qmodal_loop )
503 {
504 if( m_qmodal_loop->IsRunning() )
505 m_qmodal_loop->Exit( 0 );
506 else
507 m_qmodal_loop->ScheduleExit( 0 );
508
509 m_qmodal_loop = nullptr;
510 }
511
513 m_qmodal_parent_disabler = nullptr;
514
515 Show( false );
516}
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(), DIALOG_EXPORT_NETLIST::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(), DIALOG_EXPORT_NETLIST::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 444 of file dialog_layers_select_to_pcb.cpp.

445{
446 int numKnownGerbers = 0;
447
448 // We can automatically map Gerbers using different techniques. The first thing we
449 // try is to see if any of the loaded Gerbers were created by or use the
450 // Altium/Protel file extensions
451 numKnownGerbers += findNumAltiumGerbersLoaded( aGerber2KicadMapping );
452
453 // Next we check if any of the loaded Gerbers are X2 Gerbers and if they contain
454
455 // layer information in "File Functions". For info about X2 Gerbers see
456 // http://www.ucamco.com/files/downloads/file/81/the_gerber_file_format_specification.pdf
457 numKnownGerbers += findNumX2GerbersLoaded( aGerber2KicadMapping );
458
459 // Finally, check if any of the loaded Gerbers use the KiCad naming conventions
460 numKnownGerbers += findNumKiCadGerbersLoaded( aGerber2KicadMapping );
461
462 return numKnownGerbers;
463}
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 466 of file dialog_layers_select_to_pcb.cpp.

467{
468 // The next comment preserves initializer formatting below it
469 // clang-format off
470 // This map contains the known Altium file extensions for Gerbers that we care about,
471 // along with their corresponding KiCad layer
472 std::map<wxString, PCB_LAYER_ID> altiumExt{
473 { wxT( "GTL" ), F_Cu }, // Top copper
474 { wxT( "G1" ), In1_Cu }, // Inner layers 1 - 30
475 { wxT( "G2" ), In2_Cu },
476 { wxT( "G3" ), In3_Cu },
477 { wxT( "G4" ), In4_Cu },
478 { wxT( "G5" ), In5_Cu },
479 { wxT( "G6" ), In6_Cu },
480 { wxT( "G7" ), In7_Cu },
481 { wxT( "G8" ), In8_Cu },
482 { wxT( "G9" ), In9_Cu },
483 { wxT( "G10" ), In10_Cu },
484 { wxT( "G11" ), In11_Cu },
485 { wxT( "G12" ), In12_Cu },
486 { wxT( "G13" ), In13_Cu },
487 { wxT( "G14" ), In14_Cu },
488 { wxT( "G15" ), In15_Cu },
489 { wxT( "G16" ), In16_Cu },
490 { wxT( "G17" ), In17_Cu },
491 { wxT( "G18" ), In18_Cu },
492 { wxT( "G19" ), In19_Cu },
493 { wxT( "G20" ), In20_Cu },
494 { wxT( "G21" ), In21_Cu },
495 { wxT( "G22" ), In22_Cu },
496 { wxT( "G23" ), In23_Cu },
497 { wxT( "G24" ), In24_Cu },
498 { wxT( "G25" ), In25_Cu },
499 { wxT( "G26" ), In26_Cu },
500 { wxT( "G27" ), In27_Cu },
501 { wxT( "G28" ), In28_Cu },
502 { wxT( "G29" ), In29_Cu },
503 { wxT( "G30" ), In30_Cu },
504 { wxT( "GBL" ), B_Cu }, // Bottom copper
505 { wxT( "GTP" ), F_Paste }, // Paste top
506 { wxT( "GBP" ), B_Paste }, // Paste bottom
507 { wxT( "GTO" ), F_SilkS }, // Silkscreen top
508 { wxT( "GBO" ), B_SilkS }, // Silkscreen bottom
509 { wxT( "GTS" ), F_Mask }, // Soldermask top
510 { wxT( "GBS" ), B_Mask }, // Soldermask bottom
511 { wxT( "GM1" ), Eco1_User }, // Altium mechanical layer 1
512 { wxT( "GM2" ), Eco2_User }, // Altium mechanical layer 2
513 { wxT( "GKO" ), Edge_Cuts } // PCB Outline
514 };
515 // clang-format on
516
517 std::map<wxString, PCB_LAYER_ID>::iterator it;
518
519 int numAltiumMatches = 0; // Assume we won't find Altium Gerbers
520
522
523 // If the passed vector isn't empty but is too small to hold the loaded
524 // Gerbers, then bail because something isn't right.
525
526 if( ( aGerber2KicadMapping.size() != 0 )
527 && ( aGerber2KicadMapping.size() != (size_t) m_gerberActiveLayersCount ) )
528 return numAltiumMatches;
529
530 // If the passed vector is empty, set it to the same number of elements as there
531 // are loaded Gerbers, and set each to "UNSELECTED_LAYER"
532
533 if( aGerber2KicadMapping.size() == 0 )
534 aGerber2KicadMapping.assign( m_gerberActiveLayersCount, UNSELECTED_LAYER );
535
536 // Loop through all loaded Gerbers looking for any with Altium specific extensions
537 for( int ii = 0; ii < m_gerberActiveLayersCount; ii++ )
538 {
539 if( images->GetGbrImage( ii ) )
540 {
541 // Get file name of Gerber loaded on this layer.
542 wxFileName fn( images->GetGbrImage( ii )->m_FileName );
543
544 // Get uppercase version of file extension
545 wxString FileExt = fn.GetExt();
546 FileExt.MakeUpper();
547
548 // Check for matching Altium Gerber file extension we'll handle
549 it = altiumExt.find( FileExt );
550
551 if( it != altiumExt.end() )
552 {
553 // We got a match, so store the KiCad layer number. We verify it's set to
554 // "UNSELECTED_LAYER" in case the passed vector already had entries
555 // matched to other known Gerber files. This will preserve them.
556
557 if( aGerber2KicadMapping[ii] == UNSELECTED_LAYER )
558 {
559 aGerber2KicadMapping[ii] = it->second;
560 numAltiumMatches++;
561 }
562 }
563 }
564 }
565
566 // Return number of Altium Gerbers we found. Each index in the passed vector corresponds to
567 // a loaded Gerber layer, and the entry will contain the index to the matching
568 // KiCad layer for Altium Gerbers, or "UNSELECTED_LAYER" for the rest.
569 return numAltiumMatches;
570}
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)
wxString m_FileName
Full File Name for this layer.
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 573 of file dialog_layers_select_to_pcb.cpp.

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

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

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

Referenced by CONVERT_SETTINGS_DIALOG::CONVERT_SETTINGS_DIALOG(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_ASSIGN_NETCLASS::DIALOG_ASSIGN_NETCLASS(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOM::DIALOG_BOM(), 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_NETLIST::DIALOG_EXPORT_NETLIST(), 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_IBIS_PARSER_REPORTER::DIALOG_IBIS_PARSER_REPORTER(), DIALOG_IMAGE_PROPERTIES::DIALOG_IMAGE_PROPERTIES(), DIALOG_IMPORT_NETLIST::DIALOG_IMPORT_NETLIST(), 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_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_PNS_SETTINGS::DIALOG_PNS_SETTINGS(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_PRINT_GENERIC::DIALOG_PRINT_GENERIC(), DIALOG_PRINT_PCBNEW::DIALOG_PRINT_PCBNEW(), 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_SIM_MODEL< T_symbol, T_field >::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_VIEW_DIALOG::NETLIST_VIEW_DIALOG(), DIALOG_SHEET_PROPERTIES::OnInitDlg(), DIALOG_SIM_COMMAND::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 175 of file dialog_shim.cpp.

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

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 )
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)
#define GERBER_DRAWLAYERS_COUNT
Definition: layer_ids.h:402
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, 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(), IMPORT_PROJ_HELPER::AssociateFileWithProj(), 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(), SYMBOL_EDIT_FRAME::DdAddLibrary(), 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(), 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(), SIM_PLOT_FRAME::menuExit(), 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(), KIGFX::WX_VIEW_CONTROLS::onMotion(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), 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(), CVPCB_MAINFRAME::SendComponentSelectionToSch(), SCH_EDIT_FRAME::SendCrossProbeClearHighlight(), PCB_EDIT_FRAME::SendCrossProbeItem(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), SCH_EDIT_FRAME::sendNetlistToCvpcb(), SCH_EDIT_FRAME::SendSelectItemsToPcb(), PCB_EDIT_FRAME::SendSelectItemsToSch(), 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(), EDA_BASE_FRAME::ShowPreferences(), 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 532 of file dialog_shim.cpp.

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

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

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

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 307 of file dialog_layers_select_to_pcb.cpp.

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

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

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

◆ OnGridEditorShown()

void DIALOG_SHIM::OnGridEditorShown ( wxGridEvent &  event)
privateinherited

Definition at line 634 of file dialog_shim.cpp.

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

◆ OnModify()

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 386 of file dialog_shim.cpp.

387{
389 {
391
392 selectAllInTextCtrls( GetChildren() );
393
396 else
397 KIPLATFORM::UI::ForceFocus( this ); // Focus the dialog itself
398
399 m_firstPaintEvent = false;
400 }
401
402 event.Skip();
403}
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 // wxWidgets doesn't appear to invalidate / update the StaticText displays for color change
285 // so we do it manually
286 Refresh();
287 Update();
288}
void Refresh()
Update the board display after modifying it by a python script (note: it is automatically called by a...

References _, m_buttonTable, m_gerberActiveLayersCount, m_layersList, m_layersLookUpTable, Refresh(), and UNSELECTED_LAYER.

◆ OnSelectLayer()

void LAYERS_MAP_DIALOG::OnSelectLayer ( wxCommandEvent &  event)
private

Definition at line 349 of file dialog_layers_select_to_pcb.cpp.

350{
351 int ii = event.GetId() - ID_BUTTON_0;
352
353 if( ii < 0 || ii >= GERBER_DRAWLAYERS_COUNT )
354 {
355 wxFAIL_MSG( wxT( "Bad layer id" ) );
356 return;
357 }
358
359 int jj = m_layersLookUpTable[ m_buttonTable[ii] ];
360
361 if( jj != UNSELECTED_LAYER && jj != UNDEFINED_LAYER && !IsValidLayer( jj ) )
362 jj = B_Cu; // (Defaults to "Copper" layer.)
363
364 // Get file name of Gerber loaded on this layer
365 wxFileName fn( m_Parent->GetGerberLayout()->GetImagesList()->GetGbrImage( ii )->m_FileName );
366
367 // Surround it with quotes to make it stand out on the dialog title bar
368 wxString layerName = wxT( "\"" ) + fn.GetFullName() + wxT( "\"" );
369
370 // Display dialog to let user select a layer for the Gerber
372
373 if( jj != UNSELECTED_LAYER && jj != UNDEFINED_LAYER && !IsValidLayer( jj ) )
374 return;
375
376 if( jj != m_layersLookUpTable[m_buttonTable[ii]] )
377 {
379
380 if( jj == UNSELECTED_LAYER )
381 {
382 m_layersList[ii]->SetLabel( _( "Do not export" ) );
383
384 // Change the text color to blue (to highlight
385 // that this layer is *not* being exported)
386 m_layersList[ii]->SetForegroundColour( *wxBLUE );
387 }
388 else if( jj == UNDEFINED_LAYER )
389 {
390 m_layersList[ii]->SetLabel( _( "Hole data" ) );
391
392 // Change the text color to fuchsia (to highlight
393 // that this layer *is* being exported)
394 m_layersList[ii]->SetForegroundColour( wxColour( 255, 0, 128 ) );
395 }
396 else
397 {
398 m_layersList[ii]->SetLabel( GetPCBDefaultLayerName( jj ) );
399
400 // Change the text color to fuchsia (to highlight
401 // that this layer *is* being exported)
402 m_layersList[ii]->SetForegroundColour( wxColour( 255, 0, 128 ) );
403 }
404 }
405 // wxWidgets doesn't appear to invalidate / update the StaticText displays for color change
406 // so we do it manually
407 Refresh();
408 Update();
409}
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:803

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, Refresh(), 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 291 of file dialog_layers_select_to_pcb.cpp.

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

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(), PCB_BASE_FRAME::canCloseWindow(), SIM_PLOT_FRAME::canCloseWindow(), PANEL_FP_PROPERTIES_3D_MODEL::Cfg3DPath(), SYMBOL_VIEWER_FRAME::ClickOnLibList(), KICAD_MANAGER_FRAME::CloseProject(), PCB_BASE_EDIT_FRAME::createNewLibrary(), PCB_BASE_EDIT_FRAME::CreateNewProjectLibrary(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), SCH_EDIT_FRAME::CreateScreens(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_ASSIGN_NETCLASS::DIALOG_ASSIGN_NETCLASS(), 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_IBIS_PARSER_REPORTER::DIALOG_IBIS_PARSER_REPORTER(), DIALOG_IMPORT_NETLIST::DIALOG_IMPORT_NETLIST(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), 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(), SCH_EDITOR_CONTROL::ExportSymbolsToLibrary(), 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_NAVIGATE_TOOL::HypertextCommand(), SCH_EDIT_FRAME::importFile(), SCH_EDITOR_CONTROL::ImportFPAssignments(), DIALOG_CONFIG_EQUFILES::Init(), FIELDS_GRID_TABLE< T >::initGrid(), FOOTPRINT_EDIT_FRAME::initLibraryTree(), SYMBOL_EDIT_FRAME::KiwayMailIn(), FOOTPRINT_EDIT_FRAME::KiwayMailIn(), EDA_DRAW_FRAME::LibraryFileBrowser(), SYMBOL_VIEWER_FRAME::loadAllLibraries(), 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::LoadSymbol(), 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_IMPORT_NETLIST::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_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_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT::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(), DIALOG_PAGES_SETTINGS::OnWksFileSelection(), 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(), LIB_TREE_MODEL_ADAPTER::PinLibrary(), DIALOG_CHOOSE_SYMBOL::PopulateFootprintSelector(), SCH_EDITOR_CONTROL::Print(), EDA_DRAW_FRAME::PrintDrawingSheet(), SCH_EDIT_FRAME::PrintPage(), KICAD_MANAGER_FRAME::PrintPrjInfo(), CVPCB_MAINFRAME::readNetListAndFpFiles(), APPEARANCE_CONTROLS::rebuildNets(), 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(), SCH_EDIT_FRAME::SaveProjectSettings(), 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(), SCH_BASE_FRAME::SelectLibraryFromList(), PCB_BASE_EDIT_FRAME::selectLibTable(), SCH_BASE_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(), EE_INSPECTION_TOOL::ShowDatasheet(), DIALOG_CHOOSE_SYMBOL::ShowFootprintFor(), COMMON_CONTROL::ShowHelp(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SYMBOL_VIEWER_FRAME::ShowModal(), APPEARANCE_CONTROLS::showNetclass(), 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(), DIALOG_EXPORT_NETLIST::TransferDataFromWindow(), DIALOG_SHEET_PROPERTIES::TransferDataFromWindow(), DIALOG_ASSIGN_NETCLASS::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataToWindow(), SYMBOL_EDITOR_CONTROL::UnpinLibrary(), FOOTPRINT_EDITOR_CONTROL::UnpinLibrary(), LIB_TREE_MODEL_ADAPTER::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(), SIM_PLOT_FRAME::UpdateTunerValue(), 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 293 of file dialog_shim.cpp.

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

197{
198 wxDialog::SetPosition( aNewPosition );
199
200 // Now update the stored position:
201 const char* hash_key;
202
203 if( m_hash_key.size() )
204 {
205 // a special case like EDA_LIST_DIALOG, which has multiple uses.
206 hash_key = m_hash_key.c_str();
207 }
208 else
209 {
210 hash_key = typeid(*this).name();
211 }
212
213 std::unordered_map<std::string, wxRect>::iterator it = class_map.find( hash_key );
214
215 if( it == class_map.end() )
216 return;
217
218 wxRect rect = it->second;
219 rect.SetPosition( aNewPosition );
220
221 class_map[ hash_key ] = rect;
222}
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 168 of file dialog_shim.cpp.

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

Referenced by 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 708 of file dialog_shim.cpp.

709{
710 recursiveDescent( GetSizer(), aLabels );
711}
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_ASSIGN_NETCLASS::DIALOG_ASSIGN_NETCLASS(), DIALOG_BOM::DIALOG_BOM(), 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_NETLIST::DIALOG_EXPORT_NETLIST(), 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_IBIS_PARSER_REPORTER::DIALOG_IBIS_PARSER_REPORTER(), DIALOG_IMAGE_PROPERTIES::DIALOG_IMAGE_PROPERTIES(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_IMPORT_NETLIST::DIALOG_IMPORT_NETLIST(), 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_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_PNS_SETTINGS::DIALOG_PNS_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_COMMAND::DIALOG_SIM_COMMAND(), 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(), EDA_REORDERABLE_LIST_DIALOG::EDA_REORDERABLE_LIST_DIALOG(), DIALOG_CONSTRAINTS_REPORTER::FinishInitialization(), HTML_MESSAGE_BOX::HTML_MESSAGE_BOX(), DIALOG_FIELD_PROPERTIES::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), 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 225 of file dialog_shim.cpp.

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

437{
438 // This is an exception safe way to zero a pointer before returning.
439 // Yes, even though DismissModal() clears this first normally, this is
440 // here in case there's an exception before the dialog is dismissed.
441 struct NULLER
442 {
443 void*& m_what;
444 NULLER( void*& aPtr ) : m_what( aPtr ) {}
445 ~NULLER() { m_what = nullptr; } // indeed, set it to NULL on destruction
446 } clear_this( (void*&) m_qmodal_loop );
447
448 // release the mouse if it's currently captured as the window having it
449 // will be disabled when this dialog is shown -- but will still keep the
450 // capture making it impossible to do anything in the modal dialog itself
451 wxWindow* win = wxWindow::GetCapture();
452 if( win )
453 win->ReleaseMouse();
454
455 // Get the optimal parent
456 wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
457
458 wxASSERT_MSG( !m_qmodal_parent_disabler, wxT( "Caller using ShowQuasiModal() twice on same "
459 "window?" ) );
460
461 // quasi-modal: disable only my "optimal" parent
463
464 // Apple in its infinite wisdom will raise a disabled window before even passing
465 // us the event, so we have no way to stop it. Instead, we must set an order on
466 // the windows so that the quasi-modal will be pushed in front of the disabled
467 // window when it is raised.
469
470 Show( true );
471
472 m_qmodal_showing = true;
473
474 WX_EVENT_LOOP event_loop;
475
476 m_qmodal_loop = &event_loop;
477
478 event_loop.Run();
479
480 m_qmodal_showing = false;
481
482 return GetReturnCode();
483}
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(), MICROWAVE_TOOL::createFootprint(), PCB::IFACE::CreateKiWindow(), MICROWAVE_TOOL::createMicrowaveInductor(), SCH_DRAWING_TOOLS::createNewText(), 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_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 412 of file dialog_layers_select_to_pcb.cpp.

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

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

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

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

◆ 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 65 of file dialog_layers_select_to_pcb_base.h.

◆ m_sdbSizerButtonsCancel

wxButton* LAYERS_MAP_DIALOG_BASE::m_sdbSizerButtonsCancel
protectedinherited

Definition at line 67 of file dialog_layers_select_to_pcb_base.h.

◆ m_sdbSizerButtonsOK

wxButton* LAYERS_MAP_DIALOG_BASE::m_sdbSizerButtonsOK
protectedinherited

Definition at line 66 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: