KiCad PCB EDA Suite
PANEL_COLOR_SETTINGS Class Reference

#include <panel_color_settings.h>

Inheritance diagram for PANEL_COLOR_SETTINGS:
PANEL_COLOR_SETTINGS_BASE PANEL_EESCHEMA_COLOR_SETTINGS PANEL_MODEDIT_COLOR_SETTINGS PANEL_PCBNEW_COLOR_SETTINGS

Public Types

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

Public Member Functions

 PANEL_COLOR_SETTINGS (wxWindow *aParent)
 
 ~PANEL_COLOR_SETTINGS ()=default
 

Public Attributes

wxCheckBox * m_optOverrideColors
 

Protected Member Functions

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

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_btnReset
 
wxButton * m_btnOpenFolder
 
wxStaticLine * m_staticline2
 
wxBoxSizer * m_colorsMainSizer
 
wxScrolledWindow * m_colorsListWindow
 
wxFlexGridSizer * m_colorsGridSizer
 

Detailed Description

Definition at line 32 of file panel_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_COLOR_SETTINGS()

PANEL_COLOR_SETTINGS::PANEL_COLOR_SETTINGS ( wxWindow *  aParent)

Definition at line 39 of file panel_color_settings.cpp.

39  :
40  PANEL_COLOR_SETTINGS_BASE( aParent ),
41  m_currentSettings( nullptr ),
42  m_swatches(),
43  m_copied( COLOR4D::UNSPECIFIED ),
44  m_validLayers(),
47 {
48 #ifdef __APPLE__
49  m_btnOpenFolder->SetLabel( _( "Reveal Themes in Finder" ) );
50 
51  // Simple border is too dark on OSX
52  m_colorsListWindow->SetWindowStyle( wxBORDER_SUNKEN|wxVSCROLL );
53 #endif
54 }
PANEL_COLOR_SETTINGS_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(826, 300), long style=wxTAB_TRAVERSAL, const wxString &name=wxEmptyString)
std::map< int, COLOR_SWATCH * > m_swatches
std::string m_colorNamespace
A namespace that will be passed to SETTINGS_MANAGER::SaveColorSettings.
COLOR_SETTINGS * m_currentSettings
std::vector< int > m_validLayers
A list of layer IDs that are valid for the current color settings dialog.
#define _(s)
Definition: 3d_actions.cpp:33

References _, PANEL_COLOR_SETTINGS_BASE::m_btnOpenFolder, and PANEL_COLOR_SETTINGS_BASE::m_colorsListWindow.

◆ ~PANEL_COLOR_SETTINGS()

PANEL_COLOR_SETTINGS::~PANEL_COLOR_SETTINGS ( )
default

Member Function Documentation

◆ createSwatch()

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

Definition at line 200 of file panel_color_settings.cpp.

201 {
202  wxStaticText* label = new wxStaticText( m_colorsListWindow, wxID_ANY, aName );
203 
204  void* clientData = m_cbTheme->GetClientData( m_cbTheme->GetSelection() );
205  COLOR_SETTINGS* selected = static_cast<COLOR_SETTINGS*>( clientData );
206  int id = FIRST_BUTTON_ID + aLayer;
207  COLOR4D defaultColor = selected->GetDefaultColor( aLayer );
209  COLOR4D backgroundColor = m_currentSettings->GetColor( m_backgroundLayer );
210 
211  COLOR_SWATCH* swatch = new COLOR_SWATCH( m_colorsListWindow, color, id, backgroundColor,
212  defaultColor, true );
213  swatch->SetForegroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOW ) );
214 
215  m_colorsGridSizer->Add( label, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT | wxLEFT, 5 );
216  m_colorsGridSizer->Add( swatch, 0, wxALIGN_CENTER_VERTICAL | wxALL, 3 );
217 
218  m_labels[aLayer] = label;
219  m_swatches[aLayer] = swatch;
220 
221  swatch->Bind( wxEVT_RIGHT_DOWN,
222  [&, aLayer]( wxMouseEvent& aEvent )
223  {
224  ShowColorContextMenu( aEvent, aLayer );
225  } );
226  swatch->Bind( COLOR_SWATCH_CHANGED, &PANEL_COLOR_SETTINGS::OnColorChanged, this );
227 }
int color
Definition: DXF_plotter.cpp:61
std::map< int, wxStaticText * > m_labels
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
Class representing a simple color swatch, of the kind used to set layer colors.
Definition: color_swatch.h:38
Color settings are a bit different than most of the settings objects in that there can be more than o...
void OnColorChanged(wxCommandEvent &aEvent)
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:99

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

Referenced by PANEL_MODEDIT_COLOR_SETTINGS::createSwatches(), PANEL_PCBNEW_COLOR_SETTINGS::createSwatches(), and PANEL_EESCHEMA_COLOR_SETTINGS::createSwatches().

◆ createThemeList()

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

Definition at line 172 of file panel_color_settings.cpp.

173 {
174  int width = 0;
175  int height = 0;
176 
177  m_cbTheme->GetTextExtent( _( "New Theme..." ), &width, &height );
178  int minwidth = width;
179 
180  m_cbTheme->Clear();
181 
182  for( COLOR_SETTINGS* settings : Pgm().GetSettingsManager().GetColorSettingsList() )
183  {
184  int pos = m_cbTheme->Append( settings->GetName(), static_cast<void*>( settings ) );
185 
186  if( settings->GetFilename() == aCurrent )
187  m_cbTheme->SetSelection( pos );
188 
189  m_cbTheme->GetTextExtent( settings->GetName(), &width, &height );
190  minwidth = std::max( minwidth, width );
191  }
192 
193  m_cbTheme->Append( wxT( "---" ) );
194  m_cbTheme->Append( _( "New Theme..." ) );
195 
196  m_cbTheme->SetMinSize( wxSize( minwidth + 50, -1 ) );
197 }
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:104
SETTINGS_MANAGER * GetSettingsManager()
#define _(s)
Definition: 3d_actions.cpp:33
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, and Pgm().

Referenced by OnLeftDownTheme(), PANEL_EESCHEMA_COLOR_SETTINGS::PANEL_EESCHEMA_COLOR_SETTINGS(), PANEL_MODEDIT_COLOR_SETTINGS::PANEL_MODEDIT_COLOR_SETTINGS(), and PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS().

◆ OnBtnOpenThemeFolderClicked()

void PANEL_COLOR_SETTINGS::OnBtnOpenThemeFolderClicked ( wxCommandEvent &  event)
overrideprotectedvirtual

Reimplemented from PANEL_COLOR_SETTINGS_BASE.

Definition at line 57 of file panel_color_settings.cpp.

58 {
60  LaunchExternal( dir );
61 }
static std::string GetColorSettingsPath()
Returns the path where color scheme files are stored (normally .
void LaunchExternal(const wxString &aPath)
Launches the given file or folder in the host OS.
Definition: launch_ext.cpp:26

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

◆ OnBtnResetClicked()

void PANEL_COLOR_SETTINGS::OnBtnResetClicked ( wxCommandEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from PANEL_COLOR_SETTINGS_BASE.

Reimplemented in PANEL_EESCHEMA_COLOR_SETTINGS.

Definition at line 64 of file panel_color_settings.cpp.

65 {
66  if( !m_currentSettings )
67  return;
68 
69  for( const std::pair<const int, COLOR_SWATCH*>& pair : m_swatches )
70  {
71  int layer = pair.first;
72  COLOR_SWATCH* button = pair.second;
73 
74  COLOR4D defaultColor = m_currentSettings->GetDefaultColor( layer );
75 
76  m_currentSettings->SetColor( layer, defaultColor );
77  button->SetSwatchColor( defaultColor, false );
78  }
79 }
void SetSwatchColor(KIGFX::COLOR4D aColor, bool sendEvent)
Set the current swatch color directly.
std::map< int, COLOR_SWATCH * > m_swatches
COLOR_SETTINGS * m_currentSettings
COLOR4D GetDefaultColor(int aLayer)
Class representing a simple color swatch, of the kind used to set layer colors.
Definition: color_swatch.h:38
void SetColor(int aLayer, COLOR4D aColor)
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:99

References COLOR_SETTINGS::GetDefaultColor(), m_currentSettings, m_swatches, COLOR_SETTINGS::SetColor(), and COLOR_SWATCH::SetSwatchColor().

Referenced by PANEL_EESCHEMA_COLOR_SETTINGS::OnBtnResetClicked().

◆ OnColorChanged()

void PANEL_COLOR_SETTINGS::OnColorChanged ( wxCommandEvent &  aEvent)
protected

Definition at line 274 of file panel_color_settings.cpp.

275 {
276  COLOR_SWATCH* swatch = static_cast<COLOR_SWATCH*>( aEvent.GetEventObject() );
277  COLOR4D newColor = swatch->GetSwatchColor();
278  LAYER_NUM layer = static_cast<SCH_LAYER_ID>( swatch->GetId() - FIRST_BUTTON_ID );
279 
280  updateColor( layer, newColor );
281 }
KIGFX::COLOR4D GetSwatchColor() const
void updateColor(int aLayer, const KIGFX::COLOR4D &aColor)
constexpr int FIRST_BUTTON_ID
int LAYER_NUM
Type LAYER_NUM can be replaced with int and removed.
Class representing a simple color swatch, of the kind used to set layer colors.
Definition: color_swatch.h:38
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:99

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

Referenced by createSwatch().

◆ onColorChanged()

virtual void PANEL_COLOR_SETTINGS::onColorChanged ( )
inlineprotectedvirtual

Event fired when the user changes any color.

Reimplemented in PANEL_EESCHEMA_COLOR_SETTINGS.

Definition at line 84 of file panel_color_settings.h.

84 {}

Referenced by updateColor().

◆ OnLeftDownTheme()

void PANEL_COLOR_SETTINGS::OnLeftDownTheme ( wxMouseEvent &  event)
overrideprotectedvirtual

Reimplemented from PANEL_COLOR_SETTINGS_BASE.

Definition at line 82 of file panel_color_settings.cpp.

83 {
84  // Lazy rebuild of theme menu to catch any colour theme changes made in other panels
85  wxString sel = m_cbTheme->GetStringSelection();
86  createThemeList( sel );
87 
88  event.Skip();
89 }
void createThemeList(const wxString &aCurrent)

References createThemeList(), and PANEL_COLOR_SETTINGS_BASE::m_cbTheme.

◆ onNewThemeSelected()

virtual void PANEL_COLOR_SETTINGS::onNewThemeSelected ( )
inlineprotectedvirtual

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

Reimplemented in PANEL_EESCHEMA_COLOR_SETTINGS.

Definition at line 79 of file panel_color_settings.h.

79 {}

Referenced by OnThemeChanged().

◆ OnOverrideItemColorsClicked()

virtual void PANEL_COLOR_SETTINGS_BASE::OnOverrideItemColorsClicked ( wxCommandEvent &  event)
inlineprotectedvirtualinherited

◆ OnSize()

virtual void PANEL_COLOR_SETTINGS_BASE::OnSize ( wxSizeEvent &  event)
inlineprotectedvirtualinherited

◆ OnThemeChanged()

void PANEL_COLOR_SETTINGS::OnThemeChanged ( wxCommandEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from PANEL_COLOR_SETTINGS_BASE.

Definition at line 91 of file panel_color_settings.cpp.

92 {
93  int idx = m_cbTheme->GetSelection();
94 
95  if( idx == static_cast<int>( m_cbTheme->GetCount() ) - 2 )
96  {
97  // separator; re-select active theme
98  m_cbTheme->SetStringSelection( m_currentSettings->GetName() );
99  return;
100  }
101 
102  if( idx == (int)m_cbTheme->GetCount() - 1 )
103  {
104  // New Theme...
105 
106  if( !saveCurrentTheme( false ) )
107  return;
108 
109  MODULE_NAME_CHAR_VALIDATOR themeNameValidator;
110  wxTextEntryDialog dlg( this, _( "New theme name:" ), _( "Add Color Theme" ) );
111  dlg.SetTextValidator( themeNameValidator );
112 
113  if( dlg.ShowModal() != wxID_OK )
114  return;
115 
116  wxString themeName = dlg.GetValue();
117  wxFileName fn( themeName + wxT( ".json" ) );
119 
120  if( fn.Exists() )
121  {
122  wxMessageBox( _( "Theme already exists!" ) );
123  return;
124  }
125 
126  SETTINGS_MANAGER& settingsMgr = Pgm().GetSettingsManager();
127  COLOR_SETTINGS* newSettings = settingsMgr.AddNewColorSettings( themeName );
128  newSettings->SetName( themeName );
129 
130  for( auto layer : m_validLayers )
131  newSettings->SetColor( layer, m_currentSettings->GetColor( layer ) );
132 
133  newSettings->SaveToFile( settingsMgr.GetPathForSettingsFile( newSettings ) );
134 
135  idx = m_cbTheme->Insert( themeName, idx - 1, static_cast<void*>( newSettings ) );
136  m_cbTheme->SetSelection( idx );
137 
138  m_optOverrideColors->SetValue( newSettings->GetOverrideSchItemColors() );
139 
140  *m_currentSettings = *newSettings;
142  }
143  else
144  {
145  COLOR_SETTINGS* selected = static_cast<COLOR_SETTINGS*>( m_cbTheme->GetClientData( idx ) );
146 
147  if( selected->GetFilename() != m_currentSettings->GetFilename() )
148  {
149  if( !saveCurrentTheme( false ) )
150  return;
151 
152  m_optOverrideColors->SetValue( selected->GetOverrideSchItemColors() );
153 
154  *m_currentSettings = *selected;
156 
158 
159  for( std::pair<int, COLOR_SWATCH*> pair : m_swatches )
160  {
161  pair.second->SetSwatchBackground( background );
162  pair.second->SetSwatchColor( m_currentSettings->GetColor( pair.first ), false );
163 
164  if( pair.first == LAYER_SHEET || pair.first == LAYER_SHEET_BACKGROUND )
165  pair.second->Show( selected->GetOverrideSchItemColors() );
166  }
167  }
168  }
169 }
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:104
virtual bool saveCurrentTheme(bool aValidate)
virtual bool SaveToFile(const std::string &aDirectory="", bool aForce=false)
virtual void onNewThemeSelected()
Event fired when a new theme is selected that can be overridden in children.
std::map< int, COLOR_SWATCH * > m_swatches
const wxString & GetName() const
COLOR_SETTINGS * AddNewColorSettings(const wxString &aFilename)
Registers a new color settings object with the given filename.
std::string GetPathForSettingsFile(JSON_SETTINGS *aSettings)
Returns the path a given settings file should be loaded from / stored to.
COLOR_SETTINGS * m_currentSettings
This class provides a custom wxValidator object for limiting the allowable characters when defining f...
Definition: validators.h:63
void SetName(const wxString &aName)
static std::string GetColorSettingsPath()
Returns the path where color scheme files are stored (normally .
std::vector< int > m_validLayers
A list of layer IDs that are valid for the current color settings dialog.
COLOR4D GetColor(int aLayer) const
#define _(s)
Definition: 3d_actions.cpp:33
Color settings are a bit different than most of the settings objects in that there can be more than o...
std::string GetFilename() const
Definition: json_settings.h:56
bool GetOverrideSchItemColors() const
void SetColor(int aLayer, COLOR4D aColor)
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:99

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

◆ saveCurrentTheme()

bool PANEL_COLOR_SETTINGS::saveCurrentTheme ( bool  aValidate)
protectedvirtual

Reimplemented in PANEL_EESCHEMA_COLOR_SETTINGS.

Definition at line 303 of file panel_color_settings.cpp.

304 {
305  if( aValidate && !validateSave() )
306  return false;
307 
308  SETTINGS_MANAGER& settingsMgr = Pgm().GetSettingsManager();
309  COLOR_SETTINGS* selected = settingsMgr.GetColorSettings( m_currentSettings->GetFilename() );
310 
311  selected->SetOverrideSchItemColors( m_optOverrideColors->GetValue() );
312 
313  for( auto layer : m_validLayers )
314  selected->SetColor( layer, m_currentSettings->GetColor( layer ) );
315 
316  settingsMgr.SaveColorSettings( selected, m_colorNamespace );
317 
318  return true;
319 }
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:104
std::string m_colorNamespace
A namespace that will be passed to SETTINGS_MANAGER::SaveColorSettings.
COLOR_SETTINGS * m_currentSettings
void SetOverrideSchItemColors(bool aFlag)
std::vector< int > m_validLayers
A list of layer IDs that are valid for the current color settings dialog.
COLOR_SETTINGS * GetColorSettings(const wxString &aName="user")
Retrieves a color settings object that applications can read colors from.
COLOR4D GetColor(int aLayer) const
void SaveColorSettings(COLOR_SETTINGS *aSettings, const std::string &aNamespace="")
Safely saves a COLOR_SETTINGS to disk, preserving any changes outside the given namespace.
Color settings are a bit different than most of the settings objects in that there can be more than o...
std::string GetFilename() const
Definition: json_settings.h:56
virtual bool validateSave(bool aQuiet=false)
Performs a pre-save validation of the current color theme.
void SetColor(int aLayer, COLOR4D aColor)

References COLOR_SETTINGS::GetColor(), SETTINGS_MANAGER::GetColorSettings(), JSON_SETTINGS::GetFilename(), m_colorNamespace, m_currentSettings, PANEL_COLOR_SETTINGS_BASE::m_optOverrideColors, m_validLayers, Pgm(), SETTINGS_MANAGER::SaveColorSettings(), COLOR_SETTINGS::SetColor(), COLOR_SETTINGS::SetOverrideSchItemColors(), and validateSave().

Referenced by OnThemeChanged(), PANEL_EESCHEMA_COLOR_SETTINGS::saveCurrentTheme(), PANEL_MODEDIT_COLOR_SETTINGS::TransferDataFromWindow(), and PANEL_PCBNEW_COLOR_SETTINGS::TransferDataFromWindow().

◆ ShowColorContextMenu()

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

Definition at line 230 of file panel_color_settings.cpp.

231 {
232  auto selected =
233  static_cast<COLOR_SETTINGS*>( m_cbTheme->GetClientData( m_cbTheme->GetSelection() ) );
234 
235  COLOR4D current = m_currentSettings->GetColor( aLayer );
236  COLOR4D saved = selected->GetColor( aLayer );
237 
238  wxMenu menu;
239 
240  AddMenuItem( &menu, ID_COPY, _( "Copy color" ), KiBitmap( copy_xpm ) );
241 
242  if( m_copied != COLOR4D::UNSPECIFIED )
243  AddMenuItem( &menu, ID_PASTE, _( "Paste color" ), KiBitmap( paste_xpm ) );
244 
245  if( current != saved )
246  AddMenuItem( &menu, ID_REVERT, _( "Revert to saved color" ), KiBitmap( undo_xpm ) );
247 
248  menu.Bind( wxEVT_COMMAND_MENU_SELECTED,
249  [&]( wxCommandEvent& aCmd )
250  {
251  switch( aCmd.GetId() )
252  {
253  case ID_COPY:
254  m_copied = current;
255  break;
256 
257  case ID_PASTE:
258  updateColor( aLayer, m_copied );
259  break;
260 
261  case ID_REVERT:
262  updateColor( aLayer, saved );
263  break;
264 
265  default:
266  aCmd.Skip();
267  }
268  } );
269 
270  PopupMenu( &menu );
271 }
wxMenuItem * AddMenuItem(wxMenu *aMenu, int aId, const wxString &aText, const wxBitmap &aImage, wxItemKind aType=wxITEM_NORMAL)
Function AddMenuItem is an inline helper function to create and insert a menu item with an icon into ...
Definition: bitmap.cpp:232
void updateColor(int aLayer, const KIGFX::COLOR4D &aColor)
wxBitmap KiBitmap(BITMAP_DEF aBitmap)
Construct a wxBitmap from a memory record, held in a BITMAP_DEF.
Definition: bitmap.cpp:80
COLOR_SETTINGS * m_currentSettings
const BITMAP_OPAQUE copy_xpm[1]
Definition: copy.cpp:67
const BITMAP_OPAQUE paste_xpm[1]
Definition: paste.cpp:69
COLOR4D GetColor(int aLayer) const
#define _(s)
Definition: 3d_actions.cpp:33
const BITMAP_OPAQUE undo_xpm[1]
Definition: undo.cpp:74
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:99

References _, AddMenuItem(), copy_xpm, COLOR_SETTINGS::GetColor(), ID_COPY, ID_PASTE, ID_REVERT, KiBitmap(), PANEL_COLOR_SETTINGS_BASE::m_cbTheme, m_copied, m_currentSettings, paste_xpm, undo_xpm, and updateColor().

Referenced by createSwatch().

◆ updateColor()

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

Definition at line 284 of file panel_color_settings.cpp.

285 {
286  if( m_currentSettings )
287  m_currentSettings->SetColor( aLayer, aColor );
288 
289  m_swatches[aLayer]->SetSwatchColor( aColor, false );
290 
291  if( m_currentSettings && aLayer == m_backgroundLayer )
292  {
294 
295  for( std::pair<int, COLOR_SWATCH*> pair : m_swatches )
296  pair.second->SetSwatchBackground( background );
297  }
298 
299  onColorChanged();
300 }
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
void SetColor(int aLayer, COLOR4D aColor)
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:99

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

Referenced by OnColorChanged(), and ShowColorContextMenu().

◆ validateSave()

virtual bool PANEL_COLOR_SETTINGS::validateSave ( bool  aQuiet = false)
inlineprotectedvirtual

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 in PANEL_EESCHEMA_COLOR_SETTINGS.

Definition at line 71 of file panel_color_settings.h.

72  {
73  return true;
74  }

Referenced by saveCurrentTheme().

Member Data Documentation

◆ m_backgroundLayer

◆ m_btnOpenFolder

wxButton* PANEL_COLOR_SETTINGS_BASE::m_btnOpenFolder
protectedinherited

◆ m_btnReset

wxButton* PANEL_COLOR_SETTINGS_BASE::m_btnReset
protectedinherited

◆ m_cbTheme

◆ m_colorNamespace

std::string PANEL_COLOR_SETTINGS::m_colorNamespace
protected

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 109 of file panel_color_settings.h.

Referenced by PANEL_EESCHEMA_COLOR_SETTINGS::PANEL_EESCHEMA_COLOR_SETTINGS(), PANEL_MODEDIT_COLOR_SETTINGS::PANEL_MODEDIT_COLOR_SETTINGS(), PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS(), and saveCurrentTheme().

◆ m_colorsGridSizer

◆ m_colorsListWindow

◆ m_colorsMainSizer

◆ m_copied

KIGFX::COLOR4D PANEL_COLOR_SETTINGS::m_copied
protected

Definition at line 91 of file panel_color_settings.h.

Referenced by ShowColorContextMenu().

◆ m_currentSettings

◆ m_labels

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

◆ m_mainSizer

wxBoxSizer* PANEL_COLOR_SETTINGS_BASE::m_mainSizer
protectedinherited

◆ m_optOverrideColors

◆ m_staticline2

wxStaticLine* PANEL_COLOR_SETTINGS_BASE::m_staticline2
protectedinherited

◆ m_staticText9

wxStaticText* PANEL_COLOR_SETTINGS_BASE::m_staticText9
protectedinherited

◆ m_swatches

std::map<int, COLOR_SWATCH*> PANEL_COLOR_SETTINGS::m_swatches
protected

◆ m_validLayers

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

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 101 of file panel_color_settings.h.

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


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