예제 #1
0
    def _CycleText(self):
        t = 0.0
        lastTextChange = blue.os.GetWallclockTime()
        self.hackText.text = random.choice(self.hackStrings)
        self.hackText.state = uiconst.UI_DISABLED
        while self and not self.destroyed and self.active:
            t += 1.0 / max(1.0, blue.os.fps)
            self.hackText.color.a = math.cos(t * math.pi / 0.5) * 0.4 + 0.6
            if lastTextChange + 5 * SEC < blue.os.GetWallclockTime():
                self.hackText.text = random.choice(self.hackStrings)
                lastTextChange = blue.os.GetWallclockTime()
            while uix.GetTextWidth(self.text.text[1:],
                                   fontsize=self.text.fontsize) - (
                                       60 + abs(self.text.left)) < self.width:
                self.text.text += random.choice(self.HEXDIGITS)

            self.text.left -= 2
            firstLetterWidth = uix.GetTextWidth(self.text.text[0],
                                                fontsize=self.text.fontsize)
            while abs(self.text.left) > firstLetterWidth:
                self.text.text = self.text.text[1:]
                self.text.left += firstLetterWidth
                firstLetterWidth = uix.GetTextWidth(
                    self.text.text[0], fontsize=self.text.fontsize)

            blue.pyos.synchro.SleepWallclock(20)

        while self and not self.destroyed and self.text.color.a > 0.0:
            self.text.color.a -= 0.03
            self.text.color.a = max(self.text.color.a, 0.0)
            blue.pyos.synchro.SleepWallclock(70)
예제 #2
0
    def ClickEntry(self, entry, *args):
        if not self or self.destroyed:
            return
        self.ShowRightPanel()
        if self.fitting is not None and self.fitting.fittingID == entry.sr.node.fitting.fittingID:
            return
        self.fitting = fitting = entry.sr.node.fitting
        self.sr.fittingName.SetText(fitting.name)
        self.RefreshNameCheckbox()
        self.sr.fittingDescription.SetText(fitting.description)
        shipName = evetypes.GetName(fitting.shipTypeID)
        self.sr.shipTypeName.text = shipName
        width = uix.GetTextWidth(shipName, uppercase=1)
        self.sr.infoicon.left = width + 15
        self.sr.infoicon.state = uiconst.UI_NORMAL
        self.sr.shipIcon.LoadIconByTypeID(fitting.shipTypeID, ignoreSize=True)
        self.sr.shipIcon.SetSize(64, 64)
        self.sr.shipIcon.state = uiconst.UI_DISABLED
        uix.GetTechLevelIcon(self.sr.techicon, 0, fitting.shipTypeID)
        self.sr.dragIcon.fitting = fitting
        for button in self.sr.radioButtons:
            button.SetValue(fitting.ownerID == button.data['value'])

        scrolllist = self.fittingSvc.GetFittingInfoScrollList(fitting)
        self.sr.fittingInfo.Load(contentList=scrolllist)
예제 #3
0
 def InitRubberLinkLabels(self):
     self.rubberLinkLabelContainer = uicls.Container(name='rubberLinkLabels', parent=self.planetUISvc.planetUIContainer, pos=(400, 400, 110, 55), padding=(4, 4, 4, 4), align=uiconst.TOPLEFT, state=uiconst.UI_HIDDEN)
     self.rubberLinkLabels = util.KeyVal()
     self.rubberLinkLabels.padding = 3
     self.rubberLinkLabels.columnPadding = 9
     white = (1.0, 1.0, 1.0, 1.0)
     gray = (1.0, 1.0, 1.0, 0.6)
     self.rubberLinkLabels.distanceLbl = uicls.EveLabelMedium(text=localization.GetByLabel('UI/Common/Distance'), parent=self.rubberLinkLabelContainer, left=self.rubberLinkLabels.padding, height=16, align=uiconst.TOPLEFT, state=uiconst.UI_DISABLED, color=gray)
     maxLabelWidth = uix.GetTextWidth(localization.GetByLabel('UI/Common/Distance'))
     self.rubberLinkLabels.powerLbl = uicls.EveLabelMedium(text=localization.GetByLabel('UI/Common/Power'), parent=self.rubberLinkLabelContainer, top=16, left=self.rubberLinkLabels.padding, height=16, align=uiconst.TOPLEFT, state=uiconst.UI_DISABLED, color=gray)
     maxLabelWidth = max(maxLabelWidth, uix.GetTextWidth(localization.GetByLabel('UI/Common/Power')))
     self.rubberLinkLabels.cpuLbl = uicls.EveLabelMedium(text=localization.GetByLabel('UI/Common/Cpu'), parent=self.rubberLinkLabelContainer, top=32, left=self.rubberLinkLabels.padding, height=16, align=uiconst.TOPLEFT, state=uiconst.UI_DISABLED, color=gray)
     maxLabelWidth = max(maxLabelWidth, uix.GetTextWidth(localization.GetByLabel('UI/Common/Cpu')))
     maxLabelWidth += self.rubberLinkLabels.columnPadding
     self.rubberLinkLabels.distance = uicls.EveLabelMedium(text='', parent=self.rubberLinkLabelContainer, left=2, align=uiconst.TOPRIGHT, state=uiconst.UI_DISABLED, color=white)
     self.rubberLinkLabels.power = uicls.EveLabelMedium(text='', parent=self.rubberLinkLabelContainer, left=2, top=16, align=uiconst.TOPRIGHT, state=uiconst.UI_DISABLED, color=white)
     self.rubberLinkLabels.cpu = uicls.EveLabelMedium(text='', parent=self.rubberLinkLabelContainer, left=2, top=32, align=uiconst.TOPRIGHT, state=uiconst.UI_DISABLED, color=white)
     uicls.Fill(parent=self.rubberLinkLabelContainer, color=(0.0, 0.0, 0.0, 0.5))
예제 #4
0
    def _LaunchThread(self):
        if not self or self.destroyed:
            return
        countdown = 3
        while countdown > 0:
            if not self or self.destroyed:
                return
            self.launchText.state = uiconst.UI_HIDDEN
            self.launchTextCont.width = uix.GetTextWidth(str(countdown),
                                                         fontsize=48)
            self.launchText.text = str(countdown)
            self.launchText.state = uiconst.UI_DISABLED
            self.launchTextCont.opacity = 1.0
            sm.GetService('audio').SendUIEvent(
                'wise:/msg_pi_spaceports_countdown_play')
            uix.FadeCont(self.launchTextCont, 0, after=0, fadeTime=900.0)
            blue.pyos.synchro.SleepWallclock(100)
            countdown -= 1

        if not self or self.destroyed:
            return
        self.launchText.state = uiconst.UI_HIDDEN
        self.launchTextCont.width = uix.GetTextWidth(
            'UI/PI/Common/LaunchSuccessText', fontsize=48)
        self.launchText.text = localization.GetByLabel(
            'UI/PI/Common/LaunchSuccessText')
        self.launchText.state = uiconst.UI_DISABLED
        self.launchTextCont.opacity = 1.0
        sm.GetService('audio').SendUIEvent(
            'wise:/msg_pi_spaceports_launch_play')
        blue.pyos.synchro.SleepWallclock(500)
        try:
            self.launchText.state = uiconst.UI_HIDDEN
            self.planetUISvc.myPinManager.LaunchCommodities(
                self.pin.id, self.payloadCommodities)
        except UserError:
            self.ResetPayloadContents()
            self._ReloadScrolls()
            raise
        finally:
            self._ToggleButtons()

        self._CancelLaunch()
예제 #5
0
    def ApplyAttributes(self, attributes):
        uiprimitives.Container.ApplyAttributes(self, attributes)
        color = attributes.Get('color', util.Color.WHITE)
        backgroundColor = attributes.Get('backgroundColor', None)
        self.value = attributes.Get('value', 0.0)
        self.uiEffects = uicls.UIEffects()
        self.busy = False
        self.queuedSetValue = None
        self.gaugeCont = uiprimitives.Container(parent=self, name='gaugeCont', pos=(0,
         0,
         self.width,
         self.height), align=uiconst.TOPLEFT)
        uicontrols.Frame(parent=self.gaugeCont, color=(1.0, 1.0, 1.0, 0.2))
        self.gauge = uiprimitives.Fill(parent=self.gaugeCont, name='gauge', align=uiconst.TOLEFT, width=0, color=color)
        if backgroundColor is None:
            backgroundColor = util.Color(*color).SetAlpha(0.2).GetRGBA()
        uiprimitives.Fill(parent=self.gaugeCont, name='background', color=backgroundColor)
        testString = ''.join(self.HEXDIGITS)
        fontSize = 1
        textHeight = uix.GetTextHeight(testString, fontsize=fontSize)
        while textHeight < self.height:
            fontSize += 1
            textHeight = uix.GetTextHeight(testString, fontsize=fontSize)
        else:
            fontSize -= 1
            textHeight = uix.GetTextHeight(testString, fontsize=fontSize)

        self.textCont = uiprimitives.Container(parent=self, name='textCont', pos=(0,
         0,
         self.width,
         textHeight), align=uiconst.CENTER, clipChildren=True, idx=0)
        self.text = uicontrols.Label(parent=self.textCont, name='hackText', align=uiconst.TOALL, fontsize=fontSize, text='')
        hackText = random.choice(self.HEXDIGITS)
        while uix.GetTextWidth(hackText[1:], fontsize=fontSize) < self.width:
            hackText += random.choice(self.HEXDIGITS)

        self.text.text = hackText
        self.SetValueInstantly(self.value)
        self.hackStrings = ['Hacking Gibson...',
         'Cracking Codes...',
         'Inserting Rootkit...',
         'Defeating ICE...',
         'Circumventing Firewall...',
         'Polymorphing Virii...',
         'Erasing Logs...',
         'Reticulating Splines...',
         'Twisting Mersenne...',
         'Curving Ellipses...',
         'Analyzing Ciphers...',
         'Factoring Primes...']
        self.hackText = uicontrols.EveHeaderMedium(text='', parent=self, align=uiconst.CENTERBOTTOM, height=20, state=uiconst.UI_HIDDEN, top=-24)
        self.active = True
        uthread.new(self._CycleText)
예제 #6
0
    def PopulateView(self, memberIDs = None):
        nIndex = 0
        nCount = 0
        try:
            log.LogInfo('memberIDs: ', memberIDs)
            if memberIDs is not None:
                self.sr.memberIDs = memberIDs
            nFrom = self.sr.viewFrom
            nTo = nFrom + self.sr.viewPerPage
            if nTo >= len(self.sr.memberIDs) - 1:
                nTo = len(self.sr.memberIDs)
                self.sr.fwdBtn.Disable()
            else:
                self.sr.fwdBtn.Enable()
            if nFrom < 0:
                nFrom = 0
            if nFrom == 0:
                self.sr.backBtn.Disable()
            else:
                self.sr.backBtn.Enable()
            nCount = nTo - nFrom
            sm.GetService('loading').ProgressWnd(localization.GetByLabel('UI/Generic/Loading'), '', nIndex, nCount)
            blue.pyos.synchro.Yield()
            scrolllist = []
            strings = []
            headers = self.GetHeaderValues()
            fixed = {localization.GetByLabel('UI/Corporations/CorporationWindow/Members/FindMemberInRole/Base'): 88}
            for each in headers:
                if each.lower() in (localization.GetByLabel('UI/Common/Name'), localization.GetByLabel('UI/Corporations/CorporationWindow/Members/FindMemberInRole/Base')):
                    continue
                fixed[each] = uix.GetTextWidth(each, 9, 2) + 24 + 4

            roleGroup = self.sr.roleGroupings[self.sr.viewRoleGroupingID]
            log.LogWarn('About to FetchByKey: ', self.sr.memberIDs, ' from: ', nFrom, ' to: ', nTo)
            self.sr.members.FetchByKey(self.sr.memberIDs)
            for ix in range(nFrom, nTo):
                nIndex += 1
                rec = self.sr.members.GetByKey(self.sr.memberIDs[ix])
                ownerName = cfg.eveowners.Get(rec.characterID).ownerName
                sm.GetService('loading').ProgressWnd(localization.GetByLabel('UI/Generic/Loading'), ownerName, nIndex, nCount)
                blue.pyos.synchro.Yield()
                baseID = rec.baseID
                base = cfg.evelocations.GetIfExists(baseID)
                if base is not None:
                    baseName = base.locationName
                else:
                    baseName = '-'
                text = '%s<t>%s' % (ownerName, baseName)
                params = {'rec': None,
                 'srcRec': rec,
                 'viewtype': self.sr.viewType,
                 'rolegroup': self.sr.viewRoleGroupingID,
                 'parent': self,
                 'sort_%s' % localization.GetByLabel('UI/Insurance/InsuranceWindow/Name'): cfg.eveowners.Get(rec.characterID).ownerName,
                 'sort_%s' % localization.GetByLabel('UI/Corporations/CorporationWindow/Members/FindMemberInRole/Base'): baseName}
                if self.sr.viewType == VIEW_TITLES:
                    for title in sorted(sm.GetService('corp').GetTitles().itervalues(), key=lambda x: x.titleID):
                        sortvalue = rec.titleMask & title.titleID == title.titleID
                        text += '<t>[%s]' % sortvalue
                        params['sort_%s' % title.titleName] = sortvalue

                else:
                    roles = getattr(rec, roleGroup.appliesTo)
                    grantableRoles = getattr(rec, roleGroup.appliesToGrantable)
                    for column in roleGroup.columns:
                        columnName, subColumns = column
                        newtext = '<t>'
                        sortmask = ''
                        for subColumnName, role in subColumns:
                            isChecked = [roles, grantableRoles][self.sr.viewType] & role.roleID == role.roleID
                            if isChecked:
                                newtext += ' [X] %s' % subColumnName
                            else:
                                newtext += ' [ ] %s' % subColumnName
                            sortmask += [' ', 'X'][not not isChecked]

                        params['sort_%s' % columnName] = sortmask
                        text += newtext

                params['label'] = text
                scrolllist.append(listentry.Get('CorpMemberRoleEntry', params))
                strings.append((text,
                 9,
                 2,
                 0))

            self.tabstops = uicore.font.MeasureTabstops(strings + [('<t>'.join(headers),
              9,
              2,
              0)])
            self.sr.scroll.adjustableColumns = 1
            self.sr.scroll.sr.id = 'CorporationMembers'
            self.sr.scroll.Load(None, scrolllist, self.sr.scroll.GetSortBy(), reversesort=1, headers=headers)
            self.OnColumnChanged(self.sr.scroll.sr.tabs)
            self.sr.ignoreDirtyFlag = False
        finally:
            sm.GetService('loading').ProgressWnd(localization.GetByLabel('UI/Common/Loading'), '', nCount, nCount)
            blue.pyos.synchro.Yield()
예제 #7
0
    def PopulateView(self):
        log.LogInfo('PopulateView')
        try:
            serverPage = self.sr.viewFrom / self.sr.members.perPage + 1
            members = self.sr.members.PopulatePage(serverPage)
            viewPage = self.sr.viewFrom / self.sr.viewPerPage + 1
            viewPagesTotal = self.sr.members.totalCount / self.sr.viewPerPage + 1
            blue.pyos.synchro.Yield()
            if viewPage < viewPagesTotal:
                self.sr.fwdBtn.Enable()
            else:
                self.sr.fwdBtn.Disable()
            if viewPage == 1:
                self.sr.backBtn.Disable()
            else:
                self.sr.backBtn.Enable()
            scrolllist = []
            strings = []
            headers = self.GetHeaderValues()
            fixed = {
                localization.GetByLabel('UI/Corporations/CorporationWindow/Members/CorpMemberBase'):
                88
            }
            for each in headers:
                if each in (localization.GetByLabel(
                        'UI/Corporations/CorporationWindow/Members/CorpMemberName'
                ),
                            localization.GetByLabel(
                                'UI/Corporations/CorporationWindow/Members/CorpMemberBase'
                            )):
                    continue
                fixed[each] = uix.GetTextWidth(each, 9, 2) + 24 + 4

            roleGroup = self.sr.roleGroupings[self.sr.viewRoleGroupingID]
            count = min(self.sr.viewPerPage,
                        self.sr.members.totalCount - self.sr.viewFrom)
            sm.GetService('loading').ProgressWnd(
                localization.GetByLabel('UI/Common/Loading'), '', 1, count)
            for number in range(count):
                index = (number + self.sr.viewFrom) % self.sr.members.perPage
                currentServerPage = (
                    number + self.sr.viewFrom) / self.sr.members.perPage + 1
                if serverPage != currentServerPage:
                    members = self.sr.members.PopulatePage(currentServerPage)
                    serverPage = currentServerPage
                rec = members[index]
                text = cfg.eveowners.Get(rec.characterID).ownerName
                sm.GetService('loading').ProgressWnd(
                    localization.GetByLabel('UI/Common/Loading'),
                    cfg.eveowners.Get(rec.characterID).ownerName, number,
                    count)
                blue.pyos.synchro.Yield()
                baseID = rec.baseID
                base = cfg.evelocations.GetIfExists(baseID)
                if base is not None:
                    baseName = base.locationName
                else:
                    baseName = '-'
                text += '<t>%s' % baseName
                nameColumnLabel = localization.GetByLabel(
                    'UI/Corporations/CorporationWindow/Members/CorpMemberName')
                baseColumnLabel = localization.GetByLabel(
                    'UI/Corporations/CorporationWindow/Members/CorpMemberBase')
                params = {
                    'rec':
                    None,
                    'srcRec':
                    rec,
                    'viewtype':
                    self.sr.viewType,
                    'rolegroup':
                    self.sr.viewRoleGroupingID,
                    'parent':
                    self,
                    'sort_%s' % nameColumnLabel:
                    cfg.eveowners.Get(rec.characterID).ownerName,
                    'sort_%s' % baseColumnLabel:
                    baseName
                }
                if self.sr.viewType == VIEW_TITLES:
                    for title in sorted(
                            sm.GetService('corp').GetTitles().itervalues(),
                            key=lambda x: x.titleID):
                        sortvalue = rec.titleMask & title.titleID == title.titleID
                        text += '<t>[' + ('x' if sortvalue else ' ') + ']'
                        params['sort_%s' % title.titleName] = sortvalue

                else:
                    roles = getattr(rec, roleGroup.appliesTo)
                    grantableRoles = getattr(rec, roleGroup.appliesToGrantable)
                    for column in roleGroup.columns:
                        columnName, subColumns = column
                        newtext = '<t>'
                        sortmask = ''
                        for subColumnName, role in subColumns:
                            isChecked = [
                                roles, grantableRoles
                            ][self.sr.viewType] & role.roleID == role.roleID
                            if isChecked:
                                newtext += ' [X] %s' % subColumnName
                            else:
                                newtext += ' [ ] %s' % subColumnName
                            sortmask += [' ', 'X'][not not isChecked]

                        params['sort_%s' % columnName] = sortmask
                        text += newtext

                params['label'] = text
                scrolllist.append(listentry.Get('CorpMemberRoleEntry', params))
                strings.append((text, 9, 2, 0))

            self.tabstops = uicore.font.MeasureTabstops(strings +
                                                        [('<t>'.join(headers),
                                                          9, 2, 0)])
            self.sr.scroll.adjustableColumns = 1
            self.sr.scroll.sr.id = 'CorporationMembers'
            self.sr.scroll.Load(None,
                                scrolllist,
                                self.sr.scroll.GetSortBy(),
                                reversesort=1,
                                headers=headers)
            self.OnColumnChanged(self.sr.scroll.sr.tabs)
            self.sr.ignoreDirtyFlag = False
        finally:
            sm.GetService('loading').ProgressWnd(
                localization.GetByLabel('UI/Common/Loading'), '', count, count)
            blue.pyos.synchro.Yield()