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