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, SCREEN }
 

Public Member Functions

 DIALOG_COLOR_PICKER (wxWindow *aParent, 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 ()
 
bool Show (bool show) override
 
bool Enable (bool enable) override
 
void OnPaint (wxPaintEvent &event)
 
EDA_UNITS GetUserUnits () const
 
HOLDER_TYPE GetType ()
 
KIWAYKiway () const
 Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in. More...
 
PROJECTPrj () const
 Function Prj returns a reference to the PROJECT "associated with" this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 Function SetKiway. More...
 

Static Public Member Functions

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

Static Public Attributes

static int m_ActivePage = 0
 the active notebook page, stored during a session More...
 

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)
 Convert an integer number of dialog units to pixels, horizontally. More...
 
int VertPixelsFromDU (int y)
 Convert an integer number of dialog units to pixels, vertically. More...
 
void ResetSize ()
 Clear the existing dialog size and position. More...
 

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
 
wxStaticLine * m_staticline
 
wxStaticText * m_staticTextOldColor
 
wxStaticBitmap * m_OldColorRect
 
wxStaticBitmap * m_NewColorRect
 
wxButton * m_resetToDefault
 
wxStdDialogButtonSizer * m_sdbSizer
 
wxButton * m_sdbSizerOK
 
wxButton * m_sdbSizerCancel
 
EDA_UNITS m_units
 
std::string m_hash_key
 
bool m_firstPaintEvent
 
wxWindow * m_initialFocusTarget
 
WX_EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 
std::vector< wxWindow * > m_tabOrder
 

Private Member Functions

void SetEditVals (CHANGED_COLOR aChanged)
 
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 drawRGBCursors ()
 
void setIconColor (wxStaticBitmap *aStaticBitmap, KIGFX::COLOR4D &aColor4D)
 

repaint a static bitmap with the aColor4D color

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
 
void onRGBMouseClick (wxMouseEvent &event) override
 

mouse handlers, when clicking on a palette bitmap

More...
 
void onRGBMouseDrag (wxMouseEvent &event) override
 
void onHSVMouseClick (wxMouseEvent &event) override
 
void onHSVMouseDrag (wxMouseEvent &event) override
 Event handler for the reset button press. More...
 
void OnResetButton (wxCommandEvent &aEvent) override
 
bool setHSvaluesFromCursor (wxPoint aMouseCursor)
 manage the Hue and Saturation settings when the mouse cursor is at aMouseCursor. More...
 
void buttColorClick (wxCommandEvent &event)
 

Event handler for defined color buttons

More...
 
bool TransferDataToWindow () override
 

called when creating the dialog

More...
 
void initDefinedColors (CUSTOM_COLORS_LIST *aPredefinedColors)
 creates the bitmap buttons for each defined colors if aPredefinedColors is nullptr, a internal predefined list will be used More...
 
int normalizeToInt (double aValue, int aValMax=255)
 

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 inital 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...
 
wxPointm_selectedCursor
 the ref cursor to the selected curor, 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< wxBitmapButton * > m_buttonsColor
 list of defined colors buttons More...
 

Detailed Description

Definition at line 67 of file dialog_color_picker.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 
SCREEN 

Definition at line 42 of file kiway_holder.h.

Constructor & Destructor Documentation

◆ DIALOG_COLOR_PICKER()

DIALOG_COLOR_PICKER::DIALOG_COLOR_PICKER ( wxWindow *  aParent,
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
aAllowOpacityControl= true 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

Definition at line 37 of file dialog_color_picker.cpp.

40  : DIALOG_COLOR_PICKER_BASE( aParent )
41 {
42  m_allowMouseEvents = false;
43  m_allowOpacityCtrl = aAllowOpacityControl;
44  m_previousColor4D = aCurrentColor;
45  m_newColor4D = aCurrentColor;
46  m_cursorsSize = 8; // Size of square cursors drawn on color bitmaps
47  m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
48  m_bitmapRGB = nullptr;
49  m_bitmapHSV = nullptr;
50  m_selectedCursor = nullptr;
51  m_defaultColor = aDefaultColor;
52 
53  if( !m_allowOpacityCtrl )
54  {
55  m_SizerTransparency->Show( false );
56  m_previousColor4D.a = 1.0;
57  m_newColor4D.a = 1.0;
58  }
59 
60  if( m_ActivePage >= 0 )
61  m_notebook->SetSelection( (unsigned) m_ActivePage );
62 
63  // Build the defined colors panel:
64  initDefinedColors( aUserColors );
65 
66  // If there is no default color, don't give the option to reset to default
67  if( aDefaultColor == KIGFX::COLOR4D::UNSPECIFIED )
68  m_resetToDefault->Hide();
69 
70  m_sdbSizerOK->SetDefault();
71 }
double m_hue
the current hue, in degrees (0 ... 360)
bool m_allowOpacityCtrl
true to show the widget, false to keep alpha channel = 1.0
double m_sat
the current saturation (0 ... 1.0)
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Function ToHSV() Converts current color (stored in RGB) to HSV format.
Definition: color4d.cpp:235
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_newColor4D
the current color4d
static const COLOR4D UNSPECIFIED
For legacy support; used as a value to indicate color hasn't been set yet.
Definition: color4d.h:308
double a
Alpha component.
Definition: color4d.h:305
KIGFX::COLOR4D m_previousColor4D
the inital color4d
static int m_ActivePage
the active notebook page, stored during a session
wxBitmap * m_bitmapHSV
the basic HUV palette
double m_val
the current value (0 ... 1.0)
KIGFX::COLOR4D m_defaultColor
The default color4d.
void initDefinedColors(CUSTOM_COLORS_LIST *aPredefinedColors)
creates the bitmap buttons for each defined colors if aPredefinedColors is nullptr,...
wxBitmap * m_bitmapRGB
the basic RGB palette
wxPoint * m_selectedCursor
the ref cursor to the selected curor, if any, or null.

References KIGFX::COLOR4D::a, initDefinedColors(), m_ActivePage, m_allowMouseEvents, m_allowOpacityCtrl, m_bitmapHSV, m_bitmapRGB, m_cursorsSize, m_defaultColor, m_hue, m_newColor4D, DIALOG_COLOR_PICKER_BASE::m_notebook, m_previousColor4D, DIALOG_COLOR_PICKER_BASE::m_resetToDefault, m_sat, DIALOG_COLOR_PICKER_BASE::m_sdbSizerOK, m_selectedCursor, DIALOG_COLOR_PICKER_BASE::m_SizerTransparency, m_val, KIGFX::COLOR4D::ToHSV(), and KIGFX::COLOR4D::UNSPECIFIED.

◆ ~DIALOG_COLOR_PICKER()

DIALOG_COLOR_PICKER::~DIALOG_COLOR_PICKER ( )

Definition at line 76 of file dialog_color_picker.cpp.

77 {
78  delete m_bitmapRGB;
79  delete m_bitmapHSV;
80 
81  m_ActivePage = m_notebook->GetSelection();
82 
83  for( auto button : m_buttonsColor )
84  button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED,
85  wxCommandEventHandler( DIALOG_COLOR_PICKER::buttColorClick ), NULL, this );
86 }
#define NULL
static int m_ActivePage
the active notebook page, stored during a session
wxBitmap * m_bitmapHSV
the basic HUV palette
void buttColorClick(wxCommandEvent &event)
Event handler for defined color buttons
std::vector< wxBitmapButton * > m_buttonsColor
list of defined colors buttons
wxBitmap * m_bitmapRGB
the basic RGB palette

References buttColorClick(), m_ActivePage, m_bitmapHSV, m_bitmapRGB, m_buttonsColor, DIALOG_COLOR_PICKER_BASE::m_notebook, and NULL.

Member Function Documentation

◆ buttColorClick()

void DIALOG_COLOR_PICKER::buttColorClick ( wxCommandEvent &  event)
private

Event handler for defined color buttons

Definition at line 574 of file dialog_color_picker.cpp.

575 {
576  int id = event.GetId();
577  KIGFX::COLOR4D color( m_Color4DList[id - ID_COLOR_BLACK] );//EDA_COLOR_T( id - ID_COLOR_BLACK ) );
578  m_newColor4D.r = color.r;
579  m_newColor4D.g = color.g;
580  m_newColor4D.b = color.b;
581 
582  m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
584 
585  drawAll();
586 
587  event.Skip();
588 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void SetEditVals(CHANGED_COLOR aChanged)
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Function ToHSV() Converts current color (stored in RGB) to HSV format.
Definition: color4d.cpp:235
std::vector< KIGFX::COLOR4D > m_Color4DList
the list of color4d ordered by button ID, for predefined colors
int color
Definition: DXF_plotter.cpp:61
double g
Green component.
Definition: color4d.h:303
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:304
double m_val
the current value (0 ... 1.0)
double r
Red component.
Definition: color4d.h:302
#define ID_COLOR_BLACK
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:40

References 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().

◆ createHSVBitmap()

void DIALOG_COLOR_PICKER::createHSVBitmap ( )
private

generate the bitmap that shows the HSV color circle

Definition at line 365 of file dialog_color_picker.cpp.

366 {
367  wxMemoryDC bitmapDC;
368  wxSize bmsize = m_HsvBitmap->GetSize();
369  int half_size = std::min( bmsize.x, bmsize.y )/2;
370  delete m_bitmapHSV;
371  m_bitmapHSV = new wxBitmap( bmsize );
372  bitmapDC.SelectObject( *m_bitmapHSV );
373  wxPen pen;
374 
375  // clear background (set the window bd color)
376  wxBrush bgbrush( GetBackgroundColour() );
377  bitmapDC.SetBackground( bgbrush );
378  bitmapDC.Clear();
379 
380  // Use Y axis from bottom to top and origin to center
381  bitmapDC.SetAxisOrientation( true, true );
382  bitmapDC.SetDeviceOrigin( half_size, half_size );
383 
384  // Reserve room to draw cursors inside the bitmap
385  half_size -= m_cursorsSize/2;
386 
387  double hue, sat;
389  int sq_radius = half_size*half_size;
390 
391  for( int xx = -half_size; xx < half_size; xx++ )
392  {
393  for( int yy = -half_size; yy < half_size; yy++ )
394  {
395  sat = double(xx*xx + yy*yy) / sq_radius;
396 
397  // sat is <= 1.0
398  // any value > 1.0 is not a valid HSB color:
399  if( sat > 1.0 )
400  continue;
401 
402  // sat is the distance from center
403  sat = sqrt( sat );
404  hue = atan2( (double)yy, (double)xx ) * 180 / M_PI;
405 
406  if( hue < 0.0 )
407  hue += 360.0;
408 
409  color.FromHSV( hue, sat, 1.0 );
410 
411  pen.SetColour( color.ToColour() );
412  bitmapDC.SetPen( pen );
413  bitmapDC.DrawPoint( xx, yy );
414  }
415  }
416 
417  /* Deselect the Tool Bitmap from DC,
418  * in order to delete the MemoryDC safely without deleting the bitmap
419  */
420  bitmapDC.SelectObject( wxNullBitmap );
421 }
int color
Definition: DXF_plotter.cpp:61
wxBitmap * m_bitmapHSV
the basic HUV palette
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:40

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

Referenced by drawHSVPalette().

◆ createRGBBitmap()

void DIALOG_COLOR_PICKER::createRGBBitmap ( )
private

generate the bitmap that shows the RVB color space

Definition at line 281 of file dialog_color_picker.cpp.

282 {
283  wxMemoryDC bitmapDC;
284  wxSize bmsize = m_RgbBitmap->GetSize();
285  int half_size = std::min( bmsize.x, bmsize.y )/2;
286  m_bitmapRGB = new wxBitmap( bmsize );
287  bitmapDC.SelectObject( *m_bitmapRGB );
288  wxPen pen;
289 
290  // clear background (set the window bg color)
291  wxBrush bgbrush( GetBackgroundColour() );
292  bitmapDC.SetBackground( bgbrush );
293  bitmapDC.Clear();
294 
295  // Use Y axis from bottom to top and origin to center
296  bitmapDC.SetAxisOrientation( true, true );
297  bitmapDC.SetDeviceOrigin( half_size, half_size );
298 
299  // Reserve room to draw cursors inside the bitmap
300  half_size -= m_cursorsSize/2;
301 
303 
304  // Red blue area in X Z 3d axis
305  double inc = 1.0 / half_size;
306  #define SLOPE_AXIS 50.0
307  double slope = SLOPE_AXIS/half_size;
308  color.g = 0.0;
309 
310  for( int xx = 0; xx < half_size; xx++ ) // blue axis
311  {
312  color.b = inc * xx;
313 
314  for( int yy = 0; yy < half_size; yy++ ) // Red axis
315  {
316  color.r = inc * yy;
317 
318  pen.SetColour( color.ToColour() );
319  bitmapDC.SetPen( pen );
320  bitmapDC.DrawPoint( xx, yy - (slope*xx) );
321  }
322  }
323 
324  // Red green area in y Z 3d axis
325  color.b = 0.0;
326  for( int xx = 0; xx < half_size; xx++ ) // green axis
327  {
328  color.g = inc * xx;
329 
330  for( int yy = 0; yy < half_size; yy++ ) // Red axis
331  {
332  color.r = inc * yy;
333 
334  pen.SetColour( color.ToColour() );
335  bitmapDC.SetPen( pen );
336  bitmapDC.DrawPoint( -xx, yy - (slope*xx) );
337  }
338  }
339 
340  // Blue green area in x y 3d axis
341  color.r = 0.0;
342  for( int xx = 0; xx < half_size; xx++ ) // green axis
343  {
344  color.g = inc * xx;
345 
346  for( int yy = 0; yy < half_size; yy++ ) // blue axis
347  {
348  color.b = inc * yy;
349 
350  pen.SetColour( color.ToColour() );
351  bitmapDC.SetPen( pen );
352 
353  // Mapping the xx, yy color axis to draw coordinates is more tricky than previously
354  // in DC coordinates:
355  // the blue axis is the (0, 0) to half_size, (-yy - SLOPE_AXIS)
356  // the green axis is the (0, 0) to - half_size, (-yy - SLOPE_AXIS)
357  int drawX = -xx + yy;
358  int drawY = - std::min( xx,yy ) * 0.9;
359  bitmapDC.DrawPoint( drawX, drawY - std::abs( slope*drawX ) );
360  }
361  }
362 }
int color
Definition: DXF_plotter.cpp:61
wxBitmap * m_bitmapRGB
the basic RGB palette
#define SLOPE_AXIS
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:40

References color, m_bitmapRGB, m_cursorsSize, DIALOG_COLOR_PICKER_BASE::m_RgbBitmap, and SLOPE_AXIS.

Referenced by drawRGBPalette().

◆ drawAll()

void DIALOG_COLOR_PICKER::drawAll ( )
private

Definition at line 557 of file dialog_color_picker.cpp.

558 {
559  m_NewColorRect->Freeze(); // Avoid flicker
560  m_HsvBitmap->Freeze();
561  m_RgbBitmap->Freeze();
563  drawHSVPalette();
564  drawRGBPalette();
565  m_NewColorRect->Thaw();
566  m_HsvBitmap->Thaw();
567  m_RgbBitmap->Thaw();
568  m_NewColorRect->Refresh();
569  m_HsvBitmap->Refresh();
570  m_RgbBitmap->Refresh();
571 }
void drawRGBPalette()
draws the RVB color space
void drawHSVPalette()
draws the HSV color circle
void setIconColor(wxStaticBitmap *aStaticBitmap, KIGFX::COLOR4D &aColor4D)
repaint a static bitmap with the aColor4D color
KIGFX::COLOR4D m_newColor4D
the current color4d

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

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

◆ drawHSVPalette()

void DIALOG_COLOR_PICKER::drawHSVPalette ( )
private

draws the HSV color circle

Definition at line 488 of file dialog_color_picker.cpp.

489 {
490  if( !m_bitmapHSV || m_bitmapHSV->GetSize() != m_HsvBitmap->GetSize() )
491  createHSVBitmap();
492 
493  wxMemoryDC bitmapDC;
494  wxSize bmsize = m_bitmapHSV->GetSize();
495  int half_size = std::min( bmsize.x, bmsize.y )/2;
496  wxBitmap newBm( *m_bitmapHSV );
497  bitmapDC.SelectObject( newBm );
498 
499  // Use Y axis from bottom to top and origin to center
500  bitmapDC.SetAxisOrientation( true, true );
501  bitmapDC.SetDeviceOrigin( half_size, half_size );
502 
503  // Reserve room to draw cursors inside the bitmap
504  half_size -= m_cursorsSize/2;
505 
506  // Draw the HSB cursor:
507  m_cursorBitmapHSV.x = cos( m_hue * M_PI / 180.0 ) * half_size * m_sat;
508  m_cursorBitmapHSV.y = sin( m_hue * M_PI / 180.0 ) * half_size * m_sat;
509 
510  wxPen pen( wxColor( 0, 0, 0 ) );
511  wxBrush brush( wxColor( 0, 0, 0 ), wxBRUSHSTYLE_TRANSPARENT );
512  bitmapDC.SetPen( pen );
513  bitmapDC.SetBrush( brush );
514 
515  int half_csize = m_cursorsSize/2;
516  bitmapDC.DrawRectangle( m_cursorBitmapHSV.x- half_csize,
517  m_cursorBitmapHSV.y-half_csize,
519 
520  m_HsvBitmap->SetBitmap( newBm );
521  /* Deselect the Tool Bitmap from DC,
522  * in order to delete the MemoryDC safely without deleting the bitmap
523  */
524  bitmapDC.SelectObject( wxNullBitmap );
525 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void createHSVBitmap()
generate the bitmap that shows the HSV color circle
wxPoint m_cursorBitmapHSV
the cursor on the HSV bitmap palette.
wxBitmap * m_bitmapHSV
the basic HUV palette

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

Referenced by drawAll().

◆ drawRGBCursors()

void DIALOG_COLOR_PICKER::drawRGBCursors ( )
private

◆ drawRGBPalette()

void DIALOG_COLOR_PICKER::drawRGBPalette ( )
private

draws the RVB color space

Definition at line 424 of file dialog_color_picker.cpp.

425 {
426  if( !m_bitmapRGB || m_bitmapRGB->GetSize() != m_RgbBitmap->GetSize() )
427  createRGBBitmap();
428 
429  wxMemoryDC bitmapDC;
430  wxSize bmsize = m_bitmapRGB->GetSize();
431  int half_size = std::min( bmsize.x, bmsize.y )/2;
432  wxBitmap newBm( *m_bitmapRGB );
433  bitmapDC.SelectObject( newBm );
434 
435  // Use Y axis from bottom to top and origin to center
436  bitmapDC.SetAxisOrientation( true, true );
437  bitmapDC.SetDeviceOrigin( half_size, half_size );
438 
439  // Reserve room to draw cursors inside the bitmap
440  half_size -= m_cursorsSize/2;
441 
442  // Draw the 3 RGB cursors, usiing white color to make them always visible:
443  wxPen pen( wxColor( 255, 255, 255 ) );
444  wxBrush brush( wxColor( 0, 0, 0 ), wxBRUSHSTYLE_TRANSPARENT );
445  bitmapDC.SetPen( pen );
446  bitmapDC.SetBrush( brush );
447  int half_csize = m_cursorsSize/2;
448 
449  #define SLOPE_AXIS 50.0
450  double slope = SLOPE_AXIS/half_size;
451 
452  // Red axis cursor (Z 3Daxis):
453  m_cursorBitmapRed.x = 0;
454  m_cursorBitmapRed.y = m_newColor4D.r * half_size;
455  bitmapDC.DrawRectangle( m_cursorBitmapRed.x - half_csize,
456  m_cursorBitmapRed.y - half_csize,
458 
459  // Blue axis cursor (X 3Daxis):
460  m_cursorBitmapBlue.x = m_newColor4D.b * half_size;
462  bitmapDC.DrawRectangle( m_cursorBitmapBlue.x - half_csize,
463  m_cursorBitmapBlue.y - half_csize,
465 
466  // Green axis cursor (Y 3Daxis):
467  m_cursorBitmapGreen.x = m_newColor4D.g * half_size;
470 
471  bitmapDC.DrawRectangle( m_cursorBitmapGreen.x - half_csize,
472  m_cursorBitmapGreen.y - half_csize,
474 
475  // Draw the 3 RGB axis:
476  half_size += half_size/5;
477  bitmapDC.DrawLine( 0, 0, 0, half_size ); // Red axis (Z 3D axis)
478  bitmapDC.DrawLine( 0, 0, half_size, - half_size*slope ); // Blue axis (X 3D axis)
479  bitmapDC.DrawLine( 0, 0, -half_size, - half_size*slope ); // green axis (Y 3D axis)
480 
481  m_RgbBitmap->SetBitmap( newBm );
482  /* Deselect the Tool Bitmap from DC,
483  * in order to delete the MemoryDC safely without deleting the bitmap */
484  bitmapDC.SelectObject( wxNullBitmap );
485 }
double g
Green component.
Definition: color4d.h:303
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:304
void createRGBBitmap()
generate the bitmap that shows the RVB color space
wxPoint m_cursorBitmapRed
the red cursor on the RGB bitmap palette.
wxPoint m_cursorBitmapBlue
the blue cursor on the RGB bitmap palette.
wxBitmap * m_bitmapRGB
the basic RGB palette
double r
Red component.
Definition: color4d.h:302
#define SLOPE_AXIS
wxPoint m_cursorBitmapGreen
the green 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, SLOPE_AXIS, wxPoint::x, and wxPoint::y.

Referenced by drawAll().

◆ Enable()

bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 262 of file dialog_shim.cpp.

263 {
264  // so we can do logging of this state change:
265 
266 #if 0 && defined(DEBUG)
267  const char* type_id = typeid( *this ).name();
268  printf( "DIALOG_SHIM %s: %s\n", type_id, enable ? "enabled" : "disabled" );
269  fflush(0); //Needed on msys2 to immediately print the message
270 #endif
271 
272  return wxDialog::Enable( enable );
273 }

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 419 of file dialog_shim.cpp.

420 {
421  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
422  // handle validation in the same way as other dialogs.
423  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
424  return;
425 
426  SetReturnCode( retCode );
427 
428  if( !IsQuasiModal() )
429  {
430  wxFAIL_MSG( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal"
431  "wasn't called" );
432  return;
433  }
434 
435  if( m_qmodal_loop )
436  {
437  if( m_qmodal_loop->IsRunning() )
438  m_qmodal_loop->Exit( 0 );
439  else
440  m_qmodal_loop->ScheduleExit( 0 );
441 
443  }
444 
447 
448  Show( false );
449 }
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:205
#define NULL
bool IsQuasiModal()
Definition: dialog_shim.h:124
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:208

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

Referenced by HK_PROMPT_DIALOG::EndFlexible(), DIALOG_SHIM::OnButton(), DIALOG_EDIT_COMPONENTS_LIBID::onCancel(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnCancelButtonClick(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnCancelButtonClick(), DIALOG_LIB_EDIT_PIN_TABLE::OnClose(), DIALOG_PRINT_GENERIC::onCloseButton(), DIALOG_CHOOSE_FOOTPRINT::OnCloseTimer(), DIALOG_CHOOSE_COMPONENT::OnCloseTimer(), DIALOG_SHIM::OnCloseWindow(), HTML_MESSAGE_BOX::OnOKButtonClick(), DIALOG_CHOOSE_FOOTPRINT::OnUseBrowser(), DIALOG_CHOOSE_COMPONENT::OnUseBrowser(), 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, when all widgets are initialized, and therefore their size fixed. If TransferDataToWindow() is used to initialize widgets, at end of TransferDataToWindow, or better at end of a wxInitDialogEvent handler

In any case, the best way is to call it in a wxInitDialogEvent handler after calling TransfertDataToWindow(), which is the default wxInitDialogEvent handler wxDialog

Definition at line 137 of file dialog_shim.cpp.

138 {
139  // must be called from the constructor of derived classes,
140  // when all widgets are initialized, and therefore their size fixed
141 
142  // SetSizeHints fixes the minimal size of sizers in the dialog
143  // (SetSizeHints calls Fit(), so no need to call it)
144  GetSizer()->SetSizeHints( this );
145 
146  // the default position, when calling the first time the dlg
147  Center();
148 }

References PCAD2KICAD::Center.

Referenced by DIALOG_3D_VIEW_OPTIONS::DIALOG_3D_VIEW_OPTIONS(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOM::DIALOG_BOM(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_DRC::DIALOG_DRC(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::DIALOG_EDIT_COMPONENT_IN_LIBRARY(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC(), DIALOG_EDIT_COMPONENTS_LIBID::DIALOG_EDIT_COMPONENTS_LIBID(), DIALOG_EDIT_LINE_STYLE::DIALOG_EDIT_LINE_STYLE(), DIALOG_EDIT_SHEET_PIN::DIALOG_EDIT_SHEET_PIN(), DIALOG_EDITOR_DATA::DIALOG_EDITOR_DATA(), 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_STEP::DIALOG_EXPORT_STEP(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL(), DIALOG_FOOTPRINT_BOARD_EDITOR::DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::DIALOG_FOOTPRINT_FP_EDITOR(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_FOOTPRINTS_DISPLAY_OPTIONS::DIALOG_FOOTPRINTS_DISPLAY_OPTIONS(), DIALOG_FP_BROWSER_DISPLAY_OPTIONS::DIALOG_FP_BROWSER_DISPLAY_OPTIONS(), 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_IMAGE_EDITOR::DIALOG_IMAGE_EDITOR(), DIALOG_KEEPOUT_AREA_PROPERTIES::DIALOG_KEEPOUT_AREA_PROPERTIES(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_LIB_EDIT_DRAW_ITEM::DIALOG_LIB_EDIT_DRAW_ITEM(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), DIALOG_LIB_EDIT_TEXT::DIALOG_LIB_EDIT_TEXT(), DIALOG_LIB_NEW_COMPONENT::DIALOG_LIB_NEW_COMPONENT(), DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_NETLIST::DIALOG_NETLIST(), 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_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), 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_SCH_SHEET_PROPS::DIALOG_SCH_SHEET_PROPS(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SELECT_NET_FROM_LIST::DIALOG_SELECT_NET_FROM_LIST(), DIALOG_SET_GRID::DIALOG_SET_GRID(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), PAGED_DIALOG::finishInitialization(), DIALOG_EDIT_ONE_FIELD::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_DIALOG::NETLIST_DIALOG(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), DIALOG_SCH_SHEET_PROPS::OnInitDlg(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_SPICE_MODEL::onInitDlg(), DIALOG_SIGNAL_LIST::TransferDataToWindow(), DIALOG_UPDATE_FIELDS::TransferDataToWindow(), TransferDataToWindow(), and DIALOG_BOARD_STATISTICS::TransferDataToWindow().

◆ GetColor()

KIGFX::COLOR4D DIALOG_COLOR_PICKER::GetColor ( )
inline

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( )
inlineinherited

Definition at line 49 of file kiway_holder.h.

49 { return m_type; }
HOLDER_TYPE m_type
Definition: kiway_holder.h:82

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUserUnits()

◆ HorizPixelsFromDU()

int DIALOG_SHIM::HorizPixelsFromDU ( int  x)
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 158 of file dialog_shim.cpp.

159 {
160  wxSize sz( x, 0 );
161  return ConvertDialogToPixels( sz ).x;
162 }

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

◆ initDefinedColors()

void DIALOG_COLOR_PICKER::initDefinedColors ( CUSTOM_COLORS_LIST aPredefinedColors)
private

creates the bitmap buttons for each defined colors if aPredefinedColors is nullptr, a internal predefined list will be used

Definition at line 167 of file dialog_color_picker.cpp.

168 {
169  #define ID_COLOR_BLACK 2000 // colors_id = ID_COLOR_BLACK a ID_COLOR_BLACK + NBCOLORS-1
170 
171  // Size of color swatches
172  const int w = 32, h = 32;
173 
174  // Colors are built from the g_ColorRefs table (size NBCOLORS).
175  // The look is better when g_ColorRefs order is displayed in a grid matrix
176  // of 6 row and 5 columns, first filling a row, and after the next column.
177  // But the wxFlexGrid used here must be filled by columns, then next row
178  // the best interval g_ColorRefs from a matrix row to the next row is 6
179  // So when have to reorder the index used to explore g_ColorRefs
180  int grid_col = 0;
181  int grid_row = 0;
182  int table_row_count = 6;
183 
184  // If no predefined list is given, build the default predefined colors:
185  if( aPredefinedColors )
186  {
187  for( unsigned jj = 0; jj < aPredefinedColors->size() && jj < NBCOLORS; ++jj )
188  {
189  CUSTOM_COLOR_ITEM* item = & *aPredefinedColors->begin() + jj;
190  int butt_ID = ID_COLOR_BLACK + jj;
191  wxMemoryDC iconDC;
192  wxBitmap ButtBitmap( w, h );
193  wxBrush brush;
194 
195  iconDC.SelectObject( ButtBitmap );
196 
197  KIGFX::COLOR4D buttcolor = item->m_Color;
198 
199  iconDC.SetPen( *wxBLACK_PEN );
200  brush.SetColour( buttcolor.ToColour() );
201  brush.SetStyle( wxBRUSHSTYLE_SOLID );
202 
203  iconDC.SetBrush( brush );
204  iconDC.SetBackground( *wxGREY_BRUSH );
205  iconDC.Clear();
206  iconDC.DrawRoundedRectangle( 0, 0, w, h, (double) h / 3 );
207 
208  wxBitmapButton* bitmapButton = new wxBitmapButton( m_panelDefinedColors, butt_ID, ButtBitmap,
209  wxDefaultPosition, wxSize( w+8, h+6 ) );
210  m_fgridColor->Add( bitmapButton, 0,
211  wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL |
212  wxLEFT | wxBOTTOM, 5 );
213 
214  wxStaticText* label = new wxStaticText( m_panelDefinedColors, -1,
215  item->m_ColorName,
216  wxDefaultPosition, wxDefaultSize, 0 );
217  m_fgridColor->Add( label, 1,
218  wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL |
219  wxLEFT | wxRIGHT | wxBOTTOM, 5 );
220  m_buttonsColor.push_back( bitmapButton );
221 
222  m_Color4DList.push_back( buttcolor );
223 
224  bitmapButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED,
225  wxCommandEventHandler( DIALOG_COLOR_PICKER::buttColorClick ), NULL, this );
226  }
227  }
228  else
229  {
230  m_Color4DList.assign( NBCOLORS, KIGFX::COLOR4D( 0.0, 0.0, 0.0, 1.0 ) );
231 
232  for( int jj = 0; jj < NBCOLORS; ++jj, grid_col++ )
233  {
234  if( grid_col*table_row_count >= NBCOLORS )
235  { // the current grid row is filled, and we must fill the next grid row
236  grid_col = 0;
237  grid_row++;
238  }
239 
240  int ii = grid_row + (grid_col*table_row_count); // The index in g_ColorRefs
241 
242  int butt_ID = ID_COLOR_BLACK + ii;
243  wxMemoryDC iconDC;
244  wxBitmap ButtBitmap( w, h );
245  wxBrush brush;
246 
247  iconDC.SelectObject( ButtBitmap );
248 
249  KIGFX::COLOR4D buttcolor = KIGFX::COLOR4D( g_ColorRefs[ii].m_Numcolor );
250  m_Color4DList[ butt_ID - ID_COLOR_BLACK ] = buttcolor;
251 
252  iconDC.SetPen( *wxBLACK_PEN );
253  brush.SetColour( buttcolor.ToColour() );
254  brush.SetStyle( wxBRUSHSTYLE_SOLID );
255 
256  iconDC.SetBrush( brush );
257  iconDC.SetBackground( *wxGREY_BRUSH );
258  iconDC.Clear();
259  iconDC.DrawRoundedRectangle( 0, 0, w, h, (double) h / 3 );
260 
261  wxBitmapButton* bitmapButton = new wxBitmapButton( m_panelDefinedColors, butt_ID, ButtBitmap,
262  wxDefaultPosition, wxSize( w+8, h+6 ) );
263  m_fgridColor->Add( bitmapButton, 0,
264  wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL |
265  wxLEFT | wxBOTTOM, 5 );
266 
267  wxStaticText* label = new wxStaticText( m_panelDefinedColors, -1,
268  wxGetTranslation( g_ColorRefs[ii].m_ColorName ),
269  wxDefaultPosition, wxDefaultSize, 0 );
270  m_fgridColor->Add( label, 1,
271  wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL |
272  wxLEFT | wxRIGHT | wxBOTTOM, 5 );
273  m_buttonsColor.push_back( bitmapButton );
274  bitmapButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED,
275  wxCommandEventHandler( DIALOG_COLOR_PICKER::buttColorClick ), NULL, this );
276  }
277  }
278 }
std::vector< KIGFX::COLOR4D > m_Color4DList
the list of color4d ordered by button ID, for predefined colors
a class to handle a custom color (predefined color) for the color picker dialog
#define NULL
void buttColorClick(wxCommandEvent &event)
Event handler for defined color buttons
const StructColors g_ColorRefs[NBCOLORS]
The predefined colors used in KiCad.
Definition: colors.cpp:37
std::vector< wxBitmapButton * > m_buttonsColor
list of defined colors buttons
KIGFX::COLOR4D m_Color
Number of colors.
Definition: colors.h:75
#define ID_COLOR_BLACK
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:40

References buttColorClick(), g_ColorRefs, ID_COLOR_BLACK, m_buttonsColor, CUSTOM_COLOR_ITEM::m_Color, m_Color4DList, CUSTOM_COLOR_ITEM::m_ColorName, DIALOG_COLOR_PICKER_BASE::m_fgridColor, DIALOG_COLOR_PICKER_BASE::m_panelDefinedColors, NBCOLORS, and NULL.

Referenced by DIALOG_COLOR_PICKER().

◆ IsCtrl()

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

Definition at line 137 of file dialog_shim.h.

138  {
139  return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
140  !e.ShiftDown() && !e.MetaDown();
141  }

Referenced by DIALOG_TEXT_PROPERTIES::OnCharHook(), and DIALOG_LABEL_EDITOR::OnCharHook().

◆ IsQuasiModal()

◆ IsShiftCtrl()

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

Definition at line 143 of file dialog_shim.h.

144  {
145  return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
146  e.ShiftDown() && !e.MetaDown();
147  }

Referenced by DIALOG_TEXT_PROPERTIES::OnCharHook(), and DIALOG_LABEL_EDITOR::OnCharHook().

◆ Kiway()

KIWAY& KIWAY_HOLDER::Kiway ( ) const
inlineinherited

Function Kiway returns 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 56 of file kiway_holder.h.

57  {
58  wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine.
59  return *m_kiway;
60  }
KIWAY * m_kiway
Definition: kiway_holder.h:81

References KIWAY_HOLDER::m_kiway.

Referenced by TREEPROJECT_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_EDIT_FRAME::AddLibrary(), LIB_CONTROL::AddSymbolToSchematic(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), COMMON_CONTROL::ConfigurePaths(), DIALOG_CHOOSE_FOOTPRINT::ConstructRightPanel(), DIALOG_CHOOSE_COMPONENT::ConstructRightPanel(), PCB_BASE_FRAME::CreateAndShow3D_Frame(), SCH_EDIT_FRAME::CreateScreens(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SHIM::DIALOG_SHIM(), CVPCB_MAINFRAME::DisplayStatus(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), EDIT_TOOL::EditFpInFpEditor(), SCH_EDITOR_CONTROL::EditWithLibEdit(), BACK_ANNOTATE::FetchNetlistFromPCB(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), LIB_MANAGER::GetBufferedPart(), LIB_MANAGER::getLibraryBuffer(), FOOTPRINT_EDIT_FRAME::GetPlotSettings(), PCB_EDIT_FRAME::importFile(), SCH_EDIT_FRAME::importFile(), SCH_EDIT_FRAME::InitSheet(), KICAD_MANAGER_FRAME::language_change(), KIWAY_PLAYER::language_change(), LIB_TREE_MODEL_ADAPTER::LIB_TREE_MODEL_ADAPTER(), CVPCB_MAINFRAME::LoadFootprintFiles(), KICAD_MANAGER_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadSheetFromFile(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), KICAD_MANAGER_FRAME::OnCloseWindow(), SCH_EDIT_FRAME::OnCloseWindow(), SCH_EDIT_FRAME::OnExit(), FOOTPRINT_EDIT_FRAME::OnExitKiCad(), FOOTPRINT_VIEWER_FRAME::OnExitKiCad(), LIB_EDIT_FRAME::OnExitKiCad(), SAVE_AS_TRAVERSER::OnFile(), KICAD_MANAGER_FRAME::OnImportEagleFiles(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), EDA_BASE_FRAME::OnPreferences(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_EDIT_ONE_FIELD::OnTextValueSelectButtonClick(), FOOTPRINT_EDIT_FRAME::OnUpdateInsertModuleInBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadModuleFromBoard(), SCH_EDIT_FRAME::OnUpdatePCB(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_EDITOR_CONTROL::Paste(), KIWAY_HOLDER::Prj(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), LIB_EDIT_FRAME::refreshSchematic(), SCH_EDIT_FRAME::rescueProject(), EE_INSPECTION_TOOL::RunSimulation(), SCH_EDIT_FRAME::SaveEEFile(), CVPCB_MAINFRAME::SaveFootprintAssociation(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), LIB_TREE_MODEL_ADAPTER::SavePinnedItems(), SCH_BASE_FRAME::SelectComponentFromLibBrowser(), SCH_EDIT_FRAME::SendCrossProbeClearHighlight(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), CVPCB_MAINFRAME::SendMessageToEESCHEMA(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::SendMessageToPCBNEW(), SCH_EDIT_FRAME::sendNetlistToCvpcb(), FOOTPRINT_EDIT_FRAME::SetPlotSettings(), CVPCB_CONTROL::ShowFootprintViewer(), COMMON_CONTROL::ShowLibraryTable(), COMMON_CONTROL::ShowPlayer(), KICAD_MANAGER_CONTROL::ShowPlayer(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), DIALOG_SCH_SHEET_PROPS::TransferDataFromWindow(), LIB_MANAGER::UpdatePart(), PCB_EDITOR_CONTROL::UpdateSchematicFromPCB(), and DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint().

◆ normalizeToInt()

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

Definition at line 175 of file dialog_color_picker.h.

176  {
177  return ( aValue * aValMax ) + 0.5;
178  }

Referenced by SetEditVals().

◆ OnChangeAlpha()

void DIALOG_COLOR_PICKER::OnChangeAlpha ( wxScrollEvent &  event)
overrideprivatevirtual

Event handlers from wxSpinControl.

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 746 of file dialog_color_picker.cpp.

747 {
748  double alpha = (double)event.GetPosition() / ALPHA_MAX;
749  m_newColor4D.a = alpha;
750  m_NewColorRect->Freeze(); // Avoid flicker
752  m_NewColorRect->Thaw();
753  m_NewColorRect->Refresh();
754 }
void setIconColor(wxStaticBitmap *aStaticBitmap, KIGFX::COLOR4D &aColor4D)
repaint a static bitmap with the aColor4D color
KIGFX::COLOR4D m_newColor4D
the current color4d
double a
Alpha component.
Definition: color4d.h:305
#define ALPHA_MAX

References KIGFX::COLOR4D::a, ALPHA_MAX, m_newColor4D, DIALOG_COLOR_PICKER_BASE::m_NewColorRect, and setIconColor().

◆ 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 811 of file dialog_color_picker.cpp.

812 {
813  m_val = (double)event.GetPosition() / 255.0;
814 
816 
818 
819  drawAll();
820 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void SetEditVals(CHANGED_COLOR aChanged)
KIGFX::COLOR4D m_newColor4D
the current color4d
void FromHSV(double aInH, double aInS, double aInV)
Function FromHSV() Changes currently used color to the one given by hue, saturation and value paramet...
Definition: color4d.cpp:288
double m_val
the current value (0 ... 1.0)

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 777 of file dialog_color_picker.cpp.

778 {
779  double val = (double)event.GetPosition() / 255.0;
780  m_newColor4D.b = val;
782 
783  drawAll();
784 }
void SetEditVals(CHANGED_COLOR aChanged)
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:304

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 767 of file dialog_color_picker.cpp.

768 {
769  double val = (double)event.GetPosition() / 255.0;
770  m_newColor4D.g = val;
772 
773  drawAll();
774 }
void SetEditVals(CHANGED_COLOR aChanged)
double g
Green component.
Definition: color4d.h:303
KIGFX::COLOR4D m_newColor4D
the current color4d

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 787 of file dialog_color_picker.cpp.

788 {
789  m_hue = (double)event.GetPosition();
790 
792 
794 
795  drawAll();
796 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void SetEditVals(CHANGED_COLOR aChanged)
KIGFX::COLOR4D m_newColor4D
the current color4d
void FromHSV(double aInH, double aInS, double aInV)
Function FromHSV() Changes currently used color to the one given by hue, saturation and value paramet...
Definition: color4d.cpp:288
double m_val
the current value (0 ... 1.0)

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 757 of file dialog_color_picker.cpp.

758 {
759  double val = (double)event.GetPosition() / 255.0;
760  m_newColor4D.r = val;
762 
763  drawAll();
764 }
void SetEditVals(CHANGED_COLOR aChanged)
KIGFX::COLOR4D m_newColor4D
the current color4d
double r
Red component.
Definition: color4d.h:302

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

◆ OnChangeEditSat()

void DIALOG_COLOR_PICKER::OnChangeEditSat ( wxSpinEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 799 of file dialog_color_picker.cpp.

800 {
801  m_sat = (double)event.GetPosition() / 255.0;
802 
804 
806 
807  drawAll();
808 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void SetEditVals(CHANGED_COLOR aChanged)
KIGFX::COLOR4D m_newColor4D
the current color4d
void FromHSV(double aInH, double aInS, double aInV)
Function FromHSV() Changes currently used color to the one given by hue, saturation and value paramet...
Definition: color4d.cpp:288
double m_val
the current value (0 ... 1.0)

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

◆ onHSVMouseClick()

void DIALOG_COLOR_PICKER::onHSVMouseClick ( wxMouseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 689 of file dialog_color_picker.cpp.

690 {
691  m_allowMouseEvents = true;
692 
693  if( setHSvaluesFromCursor( event.GetPosition() ) )
694  drawAll();
695 }
bool setHSvaluesFromCursor(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

Event handler for the reset button press.

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 698 of file dialog_color_picker.cpp.

699 {
700  if( !event.Dragging() || !m_allowMouseEvents )
701  return;
702 
703  if( setHSvaluesFromCursor( event.GetPosition() ) )
704  drawAll();
705 }
bool setHSvaluesFromCursor(wxPoint aMouseCursor)
manage the Hue and Saturation settings when the mouse cursor is at aMouseCursor.

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

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 320 of file dialog_shim.cpp.

321 {
322  if( m_firstPaintEvent )
323  {
324 #ifdef __WXMAC__
325  fixOSXCancelButtonIssue( this );
326 #endif
327 
328  selectAllInTextCtrls( GetChildren() );
329 
331  m_initialFocusTarget->SetFocus();
332  else
333  SetFocus(); // Focus the dialog itself
334 
335  m_firstPaintEvent = false;
336  }
337 
338  event.Skip();
339 }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:203
bool m_firstPaintEvent
Definition: dialog_shim.h:202
static void selectAllInTextCtrls(wxWindowList &children)

References 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

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 823 of file dialog_color_picker.cpp.

824 {
828 
829  m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
831 
832  drawAll();
833 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void SetEditVals(CHANGED_COLOR aChanged)
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Function ToHSV() Converts current color (stored in RGB) to HSV format.
Definition: color4d.cpp:235
double g
Green component.
Definition: color4d.h:303
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:304
double m_val
the current value (0 ... 1.0)
KIGFX::COLOR4D m_defaultColor
The default color4d.
double r
Red component.
Definition: color4d.h:302

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

◆ onRGBMouseClick()

void DIALOG_COLOR_PICKER::onRGBMouseClick ( wxMouseEvent &  event)
overrideprivatevirtual

mouse handlers, when clicking on a palette bitmap

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 591 of file dialog_color_picker.cpp.

592 {
593  m_allowMouseEvents = true;
594  wxPoint mousePos = event.GetPosition();
595 
596  // The cursor position is relative to the m_bitmapHSV wxBitmap center
597  wxSize bmsize = m_bitmapRGB->GetSize();
598  int half_size = std::min( bmsize.x, bmsize.y )/2;
599  mousePos.x -= half_size;
600  mousePos.y -= half_size;
601  mousePos.y = -mousePos.y; // Use the bottom to top vertical axis
602 
603  wxPoint dist = m_cursorBitmapRed - 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_cursorBitmapGreen - mousePos;
612 
613  if( std::abs( dist.x ) <= m_cursorsSize/2 && std::abs( dist.y ) <= m_cursorsSize/2 )
614  {
616  return;
617  }
618 
619  dist = m_cursorBitmapBlue - mousePos;
620 
621  if( std::abs( dist.x ) <= m_cursorsSize/2 && std::abs( dist.y ) <= m_cursorsSize/2 )
622  {
624  return;
625  }
626 
627  m_selectedCursor = nullptr;
628 }
static const int dist[10][10]
Definition: ar_matrix.cpp:326
wxPoint m_cursorBitmapRed
the red cursor on the RGB bitmap palette.
wxPoint m_cursorBitmapBlue
the blue cursor on the RGB bitmap palette.
wxBitmap * m_bitmapRGB
the basic RGB palette
wxPoint m_cursorBitmapGreen
the green cursor on the RGB bitmap palette.
wxPoint * m_selectedCursor
the ref cursor to the selected curor, if any, or null.

References dist, m_allowMouseEvents, m_bitmapRGB, m_cursorBitmapBlue, m_cursorBitmapGreen, m_cursorBitmapRed, m_cursorsSize, m_selectedCursor, wxPoint::x, and wxPoint::y.

◆ onRGBMouseDrag()

void DIALOG_COLOR_PICKER::onRGBMouseDrag ( wxMouseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_COLOR_PICKER_BASE.

Definition at line 631 of file dialog_color_picker.cpp.

632 {
633  if( !event.Dragging() || !m_allowMouseEvents )
634  {
635  m_selectedCursor = nullptr;
636  return;
637  }
638 
642  return;
643 
644  // Adjust the HSV cursor position to follow the mouse cursor
645  // The cursor position is relative to the m_bitmapHSV wxBitmap center
646  wxPoint mousePos = event.GetPosition();
647  wxSize bmsize = m_bitmapRGB->GetSize();
648  int half_size = std::min( bmsize.x, bmsize.y )/2;
649  mousePos.x -= half_size;
650  mousePos.y -= half_size;
651  mousePos.y = -mousePos.y; // Use the bottom to top vertical axis
652 
653  half_size -= m_cursorsSize/2; // the actual half_size of the palette area
654 
655  // Change colors according to the selected cursor:
657  {
658  if( mousePos.y >= 0 && mousePos.y <= half_size )
659  m_newColor4D.r = (double)mousePos.y / half_size;
660  else
661  return;
662  }
663 
665  {
666  mousePos.x = -mousePos.x;
667 
668  if( mousePos.x >= 0 && mousePos.x <= half_size )
669  m_newColor4D.g = (double)mousePos.x / half_size;
670  else
671  return;
672  }
673 
675  {
676  if( mousePos.x >= 0 && mousePos.x <= half_size )
677  m_newColor4D.b = (double)mousePos.x / half_size;
678  else
679  return;
680  }
681 
682  m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
684 
685  drawAll();
686 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void SetEditVals(CHANGED_COLOR aChanged)
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Function ToHSV() Converts current color (stored in RGB) to HSV format.
Definition: color4d.cpp:235
double g
Green component.
Definition: color4d.h:303
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:304
double m_val
the current value (0 ... 1.0)
wxPoint m_cursorBitmapRed
the red cursor on the RGB bitmap palette.
wxPoint m_cursorBitmapBlue
the blue cursor on the RGB bitmap palette.
wxBitmap * m_bitmapRGB
the basic RGB palette
double r
Red component.
Definition: color4d.h:302
wxPoint m_cursorBitmapGreen
the green cursor on the RGB bitmap palette.
wxPoint * m_selectedCursor
the ref cursor to the selected curor, if any, or null.

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(), KIGFX::COLOR4D::ToHSV(), wxPoint::x, and wxPoint::y.

◆ Prj()

PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Function Prj returns a reference to the PROJECT "associated with" this KIWAY.

Definition at line 35 of file kiway_holder.cpp.

36 {
37  return Kiway().Prj();
38 }
KIWAY & Kiway() const
Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in...
Definition: kiway_holder.h:56
VTBL_ENTRY PROJECT & Prj() const
Function Prj returns the PROJECT associated with this KIWAY.
Definition: kiway.cpp:171

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

Referenced by PCB_BASE_EDIT_FRAME::AddLibrary(), LIB_MANAGER::addLibrary(), LIB_CONTROL::AddSymbolToSchematic(), SCH_EDIT_FRAME::AppendSchematic(), PCB_EDIT_FRAME::ArchiveModulesOnBoard(), DIALOG_SYMBOL_REMAP::backupProject(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_FOOTPRINT_FP_EDITOR::Cfg3DPath(), DIALOG_FOOTPRINT_BOARD_EDITOR::Cfg3DPath(), PCB_BASE_EDIT_FRAME::CreateNewLibrary(), KICAD_MANAGER_FRAME::CreateNewProject(), DIALOG_PLOT_SCHEMATIC::createPlotFileName(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), FOOTPRINT_EDIT_FRAME::DeleteModuleFromLibrary(), DIALOG_BOARD_STATISTICS::DIALOG_BOARD_STATISTICS(), DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_FOOTPRINT_BOARD_EDITOR::DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::DIALOG_FOOTPRINT_FP_EDITOR(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_SYMBOL_REMAP::DIALOG_SYMBOL_REMAP(), LIB_VIEW_FRAME::DisplayLibInfos(), CVPCB_MAINFRAME::DisplayStatus(), PCB_EDIT_FRAME::doAutoSave(), KICAD_MANAGER_CONTROL::Execute(), PCB_EDIT_FRAME::Export_IDF3(), LIB_CONTROL::ExportSymbolAsSVG(), LIB_CONTROL::ExportView(), PCB_EDIT_FRAME::ExportVRML_File(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), LIB_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), SCH_BASE_FRAME::GetLibPart(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), KICAD_MANAGER_FRAME::GetProjectFileName(), LIB_VIEW_FRAME::GetSelectedSymbol(), FP_THREAD_IFACE::GetTable(), PCB_EDIT_FRAME::importFile(), SCH_EDIT_FRAME::importFile(), SCH_EDITOR_CONTROL::ImportFPAssignments(), FOOTPRINT_EDIT_FRAME::initLibraryTree(), LIB_EDIT_FRAME::KiwayMailIn(), EDA_DRAW_FRAME::LibraryFileBrowser(), LIB_EDIT_FRAME::LoadComponentFromCurrentLib(), CVPCB_MAINFRAME::LoadFootprintFiles(), DIALOG_SPICE_MODEL::loadLibrary(), LIB_EDIT_FRAME::LoadOneSymbol(), KICAD_MANAGER_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProjectFile(), CVPCB_MAINFRAME::LoadProjectFile(), PCB_EDIT_FRAME::LoadProjectSettings(), SCH_EDIT_FRAME::LoadSheetFromFile(), DIALOG_FOOTPRINT_FP_EDITOR::On3DModelCellChanged(), DIALOG_FOOTPRINT_BOARD_EDITOR::On3DModelCellChanged(), FOOTPRINT_VIEWER_FRAME::OnActivate(), DIALOG_FOOTPRINT_FP_EDITOR::OnAdd3DModel(), DIALOG_FOOTPRINT_BOARD_EDITOR::OnAdd3DModel(), KICAD_MANAGER_FRAME::OnBrowseInFileExplorer(), DIALOG_EDIT_COMPONENTS_LIBID::onClickOrphansButton(), SCH_EDIT_FRAME::OnCloseWindow(), DIALOG_GENDRILL::OnGenReportFile(), SCH_EDIT_FRAME::OnImportProject(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), SCH_EDIT_FRAME::OnOpenCvpcb(), KICAD_MANAGER_FRAME::OnOpenFileInTextEditor(), DIALOG_NETLIST::OnOpenNetlistClick(), SCH_EDIT_FRAME::OnOpenPcbnew(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_BOM::OnRunGenerator(), FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng(), DIALOG_ERC::OnSaveReport(), DIALOG_DRC::OnSaveReport(), DIALOG_SPICE_MODEL::onSelectLibrary(), LIB_VIEW_FRAME::OnSelectSymbol(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), SCH_EDIT_FRAME::OnUpdatePCB(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), PANEL_PREV_3D::PANEL_PREV_3D(), SCH_EDITOR_CONTROL::Paste(), MODULE_EDITOR_TOOLS::PasteFootprint(), PCB_BASE_EDIT_FRAME::PCB_BASE_EDIT_FRAME(), SCH_DRAWING_TOOLS::PlaceComponent(), DIALOG_CHOOSE_COMPONENT::PopulateFootprintSelector(), SCH_EDIT_FRAME::Print(), SCH_EDIT_FRAME::PrintPage(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), LIB_VIEW_FRAME::ReCreateListCmp(), LIB_VIEW_FRAME::ReCreateListLib(), EDA_3D_VIEWER::ReloadRequest(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), SCH_EDIT_FRAME::RescueLegacyProject(), SCH_EDIT_FRAME::RescueSymbolLibTableProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), SCH_EDIT_FRAME::SaveEEFile(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), LIB_EDIT_FRAME::saveLibrary(), LIB_EDIT_FRAME::SaveOneSymbol(), LIB_EDIT_FRAME::savePartAs(), SCH_EDIT_FRAME::SaveProject(), CVPCB_MAINFRAME::SaveProjectFile(), SCH_EDIT_FRAME::SaveProjectSettings(), PCB_EDIT_FRAME::SaveProjectSettings(), DIALOG_BOARD_STATISTICS::saveReportClicked(), SCH_BASE_FRAME::saveSymbolLibTables(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), SCH_BASE_FRAME::SelectCompFromLibTree(), PCB_BASE_FRAME::SelectLibrary(), LIB_EDIT_FRAME::SelectLibraryFromList(), LIB_EDIT_FRAME::selectSymLibTable(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), LIB_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), LIB_EDIT_FRAME::SetCurPart(), KICAD_MANAGER_FRAME::SetProjectFileName(), EE_INSPECTION_TOOL::ShowDatasheet(), DIALOG_CHOOSE_COMPONENT::ShowFootprintFor(), LIB_VIEW_FRAME::ShowModal(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), LIB_MANAGER::symTable(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync(), FOOTPRINT_EDIT_FRAME::SyncLibraryTree(), EDA_3D_VIEWER::takeScreenshot(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), NETLIST_DIALOG::TransferDataFromWindow(), DIALOG_FOOTPRINT_FP_EDITOR::TransferDataToWindow(), DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataToWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::UpdateFieldsFromLibrary(), SIM_PLOT_FRAME::updateNetlistExporter(), SCH_SCREEN::UpdateSymbolLinks(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), FOOTPRINT_EDIT_FRAME::updateTitle(), SCH_EDIT_FRAME::UpdateTitle(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::Validate(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_FOOTPRINT_BOARD_EDITOR::~DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::~DIALOG_FOOTPRINT_FP_EDITOR(), and PCB_BASE_EDIT_FRAME::~PCB_BASE_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 237 of file dialog_shim.cpp.

238 {
239  const char* hash_key;
240 
241  if( m_hash_key.size() )
242  {
243  // a special case like EDA_LIST_DIALOG, which has multiple uses.
244  hash_key = m_hash_key.c_str();
245  }
246  else
247  {
248  hash_key = typeid(*this).name();
249  }
250 
251  RECT_MAP::iterator it = class_map.find( hash_key );
252 
253  if( it == class_map.end() )
254  return;
255 
256  EDA_RECT rect = it->second;
257  rect.SetSize( 0, 0 );
258  class_map[ hash_key ] = rect;
259 }
std::string m_hash_key
Definition: dialog_shim.h:197
static RECT_MAP class_map
void SetSize(const wxSize &size)
Definition: eda_rect.h:144
EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44

References class_map, DIALOG_SHIM::m_hash_key, and EDA_RECT::SetSize().

Referenced by DIALOG_EDIT_COMPONENT_IN_LIBRARY::DIALOG_EDIT_COMPONENT_IN_LIBRARY().

◆ SetEditVals()

void DIALOG_COLOR_PICKER::SetEditVals ( CHANGED_COLOR  aChanged)
private

Definition at line 528 of file dialog_color_picker.cpp.

529 {
531 
532  if( aChanged == RED_CHANGED || aChanged == GREEN_CHANGED || aChanged == BLUE_CHANGED )
533  m_newColor4D.ToHSV( m_hue, m_sat, m_val, true );
534 
535  if( aChanged != RED_CHANGED )
536  m_spinCtrlRed->SetValue( normalizeToInt( m_newColor4D.r ) );
537 
538  if( aChanged != GREEN_CHANGED )
540 
541  if( aChanged != BLUE_CHANGED )
543 
544  if( aChanged != HUE_CHANGED )
545  m_spinCtrlHue->SetValue( (int)m_hue );
546 
547  if( aChanged != SAT_CHANGED )
548  m_spinCtrlSaturation->SetValue( m_sat * 255 );
549 
550  if( aChanged != VAL_CHANGED )
551  {
552  m_sliderBrightness->SetValue(normalizeToInt( m_val ) );
553  }
554 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void ToHSV(double &aOutHue, double &aOutSaturation, double &aOutValue, bool aAlwaysDefineHue=false) const
Function ToHSV() Converts current color (stored in RGB) to HSV format.
Definition: color4d.cpp:235
int normalizeToInt(double aValue, int aValMax=255)
double g
Green component.
Definition: color4d.h:303
KIGFX::COLOR4D m_newColor4D
the current color4d
double b
Blue component.
Definition: color4d.h:304
double a
Alpha component.
Definition: color4d.h:305
#define ALPHA_MAX
double m_val
the current value (0 ... 1.0)
double r
Red component.
Definition: color4d.h:302

References KIGFX::COLOR4D::a, ALPHA_MAX, KIGFX::COLOR4D::b, BLUE_CHANGED, KIGFX::COLOR4D::g, GREEN_CHANGED, HUE_CHANGED, 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(), OnChangeBrightness(), OnChangeEditBlue(), OnChangeEditGreen(), OnChangeEditHue(), OnChangeEditRed(), OnChangeEditSat(), OnResetButton(), onRGBMouseDrag(), setHSvaluesFromCursor(), and TransferDataToWindow().

◆ setHSvaluesFromCursor()

bool DIALOG_COLOR_PICKER::setHSvaluesFromCursor ( 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.

Definition at line 708 of file dialog_color_picker.cpp.

709 {
710  wxPoint mousePos = aMouseCursor;
711  wxSize bmsize = m_bitmapHSV->GetSize();
712  int half_size = std::min( bmsize.x, bmsize.y )/2;
713  // Make the cursor position relative to the m_bitmapHSV wxBitmap center
714  mousePos.x -= half_size;
715  mousePos.y -= half_size;
716  mousePos.y = -mousePos.y; // Use the bottom to top vertical axis
717 
718  // The HS cursor position is restricted to a circle of radius half_size
719  double dist_from_centre = hypot( (double)mousePos.x, (double)mousePos.y );
720 
721  if( dist_from_centre > half_size )
722  // Saturation cannot be calculated:
723  return false;
724 
725  m_cursorBitmapHSV = mousePos;
726 
727  // Set saturation and hue from new cursor position:
728  half_size -= m_cursorsSize/2; // the actual half_size of the palette area
729  m_sat = dist_from_centre / half_size;
730 
731  if( m_sat > 1.0 )
732  m_sat = 1.0;
733 
734  m_hue = atan2( mousePos.y, mousePos.x ) / M_PI * 180.0;
735 
736  if( m_hue < 0 )
737  m_hue += 360.0;
738 
741 
742  return true;
743 }
double m_hue
the current hue, in degrees (0 ... 360)
double m_sat
the current saturation (0 ... 1.0)
void SetEditVals(CHANGED_COLOR aChanged)
KIGFX::COLOR4D m_newColor4D
the current color4d
wxPoint m_cursorBitmapHSV
the cursor on the HSV bitmap palette.
wxBitmap * m_bitmapHSV
the basic HUV palette
void FromHSV(double aInH, double aInS, double aInV)
Function FromHSV() Changes currently used color to the one given by hue, saturation and value paramet...
Definition: color4d.cpp:288
double m_val
the current value (0 ... 1.0)

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

Referenced by onHSVMouseClick(), and onHSVMouseDrag().

◆ setIconColor()

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

repaint a static bitmap with the aColor4D color

Event handler from wxSlider: brightness (value) control

Definition at line 89 of file dialog_color_picker.cpp.

90 {
91  // Draw the icon that shows the aColor4D,
92  // with colors according to the color 4D rgb and alpha
93  // for alpha = 1 (no tranparency, the icon is a full rgb color rect
94  // for alpha = 0 (100% tranparency, the icon is a grid of rgb color
95  // and background color small sub rect
96  wxMemoryDC bitmapDC;
97  wxSize size = aStaticBitmap->GetSize();
98  wxBitmap newBm( size );
99  bitmapDC.SelectObject( newBm );
100  wxPen pen( aColor4D.ToColour() );
101  wxBrush brush( aColor4D.ToColour() );
102 
103  // clear background (set bg color to aColor4D )
104  bitmapDC.SetBackground( brush );
105  bitmapDC.Clear();
106 
107 
108  // Draw the alpha subrect
109  int stepx = size.x/8;
110  int stepy = size.y/8;
111 
112  // build the alpha color for icon:
113  // the alpha color is the initial color modified to be
114  // the initial color for transparency = 0 ( alpha = 1 )
115  // and white color for transparency = 1( alpha = 0 )
116  KIGFX::COLOR4D bgcolor( GetBackgroundColour() );
117  KIGFX::COLOR4D alphacolor = aColor4D;
118  alphacolor.r = ( alphacolor.r * aColor4D.a ) + ( bgcolor.r * (1-aColor4D.a) );
119  alphacolor.g = ( alphacolor.g * aColor4D.a ) + ( bgcolor.g * (1-aColor4D.a) );
120  alphacolor.b = ( alphacolor.b * aColor4D.a ) + ( bgcolor.b * (1-aColor4D.a) );
121 
122  pen.SetColour( alphacolor.ToColour() );
123  brush.SetColour( alphacolor.ToColour() );
124  bitmapDC.SetPen( pen );
125  bitmapDC.SetBrush( brush );
126 
127  for( int ii = 0; ii < size.x/stepx; ii+=2 )
128  {
129  for( int jj = 0; jj < size.y/stepy; jj+= 2 )
130  {
131  wxPoint pos( stepx*ii + stepx/2, stepy*jj + stepy/2 );
132  bitmapDC.DrawRectangle( pos, wxSize( stepx, stepy ) );
133  }
134  }
135 
136  aStaticBitmap->SetBitmap( newBm );
137 
138  // Deselect the Tool Bitmap from DC, in order to delete the MemoryDC
139  // safely without deleting the bitmap
140  bitmapDC.SelectObject( wxNullBitmap );
141 }
double g
Green component.
Definition: color4d.h:303
double b
Blue component.
Definition: color4d.h:304
double a
Alpha component.
Definition: color4d.h:305
double r
Red component.
Definition: color4d.h:302
COLOR4D is the color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:40

References KIGFX::COLOR4D::a, KIGFX::COLOR4D::b, KIGFX::COLOR4D::g, and KIGFX::COLOR4D::r.

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

◆ 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 115 of file dialog_shim.h.

116  {
117  m_initialFocusTarget = aWindow;
118  }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:203

References DIALOG_SHIM::m_initialFocusTarget.

Referenced by DIALOG_BOM::DIALOG_BOM(), DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS(), DIALOG_EDIT_LINE_STYLE::DIALOG_EDIT_LINE_STYLE(), DIALOG_EDIT_SHEET_PIN::DIALOG_EDIT_SHEET_PIN(), DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL(), DIALOG_FIND::DIALOG_FIND(), DIALOG_FOOTPRINT_BOARD_EDITOR::DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::DIALOG_FOOTPRINT_FP_EDITOR(), DIALOG_FP_PLUGIN_OPTIONS::DIALOG_FP_PLUGIN_OPTIONS(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_LIB_EDIT_DRAW_ITEM::DIALOG_LIB_EDIT_DRAW_ITEM(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), DIALOG_LIB_EDIT_TEXT::DIALOG_LIB_EDIT_TEXT(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_SCH_FIND::DIALOG_SCH_FIND(), DIALOG_SET_GRID::DIALOG_SET_GRID(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_EDIT_ONE_FIELD::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(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), LIB_EDIT_FRAME::savePartAs(), DIALOG_NON_COPPER_ZONES_EDITOR::TransferDataToWindow(), DIALOG_KEEPOUT_AREA_PROPERTIES::TransferDataToWindow(), and DIALOG_COPPER_ZONE::TransferDataToWindow().

◆ SetKiway()

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

Function SetKiway.

Parameters
aDestis the recipient of aKiway pointer. It is only used for debugging, since "this" is not a wxWindow*. "this" is a KIWAY_HOLDER mix-in.
aKiwayis often from a parent window, or from KIFACE::CreateWindow().

Definition at line 42 of file kiway_holder.cpp.

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

References KIWAY_HOLDER::m_kiway, and name.

Referenced by BM2CMP_FRAME::BM2CMP_FRAME(), InvokePcbLibTableEditor(), PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME(), and SIM_PLOT_FRAME::SIM_PLOT_FRAME().

◆ 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 151 of file dialog_shim.cpp.

152 {
153  wxSize sz( x, y );
154  SetSize( ConvertDialogToPixels( sz ) );
155 }

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

◆ Show()

bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 178 of file dialog_shim.cpp.

179 {
180  bool ret;
181  const char* hash_key;
182 
183  if( m_hash_key.size() )
184  {
185  // a special case like EDA_LIST_DIALOG, which has multiple uses.
186  hash_key = m_hash_key.c_str();
187  }
188  else
189  {
190  hash_key = typeid(*this).name();
191  }
192 
193  // Show or hide the window. If hiding, save current position and size.
194  // If showing, use previous position and size.
195  if( show )
196  {
197 #ifndef __WINDOWS__
198  wxDialog::Raise(); // Needed on OS X and some other window managers (i.e. Unity)
199 #endif
200  ret = wxDialog::Show( show );
201 
202  // classname is key, returns a zeroed out default EDA_RECT if none existed before.
203  EDA_RECT savedDialogRect = class_map[ hash_key ];
204 
205  if( savedDialogRect.GetSize().x != 0 && savedDialogRect.GetSize().y != 0 )
206  {
207  SetSize( savedDialogRect.GetPosition().x,
208  savedDialogRect.GetPosition().y,
209  std::max( wxDialog::GetSize().x, savedDialogRect.GetSize().x ),
210  std::max( wxDialog::GetSize().y, savedDialogRect.GetSize().y ),
211  0 );
212  }
213 
214  // Be sure that the dialog appears in a visible area
215  // (the dialog position might have been stored at the time when it was
216  // shown on another display)
217  if( wxDisplay::GetFromWindow( this ) == wxNOT_FOUND )
218  Centre();
219  }
220  else
221  {
222  // Save the dialog's position & size before hiding, using classname as key
223  class_map[ hash_key ] = EDA_RECT( wxDialog::GetPosition(), wxDialog::GetSize() );
224 
225 #ifdef __WXMAC__
226  if ( m_eventLoop )
227  m_eventLoop->Exit( GetReturnCode() ); // Needed for APP-MODAL dlgs on OSX
228 #endif
229 
230  ret = wxDialog::Show( show );
231  }
232 
233  return ret;
234 }
std::string m_hash_key
Definition: dialog_shim.h:197
static RECT_MAP class_map
const wxPoint GetPosition() const
Definition: eda_rect.h:115
EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
const wxSize GetSize() const
Definition: eda_rect.h:103

References class_map, EDA_RECT::GetPosition(), EDA_RECT::GetSize(), DIALOG_SHIM::m_hash_key, wxPoint::x, and wxPoint::y.

Referenced by DIALOG_SHIM::EndQuasiModal(), InvokeDialogERC(), SCH_EDIT_FRAME::OnAnnotate(), DIALOG_DRC::OnDRCItemDClick(), DIALOG_ERC::OnERCItemDClick(), DIALOG_CLEANUP_TRACKS_AND_VIAS::OnLeftDClickItem(), POSITION_RELATIVE_TOOL::PositionRelative(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), DRC::ShowDRCDialog(), SCH_EDIT_FRAME::ShowFindReplaceDialog(), DIALOG_SHIM::ShowQuasiModal(), DIALOG_POSITION_RELATIVE::UpdateAnchor(), and SCH_EDIT_FRAME::UpdateHierarchyNavigator().

◆ ShowQuasiModal()

int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 365 of file dialog_shim.cpp.

366 {
367  // This is an exception safe way to zero a pointer before returning.
368  // Yes, even though DismissModal() clears this first normally, this is
369  // here in case there's an exception before the dialog is dismissed.
370  struct NULLER
371  {
372  void*& m_what;
373  NULLER( void*& aPtr ) : m_what( aPtr ) {}
374  ~NULLER() { m_what = 0; } // indeed, set it to NULL on destruction
375  } clear_this( (void*&) m_qmodal_loop );
376 
377  // release the mouse if it's currently captured as the window having it
378  // will be disabled when this dialog is shown -- but will still keep the
379  // capture making it impossible to do anything in the modal dialog itself
380  wxWindow* win = wxWindow::GetCapture();
381  if( win )
382  win->ReleaseMouse();
383 
384  // Get the optimal parent
385  wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
386 
387  // Show the optimal parent
388  DBG( if( parent ) printf( "%s: optimal parent: %s\n", __func__, typeid(*parent).name() );)
389 
390  wxASSERT_MSG( !m_qmodal_parent_disabler,
391  wxT( "Caller using ShowQuasiModal() twice on same window?" ) );
392 
393  // quasi-modal: disable only my "optimal" parent
395 
396 #ifdef __WXMAC__
397  // Apple in its infinite wisdom will raise a disabled window before even passing
398  // us the event, so we have no way to stop it. Instead, we must set an order on
399  // the windows so that the quasi-modal will be pushed in front of the disabled
400  // window when it is raised.
401  ReparentQuasiModal();
402 #endif
403  Show( true );
404 
405  m_qmodal_showing = true;
406 
407  WX_EVENT_LOOP event_loop;
408 
409  m_qmodal_loop = &event_loop;
410 
411  event_loop.Run();
412 
413  m_qmodal_showing = false;
414 
415  return GetReturnCode();
416 }
bool m_qmodal_showing
Definition: dialog_shim.h:207
#define WX_EVENT_LOOP
Definition: kiway_player.h:41
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:205
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:208
Toggle a window's "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:35
#define DBG(x)
Definition: fctsys.h:33

References DBG, DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, DIALOG_SHIM::m_qmodal_showing, DIALOG_SHIM::Show(), and WX_EVENT_LOOP.

Referenced by PCB_EDIT_FRAME::DoShowBoardSetupDialog(), SCH_EDIT_FRAME::DoShowSchematicSetupDialog(), LIB_EDIT_TOOL::editFieldProperties(), SCH_EDITOR_CONTROL::EditSymbolFields(), LIB_EDIT_TOOL::editSymbolProperties(), GLOBAL_EDIT_TOOL::EditTracksAndVias(), GLOBAL_EDIT_TOOL::ExchangeFootprints(), PCB_EDIT_FRAME::InstallExchangeModuleFrame(), PCB_BASE_FRAME::InstallPadOptionsFrame(), InvokeDialogEditComponentsLibId(), InvokeDialogRescueEach(), InvokeDialogUpdateFields(), SCH_EDIT_FRAME::OnRemapSymbols(), LIB_VIEW_FRAME::OnSelectSymbol(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_TOOL::Properties(), EDIT_TOOL::Properties(), SCH_BASE_FRAME::SelectCompFromLibTree(), and PCB_BASE_FRAME::SelectFootprintFromLibTree().

◆ TransferDataToWindow()

bool DIALOG_COLOR_PICKER::TransferDataToWindow ( )
overrideprivate

called when creating the dialog

Definition at line 144 of file dialog_color_picker.cpp.

145 {
146  // Draw all bitmaps, with colors according to the color 4D
149  drawAll();
150 
151  // Configure the spin control sizes
157 
158  m_notebook->GetPage( 0 )->Layout();
159  m_notebook->GetPage( 1 )->Layout();
160 
162 
163  return true;
164 }
void SetEditVals(CHANGED_COLOR aChanged)
void configureSpinCtrl(wxSpinCtrl *aCtrl)
void FinishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
void setIconColor(wxStaticBitmap *aStaticBitmap, KIGFX::COLOR4D &aColor4D)
repaint a static bitmap with the aColor4D color
KIGFX::COLOR4D m_previousColor4D
the inital color4d

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 setIconColor().

◆ VertPixelsFromDU()

int DIALOG_SHIM::VertPixelsFromDU ( int  y)
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 165 of file dialog_shim.cpp.

166 {
167  wxSize sz( 0, y );
168  return ConvertDialogToPixels( sz ).y;
169 }

Referenced by DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT().

Member Data Documentation

◆ m_ActivePage

int DIALOG_COLOR_PICKER::m_ActivePage = 0
static

the active notebook page, stored during a session

Definition at line 83 of file dialog_color_picker.h.

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

◆ 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 95 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_buttonsColor

std::vector<wxBitmapButton*> DIALOG_COLOR_PICKER::m_buttonsColor
private

list of defined colors buttons

Definition at line 118 of file dialog_color_picker.h.

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

◆ 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 102 of file dialog_color_picker.h.

Referenced by buttColorClick(), and initDefinedColors().

◆ m_cursorBitmapBlue

wxPoint DIALOG_COLOR_PICKER::m_cursorBitmapBlue
private

the blue cursor on the RGB bitmap palette.

Definition at line 107 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 106 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 108 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 105 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 99 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 202 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 203 of file dialog_shim.h.

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

◆ 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_previousColor4D

KIGFX::COLOR4D DIALOG_COLOR_PICKER::m_previousColor4D
private

the inital color4d

Definition at line 97 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 205 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 207 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 curor, if any, or null.

Definition at line 109 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_staticline

wxStaticLine* DIALOG_COLOR_PICKER_BASE::m_staticline
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_units

◆ m_val

double DIALOG_COLOR_PICKER::m_val
private

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