KiCad PCB EDA Suite
Loading...
Searching...
No Matches
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-2023 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 m_connectionGridSize( aFrame, m_connectionGridLabel, m_connectionGridCtrl, m_connectionGridUnits )
42{
43 wxSize minSize = m_dashLengthCtrl->GetMinSize();
44 int minWidth = m_dashLengthCtrl->GetTextExtent( wxT( "XXX.XXX" ) ).GetWidth();
45
46 m_dashLengthCtrl->SetMinSize( wxSize( minWidth, minSize.GetHeight() ) );
47 m_gapLengthCtrl->SetMinSize( wxSize( minWidth, minSize.GetHeight() ) );
48
49 m_dashedLineHelp->SetFont( KIUI::GetInfoFont( this ).Italic() );
50}
51
52
53void PANEL_SETUP_FORMATTING::onCheckBoxIref( wxCommandEvent& event )
54{
55 bool enabled = m_showIntersheetsReferences->GetValue();
56
57 m_radioFormatStandard->Enable( enabled );
58 m_radioFormatAbbreviated->Enable( enabled );
59 m_prefixLabel->Enable( enabled );
60 m_prefixCtrl->Enable( enabled );
61 m_suffixLabel->Enable( enabled );
62 m_suffixCtrl->Enable( enabled );
63 m_listOwnPage->Enable( enabled );
64}
65
66
67int getRefStyleMenuIndex( int aSubpartIdSeparator, int aFirstSubpartId )
68{
69 // Reference style one of: "A" ".A" "-A" "_A" ".1" "-1" "_1"
70 switch( aSubpartIdSeparator )
71 {
72 default:
73 case 0: return 0;
74 case '.': return aFirstSubpartId == '1' ? 4 : 1;
75 case '-': return aFirstSubpartId == '1' ? 5 : 2;
76 case '_': return aFirstSubpartId == '1' ? 6 : 3;
77 }
78}
79
80
82{
84
86 settings.m_SubpartFirstId ) );
87
88 m_textSize.SetUnits( EDA_UNITS::MILS );
89 m_lineWidth.SetUnits( EDA_UNITS::MILS );
90 m_pinSymbolSize.SetUnits( EDA_UNITS::MILS );
91 m_connectionGridSize.SetUnits( EDA_UNITS::MILS );
92
96 m_choiceJunctionDotSize->SetSelection( settings.m_JunctionSizeChoice );
98
100
103 m_prefixLabel->Enable( settings.m_IntersheetRefsShow );
104 m_prefixCtrl->Enable( settings.m_IntersheetRefsShow );
105 m_suffixLabel->Enable( settings.m_IntersheetRefsShow );
106 m_suffixCtrl->Enable( settings.m_IntersheetRefsShow );
107 m_listOwnPage->Enable( settings.m_IntersheetRefsShow );
108
111 m_prefixCtrl->ChangeValue( settings.m_IntersheetRefsPrefix );
112 m_suffixCtrl->ChangeValue( settings.m_IntersheetRefsSuffix );
113 m_listOwnPage->SetValue( settings.m_IntersheetRefsListOwnPage );
114
115#define SET_VALUE( ctrl, units, value ) \
116 ctrl->SetValue( EDA_UNIT_UTILS::UI::StringFromValue( unityScale, units, value ) )
117
118 SET_VALUE( m_textOffsetRatioCtrl, EDA_UNITS::PERCENT, settings.m_TextOffsetRatio * 100.0 );
119 SET_VALUE( m_overbarHeightCtrl, EDA_UNITS::PERCENT, settings.m_FontMetrics.m_OverbarHeight * 100.0 );
120 SET_VALUE( m_dashLengthCtrl, EDA_UNITS::UNSCALED, settings.m_DashedLineDashRatio );
121 SET_VALUE( m_gapLengthCtrl, EDA_UNITS::UNSCALED, settings.m_DashedLineGapRatio );
122 SET_VALUE( m_labelSizeRatioCtrl, EDA_UNITS::PERCENT, settings.m_LabelSizeRatio * 100.0 );
123
124#undef SET_VALUE
125
126 m_vPrecisionCtrl->SetValue( settings.m_OPO_VPrecision );
127 m_vRangeCtrl->SetStringSelection( settings.m_OPO_VRange );
128 m_iPrecisionCtrl->SetValue( settings.m_OPO_IPrecision );
129 m_iRangeCtrl->SetStringSelection( settings.m_OPO_IRange );
130
131 return true;
132}
133
134
136{
137 if( !m_connectionGridSize.Validate( MIN_CONNECTION_GRID_MILS, 10000, EDA_UNITS::MILS ) )
138 return false;
139
141
142 // Reference style one of: "A" ".A" "-A" "_A" ".1" "-1" "_1"
143 switch( m_choiceSeparatorRefId->GetSelection() )
144 {
145 default:
146 case 0: settings.m_SubpartFirstId = 'A'; settings.m_SubpartIdSeparator = 0; break;
147 case 1: settings.m_SubpartFirstId = 'A'; settings.m_SubpartIdSeparator = '.'; break;
148 case 2: settings.m_SubpartFirstId = 'A'; settings.m_SubpartIdSeparator = '-'; break;
149 case 3: settings.m_SubpartFirstId = 'A'; settings.m_SubpartIdSeparator = '_'; break;
150 case 4: settings.m_SubpartFirstId = '1'; settings.m_SubpartIdSeparator = '.'; break;
151 case 5: settings.m_SubpartFirstId = '1'; settings.m_SubpartIdSeparator = '-'; break;
152 case 6: settings.m_SubpartFirstId = '1'; settings.m_SubpartIdSeparator = '_'; break;
153 }
154
159
160 if( m_choiceJunctionDotSize->GetSelection() != wxNOT_FOUND )
161 settings.m_JunctionSizeChoice = m_choiceJunctionDotSize->GetSelection();
162
165 settings.m_IntersheetRefsPrefix = m_prefixCtrl->GetValue();
166 settings.m_IntersheetRefsSuffix = m_suffixCtrl->GetValue();
167 settings.m_IntersheetRefsListOwnPage = m_listOwnPage->GetValue();
168
169#define GET_VALUE( units, str ) EDA_UNIT_UTILS::UI::DoubleValueFromString( unityScale, units, str )
170
171 settings.m_TextOffsetRatio = GET_VALUE( EDA_UNITS::PERCENT, m_textOffsetRatioCtrl->GetValue() ) / 100.0;
172 settings.m_FontMetrics.m_OverbarHeight = GET_VALUE( EDA_UNITS::PERCENT, m_overbarHeightCtrl->GetValue() ) / 100.0;
173 settings.m_DashedLineDashRatio = GET_VALUE( EDA_UNITS::UNSCALED, m_dashLengthCtrl->GetValue() );
174 settings.m_DashedLineGapRatio = GET_VALUE( EDA_UNITS::UNSCALED, m_gapLengthCtrl->GetValue() );
175 settings.m_LabelSizeRatio = GET_VALUE( EDA_UNITS::PERCENT, m_labelSizeRatioCtrl->GetValue() ) / 100.0;
176
177#undef GET_VALUE
178
179 settings.m_OPO_VPrecision = m_vPrecisionCtrl->GetValue();
180
181 if( m_vRangeCtrl->GetSelection() == 0 )
182 settings.m_OPO_VRange = wxS( "~V" );
183 else
184 settings.m_OPO_VRange = m_vRangeCtrl->GetStringSelection();
185
186 settings.m_OPO_IPrecision = m_iPrecisionCtrl->GetValue();
187
188 if( m_iRangeCtrl->GetSelection() == 0 )
189 settings.m_OPO_IRange = wxS( "~A" );
190 else
191 settings.m_OPO_IRange = m_iRangeCtrl->GetStringSelection();
192
193 return true;
194}
195
196
198{
200 aSettings.m_SubpartFirstId ) );
201
206
210 m_prefixCtrl->ChangeValue( aSettings.m_IntersheetRefsPrefix );
211 m_suffixCtrl->ChangeValue( aSettings.m_IntersheetRefsSuffix );
212 m_listOwnPage->SetValue( aSettings.m_IntersheetRefsListOwnPage );
213
214#define SET_VALUE( ctrl, units, value ) \
215 ctrl->SetValue( EDA_UNIT_UTILS::UI::StringFromValue( unityScale, units, value ) )
216
217 SET_VALUE( m_textOffsetRatioCtrl, EDA_UNITS::PERCENT, aSettings.m_TextOffsetRatio * 100.0 );
218 SET_VALUE( m_dashLengthCtrl, EDA_UNITS::UNSCALED, aSettings.m_DashedLineDashRatio );
219 SET_VALUE( m_gapLengthCtrl, EDA_UNITS::UNSCALED, aSettings.m_DashedLineGapRatio );
220 SET_VALUE( m_labelSizeRatioCtrl, EDA_UNITS::PERCENT, aSettings.m_LabelSizeRatio * 100.0 );
221
222#undef SET_VALUE
223}
double m_OverbarHeight
Definition: font.h:123
PANEL_SETUP_FORMATTING(wxWindow *aWindow, SCH_EDIT_FRAME *aFrame)
void onCheckBoxIref(wxCommandEvent &event) override
void ImportSettingsFrom(SCHEMATIC_SETTINGS &aSettings)
These are loaded from Eeschema settings but then overwritten by the project settings.
KIFONT::METRICS m_FontMetrics
SCHEMATIC_SETTINGS & Settings() const
Definition: schematic.cpp:314
Schematic editor (Eeschema) main window.
SCHEMATIC & Schematic() const
int GetIntValue()
Definition: unit_binder.h:129
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 bool Validate(double aMin, double aMax, EDA_UNITS aUnits=EDA_UNITS::UNSCALED)
Validate the control against the given range, informing the user of any errors found.
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)
int getRefStyleMenuIndex(int aSubpartIdSeparator, int aFirstSubpartId)
KICOMMON_API wxFont GetInfoFont(wxWindow *aWindow)
Definition: ui_common.cpp:154
#define MIN_CONNECTION_GRID_MILS