prefixed.py (2265B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\carbonui\control\singlelineedits\prefixed.py 2 from carbonui.control.singlelineedits.singleLineEditText import SingleLineEditText 3 4 class PrefixedSingleLineEdit(SingleLineEditText): 5 6 def ApplyAttributes(self, attributes): 7 self.prefix = attributes.prefix or '' 8 setvalue = attributes.setvalue or '' 9 if not setvalue: 10 setvalue = self.prefix 11 elif setvalue and not setvalue.startswith(self.prefix): 12 setvalue = self.prefix + setvalue 13 attributes.setvalue = setvalue 14 super(PrefixedSingleLineEdit, self).ApplyAttributes(attributes) 15 self._OnChange = self.OnChange 16 self.OnChange = self.OnNameEditEdited 17 self.SetHistoryVisibility(False) 18 self.RefreshCaretPosition() 19 20 def UpdatePrefix(self, newPrefix): 21 oldPrefix = self.prefix 22 currentText = self.GetValue() 23 self.prefix = newPrefix 24 newText = currentText.replace(oldPrefix, newPrefix, 1) 25 self.SetValue(newText) 26 27 def OnNameEditEdited(self, *args): 28 args2 = list(args) 29 newText = args[0] 30 caretpos = self.caretIndex[0] 31 if caretpos < len(self.prefix): 32 text = self.prefix 33 if len(newText) > caretpos: 34 text += newText[caretpos:].lstrip() 35 newText = text 36 self.SetText(newText) 37 self.caretIndex = self.GetCursorFromIndex(len(self.prefix)) 38 self.RefreshCaretPosition() 39 args2[0] = newText 40 if self._OnChange: 41 self._OnChange(*args2) 42 43 def GetSelectionBounds(self): 44 selFrom, selTo = super(PrefixedSingleLineEdit, self).GetSelectionBounds() 45 if selFrom and selFrom[0] < len(self.prefix): 46 newFrom = len(self.prefix) 47 selFrom = (newFrom, self.textLabel.GetWidthToIndex(newFrom)[1]) 48 newTo = max(newFrom, selTo[0]) 49 selTo = (newTo, self.textLabel.GetWidthToIndex(newTo)[1]) 50 if getattr(self, 'prefix', None) and self.caretIndex[0] < len(self.prefix): 51 self.caretIndex = self.GetCursorFromIndex(len(self.prefix)) 52 self.RefreshCaretPosition() 53 return (selFrom, selTo)