mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-18 12:43:44 -04:00
improved destroy interface
This commit is contained in:
parent
e996fb620f
commit
10c7f2a18e
@ -96,8 +96,6 @@ class DirectGuiBase(PandaObject.PandaObject):
|
||||
def __init__(self):
|
||||
# Default id of all gui object, subclasses should override this
|
||||
self.guiId = 'guiObject'
|
||||
# List of all active hooks
|
||||
self._hookDict = {}
|
||||
# List of all post initialization functions
|
||||
self.postInitialiseFuncList = []
|
||||
# To avoid doing things redundantly during initialisation
|
||||
@ -617,10 +615,8 @@ class DirectGuiBase(PandaObject.PandaObject):
|
||||
|
||||
def destroy(self):
|
||||
# Clean out any hooks
|
||||
for event in self._hookDict.keys():
|
||||
self.ignore(event)
|
||||
self.ignoreAll()
|
||||
del(self._optionInfo)
|
||||
del(self._hookDict)
|
||||
del(self.__componentInfo)
|
||||
del self.postInitialiseFuncList
|
||||
|
||||
@ -633,8 +629,6 @@ class DirectGuiBase(PandaObject.PandaObject):
|
||||
# Need to tack on gui item specific id
|
||||
gEvent = event + self.guiId
|
||||
self.accept(gEvent, command, extraArgs = extraArgs)
|
||||
# Keep track of all events you're accepting
|
||||
self._hookDict[gEvent] = command
|
||||
|
||||
def unbind(self, event):
|
||||
"""
|
||||
@ -643,8 +637,6 @@ class DirectGuiBase(PandaObject.PandaObject):
|
||||
# Need to tack on gui item specific id
|
||||
gEvent = event + self.guiId
|
||||
self.ignore(gEvent)
|
||||
if self._hookDict.has_key(gEvent):
|
||||
del(self._hookDict[gEvent])
|
||||
|
||||
def toggleGuiGridSnap():
|
||||
DirectGuiWidget.snapToGrid = 1 - DirectGuiWidget.snapToGrid
|
||||
@ -665,7 +657,8 @@ class DirectGuiWidget(DirectGuiBase, NodePath):
|
||||
inactiveInitState = NORMAL
|
||||
else:
|
||||
inactiveInitState = DISABLED
|
||||
|
||||
|
||||
guiDict = {}
|
||||
|
||||
def __init__(self, parent = aspect2d, **kw):
|
||||
# Direct gui widgets are node paths
|
||||
@ -771,7 +764,8 @@ class DirectGuiWidget(DirectGuiBase, NodePath):
|
||||
self.guiItem.setSuppressFlags(suppressFlags)
|
||||
|
||||
# Bind destroy hook
|
||||
self.bind(DESTROY, self.destroy)
|
||||
self.guiDict[self.guiId] = self
|
||||
# self.bind(DESTROY, self.destroy)
|
||||
|
||||
# Update frame when everything has been initialized
|
||||
self.postInitialiseFuncList.append(self.frameInitialiseFunc)
|
||||
@ -975,11 +969,14 @@ class DirectGuiWidget(DirectGuiBase, NodePath):
|
||||
for i in range(self['numStates']):
|
||||
self.frameStyle[i].setWidth(width[0], width[1])
|
||||
self.updateFrameStyle()
|
||||
|
||||
|
||||
def destroy(self):
|
||||
# Destroy children
|
||||
for child in self.getChildrenAsList():
|
||||
messenger.send(DESTROY + child.getName())
|
||||
childGui = self.guiDict.get(child.getName())
|
||||
if childGui: childGui.destroy()
|
||||
# messenger.send(DESTROY + child.getName())
|
||||
del self.guiDict[self.guiId]
|
||||
del self.frameStyle
|
||||
# Get rid of node path
|
||||
self.removeNode()
|
||||
|
Loading…
x
Reference in New Issue
Block a user