class LengthInputWidget(QWidget):
    valueChanged = pyqtSignal(int)
    lengthUnitChanged = pyqtSignal(LengthUnit)

    def __init__(self, parent, labelText=None):
        QWidget.__init__(self, parent)
        self.setContentsMargins(0, 0, 0, 0)
        self.setLayout(QHBoxLayout(self))
        self.data = dict()
        self.valueW = IntLineEdit(self)
        self.unitsW = LengthUnitSelectionComboBox(self)
        self.unitsW.reload()

        if labelText is not None:
            self.layout().addWidget(QLabel(labelText, self))
        self.layout().addWidget(self.valueW)
        self.layout().addWidget(self.unitsW)

        self.valueW.valueChanged.connect(self.onValueChange)
        self.unitsW.currentDatasetChanged.connect(self.onUnitActivate)

    def onValueChange(self, val):
        self.valueChanged.emit(val)

    def onUnitActivate(self, val):
        self.lengthUnitChanged.emit(val)

    def setValue(self, val, unit):
        self.valueW.setValue(val)
        self.unitsW.selectDataset(unit)
        print self.__class__.__name__, ": ", unit

    def reload(self):
        self.unitsW.reload()
 def __init__(self, parent):
     QWidget.__init__(self, parent)
     self.setLayout(QHBoxLayout(self))
     self.strikeW = IntLineEdit(self)
     self.dipW = IntLineEdit(self)
     self.strikeW.setRange(0, 360)
     self.dipW.setRange(0, 90)
     self.layout().addWidget(self.strikeW)
     self.layout().addWidget(QLabel("/", self))
     self.layout().addWidget(self.dipW)
     self.strikeW.valueChanged.connect(self.onStrikeChange)
     self.dipW.valueChanged.connect(self.onDipChange)
    def __init__(self, parent, labelText=None):
        QWidget.__init__(self, parent)
        self.setContentsMargins(0, 0, 0, 0)
        self.setLayout(QHBoxLayout(self))
        self.data = dict()
        self.valueW = IntLineEdit(self)
        self.unitsW = LengthUnitSelectionComboBox(self)
        self.unitsW.reload()

        if labelText is not None:
            self.layout().addWidget(QLabel(labelText, self))
        self.layout().addWidget(self.valueW)
        self.layout().addWidget(self.unitsW)

        self.valueW.valueChanged.connect(self.onValueChange)
        self.unitsW.currentDatasetChanged.connect(self.onUnitActivate)
class StrikeDipEditorWidget(QWidget):
    strikeChanged = pyqtSignal(int)
    dipChanged = pyqtSignal(int)

    def __init__(self, parent):
        QWidget.__init__(self, parent)
        self.setLayout(QHBoxLayout(self))
        self.strikeW = IntLineEdit(self)
        self.dipW = IntLineEdit(self)
        self.strikeW.setRange(0, 360)
        self.dipW.setRange(0, 90)
        self.layout().addWidget(self.strikeW)
        self.layout().addWidget(QLabel("/", self))
        self.layout().addWidget(self.dipW)
        self.strikeW.valueChanged.connect(self.onStrikeChange)
        self.dipW.valueChanged.connect(self.onDipChange)
    def onStrikeChange(self, v):
        self.strikeChanged.emit(v)
    def onDipChange(self, v):
        self.dipChanged.emit(v)
    def setValues(self, strike, dip):
        self.strikeW.setValue(strike)
        self.dipW.setValue(dip)