class DtExtractPartTool(DtSingleTool):
    def __init__(self, iface,  toolBar):
        super().__init__(iface,  toolBar,
            QtGui.QIcon(":/ExtractPart.png"),
            QtCore.QCoreApplication.translate("digitizingtools",
                "Split off one part and add it as a new feature"),
            geometryTypes = [1, 2, 3, 4, 5, 6], dtName = "dtExtractPart")

        self.tool = DtSelectPartTool(self.iface)
        self.tool.partSelected.connect(self.partSelected)
        self.enable()

    def process(self):
        self.canvas.setMapTool(self.tool)
        self.act.setChecked(True)

    def partSelected(self, part):
        fid = part[0]
        partNumber = part[1]
        aPart = part[2]
        layer = self.iface.mapCanvas().currentLayer()
        feature = dtutils.dtGetFeatureForId(layer,  fid)
        geom = QgsGeometry(feature.geometry())

        if geom.deletePart(partNumber):
            layer.beginEditCommand(QtCore.QCoreApplication.translate("editcommand", "Extract part"))
            aFeat = dtutils.dtCopyFeature(layer,  feature)
            aFeat.setGeometry(aPart)
            layer.addFeature(aFeat)
            feature.setGeometry(geom)
            layer.updateFeature(feature)
            layer.endEditCommand()
            self.canvas.refresh()

        self.tool.reset()
    def __init__(self, iface, toolBar):
        super().__init__(iface,
                         toolBar,
                         QtGui.QIcon(":/ExtractPart.png"),
                         QtCore.QCoreApplication.translate(
                             "digitizingtools",
                             "Split off one part and add it as a new feature"),
                         geometryTypes=[1, 2, 3, 4, 5, 6],
                         dtName="dtExtractPart")

        self.tool = DtSelectPartTool(self.iface)
        self.tool.partSelected.connect(self.partSelected)
        self.enable()
    def __init__(self, iface,  toolBar):
        super().__init__(iface,  toolBar,
            QtGui.QIcon(":/ExtractPart.png"),
            QtCore.QCoreApplication.translate("digitizingtools",
                "Split off one part and add it as a new feature"),
            geometryTypes = [1, 2, 3, 4, 5, 6], dtName = "dtExtractPart")

        self.tool = DtSelectPartTool(self.iface)
        self.tool.partSelected.connect(self.partSelected)
        self.enable()
class DtExtractPartTool(DtSingleTool):
    def __init__(self, iface, toolBar):
        super().__init__(iface,
                         toolBar,
                         QtGui.QIcon(":/ExtractPart.png"),
                         QtCore.QCoreApplication.translate(
                             "digitizingtools",
                             "Split off one part and add it as a new feature"),
                         geometryTypes=[1, 2, 3, 4, 5, 6],
                         dtName="dtExtractPart")

        self.tool = DtSelectPartTool(self.iface)
        self.tool.partSelected.connect(self.partSelected)
        self.enable()

    def process(self):
        self.canvas.setMapTool(self.tool)
        self.act.setChecked(True)

    def partSelected(self, part):
        fid = part[0]
        partNumber = part[1]
        aPart = part[2]
        layer = self.iface.mapCanvas().currentLayer()
        feature = dtutils.dtGetFeatureForId(layer, fid)
        geom = QgsGeometry(feature.geometry())

        if geom.deletePart(partNumber):
            layer.beginEditCommand(
                QtCore.QCoreApplication.translate("editcommand",
                                                  "Extract part"))
            aFeat = dtutils.dtCopyFeature(layer, feature)
            aFeat.setGeometry(aPart)
            layer.addFeature(aFeat)
            feature.setGeometry(geom)
            layer.updateFeature(feature)
            layer.endEditCommand()
            self.canvas.refresh()

        self.tool.reset()