KiCad PCB EDA Suite
eeschema/dialogs/panel_setup_formatting.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 (C) 2020-2022 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, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
24#include <sch_edit_frame.h>
25#include <sch_painter.h>
26#include <kiface_base.h>
28#include <sch_junction.h>
29#include <schematic.h>
30#include <schematic_settings.h>
33
34
37 m_frame( aFrame ),
38 m_textSize( aFrame, m_textSizeLabel, m_textSizeCtrl, m_textSizeUnits ),
39 m_lineWidth( aFrame, m_lineWidthLabel, m_lineWidthCtrl, m_lineWidthUnits ),
40 m_pinSymbolSize( aFrame, m_pinSymbolSizeLabel, m_pinSymbolSizeCtrl, m_pinSymbolSizeUnits )
41{
42 wxSize minSize = m_dashLengthCtrl->GetMinSize();
43 int minWidth = m_dashLengthCtrl->GetTextExtent( wxT( "XXX.XXX" ) ).GetWidth();
44
45 m_dashLengthCtrl->SetMinSize( wxSize( minWidth, minSize.GetHeight() ) );
46 m_gapLengthCtrl->SetMinSize( wxSize( minWidth, minSize.GetHeight() ) );
47
48 m_dashedLineHelp->SetFont( KIUI::GetInfoFont( this ).Italic() );
49}
50
51
52void PANEL_SETUP_FORMATTING::onCheckBoxIref( wxCommandEvent& event )
53{
54 bool enabled = m_showIntersheetsReferences->GetValue();
55
56 m_radioFormatStandard->Enable( enabled );
57 m_radioFormatAbbreviated->Enable( enabled );
58 m_prefixLabel->Enable( enabled );
59 m_prefixCtrl->Enable( enabled );
60 m_suffixLabel->Enable( enabled );
61 m_suffixCtrl->Enable( enabled );
62 m_listOwnPage->Enable( enabled );
63}
64
65
67{
69
70 // Reference style one of: "A" ".A" "-A" "_A" ".1" "-1" "_1"
71 int refStyleSelection;
72
74 {
75 default:
76 case 0: refStyleSelection = 0; break;
77 case '.': refStyleSelection = LIB_SYMBOL::GetSubpartFirstId() == '1' ? 4 : 1; break;
78 case '-': refStyleSelection = LIB_SYMBOL::GetSubpartFirstId() == '1' ? 5 : 2; break;
79 case '_': refStyleSelection = LIB_SYMBOL::GetSubpartFirstId() == '1' ? 6 : 3; break;
80 }
81
82 m_choiceSeparatorRefId->SetSelection( refStyleSelection );
83
87
91 m_choiceJunctionDotSize->SetSelection( settings.m_JunctionSizeChoice );
92
94
97 m_prefixLabel->Enable( settings.m_IntersheetRefsShow );
98 m_prefixCtrl->Enable( settings.m_IntersheetRefsShow );
99 m_suffixLabel->Enable( settings.m_IntersheetRefsShow );
100 m_suffixCtrl->Enable( settings.m_IntersheetRefsShow );
101 m_listOwnPage->Enable( settings.m_IntersheetRefsShow );
102
105 m_prefixCtrl->ChangeValue( settings.m_IntersheetRefsPrefix );
106 m_suffixCtrl->ChangeValue( settings.m_IntersheetRefsSuffix );
107 m_listOwnPage->SetValue( settings.m_IntersheetRefsListOwnPage );
108
109#define SET_VALUE( ctrl, units, value ) \
110 ctrl->SetValue( EDA_UNIT_UTILS::UI::StringFromValue( unityScale, units, value ) )
111
116
117#undef SET_VALUE
118
119 return true;
120}
121
122
124{
126
127 // Reference style one of: "A" ".A" "-A" "_A" ".1" "-1" "_1"
128 int firstRefId, refSeparator;
129
130 switch( m_choiceSeparatorRefId->GetSelection() )
131 {
132 default:
133 case 0: firstRefId = 'A'; refSeparator = 0; break;
134 case 1: firstRefId = 'A'; refSeparator = '.'; break;
135 case 2: firstRefId = 'A'; refSeparator = '-'; break;
136 case 3: firstRefId = 'A'; refSeparator = '_'; break;
137 case 4: firstRefId = '1'; refSeparator = '.'; break;
138 case 5: firstRefId = '1'; refSeparator = '-'; break;
139 case 6: firstRefId = '1'; refSeparator = '_'; break;
140 }
141
142 if( refSeparator != LIB_SYMBOL::GetSubpartIdSeparator() ||
143 firstRefId != LIB_SYMBOL::GetSubpartFirstId() )
144 {
145 LIB_SYMBOL::SetSubpartIdNotation( refSeparator, firstRefId );
146 }
147
148 settings.m_DefaultTextSize = (int) m_textSize.GetValue();
149 settings.m_DefaultLineWidth = (int) m_lineWidth.GetValue();
150 settings.m_PinSymbolSize = (int) m_pinSymbolSize.GetValue();
151
152 if( m_choiceJunctionDotSize->GetSelection() != wxNOT_FOUND )
153 settings.m_JunctionSizeChoice = m_choiceJunctionDotSize->GetSelection();
154
157 settings.m_IntersheetRefsPrefix = m_prefixCtrl->GetValue();
158 settings.m_IntersheetRefsSuffix = m_suffixCtrl->GetValue();
159 settings.m_IntersheetRefsListOwnPage = m_listOwnPage->GetValue();
160
161#define GET_VALUE( units, str ) EDA_UNIT_UTILS::UI::DoubleValueFromString( unityScale, units, str )
162
163 settings.m_TextOffsetRatio = GET_VALUE( EDA_UNITS::PERCENT, m_textOffsetRatioCtrl->GetValue() ) / 100.0;
166 settings.m_LabelSizeRatio = GET_VALUE( EDA_UNITS::PERCENT, m_labelSizeRatioCtrl->GetValue() ) / 100.0;
167
168#undef GET_VALUE
169
170 return true;
171}
172
173
175{
179
183 m_prefixCtrl->ChangeValue( aSettings.m_IntersheetRefsPrefix );
184 m_suffixCtrl->ChangeValue( aSettings.m_IntersheetRefsSuffix );
185 m_listOwnPage->SetValue( aSettings.m_IntersheetRefsListOwnPage );
186
187#define SET_VALUE( ctrl, units, value ) \
188 ctrl->SetValue( EDA_UNIT_UTILS::UI::StringFromValue( unityScale, units, value ) )
189
194
195#undef SET_VALUE
196}
static int GetSubpartIdSeparator()
Definition: lib_symbol.h:570
static int GetSubpartFirstId()
Definition: lib_symbol.h:576
static void SetSubpartIdNotation(int aSep, int aFirstId)
Set the separator char between the subpart id and the reference 0 (no separator) or '.
PANEL_SETUP_FORMATTING(wxWindow *aWindow, SCH_EDIT_FRAME *aFrame)
void onCheckBoxIref(wxCommandEvent &event) override
void ImportSettingsFrom(SCHEMATIC_SETTINGS &aSettings)
These settings were stored in SCH_BASE_FRAME previously.
SCHEMATIC_SETTINGS & Settings() const
Definition: schematic.cpp:178
Schematic editor (Eeschema) main window.
SCHEMATIC & Schematic() const
virtual long long int GetValue()
Return the current value in Internal Units.
virtual void SetUnits(EDA_UNITS aUnits)
Normally not needed (as the UNIT_BINDER inherits from the parent frame), but can be used to set to DE...
virtual void SetValue(long long int aValue)
Set new value (in Internal Units) for the text field, taking care of units conversion.
const int minSize
Push and Shove router track width and via size dialog.
#define SET_VALUE(ctrl, units, value)
#define GET_VALUE(units, str)
wxFont GetInfoFont(wxWindow *aWindow)
Definition: ui_common.cpp:156