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

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)