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
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
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
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
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()
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()
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")
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
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
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
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
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
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
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)
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
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)
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
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
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
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)
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()
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
def init(): global button button = DirectButton( parent=base.aspect2d, frameSize=(base.a2dRight, base.a2dRight * 0.5, base.a2dBottom, base.a2dBottom * 0.5), command=click, )
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)
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()