Pcbnew header housekeeping round 2.

This commit is contained in:
Wayne Stambaugh 2021-06-04 12:21:48 -04:00
parent 2a6c7a7c0f
commit c69c68a558
31 changed files with 479 additions and 517 deletions

View File

@ -3,9 +3,9 @@
* *
* Copyright (C) 2012 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr * Copyright (C) 2012 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr
* Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com> * Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net> * Copyright (C) 2011 Wayne Stambaugh <stambaughw@gmail.com>
* *
* Copyright (C) 1992-2015 KiCad Developers, see change_log.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -43,8 +43,7 @@ class FOOTPRINT;
#define AR_SIDE_BOTTOM 1 #define AR_SIDE_BOTTOM 1
/** /**
* AR_MATRIX * Handle the matrix routing that describes the actual board.
* handle the matrix routing that describes the actual board
*/ */
class AR_MATRIX class AR_MATRIX
{ {
@ -52,24 +51,6 @@ public:
typedef unsigned char MATRIX_CELL; typedef unsigned char MATRIX_CELL;
typedef int DIST_CELL; typedef int DIST_CELL;
MATRIX_CELL* m_BoardSide[AR_MAX_ROUTING_LAYERS_COUNT]; // the image map of 2 board sides
DIST_CELL* m_DistSide[AR_MAX_ROUTING_LAYERS_COUNT]; // the image map of 2 board sides:
// distance to cells
int m_RoutingLayersCount; // Number of layers for autorouting (0 or 1)
int m_GridRouting; // Size of grid for autoplace/autoroute
EDA_RECT m_BrdBox; // Actual board bounding box
int m_Nrows, m_Ncols; // Matrix size
int m_MemSize; // Memory requirement, just for statistics
int m_RouteCount; // Number of routes
PCB_LAYER_ID m_routeLayerTop;
PCB_LAYER_ID m_routeLayerBottom;
private:
// a pointer to the current selected cell operation
void ( AR_MATRIX::*m_opWriteCell )( int aRow, int aCol, int aSide, MATRIX_CELL aCell );
public:
enum CELL_OP enum CELL_OP
{ {
WRITE_CELL = 0, WRITE_CELL = 0,
@ -88,9 +69,8 @@ public:
} }
/** /**
* function GetBrdCoordOrigin * @return the board coordinate corresponding to the routing matrix origin ( board
* @return the board coordinate corresponding to the * coordinate offset ).
* routing matrix origin ( board coordinate offset )
*/ */
wxPoint GetBrdCoordOrigin() wxPoint GetBrdCoordOrigin()
{ {
@ -98,18 +78,17 @@ public:
} }
/** /**
* Function ComputeMatrixSize * Calculate the number of rows and columns of dimensions of \a aPcb for routing and
* calculates the number of rows and columns of dimensions of \a aPcb for routing and
* automatic calculation of area. * automatic calculation of area.
* @param aPcb = the physical board *
* @param aUseBoardEdgesOnly = true to use board edges only, * @param aPcb is the physical board.
* = false to use the full board bounding box (default) * @param aUseBoardEdgesOnly set to true to use board edges only or false to use the full
* board bounding box (default).
*/ */
bool ComputeMatrixSize( const EDA_RECT& aBoundingBox ); bool ComputeMatrixSize( const EDA_RECT& aBoundingBox );
/** /**
* Function InitBoard * Initialize the data structures.
* initializes the data structures.
* *
* @return the amount of memory used or -1 if default. * @return the amount of memory used or -1 if default.
*/ */
@ -155,6 +134,24 @@ private:
void traceArc( int ux0, int uy0, int ux1, int uy1, double ArcAngle, int lg, LAYER_NUM layer, void traceArc( int ux0, int uy0, int ux1, int uy1, double ArcAngle, int lg, LAYER_NUM layer,
int color, AR_MATRIX::CELL_OP op_logic ); int color, AR_MATRIX::CELL_OP op_logic );
public:
MATRIX_CELL* m_BoardSide[AR_MAX_ROUTING_LAYERS_COUNT]; // the image map of 2 board sides
DIST_CELL* m_DistSide[AR_MAX_ROUTING_LAYERS_COUNT]; // the image map of 2 board sides:
// distance to cells
int m_RoutingLayersCount; // Number of layers for autorouting (0 or 1)
int m_GridRouting; // Size of grid for autoplace/autoroute
EDA_RECT m_BrdBox; // Actual board bounding box
int m_Nrows, m_Ncols; // Matrix size
int m_MemSize; // Memory requirement, just for statistics
int m_RouteCount; // Number of routes
PCB_LAYER_ID m_routeLayerTop;
PCB_LAYER_ID m_routeLayerBottom;
private:
// a pointer to the current selected cell operation
void ( AR_MATRIX::*m_opWriteCell )( int aRow, int aCol, int aSide, MATRIX_CELL aCell );
}; };
#endif #endif

View File

@ -171,13 +171,6 @@ public:
}; };
DECL_VEC_FOR_SWIG( MARKERS, PCB_MARKER* )
DECL_VEC_FOR_SWIG( ZONES, ZONE* )
DECL_DEQ_FOR_SWIG( TRACKS, TRACK* )
// Dequeue rather than Vector just so we can use moveUnflaggedItems in pcbnew_control.cpp
DECL_DEQ_FOR_SWIG( GROUPS, PCB_GROUP* )
/** /**
* Flags to specify how the board is being used. * Flags to specify how the board is being used.
*/ */

View File

@ -156,32 +156,6 @@ public:
std::list<CN_ITEM*> m_items; std::list<CN_ITEM*> m_items;
}; };
private:
CN_LIST m_itemList;
std::unordered_map<const BOARD_ITEM*, ITEM_MAP_ENTRY> m_itemMap;
CLUSTERS m_connClusters;
CLUSTERS m_ratsnestClusters;
std::vector<bool> m_dirtyNets;
PROGRESS_REPORTER* m_progressReporter = nullptr;
void searchConnections();
void propagateConnections( BOARD_COMMIT* aCommit = nullptr,
PROPAGATE_MODE aMode = PROPAGATE_MODE::SKIP_CONFLICTS );
template <class Container, class BItem>
void add( Container& c, BItem brditem )
{
auto item = c.Add( brditem );
m_itemMap[ brditem ] = ITEM_MAP_ENTRY( item );
}
void markItemNetAsDirty( const BOARD_ITEM* aItem );
public:
CN_CONNECTIVITY_ALGO() {} CN_CONNECTIVITY_ALGO() {}
~CN_CONNECTIVITY_ALGO() { Clear(); } ~CN_CONNECTIVITY_ALGO() { Clear(); }
@ -238,9 +212,9 @@ public:
const CLUSTERS SearchClusters( CLUSTER_SEARCH_MODE aMode ); const CLUSTERS SearchClusters( CLUSTER_SEARCH_MODE aMode );
/** /**
* Propagates nets from pads to other items in clusters * Propagate nets from pads to other items in clusters.
* @param aCommit is used to store undo information for items modified by the call * @param aCommit is used to store undo information for items modified by the call.
* @param aMode controls how clusters with conflicting nets are resolved * @param aMode controls how clusters with conflicting nets are resolved.
*/ */
void PropagateNets( BOARD_COMMIT* aCommit = nullptr, void PropagateNets( BOARD_COMMIT* aCommit = nullptr,
PROPAGATE_MODE aMode = PROPAGATE_MODE::SKIP_CONFLICTS ); PROPAGATE_MODE aMode = PROPAGATE_MODE::SKIP_CONFLICTS );
@ -248,10 +222,12 @@ public:
void FindIsolatedCopperIslands( ZONE* aZone, PCB_LAYER_ID aLayer, std::vector<int>& aIslands ); void FindIsolatedCopperIslands( ZONE* aZone, PCB_LAYER_ID aLayer, std::vector<int>& aIslands );
/** /**
* Finds the copper islands that are not connected to a net. These are added to * Find the copper islands that are not connected to a net.
* the m_islands vector. *
* These are added to the m_islands vector.
* N.B. This must be called after aZones has been refreshed. * N.B. This must be called after aZones has been refreshed.
* @param: aZones The set of zones to search for islands *
* @param: aZones is the set of zones to search for islands.
*/ */
void FindIsolatedCopperIslands( std::vector<CN_ZONE_ISOLATED_ISLAND_LIST>& aZones ); void FindIsolatedCopperIslands( std::vector<CN_ZONE_ISOLATED_ISLAND_LIST>& aZones );
@ -279,9 +255,34 @@ public:
aFunc( *item ); aFunc( *item );
} }
void MarkNetAsDirty( int aNet ); void MarkNetAsDirty( int aNet );
void SetProgressReporter( PROGRESS_REPORTER* aReporter ); void SetProgressReporter( PROGRESS_REPORTER* aReporter );
private:
void searchConnections();
void propagateConnections( BOARD_COMMIT* aCommit = nullptr,
PROPAGATE_MODE aMode = PROPAGATE_MODE::SKIP_CONFLICTS );
template <class Container, class BItem>
void add( Container& c, BItem brditem )
{
auto item = c.Add( brditem );
m_itemMap[ brditem ] = ITEM_MAP_ENTRY( item );
}
void markItemNetAsDirty( const BOARD_ITEM* aItem );
CN_LIST m_itemList;
std::unordered_map<const BOARD_ITEM*, ITEM_MAP_ENTRY> m_itemMap;
CLUSTERS m_connClusters;
CLUSTERS m_ratsnestClusters;
std::vector<bool> m_dirtyNets;
PROGRESS_REPORTER* m_progressReporter = nullptr;
}; };
class CN_VISITOR class CN_VISITOR

View File

@ -68,7 +68,6 @@ public:
bool Valid() const; bool Valid() const;
CN_ITEM* Item() const CN_ITEM* Item() const
{ {
return m_item; return m_item;

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2010-2014 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr * Copyright (C) 2010-2014 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr
* Copyright (C) 1992-2019 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -34,12 +34,11 @@ class PCB_BASE_FRAME;
class DIALOG_CLEANUP_GRAPHICS: public DIALOG_CLEANUP_GRAPHICS_BASE class DIALOG_CLEANUP_GRAPHICS: public DIALOG_CLEANUP_GRAPHICS_BASE
{ {
PCB_BASE_FRAME* m_parentFrame; public:
bool m_isFootprintEditor; DIALOG_CLEANUP_GRAPHICS( PCB_BASE_FRAME* aParent, bool aIsFootprintEditor );
RC_TREE_MODEL* m_changesTreeModel; ~DIALOG_CLEANUP_GRAPHICS();
std::vector<std::shared_ptr<CLEANUP_ITEM> > m_items;
private:
void doCleanup( bool aDryRun ); void doCleanup( bool aDryRun );
void OnCheckBox( wxCommandEvent& anEvent ) override; void OnCheckBox( wxCommandEvent& anEvent ) override;
@ -49,9 +48,11 @@ class DIALOG_CLEANUP_GRAPHICS: public DIALOG_CLEANUP_GRAPHICS_BASE
bool TransferDataToWindow() override; bool TransferDataToWindow() override;
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
public: PCB_BASE_FRAME* m_parentFrame;
DIALOG_CLEANUP_GRAPHICS( PCB_BASE_FRAME* aParent, bool aIsFootprintEditor ); bool m_isFootprintEditor;
~DIALOG_CLEANUP_GRAPHICS(); RC_TREE_MODEL* m_changesTreeModel;
std::vector<std::shared_ptr<CLEANUP_ITEM>> m_items;
}; };
#endif // DIALOG_CLEANUP_GRAPHICS_H_ #endif // DIALOG_CLEANUP_GRAPHICS_H_

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2010-2014 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr * Copyright (C) 2010-2014 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr
* Copyright (C) 1992-2019 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -34,12 +34,11 @@ class PCB_EDIT_FRAME;
class DIALOG_CLEANUP_TRACKS_AND_VIAS: public DIALOG_CLEANUP_TRACKS_AND_VIAS_BASE class DIALOG_CLEANUP_TRACKS_AND_VIAS: public DIALOG_CLEANUP_TRACKS_AND_VIAS_BASE
{ {
PCB_EDIT_FRAME* m_parentFrame; public:
RC_TREE_MODEL* m_changesTreeModel; DIALOG_CLEANUP_TRACKS_AND_VIAS( PCB_EDIT_FRAME* parent );
bool m_firstRun; ~DIALOG_CLEANUP_TRACKS_AND_VIAS();
std::vector<std::shared_ptr<CLEANUP_ITEM> > m_items;
private:
void doCleanup( bool aDryRun ); void doCleanup( bool aDryRun );
void OnCheckBox( wxCommandEvent& anEvent ) override; void OnCheckBox( wxCommandEvent& anEvent ) override;
@ -49,9 +48,11 @@ class DIALOG_CLEANUP_TRACKS_AND_VIAS: public DIALOG_CLEANUP_TRACKS_AND_VIAS_BASE
bool TransferDataToWindow() override; bool TransferDataToWindow() override;
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
public: PCB_EDIT_FRAME* m_parentFrame;
DIALOG_CLEANUP_TRACKS_AND_VIAS( PCB_EDIT_FRAME* parent ); RC_TREE_MODEL* m_changesTreeModel;
~DIALOG_CLEANUP_TRACKS_AND_VIAS(); bool m_firstRun;
std::vector<std::shared_ptr<CLEANUP_ITEM> > m_items;
}; };
#endif // DIALOG_CLEANUP_TRACKS_AND_VIAS_H_ #endif // DIALOG_CLEANUP_TRACKS_AND_VIAS_H_

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2010-2014 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr * Copyright (C) 2010-2014 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr
* Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -35,13 +35,6 @@ class LIB_ID;
class DIALOG_EXCHANGE_FOOTPRINTS : public DIALOG_EXCHANGE_FOOTPRINTS_BASE class DIALOG_EXCHANGE_FOOTPRINTS : public DIALOG_EXCHANGE_FOOTPRINTS_BASE
{ {
private:
BOARD_COMMIT m_commit;
PCB_EDIT_FRAME* m_parent;
FOOTPRINT* m_currentFootprint;
bool m_updateMode;
int* m_matchMode;
public: public:
DIALOG_EXCHANGE_FOOTPRINTS( PCB_EDIT_FRAME* aParent, FOOTPRINT* aFootprint, bool updateMode, DIALOG_EXCHANGE_FOOTPRINTS( PCB_EDIT_FRAME* aParent, FOOTPRINT* aFootprint, bool updateMode,
bool selectedMode ); bool selectedMode );
@ -62,6 +55,12 @@ private:
bool isMatch( FOOTPRINT* ); bool isMatch( FOOTPRINT* );
bool processMatchingFootprints(); bool processMatchingFootprints();
bool processFootprint( FOOTPRINT* aFootprint, const LIB_ID& aNewFPID ); bool processFootprint( FOOTPRINT* aFootprint, const LIB_ID& aNewFPID );
BOARD_COMMIT m_commit;
PCB_EDIT_FRAME* m_parent;
FOOTPRINT* m_currentFootprint;
bool m_updateMode;
int* m_matchMode;
}; };
#endif // DIALOG_EXCHANGE_FOOTPRINTS_H_ #endif // DIALOG_EXCHANGE_FOOTPRINTS_H_

View File

@ -3,7 +3,7 @@
* *
* Copyright (C) 2012 Marco Mattila <marcom99@gmail.com> * Copyright (C) 2012 Marco Mattila <marcom99@gmail.com>
* Copyright (C) 2006 Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr> * Copyright (C) 2006 Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
* Copyright (C) 1992-2019 Kicad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 Kicad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -43,8 +43,7 @@ public:
DIALOG_FIND( PCB_BASE_FRAME* aParent ); DIALOG_FIND( PCB_BASE_FRAME* aParent );
/** /**
* Returns the currently found item or nullptr in the case of no items found * Return the currently found item or nullptr in the case of no items found.
* @return
*/ */
inline BOARD_ITEM* GetItem() const inline BOARD_ITEM* GetItem() const
{ {
@ -55,9 +54,9 @@ public:
} }
/** /**
* Function to be called on each found event. Must be able to handle nullptr in the * Function to be called on each found event.
* case where no item is found *
* @param aCallback * The callback function must be able to handle nullptr in the case where no item is found.
*/ */
void SetCallback( std::function<void( BOARD_ITEM* )> aCallback ) void SetCallback( std::function<void( BOARD_ITEM* )> aCallback )
{ {
@ -66,19 +65,19 @@ public:
private: private:
PCB_BASE_FRAME* m_frame;
std::deque<BOARD_ITEM*> m_hitList;
std::deque<BOARD_ITEM*>::iterator m_it;
bool m_upToDate;
std::function<void( BOARD_ITEM* )> m_highlightCallback;
void onTextEnter( wxCommandEvent& event ) override; void onTextEnter( wxCommandEvent& event ) override;
void onFindNextClick( wxCommandEvent& event ) override; void onFindNextClick( wxCommandEvent& event ) override;
void onFindPreviousClick( wxCommandEvent& event ) override; void onFindPreviousClick( wxCommandEvent& event ) override;
void onSearchAgainClick( wxCommandEvent& event ) override; void onSearchAgainClick( wxCommandEvent& event ) override;
void onClose( wxCommandEvent& event ) override; void onClose( wxCommandEvent& event ) override;
void search( bool direction ); void search( bool direction );
PCB_BASE_FRAME* m_frame;
std::deque<BOARD_ITEM*> m_hitList;
std::deque<BOARD_ITEM*>::iterator m_it;
bool m_upToDate;
std::function<void( BOARD_ITEM* )> m_highlightCallback;
}; };
#endif /* DIALOG_FIND_BASE_H */ #endif /* DIALOG_FIND_BASE_H */

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2010-2015 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr * Copyright (C) 2010-2015 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -52,37 +52,6 @@ public:
FP_PROPS_EDIT_LIBRARY_FP FP_PROPS_EDIT_LIBRARY_FP
}; };
private:
PCB_EDIT_FRAME* m_frame;
FOOTPRINT* m_footprint;
static int m_page; // remember the last open page during session
FP_TEXT_GRID_TABLE* m_texts;
UNIT_BINDER m_posX;
UNIT_BINDER m_posY;
wxFloatingPointValidator<double> m_OrientValidator;
double m_OrientValue;
UNIT_BINDER m_netClearance;
UNIT_BINDER m_solderMask;
UNIT_BINDER m_solderPaste;
std::vector<FP_3DMODEL> m_shapes3D_list;
PANEL_PREV_3D* m_PreviewPane;
wxString m_delayedErrorMessage;
wxGrid* m_delayedFocusGrid;
int m_delayedFocusRow;
int m_delayedFocusColumn;
bool m_initialFocus;
bool m_inSelect;
std::vector<bool> m_macHack;
enum FP_PROPS_RETVALUE m_returnValue; // the option that closed the dialog
public:
// Constructor and destructor
DIALOG_FOOTPRINT_PROPERTIES( PCB_EDIT_FRAME* aParent, FOOTPRINT* aFootprint ); DIALOG_FOOTPRINT_PROPERTIES( PCB_EDIT_FRAME* aParent, FOOTPRINT* aFootprint );
~DIALOG_FOOTPRINT_PROPERTIES() override; ~DIALOG_FOOTPRINT_PROPERTIES() override;
@ -91,7 +60,7 @@ public:
bool TransferDataToWindow() override; bool TransferDataToWindow() override;
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
/// @return the value depending on the way the dialog was closed: ///< @return the value depending on the way the dialog was closed.
enum FP_PROPS_RETVALUE GetReturnValue() { return m_returnValue; } enum FP_PROPS_RETVALUE GetReturnValue() { return m_returnValue; }
private: private:
@ -123,6 +92,34 @@ private:
* event on the control (which would update the radio buttons) * event on the control (which would update the radio buttons)
*/ */
void updateOrientationControl(); void updateOrientationControl();
PCB_EDIT_FRAME* m_frame;
FOOTPRINT* m_footprint;
static int m_page; // remember the last open page during session
FP_TEXT_GRID_TABLE* m_texts;
UNIT_BINDER m_posX;
UNIT_BINDER m_posY;
wxFloatingPointValidator<double> m_OrientValidator;
double m_OrientValue;
UNIT_BINDER m_netClearance;
UNIT_BINDER m_solderMask;
UNIT_BINDER m_solderPaste;
std::vector<FP_3DMODEL> m_shapes3D_list;
PANEL_PREV_3D* m_PreviewPane;
wxString m_delayedErrorMessage;
wxGrid* m_delayedFocusGrid;
int m_delayedFocusRow;
int m_delayedFocusColumn;
bool m_initialFocus;
bool m_inSelect;
std::vector<bool> m_macHack;
enum FP_PROPS_RETVALUE m_returnValue; // the option that closed the dialog
}; };

View File

@ -38,33 +38,7 @@ class FOOTPRINT_EDIT_FRAME;
class DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR : public DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE class DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR : public DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE
{ {
private:
FOOTPRINT_EDIT_FRAME* m_frame;
FOOTPRINT* m_footprint;
static int m_page; // remember the last open page during session
FP_TEXT_GRID_TABLE* m_texts;
UNIT_BINDER m_netClearance;
UNIT_BINDER m_solderMask;
UNIT_BINDER m_solderPaste;
std::vector<FP_3DMODEL> m_shapes3D_list;
PANEL_PREV_3D* m_PreviewPane;
wxControl* m_delayedFocusCtrl;
int m_delayedFocusPage;
WX_GRID* m_delayedFocusGrid;
int m_delayedFocusRow;
int m_delayedFocusColumn;
wxString m_delayedErrorMessage;
bool m_inSelect;
public: public:
// Constructor and destructor
DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR( FOOTPRINT_EDIT_FRAME* aParent, FOOTPRINT* aFootprint ); DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR( FOOTPRINT_EDIT_FRAME* aParent, FOOTPRINT* aFootprint );
~DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR() override; ~DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR() override;
@ -93,6 +67,30 @@ private:
void select3DModel( int aModelIdx ); void select3DModel( int aModelIdx );
void adjustGridColumns( int aWidth ); void adjustGridColumns( int aWidth );
FOOTPRINT_EDIT_FRAME* m_frame;
FOOTPRINT* m_footprint;
static int m_page; // remember the last open page during session
FP_TEXT_GRID_TABLE* m_texts;
UNIT_BINDER m_netClearance;
UNIT_BINDER m_solderMask;
UNIT_BINDER m_solderPaste;
std::vector<FP_3DMODEL> m_shapes3D_list;
PANEL_PREV_3D* m_PreviewPane;
wxControl* m_delayedFocusCtrl;
int m_delayedFocusPage;
WX_GRID* m_delayedFocusGrid;
int m_delayedFocusRow;
int m_delayedFocusColumn;
wxString m_delayedErrorMessage;
bool m_inSelect;
}; };

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 1992-2019 Jean_Pierre Charras <jp.charras@ujf-grenoble.fr> * Copyright (C) 1992-2019 Jean_Pierre Charras <jp.charras@ujf-grenoble.fr>
* Copyright (C) 1992-2019 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -32,9 +32,8 @@ class DIALOG_GENDRILL : public DIALOG_GENDRILL_BASE
{ {
public: public:
/** /**
* Ctor * @param aPcbEditFrame is the board edit frame.
* @param aPcbEditFrame is the board edit frame * @param aParent is the parent window caller ( the board edit frame or a dialog ).
* @param aParent is the parent window caller ( the board edit frame or a dialog )
*/ */
DIALOG_GENDRILL( PCB_EDIT_FRAME* aPcbEditFrame, wxWindow* aParent ); DIALOG_GENDRILL( PCB_EDIT_FRAME* aPcbEditFrame, wxWindow* aParent );
~DIALOG_GENDRILL(); ~DIALOG_GENDRILL();
@ -44,32 +43,7 @@ public:
*/ */
void UpdateDrillParams(); void UpdateDrillParams();
static int m_UnitDrillIsInch;
static int m_ZerosFormat;
static bool m_MinimalHeader;
static bool m_Mirror;
static bool m_Merge_PTH_NPTH;
DRILL_PRECISION m_Precision; // Precision for drill files, in non decimal format
wxPoint m_FileDrillOffset; // Drill offset: 0,0 for absolute coordinates,
// or origin of the auxiliary axis
static bool m_UseRouteModeForOvalHoles; // True to use a G00 route command for oval holes
// False to use a G85 canned mode for oval holes
private: private:
PCB_EDIT_FRAME* m_pcbEditFrame;
BOARD* m_board;
PCB_PLOT_PARAMS m_plotOpts;
bool m_drillOriginIsAuxAxis; // Axis selection (main / auxiliary)
// for drill origin coordinates
int m_platedPadsHoleCount;
int m_notplatedPadsHoleCount;
int m_throughViasCount;
int m_microViasCount;
int m_blindOrBuriedViasCount;
static int m_mapFileType; // format of map file: HPGL, PS ...
static int m_drillFileType; // for Excellon, Gerber
void initDialog(); void initDialog();
void InitDisplayParams(); void InitDisplayParams();
@ -106,19 +80,44 @@ private:
// Specific functions: // Specific functions:
/** /**
* Function GenDrillAndMapFiles * Call the functions to create EXCELLON drill files and/or drill map files.
* Calls the functions to create EXCELLON drill files and/or drill map files *
* >When all holes are through holes, only one excellon file is created. * When all holes are through holes, only one excellon file is created. When there are
* >When there are some partial holes (some blind or buried vias), * some partial holes (some blind or buried vias), one excellon file is created, for all
* one excellon file is created, for all plated through holes, * plated through holes, and one file per layer pair, which have one or more holes, excluding
* and one file per layer pair, which have one or more holes, excluding * through holes, already in the first file. One file for all Not Plated through holes.
* through holes, already in the first file.
* one file for all Not Plated through holes
*/ */
void GenDrillAndMapFiles( bool aGenDrill, bool aGenMap ); void GenDrillAndMapFiles( bool aGenDrill, bool aGenMap );
void UpdatePrecisionOptions(); void UpdatePrecisionOptions();
void UpdateConfig(); void UpdateConfig();
public:
static int m_UnitDrillIsInch;
static int m_ZerosFormat;
static bool m_MinimalHeader;
static bool m_Mirror;
static bool m_Merge_PTH_NPTH;
DRILL_PRECISION m_Precision; // Precision for drill files, in non decimal format
wxPoint m_FileDrillOffset; // Drill offset: 0,0 for absolute coordinates,
// or origin of the auxiliary axis
static bool m_UseRouteModeForOvalHoles; // True to use a G00 route command for oval holes
// False to use a G85 canned mode for oval holes
private:
PCB_EDIT_FRAME* m_pcbEditFrame;
BOARD* m_board;
PCB_PLOT_PARAMS m_plotOpts;
bool m_drillOriginIsAuxAxis; // Axis selection (main / auxiliary)
// for drill origin coordinates
int m_platedPadsHoleCount;
int m_notplatedPadsHoleCount;
int m_throughViasCount;
int m_microViasCount;
int m_blindOrBuriedViasCount;
static int m_mapFileType; // format of map file: HPGL, PS ...
static int m_drillFileType; // for Excellon, Gerber
}; };
#endif // DIALOG_GENDRILL_H_ #endif // DIALOG_GENDRILL_H_

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 1992-2014 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -33,24 +33,24 @@ public:
void SetCurrentLayer( LAYER_NUM aLayer ); void SetCurrentLayer( LAYER_NUM aLayer );
private: private:
PCB_EDIT_FRAME* m_Parent;
LAYER_NUM m_currentLayer;
void onOkClick( wxCommandEvent& event ) override void onOkClick( wxCommandEvent& event ) override
{ {
doGlobalDeletions(); doGlobalDeletions();
EndModal(wxID_OK); EndModal( wxID_OK );
} }
void onCancelClick( wxCommandEvent& event ) override void onCancelClick( wxCommandEvent& event ) override
{ {
EndModal(wxID_CANCEL); EndModal( wxID_CANCEL );
} }
void doGlobalDeletions(); void doGlobalDeletions();
void onCheckDeleteTracks( wxCommandEvent& event ) override; void onCheckDeleteTracks( wxCommandEvent& event ) override;
void onCheckDeleteFootprints( wxCommandEvent& event ) override; void onCheckDeleteFootprints( wxCommandEvent& event ) override;
void onCheckDeleteDrawings( wxCommandEvent& event ) override; void onCheckDeleteDrawings( wxCommandEvent& event ) override;
PCB_EDIT_FRAME* m_Parent;
LAYER_NUM m_currentLayer;
}; };
#endif // _DIALOG_GLOBAL_DELETION_H_ #endif // _DIALOG_GLOBAL_DELETION_H_

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2020-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -33,11 +33,6 @@ class PCB_GROUP;
class DIALOG_GROUP_PROPERTIES : public DIALOG_GROUP_PROPERTIES_BASE class DIALOG_GROUP_PROPERTIES : public DIALOG_GROUP_PROPERTIES_BASE
{ {
private:
PCB_BASE_EDIT_FRAME* m_brdEditor;
TOOL_MANAGER* m_toolMgr;
PCB_GROUP* m_group;
public: public:
DIALOG_GROUP_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent, PCB_GROUP* aTarget ); DIALOG_GROUP_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent, PCB_GROUP* aTarget );
~DIALOG_GROUP_PROPERTIES(); ~DIALOG_GROUP_PROPERTIES();
@ -51,6 +46,10 @@ public:
private: private:
bool TransferDataToWindow() override; bool TransferDataToWindow() override;
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
PCB_BASE_EDIT_FRAME* m_brdEditor;
TOOL_MANAGER* m_toolMgr;
PCB_GROUP* m_group;
}; };
#endif // DIALOG_GROUP_PROPERTIES_H #endif // DIALOG_GROUP_PROPERTIES_H

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2018-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -33,17 +33,6 @@ class PCB_EDIT_FRAME;
class DIALOG_IMPORT_SETTINGS : public DIALOG_IMPORT_SETTINGS_BASE class DIALOG_IMPORT_SETTINGS : public DIALOG_IMPORT_SETTINGS_BASE
{ {
protected:
PCB_EDIT_FRAME* m_frame;
static wxString m_filePath;
private:
/**
* Stores state used to toggle button between "Select All" and "Deselect All"
*/
bool m_showSelectAllOnBtn;
public: public:
DIALOG_IMPORT_SETTINGS( wxWindow* aParent, PCB_EDIT_FRAME* aFrame ); DIALOG_IMPORT_SETTINGS( wxWindow* aParent, PCB_EDIT_FRAME* aFrame );
@ -55,13 +44,13 @@ public:
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
/** /**
* Enables/Disables "Import Settings" button * Enable or disable the "Import Settings" button.
* *
* This dialog defaults to all import selections cleared, and the "Import * This dialog defaults to all import selections cleared, and the "Import
* Settings" button disabled. The user must check at least one of the import * Settings" button disabled. The user must check at least one of the import
* selection checkboxes for the "Import Settings" button to be enabled. * selection checkboxes for the "Import Settings" button to be enabled.
* *
* @return bool - "Import Settings" button enable state * @return the "Import Settings" button enable state.
*/ */
bool UpdateImportSettingsButton(); bool UpdateImportSettingsButton();
@ -71,6 +60,16 @@ public:
void UpdateSelectAllButton(); void UpdateSelectAllButton();
wxString GetFilePath() { return m_filePath; } wxString GetFilePath() { return m_filePath; }
protected:
PCB_EDIT_FRAME* m_frame;
static wxString m_filePath;
private:
/**
* Store state used to toggle button between "Select All" and "Deselect All"
*/
bool m_showSelectAllOnBtn;
}; };
#endif //KICAD_DIALOG_IMPORT_SETTINGS_H #endif //KICAD_DIALOG_IMPORT_SETTINGS_H

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2020 Roberto Fernandez Bautista <roberto.fer.bau@gmail.com> * Copyright (C) 2020 Roberto Fernandez Bautista <roberto.fer.bau@gmail.com>
* Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2020-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the * under the terms of the GNU General Public License as published by the
@ -27,14 +27,26 @@
class DIALOG_IMPORTED_LAYERS : public DIALOG_IMPORTED_LAYERS_BASE class DIALOG_IMPORTED_LAYERS : public DIALOG_IMPORTED_LAYERS_BASE
{ {
public:
DIALOG_IMPORTED_LAYERS( wxWindow* aParent, const std::vector<INPUT_LAYER_DESC>& aLayerDesc );
/**
* Return a list of layers names that are required, but they are not mapped.
*/
std::vector<wxString> GetUnmappedRequiredLayers() const;
/**
* Create and show a dialog (modal) and returns the data from it after completion. If the
* dialog is closed or cancel is pressed, returns an empty map.
*
* @param aParent Parent window for the invoked dialog.
* @param aLayerDesc
* @return Mapped layers
*/
static std::map<wxString, PCB_LAYER_ID> GetMapModal( wxWindow* aParent,
const std::vector<INPUT_LAYER_DESC>& aLayerDesc );
private: private:
const int selected = wxLIST_STATE_SELECTED;
const int allitems = wxLIST_STATE_DONTCARE;
std::vector<INPUT_LAYER_DESC> m_input_layers;
std::vector<wxString> m_unmatched_layer_names;
std::map<wxString, PCB_LAYER_ID> m_matched_layers_map;
//Helper functions //Helper functions
PCB_LAYER_ID GetSelectedLayerID(); PCB_LAYER_ID GetSelectedLayerID();
PCB_LAYER_ID GetAutoMatchLayerID( wxString aInputLayerName ); PCB_LAYER_ID GetAutoMatchLayerID( wxString aInputLayerName );
@ -57,24 +69,12 @@ private:
void OnRemoveClicked( wxCommandEvent& event ) override { RemoveMappings( selected ); } void OnRemoveClicked( wxCommandEvent& event ) override { RemoveMappings( selected ); }
void OnRemoveAllClicked( wxCommandEvent& event ) override { RemoveMappings( allitems ); } void OnRemoveAllClicked( wxCommandEvent& event ) override { RemoveMappings( allitems ); }
public: const int selected = wxLIST_STATE_SELECTED;
DIALOG_IMPORTED_LAYERS( wxWindow* aParent, const std::vector<INPUT_LAYER_DESC>& aLayerDesc ); const int allitems = wxLIST_STATE_DONTCARE;
/** std::vector<INPUT_LAYER_DESC> m_input_layers;
* @brief Return a list of layers names that are required, but they are not mapped std::vector<wxString> m_unmatched_layer_names;
*/ std::map<wxString, PCB_LAYER_ID> m_matched_layers_map;
std::vector<wxString> GetUnmappedRequiredLayers() const;
/**
* @brief Creates and shows a dialog (modal) and returns the data from it
* after completion. If the dialog is closed or cancel is pressed, returns
* an empty map
* @param aParent Parent window for the invoked dialog.
* @param aLayerDesc
* @return Mapped layers
*/
static std::map<wxString, PCB_LAYER_ID> GetMapModal( wxWindow* aParent,
const std::vector<INPUT_LAYER_DESC>& aLayerDesc );
}; };
#endif // DIALOG_IMPORTED_LAYERS_H #endif // DIALOG_IMPORTED_LAYERS_H

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2014 John Beard, john.j.beard@gmail.com * Copyright (C) 2014 John Beard, john.j.beard@gmail.com
* Copyright (C) 2018-2020 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2018-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -45,34 +45,15 @@ enum ROTATION_ANCHOR
class DIALOG_MOVE_EXACT : public DIALOG_MOVE_EXACT_BASE class DIALOG_MOVE_EXACT : public DIALOG_MOVE_EXACT_BASE
{ {
private:
wxPoint& m_translation;
double& m_rotation;
ROTATION_ANCHOR& m_rotationAnchor;
const EDA_RECT& m_bbox;
UNIT_BINDER m_moveX;
UNIT_BINDER m_moveY;
UNIT_BINDER m_rotate;
std::vector<ROTATION_ANCHOR> m_menuIDs;
double m_stateX;
double m_stateY;
double m_stateRadius;
double m_stateTheta;
public: public:
// Constructor and destructor DIALOG_MOVE_EXACT( PCB_BASE_FRAME* aParent, wxPoint& aTranslate, double& aRotate,
DIALOG_MOVE_EXACT( PCB_BASE_FRAME *aParent, wxPoint& aTranslate, double& aRotate,
ROTATION_ANCHOR& aAnchor, const EDA_RECT& aBbox ); ROTATION_ANCHOR& aAnchor, const EDA_RECT& aBbox );
~DIALOG_MOVE_EXACT() { }; ~DIALOG_MOVE_EXACT() { };
private: private:
/*! /**
* Reset a text field to be 0 if it was exited while blank * Reset a text field to be 0 if it was exited while blank.
*/ */
void OnTextFocusLost( wxFocusEvent& event ) override; void OnTextFocusLost( wxFocusEvent& event ) override;
@ -92,10 +73,11 @@ private:
void ToPolarDeg( double x, double y, double& r, double& q ); void ToPolarDeg( double x, double y, double& r, double& q );
/** /**
* Get the (Cartesian) translation described by the text entries * Get the (Cartesian) translation described by the text entries.
* @param val output translation vector *
* @param polar interpret as polar coords * @param val is the output translation vector.
* @return false if error (though the text conversion functions don't report errors) * @param polar set to true to interpret as polar coordinates.
* @return false if error (though the text conversion functions don't report errors).
*/ */
bool GetTranslationInIU( wxRealPoint& val, bool polar ); bool GetTranslationInIU( wxRealPoint& val, bool polar );
@ -127,7 +109,23 @@ private:
// persistent settings // persistent settings
static MOVE_EXACT_OPTIONS m_options; static MOVE_EXACT_OPTIONS m_options;
private:
wxPoint& m_translation;
double& m_rotation;
ROTATION_ANCHOR& m_rotationAnchor;
const EDA_RECT& m_bbox;
UNIT_BINDER m_moveX;
UNIT_BINDER m_moveY;
UNIT_BINDER m_rotate;
std::vector<ROTATION_ANCHOR> m_menuIDs;
double m_stateX;
double m_stateY;
double m_stateRadius;
double m_stateTheta;
}; };
#endif // __DIALOG_MOVE_EXACT__ #endif // __DIALOG_MOVE_EXACT__

View File

@ -5,7 +5,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -37,16 +37,6 @@ class NETLIST;
class DIALOG_NETLIST : public DIALOG_NETLIST_BASE class DIALOG_NETLIST : public DIALOG_NETLIST_BASE
{ {
private:
PCB_EDIT_FRAME* m_parent;
wxString& m_netlistPath;
bool m_initialized;
bool m_runDragCommand;
static bool m_warnForNoNetPads;
static bool m_matchByUUID; // True to use UUID as link between symbol and footprint
// False to use reference designator as link
// between symbol and footprint
public: public:
DIALOG_NETLIST( PCB_EDIT_FRAME* aParent, wxString& aNetlistFullFilename ); DIALOG_NETLIST( PCB_EDIT_FRAME* aParent, wxString& aNetlistFullFilename );
~DIALOG_NETLIST(); ~DIALOG_NETLIST();
@ -56,14 +46,22 @@ private:
void loadNetlist( bool aDryRun ); void loadNetlist( bool aDryRun );
// Virtual event handlers: // Virtual event handlers:
void OnOpenNetlistClick( wxCommandEvent& event ) override; void OnOpenNetlistClick( wxCommandEvent& event ) override;
void OnUpdatePCB( wxCommandEvent& event ) override; void OnUpdatePCB( wxCommandEvent& event ) override;
void OnFilenameKillFocus( wxFocusEvent& event ) override; void OnFilenameKillFocus( wxFocusEvent& event ) override;
void OnMatchChanged( wxCommandEvent& event ) override; void OnMatchChanged( wxCommandEvent& event ) override;
void OnOptionChanged( wxCommandEvent& event ) override; void OnOptionChanged( wxCommandEvent& event ) override;
PCB_EDIT_FRAME* m_parent;
wxString& m_netlistPath;
bool m_initialized;
bool m_runDragCommand;
static bool m_warnForNoNetPads;
static bool m_matchByUUID; // True to use UUID as link between symbol and footprint
// False to use reference designator as link
// between symbol and footprint
}; };

View File

@ -3,8 +3,8 @@
* *
* Copyright (C) 2018 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2018 Jean-Pierre Charras, jp.charras at wanadoo.fr
* Copyright (C) 2013 Dick Hollenbeck, dick@softplc.com * Copyright (C) 2013 Dick Hollenbeck, dick@softplc.com
* Copyright (C) 2008-2013 Wayne Stambaugh <stambaughw@verizon.net> * Copyright (C) 2008-2013 Wayne Stambaugh <stambaughw@gmail.com>
* Copyright (C) 1992-2019 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -53,43 +53,6 @@ public:
DIALOG_PAD_PROPERTIES( PCB_BASE_FRAME* aParent, PAD* aPad ); DIALOG_PAD_PROPERTIES( PCB_BASE_FRAME* aParent, PAD* aPad );
~DIALOG_PAD_PROPERTIES(); ~DIALOG_PAD_PROPERTIES();
private:
PCB_BASE_FRAME* m_parent;
PAD* m_currentPad; // pad currently being edited
PAD* m_dummyPad; // a working copy used to show changes
PAD* m_padMaster; // pad used to create new pads in board or footprint editor
BOARD* m_board; // the main board: this is the board handled by the PCB
// editor or the dummy board used by the footprint editor
bool m_isFlipped; // indicates the parent footprint is flipped (mirrored) in
// which case some Y coordinates values must be negated
bool m_canUpdate;
bool m_canEditNetName; // true only if the caller is the board editor
bool m_isFpEditor; // true if the caller is the footprint editor
std::vector<std::shared_ptr<PCB_SHAPE>> m_primitives; // the custom shape primitives in
// local coords, orient 0
// must define a single copper area
COLOR4D m_selectedColor; // color used to draw selected primitives when
// editing a custom pad shape
std::vector<PCB_SHAPE*> m_highlight; // shapes highlighted in GAL mode
PCB_DRAW_PANEL_GAL* m_padPreviewGAL;
KIGFX::ORIGIN_VIEWITEM* m_axisOrigin; // origin of the preview canvas
static bool m_sketchPreview; // session storage
UNIT_BINDER m_posX, m_posY;
UNIT_BINDER m_sizeX, m_sizeY;
UNIT_BINDER m_offsetX, m_offsetY;
UNIT_BINDER m_padToDie;
UNIT_BINDER m_trapDelta;
UNIT_BINDER m_cornerRadius;
UNIT_BINDER m_holeX, m_holeY;
wxFloatingPointValidator<double> m_OrientValidator;
double m_OrientValue;
UNIT_BINDER m_clearance;
UNIT_BINDER m_maskClearance, m_pasteClearance;
UNIT_BINDER m_spokeWidth, m_thermalGap;
private: private:
void prepareCanvas(); // Initialize the canvases (legacy or gal) to display the pad void prepareCanvas(); // Initialize the canvases (legacy or gal) to display the pad
void initValues(); void initValues();
@ -101,9 +64,8 @@ private:
void enablePrimitivePage( bool aEnable ); ///< enable (or disable) the primitive page editor void enablePrimitivePage( bool aEnable ); ///< enable (or disable) the primitive page editor
/** /**
* Function updatePadLayersList * Updates the CheckBox states in pad layers list, based on the layer_mask (if non-empty)
* updates the CheckBox states in pad layers list, based on the layer_mask (if non-empty) * or the default layers for the current pad type.
* or the default layers for the current pad type
*/ */
void updatePadLayersList( LSET layer_mask, bool remove_unconnected, bool keep_top_bottom ); void updatePadLayersList( LSET layer_mask, bool remove_unconnected, bool keep_top_bottom );
@ -165,11 +127,49 @@ private:
/// Return the pad property currently selected /// Return the pad property currently selected
PAD_PROP getSelectedProperty(); PAD_PROP getSelectedProperty();
private:
PCB_BASE_FRAME* m_parent;
PAD* m_currentPad; // pad currently being edited
PAD* m_dummyPad; // a working copy used to show changes
PAD* m_padMaster; // pad used to create new pads in board or footprint editor
BOARD* m_board; // the main board: this is the board handled by the PCB
// editor or the dummy board used by the footprint editor
bool m_isFlipped; // indicates the parent footprint is flipped (mirrored) in
// which case some Y coordinates values must be negated
bool m_canUpdate;
bool m_canEditNetName; // true only if the caller is the board editor
bool m_isFpEditor; // true if the caller is the footprint editor
std::vector<std::shared_ptr<PCB_SHAPE>> m_primitives; // the custom shape primitives in
// local coords, orient 0
// must define a single copper area
COLOR4D m_selectedColor; // color used to draw selected primitives when
// editing a custom pad shape
std::vector<PCB_SHAPE*> m_highlight; // shapes highlighted in GAL mode
PCB_DRAW_PANEL_GAL* m_padPreviewGAL;
KIGFX::ORIGIN_VIEWITEM* m_axisOrigin; // origin of the preview canvas
static bool m_sketchPreview; // session storage
UNIT_BINDER m_posX, m_posY;
UNIT_BINDER m_sizeX, m_sizeY;
UNIT_BINDER m_offsetX, m_offsetY;
UNIT_BINDER m_padToDie;
UNIT_BINDER m_trapDelta;
UNIT_BINDER m_cornerRadius;
UNIT_BINDER m_holeX, m_holeY;
wxFloatingPointValidator<double> m_OrientValidator;
double m_OrientValue;
UNIT_BINDER m_clearance;
UNIT_BINDER m_maskClearance, m_pasteClearance;
UNIT_BINDER m_spokeWidth, m_thermalGap;
}; };
/** /**
* a dialog to edit basics shapes parameters. * A dialog to edit basic shape parameters.
* Polygonal shape is not handles by this dialog *
* Polygonal shape is not handled by this dialog.
*/ */
class DIALOG_PAD_PRIMITIVES_PROPERTIES: public DIALOG_PAD_PRIMITIVES_PROPERTIES_BASE class DIALOG_PAD_PRIMITIVES_PROPERTIES: public DIALOG_PAD_PRIMITIVES_PROPERTIES_BASE
{ {
@ -178,7 +178,6 @@ public:
PCB_SHAPE* aShape ); PCB_SHAPE* aShape );
/** /**
* Function TransferDataFromWindow
* Transfer data out of the GUI. * Transfer data out of the GUI.
*/ */
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
@ -207,38 +206,28 @@ private:
/** /**
* a dialog to edit basic polygonal shape parameters * A dialog to edit basic polygonal shape parameters.
*/ */
class DIALOG_PAD_PRIMITIVE_POLY_PROPS: public DIALOG_PAD_PRIMITIVE_POLY_PROPS_BASE class DIALOG_PAD_PRIMITIVE_POLY_PROPS: public DIALOG_PAD_PRIMITIVE_POLY_PROPS_BASE
{ {
// The basic shape currently edited
PCB_SHAPE* m_shape;
// The working copy of the basic shape currently edited
std::vector<wxPoint> m_currPoints;
UNIT_BINDER m_thickness;
public: public:
DIALOG_PAD_PRIMITIVE_POLY_PROPS( wxWindow* aParent, PCB_BASE_FRAME* aFrame, DIALOG_PAD_PRIMITIVE_POLY_PROPS( wxWindow* aParent, PCB_BASE_FRAME* aFrame,
PCB_SHAPE* aShape ); PCB_SHAPE* aShape );
~DIALOG_PAD_PRIMITIVE_POLY_PROPS(); ~DIALOG_PAD_PRIMITIVE_POLY_PROPS();
/** /**
* Function TransferDataFromWindow
* Transfer data out of the GUI. * Transfer data out of the GUI.
*/ */
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
private: private:
/** /**
* Function TransferDataToWindow
* Transfer data into the GUI. * Transfer data into the GUI.
*/ */
bool TransferDataToWindow() override; bool TransferDataToWindow() override;
/** /**
* test for a valid polygon (a not self intersectiong polygon) * Test for a valid polygon (a not self intersectiong polygon).
*/ */
bool Validate() override; bool Validate() override;
@ -256,14 +245,21 @@ private:
bool doValidate( bool aRemoveRedundantCorners ); bool doValidate( bool aRemoveRedundantCorners );
// The basic shape currently edited
PCB_SHAPE* m_shape;
// The working copy of the basic shape currently edited
std::vector<wxPoint> m_currPoints;
UNIT_BINDER m_thickness;
}; };
/** A dialog to apply geometry transforms to a shape or set of shapes /**
* (move, rotate around origin, scaling factor, duplication). * A dialog to apply geometry transforms to a shape or set of shapes (move, rotate around
* shapes are scaled, then moved then rotated. * origin, scaling factor, duplication).
* aList is a list of shapes to transform or duplicate *
* if aShowDuplicate == false, the parameter "Duplicate count" is disabled * Shapes are scaled then moved then rotated.
*/ */
class DIALOG_PAD_PRIMITIVES_TRANSFORM : public DIALOG_PAD_PRIMITIVES_TRANSFORM_BASE class DIALOG_PAD_PRIMITIVES_TRANSFORM : public DIALOG_PAD_PRIMITIVES_TRANSFORM_BASE
@ -284,7 +280,7 @@ public:
int aDuplicateCount = 0 ); int aDuplicateCount = 0 );
/** /**
* @return the number of duplicate, chosen by user * @return the number of duplicate, chosen by user.
*/ */
int GetDuplicateCount() { return m_spinCtrlDuplicateCount->GetValue(); } int GetDuplicateCount() { return m_spinCtrlDuplicateCount->GetValue(); }

View File

@ -5,7 +5,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -34,8 +34,7 @@
#define DLG_WINDOW_NAME "plot_dialog-window" #define DLG_WINDOW_NAME "plot_dialog-window"
/** /**
* DIALOG_PLOT is the dialog to set the plot options, and create plot files * A dialog to set the plot options and create plot files in various formats.
* in various formats.
*/ */
class DIALOG_PLOT : public DIALOG_PLOT_BASE class DIALOG_PLOT : public DIALOG_PLOT_BASE
{ {
@ -43,26 +42,6 @@ public:
DIALOG_PLOT( PCB_EDIT_FRAME* parent ); DIALOG_PLOT( PCB_EDIT_FRAME* parent );
private: private:
PCB_EDIT_FRAME* m_parent;
LSEQ m_layerList; // List to hold CheckListBox layer numbers
double m_XScaleAdjust; // X scale factor adjust to compensate
// plotter X scaling error
double m_YScaleAdjust; // X scale factor adjust to compensate
// plotter Y scaling error
int m_PSWidthAdjust; // Global width correction for exact line width
// in postscript output.
// this is a correction factor for tracks width
// when plotted
int m_widthAdjustMinValue; // Global track width limits
int m_widthAdjustMaxValue; // tracks width will be "clipped" whenever the
// m_PSWidthAdjust to these limits.
UNIT_BINDER m_defaultPenSize;
UNIT_BINDER m_trackWidthCorrection;
wxString m_DRCWarningTemplate;
PCB_PLOT_PARAMS m_plotOpts;
// Event called functions // Event called functions
void Plot( wxCommandEvent& event ) override; void Plot( wxCommandEvent& event ) override;
void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) override; void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) override;
@ -86,4 +65,24 @@ private:
{ {
m_plotModeOpt->SetSelection( aPlotMode == SKETCH ? 1 : 0 ); m_plotModeOpt->SetSelection( aPlotMode == SKETCH ? 1 : 0 );
} }
PCB_EDIT_FRAME* m_parent;
LSEQ m_layerList; // List to hold CheckListBox layer numbers
double m_XScaleAdjust; // X scale factor adjust to compensate
// plotter X scaling error
double m_YScaleAdjust; // X scale factor adjust to compensate
// plotter Y scaling error
int m_PSWidthAdjust; // Global width correction for exact line width
// in postscript output.
// this is a correction factor for tracks width
// when plotted
int m_widthAdjustMinValue; // Global track width limits
int m_widthAdjustMaxValue; // tracks width will be "clipped" whenever the
// m_PSWidthAdjust to these limits.
UNIT_BINDER m_defaultPenSize;
UNIT_BINDER m_trackWidthCorrection;
wxString m_DRCWarningTemplate;
PCB_PLOT_PARAMS m_plotOpts;
}; };

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2017 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2017-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -34,21 +34,6 @@
class DIALOG_POSITION_RELATIVE : public DIALOG_POSITION_RELATIVE_BASE class DIALOG_POSITION_RELATIVE : public DIALOG_POSITION_RELATIVE_BASE
{ {
private:
TOOL_MANAGER* m_toolMgr;
wxPoint& m_translation;
wxPoint& m_anchor_position;
UNIT_BINDER m_xOffset;
UNIT_BINDER m_yOffset;
double m_stateX;
double m_stateY;
double m_stateRadius;
double m_stateTheta;
public: public:
// Constructor and destructor // Constructor and destructor
DIALOG_POSITION_RELATIVE( PCB_BASE_FRAME* aParent, wxPoint& translation, wxPoint& anchor ); DIALOG_POSITION_RELATIVE( PCB_BASE_FRAME* aParent, wxPoint& translation, wxPoint& anchor );
@ -57,9 +42,8 @@ public:
void UpdateAnchor( EDA_ITEM* aItem ); void UpdateAnchor( EDA_ITEM* aItem );
private: private:
/**
/*! * Reset a text field to be 0 if it was exited while blank.
* Reset a text field to be 0 if it was exited while blank
*/ */
void OnTextFocusLost( wxFocusEvent& event ) override; void OnTextFocusLost( wxFocusEvent& event ) override;
@ -80,10 +64,11 @@ private:
void ToPolarDeg( double x, double y, double& r, double& q ); void ToPolarDeg( double x, double y, double& r, double& q );
/** /**
* Get the (Cartesian) translation described by the text entries * Get the (Cartesian) translation described by the text entries.
* @param val output translation vector *
* @param polar interpret as polar coords * @param val is the output translation vector.
* @return false if error (though the text conversion functions don't report errors) * @param set to true to interpret as polar coordinates.
* @return false if error (though the text conversion functions don't report errors).
*/ */
bool GetTranslationInIU( wxRealPoint& val, bool polar ); bool GetTranslationInIU( wxRealPoint& val, bool polar );
@ -91,7 +76,7 @@ private:
void updateDialogControls( bool aPolar ); void updateDialogControls( bool aPolar );
/** /**
* Persistent dialog options * Persistent dialog options.
*/ */
struct POSITION_RELATIVE_OPTIONS struct POSITION_RELATIVE_OPTIONS
{ {
@ -109,6 +94,18 @@ private:
// persistent settings // persistent settings
static POSITION_RELATIVE_OPTIONS m_options; static POSITION_RELATIVE_OPTIONS m_options;
TOOL_MANAGER* m_toolMgr;
wxPoint& m_translation;
wxPoint& m_anchor_position;
UNIT_BINDER m_xOffset;
UNIT_BINDER m_yOffset;
double m_stateX;
double m_stateY;
double m_stateRadius;
double m_stateTheta;
}; };
#endif // __DIALOG_POSITION_RELATIVE__ #endif // __DIALOG_POSITION_RELATIVE__

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2017 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2017-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -28,14 +28,15 @@
class PAD; class PAD;
class PCB_BASE_FRAME; class PCB_BASE_FRAME;
/************************************/
/* class DIALOG_PUSH_PAD_PROPERTIES */
/************************************/
class DIALOG_PUSH_PAD_PROPERTIES : public DIALOG_PUSH_PAD_PROPERTIES_BASE class DIALOG_PUSH_PAD_PROPERTIES : public DIALOG_PUSH_PAD_PROPERTIES_BASE
{ {
public:
DIALOG_PUSH_PAD_PROPERTIES( PCB_BASE_FRAME* aParent );
private: private:
PCB_BASE_FRAME* m_parent; void PadPropertiesAccept( wxCommandEvent& event ) override;
public: public:
static bool m_Pad_Shape_Filter; static bool m_Pad_Shape_Filter;
@ -43,11 +44,8 @@ public:
static bool m_Pad_Orient_Filter; static bool m_Pad_Orient_Filter;
static bool m_Pad_Type_Filter; static bool m_Pad_Type_Filter;
public:
DIALOG_PUSH_PAD_PROPERTIES( PCB_BASE_FRAME* aParent );
private: private:
void PadPropertiesAccept( wxCommandEvent& event ) override; PCB_BASE_FRAME* m_parent;
}; };

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2018-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -32,12 +32,6 @@ class LAYER_GRID_TABLE;
class DIALOG_SWAP_LAYERS : public DIALOG_SWAP_LAYERS_BASE class DIALOG_SWAP_LAYERS : public DIALOG_SWAP_LAYERS_BASE
{ {
private:
PCB_BASE_EDIT_FRAME* m_parent;
PCB_LAYER_ID* m_layerDestinations;
LAYER_GRID_TABLE* m_gridTable;
public: public:
DIALOG_SWAP_LAYERS( PCB_BASE_EDIT_FRAME* aParent, PCB_LAYER_ID* aArray ); DIALOG_SWAP_LAYERS( PCB_BASE_EDIT_FRAME* aParent, PCB_LAYER_ID* aArray );
~DIALOG_SWAP_LAYERS() override; ~DIALOG_SWAP_LAYERS() override;
@ -49,6 +43,11 @@ private:
void OnSize( wxSizeEvent& event ) override; void OnSize( wxSizeEvent& event ) override;
void adjustGridColumns( int aWidth ); void adjustGridColumns( int aWidth );
PCB_BASE_EDIT_FRAME* m_parent;
PCB_LAYER_ID* m_layerDestinations;
LAYER_GRID_TABLE* m_gridTable;
}; };
#endif #endif

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 1992-2020 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -31,13 +31,6 @@ class PCB_EDIT_FRAME;
class DIALOG_UPDATE_PCB : public DIALOG_UPDATE_PCB_BASE class DIALOG_UPDATE_PCB : public DIALOG_UPDATE_PCB_BASE
{ {
private:
PCB_EDIT_FRAME* m_frame;
NETLIST* m_netlist;
bool m_initialized;
bool m_runDragCommand;
static bool m_warnForNoNetPads;
public: public:
DIALOG_UPDATE_PCB( PCB_EDIT_FRAME* aParent, NETLIST *aNetlist ); DIALOG_UPDATE_PCB( PCB_EDIT_FRAME* aParent, NETLIST *aNetlist );
~DIALOG_UPDATE_PCB(); ~DIALOG_UPDATE_PCB();
@ -45,10 +38,14 @@ public:
void PerformUpdate( bool aDryRun ); void PerformUpdate( bool aDryRun );
private: private:
void OnOptionChanged( wxCommandEvent& event ) override; void OnOptionChanged( wxCommandEvent& event ) override;
void OnUpdateClick( wxCommandEvent& event ) override; void OnUpdateClick( wxCommandEvent& event ) override;
PCB_EDIT_FRAME* m_frame;
NETLIST* m_netlist;
bool m_initialized;
bool m_runDragCommand;
static bool m_warnForNoNetPads;
}; };
#endif #endif

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2017-2018 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2017-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the * under the terms of the GNU General Public License as published by the
@ -29,11 +29,6 @@ class FOOTPRINT_EDIT_FRAME;
class PANEL_FP_EDITOR_DEFAULTS : public PANEL_FP_EDITOR_DEFAULTS_BASE class PANEL_FP_EDITOR_DEFAULTS : public PANEL_FP_EDITOR_DEFAULTS_BASE
{ {
BOARD_DESIGN_SETTINGS m_brdSettings;
FOOTPRINT_EDIT_FRAME* m_frame;
PAGED_DIALOG* m_parent;
bool m_firstShow = true;
public: public:
PANEL_FP_EDITOR_DEFAULTS( FOOTPRINT_EDIT_FRAME* aFrame, PAGED_DIALOG* aParent ); PANEL_FP_EDITOR_DEFAULTS( FOOTPRINT_EDIT_FRAME* aFrame, PAGED_DIALOG* aParent );
~PANEL_FP_EDITOR_DEFAULTS() override; ~PANEL_FP_EDITOR_DEFAULTS() override;
@ -50,6 +45,11 @@ private:
bool TransferDataToWindow() override; bool TransferDataToWindow() override;
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
BOARD_DESIGN_SETTINGS m_brdSettings;
FOOTPRINT_EDIT_FRAME* m_frame;
PAGED_DIALOG* m_parent;
bool m_firstShow = true;
}; };

View File

@ -64,11 +64,6 @@ private:
/// by examining all the full_uri columns. /// by examining all the full_uri columns.
void populateEnvironReadOnlyTable(); void populateEnvironReadOnlyTable();
// caller's tables are modified only on OK button and successful verification.
FP_LIB_TABLE* m_global;
FP_LIB_TABLE* m_project;
wxString m_projectBasePath;
FP_LIB_TABLE_GRID* global_model() const FP_LIB_TABLE_GRID* global_model() const
{ {
return (FP_LIB_TABLE_GRID*) m_global_grid->GetTable(); return (FP_LIB_TABLE_GRID*) m_global_grid->GetTable();
@ -84,12 +79,18 @@ private:
return (FP_LIB_TABLE_GRID*) m_cur_grid->GetTable(); return (FP_LIB_TABLE_GRID*) m_cur_grid->GetTable();
} }
// caller's tables are modified only on OK button and successful verification.
FP_LIB_TABLE* m_global;
FP_LIB_TABLE* m_project;
wxString m_projectBasePath;
DIALOG_EDIT_LIBRARY_TABLES* m_parent; DIALOG_EDIT_LIBRARY_TABLES* m_parent;
WX_GRID* m_cur_grid; // changed based on tab choice WX_GRID* m_cur_grid; // changed based on tab choice
static size_t m_pageNdx; // Remember last notebook page selected during a session static size_t m_pageNdx; // Remember last notebook page selected during a session
wxString m_lastProjectLibDir; //< Transient (unsaved) last browsed folder when adding a project level library //< Transient (unsaved) last browsed folder when adding a project level library.
wxString m_lastProjectLibDir;
}; };
#endif // PANEL_FP_LIB_TABLE_H #endif // PANEL_FP_LIB_TABLE_H

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2020 Jon Evans <jon@craftyjon.com> * Copyright (C) 2020 Jon Evans <jon@craftyjon.com>
* Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2020-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software: you can redistribute it and/or modify it * This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the * under the terms of the GNU General Public License as published by the
@ -58,19 +58,18 @@ protected:
ID_REVERT ID_REVERT
}; };
private:
PCB_EDIT_FRAME* m_frame;
FOOTPRINT_PREVIEW_PANEL* m_preview;
PAGE_INFO* m_page;
TITLE_BLOCK* m_titleBlock;
private: private:
void createPreviewItems(); void createPreviewItems();
void createSwatches(); void createSwatches();
void updatePreview(); void updatePreview();
void zoomFitPreview(); void zoomFitPreview();
PCB_EDIT_FRAME* m_frame;
FOOTPRINT_PREVIEW_PANEL* m_preview;
PAGE_INFO* m_page;
TITLE_BLOCK* m_titleBlock;
}; };

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2010-2014 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr * Copyright (C) 2010-2014 Jean-Pierre Charras, jean-pierre.charras at wanadoo.fr
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -32,15 +32,15 @@ class PAGED_DIALOG;
class PANEL_PCBNEW_DISPLAY_ORIGIN : public PANEL_PCBNEW_DISPLAY_ORIGIN_BASE class PANEL_PCBNEW_DISPLAY_ORIGIN : public PANEL_PCBNEW_DISPLAY_ORIGIN_BASE
{ {
private:
PCB_EDIT_FRAME* m_Frame;
public: public:
PANEL_PCBNEW_DISPLAY_ORIGIN( PCB_EDIT_FRAME* aFrame, PAGED_DIALOG* aWindow ); PANEL_PCBNEW_DISPLAY_ORIGIN( PCB_EDIT_FRAME* aFrame, PAGED_DIALOG* aWindow );
protected: protected:
bool TransferDataToWindow() override; bool TransferDataToWindow() override;
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
private:
PCB_EDIT_FRAME* m_Frame;
}; };

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2019 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2019-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -37,9 +37,18 @@ class wxCommandEvent;
class PANEL_SETUP_CONSTRAINTS : public PANEL_SETUP_CONSTRAINTS_BASE class PANEL_SETUP_CONSTRAINTS : public PANEL_SETUP_CONSTRAINTS_BASE
{ {
public:
PANEL_SETUP_CONSTRAINTS( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame );
~PANEL_SETUP_CONSTRAINTS( ) override { };
void ImportSettingsFrom( BOARD* aBoard );
private: private:
PCB_EDIT_FRAME* m_Frame; bool Show( bool aShow ) override;
BOARD_DESIGN_SETTINGS* m_BrdSettings; bool TransferDataToWindow() override;
bool TransferDataFromWindow() override;
void onChangeOutlineOpt( wxCommandEvent& event ) override;
public: public:
UNIT_BINDER m_minClearance; UNIT_BINDER m_minClearance;
@ -55,18 +64,9 @@ public:
UNIT_BINDER m_silkClearance; UNIT_BINDER m_silkClearance;
UNIT_BINDER m_maxError; UNIT_BINDER m_maxError;
public:
PANEL_SETUP_CONSTRAINTS( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame );
~PANEL_SETUP_CONSTRAINTS( ) override { };
void ImportSettingsFrom( BOARD* aBoard );
private: private:
bool Show( bool aShow ) override; PCB_EDIT_FRAME* m_Frame;
bool TransferDataToWindow() override; BOARD_DESIGN_SETTINGS* m_BrdSettings;
bool TransferDataFromWindow() override;
void onChangeOutlineOpt( wxCommandEvent& event ) override;
}; };
#endif //PANEL_SETUP_CONSTRAINTS_H #endif //PANEL_SETUP_CONSTRAINTS_H

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. * Copyright (C) 2020-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -37,17 +37,6 @@ class HTML_MESSAGE_BOX;
class PANEL_SETUP_RULES : public PANEL_SETUP_RULES_BASE class PANEL_SETUP_RULES : public PANEL_SETUP_RULES_BASE
{ {
private:
PAGED_DIALOG* m_Parent;
PCB_EDIT_FRAME* m_frame;
SCINTILLA_TRICKS* m_scintillaTricks;
wxString m_originalText;
wxRegEx m_netClassRegex;
wxRegEx m_netNameRegex;
HTML_MESSAGE_BOX* m_helpWindow;
public: public:
PANEL_SETUP_RULES( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame ); PANEL_SETUP_RULES( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame );
~PANEL_SETUP_RULES( ) override; ~PANEL_SETUP_RULES( ) override;
@ -62,6 +51,16 @@ private:
bool TransferDataToWindow() override; bool TransferDataToWindow() override;
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
PAGED_DIALOG* m_Parent;
PCB_EDIT_FRAME* m_frame;
SCINTILLA_TRICKS* m_scintillaTricks;
wxString m_originalText;
wxRegEx m_netClassRegex;
wxRegEx m_netNameRegex;
HTML_MESSAGE_BOX* m_helpWindow;
}; };
#endif //PANEL_SETUP_RULES_H #endif //PANEL_SETUP_RULES_H

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2018 KiCad Developers, see change_log.txt for contributors. * Copyright (C) 2018-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -37,16 +37,6 @@ class BOARD_DESIGN_SETTINGS;
class PANEL_SETUP_TEXT_AND_GRAPHICS : public PANEL_SETUP_TEXT_AND_GRAPHICS_BASE class PANEL_SETUP_TEXT_AND_GRAPHICS : public PANEL_SETUP_TEXT_AND_GRAPHICS_BASE
{ {
private:
PAGED_DIALOG* m_Parent;
PCB_EDIT_FRAME* m_Frame;
BOARD_DESIGN_SETTINGS* m_BrdSettings;
UNIT_BINDER m_arrowLength;
UNIT_BINDER m_extensionOffset;
private:
int getGridValue( int aRow, int aCol );
public: public:
PANEL_SETUP_TEXT_AND_GRAPHICS( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame ); PANEL_SETUP_TEXT_AND_GRAPHICS( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame );
~PANEL_SETUP_TEXT_AND_GRAPHICS( ) override; ~PANEL_SETUP_TEXT_AND_GRAPHICS( ) override;
@ -55,6 +45,15 @@ public:
bool TransferDataFromWindow() override; bool TransferDataFromWindow() override;
void ImportSettingsFrom( BOARD* aBoard ); void ImportSettingsFrom( BOARD* aBoard );
private:
int getGridValue( int aRow, int aCol );
PAGED_DIALOG* m_Parent;
PCB_EDIT_FRAME* m_Frame;
BOARD_DESIGN_SETTINGS* m_BrdSettings;
UNIT_BINDER m_arrowLength;
UNIT_BINDER m_extensionOffset;
}; };
#endif //PANEL_SETUP_TEXT_AND_GRAPHICS_H #endif //PANEL_SETUP_TEXT_AND_GRAPHICS_H

View File

@ -1,7 +1,7 @@
/* /*
* This program source code file is part of KiCad, a free EDA CAD application. * This program source code file is part of KiCad, a free EDA CAD application.
* *
* Copyright (C) 2018 KiCad Developers, see change_log.txt for contributors. * Copyright (C) 2018-2021 KiCad Developers, see AUTHORS.txt for contributors.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
@ -38,15 +38,17 @@ class BOARD_DESIGN_SETTINGS;
class PANEL_SETUP_TRACKS_AND_VIAS : public PANEL_SETUP_TRACKS_AND_VIAS_BASE class PANEL_SETUP_TRACKS_AND_VIAS : public PANEL_SETUP_TRACKS_AND_VIAS_BASE
{ {
private: public:
PAGED_DIALOG* m_Parent; PANEL_SETUP_TRACKS_AND_VIAS( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame,
PCB_EDIT_FRAME* m_Frame; PANEL_SETUP_CONSTRAINTS* aConstraintsPanel );
BOARD* m_Pcb; ~PANEL_SETUP_TRACKS_AND_VIAS() override;
BOARD_DESIGN_SETTINGS* m_BrdSettings;
// We must validate against the current m_BrdSettings as they may have been bool TransferDataToWindow() override;
// changed but not yet committed. Fetch them from the constraints panel. bool TransferDataFromWindow() override;
PANEL_SETUP_CONSTRAINTS* m_ConstraintsPanel;
bool Validate() override;
void ImportSettingsFrom( BOARD* aBoard );
protected: protected:
void OnAddTrackWidthsClick( wxCommandEvent& event ) override; void OnAddTrackWidthsClick( wxCommandEvent& event ) override;
@ -60,17 +62,15 @@ protected:
void AppendViaSize( const int aSize, const int aDrill ); void AppendViaSize( const int aSize, const int aDrill );
void AppendDiffPairs( const int aWidth, const int aGap, const int aViaGap ); void AppendDiffPairs( const int aWidth, const int aGap, const int aViaGap );
public: private:
PANEL_SETUP_TRACKS_AND_VIAS( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame, PAGED_DIALOG* m_Parent;
PANEL_SETUP_CONSTRAINTS* aConstraintsPanel ); PCB_EDIT_FRAME* m_Frame;
~PANEL_SETUP_TRACKS_AND_VIAS() override; BOARD* m_Pcb;
BOARD_DESIGN_SETTINGS* m_BrdSettings;
bool TransferDataToWindow() override; // We must validate against the current m_BrdSettings as they may have been
bool TransferDataFromWindow() override; // changed but not yet committed. Fetch them from the constraints panel.
PANEL_SETUP_CONSTRAINTS* m_ConstraintsPanel;
bool Validate() override;
void ImportSettingsFrom( BOARD* aBoard );
}; };
#endif //PANEL_SETUP_TRACKS_AND_VIAS_H #endif //PANEL_SETUP_TRACKS_AND_VIAS_H