KiCad PCB EDA Suite
Loading...
Searching...
No Matches
panel_eeschema_color_settings.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 Jon Evans <[email protected]>
5 * Copyright (C) 2020-2023 KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#include <regex>
22
23#include <eeschema_settings.h>
26#include <layer_ids.h>
27#include <lib_shape.h>
28#include <math/vector2wx.h>
29#include <page_info.h>
31#include <pgm_base.h>
32#include <sch_bus_entry.h>
33#include <sch_junction.h>
34#include <sch_line.h>
35#include <sch_no_connect.h>
36#include <sch_painter.h>
37#include <sch_preview_panel.h>
38#include <sch_sheet_pin.h>
39#include <sch_text.h>
43#include <title_block.h>
44#include <view/view.h>
46#include <sch_base_frame.h>
48#include <widgets/wx_panel.h>
49#include <wx/msgdlg.h>
50
51
52std::set<int> g_excludedLayers =
53 {
56 };
57
58
60 PANEL_COLOR_SETTINGS( aParent ),
61 m_preview( nullptr ),
62 m_page( nullptr ),
63 m_titleBlock( nullptr ),
64 m_drawingSheet( nullptr ),
65 m_previewItems()
66{
67 m_colorNamespace = "schematic";
68
69 SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
70 COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings();
72 COLOR_SETTINGS* current = mgr.GetColorSettings( app_settings->m_ColorTheme );
73
74 // Saved theme doesn't exist? Reset to default
75 if( current->GetFilename() != app_settings->m_ColorTheme )
76 app_settings->m_ColorTheme = current->GetFilename();
77
78 createThemeList( app_settings->m_ColorTheme );
79
80 m_optOverrideColors->SetValue( current->GetOverrideSchItemColors() );
81
82 m_currentSettings = new COLOR_SETTINGS( *current );
83
84 for( int id = SCH_LAYER_ID_START; id < SCH_LAYER_ID_END; id++ )
85 {
86 if( g_excludedLayers.count( id ) )
87 continue;
88
89 m_validLayers.push_back( id );
90 }
91
93
94 m_galDisplayOptions.ReadConfig( *common_settings, app_settings->m_Window, this );
96
97 m_galType = static_cast<EDA_DRAW_PANEL_GAL::GAL_TYPE>( app_settings->m_Graphics.canvas_type );
98}
99
100
102{
103 delete m_page;
104 delete m_titleBlock;
105 delete m_drawingSheet;
106 delete m_currentSettings;
107
108 for( EDA_ITEM* item : m_previewItems )
109 delete item;
110}
111
112
114{
116
117 if( !saveCurrentTheme( true ) )
118 return false;
119
120 SETTINGS_MANAGER& settingsMgr = Pgm().GetSettingsManager();
121 EESCHEMA_SETTINGS* app_settings = settingsMgr.GetAppSettings<EESCHEMA_SETTINGS>();
122 app_settings->m_ColorTheme = m_currentSettings->GetFilename();
123
124 return true;
125}
126
127
129{
131 return true;
132}
133
134
136{
138
139 for( SCH_LAYER_ID layer = SCH_LAYER_ID_START; layer < SCH_LAYER_ID_END; ++layer )
140 {
141 if( bgcolor == m_currentSettings->GetColor( layer )
142 && layer != LAYER_SCHEMATIC_BACKGROUND && layer != LAYER_SHEET_BACKGROUND )
143 {
144 wxString msg = _( "Some items have the same color as the background\n"
145 "and they will not be seen on the screen. Are you\n"
146 "sure you want to use these colors?" );
147
148 if( wxMessageBox( msg, _( "Warning" ), wxYES_NO | wxICON_QUESTION, this ) == wxNO )
149 return false;
150
151 break;
152 }
153 }
154
155 return true;
156}
157
158
160{
161 for( int layer : m_validLayers )
162 {
164
165 // Do not allow non-background layers to be completely white.
166 // This ensures the BW printing recognizes that the colors should be printed black.
167 if( color == COLOR4D::WHITE && layer != LAYER_SCHEMATIC_BACKGROUND
168 && layer != LAYER_SHEET_BACKGROUND )
169 {
170 color.Darken( 0.01 );
171 }
172
174 }
175
176 return PANEL_COLOR_SETTINGS::saveCurrentTheme( aValidate );
177}
178
179
181{
182 std::vector<SCH_LAYER_ID> layers;
183
185 {
186 if( g_excludedLayers.count( i ) )
187 continue;
188
189 layers.push_back( i );
190 }
191
192 std::sort( layers.begin(), layers.end(),
193 []( SCH_LAYER_ID a, SCH_LAYER_ID b )
194 {
195 return LayerName( a ) < LayerName( b );
196 } );
197
198 for( int layer : layers )
199 {
200 wxString name = LayerName( layer );
201
202 if( layer == LAYER_SCHEMATIC_GRID_AXES )
203 name += wxS( " " ) + _( "(symbol editor only)" );
204
205 createSwatch( layer, name );
206 }
207
208 // Give a minimal width to m_colorsListWindow, in order to always having
209 // a full row shown
210 int min_width = m_colorsGridSizer->GetMinSize().x;
211 const int margin = 20; // A margin around the sizer
212 m_colorsListWindow->SetMinSize( wxSize( min_width + margin, -1 ) );
213
214 m_preview = new SCH_PREVIEW_PANEL( m_panel1, wxID_ANY, wxDefaultPosition, wxSize( -1, -1 ),
216 m_preview->SetStealsFocus( false );
217 m_preview->ShowScrollbars( wxSHOW_SB_NEVER, wxSHOW_SB_NEVER );
218 m_preview->GetGAL()->SetAxesEnabled( false );
219
221 settings->m_IsSymbolEditor = true;
222
223 m_colorsMainSizer->Add( m_preview, 1, wxTOP | wxEXPAND, 1 );
224
225 m_colorsMainSizer->Layout();
226
231}
232
233
235{
237}
238
239
241{
242 KIGFX::VIEW* view = m_preview->GetView();
243
244 std::vector<DANGLING_END_ITEM> endPoints;
245
248 m_titleBlock->SetTitle( _( "Color Preview" ) );
249 m_titleBlock->SetDate( wxDateTime::Now().FormatDate() );
250
251 m_page->SetHeightMils( 5000 );
252 m_page->SetWidthMils( 6000 );
253
257 view->Add( m_drawingSheet );
258
259 // TODO: It would be nice to parse a schematic file here.
260 // This is created from the color_settings.sch file in demos folder
261
262 auto addItem = [&]( EDA_ITEM* aItem )
263 {
264 view->Add( aItem );
265 m_previewItems.push_back( aItem );
266 };
267
268 std::vector<std::pair<SCH_LAYER_ID, std::pair<VECTOR2I, VECTOR2I>>> lines = {
269 { LAYER_WIRE, { { 1950, 1500 }, { 2325, 1500 } } },
270 { LAYER_WIRE, { { 1950, 2600 }, { 2350, 2600 } } },
271 { LAYER_WIRE, { { 2150, 1700 }, { 2325, 1700 } } },
272 { LAYER_WIRE, { { 2150, 2000 }, { 2150, 1700 } } },
273 { LAYER_WIRE, { { 2925, 1600 }, { 3075, 1600 } } },
274 { LAYER_WIRE, { { 3075, 1600 }, { 3075, 2000 } } },
275 { LAYER_WIRE, { { 3075, 1600 }, { 3250, 1600 } } },
276 { LAYER_WIRE, { { 3075, 2000 }, { 2150, 2000 } } },
277 { LAYER_BUS, { { 1750, 1400 }, { 1850, 1400 } } },
278 { LAYER_BUS, { { 1850, 2500 }, { 1850, 1400 } } },
279 { LAYER_NOTES, { { 2350, 2125 }, { 2350, 2300 } } },
280 { LAYER_NOTES, { { 2350, 2125 }, { 2950, 2125 } } },
281 { LAYER_NOTES, { { 2950, 2125 }, { 2950, 2300 } } },
282 { LAYER_NOTES, { { 2950, 2300 }, { 2350, 2300 } } }
283 };
284
285 for( const std::pair<SCH_LAYER_ID, std::pair<VECTOR2I, VECTOR2I>>& line : lines )
286 {
287 SCH_LINE* wire = new SCH_LINE;
288 wire->SetLayer( line.first );
289 STROKE_PARAMS stroke = wire->GetStroke();
290 stroke.SetWidth( schIUScale.MilsToIU( 6 ) );
291
292 if( line.first != LAYER_NOTES )
293 {
294 stroke.SetLineStyle( LINE_STYLE::SOLID );
295
296 if( line.first == LAYER_BUS )
297 stroke.SetWidth( schIUScale.MilsToIU( 12 ) );
298
299 }
300
301 wire->SetStroke( stroke );
302
303 wire->SetStartPoint( VECTOR2I( schIUScale.MilsToIU( line.second.first.x ),
304 schIUScale.MilsToIU( line.second.first.y ) ) );
305 wire->SetEndPoint( VECTOR2I( schIUScale.MilsToIU( line.second.second.x ),
306 schIUScale.MilsToIU( line.second.second.y ) ) );
307 addItem( wire );
308 }
309
310#define MILS_POINT( x, y ) VECTOR2I( schIUScale.MilsToIU( x ), schIUScale.MilsToIU( y ) )
311
313 nc->SetPosition( MILS_POINT( 2525, 1300 ) );
314 addItem( nc );
315
317 e1->SetPosition( MILS_POINT( 1850, 1400 ) );
318 addItem( e1 );
319
321 e2->SetPosition( MILS_POINT( 1850, 2500 ) );
322 addItem( e2 );
323
324 SCH_TEXT* t1 = new SCH_TEXT( MILS_POINT( 2850, 2250 ), wxT( "PLAIN TEXT" ) );
325 addItem( t1 );
326
327 SCH_LABEL* t2 = new SCH_LABEL( MILS_POINT( 1975, 1500 ), wxT( "LABEL_{0}" ) );
329 t2->SetIsDangling( false );
330 addItem( t2 );
331
332 SCH_LABEL* t3 = new SCH_LABEL( MILS_POINT( 1975, 2600 ), wxT( "LABEL_{1}" ) );
334 t3->SetIsDangling( false );
335 addItem( t3 );
336
337 SCH_GLOBALLABEL* t4 = new SCH_GLOBALLABEL( MILS_POINT( 1750, 1400 ), wxT( "GLOBAL[0..3]" ) );
339 t4->SetIsDangling( false );
340 addItem( t4 );
341
342 SCH_HIERLABEL* t5 = new SCH_HIERLABEL( MILS_POINT( 3250, 1600 ), wxT( "HIER_LABEL" ) );
344 t5->SetIsDangling( false );
345 addItem( t5 );
346
347 SCH_JUNCTION* j = new SCH_JUNCTION( MILS_POINT( 3075, 1600 ) );
348 addItem( j );
349
350 t2->SetSelected();
351
352 {
353 auto mapLibItemPosition =
354 []( const VECTOR2I& aLibPosition ) -> VECTOR2I
355 {
356 return VECTOR2I( aLibPosition.x, -aLibPosition.y );
357 };
358
359 LIB_SYMBOL* symbol = new LIB_SYMBOL( wxEmptyString );
360 VECTOR2I p( 2625, -1600 );
361
362 LIB_FIELD& ref = symbol->GetReferenceField();
363
364 ref.SetText( wxT( "U1" ) );
365 ref.SetPosition( MILS_POINT( p.x + 30, p.y + 260 ) );
367
368 LIB_FIELD& value = symbol->GetValueField();
369
370 value.SetText( wxT( "OPA604" ) );
371 value.SetPosition( MILS_POINT( p.x + 30, p.y + 180 ) );
373
374 symbol->SetShowPinNames( true );
375 symbol->SetShowPinNumbers( true );
376 symbol->SetPinNameOffset( 0 );
377
378 LIB_SHAPE* comp_body = new LIB_SHAPE( symbol, SHAPE_T::POLY );
379
380 comp_body->SetUnit( 0 );
381 comp_body->SetConvert( 0 );
382 comp_body->SetStroke( STROKE_PARAMS( schIUScale.MilsToIU( 10 ), LINE_STYLE::SOLID ) );
383 comp_body->SetFillMode( FILL_T::FILLED_WITH_BG_BODYCOLOR );
384 comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
385 comp_body->AddPoint( MILS_POINT( p.x + 200, p.y ) );
386 comp_body->AddPoint( MILS_POINT( p.x - 200, p.y - 200 ) );
387 comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
388
389 addItem( comp_body );
390
391 LIB_PIN* pin = new LIB_PIN( symbol );
392
393 pin->SetPosition( MILS_POINT( p.x - 300, p.y + 100 ) );
394 pin->SetLength( schIUScale.MilsToIU( 100 ) );
395 pin->SetOrientation( PIN_ORIENTATION::PIN_RIGHT );
396 pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
397 pin->SetNumber( wxT( "1" ) );
398 pin->SetName( wxT( "-" ) );
399
400 endPoints.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
401 symbol->AddDrawItem( pin );
402
403 pin = new LIB_PIN( symbol );
404
405 pin->SetPosition( MILS_POINT( p.x - 300, p.y - 100 ) );
406 pin->SetLength( schIUScale.MilsToIU( 100 ) );
407 pin->SetOrientation( PIN_ORIENTATION::PIN_RIGHT );
408 pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
409 pin->SetNumber( wxT( "2" ) );
410 pin->SetName( wxT( "+" ) );
411
412 endPoints.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
413 symbol->AddDrawItem( pin );
414
415 pin = new LIB_PIN( symbol );
416
417 pin->SetPosition( MILS_POINT( p.x + 300, p.y ) );
418 pin->SetLength( schIUScale.MilsToIU( 100 ) );
419 pin->SetOrientation( PIN_ORIENTATION::PIN_LEFT );
420 pin->SetType( ELECTRICAL_PINTYPE::PT_OUTPUT );
421 pin->SetNumber( wxT( "3" ) );
422 pin->SetName( wxT( "OUT" ) );
423
424 endPoints.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
425 symbol->AddDrawItem( pin );
426
427 addItem( symbol );
428 }
429
430 SCH_SHEET* s = new SCH_SHEET(
431 /* aParent */ nullptr,
432 /* aPosition */ MILS_POINT( 4000, 1300 ),
433 /* aSize */ VECTOR2I( schIUScale.MilsToIU( 800 ), schIUScale.MilsToIU( 1300 ) ) );
434 s->GetFields().at( SHEETNAME ).SetText( wxT( "SHEET" ) );
435 s->GetFields().at( SHEETFILENAME ).SetText( _( "/path/to/sheet" ) );
436 s->AutoplaceFields( nullptr, false );
437 addItem( s );
438
439 SCH_SHEET_PIN* sp = new SCH_SHEET_PIN( s, MILS_POINT( 4500, 1500 ), wxT( "SHEET PIN" ) );
440 addItem( sp );
441
442 for( EDA_ITEM* item : m_previewItems )
443 {
444 SCH_ITEM* sch_item = dynamic_cast<SCH_ITEM*>( item );
445
446 if( sch_item && sch_item->IsConnectable() )
447 {
448 sch_item->AutoplaceFields( nullptr, false );
449 sch_item->GetEndPoints( endPoints );
450 }
451 }
452
453 for( EDA_ITEM* item : m_previewItems )
454 {
455 SCH_ITEM* sch_item = dynamic_cast<SCH_ITEM*>( item );
456
457 if( sch_item && sch_item->IsConnectable() )
458 sch_item->UpdateDanglingState( endPoints, nullptr );
459 }
460
462}
463
464
466{
468}
469
470
472{
475}
476
477
479{
480 if( !m_preview )
481 return;
482
483 KIGFX::VIEW* view = m_preview->GetView();
484 auto settings = static_cast<KIGFX::SCH_RENDER_SETTINGS*>( view->GetPainter()->GetSettings() );
485 settings->LoadColors( m_currentSettings );
486
487 m_preview->GetGAL()->SetClearColor( settings->GetBackgroundColor() );
488
490 auto rect = m_preview->GetScreenRect();
491 m_preview->Refresh( true, &rect );
492}
493
494
496{
497 if( m_preview )
498 {
499 KIGFX::VIEW* view = m_preview->GetView();
500
501 view->SetScale( 1.0 );
502 VECTOR2D screenSize = view->ToWorld( ToVECTOR2D( m_preview->GetClientSize() ), false );
503
505 double scale = view->GetScale() / std::max( fabs( psize.x / screenSize.x ),
506 fabs( psize.y / screenSize.y ) );
507
508 view->SetScale( scale * m_galDisplayOptions.m_scaleFactor * 0.8 /* margin */ );
511 }
512}
513
514
515void PANEL_EESCHEMA_COLOR_SETTINGS::OnSize( wxSizeEvent& aEvent )
516{
518 aEvent.Skip();
519}
520
521
523{
524 // If the theme is not overriding individual item colors then don't show them so that
525 // the user doesn't get seduced into thinking they'll have some effect.
528
531
532 m_colorsGridSizer->Layout();
533 m_colorsListWindow->Layout();
534}
535
536
538{
541}
int color
Definition: DXF_plotter.cpp:58
const char * name
Definition: DXF_plotter.cpp:57
constexpr EDA_IU_SCALE schIUScale
Definition: base_units.h:111
WINDOW_SETTINGS m_Window
Definition: app_settings.h:169
wxString m_ColorTheme
Active color theme name.
Definition: app_settings.h:172
Vec Centre() const
Definition: box2.h:71
Color settings are a bit different than most of the settings objects in that there can be more than o...
void SetColor(int aLayer, const COLOR4D &aColor)
bool GetOverrideSchItemColors() const
COLOR4D GetColor(int aLayer) const
void SetOverrideSchItemColors(bool aFlag)
const BOX2I ViewBBox() const override
void SetPageBorderColorLayer(int aLayerId)
Overrides the layer used to pick the color of the page border (normally LAYER_GRID)
void SetColorLayer(int aLayerId)
Can be used to override which layer ID is used for drawing sheet item colors.
virtual KIGFX::VIEW * GetView() const
Return a pointer to the #VIEW instance used in the panel.
void ForceRefresh()
Force a redraw.
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
void SetStealsFocus(bool aStealsFocus)
Set whether focus is taken on certain events (mouseover, keys, etc).
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:85
void SetSelected()
Definition: eda_item.h:115
void SetFillMode(FILL_T aFill)
Definition: eda_shape.h:100
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:183
void SetHorizJustify(GR_TEXT_H_ALIGN_T aType)
Definition: eda_text.cpp:252
void ReadConfig(COMMON_SETTINGS &aCommonConfig, WINDOW_SETTINGS &aWindowConfig, wxWindow *aWindow)
Read application and common configs.
wxString GetFilename() const
Definition: json_settings.h:73
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:104
bool m_forceDisplayCursor
The pixel scale factor (>1 for hi-DPI scaled displays)
void SetAxesEnabled(bool aAxesEnabled)
Enable drawing the axes.
void SetClearColor(const COLOR4D &aColor)
virtual RENDER_SETTINGS * GetSettings()=0
Return a pointer to current settings that are going to be used when drawing items.
Store schematic specific render settings.
Definition: sch_painter.h:71
void LoadColors(const COLOR_SETTINGS *aSettings) override
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Definition: view.h:68
double GetScale() const
Definition: view.h:271
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Set the scaling factor, zooming around a given anchor point.
Definition: view.cpp:547
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:313
VECTOR2D ToWorld(const VECTOR2D &aCoord, bool aAbsolute=true) const
Converts a screen space point/vector to a point/vector in world space coordinates.
Definition: view.cpp:444
void UpdateAllItems(int aUpdateFlags)
Update all items in the view according to the given flags.
Definition: view.cpp:1500
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
Definition: view.h:215
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:573
Field object used in symbol libraries.
Definition: lib_field.h:62
void SetPosition(const VECTOR2I &aPosition) override
Definition: lib_item.h:297
void SetConvert(int aConvert)
Definition: lib_item.h:338
void SetUnit(int aUnit)
Definition: lib_item.h:335
void SetStroke(const STROKE_PARAMS &aStroke)
Definition: lib_shape.h:58
void AddPoint(const VECTOR2I &aPosition)
Definition: lib_shape.cpp:505
Define a library symbol object.
Definition: lib_symbol.h:99
void SetShowPinNames(bool aShow)
Set or clear the pin name visibility flag.
Definition: lib_symbol.h:632
LIB_FIELD & GetReferenceField()
Return reference to the reference designator field.
void SetPinNameOffset(int aOffset)
Set the offset in mils of the pin name text from the pin symbol.
Definition: lib_symbol.h:624
void SetShowPinNumbers(bool aShow)
Set or clear the pin number visibility flag.
Definition: lib_symbol.h:640
void AddDrawItem(LIB_ITEM *aItem, bool aSort=true)
Add a new draw aItem to the draw object list and sort according to aSort.
LIB_FIELD & GetValueField()
Return reference to the value field.
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:58
int GetHeightIU(double aIUScale) const
Gets the page height in IU.
Definition: page_info.h:161
static const wxChar Custom[]
"User" defined page type
Definition: page_info.h:81
void SetHeightMils(double aHeightInMils)
Definition: page_info.cpp:261
int GetWidthIU(double aIUScale) const
Gets the page width in IU.
Definition: page_info.h:152
void SetWidthMils(double aWidthInMils)
Definition: page_info.cpp:247
void createThemeList(const wxString &aCurrent)
Builds the theme listbox and sets the selection to the current theme.
void createSwatch(int aLayer, const wxString &aName)
std::vector< int > m_validLayers
A list of layer IDs that are valid for the current color settings dialog.
virtual bool saveCurrentTheme(bool aValidate)
std::string m_colorNamespace
A namespace that will be passed to SETTINGS_MANAGER::SaveColorSettings.
virtual void ResetPanel() override
Reset the contents of this panel.
std::map< int, wxStaticText * > m_labels
COLOR_SETTINGS * m_currentSettings
std::map< int, COLOR_SWATCH * > m_swatches
bool saveCurrentTheme(bool aValidate) override
void onNewThemeSelected() override
Event fired when a new theme is selected that can be overridden in children.
void OnOverrideItemColorsClicked(wxCommandEvent &aEvent) override
bool validateSave(bool aQuiet=false) override
Performs a pre-save validation of the current color theme.
void ResetPanel() override
Reset the contents of this panel.
GAL_DISPLAY_OPTIONS_IMPL m_galDisplayOptions
void OnSize(wxSizeEvent &aEvent) override
EDA_DRAW_PANEL_GAL::GAL_TYPE m_galType
void onColorChanged() override
Event fired when the user changes any color.
void SetPosition(const VECTOR2I &aPosition) override
Class for a wire to bus entry.
void SetSpinStyle(SPIN_STYLE aSpinStyle) override
Definition: sch_label.cpp:1757
void SetSpinStyle(SPIN_STYLE aSpinStyle) override
Definition: sch_label.cpp:1925
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:151
virtual bool IsConnectable() const
Definition: sch_item.h:372
virtual void GetEndPoints(std::vector< DANGLING_END_ITEM > &aItemList)
Add the schematic item end points to aItemList if the item has end points.
Definition: sch_item.h:341
void SetLayer(SCH_LAYER_ID aLayer)
Set the layer this item is on.
Definition: sch_item.h:265
virtual bool UpdateDanglingState(std::vector< DANGLING_END_ITEM > &aItemList, const SCH_SHEET_PATH *aPath=nullptr)
Test the schematic item to aItemList to check if it's dangling state has changed.
Definition: sch_item.h:359
virtual void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual)
Definition: sch_item.h:471
void SetIsDangling(bool aIsDangling)
Definition: sch_label.h:313
virtual void SetSpinStyle(SPIN_STYLE aSpinStyle)
Definition: sch_label.cpp:337
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:40
void SetStartPoint(const VECTOR2I &aPosition)
Definition: sch_line.h:141
virtual STROKE_PARAMS GetStroke() const override
Definition: sch_line.h:180
virtual void SetStroke(const STROKE_PARAMS &aStroke) override
Definition: sch_line.h:181
void SetEndPoint(const VECTOR2I &aPosition)
Definition: sch_line.h:146
void SetPosition(const VECTOR2I &aPosition) override
void Refresh(bool aEraseBackground, const wxRect *aRect) override
KIGFX::SCH_RENDER_SETTINGS * GetRenderSettings() const
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet_pin.h:66
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:57
std::vector< SCH_FIELD > & GetFields()
Definition: sch_sheet.h:93
void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual) override
Definition: sch_sheet.cpp:609
T * GetAppSettings()
Returns a handle to the a given settings by type If the settings have already been loaded,...
COLOR_SETTINGS * GetColorSettings(const wxString &aName="user")
Retrieves a color settings object that applications can read colors from.
Simple container to manage line stroke parameters.
Definition: stroke_params.h:81
void SetLineStyle(LINE_STYLE aLineStyle)
Definition: stroke_params.h:95
void SetWidth(int aWidth)
Definition: stroke_params.h:92
Hold the information shown in the lower right corner of a plot, printout, or editing view.
Definition: title_block.h:41
void SetTitle(const wxString &aTitle)
Definition: title_block.h:58
void SetDate(const wxString &aDate)
Set the date field, and defaults to the current time and date.
Definition: title_block.h:71
#define _(s)
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
Definition: layer_id.cpp:30
SCH_LAYER_ID
Eeschema drawing layers.
Definition: layer_ids.h:346
@ LAYER_DANGLING
Definition: layer_ids.h:373
@ LAYER_SHEET_BACKGROUND
Definition: layer_ids.h:379
@ LAYER_WIRE
Definition: layer_ids.h:349
@ LAYER_NOTES
Definition: layer_ids.h:363
@ LAYER_BUS
Definition: layer_ids.h:350
@ SCH_LAYER_ID_END
Definition: layer_ids.h:396
@ SCH_LAYER_ID_START
Definition: layer_ids.h:347
@ LAYER_SCHEMATIC_DRAWINGSHEET
Definition: layer_ids.h:388
@ LAYER_SCHEMATIC_GRID_AXES
Definition: layer_ids.h:381
@ LAYER_NOTES_BACKGROUND
Definition: layer_ids.h:365
@ LAYER_SCHEMATIC_PAGE_LIMITS
Definition: layer_ids.h:389
@ LAYER_SHEET
Definition: layer_ids.h:367
@ LAYER_SCHEMATIC_BACKGROUND
Definition: layer_ids.h:382
@ COLOR
Color has changed.
Definition: view_item.h:53
#define MILS_POINT(x, y)
std::set< int > g_excludedLayers
see class PGM_BASE
@ PIN_END
Definition: sch_item.h:72
@ SHEETNAME
Definition: sch_sheet.h:45
@ SHEETFILENAME
Definition: sch_sheet.h:46
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:119
const int scale
const double IU_PER_MILS
Definition: base_units.h:78
constexpr int MilsToIU(int mils) const
Definition: base_units.h:94
@ GR_TEXT_H_ALIGN_LEFT
VECTOR2< int > VECTOR2I
Definition: vector2d.h:588
VECTOR2D ToVECTOR2D(const wxPoint &aPoint)
Definition: vector2wx.h:40