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))
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