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

singleLineEditText.py (2883B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\carbonui\control\singlelineedits\singleLineEditText.py
      2 from eve.client.script.ui.control.eveLabel import EveLabelSmall
      3 from menu import MenuLabel
      4 from carbonui.control.singlelineedits.baseSingleLineEdit import BaseSingleLineEdit
      5 import carbonui.const as uiconst
      6 
      7 class SingleLineEditText(BaseSingleLineEdit):
      8     default_name = 'SingleLineEditText'
      9     default_maxLength = None
     10     default_showLetterCounter = False
     11 
     12     def ApplyAttributes(self, attributes):
     13         self.maxletters = None
     14         self.charCounterLabel = None
     15         self.showLetterCounter = attributes.get('showLetterCounter', self.default_showLetterCounter)
     16         self.SetMaxLength(attributes.get('maxLength', self.default_maxLength))
     17         super(SingleLineEditText, self).ApplyAttributes(attributes)
     18 
     19     def SetValue(self, text, docallback = 1):
     20         isString = isinstance(text, basestring)
     21         if not isString:
     22             return
     23         text = text.replace('&lt;', '<').replace('&gt;', '>')
     24         if self.maxletters:
     25             text = text[:self.maxletters]
     26         super(SingleLineEditText, self).SetValue(text, docallback)
     27 
     28     def SetText(self, text):
     29         super(SingleLineEditText, self).SetText(text)
     30         self.UpdateLetterCounter()
     31 
     32     def GetValue(self, registerHistory = True, raw = 0):
     33         if registerHistory:
     34             self.RegisterHistory()
     35         if not raw:
     36             return self.text.replace('<', '&lt;').replace('>', '&gt;')
     37         else:
     38             return self.text
     39 
     40     def SetMaxLength(self, maxLength):
     41         self.maxletters = maxLength
     42 
     43     def _ValidateInsert(self, insert):
     44         if self.maxletters and len(insert) > self.maxletters:
     45             return insert[:self.maxletters]
     46         return insert
     47 
     48     def GetMenu(self):
     49         m = super(SingleLineEditText, self).GetMenu()
     50         if self.displayHistory:
     51             m += [(MenuLabel('/Carbon/UI/Controls/Common/ClearHistory'), self.ClearHistory, (None,))]
     52         return m
     53 
     54     def ConstructLetterCounter(self):
     55         if self.charCounterLabel is None or self.charCounterLabel.destroyed:
     56             self.charCounterLabel = EveLabelSmall(parent=self, name='charCounterLabel', align=uiconst.TOPRIGHT, text=' ', maxLines=1, left=2)
     57             self.charCounterLabel.top = -self.charCounterLabel.textheight - 3
     58 
     59     def OnTextChange(self, docallback = True):
     60         super(SingleLineEditText, self).OnTextChange(docallback)
     61         self.UpdateLetterCounter()
     62 
     63     def UpdateLetterCounter(self):
     64         if self.showLetterCounter and self.maxletters:
     65             self.ConstructLetterCounter()
     66             self.charCounterLabel.text = '%s/%s' % (len(self.text), self.maxletters)
     67             self.charCounterLabel.display = True
     68         elif self.charCounterLabel:
     69             self.charCounterLabel.display = False