Source code for hiero.ui.FnVersionWidget
# Copyright (c) 2011 The Foundry Visionmongers Ltd.  All Rights Reserved.
import PySide2.QtCore as QtCore
import PySide2.QtWidgets as QtWidgets
[docs]class VersionWidget(QtWidgets.QSpinBox):
  """ Widget for editing version indices and padding. This extends QSpinbox to
  allow the user to add leading zeroes to specify padding.
  """
  paddingChanged = QtCore.Signal(int)
  def __init__ (self):
    QtWidgets.QSpinBox.__init__(self)
    self._padding = 2
    self.setRange(0, 99999)
    self.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
[docs]  def setPadding(self, padding):
    if padding == self._padding:
      return
    self._padding = padding
    value = self.value()
    # Toggle value to update padding
    self.setValue(99999)
    self.setValue(value)  
    self.adjustSize()
    self.updateGeometry()
    self.paddingChanged.emit(self._padding)
[docs]  def sizeHint (self):
    count = len(self.textFromValue(self.value()))
    return QtCore.QSize(max(count * 15, 80), 20)
[docs]  def valueFromText(self, text):
    try:
      value = int(text)
      self._padding = len(text)
      self.paddingChanged.emit(self._padding)
      return value
    except:
      return self.value()