Procházet zdrojové kódy

*** empty log message ***

Mike Goslin před 25 roky
rodič
revize
20987630f3

+ 3 - 5
direct/src/fsm/StateData.py

@@ -14,11 +14,9 @@ class StateData(DirectObject):
 	self.isLoaded = 0
 	self.isLoaded = 0
 	self.isEntered = 0
 	self.isEntered = 0
 	return None
 	return None
-
-    def __del__(self):
-	"""__del__(self)
-	Only define this if you construct any classes in your __init__()
-	so you can del them explicitly
+    
+    def cleanup(self):
+	"""cleanup(self)
 	"""
 	"""
 	self.unload()
 	self.unload()
 	return None
 	return None

+ 8 - 6
direct/src/gui/Button.py

@@ -1,4 +1,5 @@
 from ShowBaseGlobal import *
 from ShowBaseGlobal import *
+from DirectObject import *
 import GuiManager
 import GuiManager
 import GuiLabel
 import GuiLabel
 import GuiButton
 import GuiButton
@@ -7,7 +8,7 @@ import Vec3
 guiMgr = GuiManager.GuiManager.getPtr(base.win, base.mak.node())
 guiMgr = GuiManager.GuiManager.getPtr(base.win, base.mak.node())
 font = (loader.loadModelOnce("phase_3/models/fonts/ttf-comic")).node()
 font = (loader.loadModelOnce("phase_3/models/fonts/ttf-comic")).node()
 
 
-class Button:
+class Button(DirectObject):
 
 
     def __init__(self, name, label=None):
     def __init__(self, name, label=None):
         self.name = name
         self.name = name
@@ -31,14 +32,15 @@ class Button:
                                           self.l3, self.l3, self.l1)
                                           self.l3, self.l3, self.l1)
         self.setScale(0.1)
         self.setScale(0.1)
         self.managed = 0
         self.managed = 0
+	return None
 
 
-
-    def __del__(self):
+    def cleanup(self):
         if (self.managed):
         if (self.managed):
             self.button.unmanage()
             self.button.unmanage()
-        del(self.l1)
-        del(self.l2)
-        del(self.button)
+        self.l1 = None
+        self.l2 = None
+        self.button = None
+	return None
         
         
     def __str__(self):
     def __str__(self):
         return "Button: %s" % self.name
         return "Button: %s" % self.name

+ 4 - 2
direct/src/gui/ForceAcknowledge.py

@@ -29,7 +29,6 @@ class ForceAcknowledge(StateData.StateData):
 	    self.okButton.manage()
 	    self.okButton.manage()
 	    self.accept("ForceAcknowledge-rollover", self.__handleRollover)
 	    self.accept("ForceAcknowledge-rollover", self.__handleRollover)
 	    self.accept("ForceAcknowledge-ok", self.__handleOk)
 	    self.accept("ForceAcknowledge-ok", self.__handleOk)
-	
 	return None
 	return None
 
 
     def exit(self):
     def exit(self):
@@ -79,7 +78,10 @@ class ForceAcknowledge(StateData.StateData):
 
 
 	# GUI
 	# GUI
 	self.text.removeNode()
 	self.text.removeNode()
-	del(self.okButton)
+	self.text.cleanup()
+	self.text = None
+	self.okButton.cleanup()
+	self.okButton = None
 	self.isLoaded = 0
 	self.isLoaded = 0
 	return None
 	return None
 
 

+ 8 - 3
direct/src/gui/Frame.py

@@ -1,4 +1,5 @@
 from ShowBaseGlobal import *
 from ShowBaseGlobal import *
+from DirectObject import *
 import GuiManager
 import GuiManager
 import GuiFrame
 import GuiFrame
 import Vec3
 import Vec3
@@ -6,7 +7,7 @@ import Vec3
 guiMgr = GuiManager.GuiManager.getPtr(base.win, base.mak.node())
 guiMgr = GuiManager.GuiManager.getPtr(base.win, base.mak.node())
 font = (loader.loadModelOnce("phase_3/models/fonts/ttf-comic")).node()
 font = (loader.loadModelOnce("phase_3/models/fonts/ttf-comic")).node()
 
 
-class Frame:
+class Frame(DirectObject):
 
 
     # special methods
     # special methods
     def __init__(self, name):
     def __init__(self, name):
@@ -15,11 +16,15 @@ class Frame:
         self.offset = 0
         self.offset = 0
         self.frame = GuiFrame.GuiFrame(name)
         self.frame = GuiFrame.GuiFrame(name)
         self.items = []
         self.items = []
+	return None
 
 
-    def __del__(self):
+    def cleanup(self):
+	"""cleanup(self)
+	"""
         if (self.managed):
         if (self.managed):
             self.frame.unmanage()
             self.frame.unmanage()
-        del(self.frame)
+        self.frame = None
+	return None
         
         
     def __str__(self):
     def __str__(self):
         return "Frame: %s = %s" % (self.name, self.items)
         return "Frame: %s = %s" % (self.name, self.items)

+ 8 - 4
direct/src/gui/OnscreenText.py

@@ -36,12 +36,16 @@ class OnscreenText(PandaObject, NodePath):
 
 
         # assume 4:3 aspect ratio
         # assume 4:3 aspect ratio
         self.setScale( 0.069, 1.0, 0.069)
         self.setScale( 0.069, 1.0, 0.069)
+	self.isClean = 0
+	return None
 
 
-    def __del__(self):
-	"""__del__(self)
+    def cleanup(self):
+	"""cleanup(self)
 	"""
 	"""
-	del(self.textNode)
-       	NodePath.__del__(self) 
+	self.textNode = None
+	if self.isClean == 0:
+	    self.isClean = 1
+       	    NodePath.__del__(self) 
 	return None
 	return None
  
  
     def setText(self, string):
     def setText(self, string):

+ 4 - 3
direct/src/gui/PickList.py

@@ -32,9 +32,10 @@ class PickList(PandaObject.PandaObject):
         
         
         # display the menu
         # display the menu
         self.__displayChoices(choiceList)
         self.__displayChoices(choiceList)
+	return None
 
 
-    def __del__(self):
-	"""__del__(self)
+    def cleanup(self):
+	"""cleanup(self)
 	"""
 	"""
         # remove keyboard events
         # remove keyboard events
         self.ignore("up-up")
         self.ignore("up-up")
@@ -49,7 +50,7 @@ class PickList(PandaObject.PandaObject):
 
 
         # reset the display
         # reset the display
         self.frame.unmanage()
         self.frame.unmanage()
-        del(self.frame)
+	self.frame = None
 	return None
 	return None
         
         
     # accessing
     # accessing

+ 12 - 11
direct/src/gui/ScrollingLabel.py

@@ -78,24 +78,25 @@ class ScrollingLabel(PandaObject.PandaObject):
         
         
         # refresh the frame
         # refresh the frame
         self.frame.recompute()
         self.frame.recompute()
+	return None
 
 
-    def __del__(self):
-	"""__del__(self)
+    def cleanup(self):
+	"""cleanup(self)
 	"""
 	"""
-        # remove gui items
-        del(self.frame)
-        del(self.items)
-
         # ignore events
         # ignore events
         self.ignore(self.name + "-left")
         self.ignore(self.name + "-left")
         self.ignore(self.name + "-right")
         self.ignore(self.name + "-right")
         self.setKeyFocus(0)
         self.setKeyFocus(0)
 
 
-	del(self.label)
-	del(self.title)
-	del(self.itemSign)
-	del(self.leftButton)
-	del(self.rightButton)
+        # remove gui items
+        self.frame = None
+        self.items = None
+
+	self.label = None
+	self.title = None
+	self.itemSign = None
+	self.leftButton = None
+	self.rightButton = None
 	return None
 	return None
 
 
     # accessing
     # accessing

+ 8 - 3
direct/src/gui/Sign.py

@@ -1,10 +1,11 @@
 from ShowBaseGlobal import *
 from ShowBaseGlobal import *
+from DirectObject import *
 import GuiSign
 import GuiSign
 import GuiManager
 import GuiManager
 
 
 guiMgr = GuiManager.GuiManager.getPtr(base.win, base.mak.node())
 guiMgr = GuiManager.GuiManager.getPtr(base.win, base.mak.node())
 
 
-class Sign:
+class Sign(DirectObject):
 
 
     def __init__(self, name, label):
     def __init__(self, name, label):
         self.name = name
         self.name = name
@@ -12,11 +13,15 @@ class Sign:
         self.sign = GuiSign.GuiSign(name, label)
         self.sign = GuiSign.GuiSign(name, label)
         self.setScale(0.1)
         self.setScale(0.1)
         self.managed = 0
         self.managed = 0
+	return None
 
 
-    def __del__(self):
+    def cleanup(self):
+	"""cleanup(self)
+	"""
         if (self.managed):
         if (self.managed):
             self.unmanage()
             self.unmanage()
-        del(self.sign)
+        self.sign = None
+	return None
 
 
     def __str__(self):
     def __str__(self):
         return "sign: %s contains label: %s" % (self.name, self.label.name)
         return "sign: %s contains label: %s" % (self.name, self.label.name)

+ 8 - 0
direct/src/showbase/DirectObject.py

@@ -6,6 +6,14 @@ class DirectObject:
     """
     """
     This is the class that all Direct/SAL classes should inherit from
     This is the class that all Direct/SAL classes should inherit from
     """
     """
+    def __del__(self):
+	"""__del__(self)
+	"""
+	try: 
+	    self.cleanup()
+	except:
+	    directNotify.notify.warning('No cleanup() method defined!')
+
     # Event Handling
     # Event Handling
 
 
     # object.accept('mouse', object.handleMouse)
     # object.accept('mouse', object.handleMouse)