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-2024 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 <sch_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
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 {
110 // Avoid referencing items after they are deleted (we don't control order)
111 item->SetParent( nullptr );
112 delete item;
113 }
114}
115
116
118{
120
121 if( !saveCurrentTheme( true ) )
122 return false;
123
124 SETTINGS_MANAGER& settingsMgr = Pgm().GetSettingsManager();
125 EESCHEMA_SETTINGS* app_settings = settingsMgr.GetAppSettings<EESCHEMA_SETTINGS>();
126 app_settings->m_ColorTheme = m_currentSettings->GetFilename();
127
128 return true;
129}
130
131
133{
135 return true;
136}
137
138
140{
142
143 for( SCH_LAYER_ID layer = SCH_LAYER_ID_START; layer < SCH_LAYER_ID_END; ++layer )
144 {
145 if( bgcolor == m_currentSettings->GetColor( layer )
146 && layer != LAYER_SCHEMATIC_BACKGROUND && layer != LAYER_SHEET_BACKGROUND )
147 {
148 wxString msg = _( "Some items have the same color as the background\n"
149 "and they will not be seen on the screen. Are you\n"
150 "sure you want to use these colors?" );
151
152 if( wxMessageBox( msg, _( "Warning" ), wxYES_NO | wxICON_QUESTION,
153 wxGetTopLevelParent( this ) ) == wxNO )
154 return false;
155
156 break;
157 }
158 }
159
160 return true;
161}
162
163
165{
166 for( int layer : m_validLayers )
167 {
169
170 // Do not allow non-background layers to be completely white.
171 // This ensures the BW printing recognizes that the colors should be printed black.
172 if( color == COLOR4D::WHITE && layer != LAYER_SCHEMATIC_BACKGROUND
173 && layer != LAYER_SHEET_BACKGROUND )
174 {
175 color.Darken( 0.01 );
176 }
177
179 }
180
181 return PANEL_COLOR_SETTINGS::saveCurrentTheme( aValidate );
182}
183
184
186{
187 std::vector<SCH_LAYER_ID> layers;
188
190 {
191 if( g_excludedLayers.count( i ) )
192 continue;
193
194 layers.push_back( i );
195 }
196
197 std::sort( layers.begin(), layers.end(),
198 []( SCH_LAYER_ID a, SCH_LAYER_ID b )
199 {
200 return LayerName( a ) < LayerName( b );
201 } );
202
203 for( int layer : layers )
204 {
205 wxString name = LayerName( layer );
206
207 if( layer == LAYER_SCHEMATIC_GRID_AXES )
208 name += wxS( " " ) + _( "(symbol editor only)" );
209
210 createSwatch( layer, name );
211 }
212
213 // Give a minimal width to m_colorsListWindow, in order to always having
214 // a full row shown
215 int min_width = m_colorsGridSizer->GetMinSize().x;
216 const int margin = 20; // A margin around the sizer
217 m_colorsListWindow->SetMinSize( wxSize( min_width + margin, -1 ) );
218
219 m_preview = new SCH_PREVIEW_PANEL( m_panel1, wxID_ANY, wxDefaultPosition, wxSize( -1, -1 ),
221 m_preview->SetStealsFocus( false );
222 m_preview->ShowScrollbars( wxSHOW_SB_NEVER, wxSHOW_SB_NEVER );
223 m_preview->GetGAL()->SetAxesEnabled( false );
224
226 settings->m_IsSymbolEditor = true;
227
228 m_colorsMainSizer->Add( m_preview, 1, wxTOP | wxEXPAND, 1 );
229
230 m_colorsMainSizer->Layout();
231
236}
237
238
240{
242}
243
244
246{
247 KIGFX::VIEW* view = m_preview->GetView();
248
249 std::vector<DANGLING_END_ITEM> endPointsByType;
250
253 m_titleBlock->SetTitle( _( "Color Preview" ) );
254 m_titleBlock->SetDate( wxDateTime::Now().FormatDate() );
255
256 m_page->SetHeightMils( 5000 );
257 m_page->SetWidthMils( 6000 );
258
262 view->Add( m_drawingSheet );
263
264 // TODO: It would be nice to parse a schematic file here.
265
266 auto addItem = [&]( EDA_ITEM* aItem )
267 {
268 view->Add( aItem );
269 m_previewItems.push_back( aItem );
270 };
271
272 std::vector<std::pair<SCH_LAYER_ID, std::pair<VECTOR2I, VECTOR2I>>> lines = {
273 { LAYER_WIRE, { { 1950, 1500 }, { 2325, 1500 } } },
274 { LAYER_WIRE, { { 1950, 2600 }, { 2350, 2600 } } },
275 { LAYER_WIRE, { { 2150, 1700 }, { 2325, 1700 } } },
276 { LAYER_WIRE, { { 2150, 2000 }, { 2150, 1700 } } },
277 { LAYER_WIRE, { { 2925, 1600 }, { 3075, 1600 } } },
278 { LAYER_WIRE, { { 3075, 1600 }, { 3075, 2000 } } },
279 { LAYER_WIRE, { { 3075, 1600 }, { 3250, 1600 } } },
280 { LAYER_WIRE, { { 3075, 2000 }, { 2150, 2000 } } },
281 { LAYER_BUS, { { 1750, 1300 }, { 1850, 1300 } } },
282 { LAYER_BUS, { { 1850, 2500 }, { 1850, 1300 } } },
283 { LAYER_NOTES, { { 2350, 2125 }, { 2350, 2300 } } },
284 { LAYER_NOTES, { { 2350, 2125 }, { 2950, 2125 } } },
285 { LAYER_NOTES, { { 2950, 2125 }, { 2950, 2300 } } },
286 { LAYER_NOTES, { { 2950, 2300 }, { 2350, 2300 } } }
287 };
288
289 for( const std::pair<SCH_LAYER_ID, std::pair<VECTOR2I, VECTOR2I>>& line : lines )
290 {
291 SCH_LINE* wire = new SCH_LINE;
292 wire->SetLayer( line.first );
293 STROKE_PARAMS stroke = wire->GetStroke();
294 stroke.SetWidth( schIUScale.MilsToIU( 6 ) );
295
296 if( line.first != LAYER_NOTES )
297 {
298 stroke.SetLineStyle( LINE_STYLE::SOLID );
299
300 if( line.first == LAYER_BUS )
301 stroke.SetWidth( schIUScale.MilsToIU( 12 ) );
302
303 }
304
305 wire->SetStroke( stroke );
306
307 wire->SetStartPoint( VECTOR2I( schIUScale.MilsToIU( line.second.first.x ),
308 schIUScale.MilsToIU( line.second.first.y ) ) );
309 wire->SetEndPoint( VECTOR2I( schIUScale.MilsToIU( line.second.second.x ),
310 schIUScale.MilsToIU( line.second.second.y ) ) );
311 addItem( wire );
312 }
313
314#define MILS_POINT( x, y ) VECTOR2I( schIUScale.MilsToIU( x ), schIUScale.MilsToIU( y ) )
315
317 nc->SetPosition( MILS_POINT( 2350, 2600 ) );
318 addItem( nc );
319
321 e1->SetPosition( MILS_POINT( 1850, 1400 ) );
322 addItem( e1 );
323
325 e2->SetPosition( MILS_POINT( 1850, 2500 ) );
326 addItem( e2 );
327
328 SCH_TEXT* t1 = new SCH_TEXT( MILS_POINT( 2650, 2240 ), wxT( "PLAIN TEXT" ) );
329 addItem( t1 );
330
331 SCH_LABEL* t2 = new SCH_LABEL( MILS_POINT( 1975, 1500 ), wxT( "LABEL_{0}" ) );
333 t2->SetIsDangling( false );
334 addItem( t2 );
335
336 SCH_LABEL* t3 = new SCH_LABEL( MILS_POINT( 1975, 2600 ), wxT( "LABEL_{1}" ) );
338 t3->SetIsDangling( false );
339 addItem( t3 );
340
341 SCH_GLOBALLABEL* t4 = new SCH_GLOBALLABEL( MILS_POINT( 1750, 1300 ), wxT( "GLOBAL[0..3]" ) );
343 t4->SetIsDangling( false );
344 addItem( t4 );
345
346 SCH_HIERLABEL* t5 = new SCH_HIERLABEL( MILS_POINT( 3250, 1600 ), wxT( "HIER_LABEL" ) );
348 t5->SetIsDangling( false );
349 addItem( t5 );
350
351 SCH_JUNCTION* j = new SCH_JUNCTION( MILS_POINT( 3075, 1600 ) );
352 addItem( j );
353
354 t2->SetSelected();
355
356 {
357 auto mapLibItemPosition =
358 []( const VECTOR2I& aLibPosition ) -> VECTOR2I
359 {
360 // Currently, the mapping is a no-op.
361 return VECTOR2I( aLibPosition.x, aLibPosition.y );
362 };
363
364 LIB_SYMBOL* symbol = new LIB_SYMBOL( wxEmptyString );
365 VECTOR2I p( 2625, 1600 );
366
367 SCH_FIELD& ref = symbol->GetReferenceField();
368
369 ref.SetText( wxT( "U1" ) );
370 ref.SetPosition( MILS_POINT( p.x + 30, p.y - 260 ) );
372
373 SCH_FIELD& value = symbol->GetValueField();
374
375 value.SetText( wxT( "OPA604" ) );
376 value.SetPosition( MILS_POINT( p.x + 30, p.y - 180 ) );
378
379 symbol->SetShowPinNames( true );
380 symbol->SetShowPinNumbers( true );
381 symbol->SetPinNameOffset( 0 );
382
383 SCH_SHAPE* comp_body = new SCH_SHAPE( SHAPE_T::POLY, LAYER_DEVICE );
384
385 comp_body->SetParent( symbol );
386 comp_body->SetUnit( 0 );
387 comp_body->SetBodyStyle( 0 );
388 comp_body->SetStroke( STROKE_PARAMS( schIUScale.MilsToIU( 10 ), LINE_STYLE::SOLID ) );
389 comp_body->SetFillMode( FILL_T::FILLED_WITH_BG_BODYCOLOR );
390 comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
391 comp_body->AddPoint( MILS_POINT( p.x + 200, p.y ) );
392 comp_body->AddPoint( MILS_POINT( p.x - 200, p.y - 200 ) );
393 comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
394
395 addItem( comp_body );
396
397 SCH_PIN* pin = new SCH_PIN( symbol );
398
399 pin->SetPosition( MILS_POINT( p.x - 300, p.y - 100 ) );
400 pin->SetLength( schIUScale.MilsToIU( 100 ) );
401 pin->SetOrientation( PIN_ORIENTATION::PIN_RIGHT );
402 pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
403 pin->SetNumber( wxT( "1" ) );
404 pin->SetName( wxT( "-" ) );
405 pin->SetNumberTextSize( schIUScale.MilsToIU( 50 ) );
406 pin->SetNameTextSize( schIUScale.MilsToIU( 50 ) );
407
408 endPointsByType.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
409 symbol->AddDrawItem( pin );
410
411 pin = new SCH_PIN( symbol );
412
413 pin->SetPosition( MILS_POINT( p.x - 300, p.y + 100 ) );
414 pin->SetLength( schIUScale.MilsToIU( 100 ) );
415 pin->SetOrientation( PIN_ORIENTATION::PIN_RIGHT );
416 pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
417 pin->SetNumber( wxT( "2" ) );
418 pin->SetName( wxT( "+" ) );
419 pin->SetNumberTextSize( schIUScale.MilsToIU( 50 ) );
420 pin->SetNameTextSize( schIUScale.MilsToIU( 50 ) );
421
422 endPointsByType.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
423 symbol->AddDrawItem( pin );
424
425 pin = new SCH_PIN( symbol );
426
427 pin->SetPosition( MILS_POINT( p.x + 300, p.y ) );
428 pin->SetLength( schIUScale.MilsToIU( 100 ) );
429 pin->SetOrientation( PIN_ORIENTATION::PIN_LEFT );
430 pin->SetType( ELECTRICAL_PINTYPE::PT_OUTPUT );
431 pin->SetNumber( wxT( "3" ) );
432 pin->SetName( wxT( "OUT" ) );
433 pin->SetNumberTextSize( schIUScale.MilsToIU( 50 ) );
434 pin->SetNameTextSize( schIUScale.MilsToIU( 50 ) );
435
436 endPointsByType.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
437 symbol->AddDrawItem( pin );
438
439 addItem( symbol );
440 }
441
442 SCH_SHEET* s = new SCH_SHEET(
443 /* aParent */ nullptr,
444 /* aPosition */ MILS_POINT( 4000, 1300 ),
445 /* aSize */ VECTOR2I( schIUScale.MilsToIU( 800 ), schIUScale.MilsToIU( 1300 ) ) );
446 s->GetFields().at( SHEETNAME ).SetText( wxT( "SHEET" ) );
447 s->GetFields().at( SHEETFILENAME ).SetText( _( "/path/to/sheet" ) );
448 s->AutoplaceFields( nullptr, false );
449 addItem( s );
450
451 SCH_SHEET_PIN* sp = new SCH_SHEET_PIN( s, MILS_POINT( 4500, 1500 ), wxT( "SHEET PIN" ) );
452 addItem( sp );
453
454 for( EDA_ITEM* item : m_previewItems )
455 {
456 SCH_ITEM* sch_item = dynamic_cast<SCH_ITEM*>( item );
457
458 if( sch_item && sch_item->IsConnectable() )
459 {
460 sch_item->AutoplaceFields( nullptr, false );
461 sch_item->GetEndPoints( endPointsByType );
462 }
463 }
464
465 std::vector<DANGLING_END_ITEM> endPointsByPos = endPointsByType;
466 DANGLING_END_ITEM_HELPER::sort_dangling_end_items( endPointsByType, endPointsByPos );
467
468 for( EDA_ITEM* item : m_previewItems )
469 {
470 SCH_ITEM* sch_item = dynamic_cast<SCH_ITEM*>( item );
471
472 if( sch_item && sch_item->IsConnectable() )
473 sch_item->UpdateDanglingState( endPointsByType, endPointsByPos, nullptr );
474 }
475
477}
478
479
481{
483}
484
485
487{
490}
491
492
494{
495 if( !m_preview )
496 return;
497
498 KIGFX::VIEW* view = m_preview->GetView();
499 auto settings = static_cast<SCH_RENDER_SETTINGS*>( view->GetPainter()->GetSettings() );
500 settings->LoadColors( m_currentSettings );
501
502 m_preview->GetGAL()->SetClearColor( settings->GetBackgroundColor() );
503
505 auto rect = m_preview->GetScreenRect();
506 m_preview->Refresh( true, &rect );
507}
508
509
511{
512 if( m_preview )
513 {
514 KIGFX::VIEW* view = m_preview->GetView();
515
516 view->SetScale( 1.0 );
517 VECTOR2D screenSize = view->ToWorld( ToVECTOR2D( m_preview->GetClientSize() ), false );
518
520 double scale = view->GetScale() / std::max( fabs( psize.x / screenSize.x ),
521 fabs( psize.y / screenSize.y ) );
522
523 view->SetScale( scale * m_galDisplayOptions.m_scaleFactor * 0.8 /* margin */ );
526 }
527}
528
529
530void PANEL_EESCHEMA_COLOR_SETTINGS::OnSize( wxSizeEvent& aEvent )
531{
533 aEvent.Skip();
534}
535
536
538{
539 // If the theme is not overriding individual item colors then don't show them so that
540 // the user doesn't get seduced into thinking they'll have some effect.
543
546
547 m_colorsGridSizer->Layout();
548 m_colorsListWindow->Layout();
549}
550
551
553{
556}
int color
Definition: DXF_plotter.cpp:58
const char * name
Definition: DXF_plotter.cpp:57
constexpr EDA_IU_SCALE schIUScale
Definition: base_units.h:110
WINDOW_SETTINGS m_Window
Definition: app_settings.h:172
wxString m_ColorTheme
Active color theme name.
Definition: app_settings.h:175
Vec Centre() const
Definition: box2.h:87
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)
static void sort_dangling_end_items(std::vector< DANGLING_END_ITEM > &aItemListByType, std::vector< DANGLING_END_ITEM > &aItemListByPos)
Both contain the same information.
Definition: sch_item.cpp:615
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:89
void SetSelected()
Definition: eda_item.h:119
virtual void SetParent(EDA_ITEM *aParent)
Definition: eda_item.h:104
void SetFillMode(FILL_T aFill)
Definition: eda_shape.h:106
void SetHorizJustify(GR_TEXT_H_ALIGN_T aType)
Definition: eda_text.cpp:267
void ReadConfig(COMMON_SETTINGS &aCommonConfig, WINDOW_SETTINGS &aWindowConfig, wxWindow *aWindow)
Read application and common configs.
wxString GetFilename() const
Definition: json_settings.h:80
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.
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:277
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Set the scaling factor, zooming around a given anchor point.
Definition: view.cpp:587
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:317
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:484
void UpdateAllItems(int aUpdateFlags)
Update all items in the view according to the given flags.
Definition: view.cpp:1563
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
Definition: view.h:221
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:613
Define a library symbol object.
Definition: lib_symbol.h:78
SCH_FIELD & GetValueField() const
Return reference to the value field.
SCH_FIELD & GetReferenceField() const
Return reference to the reference designator field.
void AddDrawItem(SCH_ITEM *aItem, bool aSort=true)
Add a new draw aItem to the draw object list and sort according to aSort.
Definition: lib_symbol.cpp:796
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:59
int GetHeightIU(double aIUScale) const
Gets the page height in IU.
Definition: page_info.h:162
static const wxChar Custom[]
"User" defined page type
Definition: page_info.h:82
void SetHeightMils(double aHeightInMils)
Definition: page_info.cpp:261
int GetWidthIU(double aIUScale) const
Gets the page width in IU.
Definition: page_info.h:153
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.
virtual COMMON_SETTINGS * GetCommonSettings() const
Definition: pgm_base.cpp:678
virtual SETTINGS_MANAGER & GetSettingsManager() const
Definition: pgm_base.h:142
void SetPosition(const VECTOR2I &aPosition) override
Class for a wire to bus entry.
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:51
void SetPosition(const VECTOR2I &aPosition) override
Definition: sch_field.cpp:1442
void SetText(const wxString &aText) override
Definition: sch_field.cpp:1189
void SetSpinStyle(SPIN_STYLE aSpinStyle) override
Definition: sch_label.cpp:1879
void SetSpinStyle(SPIN_STYLE aSpinStyle) override
Definition: sch_label.cpp:2060
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:166
virtual void SetBodyStyle(int aBodyStyle)
Definition: sch_item.h:231
virtual bool IsConnectable() const
Definition: sch_item.h:449
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:415
virtual bool UpdateDanglingState(std::vector< DANGLING_END_ITEM > &aItemListByType, std::vector< DANGLING_END_ITEM > &aItemListByPos, const SCH_SHEET_PATH *aSheet=nullptr)
Test the schematic item to aItemList to check if it's dangling state has changed.
Definition: sch_item.h:435
void SetLayer(SCH_LAYER_ID aLayer)
Definition: sch_item.h:282
virtual void SetUnit(int aUnit)
Definition: sch_item.h:228
virtual void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual)
Definition: sch_item.h:566
void SetIsDangling(bool aIsDangling)
Definition: sch_label.h:325
virtual void SetSpinStyle(SPIN_STYLE aSpinStyle)
Definition: sch_label.cpp:348
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:41
void SetStartPoint(const VECTOR2I &aPosition)
Definition: sch_line.h:137
virtual STROKE_PARAMS GetStroke() const override
Definition: sch_line.h:184
virtual void SetStroke(const STROKE_PARAMS &aStroke) override
Definition: sch_line.h:185
void SetEndPoint(const VECTOR2I &aPosition)
Definition: sch_line.h:142
void SetPosition(const VECTOR2I &aPosition) override
void Refresh(bool aEraseBackground, const wxRect *aRect) override
SCH_RENDER_SETTINGS * GetRenderSettings() const
void LoadColors(const COLOR_SETTINGS *aSettings) override
void SetStroke(const STROKE_PARAMS &aStroke) override
Definition: sch_shape.cpp:63
void AddPoint(const VECTOR2I &aPosition)
Definition: sch_shape.cpp:576
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:663
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
virtual void SetShowPinNumbers(bool aShow)
Set or clear the pin number visibility flag.
Definition: symbol.h:129
virtual void SetShowPinNames(bool aShow)
Set or clear the pin name visibility flag.
Definition: symbol.h:123
void SetPinNameOffset(int aOffset)
Set the offset in mils of the pin name text from the pin symbol.
Definition: symbol.h:117
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:354
@ LAYER_DANGLING
Definition: layer_ids.h:382
@ LAYER_DEVICE
Definition: layer_ids.h:371
@ LAYER_SHEET_BACKGROUND
Definition: layer_ids.h:389
@ LAYER_WIRE
Definition: layer_ids.h:357
@ LAYER_NOTES
Definition: layer_ids.h:372
@ LAYER_BUS
Definition: layer_ids.h:358
@ SCH_LAYER_ID_END
Definition: layer_ids.h:406
@ SCH_LAYER_ID_START
Definition: layer_ids.h:355
@ LAYER_SCHEMATIC_DRAWINGSHEET
Definition: layer_ids.h:398
@ LAYER_SCHEMATIC_GRID_AXES
Definition: layer_ids.h:391
@ LAYER_NOTES_BACKGROUND
Definition: layer_ids.h:374
@ LAYER_SCHEMATIC_PAGE_LIMITS
Definition: layer_ids.h:399
@ LAYER_SHEET
Definition: layer_ids.h:376
@ LAYER_SCHEMATIC_BACKGROUND
Definition: layer_ids.h:392
@ COLOR
Color has changed.
Definition: view_item.h:53
#define MILS_POINT(x, y)
std::set< int > g_excludedLayers
PGM_BASE & Pgm()
The global Program "get" accessor.
Definition: pgm_base.cpp:1059
see class PGM_BASE
@ PIN_END
Definition: sch_item.h:81
@ SHEETNAME
Definition: sch_sheet.h:45
@ SHEETFILENAME
Definition: sch_sheet.h:46
const int scale
const double IU_PER_MILS
Definition: base_units.h:77
constexpr int MilsToIU(int mils) const
Definition: base_units.h:93
@ GR_TEXT_H_ALIGN_LEFT
VECTOR2< int32_t > VECTOR2I
Definition: vector2d.h:673
VECTOR2D ToVECTOR2D(const wxPoint &aPoint)
Definition: vector2wx.h:40