KiCad PCB EDA Suite
DIALOG_COLOR_PICKER Class Reference

#include <dialog_color_picker.h>

Inheritance diagram for DIALOG_COLOR_PICKER:
DIALOG_COLOR_PICKER_BASE DIALOG_SHIM KIWAY_HOLDER

Public Types

enum  HOLDER_TYPE { DIALOG , FRAME , PANEL }
 

Public Member Functions

 DIALOG_COLOR_PICKER (wxWindow *aParent, const KIGFX::COLOR4D &aCurrentColor, bool aAllowOpacityControl, CUSTOM_COLORS_LIST *aUserColors=nullptr, const KIGFX::COLOR4D &aDefaultColor=KIGFX::COLOR4D::UNSPECIFIED)
 Dialog constructor. More...
 
 ~DIALOG_COLOR_PICKER ()
 
KIGFX::COLOR4D GetColor ()
 
void SetInitialFocus (wxWindow *aWindow)
 Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown. More...
 
int ShowQuasiModal ()
 
void EndQuasiModal (int retCode)
 
bool IsQuasiModal () const
 
bool Show (bool show) override
 
bool Enable (bool enable) override
 
void OnPaint (wxPaintEvent &event)
 
void OnModify ()
 
void SetPosition (const wxPoint &aNewPosition)
 Force the position of the dialog to a new position. More...
 
EDA_UNITS GetUserUnits () const
 
void SetupStandardButtons (std::map< int, wxString > aLabels={})
 
HOLDER_TYPE GetType () const
 
KIWAYKiway () const
 Return a reference to the KIWAY that this object has an opportunity to participate in. More...
 
bool HasKiway () const
 Safety check before asking for the Kiway reference. More...
 
PROJECTPrj () const
 Return a reference to the PROJECT associated with this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 It is only used for debugging, since "this" is not a wxWindow*. More...
 

Static Public Member Functions

static bool IsCtrl (int aChar, const wxKeyEvent &e)
 
static bool IsShiftCtrl (int aChar, const wxKeyEvent &e)
 

Protected Member Functions

void finishDialogSettings ()
 In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls. More...
 
void setSizeInDU (int x, int y)
 Set the dialog to the given dimensions in "dialog units". More...
 
int horizPixelsFromDU (int x) const
 Convert an integer number of dialog units to pixels, horizontally. More...
 
int vertPixelsFromDU (int y) const
 Convert an integer number of dialog units to pixels, vertically. More...
 
void resetSize ()
 Clear the existing dialog size and position. More...
 
virtual void OnCharHook (wxKeyEvent &aEvt)
 

Protected Attributes

wxNotebook * m_notebook
 
wxPanel * m_panelFreeColors
 
wxStaticBitmap * m_RgbBitmap
 
wxStaticText * m_staticTextR
 
wxStaticText * m_staticTextG
 
wxStaticText * m_staticTextB
 
wxSpinCtrl * m_spinCtrlRed
 
wxSpinCtrl * m_spinCtrlGreen
 
wxSpinCtrl * m_spinCtrlBlue
 
wxStaticBitmap * m_HsvBitmap
 
wxStaticText * m_staticTextHue
 
wxStaticText * m_staticTextSat
 
wxSpinCtrl * m_spinCtrlHue
 
wxSpinCtrl * m_spinCtrlSaturation
 
wxStaticText * m_staticTextBright
 
wxSlider * m_sliderBrightness
 
wxPanel * m_panelDefinedColors
 
wxBoxSizer * m_SizerDefinedColors
 
wxFlexGridSizer * m_fgridColor
 
wxBoxSizer * m_SizerTransparency
 
wxStaticText * m_opacityLabel
 
wxSlider * m_sliderTransparency
 
wxStaticText * m_staticTextOldColor
 
wxStaticBitmap * m_OldColorRect
 
wxStaticBitmap * m_NewColorRect
 
wxTextCtrl * m_colorValue
 
wxButton * m_resetToDefault
 
wxStdDialogButtonSizer * m_sdbSizer
 
wxButton * m_sdbSizerOK
 
wxButton * m_sdbSizerCancel
 
EDA_UNITS m_units
 
std::string m_hash_key
 
bool m_useCalculatedSize
 
bool m_firstPaintEvent
 
wxWindow * m_initialFocusTarget
 
WX_EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 
EDA_BASE_FRAMEm_parentFrame
 
std::vector< wxWindow * > m_tabOrder
 
wxSize m_initialSize
 

Private Member Functions

void SetEditVals (CHANGED_COLOR aChanged, bool aCheckTransparency)
 
void drawAll ()
 
void createHSVBitmap ()
 generate the bitmap that shows the HSV color circle More...
 
void drawHSVPalette ()
 draws the HSV color circle More...
 
void createRGBBitmap ()
 generate the bitmap that shows the RVB color space More...
 
void drawRGBPalette ()
 draws the RVB color space More...
 
void updatePreview (wxStaticBitmap *aStaticBitmap, KIGFX::COLOR4D &aColor4D)
 Event handler from wxSlider: brightness (value) control. More...
 
void OnChangeBrightness (wxScrollEvent &event) override
 Event handler from wxSlider: alpha (transparency) control. More...
 
void OnChangeAlpha (wxScrollEvent &event) override
 Event handlers from wxSpinControl. More...
 
void OnChangeEditRed (wxSpinEvent &event) override
 
void OnChangeEditGreen (wxSpinEvent &event) override
 
void OnChangeEditBlue (wxSpinEvent &event) override
 
void OnChangeEditHue (wxSpinEvent &event) override
 
void OnChangeEditSat (wxSpinEvent &event) override
 mouse handlers, when clicking on a palette bitmap More...
 
void onRGBMouseClick (wxMouseEvent &event) override
 
void onRGBMouseDrag (wxMouseEvent &event) override
 
void onHSVMouseClick (wxMouseEvent &event) override
 
void onHSVMouseDrag (wxMouseEvent &event) override
 
void OnColorValueText (wxCommandEvent &event) override
 Event handler for the reset button press. More...
 
void OnResetButton (wxCommandEvent &aEvent) override
 
bool setHSvaluesFromCursor (const wxPoint &aMouseCursor)
 Manage the Hue and Saturation settings when the mouse cursor is at aMouseCursor. More...
 
void buttColorClick (wxMouseEvent &event)
 Event handler for double click on color buttons. More...
 
void colorDClick (wxMouseEvent &event)
 called when creating the dialog More...
 
bool TransferDataToWindow () override
 
void initDefinedColors (CUSTOM_COLORS_LIST *aPredefinedColors)
 Create the bitmap buttons for each defined colors. More...
 
int normalizeToInt (double aValue, int aValMax=255)
 
void OnCloseWindow (wxCloseEvent &aEvent)
 Properly handle the wxCloseEvent when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM. More...
 
void OnButton (wxCommandEvent &aEvent)
 Properly handle the default button events when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM. More...
 
void OnGridEditorShown (wxGridEvent &event)
 
void OnGridEditorHidden (wxGridEvent &event)
 
 DECLARE_EVENT_TABLE ()
 

Private Attributes

bool m_allowMouseEvents
 
bool m_allowOpacityCtrl
 true to show the widget, false to keep alpha channel = 1.0 More...
 
KIGFX::COLOR4D m_previousColor4D
 the initial color4d More...
 
KIGFX::COLOR4D m_newColor4D
 the current color4d More...
 
KIGFX::COLOR4D m_defaultColor
 The default color4d. More...
 
std::vector< KIGFX::COLOR4Dm_Color4DList
 the list of color4d ordered by button ID, for predefined colors More...
 
int m_cursorsSize
 
wxPoint m_cursorBitmapRed
 the red cursor on the RGB bitmap palette. More...
 
wxPoint m_cursorBitmapGreen
 the green cursor on the RGB bitmap palette. More...
 
wxPoint m_cursorBitmapBlue
 the blue cursor on the RGB bitmap palette. More...
 
wxPoint m_cursorBitmapHSV
 the cursor on the HSV bitmap palette. More...
 
wxPoint * m_selectedCursor
 the ref cursor to the selected cursor, if any, or null. More...
 
double m_hue
 the current hue, in degrees (0 ... 360) More...
 
double m_sat
 the current saturation (0 ... 1.0) More...
 
double m_val
 the current value (0 ... 1.0) More...
 
wxBitmap * m_bitmapRGB
 the basic RGB palette More...
 
wxBitmap * m_bitmapHSV
 the basic HUV palette More...
 
std::vector< wxStaticBitmap * > m_colorSwatches
 list of defined colors buttons More...
 
KIWAYm_kiway
 
HOLDER_TYPE m_type
 

Detailed Description

Definition at line 81 of file dialog_color_picker.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 39 of file kiway_holder.h.

Constructor & Destructor Documentation

◆ DIALOG_COLOR_PICKER()

DIALOG_COLOR_PICKER::DIALOG_COLOR_PICKER ( wxWindow *  aParent,
const KIGFX::COLOR4D aCurrentColor,
bool  aAllowOpacityControl,
CUSTOM_COLORS_LIST aUserColors = nullptr,
const KIGFX::COLOR4D aDefaultColor = KIGFX::COLOR4D::UNSPECIFIED 
)

Dialog constructor.

Parameters
aParentis the caller
aCurrentColoris the current color, used to show it in dialog
aAllowOpacityControltrue to allow opacity (alpha channel) setting false to not show this setting (opacity = 1.0 always)
aUserColorsif not null is a list of defined colors replacing the dialog predefined colors

There are two types of color settings: theme colors and local overrides. Theme colors have a default value, and the Reset to Default button reverts to it. Local override colors have a default of UNSPECIFIED, which means "use the theme color". The underlying action is the same, but we change the label here because the action from the point of view of the user is slightly different.

Definition at line 45 of file dialog_color_picker.cpp.

48 :
50{
51 m_allowMouseEvents = false;
52 m_allowOpacityCtrl = aAllowOpacityControl;
53 m_previousColor4D = aCurrentColor;
54 m_newColor4D = aCurrentColor;
55 m_cursorsSize = 8; // Size of square cursors drawn on color bitmaps
57 m_bitmapRGB = nullptr;
58 m_bitmapHSV = nullptr;
59 m_selectedCursor = nullptr;
60 m_defaultColor = aDefaultColor;
61
63 {
64 m_SizerTransparency->Show( false );
65
66 if( aCurrentColor != COLOR4D::UNSPECIFIED )
67 {
68 m_previousColor4D.a = 1.0;
69 m_newColor4D.a = 1.0;
70 }
71 }
72
73 // UNSPECIFIED is ( 0, 0, 0, 0 ) but that is unfriendly for editing because you have to notice
74 // first that the value slider is all the way down before you get any color
75 if( aCurrentColor == COLOR4D::UNSPECIFIED )
76 m_val = 1.0;
77
79 wxASSERT( cfg );
80
81 m_notebook->SetSelection( cfg->m_ColorPicker.default_tab );
82
83 // Build the defined colors panel:
84 initDefinedColors( aUserColors );
85
93 if( aDefaultColor == COLOR4D::UNSPECIFIED )
94 m_resetToDefault->SetLabel( _( "Clear Color" ) );
95
97}
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:110
COLOR_PICKER m_ColorPicker
Definition: app_settings.h:179
DIALOG_COLOR_PICKER_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Color Picker"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
KIGFX::COLOR4D m_previousColor4D
the initial color4d
void initDefinedColors(CUSTOM_COLORS_LIST *aPredefinedColors)
Create the bitmap buttons for each defined colors.
KIGFX::COLOR4D m_newColor4D
the current color4d
double m_val
the current value (0 ... 1.0)
wxBitmap * m_bitmapRGB
the basic RGB palette
wxBitmap * m_bitmapHSV
the basic HUV palette
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
bool m_allowOpacityCtrl
true to show the widget, false to keep alpha channel = 1.0
KIGFX::COLOR4D m_defaultColor
The default color4d.
wxPoint * m_selectedCursor
the ref cursor to the selected cursor, if any, or null.
void SetupStandardButtons(std::map< int, wxString > aLabels={})
APP_SETTINGS_BASE * KifaceSettings() const
Definition: kiface_base.h:93
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Convert current color (stored in RGB) to HSV format.
Definition: color4d.cpp:387
double a
Alpha component.
Definition: color4d.h:393
#define _(s)

References _, KIGFX::COLOR4D::a, APP_SETTINGS_BASE::COLOR_PICKER::default_tab, initDefinedColors(), Kiface(), KIFACE_BASE::KifaceSettings(), m_allowMouseEvents, m_allowOpacityCtrl, m_bitmapHSV, m_bitmapRGB, APP_SETTINGS_BASE::m_ColorPicker, m_cursorsSize, m_defaultColor, m_hue, m_newColor4D, DIALOG_COLOR_PICKER_BASE::m_notebook, m_previousColor4D, DIALOG_COLOR_PICKER_BASE::m_resetToDefault, m_sat, m_selectedCursor, DIALOG_COLOR_PICKER_BASE::m_SizerTransparency, m_val, DIALOG_SHIM::SetupStandardButtons(), and KIGFX::COLOR4D::ToHSV().

◆ ~DIALOG_COLOR_PICKER()

DIALOG_COLOR_PICKER::~DIALOG_COLOR_PICKER ( )

Definition at line 100 of file dialog_color_picker.cpp.

101{
103 wxASSERT( cfg );
104
105 cfg->m_ColorPicker.default_tab = m_notebook->GetSelection();
106
107 delete m_bitmapRGB;
108 delete m_bitmapHSV;
109
110 for( wxStaticBitmap* swatch : m_colorSwatches )
111 {
112 swatch->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED,
113 wxMouseEventHandler( DIALOG_COLOR_PICKER::buttColorClick ),
114 nullptr, this );
115 }
116}
void buttColorClick(wxMouseEvent &event)
Event handler for double click on color buttons.
std::vector< wxStaticBitmap * > m_colorSwatches
list of defined colors buttons

References buttColorClick(), APP_SETTINGS_BASE::COLOR_PICKER::default_tab, Kiface(), KIFACE_BASE::KifaceSettings(), m_bitmapHSV, m_bitmapRGB, APP_SETTINGS_BASE::m_ColorPicker, m_colorSwatches, and DIALOG_COLOR_PICKER_BASE::m_notebook.

Member Function Documentation

◆ buttColorClick()

void DIALOG_COLOR_PICKER::buttColorClick ( wxMouseEvent &  event)
private

Event handler for double click on color buttons.

Definition at line 565 of file dialog_color_picker.cpp.

566{
567 int id = event.GetId();
569 m_newColor4D.r = color.r;
570 m_newColor4D.g = color.g;
571 m_newColor4D.b = color.b;
572 m_newColor4D.a = color.a;
573
575 SetEditVals( ALL_CHANGED, false );
576
577 drawAll();
578
579 event.Skip();
580}
int color
Definition: DXF_plotter.cpp:57
std::vector< KIGFX::COLOR4D > m_Color4DList
the list of color4d ordered by button ID, for predefined colors
void SetEditVals(CHANGED_COLOR aChanged, bool aCheckTransparency)
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:104
double r
Red component.
Definition: color4d.h:390
double g
Green component.
Definition: color4d.h:391
double b
Blue component.
Definition: color4d.h:392
#define ID_COLOR_BLACK
@ ALL_CHANGED

References KIGFX::COLOR4D::a, ALL_CHANGED, KIGFX::COLOR4D::b, color, drawAll(), KIGFX::COLOR4D::g, ID_COLOR_BLACK, m_Color4DList, m_hue, m_newColor4D, m_sat, m_val, KIGFX::COLOR4D::r, SetEditVals(), and KIGFX::COLOR4D::ToHSV().

Referenced by initDefinedColors(), and ~DIALOG_COLOR_PICKER().

◆ colorDClick()

void DIALOG_COLOR_PICKER::colorDClick ( wxMouseEvent &  event)
private

called when creating the dialog

Definition at line 559 of file dialog_color_picker.cpp.

560{
561 wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
562}

Referenced by initDefinedColors().

◆ createHSVBitmap()

void DIALOG_COLOR_PICKER::createHSVBitmap ( )
private

generate the bitmap that shows the HSV color circle

Definition at line 322 of file dialog_color_picker.cpp.

323{
324 wxSize bmsize = m_HsvBitmap->GetSize();
325 int half_size = std::min( bmsize.x, bmsize.y )/2;
326
327 // We use here a Y axis from bottom to top and origin to center, So we need to map
328 // coordinated to write pixel in a wxImage
329 #define MAPX( xx ) bmsize.x / 2 + ( xx )
330 #define MAPY( yy ) bmsize.y / 2 - ( yy )
331
332 wxImage img( bmsize ); // a temporary buffer to build the color map
333
334 // clear background (set the window bg color)
335 wxColor bg = GetBackgroundColour();
336
337 // Don't do standard-color lookups on OSX each time through the loop
338 wxColourBase::ChannelType bgR = bg.Red();
339 wxColourBase::ChannelType bgG = bg.Green();
340 wxColourBase::ChannelType bgB = bg.Blue();
341
342 for( int xx = 0; xx < bmsize.x; xx++ ) // blue axis
343 {
344 for( int yy = 0; yy < bmsize.y; yy++ ) // Red axis
345 img.SetRGB( xx, yy, bgR, bgG, bgB );
346 }
347
348 // Reserve room to draw cursors inside the bitmap
349 half_size -= m_cursorsSize/2;
350
351 double hue, sat;
353 int sq_radius = half_size*half_size;
354
355 // Build the palette
356 for( int xx = -half_size; xx < half_size; xx++ )
357 {
358 for( int yy = -half_size; yy < half_size; yy++ )
359 {
360 sat = double(xx*xx + yy*yy) / sq_radius;
361
362 // sat is <= 1.0
363 // any value > 1.0 is not a valid HSB color:
364 if( sat > 1.0 )
365 continue;
366
367 // sat is the distance from center
368 sat = sqrt( sat );
369 hue = atan2( (double)yy, (double)xx ) * 180 / M_PI;
370
371 if( hue < 0.0 )
372 hue += 360.0;
373
374 color.FromHSV( hue, sat, 1.0 );
375
376 img.SetRGB( MAPX( xx ), MAPY( yy ), color.r*255, color.g*255, color.b*255 );
377 }
378 }
379
380 delete m_bitmapHSV;
381 m_bitmapHSV = new wxBitmap( img, 24 );
382 m_HsvBitmap->SetBitmap( *m_bitmapHSV );
383}
#define MAPX(xx)
#define MAPY(yy)

References color, m_bitmapHSV, m_cursorsSize, DIALOG_COLOR_PICKER_BASE::m_HsvBitmap, MAPX, and MAPY.

Referenced by drawHSVPalette().

◆ createRGBBitmap()

void DIALOG_COLOR_PICKER::createRGBBitmap ( )
private

generate the bitmap that shows the RVB color space

Definition at line 228 of file dialog_color_picker.cpp.

229{
230 wxSize bmsize = m_RgbBitmap->GetSize();
231 int half_size = std::min( bmsize.x, bmsize.y )/2;
232
233 // We use here a Y axis from bottom to top and origin to center, So we need to map
234 // coordinated to write pixel in a wxImage. MAPX and MAPY are defined above so they
235 // must be undefined here to prevent compiler warnings.
236#undef MAPX
237#undef MAPY
238#define MAPX( xx ) bmsize.x / 2 + ( xx )
239#define MAPY( yy ) bmsize.y / 2 - ( yy )
240
241 // Reserve room to draw cursors inside the bitmap
242 half_size -= m_cursorsSize/2;
243
245
246 // Red blue area in X Z 3d axis
247 double inc = 255.0 / half_size;
248 #define SLOPE_AXIS 50.0
249 double slope = SLOPE_AXIS/half_size;
250 color.g = 0.0;
251
252 wxImage img( bmsize ); // a temporary buffer to build the color map
253
254 // clear background (set the window bg color)
255 wxColor bg = GetBackgroundColour();
256
257 // Don't do standard-color lookups on OSX each time through the loop
258 wxColourBase::ChannelType bgR = bg.Red();
259 wxColourBase::ChannelType bgG = bg.Green();
260 wxColourBase::ChannelType bgB = bg.Blue();
261
262 for( int xx = 0; xx < bmsize.x; xx++ ) // blue axis
263 {
264 for( int yy = 0; yy < bmsize.y; yy++ ) // Red axis
265 img.SetRGB( xx, yy, bgR, bgG, bgB );
266 }
267
268 // Build the palette
269 for( int xx = 0; xx < half_size; xx++ ) // blue axis
270 {
271 color.b = inc * xx;
272
273 for( int yy = 0; yy < half_size; yy++ ) // Red axis
274 {
275 color.r = inc * yy;
276 img.SetRGB( MAPX( xx ), MAPY( yy - (slope*xx) ), color.r, color.g, color.b );
277 }
278 }
279
280 // Red green area in y Z 3d axis
281 color.b = 0.0;
282
283 for( int xx = 0; xx < half_size; xx++ ) // green axis
284 {
285 color.g = inc * xx;
286
287 for( int yy = 0; yy < half_size; yy++ ) // Red axis
288 {
289 color.r = inc * yy;
290 img.SetRGB( MAPX( -xx ), MAPY( yy - (slope*xx) ), color.r, color.g, color.b );
291 }
292 }
293
294 // Blue green area in x y 3d axis
295 color.r = 0.0;
296
297 for( int xx = 0; xx < half_size; xx++ ) // green axis
298 {
299 color.g = inc * xx;
300
301 for( int yy = 0; yy < half_size; yy++ ) // blue axis
302 {
303 color.b = inc * yy;
304
305 // Mapping the xx, yy color axis to draw coordinates is more tricky than previously
306 // in DC coordinates:
307 // the blue axis is the (0, 0) to half_size, (-yy - SLOPE_AXIS)
308 // the green axis is the (0, 0) to - half_size, (-yy - SLOPE_AXIS)
309 int drawX = -xx + yy;
310 int drawY = - std::min( xx,yy ) * 0.9;
311 img.SetRGB( MAPX( drawX ), MAPY( drawY - std::abs( slope*drawX ) ),
312 color.r, color.g, color.b );
313 }
314 }
315
316 delete m_bitmapRGB;
317 m_bitmapRGB = new wxBitmap( img, 24 );
318 m_RgbBitmap->SetBitmap( *m_bitmapRGB );
319}
#define SLOPE_AXIS
EDA_ANGLE abs(const EDA_ANGLE &aAngle)
Definition: eda_angle.h:412

References std::abs(), color, m_bitmapRGB, m_cursorsSize, DIALOG_COLOR_PICKER_BASE::m_RgbBitmap, MAPX, MAPY, and SLOPE_AXIS.

Referenced by drawRGBPalette().

◆ DECLARE_EVENT_TABLE()

DIALOG_SHIM::DECLARE_EVENT_TABLE ( )
privateinherited

◆ drawAll()

void DIALOG_COLOR_PICKER::drawAll ( )
private

Definition at line 542 of file dialog_color_picker.cpp.

543{
544 m_NewColorRect->Freeze(); // Avoid flicker
545 m_HsvBitmap->Freeze();
546 m_RgbBitmap->Freeze();
550 m_NewColorRect->Thaw();
551 m_HsvBitmap->Thaw();
552 m_RgbBitmap->Thaw();
553 m_NewColorRect->Refresh();
554 m_HsvBitmap->Refresh();
555 m_RgbBitmap->Refresh();
556}
void drawHSVPalette()
draws the HSV color circle
void updatePreview(wxStaticBitmap *aStaticBitmap, KIGFX::COLOR4D &aColor4D)
Event handler from wxSlider: brightness (value) control.
void drawRGBPalette()
draws the RVB color space

References drawHSVPalette(), drawRGBPalette(), DIALOG_COLOR_PICKER_BASE::m_HsvBitmap, m_newColor4D, DIALOG_COLOR_PICKER_BASE::m_NewColorRect, DIALOG_COLOR_PICKER_BASE::m_RgbBitmap, and updatePreview().

Referenced by buttColorClick(), OnChangeBrightness(), OnChangeEditBlue(), OnChangeEditGreen(), OnChangeEditHue(), OnChangeEditRed(), OnChangeEditSat(), OnColorValueText(), onHSVMouseClick(), onHSVMouseDrag(), OnResetButton(), onRGBMouseDrag(), and TransferDataToWindow().

◆ drawHSVPalette()

void DIALOG_COLOR_PICKER::drawHSVPalette ( )
private

draws the HSV color circle

Definition at line 456 of file dialog_color_picker.cpp.

457{
458 if( !m_bitmapHSV || m_bitmapHSV->GetSize() != m_HsvBitmap->GetSize() )
460
461 wxMemoryDC bitmapDC;
462 wxSize bmsize = m_bitmapHSV->GetSize();
463 int half_size = std::min( bmsize.x, bmsize.y ) / 2;
464 wxBitmap newBm( *m_bitmapHSV );
465 bitmapDC.SelectObject( newBm );
466
467 // Use Y axis from bottom to top and origin to center
468 bitmapDC.SetAxisOrientation( true, true );
469 #if wxCHECK_VERSION( 3, 1, 7 )
470 // For some reason, SetDeviceOrigin has changed in wxWidgets 3.1.6 or 3.1.7
471 bitmapDC.SetDeviceOrigin( half_size, -half_size );
472 #else
473 bitmapDC.SetDeviceOrigin( half_size, half_size );
474 #endif
475
476 // Reserve room to draw cursors inside the bitmap
477 half_size -= m_cursorsSize / 2;
478
479 // Draw the HSB cursor:
480 m_cursorBitmapHSV.x = cos( m_hue * M_PI / 180.0 ) * half_size * m_sat;
481 m_cursorBitmapHSV.y = sin( m_hue * M_PI / 180.0 ) * half_size * m_sat;
482
483 wxPen pen( wxColor( 0, 0, 0 ), 2 ); // Use 2 pixels as pensize
484 wxBrush brush( wxColor( 0, 0, 0 ), wxBRUSHSTYLE_TRANSPARENT );
485 bitmapDC.SetPen( pen );
486 bitmapDC.SetBrush( brush );
487
488 int half_csize = m_cursorsSize/2;
489 bitmapDC.DrawRectangle( m_cursorBitmapHSV.x- half_csize,
490 m_cursorBitmapHSV.y-half_csize,
492
493 m_HsvBitmap->SetBitmap( newBm );
494
495 /* Deselect the Tool Bitmap from DC,
496 * in order to delete the MemoryDC safely without deleting the bitmap
497 */
498 bitmapDC.SelectObject( wxNullBitmap );
499}
void createHSVBitmap()
generate the bitmap that shows the HSV color circle
wxPoint m_cursorBitmapHSV
the cursor on the HSV bitmap palette.

References createHSVBitmap(), m_bitmapHSV, m_cursorBitmapHSV, m_cursorsSize, DIALOG_COLOR_PICKER_BASE::m_HsvBitmap, m_hue, and m_sat.

Referenced by drawAll().

◆ drawRGBPalette()

void DIALOG_COLOR_PICKER::drawRGBPalette ( )
private

draws the RVB color space

repaint a static bitmap with the aColor4D color

Definition at line 386 of file dialog_color_picker.cpp.

387{
388 if( !m_bitmapRGB || m_bitmapRGB->GetSize() != m_RgbBitmap->GetSize() )
390
391 wxMemoryDC bitmapDC;
392 wxSize bmsize = m_bitmapRGB->GetSize();
393 int half_size = std::min( bmsize.x, bmsize.y )/2;
394 wxBitmap newBm( *m_bitmapRGB );
395 bitmapDC.SelectObject( newBm );
396
397 // Use Y axis from bottom to top and origin to center
398 bitmapDC.SetAxisOrientation( true, true );
399 #if wxCHECK_VERSION( 3, 1, 7 )
400 // For some reason, SetDeviceOrigin has changed in wxWidgets 3.1.6 or 3.1.7
401 bitmapDC.SetDeviceOrigin( half_size, -half_size );
402 #else
403 bitmapDC.SetDeviceOrigin( half_size, half_size );
404 #endif
405
406 // Reserve room to draw cursors inside the bitmap
407 half_size -= m_cursorsSize/2;
408
409 // Draw the 3 RGB cursors, using white color to make them always visible:
410 wxPen pen( wxColor( 255, 255, 255 ), 2 ); // use 2 pixels for pen size
411 wxBrush brush( wxColor( 0, 0, 0 ), wxBRUSHSTYLE_TRANSPARENT );
412 bitmapDC.SetPen( pen );
413 bitmapDC.SetBrush( brush );
414 int half_csize = m_cursorsSize / 2;
415
416 #define SLOPE_AXIS 50.0
417 double slope = SLOPE_AXIS / half_size;
418
419 // Red axis cursor (Z 3Daxis):
420 m_cursorBitmapRed.x = 0;
421 m_cursorBitmapRed.y = m_newColor4D.r * half_size;
422 bitmapDC.DrawRectangle( m_cursorBitmapRed.x - half_csize,
423 m_cursorBitmapRed.y - half_csize,
425
426 // Blue axis cursor (X 3Daxis):
427 m_cursorBitmapBlue.x = m_newColor4D.b * half_size;
429 bitmapDC.DrawRectangle( m_cursorBitmapBlue.x - half_csize,
430 m_cursorBitmapBlue.y - half_csize,
432
433 // Green axis cursor (Y 3Daxis):
434 m_cursorBitmapGreen.x = m_newColor4D.g * half_size;
437
438 bitmapDC.DrawRectangle( m_cursorBitmapGreen.x - half_csize,
439 m_cursorBitmapGreen.y - half_csize,
441
442 // Draw the 3 RGB axis:
443 half_size += half_size/5;
444 bitmapDC.DrawLine( 0, 0, 0, half_size ); // Red axis (Z 3D axis)
445 bitmapDC.DrawLine( 0, 0, half_size, - half_size*slope ); // Blue axis (X 3D axis)
446 bitmapDC.DrawLine( 0, 0, -half_size, - half_size*slope ); // green axis (Y 3D axis)
447
448 m_RgbBitmap->SetBitmap( newBm );
449
450 /* Deselect the Tool Bitmap from DC,
451 * in order to delete the MemoryDC safely without deleting the bitmap */
452 bitmapDC.SelectObject( wxNullBitmap );
453}
wxPoint m_cursorBitmapGreen
the green cursor on the RGB bitmap palette.
void createRGBBitmap()
generate the bitmap that shows the RVB color space
wxPoint m_cursorBitmapBlue
the blue cursor on the RGB bitmap palette.
wxPoint m_cursorBitmapRed
the red cursor on the RGB bitmap palette.

References KIGFX::COLOR4D::b, createRGBBitmap(), KIGFX::COLOR4D::g, m_bitmapRGB, m_cursorBitmapBlue, m_cursorBitmapGreen, m_cursorBitmapRed, m_cursorsSize, m_newColor4D, DIALOG_COLOR_PICKER_BASE::m_RgbBitmap, KIGFX::COLOR4D::r, and SLOPE_AXIS.

Referenced by drawAll().

◆ Enable()

bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 318 of file dialog_shim.cpp.

319{
320 // so we can do logging of this state change:
321 return wxDialog::Enable( enable );
322}

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 486 of file dialog_shim.cpp.

487{
488 // Hook up validator and transfer data from controls handling so quasi-modal dialogs
489 // handle validation in the same way as other dialogs.
490 if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
491 return;
492
493 SetReturnCode( retCode );
494
495 if( !IsQuasiModal() )
496 {
497 wxFAIL_MSG( wxT( "Either DIALOG_SHIM::EndQuasiModal was called twice, or ShowQuasiModal"
498 "wasn't called" ) );
499 return;
500 }
501
502 if( m_qmodal_loop )
503 {
504 if( m_qmodal_loop->IsRunning() )
505 m_qmodal_loop->Exit( 0 );
506 else
507 m_qmodal_loop->ScheduleExit( 0 );
508
509 m_qmodal_loop = nullptr;
510 }
511
513 m_qmodal_parent_disabler = nullptr;
514
515 Show( false );
516}
bool Show(bool show) override
bool IsQuasiModal() const
Definition: dialog_shim.h:106
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:218
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:215

References DIALOG_SHIM::IsQuasiModal(), DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, and DIALOG_SHIM::Show().

Referenced by EDA_3D_CONTROLLER::Main(), DIALOG_EXPORT_NETLIST::OnAddGenerator(), DIALOG_SHIM::OnButton(), DIALOG_EDIT_SYMBOLS_LIBID::onCancel(), DIALOG_LIB_SYMBOL_PROPERTIES::OnCancelButtonClick(), DIALOG_SYMBOL_PROPERTIES::OnCancelButtonClick(), DIALOG_LIB_EDIT_PIN_TABLE::OnClose(), DIALOG_CHOOSE_FOOTPRINT::OnCloseTimer(), DIALOG_SHIM::OnCloseWindow(), DIALOG_EXPORT_NETLIST::OnDelGenerator(), DIALOG_SYMBOL_PROPERTIES::OnEditLibrarySymbol(), DIALOG_SYMBOL_PROPERTIES::OnEditSymbol(), DIALOG_SYMBOL_PROPERTIES::OnExchangeSymbol(), PCB_ONE_LAYER_SELECTOR::OnLeftGridCellClick(), PCB_ONE_LAYER_SELECTOR::OnRightGridCellClick(), DIALOG_SYMBOL_PROPERTIES::OnUpdateSymbol(), DIALOG_CHOOSE_FOOTPRINT::OnUseBrowser(), DIALOG_PUSH_PAD_PROPERTIES::PadPropertiesAccept(), and DIALOG_SHIM::~DIALOG_SHIM().

◆ finishDialogSettings()

void DIALOG_SHIM::finishDialogSettings ( )
protectedinherited

In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls.

finishDialogSettings must be called from derived classes after all widgets have been initialized, and therefore their size fixed. If TransferDataToWindow() is used to initialize widgets, at the end of TransferDataToWindow, or better yet, at end of a wxInitDialogEvent handler.

Definition at line 157 of file dialog_shim.cpp.

158{
159 // must be called from the constructor of derived classes,
160 // when all widgets are initialized, and therefore their size fixed
161
162 // SetSizeHints fixes the minimal size of sizers in the dialog
163 // (SetSizeHints calls Fit(), so no need to call it)
164 GetSizer()->SetSizeHints( this );
165}

Referenced by CONVERT_SETTINGS_DIALOG::CONVERT_SETTINGS_DIALOG(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_ASSIGN_NETCLASS::DIALOG_ASSIGN_NETCLASS(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOM::DIALOG_BOM(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_CLEANUP_TRACKS_AND_VIAS::DIALOG_CLEANUP_TRACKS_AND_VIAS(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_DRC::DIALOG_DRC(), DIALOG_EDIT_SYMBOLS_LIBID::DIALOG_EDIT_SYMBOLS_LIBID(), DIALOG_ENUM_PADS::DIALOG_ENUM_PADS(), DIALOG_ERC::DIALOG_ERC(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_NETLIST::DIALOG_EXPORT_NETLIST(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_FOOTPRINT_CHECKER::DIALOG_FOOTPRINT_CHECKER(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_GENCAD_EXPORT_OPTIONS::DIALOG_GENCAD_EXPORT_OPTIONS(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS(), DIALOG_GLOBAL_LIB_TABLE_CONFIG::DIALOG_GLOBAL_LIB_TABLE_CONFIG(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IBIS_PARSER_REPORTER::DIALOG_IBIS_PARSER_REPORTER(), DIALOG_IMAGE_PROPERTIES::DIALOG_IMAGE_PROPERTIES(), DIALOG_IMPORT_NETLIST::DIALOG_IMPORT_NETLIST(), DIALOG_IMPORTED_LAYERS::DIALOG_IMPORTED_LAYERS(), DIALOG_INSPECTOR::DIALOG_INSPECTOR(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_NEW_SYMBOL::DIALOG_LIB_NEW_SYMBOL(), DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES(), DIALOG_LIB_TEXTBOX_PROPERTIES::DIALOG_LIB_TEXTBOX_PROPERTIES(), DIALOG_LINE_PROPERTIES::DIALOG_LINE_PROPERTIES(), DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS(), DIALOG_LOCKED_ITEMS_QUERY::DIALOG_LOCKED_ITEMS_QUERY(), DIALOG_MANAGE_REPOSITORIES::DIALOG_MANAGE_REPOSITORIES(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_NET_INSPECTOR::DIALOG_NET_INSPECTOR(), DIALOG_NON_COPPER_ZONES_EDITOR::DIALOG_NON_COPPER_ZONES_EDITOR(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::DIALOG_PAD_PRIMITIVE_POLY_PROPS(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PASTE_SPECIAL::DIALOG_PASTE_SPECIAL(), DIALOG_PCM::DIALOG_PCM(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_PNS_SETTINGS::DIALOG_PNS_SETTINGS(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_PRINT_GENERIC::DIALOG_PRINT_GENERIC(), DIALOG_PRINT_PCBNEW::DIALOG_PRINT_PCBNEW(), DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER(), DIALOG_PUSH_PAD_PROPERTIES::DIALOG_PUSH_PAD_PROPERTIES(), DIALOG_REGULATOR_FORM::DIALOG_REGULATOR_FORM(), DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SELECT_3DMODEL::DIALOG_SELECT_3DMODEL(), DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SIM_MODEL< T_symbol, T_field >::DIALOG_SIM_MODEL(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_UNUSED_PAD_LAYERS::DIALOG_UNUSED_PAD_LAYERS(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), DIALOG_UPDATE_SYMBOL_FIELDS::DIALOG_UPDATE_SYMBOL_FIELDS(), DIALOG_WIRE_BUS_PROPERTIES::DIALOG_WIRE_BUS_PROPERTIES(), PAGED_DIALOG::finishInitialization(), DIALOG_CONSTRAINTS_REPORTER::FinishInitialization(), DIALOG_FIELD_PROPERTIES::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_VIEW_DIALOG::NETLIST_VIEW_DIALOG(), DIALOG_SHEET_PROPERTIES::OnInitDlg(), DIALOG_SIM_COMMAND::onInitDlg(), DIALOG_SYMBOL_PROPERTIES::OnInitDlg(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), TEARDROP_DIALOG::TEARDROP_DIALOG(), DIALOG_SIGNAL_LIST::TransferDataToWindow(), TransferDataToWindow(), and DIALOG_BOARD_STATISTICS::TransferDataToWindow().

◆ GetColor()

KIGFX::COLOR4D DIALOG_COLOR_PICKER::GetColor ( )
inline

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( ) const
inlineinherited

Definition at line 46 of file kiway_holder.h.

46{ return m_type; }
HOLDER_TYPE m_type
Definition: kiway_holder.h:85

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUserUnits()

◆ HasKiway()

bool KIWAY_HOLDER::HasKiway ( ) const
inlineinherited

Safety check before asking for the Kiway reference.

Returns
true if kiway is non-null

Definition at line 63 of file kiway_holder.h.

64 {
65 return m_kiway != nullptr;
66 }
KIWAY * m_kiway
Definition: kiway_holder.h:84

References KIWAY_HOLDER::m_kiway.

Referenced by DIALOG_SHIM::~DIALOG_SHIM().

◆ horizPixelsFromDU()

int DIALOG_SHIM::horizPixelsFromDU ( int  x) const
protectedinherited

Convert an integer number of dialog units to pixels, horizontally.

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 175 of file dialog_shim.cpp.

176{
177 wxSize sz( x, 0 );
178 return ConvertDialogToPixels( sz ).x;
179}

Referenced by DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), and DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

◆ initDefinedColors()

void DIALOG_COLOR_PICKER::initDefinedColors ( CUSTOM_COLORS_LIST aPredefinedColors)
private

Create the bitmap buttons for each defined colors.

If aPredefinedColors is nullptr, a internal predefined list will be used.

Definition at line 151 of file dialog_color_picker.cpp.

152{
153 #define ID_COLOR_BLACK 2000 // colors_id = ID_COLOR_BLACK a ID_COLOR_BLACK + NBCOLORS-1
154
155 // Colors are built from the colorRefs() table (size NBCOLORS).
156 // The look is better when colorRefs() order is displayed in a grid matrix
157 // of 7 row and 5 columns, first filling a row, and after the next column.
158 // But the wxFlexGrid used here must be filled by columns, then next row
159 // the best interval colorRefs() from a matrix row to the next row is 6
160 // So when have to reorder the index used to explore colorRefs()
161 int grid_col = 0;
162 int grid_row = 0;
163 int table_row_count = 7;
164
165 wxSize swatchSize = ConvertDialogToPixels( SWATCH_SIZE_LARGE_DU );
166 wxSize checkerboardSize = ConvertDialogToPixels( CHECKERBOARD_SIZE_DU );
167 COLOR4D checkboardBackground = m_OldColorRect->GetParent()->GetBackgroundColour();
168
169 auto addSwatch =
170 [&]( int aId, COLOR4D aColor, const wxString& aColorName )
171 {
172 wxBitmap bm = COLOR_SWATCH::MakeBitmap( aColor, COLOR4D::WHITE, swatchSize,
173 checkerboardSize, checkboardBackground );
174 wxStaticBitmap* swatch = new wxStaticBitmap( m_panelDefinedColors, aId, bm );
175
176 m_fgridColor->Add( swatch, 0, wxALIGN_CENTER_VERTICAL, 5 );
177
178 wxStaticText* label = new wxStaticText( m_panelDefinedColors, wxID_ANY, aColorName,
179 wxDefaultPosition, wxDefaultSize, 0 );
180 m_fgridColor->Add( label, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 15 );
181
182 m_colorSwatches.push_back( swatch );
183
184 swatch->Connect( wxEVT_LEFT_DOWN,
185 wxMouseEventHandler( DIALOG_COLOR_PICKER::buttColorClick ),
186 nullptr, this );
187 swatch->Connect( wxEVT_LEFT_DCLICK,
188 wxMouseEventHandler( DIALOG_COLOR_PICKER::colorDClick ),
189 nullptr, this );
190 };
191
192 // If no predefined list is given, build the default predefined colors:
193 if( aPredefinedColors )
194 {
195 for( unsigned jj = 0; jj < aPredefinedColors->size() && jj < NBCOLORS; ++jj )
196 {
197 CUSTOM_COLOR_ITEM* item = & *aPredefinedColors->begin() + jj;
198 int butt_ID = ID_COLOR_BLACK + jj;
199
200 addSwatch( butt_ID, item->m_Color, item->m_ColorName );
201 m_Color4DList.push_back( item->m_Color );
202 }
203 }
204 else
205 {
206 m_Color4DList.assign( NBCOLORS, COLOR4D( 0.0, 0.0, 0.0, 1.0 ) );
207
208 for( int jj = 0; jj < NBCOLORS; ++jj, grid_col++ )
209 {
210 if( grid_col * table_row_count >= NBCOLORS )
211 {
212 // the current grid row is filled, and we must fill the next grid row
213 grid_col = 0;
214 grid_row++;
215 }
216
217 int ii = grid_row + ( grid_col * table_row_count ); // The index in colorRefs()
218 int butt_ID = ID_COLOR_BLACK + ii;
219 COLOR4D buttcolor = COLOR4D( colorRefs()[ii].m_Numcolor );
220
221 addSwatch( butt_ID, buttcolor, wxGetTranslation( colorRefs()[ii].m_ColorName ) );
222 m_Color4DList[ butt_ID - ID_COLOR_BLACK ] = buttcolor;
223 }
224 }
225}
static wxBitmap MakeBitmap(const KIGFX::COLOR4D &aColor, const KIGFX::COLOR4D &aBackground, const wxSize &aSize, const wxSize &aCheckerboardSize, const KIGFX::COLOR4D &aCheckerboardBackground)
void colorDClick(wxMouseEvent &event)
called when creating the dialog
const StructColors * colorRefs()
Global list of legacy color names, still used all over the place for constructing COLOR4D's.
Definition: color4d.cpp:39
@ WHITE
Definition: color4d.h:48
@ NBCOLORS
Number of colors.
Definition: color4d.h:79
static const wxSize SWATCH_SIZE_LARGE_DU(24, 16)
static const wxSize CHECKERBOARD_SIZE_DU(3, 3)
A class to handle a custom color (predefined color) for the color picker dialog.
KIGFX::COLOR4D m_Color

References buttColorClick(), CHECKERBOARD_SIZE_DU(), colorDClick(), colorRefs(), ID_COLOR_BLACK, CUSTOM_COLOR_ITEM::m_Color, m_Color4DList, CUSTOM_COLOR_ITEM::m_ColorName, m_colorSwatches, DIALOG_COLOR_PICKER_BASE::m_fgridColor, DIALOG_COLOR_PICKER_BASE::m_OldColorRect, DIALOG_COLOR_PICKER_BASE::m_panelDefinedColors, COLOR_SWATCH::MakeBitmap(), NBCOLORS, SWATCH_SIZE_LARGE_DU(), and WHITE.

Referenced by DIALOG_COLOR_PICKER().

◆ IsCtrl()

static bool DIALOG_SHIM::IsCtrl ( int  aChar,
const wxKeyEvent &  e 
)
inlinestaticinherited

Definition at line 128 of file dialog_shim.h.

129 {
130 return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
131 !e.ShiftDown() && !e.MetaDown();
132 }

◆ IsQuasiModal()

◆ IsShiftCtrl()

static bool DIALOG_SHIM::IsShiftCtrl ( int  aChar,
const wxKeyEvent &  e 
)
inlinestaticinherited

Definition at line 134 of file dialog_shim.h.

135 {
136 return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
137 e.ShiftDown() && !e.MetaDown();
138 }

◆ Kiway()

KIWAY & KIWAY_HOLDER::Kiway ( ) const
inlineinherited

Return a reference to the KIWAY that this object has an opportunity to participate in.

A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER.

Definition at line 53 of file kiway_holder.h.

54 {
55 wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine.
56 return *m_kiway;
57 }

References KIWAY_HOLDER::m_kiway.

Referenced by PROJECT_TREE_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_EDIT_FRAME::AddLibraryFile(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), SCH_EDIT_FRAME::AskToSaveChanges(), IMPORT_PROJ_HELPER::AssociateFileWithProj(), CVPCB_MAINFRAME::BuildLibrariesListBox(), FOOTPRINT_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::CanCloseSymbolFromSchematic(), SCH_EDIT_FRAME::canCloseWindow(), PCB_EDIT_FRAME::canCloseWindow(), KICAD_MANAGER_FRAME::CloseProject(), COMMON_CONTROL::ConfigurePaths(), DIALOG_CHOOSE_SYMBOL::ConstructRightPanel(), DIALOG_CHOOSE_FOOTPRINT::ConstructRightPanel(), PCB_BASE_FRAME::CreateAndShow3D_Frame(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), SYMBOL_EDIT_FRAME::DdAddLibrary(), DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SHIM::DIALOG_SHIM(), SCH_EDIT_FRAME::doCloseWindow(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), FIELDS_GRID_TRICKS::doPopupSelection(), BOARD_EDITOR_CONTROL::EditFpInFpEditor(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), BACK_ANNOTATE::FetchNetlistFromPCB(), PCB_EDIT_FRAME::FetchNetlistFromSchematic(), SCRIPTING_TOOL::Init(), EDA_DRAW_FRAME::IsScriptingConsoleVisible(), KIWAY_PLAYER::language_change(), KICAD_MANAGER_FRAME::language_change(), DIALOG_CHANGE_SYMBOLS::launchMatchIdSymbolBrowser(), DIALOG_CHANGE_SYMBOLS::launchNewIdSymbolBrowser(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), PGM_SINGLE_TOP::MacOpenFile(), SIM_PLOT_FRAME::menuExit(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), PL_EDITOR_FRAME::OnExit(), SCH_EDIT_FRAME::OnExit(), FOOTPRINT_EDIT_FRAME::OnExitKiCad(), SYMBOL_EDIT_FRAME::OnExitKiCad(), FOOTPRINT_VIEWER_FRAME::OnExitKiCad(), SAVE_AS_TRAVERSER::OnFile(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), KIGFX::WX_VIEW_CONTROLS::onMotion(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), SIM_PLOT_FRAME::onProbe(), PCB_EDIT_FRAME::OnQuit(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_FIELD_PROPERTIES::OnTextValueSelectButtonClick(), SIM_PLOT_FRAME::onTune(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadFootprintFromBoard(), SCH_EDIT_FRAME::OnUpdatePCB(), FOOTPRINT_EDIT_FRAME::OnUpdateSaveFootprintToBoard(), SCH_BASE_FRAME::PickSymbolFromLibBrowser(), KIWAY_HOLDER::Prj(), SCH_EDIT_TOOL::Properties(), BACK_ANNOTATE::PushNewLinksToPCB(), FOOTPRINT_WIZARD_FRAME::PythonPluginsReload(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), SCH_EDITOR_CONTROL::rescueProject(), PCB_EDIT_FRAME::RunEeschema(), EE_INSPECTION_TOOL::RunSimulation(), SYMBOL_EDIT_FRAME::Save(), SYMBOL_EDIT_FRAME::saveCurrentSymbol(), CVPCB_MAINFRAME::SaveFootprintAssociation(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), EDA_DRAW_FRAME::ScriptingConsoleEnableDisable(), PCB_BASE_FRAME::SelectFootprintFromLibBrowser(), PCB_BASE_FRAME::SelectLibrary(), CVPCB_MAINFRAME::SendComponentSelectionToSch(), SCH_EDIT_FRAME::SendCrossProbeClearHighlight(), PCB_EDIT_FRAME::SendCrossProbeItem(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), SCH_EDIT_FRAME::sendNetlistToCvpcb(), SCH_EDIT_FRAME::SendSelectItemsToPcb(), PCB_EDIT_FRAME::SendSelectItemsToSch(), SCH_EDIT_FRAME::SetCrossProbeConnection(), SYMBOL_EDIT_FRAME::SetCurSymbol(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), PCB_EDIT_FRAME::ShowFootprintPropertiesDialog(), CVPCB_CONTROL::ShowFootprintViewer(), COMMON_CONTROL::ShowLibraryTable(), COMMON_CONTROL::ShowPlayer(), KICAD_MANAGER_CONTROL::ShowPlayer(), EDA_BASE_FRAME::ShowPreferences(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), PCB_EDIT_FRAME::TestStandalone(), BOARD_EDITOR_CONTROL::UpdateSchematicFromPCB(), DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint(), and DIALOG_SHIM::~DIALOG_SHIM().

◆ normalizeToInt()

int DIALOG_COLOR_PICKER::normalizeToInt ( double  aValue,
int  aValMax = 255 
)
inlineprivate

Definition at line 195 of file dialog_color_picker.h.

196 {
197 return ( aValue * aValMax ) + 0.5;
198 }

Referenced by SetEditVals().

◆ OnButton()

void DIALOG_SHIM::OnButton ( wxCommandEvent &  aEvent)
privateinherited

Properly handle the default button events when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM.

Definition at line 532 of file dialog_shim.cpp.

533{
534 const int id = aEvent.GetId();
535
536 // If we are pressing a button to exit, we need to enable the escapeID
537 // otherwise the dialog does not process cancel
538 if( id == wxID_CANCEL )
539 SetEscapeId( wxID_ANY );
540
541 if( IsQuasiModal() )
542 {
543 if( id == GetAffirmativeId() )
544 {
545 EndQuasiModal( id );
546 }
547 else if( id == wxID_APPLY )
548 {
549 // Dialogs that provide Apply buttons should make sure data is valid before
550 // allowing a transfer, as there is no other way to indicate failure
551 // (i.e. the dialog can't refuse to close as it might with OK, because it
552 // isn't closing anyway)
553 if( Validate() )
554 {
555 ignore_unused( TransferDataFromWindow() );
556 }
557 }
558 else if( id == GetEscapeId() || (id == wxID_CANCEL && GetEscapeId() == wxID_ANY) )
559 {
560 EndQuasiModal( wxID_CANCEL );
561 }
562 else // not a standard button
563 {
564 aEvent.Skip();
565 }
566
567 return;
568 }
569
570 // This is mandatory to allow wxDialogBase::OnButton() to be called.
571 aEvent.Skip();
572}
void EndQuasiModal(int retCode)
void ignore_unused(const T &)
Definition: ignore.h:24

References DIALOG_SHIM::EndQuasiModal(), ignore_unused(), and DIALOG_SHIM::IsQuasiModal().

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ OnChangeAlpha()

void DIALOG_COLOR_PICKER::OnChangeAlpha ( wxScrollEvent &  event)
overrideprivatevirtual

Event handlers from wxSpinControl.

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 753 of file dialog_color_picker.cpp.

754{
755 double alpha = (double)event.GetPosition() / ALPHA_MAX;
756 m_newColor4D.a = alpha;
757 m_NewColorRect->Freeze(); // Avoid flicker
759 m_NewColorRect->Thaw();
760 m_NewColorRect->Refresh();
761 SetEditVals( ALPHA_CHANGED, false );
762}
#define ALPHA_MAX
@ ALPHA_CHANGED

References KIGFX::COLOR4D::a, ALPHA_CHANGED, ALPHA_MAX, m_newColor4D, DIALOG_COLOR_PICKER_BASE::m_NewColorRect, SetEditVals(), and updatePreview().

◆ OnChangeBrightness()

void DIALOG_COLOR_PICKER::OnChangeBrightness ( wxScrollEvent &  event)
overrideprivatevirtual

Event handler from wxSlider: alpha (transparency) control.

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 819 of file dialog_color_picker.cpp.

820{
821 m_val = (double)event.GetPosition() / 255.0;
822
824
825 SetEditVals( VAL_CHANGED, true );
826
827 drawAll();
828}
void FromHSV(double aInH, double aInS, double aInV)
Changes currently used color to the one given by hue, saturation and value parameters.
Definition: color4d.cpp:441
@ VAL_CHANGED

References drawAll(), KIGFX::COLOR4D::FromHSV(), m_hue, m_newColor4D, m_sat, m_val, SetEditVals(), and VAL_CHANGED.

◆ OnChangeEditBlue()

void DIALOG_COLOR_PICKER::OnChangeEditBlue ( wxSpinEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 785 of file dialog_color_picker.cpp.

786{
787 double val = (double)event.GetPosition() / 255.0;
788 m_newColor4D.b = val;
789 SetEditVals( BLUE_CHANGED, true );
790
791 drawAll();
792}
@ BLUE_CHANGED

References KIGFX::COLOR4D::b, BLUE_CHANGED, drawAll(), m_newColor4D, and SetEditVals().

◆ OnChangeEditGreen()

void DIALOG_COLOR_PICKER::OnChangeEditGreen ( wxSpinEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 775 of file dialog_color_picker.cpp.

776{
777 double val = (double)event.GetPosition() / 255.0;
778 m_newColor4D.g = val;
779 SetEditVals( GREEN_CHANGED, true );
780
781 drawAll();
782}
@ GREEN_CHANGED

References drawAll(), KIGFX::COLOR4D::g, GREEN_CHANGED, m_newColor4D, and SetEditVals().

◆ OnChangeEditHue()

void DIALOG_COLOR_PICKER::OnChangeEditHue ( wxSpinEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 795 of file dialog_color_picker.cpp.

796{
797 m_hue = (double)event.GetPosition();
798
800
801 SetEditVals( HUE_CHANGED, true );
802
803 drawAll();
804}
@ HUE_CHANGED

References drawAll(), KIGFX::COLOR4D::FromHSV(), HUE_CHANGED, m_hue, m_newColor4D, m_sat, m_val, and SetEditVals().

◆ OnChangeEditRed()

void DIALOG_COLOR_PICKER::OnChangeEditRed ( wxSpinEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 765 of file dialog_color_picker.cpp.

766{
767 double val = (double)event.GetPosition() / 255.0;
768 m_newColor4D.r = val;
769 SetEditVals( RED_CHANGED, true );
770
771 drawAll();
772}
@ RED_CHANGED

References drawAll(), m_newColor4D, KIGFX::COLOR4D::r, RED_CHANGED, and SetEditVals().

◆ OnChangeEditSat()

void DIALOG_COLOR_PICKER::OnChangeEditSat ( wxSpinEvent &  event)
overrideprivatevirtual

mouse handlers, when clicking on a palette bitmap

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 807 of file dialog_color_picker.cpp.

808{
809 m_sat = (double)event.GetPosition() / 255.0;
810
812
813 SetEditVals( SAT_CHANGED, true );
814
815 drawAll();
816}
@ SAT_CHANGED

References drawAll(), KIGFX::COLOR4D::FromHSV(), m_hue, m_newColor4D, m_sat, m_val, SAT_CHANGED, and SetEditVals().

◆ OnCharHook()

void DIALOG_SHIM::OnCharHook ( wxKeyEvent &  aEvt)
protectedvirtualinherited

Reimplemented in HK_PROMPT_DIALOG, DIALOG_CHOOSE_SYMBOL, and HTML_MESSAGE_BOX.

Definition at line 575 of file dialog_shim.cpp.

576{
577 if( aEvt.GetKeyCode() == 'U' && aEvt.GetModifiers() == wxMOD_CONTROL )
578 {
579 if( m_parentFrame )
580 {
582 return;
583 }
584 }
585 // shift-return (Mac default) or Ctrl-Return (GTK) for OK
586 else if( aEvt.GetKeyCode() == WXK_RETURN && ( aEvt.ShiftDown() || aEvt.ControlDown() ) )
587 {
588 wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
589 return;
590 }
591 else if( aEvt.GetKeyCode() == WXK_TAB && !aEvt.ControlDown() )
592 {
593 wxWindow* currentWindow = wxWindow::FindFocus();
594 int currentIdx = -1;
595 int delta = aEvt.ShiftDown() ? -1 : 1;
596
597 auto advance =
598 [&]( int& idx )
599 {
600 // Wrap-around modulus
601 int size = (int) m_tabOrder.size();
602 idx = ( ( idx + delta ) % size + size ) % size;
603 };
604
605 for( size_t i = 0; i < m_tabOrder.size(); ++i )
606 {
607 if( m_tabOrder[i] == currentWindow )
608 {
609 currentIdx = (int) i;
610 break;
611 }
612 }
613
614 if( currentIdx >= 0 )
615 {
616 advance( currentIdx );
617
618 //todo: We don't currently have non-textentry dialog boxes but this will break if
619 // we add them.
620#ifdef __APPLE__
621 while( dynamic_cast<wxTextEntry*>( m_tabOrder[ currentIdx ] ) == nullptr )
622 advance( currentIdx );
623#endif
624
625 m_tabOrder[ currentIdx ]->SetFocus();
626 return;
627 }
628 }
629
630 aEvt.Skip();
631}
std::vector< wxWindow * > m_tabOrder
Definition: dialog_shim.h:222
EDA_BASE_FRAME * m_parentFrame
Definition: dialog_shim.h:220
virtual void ToggleUserUnits()
constexpr int delta

References delta, DIALOG_SHIM::m_parentFrame, DIALOG_SHIM::m_tabOrder, and EDA_BASE_FRAME::ToggleUserUnits().

Referenced by DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES(), and DIALOG_TEXTBOX_PROPERTIES::~DIALOG_TEXTBOX_PROPERTIES().

◆ OnCloseWindow()

void DIALOG_SHIM::OnCloseWindow ( wxCloseEvent &  aEvent)
privateinherited

Properly handle the wxCloseEvent when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM.

Definition at line 519 of file dialog_shim.cpp.

520{
521 if( IsQuasiModal() )
522 {
523 EndQuasiModal( wxID_CANCEL );
524 return;
525 }
526
527 // This is mandatory to allow wxDialogBase::OnCloseWindow() to be called.
528 aEvent.Skip();
529}

References DIALOG_SHIM::EndQuasiModal(), and DIALOG_SHIM::IsQuasiModal().

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ OnColorValueText()

void DIALOG_COLOR_PICKER::OnColorValueText ( wxCommandEvent &  event)
overrideprivatevirtual

Event handler for the reset button press.

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 702 of file dialog_color_picker.cpp.

703{
704 m_newColor4D.SetFromHexString( m_colorValue->GetValue() );
706
707 SetEditVals( HEX_CHANGED, true );
708 drawAll();
709}
@ HEX_CHANGED

References drawAll(), HEX_CHANGED, DIALOG_COLOR_PICKER_BASE::m_colorValue, m_hue, m_newColor4D, m_sat, m_val, SetEditVals(), and KIGFX::COLOR4D::ToHSV().

◆ OnGridEditorHidden()

void DIALOG_SHIM::OnGridEditorHidden ( wxGridEvent &  event)
privateinherited

Definition at line 641 of file dialog_shim.cpp.

642{
643 SetEscapeId( wxID_ANY );
644 event.Skip();
645}

◆ OnGridEditorShown()

void DIALOG_SHIM::OnGridEditorShown ( wxGridEvent &  event)
privateinherited

Definition at line 634 of file dialog_shim.cpp.

635{
636 SetEscapeId( wxID_NONE );
637 event.Skip();
638}

◆ onHSVMouseClick()

void DIALOG_COLOR_PICKER::onHSVMouseClick ( wxMouseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 683 of file dialog_color_picker.cpp.

684{
685 m_allowMouseEvents = true;
686
687 if( setHSvaluesFromCursor( event.GetPosition() ) )
688 drawAll();
689}
bool setHSvaluesFromCursor(const wxPoint &aMouseCursor)
Manage the Hue and Saturation settings when the mouse cursor is at aMouseCursor.

References drawAll(), m_allowMouseEvents, and setHSvaluesFromCursor().

◆ onHSVMouseDrag()

void DIALOG_COLOR_PICKER::onHSVMouseDrag ( wxMouseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 692 of file dialog_color_picker.cpp.

693{
694 if( !event.Dragging() || !m_allowMouseEvents )
695 return;
696
697 if( setHSvaluesFromCursor( event.GetPosition() ) )
698 drawAll();
699}

References drawAll(), m_allowMouseEvents, and setHSvaluesFromCursor().

◆ OnModify()

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 386 of file dialog_shim.cpp.

387{
389 {
391
392 selectAllInTextCtrls( GetChildren() );
393
396 else
397 KIPLATFORM::UI::ForceFocus( this ); // Focus the dialog itself
398
399 m_firstPaintEvent = false;
400 }
401
402 event.Skip();
403}
bool m_firstPaintEvent
Definition: dialog_shim.h:212
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:213
static void selectAllInTextCtrls(wxWindowList &children)
void FixupCancelButtonCmdKeyCollision(wxWindow *aWindow)
Definition: gtk/ui.cpp:71
void ForceFocus(wxWindow *aWindow)
Pass the current focus to the window.
Definition: gtk/ui.cpp:44

References KIPLATFORM::UI::FixupCancelButtonCmdKeyCollision(), KIPLATFORM::UI::ForceFocus(), DIALOG_SHIM::m_firstPaintEvent, DIALOG_SHIM::m_initialFocusTarget, and selectAllInTextCtrls().

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ OnResetButton()

void DIALOG_COLOR_PICKER::OnResetButton ( wxCommandEvent &  aEvent)
overrideprivatevirtual

◆ onRGBMouseClick()

void DIALOG_COLOR_PICKER::onRGBMouseClick ( wxMouseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 583 of file dialog_color_picker.cpp.

584{
585 m_allowMouseEvents = true;
586 wxPoint mousePos = event.GetPosition();
587
588 // The cursor position is relative to the m_bitmapHSV wxBitmap center
589 wxSize bmsize = m_bitmapRGB->GetSize();
590 int half_size = std::min( bmsize.x, bmsize.y ) / 2;
591 mousePos.x -= half_size;
592 mousePos.y -= half_size;
593 mousePos.y = -mousePos.y; // Use the bottom to top vertical axis
594
595 wxPoint dist = m_cursorBitmapRed - mousePos;
596
597 if( std::abs( dist.x ) <= m_cursorsSize/2 && std::abs( dist.y ) <= m_cursorsSize/2 )
598 {
600 return;
601 }
602
603 dist = m_cursorBitmapGreen - mousePos;
604
605 if( std::abs( dist.x ) <= m_cursorsSize/2 && std::abs( dist.y ) <= m_cursorsSize/2 )
606 {
608 return;
609 }
610
611 dist = m_cursorBitmapBlue - mousePos;
612
613 if( std::abs( dist.x ) <= m_cursorsSize/2 && std::abs( dist.y ) <= m_cursorsSize/2 )
614 {
616 return;
617 }
618
619 m_selectedCursor = nullptr;
620}

References std::abs(), m_allowMouseEvents, m_bitmapRGB, m_cursorBitmapBlue, m_cursorBitmapGreen, m_cursorBitmapRed, m_cursorsSize, and m_selectedCursor.

◆ onRGBMouseDrag()

void DIALOG_COLOR_PICKER::onRGBMouseDrag ( wxMouseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 623 of file dialog_color_picker.cpp.

624{
625 if( !event.Dragging() || !m_allowMouseEvents )
626 {
627 m_selectedCursor = nullptr;
628 return;
629 }
630
634 {
635 return;
636 }
637
638 // Adjust the HSV cursor position to follow the mouse cursor
639 // The cursor position is relative to the m_bitmapHSV wxBitmap center
640 wxPoint mousePos = event.GetPosition();
641 wxSize bmsize = m_bitmapRGB->GetSize();
642 int half_size = std::min( bmsize.x, bmsize.y ) / 2;
643 mousePos.x -= half_size;
644 mousePos.y -= half_size;
645 mousePos.y = -mousePos.y; // Use the bottom to top vertical axis
646
647 half_size -= m_cursorsSize / 2; // the actual half_size of the palette area
648
649 // Change colors according to the selected cursor:
651 {
652 if( mousePos.y >= 0 && mousePos.y <= half_size )
653 m_newColor4D.r = (double)mousePos.y / half_size;
654 else
655 return;
656 }
657
659 {
660 mousePos.x = -mousePos.x;
661
662 if( mousePos.x >= 0 && mousePos.x <= half_size )
663 m_newColor4D.g = (double)mousePos.x / half_size;
664 else
665 return;
666 }
667
669 {
670 if( mousePos.x >= 0 && mousePos.x <= half_size )
671 m_newColor4D.b = (double)mousePos.x / half_size;
672 else
673 return;
674 }
675
677 SetEditVals( ALL_CHANGED, true );
678
679 drawAll();
680}

References ALL_CHANGED, KIGFX::COLOR4D::b, drawAll(), KIGFX::COLOR4D::g, m_allowMouseEvents, m_bitmapRGB, m_cursorBitmapBlue, m_cursorBitmapGreen, m_cursorBitmapRed, m_cursorsSize, m_hue, m_newColor4D, m_sat, m_selectedCursor, m_val, KIGFX::COLOR4D::r, SetEditVals(), and KIGFX::COLOR4D::ToHSV().

◆ Prj()

PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Return a reference to the PROJECT associated with this KIWAY.

Definition at line 36 of file kiway_holder.cpp.

37{
38 return Kiway().Prj();
39}
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
Definition: kiway.cpp:192

References KIWAY_HOLDER::Kiway(), and KIWAY::Prj().

Referenced by SYMBOL_TREE_MODEL_ADAPTER::AddLibraries(), FP_TREE_MODEL_ADAPTER::AddLibraries(), SYMBOL_LIBRARY_MANAGER::addLibrary(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_EDIT_FRAME::addLibTableEntry(), SCH_EDIT_FRAME::AppendSchematic(), AskSaveBoardFileName(), DIALOG_SYMBOL_REMAP::backupProject(), CVPCB_MAINFRAME::buildEquivalenceList(), CVPCB_MAINFRAME::BuildLibrariesListBox(), FOOTPRINT_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::buildSaveAsDialog(), PCB_BASE_FRAME::canCloseWindow(), SIM_PLOT_FRAME::canCloseWindow(), PANEL_FP_PROPERTIES_3D_MODEL::Cfg3DPath(), SYMBOL_VIEWER_FRAME::ClickOnLibList(), KICAD_MANAGER_FRAME::CloseProject(), PCB_BASE_EDIT_FRAME::createNewLibrary(), PCB_BASE_EDIT_FRAME::CreateNewProjectLibrary(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), SCH_EDIT_FRAME::CreateScreens(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_ASSIGN_NETCLASS::DIALOG_ASSIGN_NETCLASS(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOARD_STATISTICS::DIALOG_BOARD_STATISTICS(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_GEN_FOOTPRINT_POSITION::DIALOG_GEN_FOOTPRINT_POSITION(), DIALOG_IBIS_PARSER_REPORTER::DIALOG_IBIS_PARSER_REPORTER(), DIALOG_IMPORT_NETLIST::DIALOG_IMPORT_NETLIST(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_SYMBOL_REMAP::DIALOG_SYMBOL_REMAP(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), FOOTPRINT_PREVIEW_PANEL::DisplayFootprint(), SYMBOL_VIEWER_FRAME::DisplayLibInfos(), CVPCB_MAINFRAME::DisplayStatus(), SCH_EDIT_FRAME::doAutoSave(), PCB_EDIT_FRAME::doAutoSave(), SCH_EDIT_FRAME::doCloseWindow(), FOOTPRINT_EDIT_FRAME::doCloseWindow(), PCB_BASE_EDIT_FRAME::doCloseWindow(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), FIELDS_GRID_TRICKS::doPopupSelection(), FOOTPRINT_EDIT_FRAME::DuplicateFootprint(), KICAD_MANAGER_CONTROL::Execute(), PCB_EDIT_FRAME::Export_IDF3(), PCB_EDIT_FRAME::ExportFootprintsToLibrary(), BOARD_EDITOR_CONTROL::ExportNetlist(), SYMBOL_EDITOR_CONTROL::ExportSymbolAsSVG(), SCH_EDITOR_CONTROL::ExportSymbolsToLibrary(), SYMBOL_EDITOR_CONTROL::ExportView(), PCB_EDIT_FRAME::ExportVRML_File(), BACK_ANNOTATE::FetchNetlistFromPCB(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), SYMBOL_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), SIM_PLOT_FRAME::getDefaultFilename(), SIM_PLOT_FRAME::getDefaultPath(), PCB_BASE_EDIT_FRAME::GetDesignRulesPath(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), PCB_EDIT_FRAME::GetLastPath(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), SCH_BASE_FRAME::GetLibSymbol(), DIALOG_PLOT_SCHEMATIC::getOutputPath(), KICAD_MANAGER_FRAME::GetProjectFileName(), SCH_EDIT_FRAME::GetSchematicJunctionSize(), SYMBOL_VIEWER_FRAME::GetSelectedSymbol(), SCH_NAVIGATE_TOOL::HypertextCommand(), SCH_EDIT_FRAME::importFile(), SCH_EDITOR_CONTROL::ImportFPAssignments(), DIALOG_CONFIG_EQUFILES::Init(), FIELDS_GRID_TABLE< T >::initGrid(), FOOTPRINT_EDIT_FRAME::initLibraryTree(), SYMBOL_EDIT_FRAME::KiwayMailIn(), FOOTPRINT_EDIT_FRAME::KiwayMailIn(), EDA_DRAW_FRAME::LibraryFileBrowser(), SYMBOL_VIEWER_FRAME::loadAllLibraries(), PCB_BASE_FRAME::loadFootprint(), CVPCB_MAINFRAME::LoadFootprintFiles(), PCB_EDIT_FRAME::LoadFootprints(), SCH_EDIT_FRAME::LoadProject(), KICAD_MANAGER_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProjectSettings(), PCB_EDIT_FRAME::LoadProjectSettings(), SIM_PLOT_FRAME::LoadSettings(), SCH_EDIT_FRAME::LoadSheetFromFile(), SYMBOL_EDIT_FRAME::LoadSymbol(), SYMBOL_EDIT_FRAME::LoadSymbolFromCurrentLib(), EDA_BASE_FRAME::LoadWindowState(), SIM_PLOT_FRAME::loadWorkbook(), SIM_PLOT_FRAME::menuSaveWorkbook(), SIM_PLOT_FRAME::menuSaveWorkbookAs(), PANEL_FP_PROPERTIES_3D_MODEL::On3DModelCellChanged(), FOOTPRINT_VIEWER_FRAME::OnActivate(), PANEL_FP_PROPERTIES_3D_MODEL::OnAdd3DModel(), DIALOG_BOARD_SETUP::onAuxiliaryAction(), PCB_EDIT_FRAME::onBoardLoaded(), KICAD_MANAGER_FRAME::OnBrowseInFileExplorer(), DIALOG_IMPORT_NETLIST::onBrowseNetlistFiles(), WX_HTML_REPORT_PANEL::onBtnSaveToFile(), TEXT_BUTTON_URL::OnButtonClick(), TEXT_BUTTON_FILE_BROWSER::OnButtonClick(), DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton(), DIALOG_SYMBOL_FIELDS_TABLE::OnExport(), DIALOG_GENDRILL::OnGenReportFile(), KICAD_MANAGER_FRAME::OnIdle(), SCH_EDIT_FRAME::OnImportProject(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), DIALOG_CONFIG_EQUFILES::OnOkClick(), SCH_EDIT_FRAME::OnOpenCvpcb(), KICAD_MANAGER_FRAME::OnOpenFileInTextEditor(), SCH_EDIT_FRAME::OnOpenPcbnew(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_SCHEMATIC_SETUP::onPageChanged(), DIALOG_BOARD_SETUP::onPageChanged(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng(), DIALOG_ERC::OnSaveReport(), DIALOG_DRC::OnSaveReport(), DIALOG_SCH_FIELD_PROPERTIES::onScintillaCharAdded(), DIALOG_TEXT_PROPERTIES::onScintillaCharAdded(), PROPERTIES_FRAME::onScintillaCharAdded(), SYMBOL_VIEWER_FRAME::OnSelectSymbol(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), SCH_EDIT_FRAME::OnUpdatePCB(), DIALOG_PAGES_SETTINGS::OnWksFileSelection(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL(), PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL(), SCH_EDITOR_CONTROL::Paste(), FOOTPRINT_EDITOR_CONTROL::PasteFootprint(), SCH_BASE_FRAME::PickSymbolFromLibTree(), SYMBOL_EDITOR_CONTROL::PinLibrary(), FOOTPRINT_EDITOR_CONTROL::PinLibrary(), LIB_TREE_MODEL_ADAPTER::PinLibrary(), DIALOG_CHOOSE_SYMBOL::PopulateFootprintSelector(), SCH_EDITOR_CONTROL::Print(), EDA_DRAW_FRAME::PrintDrawingSheet(), SCH_EDIT_FRAME::PrintPage(), KICAD_MANAGER_FRAME::PrintPrjInfo(), CVPCB_MAINFRAME::readNetListAndFpFiles(), APPEARANCE_CONTROLS::rebuildNets(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), SYMBOL_VIEWER_FRAME::ReCreateSymbolList(), PANEL_FP_PROPERTIES_3D_MODEL::ReloadModelsFromFootprint(), EDA_3D_VIEWER_FRAME::ReloadRequest(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), FOOTPRINT_EDITOR_CONTROL::RenameFootprint(), SYMBOL_EDIT_FRAME::replaceLibTableEntry(), SCH_EDITOR_CONTROL::RescueLegacyProject(), SCH_EDITOR_CONTROL::RescueSymbolLibTableProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), PCB_EDIT_FRAME::RunEeschema(), FOOTPRINT_EDITOR_CONTROL::SaveAs(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), SYMBOL_EDIT_FRAME::saveLibrary(), PCB_EDIT_FRAME::SavePcbFile(), SCH_EDIT_FRAME::SaveProject(), SCH_EDIT_FRAME::SaveProjectSettings(), PCB_EDIT_FRAME::SaveProjectSettings(), DIALOG_BOARD_STATISTICS::saveReportClicked(), SCH_EDIT_FRAME::saveSchematicFile(), EDA_BASE_FRAME::SaveSettings(), SIM_PLOT_FRAME::SaveSettings(), SCH_BASE_FRAME::saveSymbolLibTables(), SIM_PLOT_FRAME::saveWorkbook(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), PCB_BASE_FRAME::SelectFootprintFromLibTree(), PCB_BASE_FRAME::SelectLibrary(), SCH_BASE_FRAME::SelectLibraryFromList(), PCB_BASE_EDIT_FRAME::selectLibTable(), SCH_BASE_FRAME::SelectSymLibTable(), PCB_EDIT_FRAME::SetBoard(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), SYMBOL_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), SYMBOL_EDIT_FRAME::SetCurSymbol(), PCB_EDIT_FRAME::SetLastPath(), GERBVIEW_FRAME::SetPageSettings(), EE_INSPECTION_TOOL::ShowDatasheet(), DIALOG_CHOOSE_SYMBOL::ShowFootprintFor(), COMMON_CONTROL::ShowHelp(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SYMBOL_VIEWER_FRAME::ShowModal(), APPEARANCE_CONTROLS::showNetclass(), SYMBOL_LIBRARY_MANAGER::symTable(), FP_TREE_SYNCHRONIZING_ADAPTER::Sync(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync(), FOOTPRINT_EDIT_FRAME::SyncLibraryTree(), EDA_3D_VIEWER_FRAME::takeScreenshot(), PCB_EDIT_FRAME::TestStandalone(), DIALOG_EDIT_SYMBOLS_LIBID::TransferDataFromWindow(), DIALOG_EXPORT_NETLIST::TransferDataFromWindow(), DIALOG_SHEET_PROPERTIES::TransferDataFromWindow(), DIALOG_ASSIGN_NETCLASS::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataToWindow(), SYMBOL_EDITOR_CONTROL::UnpinLibrary(), FOOTPRINT_EDITOR_CONTROL::UnpinLibrary(), LIB_TREE_MODEL_ADAPTER::UnpinLibrary(), SCH_EDIT_FRAME::updateAutoSaveFile(), DIALOG_PAGES_SETTINGS::UpdateDrawingSheetExample(), SCH_EDIT_FRAME::updateTitle(), SIM_PLOT_FRAME::updateTitle(), FOOTPRINT_EDIT_FRAME::UpdateTitle(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), SIM_PLOT_FRAME::UpdateTunerValue(), PANEL_FP_PROPERTIES_3D_MODEL::validateModelExists(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_FOOTPRINT_PROPERTIES::~DIALOG_FOOTPRINT_PROPERTIES(), EDA_3D_VIEWER_FRAME::~EDA_3D_VIEWER_FRAME(), PANEL_FP_PROPERTIES_3D_MODEL::~PANEL_FP_PROPERTIES_3D_MODEL(), and SCH_EDIT_FRAME::~SCH_EDIT_FRAME().

◆ resetSize()

void DIALOG_SHIM::resetSize ( )
protectedinherited

Clear the existing dialog size and position.

This will cause the dialog size to be clear so the next time the dialog is shown the sizers will layout the dialog accordingly. This useful when there are dialog windows that size changes due to layout dependency hidden controls.

Definition at line 293 of file dialog_shim.cpp.

294{
295 const char* hash_key;
296
297 if( m_hash_key.size() )
298 {
299 // a special case like EDA_LIST_DIALOG, which has multiple uses.
300 hash_key = m_hash_key.c_str();
301 }
302 else
303 {
304 hash_key = typeid(*this).name();
305 }
306
307 std::unordered_map<std::string, wxRect>::iterator it = class_map.find( hash_key );
308
309 if( it == class_map.end() )
310 return;
311
312 wxRect rect = it->second;
313 rect.SetSize( wxSize( 0, 0 ) );
314 class_map[ hash_key ] = rect;
315}
std::string m_hash_key
Definition: dialog_shim.h:203
static std::unordered_map< std::string, wxRect > class_map

References class_map, and DIALOG_SHIM::m_hash_key.

Referenced by DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES().

◆ SetEditVals()

void DIALOG_COLOR_PICKER::SetEditVals ( CHANGED_COLOR  aChanged,
bool  aCheckTransparency 
)
private

Definition at line 502 of file dialog_color_picker.cpp.

503{
504 if( aCheckTransparency )
505 {
506 // If they've changed the color, they probably don't want it to remain 100% transparent,
507 // and it looks like a bug when changing the color has no effect.
508 if( m_newColor4D.a == 0.0 )
509 m_newColor4D.a = 1.0;
510 }
511
513
514 if( aChanged == RED_CHANGED || aChanged == GREEN_CHANGED || aChanged == BLUE_CHANGED )
516
517 if( aChanged != RED_CHANGED )
519
520 if( aChanged != GREEN_CHANGED )
522
523 if( aChanged != BLUE_CHANGED )
525
526 if( aChanged != HUE_CHANGED )
527 m_spinCtrlHue->SetValue( (int)m_hue );
528
529 if( aChanged != SAT_CHANGED )
530 m_spinCtrlSaturation->SetValue( m_sat * 255 );
531
532 if( aChanged != VAL_CHANGED )
534
535 if( aChanged == HEX_CHANGED )
537 else
538 m_colorValue->ChangeValue( m_newColor4D.ToHexString() );
539}
int normalizeToInt(double aValue, int aValMax=255)

References KIGFX::COLOR4D::a, ALPHA_MAX, KIGFX::COLOR4D::b, BLUE_CHANGED, KIGFX::COLOR4D::g, GREEN_CHANGED, HEX_CHANGED, HUE_CHANGED, DIALOG_COLOR_PICKER_BASE::m_colorValue, m_hue, m_newColor4D, m_sat, DIALOG_COLOR_PICKER_BASE::m_sliderBrightness, DIALOG_COLOR_PICKER_BASE::m_sliderTransparency, DIALOG_COLOR_PICKER_BASE::m_spinCtrlBlue, DIALOG_COLOR_PICKER_BASE::m_spinCtrlGreen, DIALOG_COLOR_PICKER_BASE::m_spinCtrlHue, DIALOG_COLOR_PICKER_BASE::m_spinCtrlRed, DIALOG_COLOR_PICKER_BASE::m_spinCtrlSaturation, m_val, normalizeToInt(), KIGFX::COLOR4D::r, RED_CHANGED, SAT_CHANGED, KIGFX::COLOR4D::ToHSV(), and VAL_CHANGED.

Referenced by buttColorClick(), OnChangeAlpha(), OnChangeBrightness(), OnChangeEditBlue(), OnChangeEditGreen(), OnChangeEditHue(), OnChangeEditRed(), OnChangeEditSat(), OnColorValueText(), OnResetButton(), onRGBMouseDrag(), setHSvaluesFromCursor(), and TransferDataToWindow().

◆ setHSvaluesFromCursor()

bool DIALOG_COLOR_PICKER::setHSvaluesFromCursor ( const wxPoint &  aMouseCursor)
private

Manage the Hue and Saturation settings when the mouse cursor is at aMouseCursor.

Parameters
aMouseCursoris the mouse cursor position on the HSV bitmap
Returns
true if the Hue and Saturation can be set from aMouseCursor, if Saturation value computed from aMouseCursor is <= 1.0, and false if aMouseCursor is outside this area. Event handler for defined color buttons

Definition at line 712 of file dialog_color_picker.cpp.

713{
714 wxPoint mousePos = aMouseCursor;
715 wxSize bmsize = m_bitmapHSV->GetSize();
716 int half_size = std::min( bmsize.x, bmsize.y )/2;
717
718 // Make the cursor position relative to the m_bitmapHSV wxBitmap center
719 mousePos.x -= half_size;
720 mousePos.y -= half_size;
721 mousePos.y = -mousePos.y; // Use the bottom to top vertical axis
722
723 // The HS cursor position is restricted to a circle of radius half_size
724 double dist_from_centre = hypot( (double)mousePos.x, (double)mousePos.y );
725
726 if( dist_from_centre > half_size )
727 {
728 // Saturation cannot be calculated:
729 return false;
730 }
731
732 m_cursorBitmapHSV = mousePos;
733
734 // Set saturation and hue from new cursor position:
735 half_size -= m_cursorsSize / 2; // the actual half_size of the palette area
736 m_sat = dist_from_centre / half_size;
737
738 if( m_sat > 1.0 )
739 m_sat = 1.0;
740
741 m_hue = atan2( mousePos.y, mousePos.x ) / M_PI * 180.0;
742
743 if( m_hue < 0 )
744 m_hue += 360.0;
745
747 SetEditVals( ALL_CHANGED, true );
748
749 return true;
750}

References ALL_CHANGED, KIGFX::COLOR4D::FromHSV(), m_bitmapHSV, m_cursorBitmapHSV, m_cursorsSize, m_hue, m_newColor4D, m_sat, m_val, and SetEditVals().

Referenced by onHSVMouseClick(), and onHSVMouseDrag().

◆ SetInitialFocus()

void DIALOG_SHIM::SetInitialFocus ( wxWindow *  aWindow)
inlineinherited

Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown.

Definition at line 97 of file dialog_shim.h.

98 {
99 m_initialFocusTarget = aWindow;
100 }

References DIALOG_SHIM::m_initialFocusTarget.

Referenced by FOOTPRINT_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::buildSaveAsDialog(), DIALOG_BOM::DIALOG_BOM(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS(), DIALOG_FIND::DIALOG_FIND(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_FP_PLUGIN_OPTIONS::DIALOG_FP_PLUGIN_OPTIONS(), DIALOG_GET_FOOTPRINT_BY_NAME::DIALOG_GET_FOOTPRINT_BY_NAME(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES(), DIALOG_LIB_TEXTBOX_PROPERTIES::DIALOG_LIB_TEXTBOX_PROPERTIES(), DIALOG_LINE_PROPERTIES::DIALOG_LINE_PROPERTIES(), DIALOG_LOCKED_ITEMS_QUERY::DIALOG_LOCKED_ITEMS_QUERY(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_SCH_FIND::DIALOG_SCH_FIND(), DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_WIRE_BUS_PROPERTIES::DIALOG_WIRE_BUS_PROPERTIES(), EDA_VIEW_SWITCHER::EDA_VIEW_SWITCHER(), HK_PROMPT_DIALOG::HK_PROMPT_DIALOG(), DIALOG_FIELD_PROPERTIES::init(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchAllClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchIDClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchRefClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchSelectedClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchValueClicked(), PANEL_FP_LIB_TABLE::PANEL_FP_LIB_TABLE(), PANEL_SYM_LIB_TABLE::PANEL_SYM_LIB_TABLE(), DIALOG_COPPER_ZONE::TransferDataToWindow(), DIALOG_NON_COPPER_ZONES_EDITOR::TransferDataToWindow(), DIALOG_RULE_AREA_PROPERTIES::TransferDataToWindow(), and WX_TEXT_ENTRY_DIALOG::WX_TEXT_ENTRY_DIALOG().

◆ SetKiway()

void KIWAY_HOLDER::SetKiway ( wxWindow *  aDest,
KIWAY aKiway 
)
inherited

It is only used for debugging, since "this" is not a wxWindow*.

"this" is a KIWAY_HOLDER mix-in.

Parameters
aDestis the recipient of aKiway pointer.
aKiwayis often from a parent window or from #KIFACE::CreateWindow().

Definition at line 43 of file kiway_holder.cpp.

44{
45#if defined(DEBUG)
46 // offer a trap point for debugging most any window
47 wxASSERT( aDest );
48 if( !strcmp( typeid(aDest).name(), "DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB" ) )
49 {
50 int breakhere=1;
51 ignore_unused( breakhere );
52 }
53#endif
54
55 ignore_unused( aDest );
56
57 m_kiway = aKiway;
58}
const char * name
Definition: DXF_plotter.cpp:56

References ignore_unused(), KIWAY_HOLDER::m_kiway, and name.

Referenced by PCB::IFACE::CreateKiWindow(), InvokePcbLibTableEditor(), InvokeSchEditSymbolLibTable(), PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME(), and SIM_PLOT_FRAME::SIM_PLOT_FRAME().

◆ SetPosition()

void DIALOG_SHIM::SetPosition ( const wxPoint &  aNewPosition)
inherited

Force the position of the dialog to a new position.

Parameters
aNewPositionis the new forced position

Definition at line 196 of file dialog_shim.cpp.

197{
198 wxDialog::SetPosition( aNewPosition );
199
200 // Now update the stored position:
201 const char* hash_key;
202
203 if( m_hash_key.size() )
204 {
205 // a special case like EDA_LIST_DIALOG, which has multiple uses.
206 hash_key = m_hash_key.c_str();
207 }
208 else
209 {
210 hash_key = typeid(*this).name();
211 }
212
213 std::unordered_map<std::string, wxRect>::iterator it = class_map.find( hash_key );
214
215 if( it == class_map.end() )
216 return;
217
218 wxRect rect = it->second;
219 rect.SetPosition( aNewPosition );
220
221 class_map[ hash_key ] = rect;
222}
void SetPosition(const wxString &aStr, const wxString &aDefaultMeasurementUnit, int *aX, int *aY, const wxString &aActualConversion)

References class_map, DIALOG_SHIM::m_hash_key, and PCAD2KICAD::SetPosition().

Referenced by PCB_BASE_FRAME::SelectOneLayer().

◆ setSizeInDU()

void DIALOG_SHIM::setSizeInDU ( int  x,
int  y 
)
protectedinherited

Set the dialog to the given dimensions in "dialog units".

These are units equivalent to 4* the average character width and 8* the average character height, allowing a dialog to be sized in a way that scales it with the system font.

Definition at line 168 of file dialog_shim.cpp.

169{
170 wxSize sz( x, y );
171 SetSize( ConvertDialogToPixels( sz ) );
172}

Referenced by HTML_MESSAGE_BOX::HTML_MESSAGE_BOX(), and HTML_MESSAGE_BOX::SetDialogSizeInDU().

◆ SetupStandardButtons()

void DIALOG_SHIM::SetupStandardButtons ( std::map< int, wxString >  aLabels = {})
inherited

Definition at line 708 of file dialog_shim.cpp.

709{
710 recursiveDescent( GetSizer(), aLabels );
711}
static void recursiveDescent(wxSizer *aSizer, std::map< int, wxString > &aLabels)

References recursiveDescent().

Referenced by CONVERT_SETTINGS_DIALOG::CONVERT_SETTINGS_DIALOG(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_ASSIGN_NETCLASS::DIALOG_ASSIGN_NETCLASS(), DIALOG_BOM::DIALOG_BOM(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CLEANUP_GRAPHICS::DIALOG_CLEANUP_GRAPHICS(), DIALOG_COLOR_PICKER(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY(), DIALOG_DIELECTRIC_MATERIAL::DIALOG_DIELECTRIC_MATERIAL(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_DRC::DIALOG_DRC(), DIALOG_ERC::DIALOG_ERC(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_NETLIST::DIALOG_EXPORT_NETLIST(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_FILTER_SELECTION::DIALOG_FILTER_SELECTION(), DIALOG_FOOTPRINT_CHECKER::DIALOG_FOOTPRINT_CHECKER(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_FP_PLUGIN_OPTIONS::DIALOG_FP_PLUGIN_OPTIONS(), DIALOG_GEN_FOOTPRINT_POSITION::DIALOG_GEN_FOOTPRINT_POSITION(), DIALOG_GENDRILL::DIALOG_GENDRILL(), DIALOG_GET_FOOTPRINT_BY_NAME::DIALOG_GET_FOOTPRINT_BY_NAME(), DIALOG_GLOBAL_DELETION::DIALOG_GLOBAL_DELETION(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS(), DIALOG_GLOBAL_LIB_TABLE_CONFIG::DIALOG_GLOBAL_LIB_TABLE_CONFIG(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IBIS_PARSER_REPORTER::DIALOG_IBIS_PARSER_REPORTER(), DIALOG_IMAGE_PROPERTIES::DIALOG_IMAGE_PROPERTIES(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_IMPORT_NETLIST::DIALOG_IMPORT_NETLIST(), DIALOG_IMPORT_SETTINGS::DIALOG_IMPORT_SETTINGS(), DIALOG_IMPORTED_LAYERS::DIALOG_IMPORTED_LAYERS(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE(), DIALOG_LIB_NEW_SYMBOL::DIALOG_LIB_NEW_SYMBOL(), DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES(), DIALOG_LIB_TEXTBOX_PROPERTIES::DIALOG_LIB_TEXTBOX_PROPERTIES(), DIALOG_LINE_PROPERTIES::DIALOG_LINE_PROPERTIES(), DIALOG_LOCKED_ITEMS_QUERY::DIALOG_LOCKED_ITEMS_QUERY(), DIALOG_MIGRATE_SETTINGS::DIALOG_MIGRATE_SETTINGS(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_NET_INSPECTOR::DIALOG_NET_INSPECTOR(), DIALOG_NON_COPPER_ZONES_EDITOR::DIALOG_NON_COPPER_ZONES_EDITOR(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::DIALOG_PAD_PRIMITIVE_POLY_PROPS(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PRIMITIVES_TRANSFORM::DIALOG_PAD_PRIMITIVES_TRANSFORM(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_PCM::DIALOG_PCM(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_PNS_DIFF_PAIR_DIMENSIONS::DIALOG_PNS_DIFF_PAIR_DIMENSIONS(), DIALOG_PNS_LENGTH_TUNING_SETTINGS::DIALOG_PNS_LENGTH_TUNING_SETTINGS(), DIALOG_PNS_SETTINGS::DIALOG_PNS_SETTINGS(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_PRINT_GENERIC::DIALOG_PRINT_GENERIC(), DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER(), DIALOG_PUSH_PAD_PROPERTIES::DIALOG_PUSH_PAD_PROPERTIES(), DIALOG_REGULATOR_FORM::DIALOG_REGULATOR_FORM(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES(), DIALOG_SCH_IMPORT_SETTINGS::DIALOG_SCH_IMPORT_SETTINGS(), DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SHEET_PROPERTIES::DIALOG_SHEET_PROPERTIES(), DIALOG_SIM_COMMAND::DIALOG_SIM_COMMAND(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_UNUSED_PAD_LAYERS::DIALOG_UNUSED_PAD_LAYERS(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), DIALOG_UPDATE_SYMBOL_FIELDS::DIALOG_UPDATE_SYMBOL_FIELDS(), DIALOG_WIRE_BUS_PROPERTIES::DIALOG_WIRE_BUS_PROPERTIES(), EDA_LIST_DIALOG::EDA_LIST_DIALOG(), EDA_REORDERABLE_LIST_DIALOG::EDA_REORDERABLE_LIST_DIALOG(), DIALOG_CONSTRAINTS_REPORTER::FinishInitialization(), HTML_MESSAGE_BOX::HTML_MESSAGE_BOX(), DIALOG_FIELD_PROPERTIES::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_DIALOG_ADD_GENERATOR::NETLIST_DIALOG_ADD_GENERATOR(), PAGED_DIALOG::PAGED_DIALOG(), DIALOG_CLEANUP_TRACKS_AND_VIAS::setupOKButtonLabel(), WX_TEXT_ENTRY_DIALOG::WX_TEXT_ENTRY_DIALOG(), and WX_UNIT_ENTRY_DIALOG::WX_UNIT_ENTRY_DIALOG().

◆ Show()

bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 225 of file dialog_shim.cpp.

226{
227 bool ret;
228 const char* hash_key;
229
230 if( m_hash_key.size() )
231 {
232 // a special case like EDA_LIST_DIALOG, which has multiple uses.
233 hash_key = m_hash_key.c_str();
234 }
235 else
236 {
237 hash_key = typeid(*this).name();
238 }
239
240 // Show or hide the window. If hiding, save current position and size.
241 // If showing, use previous position and size.
242 if( show )
243 {
244#ifndef __WINDOWS__
245 wxDialog::Raise(); // Needed on OS X and some other window managers (i.e. Unity)
246#endif
247 ret = wxDialog::Show( show );
248
249 // classname is key, returns a zeroed-out default wxRect if none existed before.
250 wxRect savedDialogRect = class_map[ hash_key ];
251
252 if( savedDialogRect.GetSize().x != 0 && savedDialogRect.GetSize().y != 0 )
253 {
255 {
256 SetSize( savedDialogRect.GetPosition().x, savedDialogRect.GetPosition().y,
257 wxDialog::GetSize().x, wxDialog::GetSize().y, 0 );
258 }
259 else
260 {
261 SetSize( savedDialogRect.GetPosition().x, savedDialogRect.GetPosition().y,
262 std::max( wxDialog::GetSize().x, savedDialogRect.GetSize().x ),
263 std::max( wxDialog::GetSize().y, savedDialogRect.GetSize().y ),
264 0 );
265 }
266 }
267 else if( m_initialSize != wxDefaultSize )
268 SetSize( m_initialSize );
269
270 // Be sure that the dialog appears in a visible area
271 // (the dialog position might have been stored at the time when it was
272 // shown on another display)
273 if( wxDisplay::GetFromWindow( this ) == wxNOT_FOUND )
274 Centre();
275 }
276 else
277 {
278 // Save the dialog's position & size before hiding, using classname as key
279 class_map[ hash_key ] = wxRect( wxDialog::GetPosition(), wxDialog::GetSize() );
280
281#ifdef __WXMAC__
282 if ( m_eventLoop )
283 m_eventLoop->Exit( GetReturnCode() ); // Needed for APP-MODAL dlgs on OSX
284#endif
285
286 ret = wxDialog::Show( show );
287 }
288
289 return ret;
290}
bool m_useCalculatedSize
Definition: dialog_shim.h:207
wxSize m_initialSize
Definition: dialog_shim.h:225

References class_map, DIALOG_SHIM::m_hash_key, DIALOG_SHIM::m_initialSize, and DIALOG_SHIM::m_useCalculatedSize.

Referenced by FOOTPRINT_EDITOR_CONTROL::CheckFootprint(), FOOTPRINT_EDITOR_CONTROL::CrossProbe(), EE_INSPECTION_TOOL::CrossProbe(), DRC_TOOL::CrossProbe(), DIALOG_SHIM::EndQuasiModal(), GROUP_TOOL::GroupProperties(), EE_INSPECTION_TOOL::NextMarker(), DRC_TOOL::NextMarker(), SCH_EDIT_FRAME::OnAnnotate(), DIALOG_DRC::OnDRCItemDClick(), DIALOG_ERC::OnERCItemDClick(), DIALOG_CLEANUP_GRAPHICS::OnLeftDClickItem(), DIALOG_CLEANUP_TRACKS_AND_VIAS::OnLeftDClickItem(), DIALOG_FOOTPRINT_CHECKER::OnLeftDClickItem(), GROUP_TOOL::PickNewMember(), POSITION_RELATIVE_TOOL::PositionRelative(), EE_INSPECTION_TOOL::PrevMarker(), DRC_TOOL::PrevMarker(), CVPCB_MAINFRAME::readNetListAndFpFiles(), DIALOG_PAD_PROPERTIES::Show(), EDA_VIEW_SWITCHER::Show(), EDA_LIST_DIALOG::Show(), DIALOG_FIND::Show(), DRC_TOOL::ShowDRCDialog(), EE_INSPECTION_TOOL::ShowERCDialog(), SCH_EDIT_FRAME::ShowFindReplaceDialog(), HTML_MESSAGE_BOX::ShowModeless(), DIALOG_SHIM::ShowQuasiModal(), and DIALOG_POSITION_RELATIVE::UpdateAnchor().

◆ ShowQuasiModal()

int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 436 of file dialog_shim.cpp.

437{
438 // This is an exception safe way to zero a pointer before returning.
439 // Yes, even though DismissModal() clears this first normally, this is
440 // here in case there's an exception before the dialog is dismissed.
441 struct NULLER
442 {
443 void*& m_what;
444 NULLER( void*& aPtr ) : m_what( aPtr ) {}
445 ~NULLER() { m_what = nullptr; } // indeed, set it to NULL on destruction
446 } clear_this( (void*&) m_qmodal_loop );
447
448 // release the mouse if it's currently captured as the window having it
449 // will be disabled when this dialog is shown -- but will still keep the
450 // capture making it impossible to do anything in the modal dialog itself
451 wxWindow* win = wxWindow::GetCapture();
452 if( win )
453 win->ReleaseMouse();
454
455 // Get the optimal parent
456 wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
457
458 wxASSERT_MSG( !m_qmodal_parent_disabler, wxT( "Caller using ShowQuasiModal() twice on same "
459 "window?" ) );
460
461 // quasi-modal: disable only my "optimal" parent
463
464 // Apple in its infinite wisdom will raise a disabled window before even passing
465 // us the event, so we have no way to stop it. Instead, we must set an order on
466 // the windows so that the quasi-modal will be pushed in front of the disabled
467 // window when it is raised.
469
470 Show( true );
471
472 m_qmodal_showing = true;
473
474 WX_EVENT_LOOP event_loop;
475
476 m_qmodal_loop = &event_loop;
477
478 event_loop.Run();
479
480 m_qmodal_showing = false;
481
482 return GetReturnCode();
483}
Toggle a window's "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:46
#define WX_EVENT_LOOP
Definition: kiway_player.h:41
void ReparentQuasiModal(wxNonOwnedWindow *aWindow)
Move a window's parent to be the top-level window and force the window to be on top.
Definition: gtk/ui.cpp:65

References DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, DIALOG_SHIM::m_qmodal_showing, KIPLATFORM::UI::ReparentQuasiModal(), DIALOG_SHIM::Show(), and WX_EVENT_LOOP.

Referenced by SCH_EDIT_TOOL::ChangeSymbols(), S3D::Configure3DPaths(), MICROWAVE_TOOL::createFootprint(), PCB::IFACE::CreateKiWindow(), MICROWAVE_TOOL::createMicrowaveInductor(), SCH_DRAWING_TOOLS::createNewText(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), SYMBOL_EDITOR_EDIT_TOOL::editFieldProperties(), SCH_EDIT_TOOL::editFieldText(), SCH_EDITOR_CONTROL::EditSymbolFields(), SYMBOL_EDITOR_EDIT_TOOL::editSymbolProperties(), GLOBAL_EDIT_TOOL::EditTracksAndVias(), GLOBAL_EDIT_TOOL::ExchangeFootprints(), InvokeCopperZonesEditor(), InvokeDialogCreateBOM(), InvokeDialogEditSymbolsLibId(), InvokeDialogRescueEach(), InvokeNonCopperZonesEditor(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), SYMBOL_VIEWER_FRAME::OnSelectSymbol(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_TOOL::Properties(), EDIT_TOOL::Properties(), SCH_EDITOR_CONTROL::RemapSymbols(), S3D::Select3DModel(), PCB_BASE_FRAME::SelectFootprintFromLibTree(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), PCB_EDIT_FRAME::ShowExchangeFootprintsDialog(), PCB_BASE_EDIT_FRAME::ShowGraphicItemPropertiesDialog(), PCB_BASE_FRAME::ShowPadPropertiesDialog(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), PCB_BASE_EDIT_FRAME::ShowTextBoxPropertiesDialog(), PCB_BASE_EDIT_FRAME::ShowTextPropertiesDialog(), and PCB_EDIT_FRAME::ToPlotter().

◆ TransferDataToWindow()

bool DIALOG_COLOR_PICKER::TransferDataToWindow ( )
overrideprivate

Definition at line 128 of file dialog_color_picker.cpp.

129{
130 // Draw all bitmaps, with colors according to the color 4D
132 SetEditVals( ALL_CHANGED, false );
133 drawAll();
134
135 // Configure the spin control sizes
141
142 m_notebook->GetPage( 0 )->Layout();
143 m_notebook->GetPage( 1 )->Layout();
144
146
147 return true;
148}
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
void configureSpinCtrl(wxSpinCtrl *aCtrl)

References ALL_CHANGED, configureSpinCtrl(), drawAll(), DIALOG_SHIM::finishDialogSettings(), DIALOG_COLOR_PICKER_BASE::m_notebook, DIALOG_COLOR_PICKER_BASE::m_OldColorRect, m_previousColor4D, DIALOG_COLOR_PICKER_BASE::m_spinCtrlBlue, DIALOG_COLOR_PICKER_BASE::m_spinCtrlGreen, DIALOG_COLOR_PICKER_BASE::m_spinCtrlHue, DIALOG_COLOR_PICKER_BASE::m_spinCtrlRed, DIALOG_COLOR_PICKER_BASE::m_spinCtrlSaturation, SetEditVals(), and updatePreview().

◆ updatePreview()

void DIALOG_COLOR_PICKER::updatePreview ( wxStaticBitmap *  aStaticBitmap,
KIGFX::COLOR4D aColor4D 
)
private

Event handler from wxSlider: brightness (value) control.

Definition at line 119 of file dialog_color_picker.cpp.

120{
121 wxBitmap newBm = COLOR_SWATCH::MakeBitmap( aColor4D, COLOR4D::WHITE, aStaticBitmap->GetSize(),
122 ConvertDialogToPixels( CHECKERBOARD_SIZE_DU ),
123 aStaticBitmap->GetParent()->GetBackgroundColour() );
124 aStaticBitmap->SetBitmap( newBm );
125}

References CHECKERBOARD_SIZE_DU(), COLOR_SWATCH::MakeBitmap(), and WHITE.

Referenced by drawAll(), OnChangeAlpha(), and TransferDataToWindow().

◆ vertPixelsFromDU()

int DIALOG_SHIM::vertPixelsFromDU ( int  y) const
protectedinherited

Convert an integer number of dialog units to pixels, vertically.

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 182 of file dialog_shim.cpp.

183{
184 wxSize sz( 0, y );
185 return ConvertDialogToPixels( sz ).y;
186}

Referenced by DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

Member Data Documentation

◆ m_allowMouseEvents

bool DIALOG_COLOR_PICKER::m_allowMouseEvents
private

◆ m_allowOpacityCtrl

bool DIALOG_COLOR_PICKER::m_allowOpacityCtrl
private

true to show the widget, false to keep alpha channel = 1.0

Definition at line 108 of file dialog_color_picker.h.

Referenced by DIALOG_COLOR_PICKER().

◆ m_bitmapHSV

wxBitmap* DIALOG_COLOR_PICKER::m_bitmapHSV
private

◆ m_bitmapRGB

wxBitmap* DIALOG_COLOR_PICKER::m_bitmapRGB
private

◆ m_Color4DList

std::vector<KIGFX::COLOR4D> DIALOG_COLOR_PICKER::m_Color4DList
private

the list of color4d ordered by button ID, for predefined colors

Definition at line 115 of file dialog_color_picker.h.

Referenced by buttColorClick(), and initDefinedColors().

◆ m_colorSwatches

std::vector<wxStaticBitmap*> DIALOG_COLOR_PICKER::m_colorSwatches
private

list of defined colors buttons

Definition at line 131 of file dialog_color_picker.h.

Referenced by initDefinedColors(), and ~DIALOG_COLOR_PICKER().

◆ m_colorValue

wxTextCtrl* DIALOG_COLOR_PICKER_BASE::m_colorValue
protectedinherited

◆ m_cursorBitmapBlue

wxPoint DIALOG_COLOR_PICKER::m_cursorBitmapBlue
private

the blue cursor on the RGB bitmap palette.

Definition at line 120 of file dialog_color_picker.h.

Referenced by drawRGBPalette(), onRGBMouseClick(), and onRGBMouseDrag().

◆ m_cursorBitmapGreen

wxPoint DIALOG_COLOR_PICKER::m_cursorBitmapGreen
private

the green cursor on the RGB bitmap palette.

Definition at line 119 of file dialog_color_picker.h.

Referenced by drawRGBPalette(), onRGBMouseClick(), and onRGBMouseDrag().

◆ m_cursorBitmapHSV

wxPoint DIALOG_COLOR_PICKER::m_cursorBitmapHSV
private

the cursor on the HSV bitmap palette.

Definition at line 121 of file dialog_color_picker.h.

Referenced by drawHSVPalette(), and setHSvaluesFromCursor().

◆ m_cursorBitmapRed

wxPoint DIALOG_COLOR_PICKER::m_cursorBitmapRed
private

the red cursor on the RGB bitmap palette.

Definition at line 118 of file dialog_color_picker.h.

Referenced by drawRGBPalette(), onRGBMouseClick(), and onRGBMouseDrag().

◆ m_cursorsSize

int DIALOG_COLOR_PICKER::m_cursorsSize
private

◆ m_defaultColor

KIGFX::COLOR4D DIALOG_COLOR_PICKER::m_defaultColor
private

The default color4d.

Definition at line 112 of file dialog_color_picker.h.

Referenced by DIALOG_COLOR_PICKER(), and OnResetButton().

◆ m_fgridColor

wxFlexGridSizer* DIALOG_COLOR_PICKER_BASE::m_fgridColor
protectedinherited

◆ m_firstPaintEvent

bool DIALOG_SHIM::m_firstPaintEvent
protectedinherited

Definition at line 212 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

◆ m_hash_key

◆ m_HsvBitmap

wxStaticBitmap* DIALOG_COLOR_PICKER_BASE::m_HsvBitmap
protectedinherited

◆ m_hue

double DIALOG_COLOR_PICKER::m_hue
private

◆ m_initialFocusTarget

wxWindow* DIALOG_SHIM::m_initialFocusTarget
protectedinherited

Definition at line 213 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint(), and DIALOG_SHIM::SetInitialFocus().

◆ m_initialSize

wxSize DIALOG_SHIM::m_initialSize
protectedinherited

Definition at line 225 of file dialog_shim.h.

Referenced by DIALOG_SHIM::Show().

◆ m_kiway

KIWAY* KIWAY_HOLDER::m_kiway
privateinherited

◆ m_newColor4D

◆ m_NewColorRect

wxStaticBitmap* DIALOG_COLOR_PICKER_BASE::m_NewColorRect
protectedinherited

◆ m_notebook

wxNotebook* DIALOG_COLOR_PICKER_BASE::m_notebook
protectedinherited

◆ m_OldColorRect

wxStaticBitmap* DIALOG_COLOR_PICKER_BASE::m_OldColorRect
protectedinherited

◆ m_opacityLabel

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_opacityLabel
protectedinherited

◆ m_panelDefinedColors

wxPanel* DIALOG_COLOR_PICKER_BASE::m_panelDefinedColors
protectedinherited

◆ m_panelFreeColors

wxPanel* DIALOG_COLOR_PICKER_BASE::m_panelFreeColors
protectedinherited

◆ m_parentFrame

◆ m_previousColor4D

KIGFX::COLOR4D DIALOG_COLOR_PICKER::m_previousColor4D
private

the initial color4d

Definition at line 110 of file dialog_color_picker.h.

Referenced by DIALOG_COLOR_PICKER(), and TransferDataToWindow().

◆ m_qmodal_loop

WX_EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

Definition at line 215 of file dialog_shim.h.

Referenced by DIALOG_SHIM::EndQuasiModal(), and DIALOG_SHIM::ShowQuasiModal().

◆ m_qmodal_parent_disabler

WDO_ENABLE_DISABLE* DIALOG_SHIM::m_qmodal_parent_disabler
protectedinherited

◆ m_qmodal_showing

bool DIALOG_SHIM::m_qmodal_showing
protectedinherited

Definition at line 217 of file dialog_shim.h.

Referenced by DIALOG_SHIM::IsQuasiModal(), and DIALOG_SHIM::ShowQuasiModal().

◆ m_resetToDefault

wxButton* DIALOG_COLOR_PICKER_BASE::m_resetToDefault
protectedinherited

◆ m_RgbBitmap

wxStaticBitmap* DIALOG_COLOR_PICKER_BASE::m_RgbBitmap
protectedinherited

◆ m_sat

double DIALOG_COLOR_PICKER::m_sat
private

◆ m_sdbSizer

wxStdDialogButtonSizer* DIALOG_COLOR_PICKER_BASE::m_sdbSizer
protectedinherited

◆ m_sdbSizerCancel

wxButton* DIALOG_COLOR_PICKER_BASE::m_sdbSizerCancel
protectedinherited

◆ m_sdbSizerOK

wxButton* DIALOG_COLOR_PICKER_BASE::m_sdbSizerOK
protectedinherited

◆ m_selectedCursor

wxPoint* DIALOG_COLOR_PICKER::m_selectedCursor
private

the ref cursor to the selected cursor, if any, or null.

Definition at line 122 of file dialog_color_picker.h.

Referenced by DIALOG_COLOR_PICKER(), onRGBMouseClick(), and onRGBMouseDrag().

◆ m_SizerDefinedColors

wxBoxSizer* DIALOG_COLOR_PICKER_BASE::m_SizerDefinedColors
protectedinherited

◆ m_SizerTransparency

wxBoxSizer* DIALOG_COLOR_PICKER_BASE::m_SizerTransparency
protectedinherited

◆ m_sliderBrightness

wxSlider* DIALOG_COLOR_PICKER_BASE::m_sliderBrightness
protectedinherited

◆ m_sliderTransparency

wxSlider* DIALOG_COLOR_PICKER_BASE::m_sliderTransparency
protectedinherited

◆ m_spinCtrlBlue

wxSpinCtrl* DIALOG_COLOR_PICKER_BASE::m_spinCtrlBlue
protectedinherited

◆ m_spinCtrlGreen

wxSpinCtrl* DIALOG_COLOR_PICKER_BASE::m_spinCtrlGreen
protectedinherited

◆ m_spinCtrlHue

wxSpinCtrl* DIALOG_COLOR_PICKER_BASE::m_spinCtrlHue
protectedinherited

◆ m_spinCtrlRed

wxSpinCtrl* DIALOG_COLOR_PICKER_BASE::m_spinCtrlRed
protectedinherited

◆ m_spinCtrlSaturation

wxSpinCtrl* DIALOG_COLOR_PICKER_BASE::m_spinCtrlSaturation
protectedinherited

◆ m_staticTextB

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextB
protectedinherited

◆ m_staticTextBright

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextBright
protectedinherited

◆ m_staticTextG

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextG
protectedinherited

◆ m_staticTextHue

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextHue
protectedinherited

◆ m_staticTextOldColor

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextOldColor
protectedinherited

◆ m_staticTextR

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextR
protectedinherited

◆ m_staticTextSat

wxStaticText* DIALOG_COLOR_PICKER_BASE::m_staticTextSat
protectedinherited

◆ m_tabOrder

◆ m_type

HOLDER_TYPE KIWAY_HOLDER::m_type
privateinherited

Definition at line 85 of file kiway_holder.h.

Referenced by KIWAY_HOLDER::GetType(), and SIM_PLOT_FRAME::onSimFinished().

◆ m_units

◆ m_useCalculatedSize

bool DIALOG_SHIM::m_useCalculatedSize
protectedinherited

◆ m_val

double DIALOG_COLOR_PICKER::m_val
private

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