]> git.saurik.com Git - wxWidgets.git/blame - src/generic/colrdlgg.cpp
Change wxNotebook selection before sending page changed event in wxMSW.
[wxWidgets.git] / src / generic / colrdlgg.cpp
CommitLineData
c801d85f 1/////////////////////////////////////////////////////////////////////////////
f4da9a94 2// Name: src/generic/colrdlgg.cpp
c801d85f
KB
3// Purpose: Choice dialogs
4// Author: Julian Smart
5// Modified by:
6// Created: 04/01/98
7// RCS-ID: $Id$
6aa89a22 8// Copyright: (c) Julian Smart
65571936 9// Licence: wxWindows licence
c801d85f
KB
10/////////////////////////////////////////////////////////////////////////////
11
c801d85f
KB
12// For compilers that support precompilation, includes "wx.h".
13#include "wx/wxprec.h"
14
15#ifdef __BORLANDC__
1e6feb95 16 #pragma hdrstop
c801d85f
KB
17#endif
18
ff654490 19#if wxUSE_COLOURDLG
1e6feb95 20
c801d85f 21#ifndef WX_PRECOMP
1e6feb95
VZ
22 #include "wx/utils.h"
23 #include "wx/intl.h"
24 #include "wx/dialog.h"
25 #include "wx/listbox.h"
26 #include "wx/button.h"
27 #include "wx/stattext.h"
28 #include "wx/layout.h"
29 #include "wx/dcclient.h"
1e6feb95 30 #include "wx/sizer.h"
f4da9a94 31 #include "wx/slider.h"
4130b487
RR
32#endif
33
34#if wxUSE_STATLINE
35 #include "wx/statline.h"
c801d85f
KB
36#endif
37
081d8d96 38#include "wx/colourdata.h"
c801d85f
KB
39#include "wx/generic/colrdlgg.h"
40
c801d85f
KB
41IMPLEMENT_DYNAMIC_CLASS(wxGenericColourDialog, wxDialog)
42
43BEGIN_EVENT_TABLE(wxGenericColourDialog, wxDialog)
c35414db 44 EVT_BUTTON(wxID_ADD_CUSTOM, wxGenericColourDialog::OnAddCustom)
6bb44116 45#if wxUSE_SLIDER
c35414db
VZ
46 EVT_SLIDER(wxID_RED_SLIDER, wxGenericColourDialog::OnRedSlider)
47 EVT_SLIDER(wxID_GREEN_SLIDER, wxGenericColourDialog::OnGreenSlider)
48 EVT_SLIDER(wxID_BLUE_SLIDER, wxGenericColourDialog::OnBlueSlider)
6bb44116 49#endif
c35414db
VZ
50 EVT_PAINT(wxGenericColourDialog::OnPaint)
51 EVT_MOUSE_EVENTS(wxGenericColourDialog::OnMouseEvent)
52 EVT_CLOSE(wxGenericColourDialog::OnCloseWindow)
c801d85f
KB
53END_EVENT_TABLE()
54
c801d85f
KB
55
56/*
57 * Generic wxColourDialog
58 */
59
61138de0
VZ
60// don't change the number of elements (48) in this array, the code below is
61// hardcoded to use it
a243da29 62static const wxChar *const wxColourDialogNames[] =
61138de0
VZ
63{
64 wxT("ORANGE"),
65 wxT("GOLDENROD"),
66 wxT("WHEAT"),
67 wxT("SPRING GREEN"),
68 wxT("SKY BLUE"),
69 wxT("SLATE BLUE"),
70 wxT("MEDIUM VIOLET RED"),
71 wxT("PURPLE"),
72
73 wxT("RED"),
74 wxT("YELLOW"),
75 wxT("MEDIUM SPRING GREEN"),
76 wxT("PALE GREEN"),
77 wxT("CYAN"),
78 wxT("LIGHT STEEL BLUE"),
79 wxT("ORCHID"),
80 wxT("LIGHT MAGENTA"),
81
82 wxT("BROWN"),
83 wxT("YELLOW"),
84 wxT("GREEN"),
85 wxT("CADET BLUE"),
86 wxT("MEDIUM BLUE"),
87 wxT("MAGENTA"),
88 wxT("MAROON"),
89 wxT("ORANGE RED"),
90
91 wxT("FIREBRICK"),
92 wxT("CORAL"),
93 wxT("FOREST GREEN"),
94 wxT("AQUAMARINE"),
95 wxT("BLUE"),
96 wxT("NAVY"),
97 wxT("THISTLE"),
98 wxT("MEDIUM VIOLET RED"),
99
100 wxT("INDIAN RED"),
101 wxT("GOLD"),
102 wxT("MEDIUM SEA GREEN"),
103 wxT("MEDIUM BLUE"),
104 wxT("MIDNIGHT BLUE"),
105 wxT("GREY"),
106 wxT("PURPLE"),
107 wxT("KHAKI"),
108
109 wxT("BLACK"),
110 wxT("MEDIUM FOREST GREEN"),
111 wxT("KHAKI"),
112 wxT("DARK GREY"),
113 wxT("SEA GREEN"),
114 wxT("LIGHT GREY"),
115 wxT("MEDIUM SLATE BLUE"),
116 wxT("WHITE")
117};
c801d85f 118
4130b487 119wxGenericColourDialog::wxGenericColourDialog()
c801d85f 120{
66c59e2c
VZ
121 m_whichKind = 1;
122 m_colourSelection = -1;
c801d85f
KB
123}
124
f6bcfd97
BP
125wxGenericColourDialog::wxGenericColourDialog(wxWindow *parent,
126 wxColourData *data)
c801d85f 127{
66c59e2c
VZ
128 m_whichKind = 1;
129 m_colourSelection = -1;
f4da9a94 130 Create(parent, data);
c801d85f
KB
131}
132
4130b487 133wxGenericColourDialog::~wxGenericColourDialog()
c801d85f
KB
134{
135}
136
74e3313b 137void wxGenericColourDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
c801d85f 138{
f4da9a94 139 EndModal(wxID_CANCEL);
c801d85f
KB
140}
141
142bool wxGenericColourDialog::Create(wxWindow *parent, wxColourData *data)
143{
cdc48273 144 if ( !wxDialog::Create(GetParentForModalDialog(parent, 0), wxID_ANY,
2229243b
VZ
145 _("Choose colour"),
146 wxPoint(0, 0), wxSize(900, 900)) )
ca65c044 147 return false;
c35414db 148
f6bcfd97 149 if (data)
66c59e2c 150 m_colourData = *data;
c35414db 151
f6bcfd97
BP
152 InitializeColours();
153 CalculateMeasurements();
154 CreateWidgets();
155
ca65c044 156 return true;
c801d85f
KB
157}
158
4130b487 159int wxGenericColourDialog::ShowModal()
c801d85f 160{
f4da9a94 161 return wxDialog::ShowModal();
c801d85f
KB
162}
163
164
165// Internal functions
166void wxGenericColourDialog::OnMouseEvent(wxMouseEvent& event)
167{
168 if (event.ButtonDown(1))
169 {
170 int x = (int)event.GetX();
171 int y = (int)event.GetY();
172
b1f9d7bf
DW
173#ifdef __WXPM__
174 // Handle OS/2's reverse coordinate system and account for the dialog title
175 int nClientHeight;
176
177 GetClientSize(NULL, &nClientHeight);
178 y = (nClientHeight - y) + 20;
179#endif
66c59e2c
VZ
180 if ((x >= m_standardColoursRect.x && x <= (m_standardColoursRect.x + m_standardColoursRect.width)) &&
181 (y >= m_standardColoursRect.y && y <= (m_standardColoursRect.y + m_standardColoursRect.height)))
c801d85f 182 {
66c59e2c
VZ
183 int selX = (int)(x - m_standardColoursRect.x)/(m_smallRectangleSize.x + m_gridSpacing);
184 int selY = (int)(y - m_standardColoursRect.y)/(m_smallRectangleSize.y + m_gridSpacing);
c801d85f
KB
185 int ptr = (int)(selX + selY*8);
186 OnBasicColourClick(ptr);
187 }
66c59e2c
VZ
188 else if ((x >= m_customColoursRect.x && x <= (m_customColoursRect.x + m_customColoursRect.width)) &&
189 (y >= m_customColoursRect.y && y <= (m_customColoursRect.y + m_customColoursRect.height)))
c801d85f 190 {
66c59e2c
VZ
191 int selX = (int)(x - m_customColoursRect.x)/(m_smallRectangleSize.x + m_gridSpacing);
192 int selY = (int)(y - m_customColoursRect.y)/(m_smallRectangleSize.y + m_gridSpacing);
c801d85f
KB
193 int ptr = (int)(selX + selY*8);
194 OnCustomColourClick(ptr);
195 }
c10920de
VS
196 else
197 event.Skip();
c801d85f 198 }
c10920de
VS
199 else
200 event.Skip();
c801d85f
KB
201}
202
203void wxGenericColourDialog::OnPaint(wxPaintEvent& event)
204{
1e269f30 205#if !defined(__WXMOTIF__) && !defined(__WXPM__) && !defined(__WXCOCOA__) && !defined(__WXOSX__)
7a893a31
WS
206 wxDialog::OnPaint(event);
207#else
208 wxUnusedVar(event);
d75638f8 209#endif
c801d85f 210
7a893a31 211 wxPaintDC dc(this);
c801d85f 212
7a893a31
WS
213 PaintBasicColours(dc);
214 PaintCustomColours(dc);
215 PaintCustomColour(dc);
216 PaintHighlight(dc, true);
c801d85f
KB
217}
218
4130b487 219void wxGenericColourDialog::CalculateMeasurements()
c801d85f 220{
66c59e2c
VZ
221 m_smallRectangleSize.x = 18;
222 m_smallRectangleSize.y = 14;
223 m_customRectangleSize.x = 40;
224 m_customRectangleSize.y = 40;
c801d85f 225
66c59e2c
VZ
226 m_gridSpacing = 6;
227 m_sectionSpacing = 15;
c801d85f 228
66c59e2c 229 m_standardColoursRect.x = 10;
b1f9d7bf 230#ifdef __WXPM__
66c59e2c 231 m_standardColoursRect.y = 15 + 20; /* OS/2 needs to account for dialog titlebar */
b1f9d7bf 232#else
66c59e2c 233 m_standardColoursRect.y = 15;
b1f9d7bf 234#endif
66c59e2c
VZ
235 m_standardColoursRect.width = (8*m_smallRectangleSize.x) + (7*m_gridSpacing);
236 m_standardColoursRect.height = (6*m_smallRectangleSize.y) + (5*m_gridSpacing);
237
238 m_customColoursRect.x = m_standardColoursRect.x;
239 m_customColoursRect.y = m_standardColoursRect.y + m_standardColoursRect.height + 20;
240 m_customColoursRect.width = (8*m_smallRectangleSize.x) + (7*m_gridSpacing);
241 m_customColoursRect.height = (2*m_smallRectangleSize.y) + (1*m_gridSpacing);
242
243 m_singleCustomColourRect.x = m_customColoursRect.width + m_customColoursRect.x + m_sectionSpacing;
244 m_singleCustomColourRect.y = 80;
245 m_singleCustomColourRect.width = m_customRectangleSize.x;
246 m_singleCustomColourRect.height = m_customRectangleSize.y;
247
248 m_okButtonX = 10;
249 m_customButtonX = m_singleCustomColourRect.x ;
250 m_buttonY = m_customColoursRect.y + m_customColoursRect.height + 10;
c801d85f
KB
251}
252
4130b487 253void wxGenericColourDialog::CreateWidgets()
c801d85f 254{
4130b487 255 wxBeginBusyCursor();
c801d85f 256
6bb44116
WS
257 wxBoxSizer *topSizer = new wxBoxSizer( wxVERTICAL );
258
f79a46f8 259 const int sliderHeight = 160;
4130b487 260
bd9f3519 261 // first sliders
6bb44116 262#if wxUSE_SLIDER
66c59e2c 263 const int sliderX = m_singleCustomColourRect.x + m_singleCustomColourRect.width + m_sectionSpacing;
6bb44116 264
66c59e2c 265 m_redSlider = new wxSlider(this, wxID_RED_SLIDER, m_colourData.m_dataColour.Red(), 0, 255,
a3b8b891 266 wxDefaultPosition, wxSize(wxDefaultCoord, sliderHeight), wxSL_VERTICAL|wxSL_LABELS|wxSL_INVERSE);
66c59e2c 267 m_greenSlider = new wxSlider(this, wxID_GREEN_SLIDER, m_colourData.m_dataColour.Green(), 0, 255,
a3b8b891 268 wxDefaultPosition, wxSize(wxDefaultCoord, sliderHeight), wxSL_VERTICAL|wxSL_LABELS|wxSL_INVERSE);
66c59e2c 269 m_blueSlider = new wxSlider(this, wxID_BLUE_SLIDER, m_colourData.m_dataColour.Blue(), 0, 255,
a3b8b891 270 wxDefaultPosition, wxSize(wxDefaultCoord, sliderHeight), wxSL_VERTICAL|wxSL_LABELS|wxSL_INVERSE);
f79a46f8
WS
271
272 wxBoxSizer *sliderSizer = new wxBoxSizer( wxHORIZONTAL );
273
bd9f3519 274 sliderSizer->Add(sliderX, sliderHeight );
4130b487 275
bd9f3519
VZ
276 wxSizerFlags flagsRight;
277 flagsRight.Align(wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL).DoubleBorder();
278
66c59e2c
VZ
279 sliderSizer->Add(m_redSlider, flagsRight);
280 sliderSizer->Add(m_greenSlider,flagsRight);
281 sliderSizer->Add(m_blueSlider,flagsRight);
bd9f3519
VZ
282
283 topSizer->Add(sliderSizer, wxSizerFlags().Centre().DoubleBorder());
6bb44116 284#else
bd9f3519 285 topSizer->Add(1, sliderHeight, wxSizerFlags(1).Centre().TripleBorder());
6bb44116 286#endif // wxUSE_SLIDER
6c34d0ed 287
bd9f3519
VZ
288 // then the custom button
289 topSizer->Add(new wxButton(this, wxID_ADD_CUSTOM,
290 _("Add to custom colours") ),
291 wxSizerFlags().DoubleHorzBorder());
c35414db 292
bd9f3519
VZ
293 // then the standard buttons
294 wxSizer *buttonsizer = CreateSeparatedButtonSizer(wxOK | wxCANCEL);
295 if ( buttonsizer )
296 {
297 topSizer->Add(buttonsizer, wxSizerFlags().Expand().DoubleBorder());
298 }
c801d85f 299
ca65c044 300 SetAutoLayout( true );
f79a46f8 301 SetSizer( topSizer );
6c34d0ed 302
f79a46f8
WS
303 topSizer->SetSizeHints( this );
304 topSizer->Fit( this );
c801d85f 305
4130b487 306 Centre( wxBOTH );
c801d85f 307
4130b487 308 wxEndBusyCursor();
c801d85f
KB
309}
310
311void wxGenericColourDialog::InitializeColours(void)
312{
a4ba2eec 313 size_t i;
ea8a9699 314
61138de0 315 for (i = 0; i < WXSIZEOF(wxColourDialogNames); i++)
ea8a9699 316 {
564a150b
VZ
317 wxColour col = wxTheColourDatabase->Find(wxColourDialogNames[i]);
318 if (col.Ok())
66c59e2c 319 m_standardColours[i].Set(col.Red(), col.Green(), col.Blue());
ea8a9699 320 else
66c59e2c 321 m_standardColours[i].Set(0, 0, 0);
ea8a9699 322 }
c801d85f 323
66c59e2c 324 for (i = 0; i < WXSIZEOF(m_customColours); i++)
ea8a9699 325 {
66c59e2c 326 wxColour c = m_colourData.GetCustomColour(i);
a2b99ff5 327 if (c.Ok())
66c59e2c 328 m_customColours[i] = m_colourData.GetCustomColour(i);
a2b99ff5 329 else
66c59e2c 330 m_customColours[i] = wxColour(255, 255, 255);
ea8a9699 331 }
c801d85f 332
66c59e2c 333 wxColour curr = m_colourData.GetColour();
ea8a9699
VZ
334 if ( curr.Ok() )
335 {
66c59e2c 336 bool m_initColourFound = false;
ea8a9699 337
61138de0 338 for (i = 0; i < WXSIZEOF(wxColourDialogNames); i++)
ea8a9699 339 {
66c59e2c 340 if ( m_standardColours[i] == curr && !m_initColourFound )
ea8a9699 341 {
66c59e2c
VZ
342 m_whichKind = 1;
343 m_colourSelection = i;
344 m_initColourFound = true;
ea8a9699
VZ
345 break;
346 }
347 }
66c59e2c 348 if ( !m_initColourFound )
ea8a9699 349 {
66c59e2c 350 for ( i = 0; i < WXSIZEOF(m_customColours); i++ )
ea8a9699 351 {
66c59e2c 352 if ( m_customColours[i] == curr )
ea8a9699 353 {
66c59e2c
VZ
354 m_whichKind = 2;
355 m_colourSelection = i;
ea8a9699
VZ
356 break;
357 }
358 }
359 }
66c59e2c 360 m_colourData.m_dataColour.Set( curr.Red(), curr.Green(), curr.Blue() );
ea8a9699
VZ
361 }
362 else
363 {
66c59e2c
VZ
364 m_whichKind = 1;
365 m_colourSelection = 0;
366 m_colourData.m_dataColour.Set( 0, 0, 0 );
ea8a9699 367 }
c801d85f
KB
368}
369
370void wxGenericColourDialog::PaintBasicColours(wxDC& dc)
371{
f4da9a94
WS
372 int i;
373 for (i = 0; i < 6; i++)
c801d85f 374 {
f4da9a94
WS
375 int j;
376 for (j = 0; j < 8; j++)
377 {
378 int ptr = i*8 + j;
c35414db 379
66c59e2c
VZ
380 int x = (j*(m_smallRectangleSize.x+m_gridSpacing) + m_standardColoursRect.x);
381 int y = (i*(m_smallRectangleSize.y+m_gridSpacing) + m_standardColoursRect.y);
c801d85f 382
f4da9a94 383 dc.SetPen(*wxBLACK_PEN);
a243da29 384 wxBrush brush(m_standardColours[ptr]);
f4da9a94 385 dc.SetBrush(brush);
c801d85f 386
66c59e2c 387 dc.DrawRectangle( x, y, m_smallRectangleSize.x, m_smallRectangleSize.y);
f4da9a94 388 }
c801d85f 389 }
c801d85f
KB
390}
391
392void wxGenericColourDialog::PaintCustomColours(wxDC& dc)
393{
c801d85f
KB
394 int i;
395 for (i = 0; i < 2; i++)
396 {
397 int j;
398 for (j = 0; j < 8; j++)
399 {
400 int ptr = i*8 + j;
c35414db 401
66c59e2c
VZ
402 int x = (j*(m_smallRectangleSize.x+m_gridSpacing)) + m_customColoursRect.x;
403 int y = (i*(m_smallRectangleSize.y+m_gridSpacing)) + m_customColoursRect.y;
c801d85f
KB
404
405 dc.SetPen(*wxBLACK_PEN);
406
a243da29 407 wxBrush brush(m_customColours[ptr]);
c801d85f
KB
408 dc.SetBrush(brush);
409
66c59e2c 410 dc.DrawRectangle( x, y, m_smallRectangleSize.x, m_smallRectangleSize.y);
c801d85f
KB
411 }
412 }
c801d85f
KB
413}
414
415void wxGenericColourDialog::PaintHighlight(wxDC& dc, bool draw)
416{
66c59e2c 417 if ( m_colourSelection < 0 )
ea8a9699
VZ
418 return;
419
c801d85f
KB
420 // Number of pixels bigger than the standard rectangle size
421 // for drawing a highlight
422 int deltaX = 2;
423 int deltaY = 2;
424
66c59e2c 425 if (m_whichKind == 1)
c801d85f
KB
426 {
427 // Standard colours
66c59e2c
VZ
428 int y = (int)(m_colourSelection / 8);
429 int x = (int)(m_colourSelection - (y*8));
c801d85f 430
66c59e2c
VZ
431 x = (x*(m_smallRectangleSize.x + m_gridSpacing) + m_standardColoursRect.x) - deltaX;
432 y = (y*(m_smallRectangleSize.y + m_gridSpacing) + m_standardColoursRect.y) - deltaY;
c801d85f
KB
433
434 if (draw)
435 dc.SetPen(*wxBLACK_PEN);
436 else
437 dc.SetPen(*wxLIGHT_GREY_PEN);
438
439 dc.SetBrush(*wxTRANSPARENT_BRUSH);
66c59e2c 440 dc.DrawRectangle( x, y, (m_smallRectangleSize.x + (2*deltaX)), (m_smallRectangleSize.y + (2*deltaY)));
c801d85f
KB
441 }
442 else
443 {
444 // User-defined colours
66c59e2c
VZ
445 int y = (int)(m_colourSelection / 8);
446 int x = (int)(m_colourSelection - (y*8));
c801d85f 447
66c59e2c
VZ
448 x = (x*(m_smallRectangleSize.x + m_gridSpacing) + m_customColoursRect.x) - deltaX;
449 y = (y*(m_smallRectangleSize.y + m_gridSpacing) + m_customColoursRect.y) - deltaY;
c801d85f
KB
450
451 if (draw)
452 dc.SetPen(*wxBLACK_PEN);
453 else
454 dc.SetPen(*wxLIGHT_GREY_PEN);
c35414db 455
c801d85f 456 dc.SetBrush(*wxTRANSPARENT_BRUSH);
66c59e2c 457 dc.DrawRectangle( x, y, (m_smallRectangleSize.x + (2*deltaX)), (m_smallRectangleSize.y + (2*deltaY)));
c801d85f 458 }
c801d85f
KB
459}
460
461void wxGenericColourDialog::PaintCustomColour(wxDC& dc)
462{
f4da9a94 463 dc.SetPen(*wxBLACK_PEN);
c801d85f 464
a243da29 465 wxBrush *brush = new wxBrush(m_colourData.m_dataColour);
f4da9a94 466 dc.SetBrush(*brush);
c801d85f 467
66c59e2c
VZ
468 dc.DrawRectangle( m_singleCustomColourRect.x, m_singleCustomColourRect.y,
469 m_customRectangleSize.x, m_customRectangleSize.y);
c801d85f 470
f4da9a94
WS
471 dc.SetBrush(wxNullBrush);
472 delete brush;
c801d85f
KB
473}
474
475void wxGenericColourDialog::OnBasicColourClick(int which)
476{
ca65c044 477 wxClientDC dc(this);
c801d85f 478
ca65c044 479 PaintHighlight(dc, false);
66c59e2c
VZ
480 m_whichKind = 1;
481 m_colourSelection = which;
2997ca30 482
6bb44116 483#if wxUSE_SLIDER
66c59e2c
VZ
484 m_redSlider->SetValue( m_standardColours[m_colourSelection].Red() );
485 m_greenSlider->SetValue( m_standardColours[m_colourSelection].Green() );
486 m_blueSlider->SetValue( m_standardColours[m_colourSelection].Blue() );
6bb44116 487#endif // wxUSE_SLIDER
2997ca30 488
66c59e2c
VZ
489 m_colourData.m_dataColour.Set(m_standardColours[m_colourSelection].Red(),
490 m_standardColours[m_colourSelection].Green(),
491 m_standardColours[m_colourSelection].Blue());
c801d85f 492
ca65c044
WS
493 PaintCustomColour(dc);
494 PaintHighlight(dc, true);
c801d85f
KB
495}
496
497void wxGenericColourDialog::OnCustomColourClick(int which)
498{
ca65c044
WS
499 wxClientDC dc(this);
500 PaintHighlight(dc, false);
66c59e2c
VZ
501 m_whichKind = 2;
502 m_colourSelection = which;
2997ca30 503
6bb44116 504#if wxUSE_SLIDER
66c59e2c
VZ
505 m_redSlider->SetValue( m_customColours[m_colourSelection].Red() );
506 m_greenSlider->SetValue( m_customColours[m_colourSelection].Green() );
507 m_blueSlider->SetValue( m_customColours[m_colourSelection].Blue() );
6bb44116 508#endif // wxUSE_SLIDER
2997ca30 509
66c59e2c
VZ
510 m_colourData.m_dataColour.Set(m_customColours[m_colourSelection].Red(),
511 m_customColours[m_colourSelection].Green(),
512 m_customColours[m_colourSelection].Blue());
2997ca30 513
ca65c044
WS
514 PaintCustomColour(dc);
515 PaintHighlight(dc, true);
c801d85f
KB
516}
517
518/*
519void wxGenericColourDialog::OnOk(void)
520{
ca65c044 521 Show(false);
c801d85f
KB
522}
523
524void wxGenericColourDialog::OnCancel(void)
525{
ca65c044
WS
526 colourDialogCancelled = true;
527 Show(false);
c801d85f
KB
528}
529*/
530
531void wxGenericColourDialog::OnAddCustom(wxCommandEvent& WXUNUSED(event))
532{
533 wxClientDC dc(this);
66c59e2c 534 if (m_whichKind != 2)
c801d85f 535 {
ca65c044 536 PaintHighlight(dc, false);
66c59e2c
VZ
537 m_whichKind = 2;
538 m_colourSelection = 0;
ca65c044 539 PaintHighlight(dc, true);
c801d85f
KB
540 }
541
66c59e2c
VZ
542 m_customColours[m_colourSelection].Set(m_colourData.m_dataColour.Red(),
543 m_colourData.m_dataColour.Green(),
544 m_colourData.m_dataColour.Blue());
2997ca30 545
66c59e2c 546 m_colourData.SetCustomColour(m_colourSelection, m_customColours[m_colourSelection]);
c35414db 547
c801d85f
KB
548 PaintCustomColours(dc);
549}
550
6bb44116
WS
551#if wxUSE_SLIDER
552
c801d85f
KB
553void wxGenericColourDialog::OnRedSlider(wxCommandEvent& WXUNUSED(event))
554{
66c59e2c 555 if (!m_redSlider)
c801d85f 556 return;
c35414db 557
c801d85f 558 wxClientDC dc(this);
66c59e2c 559 m_colourData.m_dataColour.Set((unsigned char)m_redSlider->GetValue(), m_colourData.m_dataColour.Green(), m_colourData.m_dataColour.Blue());
c801d85f
KB
560 PaintCustomColour(dc);
561}
562
563void wxGenericColourDialog::OnGreenSlider(wxCommandEvent& WXUNUSED(event))
564{
66c59e2c 565 if (!m_greenSlider)
c801d85f
KB
566 return;
567
568 wxClientDC dc(this);
66c59e2c 569 m_colourData.m_dataColour.Set(m_colourData.m_dataColour.Red(), (unsigned char)m_greenSlider->GetValue(), m_colourData.m_dataColour.Blue());
c801d85f
KB
570 PaintCustomColour(dc);
571}
572
573void wxGenericColourDialog::OnBlueSlider(wxCommandEvent& WXUNUSED(event))
574{
66c59e2c 575 if (!m_blueSlider)
c801d85f
KB
576 return;
577
578 wxClientDC dc(this);
66c59e2c 579 m_colourData.m_dataColour.Set(m_colourData.m_dataColour.Red(), m_colourData.m_dataColour.Green(), (unsigned char)m_blueSlider->GetValue());
c801d85f
KB
580 PaintCustomColour(dc);
581}
582
6bb44116
WS
583#endif // wxUSE_SLIDER
584
ff654490 585#endif // wxUSE_COLOURDLG