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.
#if wxUSE_IMAGE || defined(SWIG)
#if wxUSE_IMAGE
#include "wx/image.h"
#endif
@@ -356,7 +356,7 @@ protected:
#endif
#if wxUSE_CHOICEDLG || defined(SWIG)
#if wxUSE_CHOICEDLG
/** @class wxMultiChoiceProperty
@ingroup classes

View File

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

View File

@@ -212,39 +212,18 @@ private:
class WXDLLIMPEXP_PROPGRID
wxPropertyGridManager : public wxPanel, public wxPropertyGridInterface
{
#ifndef SWIG
DECLARE_CLASS(wxPropertyGridManager)
#endif
friend class wxPropertyGridPage;
public:
#ifdef 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
#ifndef SWIG
/**
Two step constructor.
Call Create when this constructor is called to build up the
wxPropertyGridManager.
*/
wxPropertyGridManager();
#endif
/** The default constructor. The styles to be used are styles valid for
the wxWindow.
@@ -259,8 +238,6 @@ public:
/** Destructor */
virtual ~wxPropertyGridManager();
#endif
/** Creates new property page. Note that the first page is not created
automatically.
@param label
@@ -588,19 +565,6 @@ public:
*/
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:
//

View File

@@ -2124,42 +2124,18 @@ public:
wxPropertyGridPageState* GetParentState() const { return m_parentState; }
#endif
#ifndef SWIG
wxPGProperty* GetItemAtY( unsigned int y,
unsigned int lh,
unsigned int* nextItemY ) const;
#endif
wxPGProperty* GetItemAtY( unsigned int y ) const;
/** Returns (direct) child property with given name (or NULL if not found).
*/
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
// Returns various display-related information for given column

View File

@@ -579,30 +579,10 @@ class WXDLLIMPEXP_PROPGRID
friend class wxPropertyGridManager;
friend class wxPGCanvas;
#ifndef SWIG
DECLARE_DYNAMIC_CLASS(wxPropertyGrid)
#endif
public:
#ifdef 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
#ifndef SWIG
/**
Two step constructor.
@@ -610,6 +590,7 @@ public:
wxPropertyGrid
*/
wxPropertyGrid();
#endif
/** The default constructor. The styles to be used are styles valid for
the wxWindow and wxScrolledWindow.
@@ -624,7 +605,6 @@ public:
/** Destructor */
virtual ~wxPropertyGrid();
#endif
/** Adds given key combination to trigger given action.

View File

@@ -1260,246 +1260,6 @@ public:
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.
wxPGProperty* GetPropertyByNameA( const wxString& name ) const;
@@ -1508,7 +1268,6 @@ public:
virtual void RefreshProperty( wxPGProperty* p ) = 0;
protected:
/**
In derived class, implement to set editable state component with
given name to given value.

View File

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

View File

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