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)
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)
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))
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()
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)
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()
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()