mining_scan_buttons.py (6223B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\oremining\mining_scan_buttons.py 2 import appConst 3 import carbonui 4 import carbonui.text.styles 5 import dogma.const as dogma_const 6 import eveicon 7 import evelink.client 8 import evetypes 9 from carbon.common.script.sys.serviceManager import ServiceManager 10 from carbonui import uiconst, PickState, TextColor, Align 11 from carbonui.control.contextMenu.menuData import MenuData 12 from carbonui.loggers.buttonLogger import log_button_clicked 13 from carbonui.primitives.containerAutoSize import ContainerAutoSize 14 from carbonui.primitives.gradientSprite import GradientSprite 15 from carbonui.uiconst import OutputMode 16 from carbonui.uicore import uicore 17 from eve.client.script.dogma import dogma_signals 18 from eve.client.script.ui import eveColor 19 from eve.client.script.ui.inflight.mining_scan_results_window import MiningScanResultsWindow 20 from eve.client.script.ui.inflight.shipHud.leftSideButton import LeftSideButton 21 from eve.client.script.ui.shared.ledger.ledgerWnd import LedgerWindow 22 from localization import GetByLabel 23 from mining import MiningScan 24 from mining.client import mining_signals, mining_util 25 from mining.client.mining_overlay_controller import MiningOverlayController 26 from uihider import UiHiderMixin 27 from uihighlighting.uniqueNameConst import UNIQUE_NAME_MINING_SCAN_BTN 28 29 class MiningScanButtons(UiHiderMixin, ContainerAutoSize): 30 uniqueUiName = UNIQUE_NAME_MINING_SCAN_BTN 31 default_padLeft = 8 32 33 def __init__(self, **kwargs): 34 super(MiningScanButtons, self).__init__(**kwargs) 35 LeftSideButtonMiningScan(parent=self, padLeft=2) 36 37 38 class LeftSideButtonMiningScan(LeftSideButton): 39 default_texturePath = eveicon.mining_overlay_toggle_default 40 cmdName = 'CmdMiningScan' 41 analyticID = 'MiningScanButton' 42 43 def __init__(self, **kwargs): 44 super(LeftSideButtonMiningScan, self).__init__(**kwargs) 45 self.update_icon() 46 self.connect_signals() 47 48 def Close(self): 49 super(LeftSideButtonMiningScan, self).Close() 50 self.disconnect_signals() 51 52 def connect_signals(self): 53 mining_signals.on_mining_overlay_enabled.connect(self.update) 54 mining_signals.on_mining_overlay_disabled.connect(self.update) 55 mining_signals.on_mining_scan_effect_started.connect(self.on_mining_scan_effect_started) 56 mining_signals.on_mining_scan_effect_completed.connect(self.on_mining_scan_effect_completed) 57 dogma_signals.on_attribute_changed.connect(self.on_dogma_attribute_changed) 58 59 def disconnect_signals(self): 60 mining_signals.on_mining_overlay_enabled.disconnect(self.update) 61 mining_signals.on_mining_overlay_disabled.disconnect(self.update) 62 mining_signals.on_mining_scan_effect_started.disconnect(self.on_mining_scan_effect_started) 63 mining_signals.on_mining_scan_effect_completed.disconnect(self.on_mining_scan_effect_completed) 64 dogma_signals.on_attribute_changed.disconnect(self.on_dogma_attribute_changed) 65 66 def on_mining_scan_effect_started(self): 67 self.SetActive() 68 uicore.animations.FadeTo(self.blinkBG, 0.0, 0.9, duration=1.6, loops=uiconst.ANIM_REPEAT, curveType=uiconst.ANIM_WAVE, callback=self._BlinkFadeOut) 69 70 def on_mining_scan_effect_completed(self): 71 self._BlinkFadeOut() 72 73 def on_dogma_attribute_changed(self, item, attribute_id, value, old_value): 74 if item.itemID == session.shipid and attribute_id == dogma_const.attributeMiningScannerUpgrade: 75 self.update_icon() 76 77 def update_icon(self): 78 tier = mining_util.get_current_ship_mining_scanner_upgrade_tier() 79 if tier == MiningScan.TIER_2: 80 texture_path = eveicon.mining_overlay_toggle_local 81 elif tier == MiningScan.TIER_3: 82 texture_path = eveicon.mining_overlay_toggle_fleet_shared 83 else: 84 texture_path = eveicon.mining_overlay_toggle_default 85 self.icon.texturePath = texture_path 86 87 def OnClick(self, *args): 88 LeftSideButton.OnClick(self) 89 uicore.cmd.GetCommandAndExecute(self.cmdName) 90 log_button_clicked(self) 91 92 def update(self, *args): 93 if MiningOverlayController.get_instance().is_active: 94 self.SetActive() 95 else: 96 self.SetInactive() 97 self._BlinkFadeOut() 98 99 def GetMenu(self): 100 m = MenuData() 101 controller = MiningOverlayController.get_instance() 102 m.AddEntry(GetByLabel('UI/Mining/OpenScanResultsWindow'), MiningScanResultsWindow.Open, texturePath=eveicon.open_window) 103 m.AddEntry(GetByLabel('UI/Mining/OpenMiningLedger'), LedgerWindow.Open, texturePath=eveicon.mining) 104 if controller.is_active: 105 m.AddSeparator() 106 m.AddEntry(GetByLabel('UI/Mining/DisableMiningOverlay'), controller.deactivate, texturePath=eveicon.close) 107 return m 108 109 def LoadTooltipPanel(self, tooltipPanel, *args): 110 super(LeftSideButtonMiningScan, self).LoadTooltipPanel(tooltipPanel, *args) 111 tooltipPanel.AddCell(carbonui.text.styles.TextBody(text=GetByLabel('UI/Mining/OreValue'), padTop=8), colSpan=2) 112 tooltipPanel.AddCell(GradientSprite(align=uiconst.TOTOP, rgbData=[(0.0, eveColor.ULTRAMARINE_BLUE[:3]), (0.5, eveColor.AIR_TURQUOISE[:3]), (1.0, eveColor.SAND_YELLOW[:3])], alphaData=[(0.0, 1.0)], outputMode=OutputMode.COLOR_AND_GLOW, glowBrightness=0.2, width=200, height=8), colSpan=2) 113 carbonui.text.styles.TextBody(parent=tooltipPanel, align=Align.CENTERLEFT, text=GetByLabel('UI/Mining/LowValue')) 114 carbonui.text.styles.TextBody(parent=tooltipPanel, align=Align.CENTERRIGHT, text=GetByLabel('UI/Mining/HighValue')) 115 tier = mining_util.get_current_ship_mining_scanner_upgrade_tier() 116 if not tier or tier < MiningScan.TIER_2: 117 tooltipPanel.pickState = PickState.ON 118 module_link = evelink.type_link(appConst.typeSurveyScannerI, evetypes.GetName(appConst.typeSurveyScannerI)) 119 label = carbonui.text.styles.TextBody(text=GetByLabel('UI/Mining/MiningScannerUpgradeRequired', module_name=module_link), pickState=PickState.ON, color=TextColor.SECONDARY, maxWidth=200, padTop=8) 120 tooltipPanel.AddCell(label, colSpan=2)