]> git.saurik.com Git - wxWidgets.git/blame - utils/dialoged/src/winprop.h
mac adaptions
[wxWidgets.git] / utils / dialoged / src / winprop.h
CommitLineData
457814b5
JS
1/////////////////////////////////////////////////////////////////////////////
2// Name: winprop.h
3// Purpose: Window properties
4// Author: Julian Smart
5// Modified by:
6// Created: 04/01/98
7// RCS-ID: $Id$
8// Copyright: (c) Julian Smart
9// Licence: wxWindows license
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WINPROP_H_
13#define _WINPROP_H_
14
15#ifdef __GNUG__
16#pragma interface "winprop.h"
17#endif
18
19#include "reseditr.h"
20
21class wxPropertyInfo;
22
bbcdf8bc 23class wxDialogEditorPropertyListFrame: public wxPropertyListFrame
ae8351fc
JS
24{
25 friend class wxPropertyInfo;
26public:
bbcdf8bc 27 wxDialogEditorPropertyListFrame(wxPropertyListView *v, wxFrame *parent, const wxString& title,
ae8351fc 28 const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
bbcdf8bc
JS
29 long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame");
30 ~wxDialogEditorPropertyListFrame();
ae8351fc
JS
31
32private:
33 wxPropertySheet* m_propSheet;
34 wxPropertyValidatorRegistry m_registry;
35 wxPropertyInfo* m_propInfo;
36};
37
457814b5
JS
38// A kind of property list view that intercepts OnPropertyChanged
39// feedback.
40class wxResourcePropertyListView: public wxPropertyListView
41{
42 public:
457814b5
JS
43 wxResourcePropertyListView(wxPropertyInfo *info, wxPanel *propPanel = NULL, long flags = wxPROP_BUTTON_DEFAULT):
44 wxPropertyListView(propPanel, flags)
45 {
fd71308f 46 m_propertyInfo = info;
457814b5
JS
47 }
48 void OnPropertyChanged(wxProperty *property);
49 bool OnClose(void);
fd71308f
JS
50
51 wxPropertyInfo* m_propertyInfo;
52
457814b5
JS
53};
54
55// Generic class for relating an object to a collection of properties.
56// Instead of defining new functions like wxButton::GetProperty, wxButton::SetProperty,
57// we take these functions out into of the wxWindows library and associate
58// them with separate classes.
59class wxPropertyInfo: public wxObject
60{
bbcdf8bc 61 friend class wxDialogEditorPropertyListFrame;
457814b5
JS
62 protected:
63 static wxWindow *sm_propertyWindow;
64 wxPropertyInfo(void)
65 {
66 }
67 ~wxPropertyInfo(void)
68 {
69 }
70 public:
71 virtual wxProperty *GetProperty(wxString& propName) = 0;
72 virtual bool SetProperty(wxString& propName, wxProperty *property) = 0;
73 virtual void GetPropertyNames(wxStringList& names) = 0;
ae8351fc 74 virtual bool Edit(wxWindow *parent, const wxString& title);
457814b5
JS
75};
76
77// For all windows
78class wxWindowPropertyInfo: public wxPropertyInfo
79{
457814b5
JS
80 public:
81 wxWindowPropertyInfo(wxWindow *win, wxItemResource *res = NULL);
82 ~wxWindowPropertyInfo(void);
83 wxProperty *GetProperty(wxString& name);
84 bool SetProperty(wxString& name, wxProperty *property);
85 void GetPropertyNames(wxStringList& names);
86
fd71308f 87 inline void SetPropertyWindow(wxWindow *win) { m_propertyWindow = win; }
457814b5 88
fd71308f 89 inline void SetResource(wxItemResource *res) { m_propertyResource = res; }
457814b5
JS
90
91 // Helper functions for font properties
92
93 wxProperty *GetFontProperty(wxString& name, wxFont *font);
94 wxFont *SetFontProperty(wxString& name, wxProperty *property, wxFont *oldFont);
95
96 // Fill in the wxItemResource members to mirror the current window settings
97 virtual bool InstantiateResource(wxItemResource *resource);
bbcdf8bc
JS
98
99 // Set the window style
100 void SetWindowStyle(wxWindow* win, long style, bool set);
fd71308f
JS
101
102 protected:
103 wxWindow* m_propertyWindow;
104 wxItemResource* m_propertyResource;
457814b5
JS
105};
106
107// For panel items
108class wxItemPropertyInfo: public wxWindowPropertyInfo
109{
110 protected:
111 public:
112 wxItemPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
113 wxWindowPropertyInfo(win, res) {}
114 ~wxItemPropertyInfo(void) {}
115 wxProperty *GetProperty(wxString& name);
116 bool SetProperty(wxString& name, wxProperty *property);
117 void GetPropertyNames(wxStringList& names);
118 bool InstantiateResource(wxItemResource *resource);
119};
120
121// For buttons
122class wxButtonPropertyInfo: public wxItemPropertyInfo
123{
124 protected:
125 public:
ae8351fc
JS
126 wxButtonPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
127 wxItemPropertyInfo(win, res) { }
457814b5
JS
128 ~wxButtonPropertyInfo(void) {}
129 wxProperty *GetProperty(wxString& name);
130 bool SetProperty(wxString& name, wxProperty *property);
131 void GetPropertyNames(wxStringList& names);
132 bool InstantiateResource(wxItemResource *resource);
ae8351fc 133};
457814b5 134
ae8351fc
JS
135// For bitmap buttons
136class wxBitmapButtonPropertyInfo: public wxButtonPropertyInfo
137{
138 protected:
139 public:
140 wxBitmapButtonPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
141 wxButtonPropertyInfo(win, res) { }
142 ~wxBitmapButtonPropertyInfo(void) {}
143 wxProperty *GetProperty(wxString& name);
144 bool SetProperty(wxString& name, wxProperty *property);
145 void GetPropertyNames(wxStringList& names);
146 bool InstantiateResource(wxItemResource *resource);
457814b5
JS
147};
148
ae8351fc 149// For static text controls
457814b5
JS
150class wxStaticTextPropertyInfo: public wxItemPropertyInfo
151{
152 protected:
153 public:
ae8351fc
JS
154 wxStaticTextPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
155 wxItemPropertyInfo(win, res) { }
457814b5
JS
156 ~wxStaticTextPropertyInfo(void) {}
157 wxProperty *GetProperty(wxString& name);
158 bool SetProperty(wxString& name, wxProperty *property);
159 void GetPropertyNames(wxStringList& names);
160 bool InstantiateResource(wxItemResource *resource);
ae8351fc 161};
457814b5 162
ae8351fc
JS
163// For static bitmap controls
164class wxStaticBitmapPropertyInfo: public wxItemPropertyInfo
165{
166 protected:
167 public:
168 wxStaticBitmapPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
169 wxItemPropertyInfo(win, res) { }
170 ~wxStaticBitmapPropertyInfo(void) {}
171 wxProperty *GetProperty(wxString& name);
172 bool SetProperty(wxString& name, wxProperty *property);
173 void GetPropertyNames(wxStringList& names);
174 bool InstantiateResource(wxItemResource *resource);
457814b5
JS
175};
176
177// For text/multitext items
178class wxTextPropertyInfo: public wxItemPropertyInfo
179{
180 protected:
181 public:
182 wxTextPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
183 wxItemPropertyInfo(win, res) {}
184 ~wxTextPropertyInfo(void) {}
185 wxProperty *GetProperty(wxString& name);
186 bool SetProperty(wxString& name, wxProperty *property);
187 void GetPropertyNames(wxStringList& names);
188 bool InstantiateResource(wxItemResource *resource);
189};
190
191// For list boxes
192class wxListBoxPropertyInfo: public wxItemPropertyInfo
193{
194 protected:
195 public:
196 wxListBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
197 wxItemPropertyInfo(win, res) {}
198 ~wxListBoxPropertyInfo(void) {}
199 wxProperty *GetProperty(wxString& name);
200 bool SetProperty(wxString& name, wxProperty *property);
201 void GetPropertyNames(wxStringList& names);
202 bool InstantiateResource(wxItemResource *resource);
203};
204
205// For choice items
206class wxChoicePropertyInfo: public wxItemPropertyInfo
207{
208 protected:
209 public:
210 wxChoicePropertyInfo(wxWindow *win, wxItemResource *res = NULL):
211 wxItemPropertyInfo(win, res) {}
212 ~wxChoicePropertyInfo(void) {}
9c331ded
JS
213 wxProperty *GetProperty(wxString& name);
214 bool SetProperty(wxString& name, wxProperty *property);
215 void GetPropertyNames(wxStringList& names);
216 bool InstantiateResource(wxItemResource *resource);
217};
218
219// For choice items
220class wxComboBoxPropertyInfo: public wxChoicePropertyInfo
221{
222 protected:
223 public:
224 wxComboBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
225 wxChoicePropertyInfo(win, res) {}
226 ~wxComboBoxPropertyInfo(void) {}
457814b5
JS
227 wxProperty *GetProperty(wxString& name);
228 bool SetProperty(wxString& name, wxProperty *property);
229 void GetPropertyNames(wxStringList& names);
230 bool InstantiateResource(wxItemResource *resource);
231};
232
233// For radiobox items
234class wxRadioBoxPropertyInfo: public wxItemPropertyInfo
235{
236 protected:
237 public:
238 wxRadioBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
239 wxItemPropertyInfo(win, res) {}
240 ~wxRadioBoxPropertyInfo(void) {}
241 wxProperty *GetProperty(wxString& name);
242 bool SetProperty(wxString& name, wxProperty *property);
243 void GetPropertyNames(wxStringList& names);
244 bool InstantiateResource(wxItemResource *resource);
245};
246
247// For groupbox items
248class wxGroupBoxPropertyInfo: public wxItemPropertyInfo
249{
250 protected:
251 public:
252 wxGroupBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
253 wxItemPropertyInfo(win, res) {}
254 ~wxGroupBoxPropertyInfo(void) {}
255 wxProperty *GetProperty(wxString& name);
256 bool SetProperty(wxString& name, wxProperty *property);
257 void GetPropertyNames(wxStringList& names);
258 bool InstantiateResource(wxItemResource *resource);
259};
260
261// For checkbox items
262class wxCheckBoxPropertyInfo: public wxItemPropertyInfo
263{
264 protected:
265 public:
266 wxCheckBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
267 wxItemPropertyInfo(win, res) {}
268 ~wxCheckBoxPropertyInfo(void) {}
269 wxProperty *GetProperty(wxString& name);
270 bool SetProperty(wxString& name, wxProperty *property);
271 void GetPropertyNames(wxStringList& names);
272 bool InstantiateResource(wxItemResource *resource);
273};
274
03f68f12
JS
275// For radiobutton items
276class wxRadioButtonPropertyInfo: public wxItemPropertyInfo
277{
278 protected:
279 public:
280 wxRadioButtonPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
281 wxItemPropertyInfo(win, res) {}
282 ~wxRadioButtonPropertyInfo(void) {}
283 wxProperty *GetProperty(wxString& name);
284 bool SetProperty(wxString& name, wxProperty *property);
285 void GetPropertyNames(wxStringList& names);
286 bool InstantiateResource(wxItemResource *resource);
287};
288
457814b5
JS
289// For gauge items
290class wxGaugePropertyInfo: public wxItemPropertyInfo
291{
292 protected:
293 public:
294 wxGaugePropertyInfo(wxWindow *win, wxItemResource *res = NULL):
295 wxItemPropertyInfo(win, res) {}
296 ~wxGaugePropertyInfo(void) {}
297 wxProperty *GetProperty(wxString& name);
298 bool SetProperty(wxString& name, wxProperty *property);
299 void GetPropertyNames(wxStringList& names);
300 bool InstantiateResource(wxItemResource *resource);
301};
302
303// For scrollbar items
304class wxScrollBarPropertyInfo: public wxItemPropertyInfo
305{
306 protected:
307 public:
308 wxScrollBarPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
309 wxItemPropertyInfo(win, res) {}
310 ~wxScrollBarPropertyInfo(void) {}
311 wxProperty *GetProperty(wxString& name);
312 bool SetProperty(wxString& name, wxProperty *property);
313 void GetPropertyNames(wxStringList& names);
314 bool InstantiateResource(wxItemResource *resource);
315};
316
317// For slider items
318class wxSliderPropertyInfo: public wxItemPropertyInfo
319{
320 protected:
321 public:
322 wxSliderPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
323 wxItemPropertyInfo(win, res) {}
324 ~wxSliderPropertyInfo(void) {}
325 wxProperty *GetProperty(wxString& name);
326 bool SetProperty(wxString& name, wxProperty *property);
327 void GetPropertyNames(wxStringList& names);
328 bool InstantiateResource(wxItemResource *resource);
329};
330
331// For panels
332class wxPanelPropertyInfo: public wxWindowPropertyInfo
333{
334 protected:
335 public:
336 wxPanelPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
337 wxWindowPropertyInfo(win, res) {}
338 ~wxPanelPropertyInfo(void) {}
339 wxProperty *GetProperty(wxString& name);
340 bool SetProperty(wxString& name, wxProperty *property);
341 void GetPropertyNames(wxStringList& names);
342 bool InstantiateResource(wxItemResource *resource);
fd71308f
JS
343
344 // Convert this dialog, and its children, to or from dialog units
345 void ConvertDialogUnits(bool toDialogUnits);
457814b5
JS
346};
347
457814b5
JS
348int wxStringToFontWeight(wxString& val);
349int wxStringToFontStyle(wxString& val);
350int wxStringToFontFamily(wxString& val);
351
03f68f12
JS
352/*
353 * A validator to allow editing symbol/id pairs
354 */
355
356class wxResourceSymbolValidator: public wxPropertyListValidator
357{
358 DECLARE_DYNAMIC_CLASS(wxResourceSymbolValidator)
359 protected:
360 public:
361 wxResourceSymbolValidator(long flags = 0);
362
363 ~wxResourceSymbolValidator(void);
364
365 // Called when TICK is pressed or focus is lost.
366 // Return FALSE if value didn't check out; signal to restore old value.
367 bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
368
369 // Called when TICK is pressed or focus is lost or view wants to update
370 // the property list.
371 // Does the transferance from the property editing area to the property itself
372 bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
373 bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
457814b5 374
03f68f12
JS
375 bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
376
377 bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
378
379 // Called when the edit (...) button is pressed.
380 void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
381};
382
383/*
384 * A dialog for editing symbol/id pairs
385 */
386
387class wxResourceSymbolDialog: public wxDialog
388{
389public:
390 wxResourceSymbolDialog(wxWindow* parent, const wxWindowID id, const wxString& title,
391 const wxPoint& pos = wxDefaultPosition,
5de76427 392 const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL);
03f68f12
JS
393
394 void Init();
395
396 inline void SetSymbol(const wxString& symbol) { m_symbolName = symbol; }
397 inline void SetId(long id) { m_symbolId = id; }
398
399 inline wxString GetSymbol() const { return m_symbolName; }
400 inline long GetId() const { return m_symbolId; }
401
402 bool CheckValues();
403 void OnOK(wxCommandEvent& event);
5de76427
JS
404 void OnComboBoxSelect(wxCommandEvent& event);
405 void OnSymbolNameUpdate(wxCommandEvent& event);
03f68f12
JS
406
407protected:
408 wxString m_symbolName;
409 long m_symbolId;
410 wxComboBox* m_nameCtrl;
411 wxTextCtrl* m_idCtrl;
412
413DECLARE_EVENT_TABLE()
414};
415
416#define ID_SYMBOLNAME_COMBOBOX 100
417#define ID_SYMBOLID_TEXTCTRL 101
418
419#endif
420 // _WINPROP_H_