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
32class WXDLLEXPORT wxGenericColourDialog : public wxDialog
33{
34public:
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
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
72protected:
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