X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1a5a83677555023d476401bab5809a1107222c74..284b4c8866ab36694b6ec2a308690bba4db4fed2:/src/generic/colrdlgg.cpp diff --git a/src/generic/colrdlgg.cpp b/src/generic/colrdlgg.cpp index 4e011463ab..1e137f0743 100644 --- a/src/generic/colrdlgg.cpp +++ b/src/generic/colrdlgg.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -32,6 +32,11 @@ #include "wx/layout.h" #include "wx/dcclient.h" #include "wx/slider.h" +#include "wx/sizer.h" +#endif + +#if wxUSE_STATLINE + #include "wx/statline.h" #endif #include "wx/generic/colrdlgg.h" @@ -40,12 +45,13 @@ IMPLEMENT_DYNAMIC_CLASS(wxGenericColourDialog, wxDialog) BEGIN_EVENT_TABLE(wxGenericColourDialog, wxDialog) - EVT_BUTTON(wxID_ADD_CUSTOM, wxGenericColourDialog::OnAddCustom) - EVT_SLIDER(wxID_RED_SLIDER, wxGenericColourDialog::OnRedSlider) - EVT_SLIDER(wxID_GREEN_SLIDER, wxGenericColourDialog::OnGreenSlider) - EVT_SLIDER(wxID_BLUE_SLIDER, wxGenericColourDialog::OnBlueSlider) - EVT_PAINT(wxGenericColourDialog::OnPaint) - EVT_MOUSE_EVENTS(wxGenericColourDialog::OnMouseEvent) + EVT_BUTTON(wxID_ADD_CUSTOM, wxGenericColourDialog::OnAddCustom) + EVT_SLIDER(wxID_RED_SLIDER, wxGenericColourDialog::OnRedSlider) + EVT_SLIDER(wxID_GREEN_SLIDER, wxGenericColourDialog::OnGreenSlider) + EVT_SLIDER(wxID_BLUE_SLIDER, wxGenericColourDialog::OnBlueSlider) + EVT_PAINT(wxGenericColourDialog::OnPaint) + EVT_MOUSE_EVENTS(wxGenericColourDialog::OnMouseEvent) + EVT_CLOSE(wxGenericColourDialog::OnCloseWindow) END_EVENT_TABLE() #endif @@ -55,62 +61,62 @@ END_EVENT_TABLE() */ #define NUM_COLS 48 -static wxString wxColourDialogNames[NUM_COLS]={"ORANGE", - "GOLDENROD", - "WHEAT", - "SPRING GREEN", - "SKY BLUE", - "SLATE BLUE", - "MEDIUM VIOLET RED", - "PURPLE", - - "RED", - "YELLOW", - "MEDIUM SPRING GREEN", - "PALE GREEN", - "CYAN", - "LIGHT STEEL BLUE", - "ORCHID", - "LIGHT MAGENTA", - - "BROWN", - "YELLOW", - "GREEN", - "CADET BLUE", - "MEDIUM BLUE", - "MAGENTA", - "MAROON", - "ORANGE RED", - - "FIREBRICK", - "CORAL", - "FOREST GREEN", - "AQUARAMINE", - "BLUE", - "NAVY", - "THISTLE", - "MEDIUM VIOLET RED", - - "INDIAN RED", - "GOLD", - "MEDIUM SEA GREEN", - "MEDIUM BLUE", - "MIDNIGHT BLUE", - "GREY", - "PURPLE", - "KHAKI", - - "BLACK", - "MEDIUM FOREST GREEN", - "KHAKI", - "DARK GREY", - "SEA GREEN", - "LIGHT GREY", - "MEDIUM SLATE BLUE", - "WHITE" - }; - -wxGenericColourDialog::wxGenericColourDialog(void) +static wxString wxColourDialogNames[NUM_COLS]={_T("ORANGE"), + _T("GOLDENROD"), + _T("WHEAT"), + _T("SPRING GREEN"), + _T("SKY BLUE"), + _T("SLATE BLUE"), + _T("MEDIUM VIOLET RED"), + _T("PURPLE"), + + _T("RED"), + _T("YELLOW"), + _T("MEDIUM SPRING GREEN"), + _T("PALE GREEN"), + _T("CYAN"), + _T("LIGHT STEEL BLUE"), + _T("ORCHID"), + _T("LIGHT MAGENTA"), + + _T("BROWN"), + _T("YELLOW"), + _T("GREEN"), + _T("CADET BLUE"), + _T("MEDIUM BLUE"), + _T("MAGENTA"), + _T("MAROON"), + _T("ORANGE RED"), + + _T("FIREBRICK"), + _T("CORAL"), + _T("FOREST GREEN"), + _T("AQUAMARINE"), + _T("BLUE"), + _T("NAVY"), + _T("THISTLE"), + _T("MEDIUM VIOLET RED"), + + _T("INDIAN RED"), + _T("GOLD"), + _T("MEDIUM SEA GREEN"), + _T("MEDIUM BLUE"), + _T("MIDNIGHT BLUE"), + _T("GREY"), + _T("PURPLE"), + _T("KHAKI"), + + _T("BLACK"), + _T("MEDIUM FOREST GREEN"), + _T("KHAKI"), + _T("DARK GREY"), + _T("SEA GREEN"), + _T("LIGHT GREY"), + _T("MEDIUM SLATE BLUE"), + _T("WHITE") + }; + +wxGenericColourDialog::wxGenericColourDialog() { dialogParent = NULL; whichKind = 1; @@ -125,31 +131,30 @@ wxGenericColourDialog::wxGenericColourDialog(wxWindow *parent, wxColourData *dat Create(parent, data); } -wxGenericColourDialog::~wxGenericColourDialog(void) +wxGenericColourDialog::~wxGenericColourDialog() { } -bool wxGenericColourDialog::OnClose(void) +void wxGenericColourDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) { - Show(FALSE); - return FALSE; + EndModal(wxID_CANCEL); } bool wxGenericColourDialog::Create(wxWindow *parent, wxColourData *data) { dialogParent = parent; - + if (data) colourData = *data; InitializeColours(); CalculateMeasurements(); CreateWidgets(); - + return TRUE; } -int wxGenericColourDialog::ShowModal(void) +int wxGenericColourDialog::ShowModal() { return wxDialog::ShowModal(); } @@ -184,7 +189,9 @@ void wxGenericColourDialog::OnMouseEvent(wxMouseEvent& event) void wxGenericColourDialog::OnPaint(wxPaintEvent& event) { +#ifndef __WXMOTIF__ wxDialog::OnPaint(event); +#endif wxPaintDC dc(this); @@ -194,7 +201,7 @@ void wxGenericColourDialog::OnPaint(wxPaintEvent& event) PaintHighlight(dc, TRUE); } -void wxGenericColourDialog::CalculateMeasurements(void) +void wxGenericColourDialog::CalculateMeasurements() { smallRectangleSize.x = 18; smallRectangleSize.y = 14; @@ -224,40 +231,50 @@ void wxGenericColourDialog::CalculateMeasurements(void) buttonY = customColoursRect.y + customColoursRect.height + 10; } -void wxGenericColourDialog::CreateWidgets(void) +void wxGenericColourDialog::CreateWidgets() { - wxBeginBusyCursor(); - - wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(okButtonX, buttonY)); - int bw, bh; - okButton->GetSize(&bw, &bh); - - (void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(okButtonX + bw + 10, buttonY)); - (void) new wxButton(this, wxID_ADD_CUSTOM, _("Add to custom colours"), - wxPoint(customButtonX, buttonY)); - - int sliderX = singleCustomColourRect.x + singleCustomColourRect.width + sectionSpacing; -#ifdef __X__ - int sliderSpacing = 75; - int sliderHeight = 160; + wxBeginBusyCursor(); + + int sliderX = singleCustomColourRect.x + singleCustomColourRect.width + sectionSpacing; +#if defined(__WXMOTIF__) + int sliderSpacing = 65; + int sliderHeight = 160; #else - int sliderSpacing = 45; - int sliderHeight = 160; + int sliderSpacing = 45; + int sliderHeight = 160; +#endif + + redSlider = new wxSlider(this, wxID_RED_SLIDER, 0, 0, 255, + wxPoint(sliderX, 10), wxSize(-1, sliderHeight), wxVERTICAL|wxSL_LABELS); + greenSlider = new wxSlider(this, wxID_GREEN_SLIDER, 0, 0, 255, + wxPoint(sliderX + sliderSpacing, 10), wxSize(-1, sliderHeight), wxVERTICAL|wxSL_LABELS); + blueSlider = new wxSlider(this, wxID_BLUE_SLIDER, 0, 0, 255, + wxPoint(sliderX + 2*sliderSpacing, 10), wxSize(-1, sliderHeight), wxVERTICAL|wxSL_LABELS); + + wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); + + // 1) space for explicitly layouted controls + topsizer->Add( sliderX + 3*sliderSpacing, sliderHeight+25 ); + +#if wxUSE_STATLINE + // 2) static line + topsizer->Add( new wxStaticLine( this, -1 ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 ); #endif - - redSlider = new wxSlider(this, wxID_RED_SLIDER, 0, 0, 255, - wxPoint(sliderX, 10), wxSize(-1, sliderHeight), wxVERTICAL|wxSL_LABELS); - greenSlider = new wxSlider(this, wxID_GREEN_SLIDER, 0, 0, 255, - wxPoint(sliderX + sliderSpacing, 10), wxSize(-1, sliderHeight), wxVERTICAL|wxSL_LABELS); - blueSlider = new wxSlider(this, wxID_BLUE_SLIDER, 0, 0, 255, - wxPoint(sliderX + 2*sliderSpacing, 10), wxSize(-1, sliderHeight), wxVERTICAL|wxSL_LABELS); - SetClientSize(sliderX + 3*sliderSpacing, buttonY + 30); - okButton->SetDefault(); + // 3) buttons + wxSizer *buttonsizer = CreateButtonSizer( wxOK|wxCANCEL ); + buttonsizer->Add( new wxButton(this, wxID_ADD_CUSTOM, _("Add to custom colours") ), 0, wxLEFT|wxRIGHT, 10 ); + topsizer->Add( buttonsizer, 0, wxCENTRE | wxALL, 10 ); + + SetAutoLayout( TRUE ); + SetSizer( topsizer ); + + topsizer->SetSizeHints( this ); + topsizer->Fit( this ); - Centre(wxBOTH); + Centre( wxBOTH ); - wxEndBusyCursor(); + wxEndBusyCursor(); } void wxGenericColourDialog::InitializeColours(void) @@ -295,7 +312,7 @@ void wxGenericColourDialog::PaintBasicColours(wxDC& dc) for (j = 0; j < 8; j++) { int ptr = i*8 + j; - + int x = (j*(smallRectangleSize.x+gridSpacing) + standardColoursRect.x); int y = (i*(smallRectangleSize.y+gridSpacing) + standardColoursRect.y); @@ -320,7 +337,7 @@ void wxGenericColourDialog::PaintCustomColours(wxDC& dc) for (j = 0; j < 8; j++) { int ptr = i*8 + j; - + int x = (j*(smallRectangleSize.x+gridSpacing)) + customColoursRect.x; int y = (i*(smallRectangleSize.y+gridSpacing)) + customColoursRect.y; @@ -374,18 +391,18 @@ void wxGenericColourDialog::PaintHighlight(wxDC& dc, bool draw) dc.SetPen(*wxBLACK_PEN); else dc.SetPen(*wxLIGHT_GREY_PEN); - + dc.SetBrush(*wxTRANSPARENT_BRUSH); dc.DrawRectangle( x, y, (smallRectangleSize.x + (2*deltaX)), (smallRectangleSize.y + (2*deltaY))); } - + dc.EndDrawing(); } void wxGenericColourDialog::PaintCustomColour(wxDC& dc) { dc.BeginDrawing(); - + dc.SetPen(*wxBLACK_PEN); wxBrush *brush = new wxBrush(singleCustomColour, wxSOLID); @@ -450,7 +467,7 @@ void wxGenericColourDialog::OnAddCustom(wxCommandEvent& WXUNUSED(event)) customColours[colourSelection].Set(singleCustomColour.Red(), singleCustomColour.Green(), singleCustomColour.Blue()); colourData.SetColour(customColours[colourSelection]); colourData.SetCustomColour(colourSelection, customColours[colourSelection]); - + PaintCustomColours(dc); } @@ -458,7 +475,7 @@ void wxGenericColourDialog::OnRedSlider(wxCommandEvent& WXUNUSED(event)) { if (!redSlider) return; - + wxClientDC dc(this); singleCustomColour.Set(redSlider->GetValue(), singleCustomColour.Green(), singleCustomColour.Blue()); PaintCustomColour(dc);