devMenuFunctions.py (2385B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\skins\devMenuFunctions.py 2 from eve.client.script.ui.util.uix import ListWnd, QtyPopup 3 from eve.devtools.script.slashError import Error 4 5 def GiveSkin(materialID, typeID): 6 skin = _PickSkinForMaterialAndType(materialID, typeID) 7 duration = _SelectSkinDuration() 8 if duration is None: 9 return 10 sm.RemoteSvc('shipCosmeticsMgr').GiveSkin(skin.skinID, duration=duration) 11 12 13 def GivePermanentSkin(materialID, typeID): 14 skin = _PickSkinForMaterialAndType(materialID, typeID) 15 sm.RemoteSvc('shipCosmeticsMgr').GiveSkin(skin.skinID) 16 17 18 def GiveLimitedSkin(materialID, typeID): 19 skin = _PickSkinForMaterialAndType(materialID, typeID) 20 sm.RemoteSvc('shipCosmeticsMgr').GiveSkin(skin.skinID, isSingleUse=True) 21 22 23 def GetSkinUsedWithTypeAndMaterial(materialID, typeID): 24 return _PickSkinForMaterialAndType(materialID, typeID) 25 26 27 def GiveExpiredSkin(skinID): 28 sm.RemoteSvc('shipCosmeticsMgr').GMExpireSkinLicense(skinID) 29 30 31 def _PickSkinForMaterialAndType(materialID, typeID): 32 skins = _GetSkinsForTypeWithMaterial(materialID, typeID) 33 if len(skins) == 0: 34 message = 'No skins found for type {} that use material {}'.format(typeID, materialID) 35 raise Error(message) 36 else: 37 if len(skins) == 1: 38 return skins[0] 39 return _SelectSkinFromList(skins) 40 41 42 def _GetSkinsForTypeWithMaterial(materialID, typeID): 43 static = sm.GetService('cosmeticsSvc').static 44 return static.GetSkinsForTypeWithMaterial(typeID, materialID) 45 46 47 def _SelectSkinFromList(skins): 48 entry_list = [ (skin.internalName, skin) for skin in skins ] 49 caption = 'AutoComplete: %d types found' % len(entry_list) 50 selection = ListWnd(entry_list, listtype='generic', caption=caption) 51 if len(selection) != 1: 52 return None 53 skin = selection[1] 54 return skin 55 56 57 def _SelectSkinDuration(): 58 result = QtyPopup(minvalue=1, setvalue=1, caption='SKIN Duration', label='Set SKIN duration in days') 59 if result is None: 60 return 61 return int(result['qty']) 62 63 64 def RemoveSkin(skinID): 65 skin = sm.GetService('cosmeticsSvc').GetStaticSkinByID(skinID) 66 if skin.isStructureSkin: 67 licenseeID = session.corpid 68 else: 69 licenseeID = session.charid 70 sm.RemoteSvc('shipCosmeticsMgr').RemoveSkin(skinID, licenseeID)