KiCad PCB EDA Suite
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 <jon@craftyjon.com>
5  * Copyright (C) 2020-2021 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 <bitmaps.h>
24 #include <eeschema_settings.h>
26 #include <layer_ids.h>
27 #include <lib_shape.h>
28 #include <page_info.h>
30 #include <pgm_base.h>
31 #include <sch_bus_entry.h>
32 #include <sch_junction.h>
33 #include <sch_line.h>
34 #include <sch_no_connect.h>
35 #include <sch_painter.h>
36 #include <sch_preview_panel.h>
37 #include <sch_sheet_pin.h>
38 #include <sch_text.h>
42 #include <title_block.h>
43 #include <view/view.h>
45 #include <sch_base_frame.h>
46 #include <widgets/color_swatch.h>
47 #include <wx/msgdlg.h>
48 
49 
51  wxWindow* aParent ) :
52  PANEL_COLOR_SETTINGS( aParent ),
53  m_frame( aFrame ),
54  m_preview( nullptr ),
55  m_page( nullptr ),
56  m_titleBlock( nullptr ),
57  m_drawingSheet( nullptr ),
58  m_previewItems()
59 {
60  m_colorNamespace = "schematic";
61 
62  SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
63 
64  mgr.ReloadColorSettings();
65 
66  COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings();
67  EESCHEMA_SETTINGS* app_settings = mgr.GetAppSettings<EESCHEMA_SETTINGS>();
68  COLOR_SETTINGS* current = mgr.GetColorSettings( app_settings->m_ColorTheme );
69 
70  // Saved theme doesn't exist? Reset to default
71  if( current->GetFilename() != app_settings->m_ColorTheme )
72  app_settings->m_ColorTheme = current->GetFilename();
73 
74  createThemeList( app_settings->m_ColorTheme );
75 
76  m_optOverrideColors->SetValue( current->GetOverrideSchItemColors() );
77 
78  m_currentSettings = new COLOR_SETTINGS( *current );
79 
80  for( int id = SCH_LAYER_ID_START; id < SCH_LAYER_ID_END; id++ )
81  m_validLayers.push_back( id );
82 
84 
86 
87  m_galDisplayOptions.ReadConfig( *common_settings, app_settings->m_Window, this );
89 
90  auto type = static_cast<EDA_DRAW_PANEL_GAL::GAL_TYPE>( app_settings->m_Graphics.canvas_type );
91 
92  m_preview = new SCH_PREVIEW_PANEL( this, wxID_ANY, wxDefaultPosition, wxSize( -1, -1 ),
93  m_galDisplayOptions, type );
94  m_preview->SetStealsFocus( false );
95  m_preview->ShowScrollbars( wxSHOW_SB_NEVER, wxSHOW_SB_NEVER );
96  m_preview->GetGAL()->SetAxesEnabled( false );
97 
98  m_colorsMainSizer->Add( 10, 0, 0, wxEXPAND, 5 );
99  m_colorsMainSizer->Add( m_preview, 1, wxALL | wxEXPAND, 5 );
100  m_colorsMainSizer->Add( 10, 0, 0, wxEXPAND, 5 );
101 
103  updatePreview();
104  zoomFitPreview();
105 }
106 
107 
109 {
110  delete m_page;
111  delete m_titleBlock;
112  delete m_drawingSheet;
113  delete m_currentSettings;
114 
115  for( EDA_ITEM* item : m_previewItems )
116  delete item;
117 }
118 
119 
121 {
123 
124  if( !saveCurrentTheme( true ) )
125  return false;
126 
128 
129  SETTINGS_MANAGER& settingsMgr = Pgm().GetSettingsManager();
130  EESCHEMA_SETTINGS* app_settings = settingsMgr.GetAppSettings<EESCHEMA_SETTINGS>();
131  app_settings->m_ColorTheme = m_currentSettings->GetFilename();
132 
133  return true;
134 }
135 
136 
138 {
139  zoomFitPreview();
140  return true;
141 }
142 
143 
145 {
147 
148  for( SCH_LAYER_ID layer = SCH_LAYER_ID_START; layer < SCH_LAYER_ID_END; ++layer )
149  {
150  if( bgcolor == m_currentSettings->GetColor( layer )
151  && layer != LAYER_SCHEMATIC_BACKGROUND && layer != LAYER_SHEET_BACKGROUND )
152  {
153  wxString msg = _( "Some items have the same color as the background\n"
154  "and they will not be seen on the screen. Are you\n"
155  "sure you want to use these colors?" );
156 
157  if( wxMessageBox( msg, _( "Warning" ), wxYES_NO | wxICON_QUESTION, this ) == wxNO )
158  return false;
159 
160  break;
161  }
162  }
163 
164  return true;
165 }
166 
167 
169 {
170  for( auto layer : m_validLayers )
171  {
173 
174  // Do not allow non-background layers to be completely white.
175  // This ensures the BW printing recognizes that the colors should be printed black.
177  && layer != LAYER_SHEET_BACKGROUND )
178  {
179  color.Darken( 0.01 );
180  }
181 
182  m_currentSettings->SetColor( layer, color );
183  }
184 
185  return PANEL_COLOR_SETTINGS::saveCurrentTheme( aValidate );
186 }
187 
188 
190 {
191  std::vector<SCH_LAYER_ID> layers;
192 
194  layers.push_back( i );
195 
196  std::sort( layers.begin(), layers.end(),
197  []( SCH_LAYER_ID a, SCH_LAYER_ID b )
198  {
199  return LayerName( a ) < LayerName( b );
200  } );
201 
202  for( int layer : layers )
203  {
204  wxString name = LayerName( layer );
205 
206  if( layer == LAYER_SCHEMATIC_GRID_AXES )
207  name += wxS( " " ) + _( "(symbol editor only)" );
208 
209  createSwatch( layer, name );
210  }
211 
212  // Give a minimal width to m_colorsListWindow, in order to always having
213  // a full row shown
214  int min_width = m_colorsGridSizer->GetMinSize().x;
215  const int margin = 20; // A margin around the sizer
216  m_colorsListWindow->SetMinSize( wxSize( min_width + margin, -1 ) );
217 }
218 
219 
221 {
222  updatePreview();
223 }
224 
225 
227 {
228  KIGFX::VIEW* view = m_preview->GetView();
229 
230  std::vector<DANGLING_END_ITEM> endPoints;
231 
234  m_titleBlock->SetTitle( _( "Color Preview" ) );
235  m_titleBlock->SetDate( wxDateTime::Now().FormatDate() );
236 
237  m_page->SetHeightMils( 5000 );
238  m_page->SetWidthMils( 6000 );
239 
242  view->Add( m_drawingSheet );
243 
244  // TODO: It would be nice to parse a schematic file here.
245  // This is created from the color_settings.sch file in demos folder
246 
247  auto addItem = [&]( EDA_ITEM* aItem )
248  {
249  view->Add( aItem );
250  m_previewItems.push_back( aItem );
251  };
252 
253  std::vector<std::pair<SCH_LAYER_ID, std::pair<wxPoint, wxPoint>>> lines = {
254  { LAYER_WIRE, { { 1950, 1500 }, { 2325, 1500 } } },
255  { LAYER_WIRE, { { 1950, 2600 }, { 2350, 2600 } } },
256  { LAYER_WIRE, { { 2150, 1700 }, { 2325, 1700 } } },
257  { LAYER_WIRE, { { 2150, 2000 }, { 2150, 1700 } } },
258  { LAYER_WIRE, { { 2925, 1600 }, { 3075, 1600 } } },
259  { LAYER_WIRE, { { 3075, 1600 }, { 3075, 2000 } } },
260  { LAYER_WIRE, { { 3075, 1600 }, { 3250, 1600 } } },
261  { LAYER_WIRE, { { 3075, 2000 }, { 2150, 2000 } } },
262  { LAYER_BUS, { { 1750, 1400 }, { 1850, 1400 } } },
263  { LAYER_BUS, { { 1850, 2500 }, { 1850, 1400 } } },
264  { LAYER_NOTES, { { 2350, 2125 }, { 2350, 2300 } } },
265  { LAYER_NOTES, { { 2350, 2125 }, { 2950, 2125 } } },
266  { LAYER_NOTES, { { 2950, 2125 }, { 2950, 2300 } } },
267  { LAYER_NOTES, { { 2950, 2300 }, { 2350, 2300 } } }
268  };
269 
270  for( const std::pair<SCH_LAYER_ID, std::pair<wxPoint, wxPoint>>& line : lines )
271  {
272  SCH_LINE* wire = new SCH_LINE;
273  wire->SetLayer( line.first );
274  wire->SetStartPoint( wxPoint( Mils2iu( line.second.first.x ),
275  Mils2iu( line.second.first.y ) ) );
276  wire->SetEndPoint( wxPoint( Mils2iu( line.second.second.x ),
277  Mils2iu( line.second.second.y ) ) );
278  addItem( wire );
279  }
280 
281 #define MILS_POINT( x, y ) wxPoint( Mils2iu( x ), Mils2iu( y ) )
282 
283  SCH_NO_CONNECT* nc = new SCH_NO_CONNECT;
284  nc->SetPosition( MILS_POINT( 2525, 1300 ) );
285  addItem( nc );
286 
288  e1->SetPosition( MILS_POINT( 1850, 1400 ) );
289  addItem( e1 );
290 
292  e2->SetPosition( MILS_POINT( 1850, 2500 ) );
293  addItem( e2 );
294 
295  SCH_TEXT* t1 = new SCH_TEXT( MILS_POINT( 2850, 2250 ), wxT( "PLAIN TEXT" ) );
296  t1->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::LEFT );
297  addItem( t1 );
298 
299  SCH_LABEL* t2 = new SCH_LABEL( MILS_POINT( 1975, 1500 ), wxT( "LABEL_{0}" ) );
300  t2->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
301  t2->SetIsDangling( false );
302  addItem( t2 );
303 
304  SCH_LABEL* t3 = new SCH_LABEL( MILS_POINT( 1975, 2600 ), wxT( "LABEL_{1}" ) );
305  t3->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
306  t3->SetIsDangling( false );
307  addItem( t3 );
308 
309  SCH_GLOBALLABEL* t4 = new SCH_GLOBALLABEL( MILS_POINT( 1750, 1400 ), wxT( "GLOBAL[0..3]" ) );
310  t4->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::LEFT );
311  t4->SetIsDangling( false );
312  addItem( t4 );
313 
314  SCH_HIERLABEL* t5 = new SCH_HIERLABEL( MILS_POINT( 3250, 1600 ), wxT( "HIER_LABEL" ) );
315  t5->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
316  t5->SetIsDangling( false );
317  addItem( t5 );
318 
319  SCH_JUNCTION* j = new SCH_JUNCTION( MILS_POINT( 3075, 1600 ) );
320  addItem( j );
321 
322  t2->SetSelected();
323 
324  {
325  auto mapLibItemPosition =
326  []( const wxPoint& aLibPosition ) -> wxPoint
327  {
328  return wxPoint( aLibPosition.x, -aLibPosition.y );
329  };
330 
331  LIB_SYMBOL* symbol = new LIB_SYMBOL( wxEmptyString );
332  wxPoint p( 2625, -1600 );
333 
334  LIB_FIELD& ref = symbol->GetReferenceField();
335 
336  ref.SetText( wxT( "U1" ) );
337  ref.SetPosition( MILS_POINT( p.x + 30, p.y + 260 ) );
339 
340  LIB_FIELD& value = symbol->GetValueField();
341 
342  value.SetText( wxT( "OPA604" ) );
343  value.SetPosition( MILS_POINT( p.x + 30, p.y + 180 ) );
345 
346  symbol->SetShowPinNames( true );
347  symbol->SetShowPinNumbers( true );
348  symbol->SetPinNameOffset( 0 );
349 
350  LIB_SHAPE* comp_body = new LIB_SHAPE( symbol, SHAPE_T::POLY );
351 
352  comp_body->SetUnit( 0 );
353  comp_body->SetConvert( 0 );
354  comp_body->SetWidth( Mils2iu( 10 ) );
356  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
357  comp_body->AddPoint( MILS_POINT( p.x + 200, p.y ) );
358  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y - 200 ) );
359  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
360 
361  addItem( comp_body );
362 
363  LIB_PIN* pin = new LIB_PIN( symbol );
364 
365  pin->SetPosition( MILS_POINT( p.x - 300, p.y + 100 ) );
366  pin->SetLength( Mils2iu( 100 ) );
367  pin->SetOrientation( PIN_RIGHT );
368  pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
369  pin->SetNumber( wxT( "1" ) );
370  pin->SetName( wxT( "-" ) );
371 
372  endPoints.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
373  symbol->AddDrawItem( pin );
374 
375  pin = new LIB_PIN( symbol );
376 
377  pin->SetPosition( MILS_POINT( p.x - 300, p.y - 100 ) );
378  pin->SetLength( Mils2iu( 100 ) );
379  pin->SetOrientation( PIN_RIGHT );
380  pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
381  pin->SetNumber( wxT( "2" ) );
382  pin->SetName( wxT( "+" ) );
383 
384  endPoints.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
385  symbol->AddDrawItem( pin );
386 
387  pin = new LIB_PIN( symbol );
388 
389  pin->SetPosition( MILS_POINT( p.x + 300, p.y ) );
390  pin->SetLength( Mils2iu( 100 ) );
391  pin->SetOrientation( PIN_LEFT );
393  pin->SetNumber( wxT( "3" ) );
394  pin->SetName( wxT( "OUT" ) );
395 
396  endPoints.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
397  symbol->AddDrawItem( pin );
398 
399  addItem( symbol );
400  }
401 
402  SCH_SHEET* s = new SCH_SHEET( nullptr, MILS_POINT( 4000, 1300 ) );
403  s->SetSize( wxSize( Mils2iu( 800 ), Mils2iu( 1300 ) ) );
404  s->GetFields().at( SHEETNAME ).SetText( wxT( "SHEET" ) );
405  s->GetFields().at( SHEETFILENAME ).SetText( _( "/path/to/sheet" ) );
406  s->AutoplaceFields( nullptr, false );
407  addItem( s );
408 
409  SCH_SHEET_PIN* sp = new SCH_SHEET_PIN( s, MILS_POINT( 4500, 1500 ), wxT( "SHEET PIN" ) );
410  addItem( sp );
411 
412  for( EDA_ITEM* item : m_previewItems )
413  {
414  SCH_ITEM* sch_item = dynamic_cast<SCH_ITEM*>( item );
415 
416  if( sch_item && sch_item->IsConnectable() )
417  sch_item->GetEndPoints( endPoints );
418  }
419 
420  for( EDA_ITEM* item : m_previewItems )
421  {
422  SCH_ITEM* sch_item = dynamic_cast<SCH_ITEM*>( item );
423 
424  if( sch_item && sch_item->IsConnectable() )
425  sch_item->UpdateDanglingState( endPoints, nullptr );
426  }
427 
428  zoomFitPreview();
429 }
430 
431 
433 {
434  updatePreview();
435 }
436 
437 
439 {
441  updatePreview();
442 }
443 
444 
446 {
447  if( !m_preview )
448  return;
449 
450  KIGFX::VIEW* view = m_preview->GetView();
451  auto settings = static_cast<KIGFX::SCH_RENDER_SETTINGS*>( view->GetPainter()->GetSettings() );
452  settings->LoadColors( m_currentSettings );
453 
454  m_preview->GetGAL()->SetClearColor( settings->GetBackgroundColor() );
455 
456  view->UpdateAllItems( KIGFX::COLOR );
457  auto rect = m_preview->GetScreenRect();
458  m_preview->Refresh( true, &rect );
459 }
460 
461 
463 {
464  KIGFX::VIEW* view = m_preview->GetView();
465 
466  view->SetScale( 1.0 );
467  VECTOR2D screenSize = view->ToWorld( m_preview->GetClientSize(), false );
468 
469  VECTOR2I psize( m_page->GetWidthIU(), m_page->GetHeightIU() );
470  double scale = view->GetScale() / std::max( fabs( psize.x / screenSize.x ),
471  fabs( psize.y / screenSize.y ) );
472 
473  view->SetScale( scale * m_galDisplayOptions.m_scaleFactor * 0.8 /* margin */ );
474  view->SetCenter( m_drawingSheet->ViewBBox().Centre() );
476 }
477 
478 
479 void PANEL_EESCHEMA_COLOR_SETTINGS::OnSize( wxSizeEvent& aEvent )
480 {
481  zoomFitPreview();
482  aEvent.Skip();
483 }
484 
485 
487 {
489 
490  // If the theme is not overriding individual item colors then don't show them so that
491  // the user doesn't get seduced into thinking they'll have some effect.
494 
497 
498  m_colorsGridSizer->Layout();
499  m_colorsListWindow->Layout();
500 }
void ResetPanel() override
Reset the contents of this panel.
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
void SetPinNameOffset(int aOffset)
Set the offset in mils of the pin name text from the pin symbol.
Definition: lib_symbol.h:560
void SetClearColor(const COLOR4D &aColor)
void AddPoint(const wxPoint &aPosition)
Definition: lib_shape.cpp:395
virtual bool IsConnectable() const
Definition: sch_item.h:347
void ForceRefresh()
Force a redraw.
virtual bool saveCurrentTheme(bool aValidate)
void SetColorLayer(int aLayerId)
Can be used to override which layer ID is used for drawing sheet item colors.
virtual void ResetPanel() override
Reset the contents of this panel.
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:447
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:316
wxString GetFilename() const
Definition: json_settings.h:72
int color
Definition: DXF_plotter.cpp:57
Field object used in symbol libraries.
Definition: lib_field.h:59
std::map< int, wxStaticText * > m_labels
void UpdateAllItems(int aUpdateFlags)
Update all items in the view according to the given flags.
Definition: view.cpp:1424
void SetPosition(const wxPoint &aPosition) override
void SetColor(int aLayer, const COLOR4D &aColor)
void SetDate(const wxString &aDate)
Set the date field, and defaults to the current time and date.
Definition: title_block.h:71
static const wxChar Custom[]
"User" defined page type
Definition: page_info.h:77
std::map< int, COLOR_SWATCH * > m_swatches
LIB_FIELD & GetValueField()
Return reference to the value field.
bool m_forceDisplayCursor
The pixel scale factor (>1 for hi-DPI scaled displays)
Color has changed.
Definition: view_item.h:48
void SetIsDangling(bool aIsDangling)
Definition: sch_text.h:231
void OnSize(wxSizeEvent &aEvent) override
bool validateSave(bool aQuiet=false) override
Performs a pre-save validation of the current color theme.
Define a library symbol object.
Definition: lib_symbol.h:96
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
Hold the information shown in the lower right corner of a plot, printout, or editing view.
Definition: title_block.h:40
LIB_FIELD & GetReferenceField()
Return reference to the reference designator field.
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
Definition: view.h:208
void SetEndPoint(const wxPoint &aPosition)
Definition: sch_line.h:94
std::string m_colorNamespace
A namespace that will be passed to SETTINGS_MANAGER::SaveColorSettings.
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:334
bool saveCurrentTheme(bool aValidate) override
void onNewThemeSelected() override
Event fired when a new theme is selected that can be overridden in children.
std::vector< SCH_FIELD > & GetFields()
Definition: sch_sheet.h:88
#define MILS_POINT(x, y)
void SetShowPinNames(bool aShow)
Set or clear the pin name visibility flag.
Definition: lib_symbol.h:568
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:576
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:114
void SetSelected()
Definition: eda_item.h:129
SCH_LAYER_ID
Eeschema drawing layers.
Definition: layer_ids.h:324
void onColorChanged() override
Event fired when the user changes any color.
void SetPosition(const wxPoint &aPosition) override
PANEL_EESCHEMA_COLOR_SETTINGS(SCH_BASE_FRAME *aFrame, wxWindow *aParent)
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:53
void createThemeList(const wxString &aCurrent)
Builds the theme listbox and sets the selection to the current theme.
COLOR_SETTINGS * m_currentSettings
void SetStartPoint(const wxPoint &aPosition)
Definition: sch_line.h:91
void SetLayer(SCH_LAYER_ID aLayer)
Set the layer this item is on.
Definition: sch_item.h:264
void SetOverrideSchItemColors(bool aFlag)
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void SetStealsFocus(bool aStealsFocus)
Set whether focus is taken on certain events (mouseover, keys, etc).
T * GetAppSettings(bool aLoadNow=true)
Returns a handle to the a given settings by type If the settings have already been loaded,...
void SetLabelSpinStyle(LABEL_SPIN_STYLE aSpinStyle) override
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:1541
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
#define _(s)
virtual KIGFX::VIEW * GetView() const
Return a pointer to the #VIEW instance used in the panel.
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
Definition: layer_id.cpp:27
void SetWidth(int aWidth)
Definition: eda_shape.h:88
void AddDrawItem(LIB_ITEM *aItem, bool aSort=true)
Add a new draw aItem to the draw object list and sort according to aSort.
Definition: lib_symbol.cpp:666
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet_pin.h:65
void SetTitle(const wxString &aTitle)
Definition: title_block.h:58
void SetAxesEnabled(bool aAxesEnabled)
Enable drawing the axes.
void SetHeightMils(int aHeightInMils)
Definition: page_info.cpp:257
std::vector< int > m_validLayers
A list of layer IDs that are valid for the current color settings dialog.
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:54
void SetSize(const wxSize &aSize)
Definition: sch_sheet.h:106
void SetConvert(int aConvert)
Definition: lib_item.h:260
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Set the scaling factor, zooming around a given anchor point.
Definition: view.cpp:550
void OnOverrideItemColorsClicked(wxCommandEvent &aEvent) override
Definition: color4d.h:48
COLOR_SETTINGS * GetColorSettings(const wxString &aName="user")
Retrieves a color settings object that applications can read colors from.
virtual RENDER_SETTINGS * GetSettings()=0
Return a pointer to current settings that are going to be used when drawing items.
void SetUnit(int aUnit)
Definition: lib_item.h:257
COLOR4D GetColor(int aLayer) const
WINDOW_SETTINGS m_Window
Definition: app_settings.h:181
void ReloadColorSettings()
Re-scans the color themes directory, reloading any changes it finds.
const int scale
see class PGM_BASE
const BOX2I ViewBBox() const override
Vec Centre() const
Definition: box2.h:63
const char * name
Definition: DXF_plotter.cpp:56
Segment description base class to describe items which have 2 end points (track, wire,...
Definition: sch_line.h:37
void SetHorizJustify(EDA_TEXT_HJUSTIFY_T aType)
Definition: eda_text.h:201
usual pin input: must be connected
void SetWidthMils(int aWidthInMils)
Definition: page_info.cpp:243
void ReadConfig(COMMON_SETTINGS &aCommonConfig, WINDOW_SETTINGS &aWindowConfig, wxWindow *aWindow)
Read application and common configs.
#define IU_PER_MILS
Definition: plotter.cpp:136
void SetShowPinNumbers(bool aShow)
Set or clear the pin number visibility flag.
Definition: lib_symbol.h:576
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:100
Class for a wire to bus entry.
Color settings are a bit different than most of the settings objects in that there can be more than o...
void SetPosition(const wxPoint &aPosition) override
Definition: lib_item.h:222
bool GetOverrideSchItemColors() const
void SetFillMode(FILL_T aFill)
Definition: eda_shape.h:78
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:318
void SetLabelSpinStyle(LABEL_SPIN_STYLE aSpinStyle) override
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:1036
void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual) override
Definition: sch_sheet.cpp:522
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Definition: view.h:68
virtual void SetLabelSpinStyle(LABEL_SPIN_STYLE aSpinStyle)
Set a spin or rotation angle, along with specific horizontal and vertical justification styles with e...
Definition: sch_text.cpp:320
void Refresh(bool aEraseBackground, const wxRect *aRect) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
double GetScale() const
Definition: view.h:264
virtual void LoadColors(const COLOR_SETTINGS *aSettings)
void createSwatch(int aLayer, const wxString &aName)
KIGFX::GAL_DISPLAY_OPTIONS m_galDisplayOptions
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:182
wxString m_ColorTheme
Active color theme name.
Definition: app_settings.h:184
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103