KiCad PCB EDA Suite
PANEL_EESCHEMA_COLOR_SETTINGS Class Reference

#include <panel_eeschema_color_settings.h>

Inheritance diagram for PANEL_EESCHEMA_COLOR_SETTINGS:
PANEL_COLOR_SETTINGS PANEL_COLOR_SETTINGS_BASE RESETTABLE_PANEL

Public Types

enum  COLOR_CONTEXT_ID { ID_COPY = wxID_HIGHEST + 1, ID_PASTE, ID_REVERT }
 

Public Member Functions

 PANEL_EESCHEMA_COLOR_SETTINGS (SCH_BASE_FRAME *aFrame, wxWindow *aParent)
 
 ~PANEL_EESCHEMA_COLOR_SETTINGS () override
 
void ResetPanel () override
 Reset the contents of this panel. More...
 
virtual wxString GetResetTooltip () override
 Get the tooltip the reset button should display when showing this panel. More...
 
bool Show (bool show) override
 

Public Attributes

wxCheckBox * m_optOverrideColors
 

Protected Member Functions

bool TransferDataFromWindow () override
 
bool TransferDataToWindow () override
 
void OnOverrideItemColorsClicked (wxCommandEvent &aEvent) override
 
void OnSize (wxSizeEvent &aEvent) override
 
void onNewThemeSelected () override
 Event fired when a new theme is selected that can be overridden in children. More...
 
void onColorChanged () override
 Event fired when the user changes any color. More...
 
bool validateSave (bool aQuiet=false) override
 Performs a pre-save validation of the current color theme. More...
 
bool saveCurrentTheme (bool aValidate) override
 
void OnBtnOpenThemeFolderClicked (wxCommandEvent &event) override
 
void OnLeftDownTheme (wxMouseEvent &event) override
 
void OnThemeChanged (wxCommandEvent &aEvent) override
 
void ShowColorContextMenu (wxMouseEvent &aEvent, int aLayer)
 
void OnColorChanged (wxCommandEvent &aEvent)
 
void updateSwatches ()
 
void createThemeList (const wxString &aCurrent)
 Builds the theme listbox and sets the selection to the current theme. More...
 
void createSwatch (int aLayer, const wxString &aName)
 
void updateColor (int aLayer, const KIGFX::COLOR4D &aColor)
 

Protected Attributes

COLOR_SETTINGSm_currentSettings
 
std::map< int, wxStaticText * > m_labels
 
std::map< int, COLOR_SWATCH * > m_swatches
 
KIGFX::COLOR4D m_copied
 
std::vector< int > m_validLayers
 A list of layer IDs that are valid for the current color settings dialog. More...
 
int m_backgroundLayer
 
std::string m_colorNamespace
 A namespace that will be passed to SETTINGS_MANAGER::SaveColorSettings. More...
 
wxBoxSizer * m_mainSizer
 
wxStaticText * m_staticText9
 
wxChoice * m_cbTheme
 
wxButton * m_btnOpenFolder
 
wxStaticLine * m_staticline2
 
wxBoxSizer * m_colorsMainSizer
 
wxScrolledWindow * m_colorsListWindow
 
wxFlexGridSizer * m_colorsGridSizer
 

Private Member Functions

void createPreviewItems ()
 
void createSwatches ()
 
void updatePreview ()
 
void zoomFitPreview ()
 

Private Attributes

SCH_BASE_FRAMEm_frame
 
SCH_PREVIEW_PANELm_preview
 
PAGE_INFOm_page
 
TITLE_BLOCKm_titleBlock
 
DS_PROXY_VIEW_ITEMm_drawingSheet
 
std::vector< EDA_ITEM * > m_previewItems
 
KIGFX::GAL_DISPLAY_OPTIONS m_galDisplayOptions
 

Detailed Description

Definition at line 39 of file panel_eeschema_color_settings.h.

Member Enumeration Documentation

◆ COLOR_CONTEXT_ID

Enumerator
ID_COPY 
ID_PASTE 
ID_REVERT 

Definition at line 39 of file panel_color_settings.h.

Constructor & Destructor Documentation

◆ PANEL_EESCHEMA_COLOR_SETTINGS()

PANEL_EESCHEMA_COLOR_SETTINGS::PANEL_EESCHEMA_COLOR_SETTINGS ( SCH_BASE_FRAME aFrame,
wxWindow *  aParent 
)

Definition at line 56 of file panel_eeschema_color_settings.cpp.

57  :
58  PANEL_COLOR_SETTINGS( aParent ),
59  m_frame( aFrame ),
60  m_preview( nullptr ),
61  m_page( nullptr ),
62  m_titleBlock( nullptr ),
63  m_drawingSheet( nullptr ),
65 {
66  m_colorNamespace = "schematic";
67 
68  SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
69 
70  mgr.ReloadColorSettings();
71 
72  COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings();
73  EESCHEMA_SETTINGS* app_settings = mgr.GetAppSettings<EESCHEMA_SETTINGS>();
74  COLOR_SETTINGS* current = mgr.GetColorSettings( app_settings->m_ColorTheme );
75 
76  // Saved theme doesn't exist? Reset to default
77  if( current->GetFilename() != app_settings->m_ColorTheme )
78  app_settings->m_ColorTheme = current->GetFilename();
79 
80  createThemeList( app_settings->m_ColorTheme );
81 
82  m_optOverrideColors->SetValue( current->GetOverrideSchItemColors() );
83 
84  m_currentSettings = new COLOR_SETTINGS( *current );
85 
86  for( int id = SCH_LAYER_ID_START; id < SCH_LAYER_ID_END; id++ )
87  {
88  if( g_excludedLayers.count( id ) )
89  continue;
90 
91  m_validLayers.push_back( id );
92  }
93 
95 
97 
98  m_galDisplayOptions.ReadConfig( *common_settings, app_settings->m_Window, this );
100 
101  auto type = static_cast<EDA_DRAW_PANEL_GAL::GAL_TYPE>( app_settings->m_Graphics.canvas_type );
102 
103  m_preview = new SCH_PREVIEW_PANEL( this, wxID_ANY, wxDefaultPosition, wxSize( -1, -1 ),
104  m_galDisplayOptions, type );
105  m_preview->SetStealsFocus( false );
106  m_preview->ShowScrollbars( wxSHOW_SB_NEVER, wxSHOW_SB_NEVER );
107  m_preview->GetGAL()->SetAxesEnabled( false );
108 
109  m_colorsMainSizer->Add( 10, 0, 0, wxEXPAND, 5 );
110  m_colorsMainSizer->Add( m_preview, 1, wxALL | wxEXPAND, 5 );
111  m_colorsMainSizer->Add( 10, 0, 0, wxEXPAND, 5 );
112 
114  updatePreview();
115  zoomFitPreview();
116 }
bool m_forceDisplayCursor
The pixel scale factor (>1 for hi-DPI scaled displays)
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
std::string m_colorNamespace
A namespace that will be passed to SETTINGS_MANAGER::SaveColorSettings.
void createThemeList(const wxString &aCurrent)
Builds the theme listbox and sets the selection to the current theme.
COLOR_SETTINGS * m_currentSettings
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,...
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
PANEL_COLOR_SETTINGS(wxWindow *aParent)
void SetAxesEnabled(bool aAxesEnabled)
Enable drawing the axes.
std::vector< int > m_validLayers
A list of layer IDs that are valid for the current color settings dialog.
std::set< int > g_excludedLayers
COLOR_SETTINGS * GetColorSettings(const wxString &aName="user")
Retrieves a color settings object that applications can read colors from.
WINDOW_SETTINGS m_Window
Definition: app_settings.h:181
void ReloadColorSettings()
Re-scans the color themes directory, reloading any changes it finds.
void ReadConfig(COMMON_SETTINGS &aCommonConfig, WINDOW_SETTINGS &aWindowConfig, wxWindow *aWindow)
Read application and common configs.
Color settings are a bit different than most of the settings objects in that there can be more than o...
KIGFX::GAL_DISPLAY_OPTIONS m_galDisplayOptions
wxString m_ColorTheme
Active color theme name.
Definition: app_settings.h:184

References APP_SETTINGS_BASE::GRAPHICS::canvas_type, createPreviewItems(), createSwatches(), PANEL_COLOR_SETTINGS::createThemeList(), g_excludedLayers, SETTINGS_MANAGER::GetAppSettings(), SETTINGS_MANAGER::GetColorSettings(), EDA_DRAW_PANEL_GAL::GetGAL(), LAYER_SCHEMATIC_BACKGROUND, PANEL_COLOR_SETTINGS::m_backgroundLayer, PANEL_COLOR_SETTINGS::m_colorNamespace, PANEL_COLOR_SETTINGS_BASE::m_colorsMainSizer, APP_SETTINGS_BASE::m_ColorTheme, PANEL_COLOR_SETTINGS::m_currentSettings, KIGFX::GAL_DISPLAY_OPTIONS::m_forceDisplayCursor, m_galDisplayOptions, APP_SETTINGS_BASE::m_Graphics, PANEL_COLOR_SETTINGS_BASE::m_optOverrideColors, m_preview, PANEL_COLOR_SETTINGS::m_validLayers, APP_SETTINGS_BASE::m_Window, Pgm(), KIGFX::GAL_DISPLAY_OPTIONS::ReadConfig(), SETTINGS_MANAGER::ReloadColorSettings(), SCH_LAYER_ID_END, SCH_LAYER_ID_START, KIGFX::GAL::SetAxesEnabled(), EDA_DRAW_PANEL_GAL::SetStealsFocus(), updatePreview(), and zoomFitPreview().

◆ ~PANEL_EESCHEMA_COLOR_SETTINGS()

PANEL_EESCHEMA_COLOR_SETTINGS::~PANEL_EESCHEMA_COLOR_SETTINGS ( )
override

Definition at line 119 of file panel_eeschema_color_settings.cpp.

120 {
121  delete m_page;
122  delete m_titleBlock;
123  delete m_drawingSheet;
124  delete m_currentSettings;
125 
126  for( EDA_ITEM* item : m_previewItems )
127  delete item;
128 }
COLOR_SETTINGS * m_currentSettings
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:99

References PANEL_COLOR_SETTINGS::m_currentSettings, m_drawingSheet, m_page, m_previewItems, and m_titleBlock.

Member Function Documentation

◆ createPreviewItems()

void PANEL_EESCHEMA_COLOR_SETTINGS::createPreviewItems ( )
private

Definition at line 243 of file panel_eeschema_color_settings.cpp.

244 {
245  KIGFX::VIEW* view = m_preview->GetView();
246 
247  std::vector<DANGLING_END_ITEM> endPoints;
248 
251  m_titleBlock->SetTitle( _( "Color Preview" ) );
252  m_titleBlock->SetDate( wxDateTime::Now().FormatDate() );
253 
254  m_page->SetHeightMils( 5000 );
255  m_page->SetWidthMils( 6000 );
256 
259  view->Add( m_drawingSheet );
260 
261  // TODO: It would be nice to parse a schematic file here.
262  // This is created from the color_settings.sch file in demos folder
263 
264  auto addItem = [&]( EDA_ITEM* aItem )
265  {
266  view->Add( aItem );
267  m_previewItems.push_back( aItem );
268  };
269 
270  std::vector<std::pair<SCH_LAYER_ID, std::pair<wxPoint, wxPoint>>> lines = {
271  { LAYER_WIRE, { { 1950, 1500 }, { 2325, 1500 } } },
272  { LAYER_WIRE, { { 1950, 2600 }, { 2350, 2600 } } },
273  { LAYER_WIRE, { { 2150, 1700 }, { 2325, 1700 } } },
274  { LAYER_WIRE, { { 2150, 2000 }, { 2150, 1700 } } },
275  { LAYER_WIRE, { { 2925, 1600 }, { 3075, 1600 } } },
276  { LAYER_WIRE, { { 3075, 1600 }, { 3075, 2000 } } },
277  { LAYER_WIRE, { { 3075, 1600 }, { 3250, 1600 } } },
278  { LAYER_WIRE, { { 3075, 2000 }, { 2150, 2000 } } },
279  { LAYER_BUS, { { 1750, 1400 }, { 1850, 1400 } } },
280  { LAYER_BUS, { { 1850, 2500 }, { 1850, 1400 } } },
281  { LAYER_NOTES, { { 2350, 2125 }, { 2350, 2300 } } },
282  { LAYER_NOTES, { { 2350, 2125 }, { 2950, 2125 } } },
283  { LAYER_NOTES, { { 2950, 2125 }, { 2950, 2300 } } },
284  { LAYER_NOTES, { { 2950, 2300 }, { 2350, 2300 } } }
285  };
286 
287  for( const std::pair<SCH_LAYER_ID, std::pair<wxPoint, wxPoint>>& line : lines )
288  {
289  SCH_LINE* wire = new SCH_LINE;
290  wire->SetLayer( line.first );
291  STROKE_PARAMS stroke = wire->GetStroke();
292  stroke.SetWidth( Mils2iu( 6 ) );
293 
294  if( line.first != LAYER_NOTES )
295  {
297 
298  if( line.first == LAYER_BUS )
299  stroke.SetWidth( Mils2iu( 12 ) );
300 
301  }
302 
303  wire->SetStroke( stroke );
304 
305  wire->SetStartPoint( wxPoint( Mils2iu( line.second.first.x ),
306  Mils2iu( line.second.first.y ) ) );
307  wire->SetEndPoint( wxPoint( Mils2iu( line.second.second.x ),
308  Mils2iu( line.second.second.y ) ) );
309  addItem( wire );
310  }
311 
312 #define MILS_POINT( x, y ) wxPoint( Mils2iu( x ), Mils2iu( y ) )
313 
314  SCH_NO_CONNECT* nc = new SCH_NO_CONNECT;
315  nc->SetPosition( MILS_POINT( 2525, 1300 ) );
316  addItem( nc );
317 
319  e1->SetPosition( MILS_POINT( 1850, 1400 ) );
320  addItem( e1 );
321 
323  e2->SetPosition( MILS_POINT( 1850, 2500 ) );
324  addItem( e2 );
325 
326  SCH_TEXT* t1 = new SCH_TEXT( MILS_POINT( 2850, 2250 ), wxT( "PLAIN TEXT" ) );
327  t1->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::LEFT );
328  addItem( t1 );
329 
330  SCH_LABEL* t2 = new SCH_LABEL( MILS_POINT( 1975, 1500 ), wxT( "LABEL_{0}" ) );
331  t2->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
332  t2->SetIsDangling( false );
333  addItem( t2 );
334 
335  SCH_LABEL* t3 = new SCH_LABEL( MILS_POINT( 1975, 2600 ), wxT( "LABEL_{1}" ) );
336  t3->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
337  t3->SetIsDangling( false );
338  addItem( t3 );
339 
340  SCH_GLOBALLABEL* t4 = new SCH_GLOBALLABEL( MILS_POINT( 1750, 1400 ), wxT( "GLOBAL[0..3]" ) );
341  t4->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::LEFT );
342  t4->SetIsDangling( false );
343  addItem( t4 );
344 
345  SCH_HIERLABEL* t5 = new SCH_HIERLABEL( MILS_POINT( 3250, 1600 ), wxT( "HIER_LABEL" ) );
346  t5->SetLabelSpinStyle( LABEL_SPIN_STYLE::SPIN::RIGHT );
347  t5->SetIsDangling( false );
348  addItem( t5 );
349 
350  SCH_JUNCTION* j = new SCH_JUNCTION( MILS_POINT( 3075, 1600 ) );
351  addItem( j );
352 
353  t2->SetSelected();
354 
355  {
356  auto mapLibItemPosition =
357  []( const wxPoint& aLibPosition ) -> wxPoint
358  {
359  return wxPoint( aLibPosition.x, -aLibPosition.y );
360  };
361 
362  LIB_SYMBOL* symbol = new LIB_SYMBOL( wxEmptyString );
363  wxPoint p( 2625, -1600 );
364 
365  LIB_FIELD& ref = symbol->GetReferenceField();
366 
367  ref.SetText( wxT( "U1" ) );
368  ref.SetPosition( MILS_POINT( p.x + 30, p.y + 260 ) );
370 
371  LIB_FIELD& value = symbol->GetValueField();
372 
373  value.SetText( wxT( "OPA604" ) );
374  value.SetPosition( MILS_POINT( p.x + 30, p.y + 180 ) );
376 
377  symbol->SetShowPinNames( true );
378  symbol->SetShowPinNumbers( true );
379  symbol->SetPinNameOffset( 0 );
380 
381  LIB_SHAPE* comp_body = new LIB_SHAPE( symbol, SHAPE_T::POLY );
382 
383  comp_body->SetUnit( 0 );
384  comp_body->SetConvert( 0 );
385  comp_body->SetWidth( Mils2iu( 10 ) );
387  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
388  comp_body->AddPoint( MILS_POINT( p.x + 200, p.y ) );
389  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y - 200 ) );
390  comp_body->AddPoint( MILS_POINT( p.x - 200, p.y + 200 ) );
391 
392  addItem( comp_body );
393 
394  LIB_PIN* pin = new LIB_PIN( symbol );
395 
396  pin->SetPosition( MILS_POINT( p.x - 300, p.y + 100 ) );
397  pin->SetLength( Mils2iu( 100 ) );
398  pin->SetOrientation( PIN_RIGHT );
399  pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
400  pin->SetNumber( wxT( "1" ) );
401  pin->SetName( wxT( "-" ) );
402 
403  endPoints.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
404  symbol->AddDrawItem( pin );
405 
406  pin = new LIB_PIN( symbol );
407 
408  pin->SetPosition( MILS_POINT( p.x - 300, p.y - 100 ) );
409  pin->SetLength( Mils2iu( 100 ) );
410  pin->SetOrientation( PIN_RIGHT );
411  pin->SetType( ELECTRICAL_PINTYPE::PT_INPUT );
412  pin->SetNumber( wxT( "2" ) );
413  pin->SetName( wxT( "+" ) );
414 
415  endPoints.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
416  symbol->AddDrawItem( pin );
417 
418  pin = new LIB_PIN( symbol );
419 
420  pin->SetPosition( MILS_POINT( p.x + 300, p.y ) );
421  pin->SetLength( Mils2iu( 100 ) );
422  pin->SetOrientation( PIN_LEFT );
424  pin->SetNumber( wxT( "3" ) );
425  pin->SetName( wxT( "OUT" ) );
426 
427  endPoints.emplace_back( PIN_END, pin, mapLibItemPosition( pin->GetPosition() ) );
428  symbol->AddDrawItem( pin );
429 
430  addItem( symbol );
431  }
432 
433  SCH_SHEET* s = new SCH_SHEET( nullptr, MILS_POINT( 4000, 1300 ) );
434  s->SetSize( wxSize( Mils2iu( 800 ), Mils2iu( 1300 ) ) );
435  s->GetFields().at( SHEETNAME ).SetText( wxT( "SHEET" ) );
436  s->GetFields().at( SHEETFILENAME ).SetText( _( "/path/to/sheet" ) );
437  s->AutoplaceFields( nullptr, false );
438  addItem( s );
439 
440  SCH_SHEET_PIN* sp = new SCH_SHEET_PIN( s, MILS_POINT( 4500, 1500 ), wxT( "SHEET PIN" ) );
441  addItem( sp );
442 
443  for( EDA_ITEM* item : m_previewItems )
444  {
445  SCH_ITEM* sch_item = dynamic_cast<SCH_ITEM*>( item );
446 
447  if( sch_item && sch_item->IsConnectable() )
448  {
449  sch_item->AutoplaceFields( nullptr, false );
450  sch_item->GetEndPoints( endPoints );
451  }
452  }
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  sch_item->UpdateDanglingState( endPoints, nullptr );
460  }
461 
462  zoomFitPreview();
463 }
void SetPinNameOffset(int aOffset)
Set the offset in mils of the pin name text from the pin symbol.
Definition: lib_symbol.h:571
void AddPoint(const wxPoint &aPosition)
Definition: lib_shape.cpp:407
void SetWidth(int aWidth)
Definition: sch_item.h:153
virtual bool IsConnectable() const
Definition: sch_item.h:349
void SetColorLayer(int aLayerId)
Can be used to override which layer ID is used for drawing sheet item colors.
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:318
Field object used in symbol libraries.
Definition: lib_field.h:59
void SetPosition(const wxPoint &aPosition) override
void SetDate(const wxString &aDate)
Set the date field, and defaults to the current time and date.
Definition: title_block.h:71
void SetPlotStyle(PLOT_DASH_TYPE aPlotStyle)
Definition: sch_item.h:156
static const wxChar Custom[]
"User" defined page type
Definition: page_info.h:77
LIB_FIELD & GetValueField()
Return reference to the value field.
void SetIsDangling(bool aIsDangling)
Definition: sch_text.h:231
Define a library symbol object.
Definition: lib_symbol.h:96
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.
void SetEndPoint(const wxPoint &aPosition)
Definition: sch_line.h:94
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:336
std::vector< SCH_FIELD > & GetFields()
Definition: sch_sheet.h:90
#define MILS_POINT(x, y)
void SetShowPinNames(bool aShow)
Set or clear the pin name visibility flag.
Definition: lib_symbol.h:579
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:124
void SetSelected()
Definition: eda_item.h:128
SCH_LAYER_ID
Eeschema drawing layers.
Definition: layer_ids.h:324
void SetPosition(const wxPoint &aPosition) override
Describe the page size and margins of a paper page on which to eventually print or plot.
Definition: page_info.h:53
virtual void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual)
Definition: sch_item.h:442
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:266
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:1566
#define _(s)
virtual KIGFX::VIEW * GetView() const
Return a pointer to the #VIEW instance used in the panel.
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:701
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 SetHeightMils(int aHeightInMils)
Definition: page_info.cpp:257
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:108
void SetConvert(int aConvert)
Definition: lib_item.h:260
void SetUnit(int aUnit)
Definition: lib_item.h:257
virtual void SetStroke(const STROKE_PARAMS &aStroke) override
Definition: sch_line.h:137
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:222
Simple container to manage line stroke parameters.
Definition: sch_item.h:140
usual pin input: must be connected
void SetWidthMils(int aWidthInMils)
Definition: page_info.cpp:243
#define IU_PER_MILS
Definition: plotter.cpp:136
void SetShowPinNumbers(bool aShow)
Set or clear the pin number visibility flag.
Definition: lib_symbol.h:587
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:99
virtual STROKE_PARAMS GetStroke() const override
Definition: sch_line.h:136
Class for a wire to bus entry.
void SetPosition(const wxPoint &aPosition) override
Definition: lib_item.h:222
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:320
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:1061
void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual) override
Definition: sch_sheet.cpp:552
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:330
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:182

References _, KIGFX::VIEW::Add(), LIB_SYMBOL::AddDrawItem(), LIB_SHAPE::AddPoint(), SCH_SHEET::AutoplaceFields(), SCH_ITEM::AutoplaceFields(), PAGE_INFO::Custom, FILLED_WITH_BG_BODYCOLOR, SCH_ITEM::GetEndPoints(), SCH_SHEET::GetFields(), LIB_SYMBOL::GetReferenceField(), SCH_LINE::GetStroke(), LIB_SYMBOL::GetValueField(), EDA_DRAW_PANEL_GAL::GetView(), GR_TEXT_HJUSTIFY_LEFT, SCH_ITEM::IsConnectable(), IU_PER_MILS, LAYER_BUS, LAYER_NOTES, LAYER_SCHEMATIC_DRAWINGSHEET, LAYER_WIRE, m_drawingSheet, m_page, m_preview, m_previewItems, m_titleBlock, MILS_POINT, pin, PIN_END, PIN_LEFT, PIN_RIGHT, POLY, PT_INPUT, PT_OUTPUT, DS_PROXY_VIEW_ITEM::SetColorLayer(), LIB_ITEM::SetConvert(), TITLE_BLOCK::SetDate(), SCH_LINE::SetEndPoint(), EDA_SHAPE::SetFillMode(), PAGE_INFO::SetHeightMils(), EDA_TEXT::SetHorizJustify(), SCH_TEXT::SetIsDangling(), SCH_TEXT::SetLabelSpinStyle(), SCH_GLOBALLABEL::SetLabelSpinStyle(), SCH_HIERLABEL::SetLabelSpinStyle(), SCH_ITEM::SetLayer(), LIB_SYMBOL::SetPinNameOffset(), STROKE_PARAMS::SetPlotStyle(), SCH_NO_CONNECT::SetPosition(), SCH_BUS_ENTRY_BASE::SetPosition(), LIB_ITEM::SetPosition(), EDA_ITEM::SetSelected(), LIB_SYMBOL::SetShowPinNames(), LIB_SYMBOL::SetShowPinNumbers(), SCH_SHEET::SetSize(), SCH_LINE::SetStartPoint(), SCH_LINE::SetStroke(), EDA_TEXT::SetText(), TITLE_BLOCK::SetTitle(), LIB_ITEM::SetUnit(), EDA_SHAPE::SetWidth(), STROKE_PARAMS::SetWidth(), PAGE_INFO::SetWidthMils(), SHEETFILENAME, SHEETNAME, SOLID, SCH_ITEM::UpdateDanglingState(), and zoomFitPreview().

Referenced by PANEL_EESCHEMA_COLOR_SETTINGS().

◆ createSwatch()

void PANEL_COLOR_SETTINGS::createSwatch ( int  aLayer,
const wxString &  aName 
)
protectedinherited

Definition at line 232 of file panel_color_settings.cpp.

233 {
234  wxStaticText* label = new wxStaticText( m_colorsListWindow, wxID_ANY, aName );
235 
236  // The previously selected theme can be deleted and cannot be selected.
237  // so select the default theme (first theme of the list)
238  if( m_cbTheme->GetSelection() < 0 )
239  {
240  m_cbTheme->SetSelection( 0 );
242  }
243 
244  void* clientData = m_cbTheme->GetClientData( m_cbTheme->GetSelection() );
245  COLOR_SETTINGS* selected = static_cast<COLOR_SETTINGS*>( clientData );
246 
247  int id = FIRST_BUTTON_ID + aLayer;
248  COLOR4D defaultColor = selected->GetDefaultColor( aLayer );
250  COLOR4D backgroundColor = m_currentSettings->GetColor( m_backgroundLayer );
251 
252  COLOR_SWATCH* swatch = new COLOR_SWATCH( m_colorsListWindow, color, id, backgroundColor,
253  defaultColor, SWATCH_MEDIUM );
254  swatch->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) );
255 
256  m_colorsGridSizer->Add( label, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT | wxLEFT, 5 );
257  m_colorsGridSizer->Add( swatch, 0, wxALIGN_CENTER_VERTICAL | wxALL, 3 );
258 
259  m_labels[aLayer] = label;
260  m_swatches[aLayer] = swatch;
261 
262  swatch->Bind( wxEVT_RIGHT_DOWN,
263  [&, aLayer]( wxMouseEvent& aEvent )
264  {
265  ShowColorContextMenu( aEvent, aLayer );
266  } );
267 
268  swatch->Bind( COLOR_SWATCH_CHANGED, &PANEL_COLOR_SETTINGS::OnColorChanged, this );
269 }
int color
Definition: DXF_plotter.cpp:57
std::map< int, wxStaticText * > m_labels
virtual void onNewThemeSelected()
Event fired when a new theme is selected that can be overridden in children.
std::map< int, COLOR_SWATCH * > m_swatches
void ShowColorContextMenu(wxMouseEvent &aEvent, int aLayer)
COLOR_SETTINGS * m_currentSettings
COLOR4D GetDefaultColor(int aLayer)
constexpr int FIRST_BUTTON_ID
COLOR4D GetColor(int aLayer) const
A simple color swatch of the kind used to set layer colors.
Definition: color_swatch.h:56
Color settings are a bit different than most of the settings objects in that there can be more than o...
void OnColorChanged(wxCommandEvent &aEvent)
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References color, FIRST_BUTTON_ID, COLOR_SETTINGS::GetColor(), COLOR_SETTINGS::GetDefaultColor(), PANEL_COLOR_SETTINGS::m_backgroundLayer, PANEL_COLOR_SETTINGS_BASE::m_cbTheme, PANEL_COLOR_SETTINGS_BASE::m_colorsGridSizer, PANEL_COLOR_SETTINGS_BASE::m_colorsListWindow, PANEL_COLOR_SETTINGS::m_currentSettings, PANEL_COLOR_SETTINGS::m_labels, PANEL_COLOR_SETTINGS::m_swatches, PANEL_COLOR_SETTINGS::OnColorChanged(), PANEL_COLOR_SETTINGS::onNewThemeSelected(), PANEL_COLOR_SETTINGS::ShowColorContextMenu(), and SWATCH_MEDIUM.

Referenced by PANEL_FP_EDITOR_COLOR_SETTINGS::createSwatches(), PANEL_PCBNEW_COLOR_SETTINGS::createSwatches(), and createSwatches().

◆ createSwatches()

void PANEL_EESCHEMA_COLOR_SETTINGS::createSwatches ( )
private

Definition at line 200 of file panel_eeschema_color_settings.cpp.

201 {
202  std::vector<SCH_LAYER_ID> layers;
203 
205  {
206  if( g_excludedLayers.count( i ) )
207  continue;
208 
209  layers.push_back( i );
210  }
211 
212 
213  std::sort( layers.begin(), layers.end(),
214  []( SCH_LAYER_ID a, SCH_LAYER_ID b )
215  {
216  return LayerName( a ) < LayerName( b );
217  } );
218 
219  for( int layer : layers )
220  {
221  wxString name = LayerName( layer );
222 
223  if( layer == LAYER_SCHEMATIC_GRID_AXES )
224  name += wxS( " " ) + _( "(symbol editor only)" );
225 
226  createSwatch( layer, name );
227  }
228 
229  // Give a minimal width to m_colorsListWindow, in order to always having
230  // a full row shown
231  int min_width = m_colorsGridSizer->GetMinSize().x;
232  const int margin = 20; // A margin around the sizer
233  m_colorsListWindow->SetMinSize( wxSize( min_width + margin, -1 ) );
234 }
SCH_LAYER_ID
Eeschema drawing layers.
Definition: layer_ids.h:324
#define _(s)
wxString LayerName(int aLayer)
Returns the default display name for a given layer.
Definition: layer_id.cpp:27
std::set< int > g_excludedLayers
const char * name
Definition: DXF_plotter.cpp:56
void createSwatch(int aLayer, const wxString &aName)

References _, PANEL_COLOR_SETTINGS::createSwatch(), g_excludedLayers, LAYER_SCHEMATIC_GRID_AXES, LayerName(), PANEL_COLOR_SETTINGS_BASE::m_colorsGridSizer, PANEL_COLOR_SETTINGS_BASE::m_colorsListWindow, name, SCH_LAYER_ID_END, and SCH_LAYER_ID_START.

Referenced by PANEL_EESCHEMA_COLOR_SETTINGS().

◆ createThemeList()

void PANEL_COLOR_SETTINGS::createThemeList ( const wxString &  aCurrent)
protectedinherited

Builds the theme listbox and sets the selection to the current theme.

Parameters
aCurrentis the filename of the current color theme (no extension)

Definition at line 199 of file panel_color_settings.cpp.

200 {
201  int width = 0;
202  int height = 0;
203 
204  m_cbTheme->GetTextExtent( _( "New Theme..." ), &width, &height );
205  int minwidth = width;
206 
207  m_cbTheme->Clear();
208 
209  for( COLOR_SETTINGS* settings : Pgm().GetSettingsManager().GetColorSettingsList() )
210  {
211  wxString name = settings->GetName();
212 
213  if( settings->IsReadOnly() )
214  name += wxS( " " ) + _( "(read-only)" );
215 
216  int pos = m_cbTheme->Append( name, static_cast<void*>( settings ) );
217 
218  if( settings->GetFilename() == aCurrent )
219  m_cbTheme->SetSelection( pos );
220 
221  m_cbTheme->GetTextExtent( name, &width, &height );
222  minwidth = std::max( minwidth, width );
223  }
224 
225  m_cbTheme->Append( wxT( "---" ) );
226  m_cbTheme->Append( _( "New Theme..." ) );
227 
228  m_cbTheme->SetMinSize( wxSize( minwidth + 50, -1 ) );
229 }
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
#define _(s)
SETTINGS_MANAGER * GetSettingsManager()
const char * name
Definition: DXF_plotter.cpp:56
Color settings are a bit different than most of the settings objects in that there can be more than o...

References _, GetSettingsManager(), PANEL_COLOR_SETTINGS_BASE::m_cbTheme, name, and Pgm().

Referenced by PANEL_COLOR_SETTINGS::OnLeftDownTheme(), PANEL_EESCHEMA_COLOR_SETTINGS(), PANEL_FP_EDITOR_COLOR_SETTINGS::PANEL_FP_EDITOR_COLOR_SETTINGS(), and PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS().

◆ GetResetTooltip()

virtual wxString PANEL_COLOR_SETTINGS::GetResetTooltip ( )
inlineoverridevirtualinherited

Get the tooltip the reset button should display when showing this panel.

Returns
the tooltip

Reimplemented from RESETTABLE_PANEL.

Definition at line 48 of file panel_color_settings.h.

49  {
50  return _( "Reset all colors in this theme to the KiCad defaults" );
51  }
#define _(s)

References _.

◆ OnBtnOpenThemeFolderClicked()

void PANEL_COLOR_SETTINGS::OnBtnOpenThemeFolderClicked ( wxCommandEvent &  event)
overrideprotectedvirtualinherited

Reimplemented from PANEL_COLOR_SETTINGS_BASE.

Definition at line 59 of file panel_color_settings.cpp.

60 {
62  LaunchExternal( dir );
63 }
static wxString GetColorSettingsPath()
Returns the path where color scheme files are stored; creating it if missing (normally .
bool LaunchExternal(const wxString &aPath)
Launches the given file or folder in the host OS.
Definition: launch_ext.cpp:25

References SETTINGS_MANAGER::GetColorSettingsPath(), and LaunchExternal().

◆ onColorChanged()

void PANEL_EESCHEMA_COLOR_SETTINGS::onColorChanged ( )
overrideprotectedvirtual

Event fired when the user changes any color.

Reimplemented from PANEL_COLOR_SETTINGS.

Definition at line 466 of file panel_eeschema_color_settings.cpp.

References updatePreview().

◆ OnColorChanged()

void PANEL_COLOR_SETTINGS::OnColorChanged ( wxCommandEvent &  aEvent)
protectedinherited

Definition at line 317 of file panel_color_settings.cpp.

318 {
319  COLOR_SWATCH* swatch = static_cast<COLOR_SWATCH*>( aEvent.GetEventObject() );
320  COLOR4D newColor = swatch->GetSwatchColor();
321  LAYER_NUM layer = static_cast<SCH_LAYER_ID>( swatch->GetId() - FIRST_BUTTON_ID );
322 
323  updateColor( layer, newColor );
324 }
KIGFX::COLOR4D GetSwatchColor() const
int LAYER_NUM
This can be replaced with int and removed.
Definition: layer_ids.h:41
void updateColor(int aLayer, const KIGFX::COLOR4D &aColor)
constexpr int FIRST_BUTTON_ID
A simple color swatch of the kind used to set layer colors.
Definition: color_swatch.h:56
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References FIRST_BUTTON_ID, COLOR_SWATCH::GetSwatchColor(), and PANEL_COLOR_SETTINGS::updateColor().

Referenced by PANEL_COLOR_SETTINGS::createSwatch().

◆ OnLeftDownTheme()

void PANEL_COLOR_SETTINGS::OnLeftDownTheme ( wxMouseEvent &  event)
overrideprotectedvirtualinherited

Reimplemented from PANEL_COLOR_SETTINGS_BASE.

Definition at line 103 of file panel_color_settings.cpp.

104 {
105  // Lazy rebuild of theme menu to catch any colour theme changes made in other panels
107 
108  event.Skip();
109 }
wxString GetFilename() const
Definition: json_settings.h:72
void createThemeList(const wxString &aCurrent)
Builds the theme listbox and sets the selection to the current theme.
COLOR_SETTINGS * m_currentSettings

References PANEL_COLOR_SETTINGS::createThemeList(), JSON_SETTINGS::GetFilename(), and PANEL_COLOR_SETTINGS::m_currentSettings.

◆ onNewThemeSelected()

void PANEL_EESCHEMA_COLOR_SETTINGS::onNewThemeSelected ( )
overrideprotectedvirtual

Event fired when a new theme is selected that can be overridden in children.

Reimplemented from PANEL_COLOR_SETTINGS.

Definition at line 237 of file panel_eeschema_color_settings.cpp.

References updatePreview().

◆ OnOverrideItemColorsClicked()

void PANEL_EESCHEMA_COLOR_SETTINGS::OnOverrideItemColorsClicked ( wxCommandEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from PANEL_COLOR_SETTINGS_BASE.

Definition at line 520 of file panel_eeschema_color_settings.cpp.

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 }
std::map< int, wxStaticText * > m_labels
std::map< int, COLOR_SWATCH * > m_swatches
COLOR_SETTINGS * m_currentSettings
void SetOverrideSchItemColors(bool aFlag)
bool GetOverrideSchItemColors() const

References COLOR_SETTINGS::GetOverrideSchItemColors(), LAYER_SHEET, LAYER_SHEET_BACKGROUND, PANEL_COLOR_SETTINGS_BASE::m_colorsGridSizer, PANEL_COLOR_SETTINGS_BASE::m_colorsListWindow, PANEL_COLOR_SETTINGS::m_currentSettings, PANEL_COLOR_SETTINGS::m_labels, PANEL_COLOR_SETTINGS_BASE::m_optOverrideColors, PANEL_COLOR_SETTINGS::m_swatches, and COLOR_SETTINGS::SetOverrideSchItemColors().

◆ OnSize()

void PANEL_EESCHEMA_COLOR_SETTINGS::OnSize ( wxSizeEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from PANEL_COLOR_SETTINGS_BASE.

Definition at line 513 of file panel_eeschema_color_settings.cpp.

514 {
515  zoomFitPreview();
516  aEvent.Skip();
517 }

References zoomFitPreview().

◆ OnThemeChanged()

void PANEL_COLOR_SETTINGS::OnThemeChanged ( wxCommandEvent &  aEvent)
overrideprotectedvirtualinherited

Reimplemented from PANEL_COLOR_SETTINGS_BASE.

Definition at line 112 of file panel_color_settings.cpp.

113 {
114  int idx = m_cbTheme->GetSelection();
115 
116  if( idx == static_cast<int>( m_cbTheme->GetCount() ) - 2 )
117  {
118  // separator; re-select active theme
119  m_cbTheme->SetStringSelection( m_currentSettings->GetName() );
120  return;
121  }
122 
123  if( idx == (int)m_cbTheme->GetCount() - 1 )
124  {
125  // New Theme...
126 
127  if( !saveCurrentTheme( false ) )
128  return;
129 
130  FOOTPRINT_NAME_VALIDATOR themeNameValidator;
131  wxTextEntryDialog dlg( this, _( "New theme name:" ), _( "Add Color Theme" ) );
132  dlg.SetTextValidator( themeNameValidator );
133 
134  if( dlg.ShowModal() != wxID_OK )
135  return;
136 
137  wxString themeName = dlg.GetValue();
138  wxFileName fn( themeName + wxT( ".json" ) );
140 
141  if( fn.Exists() )
142  {
143  wxMessageBox( _( "Theme already exists!" ) );
144  return;
145  }
146 
147  SETTINGS_MANAGER& settingsMgr = Pgm().GetSettingsManager();
148  COLOR_SETTINGS* newSettings = settingsMgr.AddNewColorSettings( themeName );
149  newSettings->SetName( themeName );
150  newSettings->SetReadOnly( false );
151 
152  for( auto layer : m_validLayers )
153  newSettings->SetColor( layer, m_currentSettings->GetColor( layer ) );
154 
155  newSettings->SaveToFile( settingsMgr.GetPathForSettingsFile( newSettings ) );
156 
157  idx = m_cbTheme->Insert( themeName, idx - 1, static_cast<void*>( newSettings ) );
158  m_cbTheme->SetSelection( idx );
159 
160  m_optOverrideColors->SetValue( newSettings->GetOverrideSchItemColors() );
161 
162  *m_currentSettings = *newSettings;
163  updateSwatches();
165  }
166  else
167  {
168  COLOR_SETTINGS* selected = static_cast<COLOR_SETTINGS*>( m_cbTheme->GetClientData( idx ) );
169 
170  if( selected->GetFilename() != m_currentSettings->GetFilename() )
171  {
172  if( !saveCurrentTheme( false ) )
173  return;
174 
175  m_optOverrideColors->SetValue( selected->GetOverrideSchItemColors() );
176 
177  *m_currentSettings = *selected;
179  updateSwatches();
180  }
181  }
182 }
virtual bool saveCurrentTheme(bool aValidate)
void SetReadOnly(bool aReadOnly)
Definition: json_settings.h:84
wxString GetFilename() const
Definition: json_settings.h:72
virtual void onNewThemeSelected()
Event fired when a new theme is selected that can be overridden in children.
void SetColor(int aLayer, const COLOR4D &aColor)
const wxString & GetName() const
COLOR_SETTINGS * AddNewColorSettings(const wxString &aFilename)
Registers a new color settings object with the given filename.
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
This class provides a custom wxValidator object for limiting the allowable characters when defining f...
Definition: validators.h:63
virtual bool SaveToFile(const wxString &aDirectory="", bool aForce=false)
COLOR_SETTINGS * m_currentSettings
#define _(s)
void SetName(const wxString &aName)
std::vector< int > m_validLayers
A list of layer IDs that are valid for the current color settings dialog.
static wxString GetColorSettingsPath()
Returns the path where color scheme files are stored; creating it if missing (normally .
COLOR4D GetColor(int aLayer) const
Color settings are a bit different than most of the settings objects in that there can be more than o...
bool GetOverrideSchItemColors() const
wxString GetPathForSettingsFile(JSON_SETTINGS *aSettings)
Returns the path a given settings file should be loaded from / stored to.

References _, SETTINGS_MANAGER::AddNewColorSettings(), COLOR_SETTINGS::GetColor(), SETTINGS_MANAGER::GetColorSettingsPath(), JSON_SETTINGS::GetFilename(), COLOR_SETTINGS::GetName(), COLOR_SETTINGS::GetOverrideSchItemColors(), SETTINGS_MANAGER::GetPathForSettingsFile(), PANEL_COLOR_SETTINGS_BASE::m_cbTheme, PANEL_COLOR_SETTINGS::m_currentSettings, PANEL_COLOR_SETTINGS_BASE::m_optOverrideColors, PANEL_COLOR_SETTINGS::m_validLayers, PANEL_COLOR_SETTINGS::onNewThemeSelected(), Pgm(), PANEL_COLOR_SETTINGS::saveCurrentTheme(), JSON_SETTINGS::SaveToFile(), COLOR_SETTINGS::SetColor(), COLOR_SETTINGS::SetName(), JSON_SETTINGS::SetReadOnly(), and PANEL_COLOR_SETTINGS::updateSwatches().

◆ ResetPanel()

void PANEL_EESCHEMA_COLOR_SETTINGS::ResetPanel ( )
overridevirtual

Reset the contents of this panel.

Reimplemented from PANEL_COLOR_SETTINGS.

Definition at line 472 of file panel_eeschema_color_settings.cpp.

473 {
475  updatePreview();
476 }
virtual void ResetPanel() override
Reset the contents of this panel.

References PANEL_COLOR_SETTINGS::ResetPanel(), and updatePreview().

◆ saveCurrentTheme()

bool PANEL_EESCHEMA_COLOR_SETTINGS::saveCurrentTheme ( bool  aValidate)
overrideprotectedvirtual

Reimplemented from PANEL_COLOR_SETTINGS.

Definition at line 179 of file panel_eeschema_color_settings.cpp.

180 {
181  for( int layer : m_validLayers )
182  {
184 
185  // Do not allow non-background layers to be completely white.
186  // This ensures the BW printing recognizes that the colors should be printed black.
188  && layer != LAYER_SHEET_BACKGROUND )
189  {
190  color.Darken( 0.01 );
191  }
192 
193  m_currentSettings->SetColor( layer, color );
194  }
195 
196  return PANEL_COLOR_SETTINGS::saveCurrentTheme( aValidate );
197 }
virtual bool saveCurrentTheme(bool aValidate)
int color
Definition: DXF_plotter.cpp:57
void SetColor(int aLayer, const COLOR4D &aColor)
COLOR_SETTINGS * m_currentSettings
std::vector< int > m_validLayers
A list of layer IDs that are valid for the current color settings dialog.
Definition: color4d.h:48
COLOR4D GetColor(int aLayer) const
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References color, COLOR_SETTINGS::GetColor(), LAYER_SCHEMATIC_BACKGROUND, LAYER_SHEET_BACKGROUND, PANEL_COLOR_SETTINGS::m_currentSettings, PANEL_COLOR_SETTINGS::m_validLayers, PANEL_COLOR_SETTINGS::saveCurrentTheme(), COLOR_SETTINGS::SetColor(), and WHITE.

Referenced by TransferDataFromWindow().

◆ Show()

bool PANEL_COLOR_SETTINGS::Show ( bool  show)
overrideinherited

Definition at line 84 of file panel_color_settings.cpp.

85 {
86  if( show )
87  {
88  // In case changes have been made to the current theme in another panel:
89  int idx = m_cbTheme->GetSelection();
90  COLOR_SETTINGS* settings = static_cast<COLOR_SETTINGS*>( m_cbTheme->GetClientData( idx ) );
91 
92  if( settings )
93  *m_currentSettings = *settings;
94 
97  }
98 
99  return PANEL_COLOR_SETTINGS_BASE::Show( show );
100 }
virtual void onNewThemeSelected()
Event fired when a new theme is selected that can be overridden in children.
COLOR_SETTINGS * m_currentSettings
Color settings are a bit different than most of the settings objects in that there can be more than o...

References PANEL_COLOR_SETTINGS_BASE::m_cbTheme, PANEL_COLOR_SETTINGS::m_currentSettings, PANEL_COLOR_SETTINGS::onNewThemeSelected(), and PANEL_COLOR_SETTINGS::updateSwatches().

◆ ShowColorContextMenu()

void PANEL_COLOR_SETTINGS::ShowColorContextMenu ( wxMouseEvent &  aEvent,
int  aLayer 
)
protectedinherited

Definition at line 272 of file panel_color_settings.cpp.

273 {
274  auto selected =
275  static_cast<COLOR_SETTINGS*>( m_cbTheme->GetClientData( m_cbTheme->GetSelection() ) );
276 
277  COLOR4D current = m_currentSettings->GetColor( aLayer );
278  COLOR4D saved = selected->GetColor( aLayer );
279  bool readOnly = m_currentSettings->IsReadOnly();
280 
281  wxMenu menu;
282 
283  AddMenuItem( &menu, ID_COPY, _( "Copy color" ), KiBitmap( BITMAPS::copy ) );
284 
285  if( !readOnly && m_copied != COLOR4D::UNSPECIFIED )
286  AddMenuItem( &menu, ID_PASTE, _( "Paste color" ), KiBitmap( BITMAPS::paste ) );
287 
288  if( !readOnly && current != saved )
289  AddMenuItem( &menu, ID_REVERT, _( "Revert to saved color" ), KiBitmap( BITMAPS::undo ) );
290 
291  menu.Bind( wxEVT_COMMAND_MENU_SELECTED,
292  [&]( wxCommandEvent& aCmd )
293  {
294  switch( aCmd.GetId() )
295  {
296  case ID_COPY:
297  m_copied = current;
298  break;
299 
300  case ID_PASTE:
301  updateColor( aLayer, m_copied );
302  break;
303 
304  case ID_REVERT:
305  updateColor( aLayer, saved );
306  break;
307 
308  default:
309  aCmd.Skip();
310  }
311  } );
312 
313  PopupMenu( &menu );
314 }
wxMenuItem * AddMenuItem(wxMenu *aMenu, int aId, const wxString &aText, const wxBitmap &aImage, wxItemKind aType=wxITEM_NORMAL)
Create and insert a menu item with an icon into aMenu.
Definition: bitmap.cpp:257
void updateColor(int aLayer, const KIGFX::COLOR4D &aColor)
COLOR_SETTINGS * m_currentSettings
#define _(s)
wxBitmap KiBitmap(BITMAPS aBitmap, int aHeightTag)
Construct a wxBitmap from an image identifier Returns the image from the active theme if the image ha...
Definition: bitmap.cpp:105
COLOR4D GetColor(int aLayer) const
bool IsReadOnly() const
Definition: json_settings.h:83
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References _, AddMenuItem(), copy, COLOR_SETTINGS::GetColor(), PANEL_COLOR_SETTINGS::ID_COPY, PANEL_COLOR_SETTINGS::ID_PASTE, PANEL_COLOR_SETTINGS::ID_REVERT, JSON_SETTINGS::IsReadOnly(), KiBitmap(), PANEL_COLOR_SETTINGS_BASE::m_cbTheme, PANEL_COLOR_SETTINGS::m_copied, PANEL_COLOR_SETTINGS::m_currentSettings, paste, undo, and PANEL_COLOR_SETTINGS::updateColor().

Referenced by PANEL_COLOR_SETTINGS::createSwatch().

◆ TransferDataFromWindow()

bool PANEL_EESCHEMA_COLOR_SETTINGS::TransferDataFromWindow ( )
overrideprotected

Definition at line 131 of file panel_eeschema_color_settings.cpp.

132 {
134 
135  if( !saveCurrentTheme( true ) )
136  return false;
137 
139 
140  SETTINGS_MANAGER& settingsMgr = Pgm().GetSettingsManager();
141  EESCHEMA_SETTINGS* app_settings = settingsMgr.GetAppSettings<EESCHEMA_SETTINGS>();
142  app_settings->m_ColorTheme = m_currentSettings->GetFilename();
143 
144  return true;
145 }
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
wxString GetFilename() const
Definition: json_settings.h:72
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:106
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
Definition: view.h:208
bool saveCurrentTheme(bool aValidate) override
COLOR_SETTINGS * m_currentSettings
void SetOverrideSchItemColors(bool aFlag)
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
T * GetAppSettings(bool aLoadNow=true)
Returns a handle to the a given settings by type If the settings have already been loaded,...
virtual RENDER_SETTINGS * GetSettings()=0
Return a pointer to current settings that are going to be used when drawing items.
virtual void LoadColors(const COLOR_SETTINGS *aSettings)
wxString m_ColorTheme
Active color theme name.
Definition: app_settings.h:184

References SETTINGS_MANAGER::GetAppSettings(), SCH_BASE_FRAME::GetCanvas(), JSON_SETTINGS::GetFilename(), KIGFX::VIEW::GetPainter(), KIGFX::PAINTER::GetSettings(), SCH_DRAW_PANEL::GetView(), KIGFX::RENDER_SETTINGS::LoadColors(), APP_SETTINGS_BASE::m_ColorTheme, PANEL_COLOR_SETTINGS::m_currentSettings, m_frame, PANEL_COLOR_SETTINGS_BASE::m_optOverrideColors, Pgm(), saveCurrentTheme(), and COLOR_SETTINGS::SetOverrideSchItemColors().

◆ TransferDataToWindow()

bool PANEL_EESCHEMA_COLOR_SETTINGS::TransferDataToWindow ( )
overrideprotected

Definition at line 148 of file panel_eeschema_color_settings.cpp.

149 {
150  zoomFitPreview();
151  return true;
152 }

References zoomFitPreview().

◆ updateColor()

void PANEL_COLOR_SETTINGS::updateColor ( int  aLayer,
const KIGFX::COLOR4D aColor 
)
protectedinherited

Definition at line 327 of file panel_color_settings.cpp.

328 {
329  if( m_currentSettings )
330  m_currentSettings->SetColor( aLayer, aColor );
331 
332  // Colors must be persisted when edited because multiple PANEL_COLOR_SETTINGS could be
333  // referring to the same theme.
334  saveCurrentTheme( false );
335 
336  m_swatches[aLayer]->SetSwatchColor( aColor, false );
337 
338  if( m_currentSettings && aLayer == m_backgroundLayer )
339  {
341 
342  for( std::pair<int, COLOR_SWATCH*> pair : m_swatches )
343  pair.second->SetSwatchBackground( background );
344  }
345 
346  onColorChanged();
347 }
virtual bool saveCurrentTheme(bool aValidate)
void SetColor(int aLayer, const COLOR4D &aColor)
std::map< int, COLOR_SWATCH * > m_swatches
COLOR_SETTINGS * m_currentSettings
virtual void onColorChanged()
Event fired when the user changes any color.
COLOR4D GetColor(int aLayer) const
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References COLOR_SETTINGS::GetColor(), PANEL_COLOR_SETTINGS::m_backgroundLayer, PANEL_COLOR_SETTINGS::m_currentSettings, PANEL_COLOR_SETTINGS::m_swatches, PANEL_COLOR_SETTINGS::onColorChanged(), PANEL_COLOR_SETTINGS::saveCurrentTheme(), and COLOR_SETTINGS::SetColor().

Referenced by PANEL_COLOR_SETTINGS::OnColorChanged(), and PANEL_COLOR_SETTINGS::ShowColorContextMenu().

◆ updatePreview()

void PANEL_EESCHEMA_COLOR_SETTINGS::updatePreview ( )
private

Definition at line 479 of file panel_eeschema_color_settings.cpp.

480 {
481  if( !m_preview )
482  return;
483 
484  KIGFX::VIEW* view = m_preview->GetView();
485  auto settings = static_cast<KIGFX::SCH_RENDER_SETTINGS*>( view->GetPainter()->GetSettings() );
486  settings->LoadColors( m_currentSettings );
487 
488  m_preview->GetGAL()->SetClearColor( settings->GetBackgroundColor() );
489 
490  view->UpdateAllItems( KIGFX::COLOR );
491  auto rect = m_preview->GetScreenRect();
492  m_preview->Refresh( true, &rect );
493 }
void SetClearColor(const COLOR4D &aColor)
void UpdateAllItems(int aUpdateFlags)
Update all items in the view according to the given flags.
Definition: view.cpp:1482
Color has changed.
Definition: view_item.h:48
PAINTER * GetPainter() const
Return the painter object used by the view for drawing #VIEW_ITEMS.
Definition: view.h:208
COLOR_SETTINGS * m_currentSettings
KIGFX::GAL * GetGAL() const
Return a pointer to the GAL instance used in the panel.
virtual KIGFX::VIEW * GetView() const
Return a pointer to the #VIEW instance used in the panel.
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
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...

References KIGFX::COLOR, EDA_DRAW_PANEL_GAL::GetGAL(), KIGFX::VIEW::GetPainter(), KIGFX::PAINTER::GetSettings(), EDA_DRAW_PANEL_GAL::GetView(), PANEL_COLOR_SETTINGS::m_currentSettings, m_preview, SCH_PREVIEW_PANEL::Refresh(), KIGFX::GAL::SetClearColor(), and KIGFX::VIEW::UpdateAllItems().

Referenced by onColorChanged(), onNewThemeSelected(), PANEL_EESCHEMA_COLOR_SETTINGS(), and ResetPanel().

◆ updateSwatches()

void PANEL_COLOR_SETTINGS::updateSwatches ( )
protectedinherited

Definition at line 185 of file panel_color_settings.cpp.

186 {
187  bool isReadOnly = m_currentSettings->IsReadOnly();
189 
190  for( std::pair<int, COLOR_SWATCH*> pair : m_swatches )
191  {
192  pair.second->SetSwatchBackground( background );
193  pair.second->SetSwatchColor( m_currentSettings->GetColor( pair.first ), false );
194  pair.second->SetReadOnly( isReadOnly );
195  }
196 }
std::map< int, COLOR_SWATCH * > m_swatches
COLOR_SETTINGS * m_currentSettings
COLOR4D GetColor(int aLayer) const
bool IsReadOnly() const
Definition: json_settings.h:83
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References COLOR_SETTINGS::GetColor(), JSON_SETTINGS::IsReadOnly(), PANEL_COLOR_SETTINGS::m_backgroundLayer, PANEL_COLOR_SETTINGS::m_currentSettings, and PANEL_COLOR_SETTINGS::m_swatches.

Referenced by PANEL_COLOR_SETTINGS::OnThemeChanged(), and PANEL_COLOR_SETTINGS::Show().

◆ validateSave()

bool PANEL_EESCHEMA_COLOR_SETTINGS::validateSave ( bool  aQuiet = false)
overrideprotectedvirtual

Performs a pre-save validation of the current color theme.

Parameters
aQuietwill suppress any warning output (prompt dialogs)
Returns
true if save is allowed

Reimplemented from PANEL_COLOR_SETTINGS.

Definition at line 155 of file panel_eeschema_color_settings.cpp.

156 {
158 
159  for( SCH_LAYER_ID layer = SCH_LAYER_ID_START; layer < SCH_LAYER_ID_END; ++layer )
160  {
161  if( bgcolor == m_currentSettings->GetColor( layer )
162  && layer != LAYER_SCHEMATIC_BACKGROUND && layer != LAYER_SHEET_BACKGROUND )
163  {
164  wxString msg = _( "Some items have the same color as the background\n"
165  "and they will not be seen on the screen. Are you\n"
166  "sure you want to use these colors?" );
167 
168  if( wxMessageBox( msg, _( "Warning" ), wxYES_NO | wxICON_QUESTION, this ) == wxNO )
169  return false;
170 
171  break;
172  }
173  }
174 
175  return true;
176 }
SCH_LAYER_ID
Eeschema drawing layers.
Definition: layer_ids.h:324
COLOR_SETTINGS * m_currentSettings
#define _(s)
COLOR4D GetColor(int aLayer) const
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References _, COLOR_SETTINGS::GetColor(), LAYER_SCHEMATIC_BACKGROUND, LAYER_SHEET_BACKGROUND, PANEL_COLOR_SETTINGS::m_currentSettings, SCH_LAYER_ID_END, and SCH_LAYER_ID_START.

◆ zoomFitPreview()

void PANEL_EESCHEMA_COLOR_SETTINGS::zoomFitPreview ( )
private

Definition at line 496 of file panel_eeschema_color_settings.cpp.

497 {
498  KIGFX::VIEW* view = m_preview->GetView();
499 
500  view->SetScale( 1.0 );
501  VECTOR2D screenSize = view->ToWorld( m_preview->GetClientSize(), false );
502 
503  VECTOR2I psize( m_page->GetWidthIU(), m_page->GetHeightIU() );
504  double scale = view->GetScale() / std::max( fabs( psize.x / screenSize.x ),
505  fabs( psize.y / screenSize.y ) );
506 
507  view->SetScale( scale * m_galDisplayOptions.m_scaleFactor * 0.8 /* margin */ );
508  view->SetCenter( m_drawingSheet->ViewBBox().Centre() );
510 }
void ForceRefresh()
Force a redraw.
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:449
void SetCenter(const VECTOR2D &aCenter)
Set the center point of the VIEW (i.e.
Definition: view.cpp:578
virtual KIGFX::VIEW * GetView() const
Return a pointer to the #VIEW instance used in the panel.
virtual void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 })
Set the scaling factor, zooming around a given anchor point.
Definition: view.cpp:552
const int scale
const BOX2I ViewBBox() const override
Vec Centre() const
Definition: box2.h:63
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:264
KIGFX::GAL_DISPLAY_OPTIONS m_galDisplayOptions

References BOX2< Vec >::Centre(), EDA_DRAW_PANEL_GAL::ForceRefresh(), KIGFX::VIEW::GetScale(), EDA_DRAW_PANEL_GAL::GetView(), m_drawingSheet, m_galDisplayOptions, m_page, m_preview, KIGFX::GAL_DISPLAY_OPTIONS::m_scaleFactor, scale, KIGFX::VIEW::SetCenter(), KIGFX::VIEW::SetScale(), KIGFX::VIEW::ToWorld(), DS_PROXY_VIEW_ITEM::ViewBBox(), VECTOR2< T >::x, and VECTOR2< T >::y.

Referenced by createPreviewItems(), OnSize(), PANEL_EESCHEMA_COLOR_SETTINGS(), and TransferDataToWindow().

Member Data Documentation

◆ m_backgroundLayer

◆ m_btnOpenFolder

wxButton* PANEL_COLOR_SETTINGS_BASE::m_btnOpenFolder
protectedinherited

◆ m_cbTheme

◆ m_colorNamespace

std::string PANEL_COLOR_SETTINGS::m_colorNamespace
protectedinherited

A namespace that will be passed to SETTINGS_MANAGER::SaveColorSettings.

This should be set to the appropriate namespace in the application-specific constructor

Definition at line 122 of file panel_color_settings.h.

Referenced by PANEL_EESCHEMA_COLOR_SETTINGS(), PANEL_FP_EDITOR_COLOR_SETTINGS::PANEL_FP_EDITOR_COLOR_SETTINGS(), PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS(), and PANEL_COLOR_SETTINGS::saveCurrentTheme().

◆ m_colorsGridSizer

wxFlexGridSizer* PANEL_COLOR_SETTINGS_BASE::m_colorsGridSizer
protectedinherited

◆ m_colorsListWindow

◆ m_colorsMainSizer

◆ m_copied

KIGFX::COLOR4D PANEL_COLOR_SETTINGS::m_copied
protectedinherited

Definition at line 104 of file panel_color_settings.h.

Referenced by PANEL_COLOR_SETTINGS::ShowColorContextMenu().

◆ m_currentSettings

◆ m_drawingSheet

DS_PROXY_VIEW_ITEM* PANEL_EESCHEMA_COLOR_SETTINGS::m_drawingSheet
private

◆ m_frame

SCH_BASE_FRAME* PANEL_EESCHEMA_COLOR_SETTINGS::m_frame
private

Definition at line 63 of file panel_eeschema_color_settings.h.

Referenced by TransferDataFromWindow().

◆ m_galDisplayOptions

KIGFX::GAL_DISPLAY_OPTIONS PANEL_EESCHEMA_COLOR_SETTINGS::m_galDisplayOptions
private

◆ m_labels

std::map<int, wxStaticText*> PANEL_COLOR_SETTINGS::m_labels
protectedinherited

◆ m_mainSizer

wxBoxSizer* PANEL_COLOR_SETTINGS_BASE::m_mainSizer
protectedinherited

◆ m_optOverrideColors

◆ m_page

PAGE_INFO* PANEL_EESCHEMA_COLOR_SETTINGS::m_page
private

◆ m_preview

SCH_PREVIEW_PANEL* PANEL_EESCHEMA_COLOR_SETTINGS::m_preview
private

◆ m_previewItems

std::vector<EDA_ITEM*> PANEL_EESCHEMA_COLOR_SETTINGS::m_previewItems
private

◆ m_staticline2

wxStaticLine* PANEL_COLOR_SETTINGS_BASE::m_staticline2
protectedinherited

◆ m_staticText9

wxStaticText* PANEL_COLOR_SETTINGS_BASE::m_staticText9
protectedinherited

◆ m_swatches

◆ m_titleBlock

TITLE_BLOCK* PANEL_EESCHEMA_COLOR_SETTINGS::m_titleBlock
private

◆ m_validLayers

std::vector<int> PANEL_COLOR_SETTINGS::m_validLayers
protectedinherited

A list of layer IDs that are valid for the current color settings dialog.

Valid colors will be shown for editing and are the set of colors that actions like resetting to defaults will apply to.

This list must be filled in the application-specific color settings panel constructors.

Definition at line 114 of file panel_color_settings.h.

Referenced by PANEL_FP_EDITOR_COLOR_SETTINGS::createSwatches(), PANEL_PCBNEW_COLOR_SETTINGS::createSwatches(), PANEL_COLOR_SETTINGS::OnThemeChanged(), PANEL_EESCHEMA_COLOR_SETTINGS(), PANEL_FP_EDITOR_COLOR_SETTINGS::PANEL_FP_EDITOR_COLOR_SETTINGS(), PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS(), saveCurrentTheme(), and PANEL_COLOR_SETTINGS::saveCurrentTheme().


The documentation for this class was generated from the following files: