class StratigraphicUnitInBedEditorDialog(DatasetInBedEditorDialog):
    def __init__(self, parent, data):
        DatasetInBedEditorDialog.__init__(self, parent, data)
        self.addContentPanel(self.tr("Stratigraphic Unit In Bed"))
        self.addIdDisplay()
        self.addNameEdit()
        self.addBedSelector()
        self.addStratigraphicUnitEditor()
        self.addPercentEditor()
        self.addDescriptionEdit()
        self.addButtons()
        self.nameW.setEnabled(False)

        self.idW.setValue(self.data.id)
        self.nameW.setValue(self.data.name)
        self.stratigraphicUnitW.selectDataset(data.stratigraphicUnit)
        self.bedW.selectDataset(data.bed)
        self.percentW.setValues(data.begin, data.end)
        self.descriptionW.setValue(unicode(self.data.description))

        self.nameW.nameChanged.connect(self.onNameChange)
        self.descriptionW.descriptionChanged.connect(self.onDescriptionChange)
        self.percentW.beginValueChanged.connect(self.onBeginValueChange)
        self.percentW.endValueChanged.connect(self.onEndValueChange)
        self.stratigraphicUnitW.currentDatasetChanged.connect(self.onStratigraphicUnitChange)

    def onNameChange(self, txt):
        self.data.name = unicode(txt)
    def onDescriptionChange(self, txt):
        self.data.description = unicode(txt)
    def addStratigraphicUnitEditor(self):
        self.stratigraphicUnitL = self.createMultiLineLabel(self.tr("&Stratigraphic Unit"))
        self.stratigraphicUnitW = StratigraphicUnitItemView(self.contentW)
        self.stratigraphicUnitL.setBuddy(self.stratigraphicUnitW)
        self.addLabelWidgetPair(self.stratigraphicUnitL, self.stratigraphicUnitW)
        self.stratigraphicUnitW.setProject(self.data.bed.profile.project)
    def onStratigraphicUnitChange(self, l):
        self.data.stratigraphicUnit = l
        self.updateName()
    def updateName(self):
        if self.data.stratigraphicUnit is None:
            self.nameW.setText(self.tr("<Stratigraphic Unit not Set>"))
        else:
            self.data.name = unicode(self.tr("%1 - %2: %3").arg(self.data.begin).arg(self.data.end).arg(self.data.stratigraphicUnit.name))
            self.nameW.setText(self.data.name)
    def onBeginValueChange(self, v):
        self.data.begin = v
        self.updateName()
    def onEndValueChange(self, v):
        self.data.end = v
        self.updateName()
 def addStratigraphicUnitEditor(self):
     self.stratigraphicUnitL = self.createMultiLineLabel(self.tr("&Stratigraphic Unit"))
     self.stratigraphicUnitW = StratigraphicUnitItemView(self.contentW)
     self.stratigraphicUnitL.setBuddy(self.stratigraphicUnitW)
     self.addLabelWidgetPair(self.stratigraphicUnitL, self.stratigraphicUnitW)
     self.stratigraphicUnitW.setProject(self.data.bed.profile.project)