Ejemplo n.º 1
0
class profileViewerDialog(QtGui.QDialog, FORM_CLASS):
    closeWindow = pyqtSignal()

    def __init__(self, parent=None):
        super(profileViewerDialog, self).__init__(parent)
        self.setupUi(self)

        self.TecFileList.setItemHidden(self.TecFileList.headerItem(), True)
        self.TecFileList.clear()
        self.setPlotWidget()
        self.setLayerBoxWidget()
        self.layerCombo.setEnabled(False)
        self.fieldCombo.setEnabled(False)
        self.mdl = QStandardItemModel(0, 6)
        self.resetBtn.clicked.connect(self.setRescale)
        self.methodSelector.currentIndexChanged.connect(
            self.lockMapLayerSelector)
        self.setIcons()
        self.settingDiag = exportSettings()
        self.batchChecker.setEnabled(False)

        self.exportSettingBtn.clicked.connect(self.openExportSettings)
        self.layerCombo.layerChanged.connect(self.fieldCombo.setLayer)

    def lockMapLayerSelector(self, idx):
        if idx == 0:
            self.layerCombo.setEnabled(False)
            self.reActivateBtn.setEnabled(True)
            self.batchChecker.setEnabled(False)
            self.fieldCombo.setEnabled(False)
        elif idx == 1:
            self.layerCombo.setEnabled(True)
            self.reActivateBtn.setEnabled(False)
            self.batchChecker.setEnabled(True)
            self.fieldCombo.setEnabled(True)

    def openExportSettings(self):
        self.settingDiag.run()

    def setIcons(self):
        pixMap = QPixmap(os.path.join(
            os.path.dirname(os.path.dirname(__file__)), 'settings.svg'))
        settingIcon = QIcon(pixMap)
        self.exportSettingBtn.setIcon(settingIcon)
        self.exportSettingBtn.setIconSize(0.085*pixMap.rect().size())

        pixMap2 = QPixmap(os.path.join(
            os.path.dirname(os.path.dirname(__file__)), 'if_arrow-up.svg'))
        icon2 = QIcon(pixMap2)
        self.moveForwardBtn.setIcon(icon2)
        self.moveForwardBtn.setIconSize(self.moveForwardBtn.size())

        pixMap3 = QPixmap(os.path.join(
            os.path.dirname(os.path.dirname(__file__)), 'if_arrow-down.svg'))
        icon3 = QIcon(pixMap3)
        self.moveBackwardBtn.setIcon(icon3)
        self.moveBackwardBtn.setIconSize(self.moveBackwardBtn.size())

    def setPlotWidget(self):
        self.plotWidget = QwtPlot(self.plotFrame)
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(
            self.plotWidget.sizePolicy().hasHeightForWidth())
        self.plotWidget.setSizePolicy(sizePolicy)
        self.plotWidget.setMinimumSize(QSize(0, 0))
        self.plotWidget.setAutoFillBackground(False)
        self.plotWidget.setCanvasBackground(Qt.white)
        self.plotWidget.plotLayout().setAlignCanvasToScales(True)

        zoomer = QwtPlotZoomer(QwtPlot.xBottom, QwtPlot.yLeft,
                               QwtPicker.DragSelection, QwtPicker.AlwaysOff,
                               self.plotWidget.canvas())
        zoomer.setRubberBandPen(QPen(Qt.blue))
        # The pen to draw zone of zooming.

        picker = QwtPlotPicker(QwtPlot.xBottom, QwtPlot.yLeft,
                               QwtPicker.NoSelection,
                               QwtPlotPicker.CrossRubberBand,
                               QwtPicker.AlwaysOn, self.plotWidget.canvas())
        picker.setTrackerPen(QPen(Qt.green))
        grid = QwtPlotGrid()
        grid.setPen(QPen(QColor('grey'), 0, Qt.DotLine))
        grid.attach(self.plotWidget)

        layout = self.plotLayout
        layout.addWidget(self.plotWidget)

    def setLayerBoxWidget(self):
        self.layerCombo = QgsMapLayerComboBox()
        self.layerCombo.setFilters(QgsMapLayerProxyModel.LineLayer)
        layout = self.layerComboLayout
        layout.addWidget(self.layerCombo)

        self.fieldCombo = QgsFieldComboBox()
        self.layoutForField.addWidget(self.fieldCombo)

    def setRescale(self):
        self.plotWidget.setAxisAutoScale(0)
        self.plotWidget.setAxisAutoScale(2)
        self.plotWidget.replot()

    def closeEvent(self, event):
        self.closeWindow.emit()

        # Delete the icons under plugin folder
        folderPath = os.path.dirname(__file__)
        folderPath = unicode(folderPath.decode('utf-8'))
        fileUnderFold = os.listdir(folderPath)

        for _file in fileUnderFold:
            if _file.endswith('.svg'):
                os.remove(os.path.join(folderPath, _file))
Ejemplo n.º 2
0
    def changePlotWidget(self, library, frame_for_plot):
        if library == "Qwt5" and has_qwt:
            plotWdg = QwtPlot(frame_for_plot)
            sizePolicy = QSizePolicy(QSizePolicy.Expanding,
                                     QSizePolicy.Expanding)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(
                plotWdg.sizePolicy().hasHeightForWidth())
            plotWdg.setSizePolicy(sizePolicy)
            plotWdg.setMinimumSize(QSize(0, 0))
            plotWdg.setAutoFillBackground(False)
            #Decoration
            plotWdg.setCanvasBackground(Qt.white)
            plotWdg.plotLayout().setAlignCanvasToScales(True)
            zoomer = QwtPlotZoomer(QwtPlot.xBottom, QwtPlot.yLeft,
                                   QwtPicker.DragSelection,
                                   QwtPicker.AlwaysOff, plotWdg.canvas())
            zoomer.setRubberBandPen(QPen(Qt.blue))
            if platform.system() != "Windows":
                # disable picker in Windows due to crashes
                picker = QwtPlotPicker(QwtPlot.xBottom, QwtPlot.yLeft,
                                       QwtPicker.NoSelection,
                                       QwtPlotPicker.CrossRubberBand,
                                       QwtPicker.AlwaysOn, plotWdg.canvas())
                picker.setTrackerPen(QPen(Qt.green))
            #self.dockwidget.qwtPlot.insertLegend(QwtLegend(), QwtPlot.BottomLegend);
            grid = Qwt.QwtPlotGrid()
            grid.setPen(QPen(QColor('grey'), 0, Qt.DotLine))
            grid.attach(plotWdg)
            return plotWdg
        elif library == "Matplotlib" and has_mpl:
            from matplotlib.figure import Figure
            from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg

            fig = Figure((1.0, 1.0),
                         linewidth=0.0,
                         subplotpars=matplotlib.figure.SubplotParams(left=0,
                                                                     bottom=0,
                                                                     right=1,
                                                                     top=1,
                                                                     wspace=0,
                                                                     hspace=0))

            font = {'family': 'arial', 'weight': 'normal', 'size': 12}
            matplotlib.rc('font', **font)

            rect = fig.patch
            rect.set_facecolor((0.9, 0.9, 0.9))

            self.subplot = fig.add_axes((0.07, 0.15, 0.92, 0.82))
            self.subplot.set_xbound(0, 1000)
            self.subplot.set_ybound(0, 1000)
            self.manageMatplotlibAxe(self.subplot)
            canvas = FigureCanvasQTAgg(fig)
            sizePolicy = QSizePolicy(QSizePolicy.Expanding,
                                     QSizePolicy.Expanding)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            canvas.setSizePolicy(sizePolicy)
            return canvas