瀏覽代碼

*** empty log message ***

gregw 25 年之前
父節點
當前提交
f1c005149f
共有 2 個文件被更改,包括 34 次插入19 次删除
  1. 16 9
      direct/src/gui/Button.py
  2. 18 10
      direct/src/gui/Frame.py

+ 16 - 9
direct/src/gui/Button.py

@@ -9,46 +9,53 @@ font = (loader.loadModelOnce("fonts/ttf-comic")).node()
 
 
 class Button:
 class Button:
 
 
-    def __init__(self, name):
+    def __init__(self, name, label=None):
         self.name = name
         self.name = name
-        self.managed = 0
+        # if no label given, use the button name
+        if (label == None):
+            self.label = name
+        else:
+            self.label = label
         # up
         # up
-        self.l1 = GuiLabel.GuiLabel.makeSimpleTextLabel(name, font)
+        self.l1 = GuiLabel.GuiLabel.makeSimpleTextLabel(self.label, font)
         self.l1.setForegroundColor(0., 0., 0., 1.)
         self.l1.setForegroundColor(0., 0., 0., 1.)
         self.l1.setBackgroundColor(1., 1., 1., 1.)
         self.l1.setBackgroundColor(1., 1., 1., 1.)
         # roll-over up
         # roll-over up
-        self.l2 = GuiLabel.GuiLabel.makeSimpleTextLabel(name, font)
+        self.l2 = GuiLabel.GuiLabel.makeSimpleTextLabel(self.label, font)
         self.l2.setForegroundColor(0., 0., 0., 1.)
         self.l2.setForegroundColor(0., 0., 0., 1.)
         self.l2.setBackgroundColor(1., 1., 0., 1.)
         self.l2.setBackgroundColor(1., 1., 0., 1.)
         # roll-over down
         # roll-over down
-        self.l3 = GuiLabel.GuiLabel.makeSimpleTextLabel(name, font)
+        self.l3 = GuiLabel.GuiLabel.makeSimpleTextLabel(self.label, font)
         self.l3.setForegroundColor(1., 1., 1., 1.)
         self.l3.setForegroundColor(1., 1., 1., 1.)
         self.l3.setBackgroundColor(0., 0., 0., 1.)
         self.l3.setBackgroundColor(0., 0., 0., 1.)
-        self.button = GuiButton.GuiButton(name, self.l1, self.l2,
+        self.button = GuiButton.GuiButton(self.name, self.l1, self.l2,
                                           self.l3, self.l3, self.l1)
                                           self.l3, self.l3, self.l1)
         self.setScale(0.1)
         self.setScale(0.1)
         self.setPos(0., 0.)
         self.setPos(0., 0.)
+        self.managed = 0
 
 
     def __del__(self):
     def __del__(self):
         if (self.managed):
         if (self.managed):
             self.button.unmanage()
             self.button.unmanage()
-        del(self.button)
         del(self.l1)
         del(self.l1)
         del(self.l2)
         del(self.l2)
+        del(self.button)
         
         
     def __str__(self):
     def __str__(self):
         return "Button: %s" % self.name
         return "Button: %s" % self.name
     
     
     def getName(self):
     def getName(self):
         return self.name
         return self.name
+
+    def getLabel(self):
+        return self.label
     
     
     def getGuiItem(self):
     def getGuiItem(self):
         return self.button
         return self.button
 
 
     def getWidth(self):
     def getWidth(self):
-        # assume all buttons have the same width
+        # assume all labels have the same width
         return self.l1.getWidth()
         return self.l1.getWidth()
-
     
     
     def setWidth(self, width):
     def setWidth(self, width):
         self.l1.setWidth(width)
         self.l1.setWidth(width)

+ 18 - 10
direct/src/gui/Frame.py

@@ -24,19 +24,11 @@ class Frame:
     def __str__(self):
     def __str__(self):
         return "Frame: %s = %s" % self.name, self.items
         return "Frame: %s = %s" % self.name, self.items
 
 
-    # frame functions
+    # accessing
     def getName(self):
     def getName(self):
         return self.name
         return self.name
     
     
-    def manage(self):
-        self.frame.manage(guiMgr, base.eventMgr.eventHandler)
-        self.managed = 1
-        
-    def unmanage(self):
-        self.frame.unmanage()
-        self.unmanage = 0
-        
-    def setPos(Self, x, y):
+    def setPos(self, x, y):
         v3 = Vec3.Vec3(x, 0., y)
         v3 = Vec3.Vec3(x, 0., y)
         self.frame.setPos(v3)
         self.frame.setPos(v3)
 
 
@@ -48,12 +40,28 @@ class Frame:
 
 
     def setOffset(self, offset):
     def setOffset(self, offset):
         self.offset = offset
         self.offset = offset
+
+    # actions
+    def manage(self):
+        self.frame.manage(guiMgr, base.eventMgr.eventHandler)
+        self.managed = 1
+        
+    def unmanage(self):
+        self.frame.unmanage()
+        self.managed = 0
+
+    def recompute(self):
+        self.frame.recompute()
         
         
     # content functions
     # content functions
     def addItem(self, item):
     def addItem(self, item):
         self.frame.addItem(item.getGuiItem())
         self.frame.addItem(item.getGuiItem())
         self.items.append(item)
         self.items.append(item)
 
 
+    def removeItem(self, item):
+        self.frame.removeItem(item.getGuiItem())
+        self.items.remove(item)
+        
     def getItems(self):
     def getItems(self):
         return self.items
         return self.items