Files
wxWidgets/utils/dialoged/src/winprop.h
Gilles Depeyrot ab7ce33c56 disable use of #pragma interface under Mac OS X
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
2002-09-07 12:28:46 +00:00

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_