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

quickFilter.py (3191B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\quickFilter.py
      2 import blue
      3 import eveicon
      4 import localization
      5 import evetypes
      6 import uthread
      7 from carbonui.control.singlelineedits.singleLineEditText import SingleLineEditText
      8 
      9 def GetRecName(rec):
     10     name = ''
     11     if hasattr(rec, 'name'):
     12         name = rec.name.lower()
     13     elif hasattr(rec, 'contactID'):
     14         name = cfg.eveowners.Get(rec.contactID).name
     15         name = name.lower()
     16     elif hasattr(rec, 'invtype'):
     17         name = rec.invtype.typeName.lower()
     18     elif hasattr(rec, 'typeID'):
     19         name = evetypes.GetName(rec.typeID).lower()
     20     return name
     21 
     22 
     23 class QuickFilterEdit(SingleLineEditText):
     24     __guid__ = 'uicls.QuickFilterEdit'
     25     default_width = 100
     26     default_left = 0
     27     default_top = 0
     28     default_icon = eveicon.search
     29 
     30     def ApplyAttributes(self, attributes):
     31         attributes.hintText = attributes.hintText or localization.GetByLabel('UI/Common/Search')
     32         attributes.maxLength = attributes.maxLength or 37
     33         if 'callback' in attributes:
     34             self.ReloadFunction = attributes.callback
     35         super(QuickFilterEdit, self).ApplyAttributes(attributes)
     36         self.ShowClearButton(hint=localization.GetByLabel('UI/Calendar/Hints/Clear'))
     37         self.RefreshTextClipper()
     38         self.filterThread = None
     39         self.lastStrFilter = None
     40         self.quickFilterInput = None
     41         self.OnChange = self.SetQuickFilterInput
     42         self.OnReturn = self.RegisterInput
     43         self.OnFocusLost = self.RegisterInput
     44         self.OnClearFilter = attributes.OnClearFilter
     45         if attributes.get('triggerFilterOnCreation', True):
     46             self.SetQuickFilterInput()
     47 
     48     def OnClearButtonClick(self, *args, **kwds):
     49         super(QuickFilterEdit, self).OnClearButtonClick()
     50         if self.OnClearFilter:
     51             self.OnClearFilter()
     52 
     53     def GetValue(self, *args, **kwds):
     54         return super(QuickFilterEdit, self).GetValue(registerHistory=False)
     55 
     56     def RegisterInput(self, *args, **kwds):
     57         self.RegisterHistory()
     58         self.DoReload()
     59 
     60     def SetQuickFilterInput(self, *args):
     61         if self.filterThread is not None and self.filterThread.alive:
     62             return
     63         self.filterThread = uthread.new(self._SetQuickFilterInput)
     64 
     65     def _SetQuickFilterInput(self):
     66         try:
     67             blue.pyos.synchro.Sleep(400)
     68         finally:
     69             self.filterThread = None
     70 
     71         self.DoReload()
     72 
     73     def DoReload(self):
     74         strFilter = self.GetValue()
     75         if self.lastStrFilter == strFilter:
     76             return
     77         self.lastStrFilter = strFilter
     78         if len(strFilter) > 0:
     79             self.quickFilterInput = strFilter.lower()
     80             self.ReloadFunction()
     81         else:
     82             prefilter = self.quickFilterInput
     83             self.quickFilterInput = None
     84             if prefilter != None:
     85                 self.ReloadFunction()
     86 
     87     def ReloadFunction(self, *args):
     88         pass
     89 
     90     def QuickFilter(self, rec):
     91         if not self.quickFilterInput:
     92             return False
     93         name = GetRecName(rec)
     94         input = self.quickFilterInput.lower()
     95         return name.find(input) + 1