Browse Source

*** empty log message ***

gregw 25 years ago
parent
commit
c8aa47494b
3 changed files with 33 additions and 44 deletions
  1. 2 5
      direct/src/gui/Frame.py
  2. 0 1
      direct/src/gui/PickList.py
  3. 31 38
      direct/src/gui/ScrollingLabel.py

+ 2 - 5
direct/src/gui/Frame.py

@@ -81,7 +81,7 @@ class Frame:
     # convenience functions
     def makeVertical(self):
         # remove any previous packing
-        self.frame.clearAllPacking()
+        #self.frame.clearAllPacking()
         # make each item (except first) align under the last
         for itemNum in range(1, len(self.items)):            
             self.packItem(self.items[itemNum], GuiFrame.GuiFrame.UNDER,
@@ -92,7 +92,7 @@ class Frame:
             
     def makeHorizontal(self):
         # remove any previous packing
-        self.frame.clearAllPacking()
+        #self.frame.clearAllPacking()
         # make each item (except first) align right of the last
         for itemNum in range(1, len(self.items)):
             self.packItem(self.items[itemNum], GuiFrame.GuiFrame.RIGHT,
@@ -113,9 +113,6 @@ class Frame:
                 widest = self.items.index(item)
                 widestWidth = thisWidth
 
-        # re-pack based on new widths
-        self.frame.recompute()
-
         # make them all this wide
         for item in self.items:
             item.setWidth(widestWidth)

+ 0 - 1
direct/src/gui/PickList.py

@@ -88,7 +88,6 @@ class PickList(PandaObject.PandaObject):
         # set up the frame
         self.frame.makeWideAsWidest()
         self.frame.makeVertical()
-        self.frame.recompute()
         
     def manage(self):
         self.frame.manage()

+ 31 - 38
direct/src/gui/ScrollingLabel.py

@@ -18,7 +18,7 @@ class ScrollingLabel(PandaObject.PandaObject):
         self.frame = Frame.Frame(name)
         self.frame.setOffset(0.015)
         self.item = 0
-        self.items = []
+        self.items = itemList
         self.keyFocus = 1
 
         # create the new title
@@ -27,30 +27,27 @@ class ScrollingLabel(PandaObject.PandaObject):
         label.setBackgroundColor(1., 1., 1., 0.)
         self.title = Sign.Sign(self.name, label)
         self.frame.addItem(self.title)
-        
-        # create a sign for each item in itemList
-        for item in itemList:
-            thisLabel = GuiLabel.GuiLabel.makeSimpleTextLabel(item, font)
-            thisLabel.setForegroundColor(0., 0., 0., 1.)
-            thisLabel.setBackgroundColor(1., 1., 1., 1.)
-            thisSign = Sign.Sign(item, thisLabel)
-            self.items.append(thisSign)
-            # add each item temporarily
-            self.frame.addItem(thisSign)
-
-        # make all labels the same width
-        self.frame.makeWideAsWidest()
-
-        # remove all labels except the first
-        for itemNum in range(1, len(self.items)):
-            self.frame.removeItem(self.items[itemNum])
 
+        longest = self.items[0]
+        for item in self.items:
+            if len(item) > len(longest):
+                longest = item
+                
+        label = GuiLabel.GuiLabel.makeSimpleTextLabel(longest, font)
+        label.setForegroundColor(0., 0., 0., 1.)
+        label.setBackgroundColor(1., 1., 1., 1.)
+        self.itemSign = Sign.Sign(longest, label)
+        self.frame.addItem(self.itemSign)
+            
         # pack the first label under the name 
-        self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.UNDER,
+        self.frame.packItem(self.itemSign, GuiFrame.GuiFrame.UNDER,
                             self.title)
-        self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.ALIGNLEFT,
+        self.frame.packItem(self.itemSign, GuiFrame.GuiFrame.ALIGNLEFT,
                             self.title)
 
+        # make the title and label the same length
+        self.frame.makeWideAsWidest()
+        
         # create the scroll buttons
         self.leftButton = Button.Button(self.name + "-left", " < ")
         self.leftButton.getGuiItem().setDownRolloverEvent(self.name + "-left")
@@ -75,6 +72,9 @@ class ScrollingLabel(PandaObject.PandaObject):
         self.accept(self.name + "-right", self.handleRightButton)
         # listen for keyboard hits
         self.setKeyFocus(1)
+
+        # set list to first element
+        self.setItem(self.item)
         
         # refresh the frame
         self.frame.recompute()
@@ -83,8 +83,7 @@ class ScrollingLabel(PandaObject.PandaObject):
     def cleanup(self):
         # remove gui items
         del(self.frame)
-        for item in self.items:
-            del(item)
+        del(self.items)
 
         # ignore events
         self.ignore(self.name + "-left")
@@ -99,14 +98,16 @@ class ScrollingLabel(PandaObject.PandaObject):
         self.name = name
         self.title.setText(name)
         self.frame.recompute()
-        
+
+    def getItemSign(self):
+        return self.itemSign
+    
     def getItem(self):
         return self.items[self.item]
 
     def setItem(self, item):
-        self.frame.removeItem(self.items[self.item])
+        self.itemSign.setText(self.items[self.item])
         self.item = item
-        self.addItem()
         
     def getEventName(self):
         return self.eventName
@@ -148,19 +149,19 @@ class ScrollingLabel(PandaObject.PandaObject):
         
     def handleLeftButton(self):
         # update the current item and the scroll label
-        self.frame.removeItem(self.items[self.item])
         self.item = self.item - 1
         if (self.item < 0):
             self.item = len(self.items) - 1
-        self.addItem()
+        self.setItem(self.item)
+        messenger.send(self.eventName, [self.item])
 
     def handleRightButton(self):
         # update the current item and the scroll label
-        self.frame.removeItem(self.items[self.item])
         self.item = self.item + 1
         if (self.item >= len(self.items)):
             self.item = 0
-        self.addItem()
+        self.setItem(self.item)
+        messenger.send(self.eventName, [self.item])
 
     def handleLeftArrow(self):
         # make the button toggle
@@ -185,15 +186,7 @@ class ScrollingLabel(PandaObject.PandaObject):
         taskMgr.spawnTaskNamed(Task.doLater(.035, task, "buttonUp-later"),
                                "doLater-buttonUp-later")
     
-    def addItem(self):
-        self.frame.addItem(self.items[self.item])
-        self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.UNDER,
-                            self.title)
-        self.frame.packItem(self.items[self.item], GuiFrame.GuiFrame.ALIGNLEFT,
-                            self.title)
-        self.items[self.item].manage()
-        self.frame.recompute()
-        messenger.send(self.eventName, [self.item])
+