Fixed GetSaveData and SetSaveData in wx.lib.multisash to not depend on

the default way that class objectss are converted to strings.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30416 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2004-11-10 18:16:31 +00:00
parent ca8071ca9f
commit 2268569346
2 changed files with 11 additions and 8 deletions

View File

@@ -24,7 +24,8 @@ OGL patch from Shane Holloway:
that the child is in both self._children and self._divisions. that the child is in both self._children and self._divisions.
Causes many problems when it's not. ;) Causes many problems when it's not. ;)
Fixed GetSaveData and SetSaveData in wx.lib.multisash to not depend on
the default way that class objectss are converted to strings.

View File

@@ -55,17 +55,18 @@ class MultiSash(wx.Window):
def GetSaveData(self): def GetSaveData(self):
saveData = {} saveData = {}
saveData['_defChild'] = str(self._defChild) saveData['_defChild_class'] = self._defChild.__name__
saveData['_defChild_mod'] = self._defChild.__module__
saveData['child'] = self.child.GetSaveData() saveData['child'] = self.child.GetSaveData()
return saveData return saveData
def SetSaveData(self,data): def SetSaveData(self,data):
dChild = data['_defChild'] mod = data['_defChild_mod']
mod = dChild.split('.')[0] dChild = mod + '.' + data['_defChild_class']
exec 'import %s' % mod exec 'import %s' % mod
self._defChild = eval(dChild) self._defChild = eval(dChild)
old = self.child old = self.child
self.child = MultiSplit(self,self,wxPoint(0,0),self.GetSize()) self.child = MultiSplit(self,self,wx.Point(0,0),self.GetSize())
self.child.SetSaveData(data['child']) self.child.SetSaveData(data['child'])
old.Destroy() old.Destroy()
self.OnMultiSize(None) self.OnMultiSize(None)
@@ -307,7 +308,8 @@ class MultiViewLeaf(wx.Window):
def GetSaveData(self): def GetSaveData(self):
saveData = {} saveData = {}
saveData['detailClass'] = str(self.detail.child.__class__) saveData['detailClass_class'] = self.detail.child.__class__.__name__
saveData['detailClass_mod'] = self.detail.child.__module__
if hasattr(self.detail.child,'GetSaveData'): if hasattr(self.detail.child,'GetSaveData'):
attr = getattr(self.detail.child,'GetSaveData') attr = getattr(self.detail.child,'GetSaveData')
if callable(attr): if callable(attr):
@@ -323,8 +325,8 @@ class MultiViewLeaf(wx.Window):
return saveData return saveData
def SetSaveData(self,data): def SetSaveData(self,data):
dChild = data['detailClass'] mod = data['detailClass_mod']
mod = dChild.split('.')[0] dChild = mod + '.' + data['detailClass_class']
exec 'import %s' % mod exec 'import %s' % mod
detClass = eval(dChild) detClass = eval(dChild)
self.SetDimensions(data['x'],data['y'],data['w'],data['h']) self.SetDimensions(data['x'],data['y'],data['w'],data['h'])