KiCad PCB EDA Suite
Loading...
Searching...
No Matches
variant_proxy_undo_item.cpp
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 The KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
19
21#include <sch_edit_frame.h>
22
23
26{
27 for( const wxString& variant : aSchematic->GetVariantNames() )
28 m_variants[variant] = aSchematic->GetVariantDescription( variant );
29
30 m_currentVariant = aSchematic->GetCurrentVariant();
31}
32
33
35{
36 std::set<wxString> currentVariants = aSchematic->GetVariantNames();
37
38 for( const auto& [variantName, variantDescription] : m_variants )
39 {
40 if( currentVariants.contains( variantName ) )
41 currentVariants.erase( variantName );
42 else
43 aSchematic->AddVariant( variantName );
44
45 aSchematic->SetVariantDescription( variantName, variantDescription );
46 }
47
48 for( const wxString& excessVariant : currentVariants )
49 aSchematic->DeleteVariant( excessVariant );
50
51 if( m_currentVariant != aSchematic->GetCurrentVariant() )
53}
54
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
Definition eda_item.cpp:84
Holds all the data relating to one schematic.
Definition schematic.h:149
void SetCurrentVariant(const wxString &aVariantName)
void DeleteVariant(const wxString &aVariantName, SCH_COMMIT *aCommit=nullptr)
Delete all information for aVariantName.
wxString GetVariantDescription(const wxString &aVariantName) const
Return the description for a variant.
void AddVariant(const wxString &aVariantName)
wxString GetCurrentVariant() const
Return the current variant being edited.
void SetVariantDescription(const wxString &aVariantName, const wxString &aDescription)
Set the description for a variant.
const std::set< wxString > & GetVariantNames() const
Return the set of variant names (without the default placeholder).
Definition schematic.h:664
std::map< wxString, wxString > m_variants
void Restore(SCHEMATIC *aSchematic)
VARIANT_PROXY_UNDO_ITEM(const SCHEMATIC *aSchematic)
@ WS_PROXY_UNDO_ITEM_T
Definition typeinfo.h:220