def __init__(self, iface): GenericTool.__init__(self, iface) self.labelName = "Savitzky Golay Filter" self.dlg = SavitzkyGolayFilterDialog() self.dlg.lineEditInImages.clear() self.dlg.lineEditOutImages.clear() self.ListWindow = ['3', '5', '7', '9'] self.ListPolynomial = ['1', '2', '3', '4', '5'] self.dlg.comboBoxWindow.addItems(self.ListWindow) self.dlg.comboBoxPoly.addItems(self.ListPolynomial) self.dlg.InButton.clicked.connect(self.InputFolder) self.dlg.outButton.clicked.connect(self.OutputImage)
def __init__(self,iface): GenericTool.__init__(self, iface) self.labelName = "Savitzky Golay Filter" self.dlg = SavitzkyGolayFilterDialog() self.dlg.lineEditInImages.clear() self.dlg.lineEditOutImages.clear() self.ListWindow =['3','5','7','9'] self.ListPolynomial =['1','2','3','4','5'] self.dlg.comboBoxWindow.addItems(self.ListWindow) self.dlg.comboBoxPoly.addItems(self.ListPolynomial) self.dlg.InButton.clicked.connect(self.InputFolder) self.dlg.outButton.clicked.connect(self.OutputImage)
class SavitzkyGolayFilter(GenericTool): """QGIS Plugin Implementation.""" def __init__(self, iface): GenericTool.__init__(self, iface) self.labelName = "Savitzky Golay Filter" self.dlg = SavitzkyGolayFilterDialog() self.dlg.lineEditInImages.clear() self.dlg.lineEditOutImages.clear() self.ListWindow = ['3', '5', '7', '9'] self.ListPolynomial = ['1', '2', '3', '4', '5'] self.dlg.comboBoxWindow.addItems(self.ListWindow) self.dlg.comboBoxPoly.addItems(self.ListPolynomial) self.dlg.InButton.clicked.connect(self.InputFolder) self.dlg.outButton.clicked.connect(self.OutputImage) def run(self): """Run method that performs all the real work""" # show the dialog self.dlg.show() # Run the dialog event loop result = self.dlg.exec_() ListWin = [3, 5, 7, 9] ListPoly = [1, 2, 3, 4, 5] # See if OK was pressed if result: iFolder = self.dlg.lineEditInImages.text() oFolder = self.dlg.lineEditOutImages.text() Win = ListWin[self.dlg.comboBoxWindow.currentIndex()] Poly = ListPoly[self.dlg.comboBoxPoly.currentIndex()] if Win > Poly: self.startWorker(iFolder, oFolder, Win, Poly) else: QMessageBox.warning( qgis.utils.iface.mainWindow(), "Savitzky Golay Filter", "Polynomial Order must be less than window size ") #Function input folder images def InputFolder(self): iFolder = QFileDialog.getExistingDirectory(self.dlg, 'Insert Folder', '', QFileDialog.ShowDirsOnly) self.dlg.lineEditInImages.setText(iFolder) #Function output folder images def OutputImage(self): oImage = QFileDialog.getExistingDirectory(self.dlg, 'Output Folder', '', QFileDialog.ShowDirsOnly) self.dlg.lineEditOutImages.setText(oImage) #Function Start thread processing def startWorker(self, inFolder, OutFolder, Window, Polynomial): # create a new worker instance worker = Worker(inFolder, OutFolder, Window, Polynomial) #Create Progressbar qgis.utils.iface.messageBar().clearWidgets() progressMessageBar = qgis.utils.iface.messageBar().createMessage( 'Executing Savitzky Golay Filter...') progressBar = QProgressBar() progressBar.setMaximum(100) progressMessageBar.layout().addWidget(progressBar) qgis.utils.iface.messageBar().pushWidget(progressMessageBar) self.progressMessageBar = progressMessageBar # start the worker in a new thread thread = QThread() worker.moveToThread(thread) worker.finished.connect(self.workerFinished) worker.error.connect(self.workerError) worker.progress.connect(progressBar.setValue) thread.started.connect(worker.SavitzkyGolayFilter) thread.start() self.thread = thread self.worker = worker #Function to finished thread processing def workerFinished(self, value): # clean up the worker and thread self.worker.deleteLater() self.thread.quit() self.thread.wait() self.thread.deleteLater() qgis.utils.iface.messageBar().clearWidgets() if value == 0: QMessageBox.information(qgis.utils.iface.mainWindow(), "Savitzky Golay Filter", "Processing sucessfully...") else: QMessageBox.warning( qgis.utils.iface.mainWindow(), "Savitzky Golay Filter", "Error in the images. Please, check the error log on:" + '\n' + os.path.join(self.dlg.lineEditInImages.text(), "LogErros.txt")) #Function report error in work def workerError(self, e, exception_string): QgsMessageLog.logMessage( 'Worker thread raised an exception:\n'.format(exception_string), level=QgsMessageLog.CRITICAL)
class SavitzkyGolayFilter(GenericTool): """QGIS Plugin Implementation.""" def __init__(self,iface): GenericTool.__init__(self, iface) self.labelName = "Savitzky Golay Filter" self.dlg = SavitzkyGolayFilterDialog() self.dlg.lineEditInImages.clear() self.dlg.lineEditOutImages.clear() self.ListWindow =['3','5','7','9'] self.ListPolynomial =['1','2','3','4','5'] self.dlg.comboBoxWindow.addItems(self.ListWindow) self.dlg.comboBoxPoly.addItems(self.ListPolynomial) self.dlg.InButton.clicked.connect(self.InputFolder) self.dlg.outButton.clicked.connect(self.OutputImage) def run(self): """Run method that performs all the real work""" # show the dialog self.dlg.show() # Run the dialog event loop result = self.dlg.exec_() ListWin = [3,5,7,9] ListPoly = [1,2,3,4,5] # See if OK was pressed if result: iFolder = self.dlg.lineEditInImages.text() oFolder = self.dlg.lineEditOutImages.text() Win = ListWin[self.dlg.comboBoxWindow.currentIndex()] Poly = ListPoly[self.dlg.comboBoxPoly.currentIndex()] if Win > Poly: self.startWorker(iFolder, oFolder, Win,Poly) else: QMessageBox.warning(qgis.utils.iface.mainWindow(),"Savitzky Golay Filter","Polynomial Order must be less than window size ") #Function input folder images def InputFolder(self): iFolder = QFileDialog.getExistingDirectory(self.dlg,'Insert Folder','',QFileDialog.ShowDirsOnly) self.dlg.lineEditInImages.setText(iFolder) #Function output folder images def OutputImage(self): oImage = QFileDialog.getExistingDirectory(self.dlg,'Output Folder','',QFileDialog.ShowDirsOnly) self.dlg.lineEditOutImages.setText(oImage) #Function Start thread processing def startWorker(self, inFolder, OutFolder, Window, Polynomial): # create a new worker instance worker = Worker(inFolder, OutFolder, Window, Polynomial) #Create Progressbar qgis.utils.iface.messageBar().clearWidgets() progressMessageBar = qgis.utils.iface.messageBar().createMessage('Executing Savitzky Golay Filter...') progressBar = QProgressBar() progressBar.setMaximum(100) progressMessageBar.layout().addWidget(progressBar) qgis.utils.iface.messageBar().pushWidget(progressMessageBar) self.progressMessageBar = progressMessageBar # start the worker in a new thread thread = QThread() worker.moveToThread(thread) worker.finished.connect(self.workerFinished) worker.error.connect(self.workerError) worker.progress.connect(progressBar.setValue) thread.started.connect(worker.SavitzkyGolayFilter) thread.start() self.thread = thread self.worker = worker #Function to finished thread processing def workerFinished(self,value): # clean up the worker and thread self.worker.deleteLater() self.thread.quit() self.thread.wait() self.thread.deleteLater() qgis.utils.iface.messageBar().clearWidgets() if value == 0: QMessageBox.information(qgis.utils.iface.mainWindow(),"Savitzky Golay Filter","Processing sucessfully...") else: QMessageBox.warning(qgis.utils.iface.mainWindow(),"Savitzky Golay Filter","Error in the images. Please, check the error log on:"+'\n'+os.path.join(self.dlg.lineEditInImages.text(),"LogErros.txt")) #Function report error in work def workerError(self, e, exception_string): QgsMessageLog.logMessage('Worker thread raised an exception:\n'.format(exception_string), level=QgsMessageLog.CRITICAL)