def createPartyListAndLabel(self, typeString, numItems):
     list = DirectScrolledList(parent=self, relief=None, incButton_image=(self.gui.find('**/%sButtonDown_up' % typeString),
      self.gui.find('**/%sButtonDown_down' % typeString),
      self.gui.find('**/%sButtonDown_rollover' % typeString),
      self.gui.find('**/%sButtonDown_inactive' % typeString)), incButton_relief=None, decButton_image=(self.gui.find('**/%sButtonUp_up' % typeString),
      self.gui.find('**/%sButtonUp_down' % typeString),
      self.gui.find('**/%sButtonUp_rollover' % typeString),
      self.gui.find('**/%sButtonUp_inactive' % typeString)), decButton_relief=None, itemFrame_pos=self.gui.find('**/%s_locator' % typeString).getPos(), itemFrame_relief=None, numItemsVisible=numItems, forceHeight=0.055)
     strings = {'activities': TTLocalizer.EventsPageHostingTabActivityListTitle,
      'parties': TTLocalizer.PartyGatePartiesListTitle}
     hostPos = self.gui.find('**/%sText_locator' % typeString).getPos()
     label = DirectLabel(parent=self, text_align=TextNode.ALeft, relief=None, text=strings[typeString], text_scale=0.06, pos=hostPos)
     curPos = label.getPos()
     curPos.setX(curPos.getX() + 0.5)
     if not self.gui.find('**/partiesText_locator1').isEmpty():
         curPos = self.gui.find('**/partiesText_locator1').getPos()
     hpr = Point3(0, 0, -40)
     toonsLabel = DirectLabel(parent=self, text_align=TextNode.ALeft, relief=None, text=TTLocalizer.PartyGatesPartiesListToons, text_scale=TTLocalizer.PPGtoonsLabel, pos=curPos, hpr=hpr)
     curPos.setX(curPos.getX() + 0.1)
     if not self.gui.find('**/partiesText_locator2').isEmpty():
         curPos = self.gui.find('**/partiesText_locator2').getPos()
     activitiesLabel = DirectLabel(parent=self, text_align=TextNode.ALeft, relief=None, text=TTLocalizer.PartyGatesPartiesListActivities, text_scale=TTLocalizer.PPGactivitiesLabel, pos=curPos, hpr=hpr)
     curPos.setX(curPos.getX() + 0.1)
     if not self.gui.find('**/partiesText_locator3').isEmpty():
         curPos = self.gui.find('**/partiesText_locator3').getPos()
     minLeftLabel = DirectLabel(parent=self, text_align=TextNode.ALeft, relief=None, text=TTLocalizer.PartyGatesPartiesListMinLeft, text_scale=TTLocalizer.PPGminLeftLabel, pos=curPos, hpr=hpr)
     return (list, label)
Exemple #2
0
    def refresh(self, partyInfoTupleList):
        PublicPartyGui.notify.debug('refresh : partyInfoTupleList = %s' %
                                    partyInfoTupleList)
        self.selectedItem = None
        self.partyList.removeAndDestroyAllItems()
        self.activityList.removeAndDestroyAllItems()
        self.partyStartButton['state'] = DirectGuiGlobals.DISABLED
        sortedList = partyInfoTupleList[:]

        def cmp(left, right):
            if left[2] < right[2]:
                return -1
            elif left[2] == right[2]:
                if len(left[4]) < len(right[4]):
                    return -1
                elif len(left[4]) == len(right[4]):
                    return 0
                else:
                    return 1
            else:
                return 1

        sortedList.sort(cmp, reverse=True)
        indexToCut = -1
        for index, partyTuple in enumerate(sortedList):
            numberOfGuests = partyTuple[2]
            if numberOfGuests < PartyGlobals.MaxToonsAtAParty:
                indexToCut = index
                break

        if indexToCut > 0:
            sortedList = sortedList[indexToCut:] + sortedList[:indexToCut]
        for index, partyTuple in enumerate(sortedList):
            shardId = partyTuple[0]
            zoneId = partyTuple[1]
            numberOfGuests = partyTuple[2]
            hostName = partyTuple[3]
            activityIds = partyTuple[4]
            minLeft = partyTuple[5]
            item = DirectButton(relief=DGG.RIDGE,
                                borderWidth=(0.01, 0.01),
                                frameSize=(-0.01, 0.45, -0.015, 0.04),
                                frameColor=self.normalFrameColor,
                                text=hostName,
                                text_align=TextNode.ALeft,
                                text_bg=Vec4(0.0, 0.0, 0.0, 0.0),
                                text_scale=0.045,
                                command=self.partyClicked)
            otherInfoWidth = 0.08
            numActivities = len(activityIds)
            PartyUtils.truncateTextOfLabelBasedOnWidth(
                item, hostName, PartyGlobals.EventsPageGuestNameMaxWidth)
            num = DirectLabel(relief=DGG.RIDGE,
                              borderWidth=(0.01, 0.01),
                              frameSize=(0.0, otherInfoWidth, -0.015, 0.04),
                              frameColor=self.normalFrameColor,
                              text='%d' % numberOfGuests,
                              text_align=TextNode.ALeft,
                              text_scale=0.045,
                              text_pos=(0.01, 0, 0),
                              pos=(0.45, 0.0, 0.0))
            num.reparentTo(item)
            item.numLabel = num
            actLabelPos = num.getPos()
            actLabelPos.setX(actLabelPos.getX() + otherInfoWidth)
            actLabel = DirectLabel(relief=DGG.RIDGE,
                                   borderWidth=(0.01, 0.01),
                                   frameSize=(0.0, otherInfoWidth, -0.015,
                                              0.04),
                                   frameColor=self.normalFrameColor,
                                   text='%d' % numActivities,
                                   text_align=TextNode.ALeft,
                                   text_scale=0.045,
                                   text_pos=(0.01, 0, 0),
                                   pos=actLabelPos)
            actLabel.reparentTo(item)
            item.actLabel = actLabel
            minLabelPos = actLabel.getPos()
            minLabelPos.setX(minLabelPos.getX() + otherInfoWidth)
            minLabel = DirectLabel(relief=DGG.RIDGE,
                                   borderWidth=(0.01, 0.01),
                                   frameSize=(0.0, otherInfoWidth, -0.015,
                                              0.04),
                                   frameColor=self.normalFrameColor,
                                   text='%d' % minLeft,
                                   text_align=TextNode.ALeft,
                                   text_scale=0.045,
                                   text_pos=(0.01, 0, 0),
                                   pos=minLabelPos)
            minLabel.reparentTo(item)
            item.minLabel = minLabel
            item['extraArgs'] = [item]
            item.setPythonTag('shardId', shardId)
            item.setPythonTag('zoneId', zoneId)
            item.setPythonTag('activityIds', activityIds)
            self.partyList.addItem(item)

        return
    def refresh(self, partyInfoTupleList):
        PublicPartyGui.notify.debug('refresh : partyInfoTupleList = %s' % partyInfoTupleList)
        self.selectedItem = None
        self.partyList.removeAndDestroyAllItems()
        self.activityList.removeAndDestroyAllItems()
        self.partyStartButton['state'] = DirectGuiGlobals.DISABLED
        sortedList = partyInfoTupleList[:]

        def cmp(left, right):
            if left[2] < right[2]:
                return -1
            elif left[2] == right[2]:
                if len(left[4]) < len(right[4]):
                    return -1
                elif len(left[4]) == len(right[4]):
                    return 0
                else:
                    return 1
            else:
                return 1

        sortedList.sort(cmp, reverse=True)
        indexToCut = -1
        for index, partyTuple in enumerate(sortedList):
            numberOfGuests = partyTuple[2]
            if numberOfGuests < PartyGlobals.MaxToonsAtAParty:
                indexToCut = index
                break

        if indexToCut > 0:
            sortedList = sortedList[indexToCut:] + sortedList[:indexToCut]
        for index, partyTuple in enumerate(sortedList):
            shardId = partyTuple[0]
            zoneId = partyTuple[1]
            numberOfGuests = partyTuple[2]
            hostName = partyTuple[3]
            activityIds = partyTuple[4]
            minLeft = partyTuple[5]
            item = DirectButton(relief=DGG.RIDGE, borderWidth=(0.01, 0.01), frameSize=(-0.01,
             0.45,
             -0.015,
             0.04), frameColor=self.normalFrameColor, text=hostName, text_align=TextNode.ALeft, text_bg=Vec4(0.0, 0.0, 0.0, 0.0), text_scale=0.045, command=self.partyClicked)
            otherInfoWidth = 0.08
            numActivities = len(activityIds)
            PartyUtils.truncateTextOfLabelBasedOnWidth(item, hostName, PartyGlobals.EventsPageGuestNameMaxWidth)
            num = DirectLabel(relief=DGG.RIDGE, borderWidth=(0.01, 0.01), frameSize=(0.0,
             otherInfoWidth,
             -0.015,
             0.04), frameColor=self.normalFrameColor, text='%d' % numberOfGuests, text_align=TextNode.ALeft, text_scale=0.045, text_pos=(0.01, 0, 0), pos=(0.45, 0.0, 0.0))
            num.reparentTo(item)
            item.numLabel = num
            actLabelPos = num.getPos()
            actLabelPos.setX(actLabelPos.getX() + otherInfoWidth)
            actLabel = DirectLabel(relief=DGG.RIDGE, borderWidth=(0.01, 0.01), frameSize=(0.0,
             otherInfoWidth,
             -0.015,
             0.04), frameColor=self.normalFrameColor, text='%d' % numActivities, text_align=TextNode.ALeft, text_scale=0.045, text_pos=(0.01, 0, 0), pos=actLabelPos)
            actLabel.reparentTo(item)
            item.actLabel = actLabel
            minLabelPos = actLabel.getPos()
            minLabelPos.setX(minLabelPos.getX() + otherInfoWidth)
            minLabel = DirectLabel(relief=DGG.RIDGE, borderWidth=(0.01, 0.01), frameSize=(0.0,
             otherInfoWidth,
             -0.015,
             0.04), frameColor=self.normalFrameColor, text='%d' % minLeft, text_align=TextNode.ALeft, text_scale=0.045, text_pos=(0.01, 0, 0), pos=minLabelPos)
            minLabel.reparentTo(item)
            item.minLabel = minLabel
            item['extraArgs'] = [item]
            item.setPythonTag('shardId', shardId)
            item.setPythonTag('zoneId', zoneId)
            item.setPythonTag('activityIds', activityIds)
            self.partyList.addItem(item)

        return
Exemple #4
0
    def createPartyListAndLabel(self, typeString, numItems):
        """
        Create a DirectScrolledList for different specificall for public parties
        """
        list = DirectScrolledList(
            parent=self,
            relief=None,
            incButton_image=(
                self.gui.find("**/%sButtonDown_up" % typeString),
                self.gui.find("**/%sButtonDown_down" % typeString),
                self.gui.find("**/%sButtonDown_rollover" % typeString),
                self.gui.find("**/%sButtonDown_inactive" % typeString),
            ),
            incButton_relief=None,
            decButton_image=(
                self.gui.find("**/%sButtonUp_up" % typeString),
                self.gui.find("**/%sButtonUp_down" % typeString),
                self.gui.find("**/%sButtonUp_rollover" % typeString),
                self.gui.find("**/%sButtonUp_inactive" % typeString),
            ),
            decButton_relief=None,
            itemFrame_pos=self.gui.find("**/%s_locator" % typeString).getPos(),
            itemFrame_relief=None,
            numItemsVisible=numItems,
            # need to set height of each entry to avoid list text running off end of listbox
            forceHeight=0.055,
        )
        strings = {
            "activities": TTLocalizer.EventsPageHostingTabActivityListTitle,
            "parties": TTLocalizer.PartyGatePartiesListTitle,
        }
        hostPos = self.gui.find("**/%sText_locator" % typeString).getPos()
        label = DirectLabel(parent=self,
                            text_align=TextNode.ALeft,
                            relief=None,
                            text=strings[typeString],
                            text_scale=0.06,
                            pos=hostPos)

        curPos = label.getPos()
        curPos.setX(curPos.getX() + 0.5)
        if not self.gui.find("**/partiesText_locator1").isEmpty():
            curPos = self.gui.find("**/partiesText_locator1").getPos()
        hpr = Point3(0, 0, -40)
        toonsLabel = DirectLabel(
            parent=self,
            text_align=TextNode.ALeft,
            relief=None,
            text=TTLocalizer.PartyGatesPartiesListToons,
            text_scale=TTLocalizer.PPGcreatePartyListAndLabel,
            pos=curPos,
            hpr=hpr)

        curPos.setX(curPos.getX() + 0.1)
        if not self.gui.find("**/partiesText_locator2").isEmpty():
            curPos = self.gui.find("**/partiesText_locator2").getPos()
        activitiesLabel = DirectLabel(
            parent=self,
            text_align=TextNode.ALeft,
            relief=None,
            text=TTLocalizer.PartyGatesPartiesListActivities,
            text_scale=TTLocalizer.PPGcreatePartyListAndLabel,
            pos=curPos,
            hpr=hpr)
        curPos.setX(curPos.getX() + 0.1)
        if not self.gui.find("**/partiesText_locator3").isEmpty():
            curPos = self.gui.find("**/partiesText_locator3").getPos()
        minLeftLabel = DirectLabel(
            parent=self,
            text_align=TextNode.ALeft,
            relief=None,
            text=TTLocalizer.PartyGatesPartiesListMinLeft,
            text_scale=TTLocalizer.PPGcreatePartyListAndLabel,
            pos=curPos,
            hpr=hpr)

        return (list, label)
Exemple #5
0
    def refresh(self, partyInfoTupleList):
        """
        Called when the public party gui is shown.  partyInfoTupleList is a list
        of tuples of the form:
        ( shardId, zoneId, numberOfGuests, hostName, activityIds, lane )
        """
        PublicPartyGui.notify.debug("refresh : partyInfoTupleList = %s" %
                                    partyInfoTupleList)
        self.selectedItem = None
        self.partyList.removeAndDestroyAllItems()
        self.activityList.removeAndDestroyAllItems()
        self.partyStartButton["state"] = DirectGuiGlobals.DISABLED
        # put parties with most toons at the top
        sortedList = partyInfoTupleList[:]

        #for i in xrange(20):
        #    sortedList.append((202000000, 61000, i+2, "Good ol' Knuckles CrunchenGrooven", [0, 1, 2, 4, 5, 7], 30-i))

        def cmp(left, right):
            if left[2] < right[2]:
                return -1
            elif left[2] == right[2]:
                if len(left[4]) < len(right[4]):
                    return -1
                elif len(left[4]) == len(right[4]):
                    return 0
                else:
                    return 1
            else:
                return 1

        sortedList.sort(cmp, reverse=True)

        # put parties with 20 or more toons on the bottom
        indexToCut = -1
        for index, partyTuple in enumerate(sortedList):
            numberOfGuests = partyTuple[2]
            if numberOfGuests < PartyGlobals.MaxToonsAtAParty:
                indexToCut = index
                break
        if indexToCut > 0:
            sortedList = sortedList[indexToCut:] + sortedList[:indexToCut]

        for index, partyTuple in enumerate(sortedList):
            shardId = partyTuple[0]
            zoneId = partyTuple[1]
            numberOfGuests = partyTuple[2]
            hostName = partyTuple[3]
            if GMUtils.testGMIdentity(hostName):
                hostName = GMUtils.handleGMName(hostName)
            activityIds = partyTuple[4]
            minLeft = partyTuple[5]
            item = DirectButton(
                relief=DGG.RIDGE,
                borderWidth=(0.01, 0.01),
                frameSize=(-0.01, 0.45, -0.015, 0.04),
                frameColor=self.normalFrameColor,
                text=hostName,
                text_align=TextNode.ALeft,
                text_bg=Vec4(0.0, 0.0, 0.0, 0.0),
                text_scale=0.045,
                command=self.partyClicked,
            )
            otherInfoWidth = 0.08
            numActivities = len(activityIds)
            PartyUtils.truncateTextOfLabelBasedOnWidth(
                item, hostName, PartyGlobals.EventsPageGuestNameMaxWidth)
            num = DirectLabel(
                relief=DGG.RIDGE,
                borderWidth=(0.01, 0.01),
                frameSize=(0., otherInfoWidth, -0.015, 0.04),
                frameColor=self.normalFrameColor,
                text="%d" % numberOfGuests,
                text_align=TextNode.ALeft,
                text_scale=0.045,
                text_pos=(0.01, 0, 0),
                pos=(0.45, 0.0, 0.0),
            )
            num.reparentTo(item)
            item.numLabel = num

            actLabelPos = num.getPos()
            actLabelPos.setX(actLabelPos.getX() + otherInfoWidth)
            actLabel = DirectLabel(
                relief=DGG.RIDGE,
                borderWidth=(0.01, 0.01),
                frameSize=(0.0, otherInfoWidth, -0.015, 0.04),
                frameColor=self.normalFrameColor,
                text="%d" % numActivities,
                text_align=TextNode.ALeft,
                text_scale=0.045,
                text_pos=(0.01, 0, 0),
                pos=actLabelPos,
            )
            actLabel.reparentTo(item)
            item.actLabel = actLabel

            minLabelPos = actLabel.getPos()
            minLabelPos.setX(minLabelPos.getX() + otherInfoWidth)
            minLabel = DirectLabel(
                relief=DGG.RIDGE,
                borderWidth=(0.01, 0.01),
                frameSize=(0.0, otherInfoWidth, -0.015, 0.04),
                frameColor=self.normalFrameColor,
                text="%d" % minLeft,
                text_align=TextNode.ALeft,
                text_scale=0.045,
                text_pos=(0.01, 0, 0),
                pos=minLabelPos,
            )
            minLabel.reparentTo(item)
            item.minLabel = minLabel

            item["extraArgs"] = [item]
            item.setPythonTag("shardId", shardId)
            item.setPythonTag("zoneId", zoneId)
            item.setPythonTag("activityIds", activityIds)
            self.partyList.addItem(item)
Exemple #6
0
 def createPartyListAndLabel(self, typeString, numItems):
     list = DirectScrolledList(
         parent=self,
         relief=None,
         incButton_image=(self.gui.find('**/%sButtonDown_up' % typeString),
                          self.gui.find('**/%sButtonDown_down' %
                                        typeString),
                          self.gui.find('**/%sButtonDown_rollover' %
                                        typeString),
                          self.gui.find('**/%sButtonDown_inactive' %
                                        typeString)),
         incButton_relief=None,
         decButton_image=(self.gui.find('**/%sButtonUp_up' % typeString),
                          self.gui.find('**/%sButtonUp_down' % typeString),
                          self.gui.find('**/%sButtonUp_rollover' %
                                        typeString),
                          self.gui.find('**/%sButtonUp_inactive' %
                                        typeString)),
         decButton_relief=None,
         itemFrame_pos=self.gui.find('**/%s_locator' % typeString).getPos(),
         itemFrame_relief=None,
         numItemsVisible=numItems,
         forceHeight=0.055)
     strings = {
         'activities': TTLocalizer.EventsPageHostingTabActivityListTitle,
         'parties': TTLocalizer.PartyGatePartiesListTitle
     }
     hostPos = self.gui.find('**/%sText_locator' % typeString).getPos()
     label = DirectLabel(parent=self,
                         text_align=TextNode.ALeft,
                         relief=None,
                         text=strings[typeString],
                         text_scale=0.06,
                         pos=hostPos)
     curPos = label.getPos()
     curPos.setX(curPos.getX() + 0.5)
     if not self.gui.find('**/partiesText_locator1').isEmpty():
         curPos = self.gui.find('**/partiesText_locator1').getPos()
     hpr = Point3(0, 0, -40)
     toonsLabel = DirectLabel(parent=self,
                              text_align=TextNode.ALeft,
                              relief=None,
                              text=TTLocalizer.PartyGatesPartiesListToons,
                              text_scale=TTLocalizer.PPGtoonsLabel,
                              pos=curPos,
                              hpr=hpr)
     curPos.setX(curPos.getX() + 0.1)
     if not self.gui.find('**/partiesText_locator2').isEmpty():
         curPos = self.gui.find('**/partiesText_locator2').getPos()
     activitiesLabel = DirectLabel(
         parent=self,
         text_align=TextNode.ALeft,
         relief=None,
         text=TTLocalizer.PartyGatesPartiesListActivities,
         text_scale=TTLocalizer.PPGactivitiesLabel,
         pos=curPos,
         hpr=hpr)
     curPos.setX(curPos.getX() + 0.1)
     if not self.gui.find('**/partiesText_locator3').isEmpty():
         curPos = self.gui.find('**/partiesText_locator3').getPos()
     minLeftLabel = DirectLabel(
         parent=self,
         text_align=TextNode.ALeft,
         relief=None,
         text=TTLocalizer.PartyGatesPartiesListMinLeft,
         text_scale=TTLocalizer.PPGminLeftLabel,
         pos=curPos,
         hpr=hpr)
     return (list, label)