]> git.saurik.com Git - wxWidgets.git/blob - src/mac/carbon/colordlg.cpp
don't reset the selection after event was vetoed if there is no old selection
[wxWidgets.git] / src / mac / carbon / colordlg.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: colordlg.cpp
3 // Purpose: wxColourDialog class. NOTE: you can use the generic class
4 // if you wish, instead of implementing this.
5 // Author: Stefan Csomor
6 // Modified by:
7 // Created: 1998-01-01
8 // RCS-ID: $Id$
9 // Copyright: (c) Stefan Csomor
10 // Licence: wxWindows licence
11 /////////////////////////////////////////////////////////////////////////////
12
13 #include "wx/wxprec.h"
14
15 #include "wx/mac/colordlg.h"
16 #include "wx/fontdlg.h"
17
18
19 #if !USE_NATIVE_FONT_DIALOG_FOR_MACOSX
20
21 IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog)
22
23 #include "wx/mac/private.h"
24 #ifndef __DARWIN__
25 #include <ColorPicker.h>
26 #endif
27
28 /*
29 * wxColourDialog
30 */
31
32 wxColourDialog::wxColourDialog()
33 {
34 m_dialogParent = NULL;
35 }
36
37 wxColourDialog::wxColourDialog(wxWindow *parent, wxColourData *data)
38 {
39 Create(parent, data);
40 }
41
42 bool wxColourDialog::Create(wxWindow *parent, wxColourData *data)
43 {
44 m_dialogParent = parent;
45
46 if (data)
47 m_colourData = *data;
48 return true;
49 }
50
51 int wxColourDialog::ShowModal()
52 {
53 RGBColor currentColor = *((RGBColor*)m_colourData.m_dataColour.GetPixel()) ;
54
55 #if TARGET_API_MAC_OSX
56 NColorPickerInfo info;
57 OSStatus err ;
58 memset(&info, 0, sizeof(info)) ;
59 // TODO : use parent to determine better position and then kAtSpecifiedOrigin
60 info.placeWhere = kCenterOnMainScreen ;
61 info.flags = kColorPickerDialogIsMoveable | kColorPickerDialogIsModal ;
62 info.theColor.color.rgb.red = currentColor.red ;
63 info.theColor.color.rgb.green = currentColor.green ;
64 info.theColor.color.rgb.blue = currentColor.blue ;
65 err = NPickColor(&info);
66 if ((err == noErr) && info.newColorChosen)
67 {
68 currentColor.red = info.theColor.color.rgb.red ;
69 currentColor.green = info.theColor.color.rgb.green ;
70 currentColor.blue = info.theColor.color.rgb.blue ;
71 m_colourData.m_dataColour.FromRGBColor((WXCOLORREF*) &currentColor);
72
73 return wxID_OK;
74 }
75 #else
76 RGBColor newColor ;
77 Point where ;
78
79 where.h = where.v = -1;
80
81 if (GetColor( where, "\pSelect a new palette color.", &currentColor, &newColor ))
82 {
83 m_colourData.m_dataColour.Set( (WXCOLORREF*) &newColor ) ;
84 return wxID_OK;
85 }
86 #endif
87 return wxID_CANCEL;
88 }
89
90 #endif