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 addTextMessage(self, text, seconds = 7, priority = 0, color = (0, 0, 0, 1), icon = (), modelName = 'general_frame_b', name = None, avId = None, playerName = None):
     if name and playerName:
         t2 = text % (playerName, name)
     elif name:
         t2 = text % name
     elif playerName:
         t2 = text % playerName
     else:
         t2 = text
     if self.lastMessage == t2:
         return None
     
     msg = StackMessage(parent = self, text = t2, text_wordwrap = 15.5, text_align = TextNode.ALeft, text_scale = 0.035000000000000003, text_fg = color, text_pos = (0.17000000000000001, -0.071999999999999995, 0), textMayChange = 1, time = seconds, priority = priority, icon = icon, modelName = modelName)
     if name and playerName:
         buttonText = text % playerName
     else:
         buttonText = text
     if name or playerName:
         msg['text_fg'] = (0, 0, 0, 0)
         if name:
             nameArray = ('\x1CPOrangeHEAD\x1' + name + '\x2', '\x1CPOrangeHEAD\x1' + name + '\x2', '\x1CPOrangeOVER\x1' + name + '\x2', '\x1CPOrangeHEAD\x1' + name + '\x2')
         else:
             nameArray = ('\x1CPOrangeHEAD\x1' + playerName + '\x2', '\x1CPOrangeHEAD\x1' + playerName + '\x2', '\x1CPOrangeOVER\x1' + playerName + '\x2', '\x1CPOrangeHEAD\x1' + playerName + '\x2')
         if name:
             nameButton = DirectButton(parent = NodePath(), relief = None, text = nameArray, text_align = TextNode.ALeft, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 0, command = self.handleAvatarTextPress, extraArgs = [
                 avId,
                 name])
         else:
             nameButton = DirectButton(parent = NodePath(), relief = None, text = nameArray, text_align = TextNode.ALeft, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 0, command = self.handlePlayerTextPress, extraArgs = [
                 avId,
                 playerName])
         (left, right, bottom, top) = nameButton.getBounds()
         nameGFX = TextGraphic(nameButton, left, right, 0, 1)
         if name:
             buttonName = '\x5' + name + '\x5'
         else:
             buttonName = '\x5' + playerName + '\x5'
         buttonText = buttonText % buttonName
         tpMgr = TextPropertiesManager.getGlobalPtr()
         if name:
             tpMgr.setGraphic(name, nameGFX)
         else:
             tpMgr.setGraphic(playerName, nameGFX)
         del tpMgr
         textRender = TextNode('textRender')
         textRender.setFont(PiratesGlobals.getInterfaceFont())
         textRender.setTextColor(PiratesGuiGlobals.TextFG14)
         textRender.setShadowColor(PiratesGuiGlobals.TextShadow)
         textRender.setWordwrap(15.5)
         textRender.setTabWidth(1.0)
         textRender.setShadow(0.080000000000000002, 0.080000000000000002)
         textRender.setText(buttonText)
         x = msg.attachNewNode(textRender.generate())
         x.setScale(0.035000000000000003)
         x.setPos(0.16700000000000001, 0, -0.072999999999999995)
     
     self.addMessage(msg)
     self.lastMessage = t2
     return msg
Ejemplo n.º 3
0
 def addTextMessage(self, text, seconds = 7, priority = 0, color = (0, 0, 0, 1), icon = (), modelName = 'general_frame_b', name = None, avId = None, playerName = None):
     if name and playerName:
         t2 = text % (playerName, name)
     elif name:
         t2 = text % name
     elif playerName:
         t2 = text % playerName
     else:
         t2 = text
     if self.lastMessage == t2:
         return None
     
     msg = StackMessage(parent = self, text = t2, text_wordwrap = 15.5, text_align = TextNode.ALeft, text_scale = 0.035000000000000003, text_fg = color, text_pos = (0.17000000000000001, -0.071999999999999995, 0), textMayChange = 1, time = seconds, priority = priority, icon = icon, modelName = modelName)
     if name and playerName:
         buttonText = text % playerName
     else:
         buttonText = text
     if name or playerName:
         msg['text_fg'] = (0, 0, 0, 0)
         if name:
             nameArray = ('\x01CPOrangeHEAD\x01' + name + '\x02', '\x01CPOrangeHEAD\x01' + name + '\x02', '\x01CPOrangeOVER\x01' + name + '\x02', '\x01CPOrangeHEAD\x01' + name + '\x02')
         else:
             nameArray = ('\x01CPOrangeHEAD\x01' + playerName + '\x02', '\x01CPOrangeHEAD\x01' + playerName + '\x02', '\x01CPOrangeOVER\x01' + playerName + '\x02', '\x01CPOrangeHEAD\x01' + playerName + '\x02')
         if name:
             nameButton = DirectButton(parent = NodePath(), relief = None, text = nameArray, text_align = TextNode.ALeft, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 0, command = self.handleAvatarTextPress, extraArgs = [
                 avId,
                 name])
         else:
             nameButton = DirectButton(parent = NodePath(), relief = None, text = nameArray, text_align = TextNode.ALeft, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 0, command = self.handlePlayerTextPress, extraArgs = [
                 avId,
                 playerName])
         (left, right, bottom, top) = nameButton.getBounds()
         nameGFX = TextGraphic(nameButton, left, right, 0, 1)
         if name:
             buttonName = '\x05' + name + '\x05'
         else:
             buttonName = '\x05' + playerName + '\x05'
         buttonText = buttonText % buttonName
         tpMgr = TextPropertiesManager.getGlobalPtr()
         if name:
             tpMgr.setGraphic(name, nameGFX)
         else:
             tpMgr.setGraphic(playerName, nameGFX)
         del tpMgr
         textRender = TextNode('textRender')
         textRender.setFont(PiratesGlobals.getInterfaceFont())
         textRender.setTextColor(PiratesGuiGlobals.TextFG14)
         textRender.setShadowColor(PiratesGuiGlobals.TextShadow)
         textRender.setWordwrap(15.5)
         textRender.setTabWidth(1.0)
         textRender.setShadow(0.080000000000000002, 0.080000000000000002)
         textRender.setText(buttonText)
         x = msg.attachNewNode(textRender.generate())
         x.setScale(0.035000000000000003)
         x.setPos(0.16700000000000001, 0, -0.072999999999999995)
     
     self.addMessage(msg)
     self.lastMessage = t2
     return msg
Ejemplo n.º 4
0
    def _adjust_frame(self, new_button: DirectGui.DirectButton):
        frame_size = new_button.getBounds()
        button_width = (frame_size[1] - frame_size[0]) * self._TEXT_SIZE
        if button_width > self._width:
            self._width = button_width

        for menu in self._sub_menus:
            menu._frame.set_x(self._width + constants.PADDING)

        self._bottom -= self._TEXT_SIZE + 2 * constants.PADDING

        frame_size = list(self._frame["frameSize"])
        frame_size[2] = self._bottom
        frame_size[1] = self._width + constants.PADDING
        self._frame["frameSize"] = frame_size
Ejemplo n.º 5
0
 def addModalTextMessage(self, text, buttonStyle = OTPDialog.CancelOnly, noCallback = None, yesCallback = None, cancelCallback = None, seconds = 120, priority = 0, color = (1, 1, 1, 1), icon = (), modelName = 'general_frame_f', name = None, avId = None):
     if name:
         t2 = text % name
     else:
         t2 = text
     if self.lastMessage == text:
         return None
     
     msg = ModalStackMessage(parent = self, buttonStyle = buttonStyle, noCallback = noCallback, yesCallback = yesCallback, cancelCallback = cancelCallback, text = text, text_wordwrap = 15.5, text_align = TextNode.ALeft, text_scale = 0.035000000000000003, text_fg = color, text_pos = (0.17000000000000001, -0.071999999999999995, 0), textMayChange = 1, time = seconds, priority = priority, icon = icon, modelName = modelName)
     if name:
         msg['text_fg'] = (0, 0, 0, 0)
         nameArray = ('\x1CPOrangeHEAD\x1' + name + '\x2', '\x1CPOrangeHEAD\x1' + name + '\x2', '\x1CPOrangeOVER\x1' + name + '\x2', '\x1CPOrangeHEAD\x1' + name + '\x2')
         nameButton = DirectButton(parent = NodePath(), relief = None, text = nameArray, text_align = TextNode.ALeft, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 0, command = self.handleAvatarModalPress, extraArgs = [
             avId,
             name])
         (left, right, bottom, top) = nameButton.getBounds()
         nameGFX = TextGraphic(nameButton, left, right, 0, 1)
         buttonName = '\x5' + name + '\x5'
         buttonText = text % buttonName
         tpMgr = TextPropertiesManager.getGlobalPtr()
         tpMgr.setGraphic(name, nameGFX)
         del tpMgr
         textRender = TextNode('textRender')
         textRender.setFont(PiratesGlobals.getInterfaceFont())
         textRender.setTextColor(PiratesGuiGlobals.TextFG14)
         textRender.setShadowColor(PiratesGuiGlobals.TextShadow)
         textRender.setWordwrap(15.5)
         textRender.setTabWidth(1.0)
         textRender.setShadow(0.080000000000000002, 0.080000000000000002)
         textRender.setText(buttonText)
         x = msg.attachNewNode(textRender.generate())
         x.setScale(0.034500000000000003, 1.0, 0.035000000000000003)
         x.setPos(0.16700000000000001, 0, -0.072999999999999995)
     
     self.addMessage(msg)
     self.lastMessage = text
     if icon and icon[0] == 'ship':
         self.shipMessage = msg
     
     return msg
Ejemplo n.º 6
0
 def addModalTextMessage(self, text, buttonStyle = OTPDialog.CancelOnly, noCallback = None, yesCallback = None, cancelCallback = None, seconds = 120, priority = 0, color = (1, 1, 1, 1), icon = (), modelName = 'general_frame_f', name = None, avId = None):
     if name:
         t2 = text % name
     else:
         t2 = text
     if self.lastMessage == text:
         return None
     
     msg = ModalStackMessage(parent = self, buttonStyle = buttonStyle, noCallback = noCallback, yesCallback = yesCallback, cancelCallback = cancelCallback, text = text, text_wordwrap = 15.5, text_align = TextNode.ALeft, text_scale = 0.035000000000000003, text_fg = color, text_pos = (0.17000000000000001, -0.071999999999999995, 0), textMayChange = 1, time = seconds, priority = priority, icon = icon, modelName = modelName)
     if name:
         msg['text_fg'] = (0, 0, 0, 0)
         nameArray = ('\x01CPOrangeHEAD\x01' + name + '\x02', '\x01CPOrangeHEAD\x01' + name + '\x02', '\x01CPOrangeOVER\x01' + name + '\x02', '\x01CPOrangeHEAD\x01' + name + '\x02')
         nameButton = DirectButton(parent = NodePath(), relief = None, text = nameArray, text_align = TextNode.ALeft, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 0, command = self.handleAvatarModalPress, extraArgs = [
             avId,
             name])
         (left, right, bottom, top) = nameButton.getBounds()
         nameGFX = TextGraphic(nameButton, left, right, 0, 1)
         buttonName = '\x05' + name + '\x05'
         buttonText = text % buttonName
         tpMgr = TextPropertiesManager.getGlobalPtr()
         tpMgr.setGraphic(name, nameGFX)
         del tpMgr
         textRender = TextNode('textRender')
         textRender.setFont(PiratesGlobals.getInterfaceFont())
         textRender.setTextColor(PiratesGuiGlobals.TextFG14)
         textRender.setShadowColor(PiratesGuiGlobals.TextShadow)
         textRender.setWordwrap(15.5)
         textRender.setTabWidth(1.0)
         textRender.setShadow(0.080000000000000002, 0.080000000000000002)
         textRender.setText(buttonText)
         x = msg.attachNewNode(textRender.generate())
         x.setScale(0.034500000000000003, 1.0, 0.035000000000000003)
         x.setPos(0.16700000000000001, 0, -0.072999999999999995)
     
     self.addMessage(msg)
     self.lastMessage = text
     if icon and icon[0] == 'ship':
         self.shipMessage = msg
     
     return msg
Ejemplo n.º 7
0
   def addItem(self,text,extraArgs=None,atIndex=None,textColorName=None):
       """
          add item to the list
          text : text for the button
          extraArgs : the object which will be passed to user command(s)
                      (both command and contextMenu) when the button get clicked
          atIndex : where to add the item
                    <None> : put item at the end of list
                    <integer> : put item at index <integer>
                    <button> : put item at <button>'s index
           textColorName : the color name eg. 'yellow'
       """
       textColor = self.buttonTextColor
       if textColorName != None:
           textColor = globals.colors[textColorName]
           
       button = DirectButton(parent=self.canvas,
           scale=self.itemScale,
           relief=DGG.FLAT,
           frameColor=(0,0,0,0),text_scale=self.itemTextScale,
           text=text, text_pos=(0,self.itemTextZ),text_fg=textColor,
           text_font=self.font, text_align=TextNode.ALeft,
           command=self.__setFocusButton,
           enableEdit=0, suppressMouse=0, rolloverSound=None,clickSound=None)
       #button.setMyMode(self.mode)
       l,r,b,t=button.getBounds()
       # top & bottom are blindly set without knowing where exactly the baseline is,
       # but this ratio fits most fonts
       baseline=-self.fontHeight*.25
       #button['saved_color'] = textColor
       button['frameSize']=(l-self.xtraSideSpace,r+self.xtraSideSpace,baseline,baseline+self.fontHeight)
 
 #          Zc=NodePath(button).getBounds().getCenter()[1]-self.fontHeight*.5+.25
 # #          Zc=button.getCenter()[1]-self.fontHeight*.5+.25
 #          button['frameSize']=(l-self.xtraSideSpace,r+self.xtraSideSpace,Zc,Zc+self.fontHeight)
      
       button['extraArgs']=[button,extraArgs]
       button._DirectGuiBase__componentInfo['text2'][0].setColorScale(self.rolloverColor)
       button.bind(DGG.B3PRESS,self.__rightPressed,[button])
       if isinstance(atIndex,DirectButton):
          if atIndex.isEmpty():
             atIndex=None
          else:
             index=self.buttonsList.index(atIndex)
             self.buttonsList.insert(index,button)
       if atIndex==None:
          self.buttonsList.append(button)
          index=self.numItems
       elif type(atIndex)==IntType:
          index=atIndex
          self.buttonsList.insert(index,button)
       Zpos=(-.7-index)*self.itemVertSpacing
       button.setPos(.02,0,Zpos)
       if index!=self.numItems:
          for i in range(index+1,self.numItems+1):
              self.buttonsList[i].setZ(self.buttonsList[i],-self.fontHeight)
       self.numItems+=1
       self.__adjustCanvasLength(self.numItems)
       if self.autoFocus:
          self.focusViewOnItem(index)
       if self.colorChange:
          Sequence(
             button.colorScaleInterval(self.colorChangeDuration,self.newItemColor,globals.colors['guiblue3']),
             button.colorScaleInterval(self.colorChangeDuration,Vec4(1,1,1,1),self.newItemColor)
             ).start()