/[pcsx2_0.9.7]/trunk/3rdparty/wxWidgets/src/common/clrpickercmn.cpp
ViewVC logotype

Annotation of /trunk/3rdparty/wxWidgets/src/common/clrpickercmn.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31 - (hide annotations) (download)
Tue Sep 7 03:24:11 2010 UTC (10 years, 4 months ago) by william
File size: 4822 byte(s)
committing r3113 initial commit again...
1 william 31 ///////////////////////////////////////////////////////////////////////////////
2     // Name: src/common/clrpickercmn.cpp
3     // Purpose: wxColourPickerCtrl class implementation
4     // Author: Francesco Montorsi (readapted code written by Vadim Zeitlin)
5     // Modified by:
6     // Created: 15/04/2006
7     // RCS-ID: $Id: clrpickercmn.cpp 42219 2006-10-21 19:53:05Z PC $
8     // Copyright: (c) Vadim Zeitlin, Francesco Montorsi
9     // Licence: wxWindows licence
10     ///////////////////////////////////////////////////////////////////////////////
11    
12     // ============================================================================
13     // declarations
14     // ============================================================================
15    
16     // ----------------------------------------------------------------------------
17     // headers
18     // ----------------------------------------------------------------------------
19    
20     // For compilers that support precompilation, includes "wx.h".
21     #include "wx/wxprec.h"
22    
23     #ifdef __BORLANDC__
24     #pragma hdrstop
25     #endif
26    
27     #if wxUSE_COLOURPICKERCTRL
28    
29     #include "wx/clrpicker.h"
30    
31     #ifndef WX_PRECOMP
32     #include "wx/textctrl.h"
33     #endif
34    
35     const wxChar wxColourPickerCtrlNameStr[] = wxT("colourpicker");
36     const wxChar wxColourPickerWidgetNameStr[] = wxT("colourpickerwidget");
37    
38     // ============================================================================
39     // implementation
40     // ============================================================================
41    
42     DEFINE_EVENT_TYPE(wxEVT_COMMAND_COLOURPICKER_CHANGED)
43     IMPLEMENT_DYNAMIC_CLASS(wxColourPickerCtrl, wxPickerBase)
44     IMPLEMENT_DYNAMIC_CLASS(wxColourPickerEvent, wxEvent)
45    
46     // ----------------------------------------------------------------------------
47     // wxColourPickerCtrl
48     // ----------------------------------------------------------------------------
49    
50     #define M_PICKER ((wxColourPickerWidget*)m_picker)
51    
52     bool wxColourPickerCtrl::Create( wxWindow *parent, wxWindowID id,
53     const wxColour &col,
54     const wxPoint &pos, const wxSize &size,
55     long style, const wxValidator& validator,
56     const wxString &name )
57     {
58     if (!wxPickerBase::CreateBase(parent, id, col.GetAsString(), pos, size,
59     style, validator, name))
60     return false;
61    
62     // we are not interested to the ID of our picker as we connect
63     // to its "changed" event dynamically...
64     m_picker = new wxColourPickerWidget(this, wxID_ANY, col,
65     wxDefaultPosition, wxDefaultSize,
66     GetPickerStyle(style));
67    
68     // complete sizer creation
69     wxPickerBase::PostCreation();
70    
71     m_picker->Connect(wxEVT_COMMAND_COLOURPICKER_CHANGED,
72     wxColourPickerEventHandler(wxColourPickerCtrl::OnColourChange),
73     NULL, this);
74    
75     return true;
76     }
77    
78     void wxColourPickerCtrl::SetColour(const wxColour &col)
79     {
80     M_PICKER->SetColour(col);
81     UpdateTextCtrlFromPicker();
82     }
83    
84     bool wxColourPickerCtrl::SetColour(const wxString &text)
85     {
86     wxColour col(text); // smart wxString->wxColour conversion
87     if ( !col.Ok() )
88     return false;
89     M_PICKER->SetColour(col);
90     UpdateTextCtrlFromPicker();
91    
92     return true;
93     }
94    
95     void wxColourPickerCtrl::UpdatePickerFromTextCtrl()
96     {
97     wxASSERT(m_text);
98    
99     if (m_bIgnoreNextTextCtrlUpdate)
100     {
101     // ignore this update
102     m_bIgnoreNextTextCtrlUpdate = false;
103     return;
104     }
105    
106     // wxString -> wxColour conversion
107     wxColour col(m_text->GetValue());
108     if ( !col.Ok() )
109     return; // invalid user input
110    
111     if (M_PICKER->GetColour() != col)
112     {
113     M_PICKER->SetColour(col);
114    
115     // fire an event
116     wxColourPickerEvent event(this, GetId(), col);
117     GetEventHandler()->ProcessEvent(event);
118     }
119     }
120    
121     void wxColourPickerCtrl::UpdateTextCtrlFromPicker()
122     {
123     if (!m_text)
124     return; // no textctrl to update
125    
126     // NOTE: this SetValue() will generate an unwanted wxEVT_COMMAND_TEXT_UPDATED
127     // which will trigger a unneeded UpdateFromTextCtrl(); thus before using
128     // SetValue() we set the m_bIgnoreNextTextCtrlUpdate flag...
129     m_bIgnoreNextTextCtrlUpdate = true;
130     m_text->SetValue(M_PICKER->GetColour().GetAsString());
131     }
132    
133    
134    
135     // ----------------------------------------------------------------------------
136     // wxColourPickerCtrl - event handlers
137     // ----------------------------------------------------------------------------
138    
139     void wxColourPickerCtrl::OnColourChange(wxColourPickerEvent &ev)
140     {
141     UpdateTextCtrlFromPicker();
142    
143     // the wxColourPickerWidget sent us a colour-change notification.
144     // forward this event to our parent
145     wxColourPickerEvent event(this, GetId(), ev.GetColour());
146     GetEventHandler()->ProcessEvent(event);
147     }
148    
149     #endif // wxUSE_COLOURPICKERCTRL

  ViewVC Help
Powered by ViewVC 1.1.22