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('<', '<').replace('>', '>') 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('<', '<').replace('>', '>') 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