wxPython 2.9.0 bindings related cleanup (should not have broken anything, really...)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_9_0_BRANCH@60793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Jaakko Salli
2009-05-29 16:04:22 +00:00
parent 76f35c3132
commit f94693fbc4
8 changed files with 17 additions and 350 deletions

View File

@@ -156,7 +156,7 @@ DECLARE_VARIANT_OBJECT_EXPORTED(wxColourPropertyValue, WXDLLIMPEXP_PROPGRID)
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// Declare part of custom colour property macro pairs. // Declare part of custom colour property macro pairs.
#if wxUSE_IMAGE || defined(SWIG) #if wxUSE_IMAGE
#include "wx/image.h" #include "wx/image.h"
#endif #endif
@@ -356,7 +356,7 @@ protected:
#endif #endif
#if wxUSE_CHOICEDLG || defined(SWIG) #if wxUSE_CHOICEDLG
/** @class wxMultiChoiceProperty /** @class wxMultiChoiceProperty
@ingroup classes @ingroup classes

View File

@@ -75,9 +75,7 @@ public:
*/ */
class WXDLLIMPEXP_PROPGRID wxPGEditor : public wxObject class WXDLLIMPEXP_PROPGRID wxPGEditor : public wxObject
{ {
#ifndef SWIG
DECLARE_ABSTRACT_CLASS(wxPGEditor) DECLARE_ABSTRACT_CLASS(wxPGEditor)
#endif
public: public:
/** Constructor. */ /** Constructor. */
@@ -223,9 +221,7 @@ wxPGEditor* wxPGEditor_##EDITOR = NULL;
class WXDLLIMPEXP_PROPGRID wxPGTextCtrlEditor : public wxPGEditor class WXDLLIMPEXP_PROPGRID wxPGTextCtrlEditor : public wxPGEditor
{ {
#ifndef SWIG
DECLARE_DYNAMIC_CLASS(wxPGTextCtrlEditor) DECLARE_DYNAMIC_CLASS(wxPGTextCtrlEditor)
#endif
public: public:
wxPGTextCtrlEditor() {} wxPGTextCtrlEditor() {}
virtual ~wxPGTextCtrlEditor(); virtual ~wxPGTextCtrlEditor();
@@ -270,9 +266,7 @@ public:
class WXDLLIMPEXP_PROPGRID wxPGChoiceEditor : public wxPGEditor class WXDLLIMPEXP_PROPGRID wxPGChoiceEditor : public wxPGEditor
{ {
#ifndef SWIG
DECLARE_DYNAMIC_CLASS(wxPGChoiceEditor) DECLARE_DYNAMIC_CLASS(wxPGChoiceEditor)
#endif
public: public:
wxPGChoiceEditor() {} wxPGChoiceEditor() {}
virtual ~wxPGChoiceEditor(); virtual ~wxPGChoiceEditor();
@@ -319,9 +313,7 @@ public:
class WXDLLIMPEXP_PROPGRID wxPGComboBoxEditor : public wxPGChoiceEditor class WXDLLIMPEXP_PROPGRID wxPGComboBoxEditor : public wxPGChoiceEditor
{ {
#ifndef SWIG
DECLARE_DYNAMIC_CLASS(wxPGComboBoxEditor) DECLARE_DYNAMIC_CLASS(wxPGComboBoxEditor)
#endif
public: public:
wxPGComboBoxEditor() {} wxPGComboBoxEditor() {}
virtual ~wxPGComboBoxEditor(); virtual ~wxPGComboBoxEditor();
@@ -392,9 +384,7 @@ public:
// //
class WXDLLIMPEXP_PROPGRID wxPGCheckBoxEditor : public wxPGEditor class WXDLLIMPEXP_PROPGRID wxPGCheckBoxEditor : public wxPGEditor
{ {
#ifndef SWIG
DECLARE_DYNAMIC_CLASS(wxPGCheckBoxEditor) DECLARE_DYNAMIC_CLASS(wxPGCheckBoxEditor)
#endif
public: public:
wxPGCheckBoxEditor() {} wxPGCheckBoxEditor() {}
virtual ~wxPGCheckBoxEditor(); virtual ~wxPGCheckBoxEditor();
@@ -456,9 +446,7 @@ public:
*/ */
class WXDLLIMPEXP_PROPGRID wxPGEditorDialogAdapter : public wxObject class WXDLLIMPEXP_PROPGRID wxPGEditorDialogAdapter : public wxObject
{ {
#ifndef SWIG
DECLARE_ABSTRACT_CLASS(wxPGEditorDialogAdapter) DECLARE_ABSTRACT_CLASS(wxPGEditorDialogAdapter)
#endif
public: public:
wxPGEditorDialogAdapter() wxPGEditorDialogAdapter()
: wxObject() : wxObject()

View File

@@ -212,39 +212,18 @@ private:
class WXDLLIMPEXP_PROPGRID class WXDLLIMPEXP_PROPGRID
wxPropertyGridManager : public wxPanel, public wxPropertyGridInterface wxPropertyGridManager : public wxPanel, public wxPropertyGridInterface
{ {
#ifndef SWIG
DECLARE_CLASS(wxPropertyGridManager) DECLARE_CLASS(wxPropertyGridManager)
#endif
friend class wxPropertyGridPage; friend class wxPropertyGridPage;
public: public:
#ifdef SWIG #ifndef SWIG
%pythonAppend wxPropertyGridManager {
self._setOORInfo(self)
self.DoDefaultTypeMappings()
self.edited_objects = {}
self.DoDefaultValueTypeMappings()
if not hasattr(self.__class__,'_vt2setter'):
self.__class__._vt2setter = {}
}
%pythonAppend wxPropertyGridManager() ""
wxPropertyGridManager( wxWindow *parent, wxWindowID id = wxID_ANY,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxPGMAN_DEFAULT_STYLE,
const wxChar* name =
wxPyPropertyGridManagerNameStr );
%RenameCtor(PrePropertyGridManager, wxPropertyGridManager());
#else
/** /**
Two step constructor. Two step constructor.
Call Create when this constructor is called to build up the Call Create when this constructor is called to build up the
wxPropertyGridManager. wxPropertyGridManager.
*/ */
wxPropertyGridManager(); wxPropertyGridManager();
#endif
/** The default constructor. The styles to be used are styles valid for /** The default constructor. The styles to be used are styles valid for
the wxWindow. the wxWindow.
@@ -259,8 +238,6 @@ public:
/** Destructor */ /** Destructor */
virtual ~wxPropertyGridManager(); virtual ~wxPropertyGridManager();
#endif
/** Creates new property page. Note that the first page is not created /** Creates new property page. Note that the first page is not created
automatically. automatically.
@param label @param label
@@ -588,19 +565,6 @@ public:
*/ */
void SetSplitterPosition( int pos, int column = 0 ); void SetSplitterPosition( int pos, int column = 0 );
#ifdef SWIG
%pythoncode {
def GetValuesFromPage(self,
page,
dict_=None,
as_strings=False,
inc_attributes=False):
"Same as GetValues, but returns values from specific page only."
"For argument descriptions, see GetValues."
return page.GetPropertyValues(dict_, as_strings, inc_attributes)
}
#endif
protected: protected:
// //

View File

@@ -2124,42 +2124,18 @@ public:
wxPropertyGridPageState* GetParentState() const { return m_parentState; } wxPropertyGridPageState* GetParentState() const { return m_parentState; }
#endif #endif
#ifndef SWIG
wxPGProperty* GetItemAtY( unsigned int y, wxPGProperty* GetItemAtY( unsigned int y,
unsigned int lh, unsigned int lh,
unsigned int* nextItemY ) const; unsigned int* nextItemY ) const;
#endif
wxPGProperty* GetItemAtY( unsigned int y ) const;
/** Returns (direct) child property with given name (or NULL if not found). /** Returns (direct) child property with given name (or NULL if not found).
*/ */
wxPGProperty* GetPropertyByName( const wxString& name ) const; wxPGProperty* GetPropertyByName( const wxString& name ) const;
#ifdef SWIG
%extend {
DocStr(GetClientData,
"Returns the client data object for a property", "");
PyObject* GetClientData() {
wxPyClientData* data = (wxPyClientData*)self->GetClientObject();
if (data) {
Py_INCREF(data->m_obj);
return data->m_obj;
} else {
Py_INCREF(Py_None);
return Py_None;
}
}
DocStr(SetClientData,
"Associate the given client data.", "");
void SetClientData(PyObject* clientData) {
wxPyClientData* data = new wxPyClientData(clientData);
self->SetClientObject(data);
}
}
%pythoncode {
GetClientObject = GetClientData
SetClientObject = SetClientData
}
#endif
#ifndef SWIG #ifndef SWIG
// Returns various display-related information for given column // Returns various display-related information for given column

View File

@@ -579,30 +579,10 @@ class WXDLLIMPEXP_PROPGRID
friend class wxPropertyGridManager; friend class wxPropertyGridManager;
friend class wxPGCanvas; friend class wxPGCanvas;
#ifndef SWIG
DECLARE_DYNAMIC_CLASS(wxPropertyGrid) DECLARE_DYNAMIC_CLASS(wxPropertyGrid)
#endif
public: public:
#ifdef SWIG #ifndef SWIG
%pythonAppend wxPropertyGrid {
self._setOORInfo(self)
self.DoDefaultTypeMappings()
self.edited_objects = {}
self.DoDefaultValueTypeMappings()
if not hasattr(self.__class__,'_vt2setter'):
self.__class__._vt2setter = {}
}
%pythonAppend wxPropertyGrid() ""
wxPropertyGrid( wxWindow *parent, wxWindowID id = wxID_ANY,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxPG_DEFAULT_STYLE,
const wxChar* name = wxPyPropertyGridNameStr );
%RenameCtor(PrePropertyGrid, wxPropertyGrid());
#else
/** /**
Two step constructor. Two step constructor.
@@ -610,6 +590,7 @@ public:
wxPropertyGrid wxPropertyGrid
*/ */
wxPropertyGrid(); wxPropertyGrid();
#endif
/** The default constructor. The styles to be used are styles valid for /** The default constructor. The styles to be used are styles valid for
the wxWindow and wxScrolledWindow. the wxWindow and wxScrolledWindow.
@@ -624,7 +605,6 @@ public:
/** Destructor */ /** Destructor */
virtual ~wxPropertyGrid(); virtual ~wxPropertyGrid();
#endif
/** Adds given key combination to trigger given action. /** Adds given key combination to trigger given action.

View File

@@ -1260,246 +1260,6 @@ public:
m_pState->DoSortChildren(p, flags); m_pState->DoSortChildren(p, flags);
} }
#ifdef SWIG
%pythoncode {
def MapType(class_,factory):
"Registers Python type/class to property mapping.\n\nfactory: Property builder function/class."
global _type2property
try:
mappings = _type2property
except NameError:
raise AssertionError("call only after a propertygrid or manager instance constructed")
mappings[class_] = factory
def DoDefaultTypeMappings(self):
"Map built-in properties."
global _type2property
try:
mappings = _type2property
return
except NameError:
mappings = {}
_type2property = mappings
mappings[str] = StringProperty
mappings[unicode] = StringProperty
mappings[int] = IntProperty
mappings[float] = FloatProperty
mappings[bool] = BoolProperty
mappings[list] = ArrayStringProperty
mappings[tuple] = ArrayStringProperty
mappings[wx.Font] = FontProperty
mappings[wx.Colour] = ColourProperty
"mappings[wx.Size] = SizeProperty"
"mappings[wx.Point] = PointProperty"
"mappings[wx.FontData] = FontDataProperty"
def DoDefaultValueTypeMappings(self):
"Map pg value type ids to getter methods."
global _vt2getter
try:
vt2getter = _vt2getter
return
except NameError:
vt2getter = {}
_vt2getter = vt2getter
def GetPropertyValues(self,dict_=None, as_strings=False, inc_attributes=False):
"Returns values in the grid."
""
"dict_: if not given, then a new one is created. dict_ can be"
" object as well, in which case it's __dict__ is used."
"as_strings: if True, then string representations of values"
" are fetched instead of native types. Useful for config and such."
"inc_attributes: if True, then property attributes are added"
" as @<propname>@<attr>."
""
"Return value: dictionary with values. It is always a dictionary,"
"so if dict_ was object with __dict__ attribute, then that attribute"
"is returned."
if dict_ is None:
dict_ = {}
elif hasattr(dict_,'__dict__'):
dict_ = dict_.__dict__
if not as_strings:
getter = self.GetPropertyValue
else:
getter = self.GetPropertyValueAsString
it = self.GetVIterator(PG_ITERATE_PROPERTIES)
while not it.AtEnd():
p = it.GetProperty()
name = p.GetName()
dict_[name] = getter(p)
if inc_attributes:
attrs = p.GetAttributes()
if attrs and len(attrs):
dict_['@%s@attr'%name] = attrs
it.Next()
return dict_
GetValues = GetPropertyValues
def SetPropertyValues(self,dict_):
"Sets property values from dict_, which can be either\ndictionary or an object with __dict__ attribute."
""
"autofill: If true, keys with not relevant properties"
" are auto-created. For more info, see AutoFill."
""
"Notes:"
" * Keys starting with underscore are ignored."
" * Attributes can be set with entries named @<propname>@<attr>."
""
autofill = False
if dict_ is None:
dict_ = {}
elif hasattr(dict_,'__dict__'):
dict_ = dict_.__dict__
attr_dicts = []
def set_sub_obj(k0,dict_):
for k,v in dict_.iteritems():
if k[0] != '_':
if k.endswith('@attr'):
attr_dicts.append((k[1:-5],v))
else:
try:
self.SetPropertyValue(k,v)
except:
try:
if autofill:
self._AutoFillOne(k0,k,v)
continue
except:
if isinstance(v,dict):
set_sub_obj(k,v)
elif hasattr(v,'__dict__'):
set_sub_obj(k,v.__dict__)
for k,v in attr_dicts:
p = GetPropertyByName(k)
if not p:
raise AssertionError("No such property: '%s'"%k)
for an,av in v.iteritems():
p.SetAttribute(an, av)
cur_page = False
is_manager = isinstance(self,PropertyGridManager)
try:
set_sub_obj(self.GetGrid().GetRoot(),dict_)
except:
import traceback
traceback.print_exc()
self.Refresh()
SetValues = SetPropertyValues
def _AutoFillMany(self,cat,dict_):
for k,v in dict_.iteritems():
self._AutoFillOne(cat,k,v)
def _AutoFillOne(self,cat,k,v):
global _type2property
factory = _type2property.get(v.__class__,None)
if factory:
self.AppendIn( cat, factory(k,k,v) )
elif hasattr(v,'__dict__'):
cat2 = self.AppendIn( cat, PropertyCategory(k) )
self._AutoFillMany(cat2,v.__dict__)
elif isinstance(v,dict):
cat2 = self.AppendIn( cat, PropertyCategory(k) )
self._AutoFillMany(cat2,v)
elif not k.startswith('_'):
raise AssertionError("member '%s' is of unregisted type/class '%s'"%(k,v.__class__))
def AutoFill(self,obj,parent=None):
"Clears properties and re-fills to match members and\nvalues of given object or dictionary obj."
self.edited_objects[parent] = obj
cur_page = False
is_manager = isinstance(self,PropertyGridManager)
if not parent:
if is_manager:
page = self.GetCurrentPage()
page.Clear()
parent = page.GetRoot()
else:
self.Clear()
parent = self.GetGrid().GetRoot()
else:
it = self.GetIterator(PG_ITERATE_PROPERTIES, parent)
it.Next() # Skip the parent
while not it.AtEnd():
p = it.GetProperty()
if not p.IsSomeParent(parent):
break
self.DeleteProperty(p)
name = p.GetName()
it.Next()
if not is_manager or page == self.GetCurrentPage():
self.Freeze()
cur_page = True
try:
self._AutoFillMany(parent,obj.__dict__)
except:
import traceback
traceback.print_exc()
if cur_page:
self.Thaw()
def RegisterEditor(self, editor, editorName=None):
"Transform class into instance, if necessary."
if not isinstance(editor, PGEditor):
editor = editor()
if not editorName:
editorName = editor.__class__.__name__
try:
self._editor_instances.append(editor)
except:
self._editor_instances = [editor]
RegisterEditor(editor, editorName)
def GetPropertyClientData(self, p):
if isinstance(p, basestring):
p = self.GetPropertyByName(p)
return p.GetClientData()
def SetPropertyClientData(self, p, data):
if isinstance(p, basestring):
p = self.GetPropertyByName(p)
return p.SetClientData(data)
}
#endif
// GetPropertyByName With nice assertion error message. // GetPropertyByName With nice assertion error message.
wxPGProperty* GetPropertyByNameA( const wxString& name ) const; wxPGProperty* GetPropertyByNameA( const wxString& name ) const;
@@ -1508,7 +1268,6 @@ public:
virtual void RefreshProperty( wxPGProperty* p ) = 0; virtual void RefreshProperty( wxPGProperty* p ) = 0;
protected: protected:
/** /**
In derived class, implement to set editable state component with In derived class, implement to set editable state component with
given name to given value. given name to given value.

View File

@@ -695,9 +695,7 @@ protected:
*/ */
class WXDLLIMPEXP_PROPGRID wxDirProperty : public wxLongStringProperty class WXDLLIMPEXP_PROPGRID wxDirProperty : public wxLongStringProperty
{ {
#ifndef SWIG
DECLARE_DYNAMIC_CLASS(wxDirProperty) DECLARE_DYNAMIC_CLASS(wxDirProperty)
#endif
public: public:
wxDirProperty( const wxString& name = wxPG_LABEL, wxDirProperty( const wxString& name = wxPG_LABEL,
const wxString& label = wxPG_LABEL, const wxString& label = wxPG_LABEL,
@@ -953,10 +951,8 @@ protected:
virtual void ArraySwap( size_t first, size_t second ) = 0; virtual void ArraySwap( size_t first, size_t second ) = 0;
private: private:
#ifndef SWIG
DECLARE_DYNAMIC_CLASS_NO_COPY(wxArrayEditorDialog) DECLARE_DYNAMIC_CLASS_NO_COPY(wxArrayEditorDialog)
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
#endif
}; };
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
@@ -1003,10 +999,8 @@ protected:
virtual void ArraySwap( size_t first, size_t second ); virtual void ArraySwap( size_t first, size_t second );
private: private:
#ifndef SWIG
DECLARE_DYNAMIC_CLASS_NO_COPY(wxPGArrayStringEditorDialog) DECLARE_DYNAMIC_CLASS_NO_COPY(wxPGArrayStringEditorDialog)
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
#endif
}; };
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------

View File

@@ -2335,6 +2335,12 @@ wxPGProperty* wxPGProperty::GetItemAtY( unsigned int y, unsigned int lh, unsigne
return (wxPGProperty*) result; return (wxPGProperty*) result;
} }
wxPGProperty* wxPGProperty::GetItemAtY( unsigned int y ) const
{
unsigned int nextItemY;
return GetItemAtY(y, GetGrid()->GetRowHeight(), &nextItemY);
}
void wxPGProperty::Empty() void wxPGProperty::Empty()
{ {
size_t i; size_t i;