1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/generic/colrdlgg.h
3 // Purpose:     wxGenericColourDialog
4 // Author:      Julian Smart
5 // Modified by:
6 // Created:     01/02/97
7 // RCS-ID:      $Id: colrdlgg.h 37164 2006-01-26 17:20:50Z ABX $
8 // Copyright:   (c) Julian Smart
9 // Licence:     wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef __COLORDLGH_G__
13 #define __COLORDLGH_G__
14 
15 #include "wx/defs.h"
16 #include "wx/gdicmn.h"
17 #include "wx/dialog.h"
18 #include "wx/cmndata.h"
19 
20 #define wxID_ADD_CUSTOM     3000
21 
22 #if wxUSE_SLIDER
23 
24     #define wxID_RED_SLIDER     3001
25     #define wxID_GREEN_SLIDER   3002
26     #define wxID_BLUE_SLIDER    3003
27 
28     class WXDLLEXPORT wxSlider;
29 
30 #endif // wxUSE_SLIDER
31 
32 class WXDLLEXPORT wxGenericColourDialog : public wxDialog
33 {
34 public:
35     wxGenericColourDialog();
36     wxGenericColourDialog(wxWindow *parent,
37                           wxColourData *data = (wxColourData *) NULL);
38     virtual ~wxGenericColourDialog();
39 
40     bool Create(wxWindow *parent, wxColourData *data = (wxColourData *) NULL);
41 
GetColourData()42     wxColourData &GetColourData() { return colourData; }
43 
44     virtual int ShowModal();
45 
46     // Internal functions
47     void OnMouseEvent(wxMouseEvent& event);
48     void OnPaint(wxPaintEvent& event);
49 
50     virtual void CalculateMeasurements();
51     virtual void CreateWidgets();
52     virtual void InitializeColours();
53 
54     virtual void PaintBasicColours(wxDC& dc);
55     virtual void PaintCustomColours(wxDC& dc);
56     virtual void PaintCustomColour(wxDC& dc);
57     virtual void PaintHighlight(wxDC& dc, bool draw);
58 
59     virtual void OnBasicColourClick(int which);
60     virtual void OnCustomColourClick(int which);
61 
62     void OnAddCustom(wxCommandEvent& event);
63 
64 #if wxUSE_SLIDER
65     void OnRedSlider(wxCommandEvent& event);
66     void OnGreenSlider(wxCommandEvent& event);
67     void OnBlueSlider(wxCommandEvent& event);
68 #endif // wxUSE_SLIDER
69 
70     void OnCloseWindow(wxCloseEvent& event);
71 
72 protected:
73     wxColourData colourData;
74     wxWindow *dialogParent;
75 
76     // Area reserved for grids of colours
77     wxRect standardColoursRect;
78     wxRect customColoursRect;
79     wxRect singleCustomColourRect;
80 
81     // Size of each colour rectangle
82     wxPoint smallRectangleSize;
83 
84     // For single customizable colour
85     wxPoint customRectangleSize;
86 
87     // Grid spacing (between rectangles)
88     int gridSpacing;
89 
90     // Section spacing (between left and right halves of dialog box)
91     int sectionSpacing;
92 
93     // 48 'standard' colours
94     wxColour standardColours[48];
95 
96     // 16 'custom' colours
97     wxColour customColours[16];
98 
99     // Which colour is selected? An index into one of the two areas.
100     int colourSelection;
101     int whichKind; // 1 for standard colours, 2 for custom colours,
102 
103 #if wxUSE_SLIDER
104     wxSlider *redSlider;
105     wxSlider *greenSlider;
106     wxSlider *blueSlider;
107 #endif // wxUSE_SLIDER
108 
109     int buttonY;
110 
111     int okButtonX;
112     int customButtonX;
113 
114     //  static bool colourDialogCancelled;
115 
116     DECLARE_EVENT_TABLE()
117     DECLARE_DYNAMIC_CLASS(wxGenericColourDialog)
118 };
119 
120 #endif
121