Ejemplo n.º 1
0
def createButton(text, btnGeom, xPos, yPos, args):
    buttonSize = (-2, 2, 1, -1)
    btn = DirectButton(
        scale=0.25,
        geom=btnGeom,
        # some temp text
        text=text,
        text_scale=0.4,
        # set the alignment to right
        text_align=TextNode.ACenter,
        # set the text color to black
        text_fg=(1, 1, 1, 1),
        # set the buttons images
        relief=1,
        frameColor=(0,0,0,0),
        frameSize=buttonSize,
        pressEffect=False,
        pos=(xPos, 0, yPos),
        command=base.messenger.send,
        extraArgs=args,
        rolloverSound=None,
        clickSound=None)
    # check if the text is to long and resize the frame if necessary
    if btn.getBounds()[0] < buttonSize[0] or \
            btn.getBounds()[1] > buttonSize[1]:
        btn["frameSize"] = (
            btn.getBounds()[0]-0.2, btn.getBounds()[1]+0.2,
            buttonSize[2], buttonSize[3])
        btn.resetFrameSize()
    btn.setTransparency(True)
    return btn
Ejemplo n.º 2
0
 def addPartyToScrollList(self, party):
     textSize = self.ScrollListTextSize
     descTextSize = 0.05
     partyTitle = myStrftime(party.startTime)
     partyTitle = partyTitle + ' ' + TTLocalizer.EventsPageCalendarTabParty
     textSize = self.ScrollListTextSize
     descTextSize = 0.05
     newItem = DirectButton(relief=None,
                            text=partyTitle,
                            text_scale=textSize,
                            text_align=TextNode.ALeft,
                            rolloverSound=None,
                            clickSound=None,
                            pressEffect=0,
                            command=self.__clickedOnScrollItem)
     scrollItemHeight = newItem.getHeight()
     descUnderItemZAdjust = scrollItemHeight * descTextSize / textSize
     descUnderItemZAdjust = max(0.0534, descUnderItemZAdjust)
     descUnderItemZAdjust = -descUnderItemZAdjust
     descZAdjust = descUnderItemZAdjust
     self.scrollList.addItem(newItem)
     newItem.description = MiniInviteVisual(newItem, party)
     newItem.description.setBin('gui-popup', 0)
     newItem.description.hide()
     newItem.bind(
         DGG.ENTER,
         self.enteredTextItem,
         extraArgs=[newItem, newItem.description, descUnderItemZAdjust])
     newItem.bind(DGG.EXIT, self.exitedTextItem, extraArgs=[newItem])
     return
Ejemplo n.º 3
0
 def __init__(self, doneEvent):
     self.doneEvent = doneEvent
     DirectFrame.__init__(self)
     self.reparentTo(aspect2d)
     self.setPos(0.0, 0.0, 0.16)
     self.stash()
     publicPartyGui = loader.loadModel('phase_4/models/parties/publicPartyGUI')
     self.frame = DirectFrame(parent=self, geom=publicPartyGui.find('**/activities_background'), geom_pos=(-0.8, 0.0, 0.2), geom_scale=2.0, relief=None)
     self.earnedLabel = DirectLabel(parent=self, relief=None, text=str(0), text_align=TextNode.ACenter, text_pos=(0.0, -0.07), text_scale=0.2, text_fg=(0.95, 0.95, 0.0, 1.0), text_font=ToontownGlobals.getSignFont(), textMayChange=True, image=DirectGuiGlobals.getDefaultDialogGeom(), image_scale=(0.33, 1.0, 0.33), pos=(-0.3, 0.0, 0.2), scale=0.9)
     purchaseModels = loader.loadModel('phase_4/models/gui/purchase_gui')
     jarImage = purchaseModels.find('**/Jar')
     self.jarLabel = DirectLabel(parent=self, relief=None, text=str(0), text_align=TextNode.ACenter, text_pos=(0.0, -0.07), text_scale=0.2, text_fg=JellybeanRewardGui.JarLabelTextColor, text_font=ToontownGlobals.getSignFont(), textMayChange=True, image=jarImage, scale=0.7, pos=(0.3, 0.0, 0.17))
     purchaseModels.removeNode()
     del purchaseModels
     jarImage.removeNode()
     del jarImage
     self.messageLabel = DirectLabel(parent=self, relief=None, text='', text_align=TextNode.ALeft, text_wordwrap=16.0, text_scale=0.07, pos=(-0.52, 0.0, -0.1), textMayChange=True)
     self.doubledJellybeanLabel = DirectLabel(parent=self, relief=None, text=TTLocalizer.PartyRewardDoubledJellybean, text_align=TextNode.ACenter, text_wordwrap=12.0, text_scale=0.09, text_fg=(1.0, 0.125, 0.125, 1.0), pos=(0.0, 0.0, -0.465), textMayChange=False)
     self.doubledJellybeanLabel.hide()
     self.closeButton = DirectButton(parent=self, relief=None, text=TTLocalizer.PartyJellybeanRewardOK, text_align=TextNode.ACenter, text_scale=0.065, text_pos=(0.0, -0.625), geom=(publicPartyGui.find('**/startButton_up'),
      publicPartyGui.find('**/startButton_down'),
      publicPartyGui.find('**/startButton_rollover'),
      publicPartyGui.find('**/startButton_inactive')), geom_pos=(-0.39, 0.0, 0.125), command=self._close)
     publicPartyGui.removeNode()
     del publicPartyGui
     self.countSound = base.loadSfx('phase_13/audio/sfx/tick_counter_short.mp3')
     self.overMaxSound = base.loadSfx('phase_13/audio/sfx/tick_counter_overflow.mp3')
     return
Ejemplo n.º 4
0
 def createButton(self, text, btnGeom, xPos, command):
     btn = DirectButton(
         scale = (0.25, 0.25, 0.25),
         # some temp text
         text = text,
         text_scale = (0.5, 0.5, 0.5),
         # set the alignment to right
         text_align = TextNode.ACenter,
         # put the text on the right side of the button
         text_pos = (0, -0.15),
         # set the text color to black
         text_fg = (1,1,1,1),
         text_shadow = (0.3, 0.3, 0.1, 1),
         text_shadowOffset = (0.05, 0.05),
         # set the buttons images
         #geom = btnGeom,
         relief = 1,
         frameColor = (0,0,0,0),
         pressEffect = False,
         pos = (xPos, 0, -0.65),
         command = command,
         rolloverSound = None,
         clickSound = None)
     btn.setTransparency(1)
     return btn
Ejemplo n.º 5
0
    def __init__(self, _client):
        # Ref
        self.client = _client

        # create a host button
        self.btnConnect = DirectButton(
            # Scale and position
            scale=0.25,
            pos=(0, 0, 0),
            # Text
            text="Connect",
            # Frame
            # Functionality
            command=self.connect)

        # create the IP input field
        self.txtIP = DirectEntry(
            # scale and position
            pos=(0, 0, -.35),
            scale=0.25,
            width=9,
            # Text
            text="",
            text_align=TextNode.ACenter,
            initialText="127.0.0.1",
            numLines=1,
            # Functionality
            command=self.connect,
            focusInCommand=self.clearText)

        self.hide()
Ejemplo n.º 6
0
 def openOptions(self):
     self.optionsMgr.showOptions()
     self.closeOptionsButton = DirectButton(
         relief=None,
         image=(btnUp, btnDn, btnRlvr),
         text="Back",
         text_fg=(0, 0, 0, 1),
         text_scale=TTLocalizer.AClogoutButton,
         text_pos=(0, -0.035),
         image_scale=1,
         image1_scale=1.05,
         image2_scale=1.05,
         scale=0.7,
         command=self.hideOptions)
     self.closeOptionsButton.reparentTo(base.a2dTopLeft)
     self.closeOptionsButton.setPos(0.5, 0, -0.07)
     Parallel(
         self.PlayButton.posInterval(.5,
                                     Point3(PlayBtnHidePos),
                                     blendType='easeInOut'),
         self.OptionsButton.posInterval(.5,
                                        Point3(OptionsBtnHidePos),
                                        blendType='easeInOut'),
         self.QuitButton.posInterval(.5,
                                     Point3(QuitBtnHidePos),
                                     blendType='easeInOut'),
         self.logo.posInterval(0.5,
                               Point3(0, 0, 2.5),
                               blendType='easeInOut')).start()
Ejemplo n.º 7
0
    def __init__(self, debug_ui):
        """
        @param debug_ui: The parent DebugUI
        @type debug_ui: DebugUI
        """
        DirectObject.__init__(self)
        Notifier.__init__(self, "ui-games-list")
        List.__init__(self,
                      debug_ui.messager.games,
                      10, (-1.1, 0.6),
                      command=self.game_clicked)

        self.debug_ui = debug_ui

        self.btn_title = DirectButton(scale=self.scale,
                                      text="Games",
                                      pos=(-1.1, 1, .8),
                                      frameSize=self.frame_size,
                                      command=self.debug_ui.switch_list,
                                      extraArgs=[1],
                                      state=DGG.DISABLED,
                                      relief=DGG.SUNKEN)

        self.accept("arrow_right", self.next_page)
        self.accept("arrow_left", self.previous_page)

        self.notify.info("[__init__] Created GamesList")
Ejemplo n.º 8
0
    def _updateText(self):
        if self.itemText is not None:
            self.itemText.destroy()
            self.itemText = None

        if self.itemTextNode is None:
            self.itemTextNode = self.node.attachNewNode(self.TEXT_NODE)
            self.itemTextNode.setPos(self.textPos[0], 0.0, self.textPos[1])
        self.itemTextNode.show()

        i18n = self.game.getI18n()
        translated = i18n.translate(self.text)

        localizedFont = i18n.getLocalizedFont(self.fontName)
        fontPath = self.game.getResources().getResourceFullPath(
            PanoConstants.RES_TYPE_FONTS, localizedFont)
        self.font = loader.loadFont(fontPath)

        self.itemText = DirectButton(
            parent=self.itemTextNode,
            text=translated,
            text_font=self.font,
            text_bg=(self.fontBgColor[0], self.fontBgColor[1],
                     self.fontBgColor[2], self.fontBgColor[3]),
            text_fg=(self.fontColor[0], self.fontColor[1], self.fontColor[2],
                     self.fontColor[3]),
            text_scale=self.textScale,
            frameColor=(0, 0, 0, 0),
            text_wordwrap=None,
            text_align=TextNode.ALeft,
            sortOrder=10,
            pressEffect=0)
        self.itemText.setBin("fixed",
                             PanoConstants.RENDER_ORDER_INVENTORY_ITEMS)
    def __makeUpgradeEntry(self, pos, item, values, page):
        itemImage = values.get('image')
        button = DirectButton(image=(itemImage),
                              scale=0.15,
                              pos=pos,
                              relief=None,
                              parent=page,
                              command=self.shop.purchaseItem,
                              extraArgs=[item, page])
        button.setTransparency(TransparencyAttrib.MAlpha)
        upgradeID = values.get('upgradeID')
        avID = base.localAvatar.getPUInventory()[1]
        supply = 0

        battle = base.localAvatar.getMyBattle()
        if battle and battle.getTurretManager():
            turret = battle.getTurretManager().getTurret()
            if turret and turret.getGagID() == upgradeID:
                supply = 1

        if avID == upgradeID:
            dataSupply = base.localAvatar.getPUInventory()[0]
            if dataSupply > 0:
                supply = dataSupply

        maxSupply = values.get('maxUpgrades')
        buttonLabel = DirectLabel(
            text='%s\n%s/%s\n%s JBS' %
            (item, str(supply), str(maxSupply), str(values.get('price'))),
            relief=None,
            parent=button,
            text_scale=0.3,
            pos=(0, 0, -1.2))
        self.addEntryToPage(page, item, values, button, buttonLabel)
 def _createDatePage(self):
     page = DirectFrame(self.frame)
     page.setName('PartyPlannerDatePage')
     self.createDateTitleLabel = DirectLabel(
         parent=page,
         relief=None,
         text=TTLocalizer.PartyPlannerDateTitle,
         pos=self.gui.find('**/title_locator').getPos(),
         scale=self.titleScale)
     pos = self.gui.find('**/step_06_sendInvitation_locator').getPos()
     self.makePartyNowButton = DirectButton(
         parent=page,
         relief=None,
         geom=(self.gui.find('**/send_up'), self.gui.find('**/send_down'),
               self.gui.find('**/send_rollover')),
         text=TTLocalizer.PartyPlannerPartyNow,
         text_pos=(pos[0], pos[2]),
         text_scale=0.05,
         command=self.__doMakePartyNow)
     curServerDate = base.cr.toontownTimeManager.getCurServerDateTime()
     self.calendarGuiMonth = CalendarGuiMonth(
         page,
         curServerDate,
         scale=0.95,
         pos=(-0.05, 0.0, -0.33),
         dayClickCallback=self._dayClickCallback,
         onlyFutureDaysClickable=True)
     return page
Ejemplo n.º 11
0
    def __buildItems(self):
        for i in xrange(self.requestsPerCluster):
            request = self.nameServ.getNameRequests()[self.baseRequestIndex +
                                                      i]
            date = request['date']
            date = date.replace(' ', '-')
            data = NameData(request['name'], date, request['avId'],
                            request['accId'])
            self.avId2NameData[data.avId] = data
            btn = DirectButton(relief=None,
                               text=data.name,
                               text_scale=0.07,
                               text_align=TextNode.ALeft,
                               text1_bg=textDownColor,
                               text2_bg=textRolloverColor,
                               text3_fg=textDisabledColor,
                               textMayChange=0,
                               command=self.__handleNameButton,
                               extraArgs=[data],
                               text_pos=(0, 0, 0.0))
            data.btn = btn
            self.nameButtons.append(btn)

        self.loadingLabel.hide()
        return
Ejemplo n.º 12
0
 def _createFarewellPage(self):
     page = DirectFrame(self.frame)
     page.setName('PartyPlannerFarewellPage')
     self.confirmTitleLabel = DirectLabel(parent=page, relief=None, text=TTLocalizer.PartyPlannerConfirmationAllOkTitle, textMayChange=True, pos=self.gui.find('**/title_locator').getPos(), scale=self.titleScale)
     pos = self.gui.find('**/step_07_close_text_locator').getPos()
     self.closePlannerButton = DirectButton(parent=page, relief=None, geom=(self.gui.find('**/close_up'), self.gui.find('**/close_down'), self.gui.find('**/close_rollover')), text=TTLocalizer.PartyPlannerClosePlanner, text_scale=0.055, text_pos=(pos[0], pos[2]), command=self.__acceptExit)
     return page
Ejemplo n.º 13
0
 def addTitleAndDescToScrollList(self, title, desc):
     textSize = self.ScrollListTextSize
     descTextSize = 0.05
     newItem = DirectButton(relief=None,
                            text=title,
                            text_scale=textSize,
                            text_align=TextNode.ALeft,
                            rolloverSound=None,
                            clickSound=None,
                            pressEffect=0,
                            command=self.__clickedOnScrollItem)
     scrollItemHeight = newItem.getHeight()
     descUnderItemZAdjust = scrollItemHeight * descTextSize / textSize
     descUnderItemZAdjust = max(0.0534, descUnderItemZAdjust)
     descUnderItemZAdjust = -descUnderItemZAdjust
     descZAdjust = descUnderItemZAdjust
     newItem.description = DirectLabel(parent=newItem,
                                       pos=(0.115, 0, descZAdjust),
                                       text='',
                                       text_wordwrap=15,
                                       pad=(0.02, 0.02),
                                       text_scale=descTextSize,
                                       text_align=TextNode.ACenter,
                                       textMayChange=0)
     newItem.description.checkedHeight = False
     newItem.description.setBin('gui-popup', 0)
     newItem.description.hide()
     newItem.bind(DGG.ENTER,
                  self.enteredTextItem,
                  extraArgs=[newItem, desc, descUnderItemZAdjust])
     newItem.bind(DGG.EXIT, self.exitedTextItem, extraArgs=[newItem])
     self.scrollList.addItem(newItem)
     return
Ejemplo n.º 14
0
    def update_resting_chars(self, part):
        """Update the list of the resting characters.

        Args:
            part (train.part.TrainPart): Rest train part.
        """
        for key, but in self._rest_buttons.items():
            if key != "title":
                but.destroy()
                self._rest_buttons[key] = None

        x, _, z = self._rest_buttons["title"].getPos()

        shift = -0.039
        for char in part.chars:
            self._rest_buttons[char.id] = DirectButton(
                pos=(x, 0, z + shift),
                text=char.name,
                text_fg=SILVER_COL,
                frameColor=(0, 0, 0, 0.6),
                command=base.common_ctrl.choose_char,  # noqa: F821
                extraArgs=[char.id],
                scale=(0.04, 0, 0.03),
            )
            shift -= 0.033
Ejemplo n.º 15
0
 def loadGUI(self):
     self.gui = loader.loadModel('phase_13/models/parties/trampolineGUI')
     self.gui.setX(-1.15)
     self.gui.reparentTo(self.screenPlaneElements)
     self.toonIndicator = self.gui.find('**/trampolineGUI_MovingBar')
     jumpLineLocator = self.gui.find('**/jumpLine_locator')
     guiBean = self.gui.find('**/trampolineGUI_GreenJellyBean')
     self.gui.find('**/trampolineGUI_GreenJellyBean').stash()
     self.guiBeans = [ guiBean.instanceUnderNode(jumpLineLocator, self.uniqueName('guiBean%d' % i)) for i in range(self.numJellyBeans) ]
     self.guiBeans[-1].setScale(1.5)
     heightTextNode = TextNode(self.uniqueName('TrampolineActivity.heightTextNode'))
     heightTextNode.setFont(ToontownGlobals.getSignFont())
     heightTextNode.setAlign(TextNode.ALeft)
     heightTextNode.setText('0.0')
     heightTextNode.setShadow(0.05, 0.05)
     heightTextNode.setShadowColor(0.0, 0.0, 0.0, 1.0)
     heightTextNode.setTextColor(1.0, 1.0, 1.0, 1.0)
     self.heightText = jumpLineLocator.attachNewNode(heightTextNode)
     self.heightText.setX(0.15)
     self.heightText.setScale(0.1)
     self.heightText.setAlphaScale(0.0)
     self.quitEarlyButtonModels = loader.loadModel('phase_3.5/models/gui/inventory_gui')
     quitEarlyUp = self.quitEarlyButtonModels.find('**//InventoryButtonUp')
     quitEarlyDown = self.quitEarlyButtonModels.find('**/InventoryButtonDown')
     quitEarlyRollover = self.quitEarlyButtonModels.find('**/InventoryButtonRollover')
     self.quitEarlyButton = DirectButton(parent=self.screenPlaneElements, relief=None, text=TTLocalizer.PartyTrampolineQuitEarlyButton, text_fg=(1, 1, 0.65, 1), text_pos=(0, -0.23), text_scale=0.7, image=(quitEarlyUp, quitEarlyDown, quitEarlyRollover), image_color=(1, 0, 0, 1), image_scale=(20, 1, 11), pos=(1.15, 0, 0.6), scale=0.09, command=self.leaveTrampoline)
     self.quitEarlyButton.stash()
     self.flashText = OnscreenText(text='', pos=(0.0, -0.45), scale=0.2, fg=(1.0, 1.0, 0.65, 1.0), align=TextNode.ACenter, font=ToontownGlobals.getSignFont(), mayChange=True)
     self.timer = PartyUtils.getNewToontownTimer()
     self.timer.reparentTo(self.screenPlaneElements)
     return
Ejemplo n.º 16
0
def makeDefaultBtn(text = "", text_pos = (0, -0.015), text_scale = 0.045, geom_scale = (0.6, 0.75, 0.75), geom_sx = None,
                   geom_sy = None, geom_sz = None, command = None, extraArgs = [], pos = (0, 0, 0), hpr = (0, 0, 0),
                   scale = 1.0, parent = None, relief = None, font = None, fitToText = False):

    from direct.gui.DirectGui import DirectButton

    if not parent:
        # We have to put this here and not in the arguments because ShowBase hasn't created aspect2d yet when it loads CIGlobals.
        parent = aspect2d

    if not font:
        font = getToonFont()

    if geom_sx is not None:
        geom_scale = (geom_sx, geom_scale[1], geom_scale[2])
    if geom_sy is not None:
        geom_scale = (geom_scale[0], geom_sy, geom_scale[2])
    if geom_sz is not None:
        geom_scale = (geom_scale[0], geom_scale[1], geom_sz)


    btn = DirectButton(text = text, text_pos = text_pos, text_scale = text_scale, geom_scale = geom_scale, command = command, text_font = font,
                       extraArgs = extraArgs, pos = pos, hpr = hpr, scale = scale, parent = parent, relief = relief, geom = getDefaultBtnGeom(),
                       )

    return btn
 def makeMoreDetailsPanel(self):
     self.actionFSM.request('off')
     self.removeMoreDetailsPanel()
     self.removeActionPanel()
     self.makeActionPanel()
     zoneId = self.avatarInfo[5]
     shardId = self.avatarInfo[6]
     isOnline = self.avatarInfo[7]
     shardName = 'Unknown District'
     hoodName = ZoneUtil.getHoodId(zoneId, 1)
     for district in base.cr.activeDistricts.values():
         if district.doId == shardId:
             shardName = district.getDistrictName()
             break
     if not isOnline:
         hoodName = 'Offline'
         shardName = 'Offline'
     self.locationText = OnscreenText('Location: {0}'.format(hoodName),
                                      parent=self.actionFrame,
                                      pos=(-0.3, 0.05, 0),
                                      align=TextNode.ALeft,
                                      scale=0.04)
     self.shardText = OnscreenText('District: {0}'.format(shardName),
                                   parent=self.actionFrame,
                                   pos=(-0.3, 0.0, 0),
                                   align=TextNode.ALeft,
                                   scale=0.04)
     self.detailsExitBtn = DirectButton(geom=CIGlobals.getCancelBtnGeom(),
                                        parent=self.actionFrame,
                                        relief=None,
                                        scale=0.8,
                                        pos=(-0.3, 0.0, -0.175),
                                        command=self.removeMoreDetailsPanel)
Ejemplo n.º 18
0
    def button(self,
               text,
               onClick,
               scale=1.0,
               parent=None,
               textAlign=TextNode.A_left,
               **alignArgs):
        if parent is None:
            parent = self.mainMenuNode

        colours = self.app.theme.colours
        result = DirectButton(
            text=text,
            text_fg=colours.mainMenuColour,
            text1_fg=colours.mainMenuClicked,
            text2_fg=colours.mainMenuHighlight,
            text3_fg=colours.disabledButton,
            scale=scale * 0.08,
            command=onClick,
            parent=parent,
            relief=None,
            textMayChange=True,
            text_align=textAlign,
        )
        align(result, **alignArgs)
        self.addDirect(result)
        return result
Ejemplo n.º 19
0
    def __init__(self,
                 menu,
                 text,
                 command,
                 parent=None,
                 extra_args=None,
                 pos=(0, 0, 0)):

        if extra_args is None:
            extra_args = []

        button = DirectButton(
            text=text,
            command=command,
            extraArgs=extra_args,
            pos=pos,
            parent=parent,
            scale=0.1,
            text_font=menu.default_font,
            clickSound=loader.loadSfx("resources/sounds/UIClick.ogg"),
            frameTexture=menu.buttonImages,
            frameSize=(-4, 4, -1, 1),
            text_scale=0.75,
            relief=DGG.FLAT,
            text_pos=(0, -0.2))

        button.setTransparency(True)
Ejemplo n.º 20
0
 def __enableControlInterface(self):
     gui = loader.loadModel('phase_3.5/models/gui/avatar_panel_gui')
     self.closeButton = DirectButton(image=(gui.find('**/CloseBtn_UP'),
                                            gui.find('**/CloseBtn_DN'),
                                            gui.find('**/CloseBtn_Rllvr'),
                                            gui.find('**/CloseBtn_UP')),
                                     relief=None,
                                     scale=2,
                                     text=TTLocalizer.BossbotGolfSpotLeave,
                                     text_scale=0.04,
                                     text_pos=(0, -0.07),
                                     text_fg=VBase4(1, 1, 1, 1),
                                     pos=(1.05, 0, -0.82),
                                     command=self.__exitGolfSpot)
     self.accept('escape', self.__exitGolfSpot)
     self.accept('control', self.__controlPressed)
     self.accept('control-up', self.__controlReleased)
     self.accept('InputState-forward', self.__upArrow)
     self.accept('InputState-reverse', self.__downArrow)
     self.accept('InputState-turnLeft', self.__leftArrow)
     self.accept('InputState-turnRight', self.__rightArrow)
     taskMgr.add(self.__watchControls, 'watchGolfSpotControls')
     taskMgr.doMethodLater(5, self.__displayGolfSpotAdvice,
                           self.golfSpotAdviceName)
     self.arrowVert = 0
     self.arrowHorz = 0
     if self.powerBar:
         self.powerBar.show()
     return
Ejemplo n.º 21
0
def makeDirectionalBtn(direction,
                       parent=None,
                       pos=(0, 0, 0),
                       command=None,
                       extraArgs=[]):
    """
    direction:
    0) left
    1) right
    """
    from direct.gui.DirectGui import DirectButton

    if not parent:
        parent = aspect2d

    if direction == 0:
        hpr = (180, 0, 0)
    else:
        hpr = (0, 0, 0)

    gui = loader.loadModel('phase_3.5/models/gui/friendslist_gui.bam')
    btn = DirectButton(parent=parent,
                       relief=None,
                       geom=(gui.find('**/Horiz_Arrow_UP'),
                             gui.find('**/Horiz_Arrow_DN'),
                             gui.find('**/Horiz_Arrow_Rllvr'),
                             gui.find('**/Horiz_Arrow_UP')),
                       hpr=hpr,
                       pos=pos,
                       command=command,
                       extraArgs=extraArgs)
    return btn
Ejemplo n.º 22
0
    def update_list_manual(self):
        """
        Manually update the list
        """
        self.clear_buttons()

        sorted_dict = sorted(self.the_dict)
        starting_number = (self.page - 1) * self.max_per_page
        ending_number = starting_number + self.max_per_page

        for i in range(starting_number, ending_number):
            if len(sorted_dict) > i:
                if i >= starting_number + (self.max_per_page / 2):
                    y_value = 0 - (
                        (i - (starting_number + self.max_per_page / 2)) / 4.5)
                    x_value = 0.5
                else:
                    y_value = 0 - ((i - starting_number) / 4.5)
                    x_value = 0
                if self.command:
                    new_btn = DirectButton(scale=self.scale,
                                           text=str(sorted_dict[i]),
                                           pos=(self.pos[0] + x_value, 1,
                                                self.pos[1] + y_value),
                                           frameSize=self.frame_size,
                                           command=self.command,
                                           extraArgs=[sorted_dict[i]])
                else:
                    new_btn = OnscreenText(text=f"{sorted_dict[i]}",
                                           pos=(self.pos[0] + x_value,
                                                self.pos[1] + y_value),
                                           scale=0.1,
                                           fg=(1, 1, 1, 1))
                self.btns.append(new_btn)
    def __init__(self, menu, name, command, register):
        self.menu = menu
        self.name = name

        self.command = command
        if type(command) == types.StringType:
            command = self.call_word

        self.button = DirectButton(
            frameSize=None,
            text=name,
            image=(ModPanelGlobals.Button.find('**/QuitBtn_UP'),
                   ModPanelGlobals.Button.find('**/QuitBtn_DN'),
                   ModPanelGlobals.Button.find('**/QuitBtn_RLVR')),
            relief=None,
            command=command,
            text_pos=(0, -0.015),
            geom=None,
            pad=(0.01, 0.01),
            suppressKeys=0,
            pos=(0, 0, 0),
            text_scale=0.059,
            borderWidth=(0.015, 0.01),
            scale=.7)

        self.button.reparent_to(menu)

        if register:
            self.button.bind(DirectGuiGlobals.B2PRESS, self.delete_button)
            self.button.bind(DirectGuiGlobals.B3PRESS, self.button.editStart)
            self.button.bind(DirectGuiGlobals.B3RELEASE, self.edit_stop)
            self.menu.buttons.append(self)
            messenger.send('save-file')
 def setupButtons(self):
     if self['buttonStyle'] == OTPDialog.YesNo:
         self.yesButton = GuiButton(parent=self,
                                    image_scale=(0.22, 0.22, 0.15),
                                    pos=(0.275, 0, -0.1),
                                    text=PLocalizer.DialogYes,
                                    command=self.handleYes)
         self.noButton = GuiButton(parent=self,
                                   image_scale=(0.22, 0.22, 0.15),
                                   pos=(0.55, 0, -0.1),
                                   text=PLocalizer.DialogNo,
                                   command=self.handleNo)
         self.adjustFrameForButtons()
     elif self['buttonStyle'] == OTPDialog.CancelOnly:
         lookoutUI = loader.loadModel('models/gui/lookout_gui')
         self.cancelButton = DirectButton(
             parent=self,
             relief=None,
             image=(lookoutUI.find('**/lookout_close_window'),
                    lookoutUI.find('**/lookout_close_window_down'),
                    lookoutUI.find('**/lookout_close_window_over'),
                    lookoutUI.find('**/lookout_close_window_disabled')),
             pos=(0.75, 0, -0.05),
             scale=0.12,
             command=self.handleCancel)
     elif self['buttonStyle'] == OTPDialog.TwoChoice:
         self.boardButton = GuiButton(parent=self,
                                      image_scale=(0.15, 0.22, 0.15),
                                      pos=(0.55, 0, -0.1),
                                      text=PLocalizer.BoardShip,
                                      command=self.handleYes)
         lookoutUI = loader.loadModel('models/gui/lookout_gui')
         self.cancelButton = DirectButton(
             parent=self,
             relief=None,
             image=(lookoutUI.find('**/lookout_close_window'),
                    lookoutUI.find('**/lookout_close_window_down'),
                    lookoutUI.find('**/lookout_close_window_over'),
                    lookoutUI.find('**/lookout_close_window_disabled')),
             pos=(0.75, 0, -0.05),
             scale=0.12,
             command=self.handleCancel)
         self['frameSize'] = (self['frameSize'][0], self['frameSize'][1],
                              self['frameSize'][2] + 0.01,
                              self['frameSize'][3])
         self.adjustFrameForButtons()
     return
Ejemplo n.º 25
0
    def getTimeWidgets(self, page, type):
        if type == 'ampm':
            data = self.getCurrentAmPm()
        else:
            data = getattr(self.partyTime, type)
            if data == 0 and type == 'minute':
                data = '00'
            else:
                if type == 'hour':
                    data = data % 12
                    if data == 0:
                        data = 12
                data = '%d' % data
        label = DirectLabel(parent=page, relief=None, text='%s' % data, textMayChange=True, pos=self.gui.find('**/step_03_%s_locator' % type).getPos(), scale=0.12)

        def changeValue(self, amount):
            if type == 'ampm':
                self.alterPartyTime(hour=(self.partyTime.hour + 12) % 24)
                newAmount = self.getCurrentAmPm()
                label['text'] = newAmount
            else:
                if type == 'hour':
                    newAmount = getattr(self.partyTime, type) + amount
                    newAmount = newAmount % 12
                    if self.timeInputAmPmLabel['text'] == TTLocalizer.PartyTimeFormatMeridiemPM:
                        newAmount = newAmount % 12 + 12
                    self.alterPartyTime(hour=newAmount)
                elif type == 'minute':
                    newAmount = getattr(self.partyTime, type) + amount
                    self.alterPartyTime(minute=newAmount)
                else:
                    PartyPlanner.notify.error('Invalid type for changeValue in PartyPlanner: %s' % type)
                newAmount = getattr(self.partyTime, type)
                if newAmount < 10 and type == 'minute':
                    label['text'] = '0%d' % newAmount
                else:
                    if type == 'hour':
                        newAmount = newAmount % 12
                        if newAmount == 0:
                            newAmount = 12
                    label['text'] = '%d' % newAmount
            self.timePageRecapToontownTimeLabel2['text'] = '%s' % PartyUtils.formatDateTime(self.partyTime)
            self.timePageRecapLocalTimeLabel['text'] = '%s%s' % (TTLocalizer.PartyPlannerTimeLocalTime, PartyUtils.formatDateTime(self.partyTime, inLocalTime=True))

        upButton = DirectButton(parent=page, relief=None, geom=(self.gui.find('**/%sButtonUp_up' % type), self.gui.find('**/%sButtonUp_down' % type), self.gui.find('**/%sButtonUp_rollover' % type)), command=changeValue, extraArgs=[self, self.timeTypeToChangeAmount[type][0]])
        downButton = DirectButton(parent=page, relief=None, geom=(self.gui.find('**/%sButtonDown_up' % type), self.gui.find('**/%sButtonDown_down' % type), self.gui.find('**/%sButtonDown_rollover' % type)), command=changeValue, extraArgs=[self, self.timeTypeToChangeAmount[type][1]])
        return (label, upButton, downButton)
Ejemplo n.º 26
0
    def __init__(self):

        self.frameMain = DirectFrame(frameSize=(base.a2dLeft, base.a2dRight,
                                                base.a2dBottom, base.a2dTop),
                                     frameColor=(0.05, 0.05, 0.05, 1))
        self.frameMain.setTransparency(1)

        tpBig = TextProperties()
        tpBig.setTextScale(1.5)
        tpSmall = TextProperties()
        tpSmall.setTextScale(0.75)
        tpUs = TextProperties()
        tpUs.setUnderscore(True)
        tpMgr = TextPropertiesManager.getGlobalPtr()
        tpMgr.setProperties("big", tpBig)
        tpMgr.setProperties("small", tpSmall)
        tpMgr.setProperties("us", tpUs)

        creditsText = ""
        with open("credits.txt") as f:
            creditsText = f.read()
        self.lblCredits = DirectLabel(text=creditsText,
                                      text_fg=(1, 1, 1, 1),
                                      text_bg=(0, 0, 0, 0),
                                      frameColor=(0, 0, 0, 0),
                                      text_align=TextNode.ACenter,
                                      scale=0.1,
                                      pos=(0, 0, base.a2dTop - 0.2))
        self.lblCredits.setTransparency(1)
        self.lblCredits.reparentTo(self.frameMain)

        self.creditsScroll = LerpPosInterval(self.lblCredits,
                                             12.0, (0, 0, base.a2dTop + 3.5),
                                             startPos=(0, 0, base.a2dBottom),
                                             name="CreditsScroll")

        self.btnBack = DirectButton(text="BACK",
                                    text_fg=(1, 1, 1, 1),
                                    text_align=TextNode.ALeft,
                                    scale=0.1,
                                    pad=(0.15, 0.15),
                                    pos=(base.a2dLeft + 0.08, 0,
                                         base.a2dBottom + 0.05),
                                    frameColor=(
                                        (0.2, 0.2, 0.2, 0.8),
                                        (0.4, 0.4, 0.4, 0.8),
                                        (0.4, 0.4, 0.4, 0.8),
                                        (0.1, 0.1, 0.1, 0.8),
                                    ),
                                    relief=1,
                                    command=base.messenger.send,
                                    extraArgs=["Credits-Back"],
                                    pressEffect=False,
                                    rolloverSound=None,
                                    clickSound=None)
        self.btnBack.setTransparency(1)
        self.btnBack.reparentTo(self.frameMain)

        self.hide()
Ejemplo n.º 27
0
    def goto_home(self):
        self.soft_destroy()

        LerpPosHprInterval(base.camera, 0.35, Point3(0, 0, 0),
                           Point3(0, 0, 0)).start()

        logo = OnscreenImage(image=loader.loadTexture('mainmenu/logo.png'),
                             pos=(0, 0, 0.625),
                             scale=(1, 1, 0.4))
        logo.setTransparency(TransparencyAttrib.MAlpha)

        exit_button = DirectButton(
            geom=(self.sprites.find('**/mm-exit-ready'),
                  self.sprites.find('**/mm-exit-click'),
                  self.sprites.find('**/mm-exit-hover'),
                  self.sprites.find('**/mm-exit-disabled')),
            relief=None,
            geom_scale=(0.666, 0, 0.25),
            geom_pos=(0, 0, -0.75),
            command=self.level_holder.exit_game)
        settings_button = DirectButton(
            geom=(self.sprites.find('**/mm-settings-ready'),
                  self.sprites.find('**/mm-settings-click'),
                  self.sprites.find('**/mm-settings-hover'),
                  self.sprites.find('**/mm-settings-disabled')),
            relief=None,
            geom_scale=(0.666, 0, 0.25),
            geom_pos=(0, 0, -0.4),
            command=self.goto_settings)
        play_button = DirectButton(
            geom=(self.sprites.find('**/mm-play-ready'),
                  self.sprites.find('**/mm-play-click'),
                  self.sprites.find('**/mm-play-hover'),
                  self.sprites.find('**/mm-play-disabled')),
            relief=None,
            geom_scale=(1, 0, 0.3),
            geom_pos=(0, 0, 0.1),
            command=self.goto_play)

        if not self.level_holder.check_connection():
            play_button["state"] = DGG.DISABLED

        self.images["img_logo"] = logo
        self.gui["btn_exit"] = exit_button
        self.gui["btn_settings"] = settings_button
        self.gui["btn_play"] = play_button
Ejemplo n.º 28
0
def init():
    global button
    button = DirectButton(
        parent=base.aspect2d,
        frameSize=(base.a2dRight, base.a2dRight * 0.5, base.a2dBottom,
                   base.a2dBottom * 0.5),
        command=click,
    )
Ejemplo n.º 29
0
 def __createButton(self, guiNode, imagePrefix, parent=hidden, **kwargs):
     return DirectButton(parent=parent,
                         relief=None,
                         image=(guiNode.find('**/%s_up' % imagePrefix),
                                guiNode.find('**/%s_down' % imagePrefix),
                                guiNode.find('**/%s_rollover' %
                                             imagePrefix)),
                         **kwargs)
Ejemplo n.º 30
0
    def setupButtons(self):
        buttons = loader.loadModel('phase_3/models/gui/dialog_box_buttons_gui')
        arrowGui = loader.loadModel('phase_3/models/gui/create_a_toon_gui')
        arrowImageList = (arrowGui.find('**/CrtATn_R_Arrow_UP'),
                          arrowGui.find('**/CrtATn_R_Arrow_DN'),
                          arrowGui.find('**/CrtATn_R_Arrow_RLVR'),
                          arrowGui.find('**/CrtATn_R_Arrow_UP'))

        self.cancelButton = DirectButton(
            parent=self,
            relief=None,
            image=(buttons.find('**/CloseBtn_UP'),
                   buttons.find('**/CloseBtn_DN'),
                   buttons.find('**/CloseBtn_Rllvr')),
            pos=(-0.2, 0, -0.5),
            text=OTPLocalizer.lCancel,
            text_scale=0.06,
            text_pos=(0, -0.1),
            command=self.__cancel,
            extraArgs=[LaffRestockGlobals.USER_CANCEL])
        self.okButton = DirectButton(
            parent=self,
            relief=None,
            image=(buttons.find('**/ChtBx_OKBtn_UP'),
                   buttons.find('**/ChtBx_OKBtn_DN'),
                   buttons.find('**/ChtBx_OKBtn_Rllvr')),
            pos=(0.2, 0, -0.5),
            text=OTPLocalizer.lOK,
            text_scale=0.06,
            text_pos=(0, -0.1),
            command=self.__restock)
        self.upArrow = DirectButton(parent=self,
                                    relief=None,
                                    image=arrowImageList,
                                    image_scale=(1, 1, 1),
                                    image3_color=Vec4(0.6, 0.6, 0.6, 0.25),
                                    pos=(0.2, 0, -0.265))
        self.downArrow = DirectButton(parent=self,
                                      relief=None,
                                      image=arrowImageList,
                                      image_scale=(-1, 1, 1),
                                      image3_color=Vec4(0.6, 0.6, 0.6, 0.25),
                                      pos=(-0.2, 0, -0.265))

        buttons.removeNode()
        arrowGui.removeNode()