skin_licenses_table.py (3881B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\cosmetics\client\ships\qa\skin_licenses_table.py 2 import evetypes 3 from carbon.common.script.sys.serviceConst import ROLE_GML 4 from carbonui import uiconst 5 from carbonui.control.scroll import Scroll 6 from carbonui.control.window import Window 7 from cosmetics.client.shipSkinDesignSvc import get_ship_skin_design_svc 8 from cosmetics.client.shipSkinLicensesSvc import get_ship_skin_license_svc 9 from cosmetics.client.ships.ship_skin_signals import on_skin_license_added, on_skin_license_updated, on_skin_license_deleted 10 from eve.client.script.ui.control.entries.generic import Generic 11 from eve.client.script.ui.control.entries.util import GetFromClass 12 13 class SkinLicensesTableWindow(Window): 14 __guid__ = 'SkinLicensesTableWindow' 15 default_width = 600 16 default_height = 600 17 default_windowID = 'skinLicensesTableWindow' 18 default_minSize = [default_width, default_height] 19 20 def __init__(self, *args): 21 super(SkinLicensesTableWindow, self).__init__(*args) 22 self.SetCaption('Ship 3P SKIN Licenses') 23 self._rebuilding = False 24 self.scroll = Scroll(name='scroll', parent=self.sr.maincontainer, align=uiconst.TOALL) 25 self.populate() 26 on_skin_license_added.connect(self._on_skin_license_added) 27 on_skin_license_updated.connect(self._on_skin_license_updated) 28 on_skin_license_deleted.connect(self._on_skin_license_deleted) 29 30 def _OnClose(self, *args, **kw): 31 on_skin_license_added.disconnect(self._on_skin_license_added) 32 on_skin_license_updated.disconnect(self._on_skin_license_updated) 33 on_skin_license_deleted.disconnect(self._on_skin_license_deleted) 34 super(SkinLicensesTableWindow, self)._OnClose(*args, **kw) 35 36 def populate(self): 37 self._rebuilding = True 38 licenses = get_ship_skin_license_svc().get_my_licenses(force_refresh=True) 39 entries = [] 40 for skin_hex, license in licenses.iteritems(): 41 data = [ u'{}'.format(x) or '' for x in [license.owner_character_id, 42 evetypes.GetName(license.skin_design.ship_type_id), 43 license.skin_design.name, 44 1 if license.activated else 0, 45 license.nb_unactivated, 46 license.nb_escrowed, 47 license.skin_hex] ] 48 entries.append(GetFromClass(SkinLicenseTableEntry, {'label': '<t>'.join(data), 49 'skin_license': license})) 50 51 self.scroll.Load(contentList=entries, headers=self._get_headers()) 52 self._rebuilding = False 53 54 def _get_headers(self): 55 return ['char id', 56 'ship type', 57 'design name', 58 'nb activated', 59 'nb unactivated', 60 'nb escrowed', 61 'skin hex'] 62 63 def _on_skin_license_added(self, _skin_hex, _license): 64 if not self._rebuilding: 65 self.scroll.Clear() 66 self.populate() 67 68 def _on_skin_license_updated(self, _skin_hex, _license): 69 if not self._rebuilding: 70 self.scroll.Clear() 71 self.populate() 72 73 def _on_skin_license_deleted(self, _license): 74 if not self._rebuilding: 75 self.scroll.Clear() 76 self.populate() 77 78 79 class SkinLicenseTableEntry(Generic): 80 __guid__ = 'listentry.SkinLicenseTableEntry' 81 __nonpersistvars__ = [] 82 83 def GetMenu(self): 84 if session and session.role & ROLE_GML: 85 menu = [('Revoke', lambda : revoke_license(self.sr.node.skin_license.skin_hex), ())] 86 return menu 87 88 89 def grant_license_from_design(skin_design_id, nb_licenses): 90 skin_hex = get_ship_skin_design_svc().admin_get_skin_design_cached_hex(skin_design_id) 91 if skin_hex: 92 get_ship_skin_license_svc().admin_grant_license(skin_hex, nb_licenses) 93 94 95 def revoke_license(skin_hex): 96 get_ship_skin_license_svc().admin_revoke_license(skin_hex)