KiCad PCB EDA Suite
Loading...
Searching...
No Matches
dialog_board_reannotate.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2020 Brian Piccioni [email protected]
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 * @author Brian Piccioni <[email protected]>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, you may find one here:
20 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
21 * or you may search the http://www.gnu.org website for the version 2 license,
22 * or you may write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24 */
25
26#pragma once
27
28#include <board.h>
29#include <footprint.h>
31#include <layer_ids.h>
33#include <pcb_base_frame.h>
34#include <pcb_edit_frame.h>
35#include <project.h>
36#include <frame_type.h>
37#include <tool/actions.h>
38#include <tool/tool_manager.h>
40
41#define SORTXFIRST 0b000 // Sort on X
42#define SORTYFIRST 0b100 // Sort on Y
43#define ASCENDINGFIRST 0b000 // Sort low to high
44#define DESCENDINGFIRST 0b010 // Sort high to low
45#define ASCENDINGSECOND 0b000 // Sort low to high
46#define DESCENDINGSECOND 0b001 // Sort high to low
47
48#define MINGRID 1000
49#define MAXERROR 10
50#define VALIDPREFIX "_-+=/\\" // Prefixs can be alpha or these symbols
51
53{
58};
59
61{
63 wxString NewRefDes; // The new reference designation (F_U21)
64 wxString OldRefDesString; // What the old refdes preamble + number was
65 bool Front; // True if on the front of the board
66 ACTION_CODE Action; // Used to skip (if #, etc)
67};
68
70{
72 bool Front; // True if on the front of the board
73 wxString RefDesString; // What its refdes is R1, C2
74 wxString RefDesPrefix; // ie R, C, etc
75 int x, y; // The coordinates
76 int roundedx, roundedy; // The coordinates after rounding.
77 ACTION_CODE Action; // Used to skip (if #, etc)
79};
80
82{
83 wxString RefDesPrefix;
84 unsigned int LastUsedRefDes;
85 std::set<unsigned int> UnavailableRefs;
86};
87
88
90{
91public:
94
95private:
96 std::vector<wxRadioButton*> m_sortButtons = {
103 m_Up_Left,
105 };
106
107 std::vector<wxRadioButton*> m_scopeRadioButtons = {
112 };
113
114 std::vector<wxStaticBitmap*> Bitmaps = {
123 };
124
125 bool TransferDataToWindow() override;
126
127 void OnApplyClick( wxCommandEvent& event ) override;
128 void OnCloseClick( wxCommandEvent& event ) override;
129 void FilterFrontPrefix( wxCommandEvent& event ) override;
130 void FilterBackPrefix( wxCommandEvent& event ) override;
131
133 void ShowReport( const wxString& aMessage, SEVERITY aSeverity );
134
136 void LogFootprints( const wxString& aMessage, const std::vector<REFDES_INFO>& aFootprints );
137
139 void LogChangePlan( void );
140
143 bool ReannotateBoard( void );
144
147 bool BuildFootprintList( std::vector<REFDES_INFO>& aBadRefDes );
148
151
153 void BuildChangeArray( std::vector<REFDES_INFO>& aFootprints, unsigned int aStartRefDes,
154 const wxString& aPrefix, bool aRemovePrefix,
155 std::vector<REFDES_INFO>& aBadRefDes );
156
158 REFDES_CHANGE* GetNewRefDes( FOOTPRINT* aFootprint );
159
161 int RoundToGrid( int aCoord, int aGrid );
162
165 wxString CoordTowxString( int aX, int aY );
166
168 void FilterPrefix( wxTextCtrl* aPrefix );
169
172 REFDES_PREFIX_INFO* GetOrBuildRefDesInfo( const wxString& aRefDesPrefix, int aStartRefDes = 1 );
173
174private:
176 FOOTPRINTS m_footprints;
177
178 std::vector<REFDES_CHANGE> m_changeArray;
179 std::vector<REFDES_INFO> m_frontFootprints;
180 std::vector<REFDES_INFO> m_backFootprints;
181 std::vector<REFDES_PREFIX_INFO> m_refDesPrefixInfos;
182 std::vector<wxString> m_excludeArray;
183};
184
Class DIALOG_BOARD_REANNOTATE_BASE.
std::vector< REFDES_CHANGE > m_changeArray
std::vector< wxString > m_excludeArray
bool BuildFootprintList(std::vector< REFDES_INFO > &aBadRefDes)
Build the footprint lists, sort it, filter for excludes, then build the change list.
std::vector< wxRadioButton * > m_scopeRadioButtons
void FilterBackPrefix(wxCommandEvent &event) override
std::vector< wxStaticBitmap * > Bitmaps
void LogFootprints(const wxString &aMessage, const std::vector< REFDES_INFO > &aFootprints)
Create a list of the footprints and their coordinates.
std::vector< REFDES_INFO > m_frontFootprints
wxString CoordTowxString(int aX, int aY)
Convert coordinates to wxString.
void FilterPrefix(wxTextCtrl *aPrefix)
Check to make sure the prefix (if there is one) is properly constructed.
void BuildChangeArray(std::vector< REFDES_INFO > &aFootprints, unsigned int aStartRefDes, const wxString &aPrefix, bool aRemovePrefix, std::vector< REFDES_INFO > &aBadRefDes)
Scan through the footprint arrays and create the from -> to array.
int RoundToGrid(int aCoord, int aGrid)
Round an int coordinate to a suitable grid.
REFDES_PREFIX_INFO * GetOrBuildRefDesInfo(const wxString &aRefDesPrefix, int aStartRefDes=1)
Get the structure representing the information currently held for aRefDesPrefix or create one if it d...
void BuildUnavailableRefsList()
Build list of unavailable references. E.g. unselected footprints or locked footprints.
~DIALOG_BOARD_REANNOTATE()=default
void LogChangePlan(void)
Create an audit trail of the changes.
void OnCloseClick(wxCommandEvent &event) override
REFDES_CHANGE * GetNewRefDes(FOOTPRINT *aFootprint)
bool ReannotateBoard(void)
Actually reannotate the board.
void ShowReport(const wxString &aMessage, SEVERITY aSeverity)
Break report into strings separated by and sent to the reporter.
std::vector< REFDES_INFO > m_backFootprints
std::vector< REFDES_PREFIX_INFO > m_refDesPrefixInfos
void OnApplyClick(wxCommandEvent &event) override
std::vector< wxRadioButton * > m_sortButtons
void FilterFrontPrefix(wxCommandEvent &event) override
Definition: kiid.h:49
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:49
The main frame for Pcbnew.
@ INVALID_REFDES
@ EXCLUDE_REFDES
SEVERITY
std::set< unsigned int > UnavailableRefs