class LengthRangeInputWidget(QWidget):
    minValueChanged = pyqtSignal(int)
    minLengthUnitChanged = pyqtSignal(LengthUnit)
    maxValueChanged = pyqtSignal(int)
    maxLengthUnitChanged = pyqtSignal(LengthUnit)

    def __init__(self, parent):
        QWidget.__init__(self, parent)
        self.setLayout(QHBoxLayout(self))
        self.minW = LengthInputWidget(self)
        self.maxW = LengthInputWidget(self)
        self.spaceW = QLabel(unicode("-"), self)
        self.layout().addWidget(self.minW)
        self.layout().addWidget(self.spaceW)
        self.layout().addWidget(self.maxW)
        
        self.minW.valueChanged.connect(self.onMinValueChange)
        self.minW.lengthUnitChanged.connect(self.onMinLengthUnitChange)
        self.maxW.valueChanged.connect(self.onMaxValueChange)
        self.maxW.lengthUnitChanged.connect(self.onMaxLengthUnitChange)
    def onMinValueChange(self, v):
        self.minValueChanged.emit(v)
    def onMinLengthUnitChange(self, u):
        self.minLengthUnitChanged.emit(u)
    def onMaxValueChange(self, v):
        self.maxValueChanged.emit(v)
    def onMaxLengthUnitChange(self, u):
        self.maxLengthUnitChanged.emit(u)
    def setRange(self, min, minU, max, maxU):
        self.minW.setValue(min, minU)
        self.maxW.setValue(max, maxU)
 def __init__(self, parent):
     QWidget.__init__(self, parent)
     self.setLayout(QHBoxLayout(self))
     self.minW = LengthInputWidget(self)
     self.maxW = LengthInputWidget(self)
     self.spaceW = QLabel(unicode("-"), self)
     self.layout().addWidget(self.minW)
     self.layout().addWidget(self.spaceW)
     self.layout().addWidget(self.maxW)
     
     self.minW.valueChanged.connect(self.onMinValueChange)
     self.minW.lengthUnitChanged.connect(self.onMinLengthUnitChange)
     self.maxW.valueChanged.connect(self.onMaxValueChange)
     self.maxW.lengthUnitChanged.connect(self.onMaxLengthUnitChange)