all_ui_sovereignty.py (5602B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\neocom\Alliances\all_ui_sovereignty.py 2 import blue 3 import carbonui.const as uiconst 4 import uthread 5 from carbon.common.script.util.format import FmtDate 6 from carbonui import TextColor 7 from carbonui.control.button import Button 8 from carbonui.control.combo import Combo 9 from carbonui.primitives.container import Container 10 from carbonui.primitives.containerAutoSize import ContainerAutoSize 11 from entosis.entosisConst import CHANGE_PRIMETIME_DELAY 12 from eve.client.script.ui.control.eveLabel import EveLabelLargeBold, EveLabelMedium 13 from eve.client.script.ui.control.utilMenu import UtilMenu 14 from eve.common.lib.appConst import corpRoleDirector 15 from inventorycommon.util import IsNPC 16 from localization import GetByLabel 17 from player_messaging.client.ui_message import prompt_player_fsd_dialog 18 from sovDashboard.dashboard import SovDashboard 19 20 class FormAlliancesSovereignty(Container): 21 is_loaded = False 22 23 def Load(self, *args): 24 if self.is_loaded: 25 return 26 self.is_loaded = True 27 self.primeTimeInfo = None 28 self.ConstructTopCont() 29 uthread.new(self.UpdatePrimeInfo) 30 self.sovDashBoard = SovDashboard(parent=self, padTop=16) 31 self.sovDashBoard.CreateWindow() 32 33 def ConstructTopCont(self): 34 topCont = ContainerAutoSize(name='topCont', parent=self, align=uiconst.TOTOP, alignMode=uiconst.TOTOP) 35 EveLabelMedium(parent=topCont, text=GetByLabel('UI/Sovereignty/DefaultVulnerabilityTimeLabel'), align=uiconst.TOTOP) 36 self.primeTimeMenu = UtilMenu(parent=topCont, align=uiconst.CENTERRIGHT, menuAlign=uiconst.TOPRIGHT, GetUtilMenu=self.PrimeTimeMenu) 37 execCorpID = sm.GetService('alliance').GetAlliance(session.allianceid).executorCorpID 38 if self._IsDirectorInExecCorp(execCorpID): 39 self.primeTimeMenu.Show() 40 self.timeLabel = EveLabelMedium(parent=topCont, align=uiconst.TOTOP, color=TextColor.HIGHLIGHT) 41 42 def UpdatePrimeInfo(self): 43 self.primeTimeInfo = sm.GetService('alliance').GetPrimeTimeInfo() 44 self.UpdateText() 45 46 def UpdateText(self): 47 if self.primeTimeInfo is None or self.primeTimeInfo.currentPrimeHour is None: 48 text = GetByLabel('UI/Common/Unknown') 49 else: 50 newPrimeHour = self.primeTimeInfo.newPrimeHour 51 validAfter = self.primeTimeInfo.newPrimeHourValidAfter 52 now = blue.os.GetWallclockTime() 53 if newPrimeHour is not None and now < validAfter: 54 text = GetByLabel('UI/Sovereignty/VulnerabilityTimeWithFutureChange', hour=self.primeTimeInfo.currentPrimeHour, newHour=self.primeTimeInfo.newPrimeHour, validAfterDate=self.primeTimeInfo.newPrimeHourValidAfter) 55 else: 56 currentPrimeHour = self.GetCurrentPrimeHour() 57 text = GetByLabel('UI/Sovereignty/VulnerabilityTime', hour=currentPrimeHour) 58 self.timeLabel.SetText(text) 59 60 def PrimeTimeMenu(self, menuParent): 61 headerCont = menuParent.AddContainer(align=uiconst.TOTOP, height=20, padding=uiconst.defaultPadding) 62 EveLabelLargeBold(parent=headerCont, text=GetByLabel('UI/Sovereignty/SetSovereigntyHour'), align=uiconst.TOTOP) 63 menuParent.AddSpace(height=10) 64 text = menuParent.AddText(GetByLabel('UI/Sovereignty/SetNewVulnerabilityTimeDescription')) 65 text.GetEntryWidth = lambda mc = text: 250 66 cont = menuParent.AddContainer(align=uiconst.TOTOP, height=60, padding=uiconst.defaultPadding) 67 myCont = Container(name='myCont', parent=cont, align=uiconst.TOTOP, height=32, padTop=10) 68 currentPrimeHour = self.GetCurrentPrimeHour() 69 self.primeTimeCombo = Combo(name='primeTimeCombo', parent=myCont, options=self.GetTimeComboOptions(), select=currentPrimeHour, width=150) 70 Button(name='SetPrimeTimeBtn', align=uiconst.TOPRIGHT, parent=myCont, label=GetByLabel('UI/Common/CommandSet'), func=self.SetPrimeTime) 71 72 def SetPrimeTime(self, *args): 73 primeTimeNewValue = self.primeTimeCombo.GetValue() 74 if self.primeTimeInfo and self.primeTimeInfo.newPrimeHour: 75 newPrimeHour = self.primeTimeInfo.newPrimeHour 76 validAfter = self.primeTimeInfo.newPrimeHourValidAfter 77 newerPrimeHour = blue.os.GetWallclockTime() + CHANGE_PRIMETIME_DELAY 78 if prompt_player_fsd_dialog('updateNewPrimeTime', {'currentPendingTime': '%s:00' % newPrimeHour, 79 'currentPendingDate': FmtDate(validAfter, 'ss'), 80 'newPendingTime': '%s:00' % primeTimeNewValue, 81 'newPendingDate': FmtDate(newerPrimeHour, 'ss')}, uiconst.YESNO) != uiconst.ID_YES: 82 return 83 sm.GetService('alliance').SetPrimeHour(primeTimeNewValue) 84 self.UpdatePrimeInfo() 85 self.primeTimeMenu.CloseMenu() 86 87 def GetTimeComboOptions(self): 88 return [ (GetByLabel('UI/Sovereignty/VulnerabilityTime', hour=i), i) for i in xrange(24) ] 89 90 def GetCurrentPrimeHour(self): 91 currentPrimeHour = 0 92 if self.primeTimeInfo and self.primeTimeInfo.currentPrimeHour is not None: 93 currentPrimeHour = self.primeTimeInfo.currentPrimeHour 94 return currentPrimeHour 95 96 def _IsDirectorInExecCorp(self, executorCorpID): 97 if session.allianceid is None: 98 return False 99 if IsNPC(session.corpid): 100 return False 101 if session.corpid != executorCorpID: 102 return False 103 if corpRoleDirector & session.corprole != corpRoleDirector: 104 return False 105 return True