GNU compiler included with Mac OS X 10.2 (Jaguar) as well as August Developer Tools update contain a bug concerning #pragma interface handling that can only be worked around by not using them (and they are not necessary anyways) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@17039 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
427 lines
14 KiB
C++
427 lines
14 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: winprop.h
|
|
// Purpose: Window properties
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 04/01/98
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows license
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WINPROP_H_
|
|
#define _WINPROP_H_
|
|
|
|
#if defined(__GNUG__) && !defined(__APPLE__)
|
|
#pragma interface "winprop.h"
|
|
#endif
|
|
|
|
#include "reseditr.h"
|
|
|
|
class wxPropertyInfo;
|
|
|
|
class wxDialogEditorPropertyListFrame: public wxPropertyListFrame
|
|
{
|
|
friend class wxPropertyInfo;
|
|
public:
|
|
wxDialogEditorPropertyListFrame(wxPropertyListView *v, wxFrame *parent, const wxString& title,
|
|
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
|
long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame");
|
|
~wxDialogEditorPropertyListFrame();
|
|
|
|
wxPropertyInfo* GetInfo() const { return m_propInfo; }
|
|
|
|
private:
|
|
wxPropertySheet* m_propSheet;
|
|
wxPropertyValidatorRegistry m_registry;
|
|
wxPropertyInfo* m_propInfo;
|
|
};
|
|
|
|
// A kind of property list view that intercepts OnPropertyChanged
|
|
// feedback.
|
|
class wxResourcePropertyListView: public wxPropertyListView
|
|
{
|
|
public:
|
|
wxResourcePropertyListView(wxPropertyInfo *info, wxPanel *propPanel = NULL, long flags = wxPROP_BUTTON_DEFAULT):
|
|
wxPropertyListView(propPanel, flags)
|
|
{
|
|
m_propertyInfo = info;
|
|
}
|
|
void OnPropertyChanged(wxProperty *property);
|
|
bool OnClose(void);
|
|
|
|
wxPropertyInfo* m_propertyInfo;
|
|
|
|
};
|
|
|
|
// Generic class for relating an object to a collection of properties.
|
|
// Instead of defining new functions like wxButton::GetProperty, wxButton::SetProperty,
|
|
// we take these functions out into of the wxWindows library and associate
|
|
// them with separate classes.
|
|
class wxPropertyInfo: public wxObject
|
|
{
|
|
friend class wxDialogEditorPropertyListFrame;
|
|
protected:
|
|
static wxWindow *sm_propertyWindow;
|
|
wxPropertyInfo(void)
|
|
{
|
|
}
|
|
~wxPropertyInfo(void)
|
|
{
|
|
}
|
|
public:
|
|
virtual wxProperty *GetProperty(wxString& propName) = 0;
|
|
virtual bool SetProperty(wxString& propName, wxProperty *property) = 0;
|
|
virtual void GetPropertyNames(wxStringList& names) = 0;
|
|
virtual bool Edit(wxWindow *parent, const wxString& title);
|
|
static void CloseWindow(); // Close the current window if open.
|
|
};
|
|
|
|
// For all windows
|
|
class wxWindowPropertyInfo: public wxPropertyInfo
|
|
{
|
|
public:
|
|
wxWindowPropertyInfo(wxWindow *win, wxItemResource *res = NULL);
|
|
~wxWindowPropertyInfo(void);
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
|
|
inline void SetPropertyWindow(wxWindow *win) { m_propertyWindow = win; }
|
|
|
|
inline void SetResource(wxItemResource *res) { m_propertyResource = res; }
|
|
|
|
// Helper functions for font properties
|
|
|
|
wxProperty *GetFontProperty(wxString& name, wxFont *font);
|
|
wxFont *SetFontProperty(wxString& name, wxProperty *property, wxFont *oldFont);
|
|
|
|
// Fill in the wxItemResource members to mirror the current window settings
|
|
virtual bool InstantiateResource(wxItemResource *resource);
|
|
|
|
// Set the window style
|
|
void SetWindowStyle(wxWindow* win, long style, bool set);
|
|
|
|
wxWindow* GetWindow() const { return m_propertyWindow; }
|
|
wxItemResource* GetResource() const { return m_propertyResource; }
|
|
|
|
protected:
|
|
wxWindow* m_propertyWindow;
|
|
wxItemResource* m_propertyResource;
|
|
};
|
|
|
|
// For panel items
|
|
class wxItemPropertyInfo: public wxWindowPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxItemPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxWindowPropertyInfo(win, res) {}
|
|
~wxItemPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For buttons
|
|
class wxButtonPropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxButtonPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) { }
|
|
~wxButtonPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For bitmap buttons
|
|
class wxBitmapButtonPropertyInfo: public wxButtonPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxBitmapButtonPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxButtonPropertyInfo(win, res) { }
|
|
~wxBitmapButtonPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For static text controls
|
|
class wxStaticTextPropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxStaticTextPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) { }
|
|
~wxStaticTextPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For static bitmap controls
|
|
class wxStaticBitmapPropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxStaticBitmapPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) { }
|
|
~wxStaticBitmapPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For text/multitext items
|
|
class wxTextPropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxTextPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) {}
|
|
~wxTextPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For list boxes
|
|
class wxListBoxPropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxListBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) {}
|
|
~wxListBoxPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For choice items
|
|
class wxChoicePropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxChoicePropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) {}
|
|
~wxChoicePropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For choice items
|
|
class wxComboBoxPropertyInfo: public wxChoicePropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxComboBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxChoicePropertyInfo(win, res) {}
|
|
~wxComboBoxPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For radiobox items
|
|
class wxRadioBoxPropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxRadioBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) {}
|
|
~wxRadioBoxPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For groupbox items
|
|
class wxGroupBoxPropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxGroupBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) {}
|
|
~wxGroupBoxPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For checkbox items
|
|
class wxCheckBoxPropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxCheckBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) {}
|
|
~wxCheckBoxPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For radiobutton items
|
|
class wxRadioButtonPropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxRadioButtonPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) {}
|
|
~wxRadioButtonPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For gauge items
|
|
class wxGaugePropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxGaugePropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) {}
|
|
~wxGaugePropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For scrollbar items
|
|
class wxScrollBarPropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxScrollBarPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) {}
|
|
~wxScrollBarPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For slider items
|
|
class wxSliderPropertyInfo: public wxItemPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxSliderPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxItemPropertyInfo(win, res) {}
|
|
~wxSliderPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
};
|
|
|
|
// For panels
|
|
class wxPanelPropertyInfo: public wxWindowPropertyInfo
|
|
{
|
|
protected:
|
|
public:
|
|
wxPanelPropertyInfo(wxWindow *win, wxItemResource *res = NULL):
|
|
wxWindowPropertyInfo(win, res) {}
|
|
~wxPanelPropertyInfo(void) {}
|
|
wxProperty *GetProperty(wxString& name);
|
|
bool SetProperty(wxString& name, wxProperty *property);
|
|
void GetPropertyNames(wxStringList& names);
|
|
bool InstantiateResource(wxItemResource *resource);
|
|
|
|
// Convert this dialog, and its children, to or from dialog units
|
|
void ConvertDialogUnits(bool toDialogUnits);
|
|
};
|
|
|
|
int wxStringToFontWeight(wxString& val);
|
|
int wxStringToFontStyle(wxString& val);
|
|
int wxStringToFontFamily(wxString& val);
|
|
|
|
/*
|
|
* A validator to allow editing symbol/id pairs
|
|
*/
|
|
|
|
class wxResourceSymbolValidator: public wxPropertyListValidator
|
|
{
|
|
DECLARE_DYNAMIC_CLASS(wxResourceSymbolValidator)
|
|
protected:
|
|
public:
|
|
wxResourceSymbolValidator(long flags = 0);
|
|
|
|
~wxResourceSymbolValidator(void);
|
|
|
|
// Called when TICK is pressed or focus is lost.
|
|
// Return FALSE if value didn't check out; signal to restore old value.
|
|
bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
|
|
|
|
// Called when TICK is pressed or focus is lost or view wants to update
|
|
// the property list.
|
|
// Does the transferance from the property editing area to the property itself
|
|
bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
|
|
bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
|
|
|
|
bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
|
|
|
|
bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
|
|
|
|
// Called when the edit (...) button is pressed.
|
|
void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
|
|
};
|
|
|
|
/*
|
|
* A dialog for editing symbol/id pairs
|
|
*/
|
|
|
|
class wxResourceSymbolDialog: public wxDialog
|
|
{
|
|
public:
|
|
wxResourceSymbolDialog(wxWindow* parent, const wxWindowID id, const wxString& title,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL);
|
|
|
|
void Init();
|
|
|
|
inline void SetSymbol(const wxString& symbol) { m_symbolName = symbol; }
|
|
inline void SetId(long id) { m_symbolId = id; }
|
|
|
|
inline wxString GetSymbol() const { return m_symbolName; }
|
|
inline long GetId() const { return m_symbolId; }
|
|
|
|
bool CheckValues();
|
|
void OnOK(wxCommandEvent& event);
|
|
void OnComboBoxSelect(wxCommandEvent& event);
|
|
void OnSymbolNameUpdate(wxCommandEvent& event);
|
|
|
|
protected:
|
|
wxString m_symbolName;
|
|
long m_symbolId;
|
|
wxComboBox* m_nameCtrl;
|
|
wxTextCtrl* m_idCtrl;
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
};
|
|
|
|
#define ID_SYMBOLNAME_COMBOBOX 100
|
|
#define ID_SYMBOLID_TEXTCTRL 101
|
|
|
|
#endif
|
|
// _WINPROP_H_
|