def CreateWindow(self): self.primeTimeInfo = None topCont = Container(parent=self, height=24, align=uiconst.TOTOP, padding=const.defaultPadding) FillThemeColored(parent=topCont, colorType=uiconst.COLORTYPE_UIHEADER, opacity=0.15) EveLabelSmall( parent=topCont, text=GetByLabel('UI/Sovereignty/DefaultVulnerabilityTimeLabel'), align=uiconst.CENTERLEFT, left=const.defaultPadding) menuCont = Container(parent=topCont, align=uiconst.TORIGHT, width=18) self.primeTimeMenu = UtilMenu(parent=menuCont, align=uiconst.CENTERRIGHT, menuAlign=uiconst.TOPRIGHT, GetUtilMenu=self.PrimeTimeMenu) menuCont.display = False execCorpID = sm.GetService('alliance').GetAlliance( session.allianceid).executorCorpID timeTextLeft = const.defaultPadding if self._IsDirectorInExecCorp(execCorpID): timeTextLeft = 18 menuCont.display = True self.timeLabel = EveLabelSmall(parent=topCont, align=uiconst.CENTERRIGHT, left=timeTextLeft) uthread.new(self.UpdatePrimeInfo) self.sovDashBoard = SovDashboard(parent=self) self.sovDashBoard.CreateWindow()
def ApplyAttributes(self, attributes): CargoSlots.ApplyAttributes(self, attributes) self.getDroneMenuFunc = attributes.getDroneMenuFunc invController = self.GetInvController() iconName = invController.GetIconName() self.droneUtilMenu = UtilMenu(menuAlign=uiconst.TOPLEFT, parent=self, align=uiconst.TOPLEFT, GetUtilMenu=self.getDroneMenuFunc, texturePath=iconName, idx=0, iconSize=32, pos=(0, 0, 32, 32))
def ApplyAttributes(self, attributes): uicontrols.Window.ApplyAttributes(self, attributes) self.SetMinSize([256, 100]) self.SetTopparentHeight(0) self.SetScope('all') margin = const.defaultPadding scroll = uicontrols.Scroll(parent=self.sr.main, padding=const.defaultPadding) scroll.padTop = 20 scroll.Load(contentList=[], fixedEntryHeight=18, headers=[ localization.GetByLabel('UI/Common/DateWords/Time'), localization.GetByLabel('UI/Accessories/Log/Type'), localization.GetByLabel('UI/Accessories/Log/Message') ]) scroll.sr.id = 'logScroll' self.sr.scroll = scroll from eve.client.script.ui.control.utilMenu import UtilMenu self.settingMenu = UtilMenu( menuAlign=uiconst.TOPLEFT, parent=self.sr.main, align=uiconst.TOPLEFT, GetUtilMenu=self.GetNotificationsSettingsMenu, left=const.defaultPadding, label=localization.GetByLabel('UI/Accessories/Log/CombatSettings'), texturePath='res:/UI/Texture/Icons/38_16_229.png', closeTexturePath='res:/UI/Texture/Icons/38_16_230.png') self.filterMenu = UtilMenu( menuAlign=uiconst.TOPRIGHT, parent=self.sr.main, align=uiconst.TOPRIGHT, GetUtilMenu=self.GetLogFilterMenu, left=const.defaultPadding, width=20, height=20, iconSize=16, texturePath='res:/UI/Texture/Icons/38_16_205.png') self.localizedMessages = { 'error': localization.GetByLabel('UI/Accessories/Log/LogError'), 'warning': localization.GetByLabel('UI/Accessories/Log/LogWarn'), 'slash': localization.GetByLabel('UI/Accessories/Log/LogSlash'), 'combat': localization.GetByLabel('UI/Accessories/Log/LogCombat'), 'notify': localization.GetByLabel('UI/Accessories/Log/LogNotify'), 'question': localization.GetByLabel('UI/Accessories/Log/LogQuestion'), 'info': localization.GetByLabel('UI/Accessories/Log/LogInfo'), 'hint': localization.GetByLabel('UI/Accessories/Log/LogHint') } self.LoadAllMessages() self.timer = base.AutoTimer(1000, self.CheckMessages)
def AddColumnAuction(self): col = self.AddColumnContainer() col.OnMouseEnter = self.OnMouseEnter col.OnMouseExit = self.OnMouseExit col.OnClick = self.OnClick col.state = uiconst.UI_NORMAL col.GetMenu = self.GetMenu col.LoadTooltipPanel = self.LoadAuctionHintPanel bidCont = Container(parent=col, align=uiconst.TORIGHT, width=50) costCont = Container(parent=col, align=uiconst.TOALL, clipChildren=True) costText = FmtISK(self.auctionCost, 0) self.costLabel = EveLabelMedium(text=costText, parent=costCont, align=uiconst.CENTERLEFT, left=6) self.bidUtilMenu = UtilMenu(menuAlign=uiconst.TOPRIGHT, align=uiconst.CENTERLEFT, parent=bidCont, GetUtilMenu=self.BidOnTeamMenu, texturePath='res:/UI/Texture/Icons/73_16_50.png', left=2, label=GetByLabel('UI/Industry/Bid')) bidCont.width = self.bidUtilMenu.width + 10 self.bidUtilMenu.hint = GetByLabel('UI/Industry/BidBtnHint')
def ApplyAttributes(self, attributes): Window.ApplyAttributes(self, attributes) mainArea = self.GetMainArea() mainArea.padding = 6 self._selectedObject = None self.SetTopparentHeight(0) self._infoContainer = Container(parent=mainArea, align=uiconst.TOTOP, height=72) self.searchInput = SinglelineEdit(parent=self._infoContainer, align=uiconst.BOTTOMRIGHT, left=4, top=8, width=100, OnChange=self.OnSearchInputChange, hinttext='Search') self.searchInput.SetHistoryVisibility(False) self.searchInput.ShowClearButton() m = UtilMenu(menuAlign=uiconst.TOPRIGHT, parent=self._infoContainer, align=uiconst.TOPRIGHT, GetUtilMenu=self.SettingMenu) self._infoLabel = Label(parent=self._infoContainer, state=uiconst.UI_DISABLED, color=(1.0, 1.0, 1.0, 0.75), left=2) self.searchResultParent = ContainerAutoSize(parent=mainArea, align=uiconst.TOTOP_NOPUSH, padding=(26, -6, 4, 0), bgColor=(0.5, 0.5, 0.5, 1)) self.attributeScroll = Scroll(parent=mainArea, align=uiconst.TOBOTTOM, name='attributeScroll') self.attributeScroll.height = min(self.height / 2, max(72, settings.user.ui.Get('uitree_attributeScroll_height', 200))) settings.user.ui.Set('uitree_attributeScroll_height', self.attributeScroll.height) self.divider = Divider(align=uiconst.TOBOTTOM, parent=mainArea, height=11, state=uiconst.UI_NORMAL) self.divider.OnChange_ = self.OnDividerMove self.divider.OnChangeStart_ = self.OnDividerMoveStart Fill(parent=self.divider, align=uiconst.CENTER, pos=(0, 0, 20, 1)) self.scroll = Scroll(parent=mainArea, name='treeScroll') self._hiliteFrame = Fill(parent=uicore.desktop, align=uiconst.ABSOLUTE, color=(0, 1, 0, 0.3), idx=0, state=uiconst.UI_DISABLED) self._selectedFrame = Frame(parent=uicore.desktop, align=uiconst.ABSOLUTE, color=(0, 1, 0, 0.3), idx=0, state=uiconst.UI_DISABLED) self.ReloadUIRoots() uthread.new(self.UpdateInfo) self._keyDownCookie = uicore.uilib.RegisterForTriuiEvents([uiconst.UI_KEYDOWN], self.OnGlobalKeyDown)
def ConstructTopCont(self): self.topCont = Container(name='topCont', parent=self, align=uiconst.TOTOP, height=24) UtilMenu(parent=self.topCont, align=uiconst.CENTERLEFT, menuAlign=uiconst.BOTTOMLEFT, GetUtilMenu=self.GetSkillSettingsMenu, texturePath='res:/UI/Texture/SettingsCogwheel.png', width=16, height=16, iconSize=18) self.quickFilter = QuickFilterEdit(parent=self.topCont, align=uiconst.CENTERLEFT, width=80, left=18) self.quickFilter.ReloadFunction = self.QuickFilterReload btn = Button( parent=self.topCont, align=uiconst.CENTERRIGHT, label=GetByLabel( 'UI/CharacterSheet/CharacterSheetWindow/SkillTabs/OpenTrainingQueue' ), func=self.OpenSkillQueueWindow, name='characterSheetOpenTrainingQueue')
class CargoDroneSlots(CargoSlots): def ApplyAttributes(self, attributes): CargoSlots.ApplyAttributes(self, attributes) self.getDroneMenuFunc = attributes.getDroneMenuFunc invController = self.GetInvController() iconName = invController.GetIconName() self.droneUtilMenu = UtilMenu(menuAlign=uiconst.TOPLEFT, parent=self, align=uiconst.TOPLEFT, GetUtilMenu=self.getDroneMenuFunc, texturePath=iconName, idx=0, iconSize=32, pos=(0, 0, 32, 32)) def GetInvController(self): if self.controller.IsSimulated(): itemID = None else: itemID = self.controller.GetItemID() return invCtrl.ShipDroneBay(itemID) def _Update(self): CargoSlots._Update(self) if self.controller.IsSimulated(): self.droneUtilMenu.display = True else: self.droneUtilMenu.display = False def OnDropData(self, dragObj, nodes): if self.controller.IsSimulated(): self.AddSimulatedDrones(nodes) else: invCtrl.ShipDroneBay(util.GetActiveShip()).OnDropData(nodes) CargoSlots.OnDropData(self, dragObj, nodes) def OnClick(self, *args): if self.controller.IsSimulated(): self.droneUtilMenu.OnClick() else: uicore.cmd.OpenDroneBayOfActiveShip() def GetCapacityInfo(self, flag=None): return self.controller.GetDroneCapacity() def GetSimulatedCapacity(self): shipID = self.controller.GetItemID() return self.controller.dogmaLocation.GetCapacity( shipID, None, const.flagDroneBay) def AddSimulatedDrones(self, nodes): ghostFittingSvc = sm.GetService('ghostFittingSvc') for eachNode in nodes: try: typeID = eachNode.typeID or eachNode.rec.typeID if evetypes.GetCategoryID(typeID) == const.categoryDrone: ghostFittingSvc.FitDronesToShip(typeID) except Exception as e: pass
def SetUtilMenu(self, utilMenuFunc): from eve.client.script.ui.control.utilMenu import UtilMenu self.sr.label.left = 14 UtilMenu(menuAlign=uiconst.TOPLEFT, parent=self, align=uiconst.TOPLEFT, GetUtilMenu=utilMenuFunc, texturePath='res:/UI/Texture/Icons/73_16_50.png', pos=(const.defaultPadding, const.defaultPadding, 14, 14)) self.UpdateTabSize() self.sr.tabgroup.UpdateSizes()
def AddExportImportMenu(self): m = UtilMenu( menuAlign=uiconst.BOTTOMLEFT, parent=self, align=uiconst.BOTTOMLEFT, label=GetByLabel('UI/Fitting/FittingWindow/ImportAndExport'), labelAlign=uiconst.CENTERRIGHT, GetUtilMenu=self.GetExportImportMenu, texturePath='res:/ui/texture/icons/73_16_50.png', left=-8)
def CreateSystemPass(self, passNumber): def GetLocationsMenu(menuParent): passConfig = GetPassConfig()[passNumber] menuParent.AddHeader(text='Locations to visit') for groupId in (const.groupAsteroidBelt, const.groupStargate, const.groupStation): menuParent.AddCheckBox( text=cfg.invgroups.Get(groupId).groupName, checked=groupId in passConfig['locations'], callback=(ToggleLocationGroupForPass, passNumber, groupId)) menuParent.AddDivider() menuParent.AddHeader(text='Actions') menuParent.AddCheckBox(text='Nuke location', checked=passConfig['nuke'], callback=(ToggleNuke, passNumber)) passConfig = { 'locations': {const.groupAsteroidBelt}, 'nuke': False, 'enabled': passNumber == 1, 'minTime': 1 } GetPassConfig()[passNumber] = passConfig menuCont = Container(name='pass%d' % passNumber, parent=self.sr.main, align=uiconst.TOTOP, height=20, padLeft=4) cont = Container(parent=menuCont, width=100, align=uiconst.TOLEFT) Checkbox(parent=cont, text='Enable Pass %s' % passNumber, align=uiconst.CENTERLEFT, checked=passConfig['enabled'], callback=lambda checkbox: SetPass(checkbox, passNumber), width=200) cont = Container(parent=menuCont, width=100, align=uiconst.TOLEFT) EveLabelSmall(parent=cont, text='Min time (sec)', align=uiconst.CENTERRIGHT, left=4) SinglelineEdit( parent=menuCont, ints=(1, 999), OnChange=lambda textValue: SetPassMinTime(textValue, passNumber), setvalue=passConfig['minTime'], align=uiconst.TOLEFT, width=50) UtilMenu(menuAlign=uiconst.TOPRIGHT, parent=menuCont, align=uiconst.TOLEFT, GetUtilMenu=GetLocationsMenu, label='Options', texturePath='res:/UI/Texture/Icons/38_16_229.png', closeTexturePath='res:/UI/Texture/Icons/38_16_230.png')
def AddServiceWheel(self): serviceMenu = UtilMenu( menuAlign=uiconst.TOPLEFT, parent=self, align=uiconst.CENTERLEFT, pos=(self.uiLeft, -2, 16, 16), GetUtilMenu=self.GetServiceMenu, texturePath='res:/UI/Texture/SettingsCogwheel.png', iconSize=18, label=GetByLabel('UI/Structures/Browser/ServiceFilter')) self.uiLeft = serviceMenu.left + serviceMenu.width + 10
def ApplyAttributes(self, attributes): Container.ApplyAttributes(self, attributes) self.settingsObject = None self.settingMenu = UtilMenu( parent=self, align=uiconst.BOTTOMLEFT, GetUtilMenu=self.GetOpportunitySettings, texturePath='res:/UI/Texture/SettingsCogwheel.png', iconSize=18, pos=(0, 0, 18, 18)) self.settingMenu.OnMenuClosed = self.OnMenuClosed
def AddImportButton(self): if boot.region == 'optic': return self.dropCont.padLeft = 30 importMenu = UtilMenu( menuAlign=uiconst.TOPLEFT, parent=self.mainCont, align=uiconst.TOPLEFT, pos=(4, 0, 28, 28), GetUtilMenu=self.GetImportMenu, texturePath='res:/UI/Texture/Shared/pasteFrom.png', iconSize=28, hint=GetByLabel('UI/Market/MarketQuote/ImportShoppingListHint'))
def SetUtilMenu(self, utilMenuFunc): if self.sr.tab: self.sr.tab.SetUtilMenu(utilMenuFunc) else: self.sr.caption.left = 20 from eve.client.script.ui.control.utilMenu import UtilMenu utilMenu = UtilMenu( menuAlign=uiconst.TOPLEFT, parent=self.sr.captionParent, align=uiconst.TOPLEFT, GetUtilMenu=utilMenuFunc, texturePath='res:/UI/Texture/Icons/73_16_50.png', pos=(const.defaultPadding, 1, 14, 14))
def OnOpenView(self): self.ResetSelf() self.state = uiconst.UI_HIDDEN self.hudContainer = Container(name='hudContainer', parent=self, controller=self.controller, align=uiconst.CENTERBOTTOM, width=SHIP_UI_WIDTH, height=SHIP_UI_HEIGHT) self.overlayContainer = Container(parent=self.hudContainer, name='overlayContainer', pos=(0, 0, 256, 256), align=uiconst.CENTER, state=uiconst.UI_PICKCHILDREN, idx=0) self.ConstructOverlayContainer() if IsControllingStructure(): shipShape = StructureHUDShape(parent=self.hudContainer, align=uiconst.CENTER) else: shipShape = HUDShape(parent=self.hudContainer, align=uiconst.CENTER) self.shipuiMainShape = shipShape.shipuiMainShape self.capacitorContainer = CapacitorContainer(parent=self.hudContainer, align=uiconst.CENTER, top=-1, controller=self.controller) self.capacitorContainer.OnMouseDown = (self.OnShipMouseDown, self.capacitorContainer) self.capacitorContainer.OnMouseUp = (self.OnShipMouseUp, self.capacitorContainer) self.capacitorContainer.OnClick = self.OnToggleShipSelected heatPicker = Container(name='heatPicker', parent=self.hudContainer, align=uiconst.CENTER, width=160, height=160, pickRadius=43, state=uiconst.UI_NORMAL) self.heatGauges = HeatGauges(parent=heatPicker, align=uiconst.CENTERTOP, controller=self.controller) self.hpGauges = HPGauges(name='healthGauges', parent=self.hudContainer, align=uiconst.CENTER, pos=(0, -37, 148, 74), controller=self.controller) if IsControllingStructure(): ReleaseControlBtn(parent=self.hudContainer, top=29, align=uiconst.CENTERBOTTOM, itemID=self.controller.GetItemID(), func=sm.GetService('structureControl').Alight) else: self.speedGauge = SpeedGauge(parent=self.hudContainer, top=29, align=uiconst.CENTERBOTTOM, controller=self.controller) self.compass = Compass(parent=self.hudContainer, pickRadius=-1) self.shipSelectHilight = Container(name='navSelectHilight', parent=self.compass, align=uiconst.CENTER, state=uiconst.UI_DISABLED, width=206, height=206) self.ringSprite = Sprite(bgParent=self.shipSelectHilight, texturePath='res:/UI/Texture/classes/ShipUI/Fighters/selectionRingLarge.png') self.bracketSprite = Sprite(bgParent=self.shipSelectHilight, texturePath='res:/UI/Texture/classes/ShipUI/Fighters/selectionBracketLarge.png') self.shipSelectHilight.display = False self.slotsContainer = SlotsContainer(parent=self.hudContainer, pos=(SLOTS_CONTAINER_LEFT, SLOTS_CONTAINER_TOP, SLOTS_CONTAINER_WIDTH, SLOTS_CONTAINER_HEIGHT), align=uiconst.CENTERLEFT, state=uiconst.UI_PICKCHILDREN, controller=self.controller) self.stanceButtons = StanceButtons(parent=self.hudContainer, pos=(SLOTS_CONTAINER_LEFT + 8, 1, 40, 120), name='stanceButtons', align=uiconst.CENTERLEFT, state=uiconst.UI_PICKCHILDREN, buttonSize=36) self.hudButtons = HudButtonsCont(parent=self.hudContainer, align=uiconst.CENTERRIGHT, left=690, top=15) self.ewarCont = EwarContainer(parent=self, align=uiconst.CENTERBOTTOM, top=SHIP_UI_HEIGHT, height=EWAR_CONTAINER_HEIGHT, width=EWAR_CONTAINER_WIDTH) self.sr.shipAlertContainer = ShipAlertContainer(parent=self.hudContainer) self.sr.indicationContainer = Container(parent=self.hudContainer, name='indicationContainer', align=uiconst.CENTERTOP, pos=(0, 0, 400, 50)) self.sr.safetyButton = SafetyButton(parent=self.overlayContainer, left=40, top=28) self.ConstructReadoutCont() self.settingsMenu = UtilMenu(menuAlign=uiconst.BOTTOMLEFT, parent=self.optionsCont, align=uiconst.TOPLEFT, GetUtilMenu=self.GetHUDOptionMenu, pos=(0, 0, 16, 16), texturePath='res:/UI/Texture/Icons/73_16_50.png', hint=GetByLabel('UI/Inflight/Options')) self.moduleToggleBtn = ButtonIcon(name='moduleToggleBtn', parent=self.moduleToggleCont, align=uiconst.TOPLEFT, width=24, height=24, iconSize=24, texturePath='res:/UI/Texture/classes/ShipUI/Fighters/toggleModules_Up.png', downTexture='res:/UI/Texture/classes/ShipUI/Fighters/toggleModules_Down.png', hoverTexture='res:/UI/Texture/classes/ShipUI/Fighters/toggleModules_Over.png', func=self.OnToggleHudModules) self.moduleToggleBtn.display = False self.DrawFighters() self.hudContainer.state = uiconst.UI_PICKCHILDREN self.UpdatePosition() self.shipuiReady = True self.SetupShip()
def Layout(self): menuBar = ContainerAutoSize(parent=self, align=uiconst.TOTOP, padBottom=4) UtilMenu(parent=menuBar, align=uiconst.CENTERLEFT, menuAlign=uiconst.BOTTOMLEFT, GetUtilMenu=self.GetSettingsMenu, texturePath='res:/UI/Texture/SettingsCogwheel.png', width=16, height=16, iconSize=18) self.filter = QuickFilterEdit(parent=menuBar, align=uiconst.CENTERLEFT, left=18, width=150) self.filter.ReloadFunction = self.LoadPanel self.scroll = Scroll(parent=self, align=uiconst.TOALL)
def _AddGuestPanel(self): self.guestsPanel = Container(name=GUESTSPANEL, parent=self.sr.main, padding=const.defaultPadding) self.quickFilter = QuickFilterEdit(name='quickFilterEdit', parent=self.guestsPanel) self.quickFilter.ReloadFunction = lambda: self.ShowGuests() self.guestScroll = BasicDynamicScroll(parent=self.guestsPanel, padTop=const.defaultPadding + self.quickFilter.height) guestSettingsMenu = UtilMenu( menuAlign=uiconst.TOPRIGHT, parent=self.guestsPanel, align=uiconst.TOPRIGHT, GetUtilMenu=self.SettingMenu, texturePath='res:/UI/Texture/SettingsCogwheel.png', width=18, height=18, iconSize=18)
def ApplyAttributes(self, attributes): Container.ApplyAttributes(self, attributes) self.jobData = attributes.jobData if self.jobData: self.jobData.on_updated.connect(self.OnJobUpdated) self.jobData.on_errors.connect(self.OnJobErrors) self.oldJobData = None self.UpdateColor() self.bgGradientThread = None self.topCont = Container(name='topCont', parent=self, align=uiconst.TOTOP, height=18) self.mainCont = Container(parent=self, align=uiconst.TOTOP, height=400) UtilMenu(menuAlign=uiconst.TOPLEFT, parent=self.topCont, align=uiconst.TOPLEFT, GetUtilMenu=self.GetUtilMenuSettings, texturePath='res:/UI/Texture/SettingsCogwheel.png', iconSize=18, pos=(4, 0, 18, 18)) self.topContLabel = EveHeaderMedium(name='topContLabel', parent=self.topCont, align=uiconst.TOPLEFT, top=2, left=24) self.blueprintCenter = BlueprintCenter(parent=self.mainCont, jobData=self.jobData) self.inputsCont = MaterialGroups(parent=self.mainCont, jobData=self.jobData, padLeft=4) self.outputCont = OutputCont(parent=self.mainCont, padRight=6, jobData=self.jobData) self.ConstructBackground() self.UpdateState() self.AnimEntry()
def OnTabSelect(self): if self.isInitialized: self.UpdateOwnerCombo() self.UpdateScroll() return self.isInitialized = True self.topPanel = Container(name='topPanel', parent=self, align=TOTOP, height=20, padding=(0, 6, 0, 6)) self.scroll = Scroll(parent=self, id='BlueprintBrowser') self.scroll.OnSelectionChange = self.OnScrollSelectionChange self.scroll.OnKeyDown = self.OnScrollKeyDown self.scroll.OnChar = self.OnScrollChar utilMenuCont = Container(align=uiconst.TOLEFT, parent=self.topPanel, width=20) UtilMenu(menuAlign=uiconst.BOTTOMLEFT, parent=utilMenuCont, align=uiconst.CENTERLEFT, GetUtilMenu=self.GetSettingsMenu, texturePath='res:/UI/Texture/SettingsCogwheel.png', width=16, height=16, iconSize=18) self.ownerCombo = Combo(name='ownerCombo', parent=self.topPanel, align=uiconst.TOLEFT, callback=self.OnOwnerCombo, width=120) self.facilityCombo = Combo(name='facilityCombo', parent=self.topPanel, align=uiconst.TOLEFT, callback=self.OnFacilityCombo, width=200, padLeft=5) self.invLocationCombo = Combo(name='invLocationCombo', parent=self.topPanel, align=uiconst.TOLEFT, callback=self.OnInvLocationCombo, padLeft=5, width=120, settingsID='IndustryBlueprintBrowserInvLocation') self.blueprintTypeCombo = Combo(name='blueprintTypeCombo', parent=self.topPanel, align=uiconst.TOLEFT, callback=self.OnBlueprintTypeCombo, padLeft=5, width=100, settingsID='IndustryBlueprintBrowserType', options=self.GetBlueprintTypeComboOptions()) self.categoryGroupCombo = Combo(name='categoryGroupCombo ', parent=self.topPanel, align=uiconst.TOLEFT, callback=self.OnCategoryGroupCombo, padLeft=5, width=100) self.viewModeButtons = ViewModeButtons(parent=self.topPanel, align=uiconst.TORIGHT, controller=self, settingsID='IndustryBlueprintBrowserViewMode') self.filterEdit = QuickFilterEdit(name='searchField', parent=self.topPanel, hinttext=localization.GetByLabel('UI/Inventory/Filter'), maxLength=64, align=uiconst.TORIGHT, padRight=4) self.filterEdit.ReloadFunction = self.OnFilterEdit self.UpdateOwnerCombo() self.UpdateBlueprintTypeCombo() self.UpdateScroll()
def OnSettingsMenuClosed(self, *args): UtilMenu.OnMenuClosed(self.headerButton, *args) uthread.new(self.StoreSettingChanges_thread)
class FormAlliancesSovereignty(Container): def CreateWindow(self): self.primeTimeInfo = None topCont = Container(parent=self, height=24, align=uiconst.TOTOP, padding=const.defaultPadding) FillThemeColored(parent=topCont, colorType=uiconst.COLORTYPE_UIHEADER, opacity=0.15) EveLabelSmall( parent=topCont, text=GetByLabel('UI/Sovereignty/DefaultVulnerabilityTimeLabel'), align=uiconst.CENTERLEFT, left=const.defaultPadding) menuCont = Container(parent=topCont, align=uiconst.TORIGHT, width=18) self.primeTimeMenu = UtilMenu(parent=menuCont, align=uiconst.CENTERRIGHT, menuAlign=uiconst.TOPRIGHT, GetUtilMenu=self.PrimeTimeMenu) menuCont.display = False execCorpID = sm.GetService('alliance').GetAlliance( session.allianceid).executorCorpID timeTextLeft = const.defaultPadding if self._IsDirectorInExecCorp(execCorpID): timeTextLeft = 18 menuCont.display = True self.timeLabel = EveLabelSmall(parent=topCont, align=uiconst.CENTERRIGHT, left=timeTextLeft) uthread.new(self.UpdatePrimeInfo) self.sovDashBoard = SovDashboard(parent=self) self.sovDashBoard.CreateWindow() def UpdatePrimeInfo(self): self.primeTimeInfo = sm.GetService('alliance').GetPrimeTimeInfo() self.UpdateText() def UpdateText(self): if self.primeTimeInfo is None or self.primeTimeInfo.currentPrimeHour is None: text = GetByLabel('UI/Common/Unknown') else: newPrimeHour = self.primeTimeInfo.newPrimeHour validAfter = self.primeTimeInfo.newPrimeHourValidAfter now = blue.os.GetWallclockTime() if newPrimeHour is not None and now < validAfter: text = GetByLabel( 'UI/Sovereignty/VulnerabilityTimeWithFutureChange', hour=self.primeTimeInfo.currentPrimeHour, newHour=self.primeTimeInfo.newPrimeHour, validAfterDate=self.primeTimeInfo.newPrimeHourValidAfter) else: currentPrimeHour = self.GetCurrentPrimeHour() text = GetByLabel('UI/Sovereignty/VulnerabilityTime', hour=currentPrimeHour) self.timeLabel.SetText(text) def PrimeTimeMenu(self, menuParent): headerCont = menuParent.AddContainer(align=uiconst.TOTOP, height=20, padding=const.defaultPadding) EveLabelLargeBold(parent=headerCont, text=GetByLabel('UI/Sovereignty/SetSovereigntyHour'), align=uiconst.TOTOP) menuParent.AddSpace(height=10) text = menuParent.AddText( GetByLabel('UI/Sovereignty/SetNewVulnerabilityTimeDescription')) text.GetEntryWidth = lambda mc=text: 250 cont = menuParent.AddContainer(align=uiconst.TOTOP, height=60, padding=const.defaultPadding) myCont = Container(name='myCont', parent=cont, align=uiconst.TOTOP, height=22, padTop=10) currentPrimeHour = self.GetCurrentPrimeHour() self.primeTimeCombo = Combo(name='primeTimeCombo', parent=myCont, options=self.GetTimeComboOptions(), select=currentPrimeHour, width=150) setBtn = Button(name='SetPrimeTimeBtn', align=uiconst.TOPRIGHT, parent=myCont, label=GetByLabel('UI/Common/CommandSet'), func=self.SetPrimeTime) def SetPrimeTime(self, *args): primeTimeNewValue = self.primeTimeCombo.GetValue() if self.primeTimeInfo and self.primeTimeInfo.newPrimeHour: newPrimeHour = self.primeTimeInfo.newPrimeHour validAfter = self.primeTimeInfo.newPrimeHourValidAfter newerPrimeHour = blue.os.GetWallclockTime( ) + CHANGE_PRIMETIME_DELAY if eve.Message( 'updateNewPrimeTime', { 'currentPendingTime': '%s:00' % newPrimeHour, 'currentPendingDate': FmtDate(validAfter, 'ss'), 'newPendingTime': '%s:00' % primeTimeNewValue, 'newPendingDate': FmtDate(newerPrimeHour, 'ss') }, uiconst.YESNO) != uiconst.ID_YES: return sm.GetService('alliance').SetPrimeHour(primeTimeNewValue) self.UpdatePrimeInfo() self.primeTimeMenu.CloseMenu() def GetTimeComboOptions(self): return [(GetByLabel('UI/Sovereignty/VulnerabilityTime', hour=i), i) for i in xrange(24)] def GetCurrentPrimeHour(self): currentPrimeHour = 0 if self.primeTimeInfo and self.primeTimeInfo.currentPrimeHour is not None: currentPrimeHour = self.primeTimeInfo.currentPrimeHour return currentPrimeHour def _IsDirectorInExecCorp(self, executorCorpID): if session.allianceid is None: return False if IsNPC(session.corpid): return False if session.corpid != executorCorpID: return False if corpRoleDirector & session.corprole != corpRoleDirector: return False return True
def ApplyAttributes(self, attributes): self.viewState = sm.GetService('viewState') if not settings.user.ui.Get('stationservicebtns', 1): minWidth = BIGBUTTONSIZE + (BIGBUTTONSIZE + BUTTONGAP) * 3 + 14 minHeight = 495 else: minWidth = SMALLBUTTONSIZE + (SMALLBUTTONSIZE + BUTTONGAP) * 5 + 10 minHeight = 470 self.default_minSize = (minWidth, minHeight) Window.ApplyAttributes(self, attributes) self.stationSvc = sm.GetService('station') self.guestScroll = None self.sr.serviceAccessCache = {} self.SetWndIcon(None) self.HideHeader() self.scope = 'station' self.MakeUnKillable() self.MakeUnstackable() self.SetTopparentHeight(0) main = self.sr.main main.clipChildren = True self.corpLogoParent = Container(name='corpLogoParent', align=uiconst.TOTOP, height=160, parent=main) self.corpName = CaptionLabel(parent=main, align=uiconst.TOTOP, name='corpName', uppercase=False) self.undockparent = Container(name='undockparent', align=uiconst.TOTOP, height=78, parent=main) self.AddCQButton(parent=self.undockparent) self.AddUndockButton(parent=self.undockparent) EveLabelMedium(text=localization.GetByLabel('UI/Station/StationServices'), align=uiconst.TOTOP, parent=main, bold=True, padding=(6, 6, 6, 0)) self.serviceButtons = FlowContainer(name='serviceButtons', align=uiconst.TOTOP, parent=main, contentSpacing=(BUTTONGAP, BUTTONGAP), padding=(6, 6, 3, 6)) btnGroup = ToggleButtonGroup(name='btnGroup', parent=main, align=uiconst.TOTOP, height=32, padding=(6, 6, 6, 6), idx=-1, callback=self.OnButtonGroupSelection) self.mainButtonGroup = btnGroup self.guestsPanel = Container(name=GUESTSPANEL, parent=main, padding=const.defaultPadding) self.quickFilter = QuickFilterEdit(name='quickFilterEdit', parent=self.guestsPanel) self.quickFilter.ReloadFunction = lambda : self.ShowGuests() self.guestScroll = BasicDynamicScroll(parent=self.guestsPanel, padTop=const.defaultPadding + self.quickFilter.height) guestSettingsMenu = UtilMenu(menuAlign=uiconst.TOPRIGHT, parent=self.guestsPanel, align=uiconst.TOPRIGHT, GetUtilMenu=self.SettingMenu, texturePath='res:/UI/Texture/SettingsCogwheel.png', width=18, height=18, iconSize=18) self.userType = settings.user.ui.Get('guestCondensedUserList', False) self.agentsPanel = Container(name=AGENTSPANEL, parent=main, padding=const.defaultPadding) self.agentFinderBtn = Button(label=localization.GetByLabel('UI/AgentFinder/AgentFinder'), parent=self.agentsPanel, align=uiconst.CENTERTOP, func=uicore.cmd.OpenAgentFinder) self.agentScroll = Scroll(parent=self.agentsPanel, padTop=const.defaultPadding + self.agentFinderBtn.height) self.officesPanel = Container(name=OFFICESPANEL, parent=main, padding=const.defaultPadding) self.officesButtons = FlowContainer(name='officesButtons', align=uiconst.TOTOP, parent=self.officesPanel, contentSpacing=(4, 4), centerContent=True) self.officesScroll = Scroll(parent=self.officesPanel, padTop=const.defaultPadding) agentsButton = btnGroup.AddButton(AGENTSPANEL, '<center>' + localization.GetByLabel('UI/Station/Lobby/Agents'), self.agentsPanel, btnClass=LobbyToggleButtonGroupButton, hint=localization.GetByLabel('Tooltips/StationServices/AgentsTab_descrtiption')) agentsButton.name = 'stationInformationTabAgents' guestsButton = btnGroup.AddButton(GUESTSPANEL, '<center>' + localization.GetByLabel('UI/Station/Lobby/Guests'), self.guestsPanel, btnClass=LobbyToggleButtonGroupButton, hint=localization.GetByLabel('Tooltips/StationServices/GuestsTab_description')) guestsButton.counter = CounterBox(parent=guestsButton, align=uiconst.TOPRIGHT, left=2, top=-5) self.guestsButton = guestsButton btnGroup.AddButton(OFFICESPANEL, '<center>' + localization.GetByLabel('UI/Station/Lobby/Offices'), self.officesPanel, btnClass=LobbyToggleButtonGroupButton, hint=localization.GetByLabel('Tooltips/StationServices/OfficesTab_description')) activePanel = settings.user.ui.Get('stationsLobbyTabs', AGENTSPANEL) if settings.char.windows.Get('dockshipsanditems', 0): self.inventoryPanel = Container(name=INVENTORYPANEL, parent=main) self.sr.shipsContainer = Container(parent=self.inventoryPanel, state=uiconst.UI_HIDDEN, padding=const.defaultPadding) self.sr.itemsContainer = Container(parent=self.inventoryPanel, state=uiconst.UI_HIDDEN, padding=const.defaultPadding) tabs = [[localization.GetByLabel('UI/Station/Ships'), self.sr.shipsContainer, self, 'lobby_ships'], [localization.GetByLabel('UI/Station/Items'), self.sr.itemsContainer, self, 'lobby_items']] self.inventoryTabs = TabGroup(name='inventoryPanel', parent=self.inventoryPanel, idx=0) self.inventoryTabs.Startup(tabs, 'lobbyInventoryPanel', autoselecttab=True, UIIDPrefix='lobbyInventoryPanelTab') self.invButton = btnGroup.AddButton(INVENTORYPANEL, '<center>' + localization.GetByLabel('UI/Station/Lobby/Hangars'), self.inventoryPanel, btnClass=LobbyToggleButtonGroupButton, hint='<b>%s</b><br>%s' % (localization.GetByLabel('Tooltips/StationServices/Hangars'), localization.GetByLabel('Tooltips/StationServices/Hangars_description'))) elif activePanel == INVENTORYPANEL: activePanel = AGENTSPANEL btnGroup.SelectByID(activePanel) myDefaultView = 'hangar' if session.userid % 2 == 1 else 'station' curView = collections.namedtuple('FakeViewInfo', ['name'])(settings.user.ui.Get('defaultDockingView', myDefaultView)) self.OnPrimaryViewChanged(curView, curView) self.LoadOwnerInfo() self.LoadServiceButtons() if self.destroyed: return sm.RegisterNotify(self) self.UpdateGuestTabText()
def OnMenuClosed(self, *args): UtilMenu.OnMenuClosed(self.settingMenu, *args) uthread.new(self.StoreChanges_thread)
class AuctionEntry(BaseTeamEntry): default_name = 'AuctionEntry' def ApplyAttributes(self, attributes): BaseTeamEntry.ApplyAttributes(self, attributes) self.auctionCost = self.node.auctionCost self.AddColumnAuction() self.pathFinder = sm.GetService('clientPathfinderService') self.teamHandlerClient = sm.GetService('industryTeamSvc') self.minAmount = 0 def AddColumnAuction(self): col = self.AddColumnContainer() col.OnMouseEnter = self.OnMouseEnter col.OnMouseExit = self.OnMouseExit col.OnClick = self.OnClick col.state = uiconst.UI_NORMAL col.GetMenu = self.GetMenu col.LoadTooltipPanel = self.LoadAuctionHintPanel bidCont = Container(parent=col, align=uiconst.TORIGHT, width=50) costCont = Container(parent=col, align=uiconst.TOALL, clipChildren=True) costText = FmtISK(self.auctionCost, 0) self.costLabel = EveLabelMedium(text=costText, parent=costCont, align=uiconst.CENTERLEFT, left=6) self.bidUtilMenu = UtilMenu(menuAlign=uiconst.TOPRIGHT, align=uiconst.CENTERLEFT, parent=bidCont, GetUtilMenu=self.BidOnTeamMenu, texturePath='res:/UI/Texture/Icons/73_16_50.png', left=2, label=GetByLabel('UI/Industry/Bid')) bidCont.width = self.bidUtilMenu.width + 10 self.bidUtilMenu.hint = GetByLabel('UI/Industry/BidBtnHint') def BidOnTeamMenu(self, menuParent): cont = menuParent.AddContainer(align=uiconst.TOTOP, padding=const.defaultPadding) cont.GetEntryWidth = lambda mc = cont: 300 topCont = Container(parent=cont, height=20, align=uiconst.TOTOP) self.searchCont = Container(parent=topCont) self.resultCont = Container(parent=topCont) self.resultCont.display = False self.systemLabel = EveLabelMediumBold(parent=self.resultCont, left=2, top=4) self.searchEdit = SinglelineEdit(parent=self.searchCont, align=uiconst.TOALL, hinttext=GetByLabel('UI/Industry/SearchForSystem'), width=0, top=0) self.searchEdit.OnReturn = lambda *args: self.SearchForLocation(self.searchEdit, *args) self.searchEdit.OnTab = lambda *args: self.SearchForLocation(self.searchEdit, *args) self.searchEdit.displayHistory = False ButtonIcon(parent=self.resultCont, align=uiconst.CENTERRIGHT, width=16, iconSize=16, texturePath='res:/UI/Texture/Icons/73_16_210.png', hint=GetByLabel('UI/Inventory/Clear'), func=self.ClearSystemSearch) self.resultScroll = Scroll(parent=cont, id='ResultScroll', align=uiconst.TOTOP, height=70) self.resultScroll.display = False Container(parent=cont, height=8, align=uiconst.TOTOP) self.bidHint = EveLabelMedium(parent=cont, align=uiconst.TOTOP, padding=(2, 4, 2, 4)) bottomCont = Container(parent=cont, height=20, align=uiconst.TOTOP, padBottom=4) self.bidButton = Button(parent=bottomCont, label=GetByLabel('UI/Industry/Bid'), align=uiconst.TORIGHT, func=self.BidOnTeam) self.bidButton.OnMouseHover = self.BidHint self.bidButton.Disable() self.bidAmountEdit = SinglelineEdit(parent=bottomCont, align=uiconst.TOALL, width=0, floats=[0, 100000000000L, 0], padRight=4, top=0, hinttext='Enter amount') self.bidAmountEdit.OnReturn = self.BidOnTeam def BidHint(self): if self.bidButton.disabled: if self.searchEdit.GetValue(): self.bidButton.hint = GetByLabel('UI/Industry/BidBtnSearchHint') else: self.bidButton.hint = '' def BidOnTeam(self, *args): if not self.searchedSystem: return if self.IsUnreachable(): self.bidAmountEdit.SetValue('') self.bidHint.text = GetByLabel('UI/Industry/UnreachableSystem') return amount = self.bidAmountEdit.GetValue() if not self.HasSolarSystemBidForAuctionID() and amount <= self.minAmount: self.bidAmountEdit.SetValue('') self.bidHint.text = GetByLabel('UI/Industry/TeamBidTooLow', minAmount=FmtAmt(self.minAmount, showFraction=0)) return self.teamHandlerClient.BidOnTeam(self.team.teamID, self.searchedSystem, amount) self.costLabel.text = self.GetForcedAuctionCost() self.bidUtilMenu.CloseMenu() def SearchForLocation(self, edit, *args): searchText = edit.GetValue() if not searchText or searchText == '': return groupIDList = [const.searchResultSolarSystem, const.searchResultWormHoles] searchResult = QuickSearch(searchText.strip(), groupIDList) noOfResults = len(searchResult) if noOfResults == 1: self.ConfirmSystem(searchResult[0]) elif noOfResults: self.resultScroll.display = True scrollList = self.GetScrollList(searchResult) self.resultScroll.LoadContent(contentList=scrollList) else: edit.SetHintText(GetByLabel('UI/Station/BountyOffice/NoOneFound')) def LoadAuctionHintPanel(self, tooltipPanel, *args): tooltipPanel.LoadGeneric3ColumnTemplate() tooltipPanel.AddLabelLarge(text=GetByLabel('UI/Industry/SystemBidList'), colSpan=tooltipPanel.columns, align=uiconst.CENTER) tooltipPanel.AddSpacer(colSpan=tooltipPanel.columns, width=0, height=2) topSystems = self.GetTopSystems() if topSystems: for i, (amount, solarSystemID) in enumerate(topSystems): if i > 2: break systemName = self.FormatSystemName(solarSystemID) systemLabel = '%i %s' % (i + 1, systemName) tooltipPanel.AddLabelSmall(text=systemLabel, colSpan=1) tooltipPanel.AddSpacer(width=10, height=0) tooltipPanel.AddLabelSmall(text=FmtISK(amount, 0), colSpan=1, align=uiconst.TORIGHT) myBids = self.GetMyBids() if myBids: tooltipPanel.AddSpacer(colSpan=tooltipPanel.columns, width=0, height=6) tooltipPanel.AddLabelLarge(text=GetByLabel('UI/Industry/MyBidList'), colSpan=tooltipPanel.columns, align=uiconst.CENTER) tooltipPanel.AddSpacer(colSpan=tooltipPanel.columns, width=0, height=2) for solarSystemID, amount in myBids: systemName = self.FormatSystemName(solarSystemID) tooltipPanel.AddLabelSmall(text=systemName, colSpan=1) tooltipPanel.AddSpacer(width=10, height=0) tooltipPanel.AddLabelSmall(text=FmtISK(amount, 0), colSpan=1, align=uiconst.TORIGHT) def GetTopSystems(self): bids = self.GetBids() return bids.GetRankedBids() def GetMyBids(self): bids = self.GetBids() myBids = GetMyBidsBySolarSystem(session.charid, bids) if myBids: return sorted(myBids.iteritems(), key=itemgetter(1), reverse=True) def GetScrollList(self, results): scrollList = [] for solarSystemID in results: data = util.KeyVal() data.label = self.FormatSystemName(solarSystemID) data.OnDblClick = self.DblClickEntry data.solarSystemID = solarSystemID entry = listentry.Get('Generic', data) scrollList.append(entry) return scrollList def FormatSystemName(self, solarSystemID): systemName = cfg.evelocations.Get(solarSystemID).name secStatus = self.GetSecurityLabel(solarSystemID) return '%s %s' % (systemName, secStatus) def DblClickEntry(self, entry, *args): solarSystemID = entry.sr.node.solarSystemID if solarSystemID: self.ConfirmSystem(solarSystemID) def ConfirmSystem(self, solarSystemID): self.resultScroll.display = False self.searchCont.display = False self.resultCont.display = True self.searchEdit.SetValue('') self.searchedSystem = solarSystemID self.systemLabel.text = self.FormatSystemName(solarSystemID) if self.IsUnreachable(): self.bidHint.text = GetByLabel('UI/Industry/UnreachableSystem') elif not self.HasSolarSystemBidForAuctionID(): self.minAmount = GetDistanceCost(self.pathFinder, self.team.solarSystemID, solarSystemID) self.bidHint.text = GetByLabel('UI/Industry/TeamMinBid', minAmount=FmtAmt(self.minAmount, showFraction=0)) self.bidButton.Enable() uicore.registry.SetFocus(self.bidAmountEdit) def ClearSystemSearch(self, *args): self.searchedSystem = None self.resultCont.display = False self.systemLabel.text = '' self.bidHint.text = '' self.bidHint.height = 0 self.searchCont.display = True self.bidButton.Disable() def GetForcedAuctionCost(self): return FmtISK(GetHighestBid(self.GetBids()), 0) def HasSolarSystemBidForAuctionID(self): return self.teamHandlerClient.HasSolarSystemBidForAuctionID(self.team.teamID, self.searchedSystem) def IsUnreachable(self): return bool(not util.IsWormholeSystem(self.searchedSystem) and self.pathFinder.GetJumpCount(self.team.solarSystemID, self.searchedSystem) > 1000) @staticmethod def GetDefaultColumnWidth(): return {GetByLabel('UI/Industry/Team'): 160, GetByLabel('UI/Common/LocationTypes/System'): 80, GetByLabel('UI/Common/Jumps'): 50, GetByLabel('UI/Common/Security'): 55, GetByLabel('UI/Industry/Bonuses'): 310, GetByLabel('UI/Industry/Salary'): 50, GetByLabel('UI/Industry/AuctionEnds'): 110, GetByLabel('UI/Industry/Auction'): 110} @staticmethod def GetHeaders(): return (GetByLabel('UI/Industry/Team'), GetByLabel('UI/Common/LocationTypes/System'), GetByLabel('UI/Common/Jumps'), GetByLabel('UI/Common/Security'), GetByLabel('UI/Industry/Activity'), GetByLabel('UI/Industry/Bonuses'), GetByLabel('UI/Industry/Salary'), GetByLabel('UI/Industry/AuctionEnds'), GetByLabel('UI/Industry/Auction')) @staticmethod def GetColumnSortValues(teamData, teamName, bonusSum, expiryTime, teamCost, auctionCost): return (teamName, cfg.evelocations.Get(teamData.team.solarSystemID).name, sm.GetService('clientPathfinderService').GetJumpCountFromCurrent(teamData.team.solarSystemID), sm.GetService('map').GetSecurityStatus(teamData.team.solarSystemID), teamData.team.activity, bonusSum, teamCost, expiryTime, auctionCost) def GetBids(self): return self.teamHandlerClient.GetBids(self.team.teamID) def GetQAMenu(self): return [['QA: Expire Auction', self.GMExpireAuction, [self.team.teamID]], ['QA: Print Bids', self.ShowBids, []], ['QA: Set Expiry time', self.SetExpiryTime]] def SetExpiryTime(self): ret = uiutil.NamePopup(caption='Set Expiry Time', label='Type in Expiry Time', setvalue=util.FmtDate(self.node.expiryTime)) if ret is None: return newTime = util.ParseDateTime(ret) self.teamHandlerClient.GMSetAuctionExpiryTime(self.team.teamID, newTime)