NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)