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>
27 #include <lib_polyline.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 public:
231  {
233  };
234 };
235 
236 
238 {
239  KIGFX::VIEW* view = m_preview->GetView();
240 
243  m_titleBlock->SetTitle( _( "Color Preview" ) );
244  m_titleBlock->SetDate( wxDateTime::Now().FormatDate() );
245 
246  m_page->SetHeightMils( 5000 );
247  m_page->SetWidthMils( 6000 );
248 
251  view->Add( m_drawingSheet );
252 
253  // NOTE: It would be nice to parse a schematic file here.
254  // This is created from the color_settings.sch file in demos folder
255 
256  auto addItem = [&]( EDA_ITEM* aItem )
257  {
258  view->Add( aItem );
259  m_previewItems.push_back( aItem );
260  };
261 
262  std::vector<std::pair<SCH_LAYER_ID, std::pair<wxPoint, wxPoint>>> lines = {
263  { LAYER_WIRE, { { 1950, 1500 }, { 2325, 1500 } } },
264  { LAYER_WIRE, { { 1950, 2600 }, { 2350, 2600 } } },
265  { LAYER_WIRE, { { 2150, 1700 }, { 2325, 1700 } } },
266  { LAYER_WIRE, { { 2150, 2000 }, { 2150, 1700 } } },
267  { LAYER_WIRE, { { 2925, 1600 }, { 3075, 1600 } } },
268  { LAYER_WIRE, { { 3075, 1600 }, { 3075, 2000 } } },
269  { LAYER_WIRE, { { 3075, 1600 }, { 3250, 1600 } } },
270  { LAYER_WIRE, { { 3075, 2000 }, { 2150, 2000 } } },
271  { LAYER_BUS, { { 1750, 1400 }, { 1850, 1400 } } },
272  { LAYER_BUS, { { 1850, 2500 }, { 1850, 1400 } } },
273  { LAYER_NOTES, { { 2350, 2125 }, { 2350, 2300 } } },
274  { LAYER_NOTES, { { 2350, 2125 }, { 2950, 2125 } } },
275  { LAYER_NOTES, { { 2950, 2125 }, { 2950, 2300 } } },
276  { LAYER_NOTES, { { 2950, 2300 }, { 2350, 2300 } } }
277  };
278 
279  for( const auto& line : lines )
280  {
281  SCH_LINE* wire = new SCH_LINE;
282  wire->SetLayer( line.first );
283  wire->SetStartPoint( wxPoint( Mils2iu( line.second.first.x ),
284  Mils2iu( line.second.first.y ) ) );
285  wire->SetEndPoint( wxPoint( Mils2iu( line.second.second.x ),
286  Mils2iu( line.second.second.y ) ) );
287  addItem( wire );
288  }
289 
290 #define MILS_POINT( x, y ) wxPoint( Mils2iu( x ), Mils2iu( y ) )
291 
292  SCH_NO_CONNECT* nc = new SCH_NO_CONNECT;
293  nc->SetPosition( MILS_POINT( 2525, 1300 ) );
294  addItem( nc );
295 
297  e1->SetPosition( MILS_POINT( 1850, 1400 ) );
298  addItem( e1 );
299 
301  e2->SetPosition( MILS_POINT( 1850, 2500 ) );
302  addItem( e2 );
303 
304  SCH_TEXT* t1 = new SCH_TEXT( MILS_POINT( 2850, 2250 ), wxT( "PLAIN TEXT" ) );
305  t1->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::LEFT );
306  addItem( t1 );
307 
308  SCH_LABEL* t2 = new SCH_LABEL( MILS_POINT( 1975, 1500 ), wxT( "LABEL_{0}" ) );
309  t2->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
310  t2->SetIsDangling( false );
311  addItem( t2 );
312 
313  SCH_LABEL* t3 = new SCH_LABEL( MILS_POINT( 1975, 2600 ), wxT( "LABEL_{1}" ) );
314  t3->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
315  t3->SetIsDangling( false );
316  addItem( t3 );
317 
318  SCH_GLOBALLABEL* t4 = new SCH_GLOBALLABEL( MILS_POINT( 1750, 1400 ), wxT( "GLOBAL[3..0]" ) );
319  t4->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::LEFT );
320  t4->SetIsDangling( false );
321  addItem( t4 );
322 
323  SCH_HIERLABEL* t5 = new SCH_HIERLABEL( MILS_POINT( 3250, 1600 ), wxT( "HIER_LABEL" ) );
324  t5->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
325  t5->SetIsDangling( false );
326  addItem( t5 );
327 
328  SCH_JUNCTION* j = new SCH_JUNCTION( MILS_POINT( 3075, 1600 ) );
329  addItem( j );
330 
331  t2->SetSelected();
332 
333  {
334  LIB_SYMBOL* symbol = new LIB_SYMBOL( wxEmptyString );
335  wxPoint p( 2625, -1600 );
336 
337  LIB_FIELD& ref = symbol->GetReferenceField();
338 
339  ref.SetText( wxT( "U1" ) );
340  ref.SetPosition( MILS_POINT( p.x + 30, p.y + 260 ) );
342 
343  LIB_FIELD& value = symbol->GetValueField();
344 
345  value.SetText( wxT( "OPA604" ) );
346  value.SetPosition( MILS_POINT( p.x + 30, p.y + 180 ) );
348 
349  symbol->SetShowPinNames( true );
350  symbol->SetShowPinNumbers( true );
351  symbol->SetPinNameOffset( 0 );
352 
353  LIB_POLYLINE* comp_body = new LIB_POLYLINE( symbol );
354 
355  comp_body->SetUnit( 0 );
356  comp_body->SetConvert( 0 );
357  comp_body->SetWidth( Mils2iu( 10 ) );
359  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
360  comp_body->AddPoint( MILS_POINT( p.x + 200, p.y ) );
361  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y - 200 ) );
362  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
363 
364  addItem( comp_body );
365 
366  LIB_PIN* pin = new LIB_PIN( symbol );
367 
368  pin->SetPosition( MILS_POINT( p.x - 200, p.y + 100 ) );
369  pin->SetLength( Mils2iu( 100 ) );
370  pin->SetOrientation( PIN_LEFT );
371  pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
372  pin->SetNumber( wxT( "1" ) );
373  pin->SetName( wxT( "-" ) );
374 
375  symbol->AddDrawItem( pin );
376 
377  pin = new LIB_PIN( symbol );
378 
379  pin->SetPosition( MILS_POINT( p.x - 200, p.y - 100 ) );
380  pin->SetLength( Mils2iu( 100 ) );
381  pin->SetOrientation( PIN_LEFT );
382  pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
383  pin->SetNumber( wxT( "2" ) );
384  pin->SetName( wxT( "+" ) );
385 
386  symbol->AddDrawItem( pin );
387 
388  pin = new LIB_PIN( symbol );
389 
390  pin->SetPosition( MILS_POINT( p.x + 200, p.y ) );
391  pin->SetLength( Mils2iu( 100 ) );
392  pin->SetOrientation( PIN_RIGHT );
394  pin->SetNumber( wxT( "3" ) );
395  pin->SetName( wxT( "OUT" ) );
396 
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  zoomFitPreview();
413 }
414 
415 
417 {
418  updatePreview();
419 }
420 
421 
423 {
425  updatePreview();
426 }
427 
428 
430 {
431  if( !m_preview )
432  return;
433 
434  KIGFX::VIEW* view = m_preview->GetView();
435  auto settings = static_cast<KIGFX::SCH_RENDER_SETTINGS*>( view->GetPainter()->GetSettings() );
436  settings->LoadColors( m_currentSettings );
437 
438  m_preview->GetGAL()->SetClearColor( settings->GetBackgroundColor() );
439 
440  view->UpdateAllItems( KIGFX::COLOR );
441  auto rect = m_preview->GetScreenRect();
442  m_preview->Refresh( true, &rect );
443 }
444 
445 
447 {
448  KIGFX::VIEW* view = m_preview->GetView();
449 
450  view->SetScale( 1.0 );
451  VECTOR2D screenSize = view->ToWorld( m_preview->GetClientSize(), false );
452 
453  VECTOR2I psize( m_page->GetWidthIU(), m_page->GetHeightIU() );
454  double scale = view->GetScale() / std::max( fabs( psize.x / screenSize.x ),
455  fabs( psize.y / screenSize.y ) );
456 
457  view->SetScale( scale * m_galDisplayOptions.m_scaleFactor * 0.8 /* margin */ );
458  view->SetCenter( m_drawingSheet->ViewBBox().Centre() );
460 }
461 
462 
463 void PANEL_EESCHEMA_COLOR_SETTINGS::OnSize( wxSizeEvent& aEvent )
464 {
465  zoomFitPreview();
466  aEvent.Skip();
467 }
468 
469 
471 {
473 
474  // If the theme is not overriding individual item colors then don't show them so that
475  // the user doesn't get seduced into thinking they'll have some effect.
478 
481 
482  m_colorsGridSizer->Layout();
483  m_colorsListWindow->Layout();
484 }
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 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:450
wxString GetFilename() const
Definition: json_settings.h:71
int color
Definition: DXF_plotter.cpp:60
Field object used in symbol libraries.
Definition: lib_field.h:59
std::map< int, wxStaticText * > m_labels
void SetFillMode(FILL_TYPE aFillMode)
Definition: lib_item.h:264
void UpdateAllItems(int aUpdateFlags)
Update all items in the view according to the given flags.
Definition: view.cpp:1415
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.
Definition: lib_symbol.cpp:977
bool m_forceDisplayCursor
The pixel scale factor (>1 for hi-DPI scaled displays)
Color has changed.
Definition: view_item.h:53
void SetIsDangling(bool aIsDangling)
Definition: sch_text.h:229
void OnSize(wxSizeEvent &aEvent) override
void SetWidth(int aWidth) override
Definition: lib_polyline.h:97
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.
Definition: lib_symbol.cpp:985
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
Definition: view.h:207
void SetEndPoint(const wxPoint &aPosition)
Definition: sch_line.h:94
std::string m_colorNamespace
A namespace that will be passed to SETTINGS_MANAGER::SaveColorSettings.
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:579
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:114
void SetSelected()
Definition: eda_item.h:129
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:279
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).
bool m_isDanglingStart
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:1478
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.
AppSettings * GetAppSettings(bool aLoadNow=true)
Returns a handle to the a given settings by type If the settings have already been loaded,...
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
Definition: layer_id.cpp:27
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:653
SCH_LAYER_ID
Eeschema drawing layers.
Define a sheet pin (label) used in sheets to create hierarchical schematics.
Definition: sch_sheet_pin.h:65
void AddPoint(const wxPoint &aPoint)
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:261
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Set the scaling factor, zooming around a given anchor point.
Definition: view.cpp:553
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:258
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
Board layer functions and definitions.
Vec Centre() const
Definition: box2.h:63
const char * name
Definition: DXF_plotter.cpp:59
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
bool m_isDanglingEnd
void ReadConfig(COMMON_SETTINGS &aCommonConfig, WINDOW_SETTINGS &aWindowConfig, wxWindow *aWindow)
Read application and common configs.
#define IU_PER_MILS
Definition: plotter.cpp:137
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:212
bool GetOverrideSchItemColors() const
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:321
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:1027
void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual) override
Definition: sch_sheet.cpp:516
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Definition: view.h:67
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:318
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:263
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,...
SCH_BUS_WIRE_ENTRY_PREVIEW_ITEM()
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