81 std::vector<EMBEDDED_FILES*> embeddedFilesStack;
83 embeddedFilesStack.push_back(
m_frame->GetBoard()->GetEmbeddedFiles() );
104 m_itemsGrid->ShowHideColumns( cfg->m_FootprintTextShownColumns );
111 double rot_list[] = { 0.0, 90.0, -90.0, 180.0 };
186 cfg->m_FootprintTextShownColumns =
m_itemsGrid->GetShownColumnsAsString();
246 if( !wxDialog::TransferDataToWindow() )
269 wxGridTableMessage tmsg(
m_fields, wxGRIDTABLE_NOTIFY_ROWS_APPENDED,
m_fields->GetNumberRows() );
283 m_cbLocked->SetToolTip(
_(
"Locked footprints cannot be freely moved or oriented on the canvas and can only be "
284 "selected when the 'Locked items' checkbox is checked in the selection filter." ) );
305 if(
m_footprint->GetLocalSolderMaskMargin().has_value() )
310 if(
m_footprint->GetLocalSolderPasteMargin().has_value() )
315 if(
m_footprint->GetLocalSolderPasteMarginRatio().has_value() )
331 wxString jumperGroups;
333 if(
m_footprint->GetDuplicatePadNumbersAreJumpers() )
334 jumperGroups =
_(
"all pads with duplicate numbers" );
340 for(
const wxString& pinNumber :
group )
342 if( !groupTxt.IsEmpty() )
345 groupTxt << pinNumber;
348 if( !jumperGroups.IsEmpty() )
349 jumperGroups <<
"; ";
351 jumperGroups <<
"(" << groupTxt <<
")";
354 if( jumperGroups.IsEmpty() )
367 for(
int col = 0; col <
m_itemsGrid->GetNumberCols(); col++ )
372 int col_size =
m_itemsGrid->GetVisibleWidth( col );
379 col_size = std::max( col_size, GetTextExtent( board->
GetLayerName( layer ) ).x );
382 col_size +=
KiROUND( 14 * GetDPIScaleFactor() ) + 12;
403 if( !DIALOG_SHIM::Validate() )
407 for(
size_t i = 0; i <
m_fields->size(); ++i )
412 if( field.
GetName(
false ).IsEmpty() )
440 else if( width > maxSize )
442 wxString max =
m_frame->StringFromValue( maxSize,
true );
467 else if( height > maxSize )
469 wxString max =
m_frame->StringFromValue( maxSize,
true );
486 wxString clamped =
m_frame->StringFromValue( maxPenWidth,
true );
492 "It will be clamped at %s." ),
522 if( !
m_3dPanel->TransferDataFromWindow() )
529 std::set<wxString> files;
530 std::set<wxString> files_to_delete;
536 files.insert( field.GetText() );
544 if( files.find( field->GetText() ) == files.end() )
545 files_to_delete.insert( field->GetText() );
549 for(
const wxString& file : files_to_delete )
566 newField->
SetText( commit.GetBoard()->ConvertCrossReferencesToKIIDs( field.GetText() ) );
568 if( !field.IsMandatory() )
572 view->
Add( newField );
623 case 1: attributes |=
FP_SMD;
break;
649 bool change_layer =
false;
665 std::vector<FP_3DMODEL>& panelList =
m_3dPanel->GetModelList();
666 std::vector<FP_3DMODEL>* fpList = &
m_footprint->Models();
668 fpList->insert( fpList->end(), panelList.begin(), panelList.end() );
672 commit.Push(
_(
"Edit Footprint Properties" ) );
682 [&]() -> std::pair<int, int>
694 wxGridTableMessage msg(
m_fields, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, 1 );
708 if( row < m_fields->GetMandatoryRowCount() )
710 DisplayError(
this, wxString::Format(
_(
"The first %d fields are mandatory." ),
711 m_fields->GetMandatoryRowCount() ) );
722 wxGridTableMessage msg(
m_fields, wxGRIDTABLE_NOTIFY_ROWS_DELETED, row, 1 );
760 grid->MakeCellVisible( row, col );
766 grid->SetGridCursor( row, col );
768 if( !( col == 0 && row < m_fields->GetMandatoryRowCount() ) )
769 grid->EnableCellEditControl(
true );
771 grid->ShowCellEditControl();
775 wxGridCellEditor* referenceEditor =
grid->GetCellEditor( 0, 0 );
777 if( wxTextEntry* textEntry =
dynamic_cast<wxTextEntry*
>( referenceEditor->GetControl() ) )
780 referenceEditor->DecRef();
constexpr EDA_IU_SCALE pcbIUScale
wxBitmap KiBitmap(BITMAPS aBitmap, int aHeightTag)
Construct a wxBitmap from an image identifier Returns the image from the active theme if the image ha...
wxBitmapBundle KiBitmapBundle(BITMAPS aBitmap, int aMinHeight)
constexpr BOX2I KiROUND(const BOX2D &aBoxD)
virtual void SetLayer(PCB_LAYER_ID aLayer)
Set the layer this item is on.
void SetFPRelativePosition(const VECTOR2I &aPos)
Information pertinent to a Pcbnew printed circuit board.
const wxString GetLayerName(PCB_LAYER_ID aLayer) const
Return the name of a aLayer.
const LSET & GetEnabledLayers() const
A proxy function that calls the corresponding function in m_BoardSettings.
std::vector< wxWindow * > m_tabOrder
void SetInitialFocus(wxWindow *aWindow)
Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown.
void SetupStandardButtons(std::map< int, wxString > aLabels={})
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
virtual const wxString & GetText() const
Return the string associated with the text object.
virtual void SetVisible(bool aVisible)
virtual void SetText(const wxString &aText)
int GetTextThickness() const
VECTOR2I GetTextSize() const
Add mouse and command handling (such as cut, copy, and paste) to a WX_GRID instance.
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1) override
Add a VIEW_ITEM to the view.
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
The main frame for Pcbnew.
void SetOrdinal(int aOrdinal)
wxString GetName(bool aUseDefaultName=true) const
Return the field name (not translated).
PCB_FIELD * CloneField() const
Same as Clone, but returns a PCB_FIELD item.
void StyleFromSettings(const BOARD_DESIGN_SETTINGS &settings, bool aCheckSide) override
static S3D_CACHE * Get3DCacheManager(PROJECT *aProject, bool updateProjDir=false)
Return a pointer to an instance of the 3D cache manager.
void FlushCache(bool closePlugins=true)
Free all data in the cache and by default closes all plugins.
void DisplayError(wxWindow *aParent, const wxString &aText)
Display an error or warning message box with aMessage.
This file is part of the common library.
const int minSize
Push and Shove router track width and via size dialog.
Declaration of the eda_3d_viewer class.
#define TEXT_MIN_SIZE_MM
Minimum text size (1 micron).
#define TEXT_MAX_SIZE_MM
Maximum text size in mm (~10 inches)
int ClampTextPenSize(int aPenSize, int aSize, bool aStrict)
Pen width should not allow characters to become cluttered up in their own fatness.
static const std::string KiCadUriPrefix
PCB_LAYER_ID
A quick note on layer IDs:
KICOMMON_API wxFont GetInfoFont(wxWindow *aWindow)
KICOMMON_API wxFont GetSmallInfoFont(wxWindow *aWindow)
KICOMMON_API wxFont GetControlFont(wxWindow *aWindow)
KICOMMON_API void SelectReferenceNumber(wxTextEntry *aTextEntry)
Select the number (or "?") in a reference for ease of editing.
wxString GetUserFieldName(int aFieldNdx, bool aTranslateForHI)
@ USER
The field ID hasn't been set yet; field is invalid.
VECTOR2< int32_t > VECTOR2I
@ THERMAL
Use thermal relief for pads.
@ NONE
Pads are not covered.
@ FULL
pads are covered by copper