def __init__(self, iface): """!@brief Constructor. param iface: An interface instance that will be passed to this class which provides the hook by which you can manipulate the QGIS application at run time. type iface: QgsInterface declare all fields to fill, such as output raster, columns to find from a shp... """ QDialog.__init__(self) sender = self.sender() """ """ # Save reference to the QGIS interface self.iface = iface legendInterface = self.iface.legendInterface() # initialize plugin directory self.plugin_dir = os.path.dirname(__file__) # initialize locale locale = QSettings().value('locale/userLocale')[0:2] locale_path = os.path.join(self.plugin_dir, 'i18n', 'HistoricalMap_{}.qm'.format(locale)) if os.path.exists(locale_path): self.translator = QTranslator() self.translator.load(locale_path) if qVersion() > '4.3.3': QCoreApplication.installTranslator(self.translator) # Create the dialog (after translation) and keep reference self.dlg = HistoricalMapDialog() # Declare instance attributes self.actions = [] self.menu = self.tr(u'&Historical Map') # TODO: We are going to let the user set this up in a future iteration self.toolbar = self.iface.addToolBar(u'HistoricalMap') self.toolbar.setObjectName(u'HistoricalMap') ## Init to choose file (to load or to save) self.dlg.outRaster.clear() self.dlg.selectRaster.clicked.connect(self.select_output_file) self.dlg.outModel.clear() self.dlg.selectModel.clicked.connect(self.select_output_file) self.dlg.outMatrix.clear() self.dlg.selectMatrix.clicked.connect(self.select_output_file) self.dlg.btnFilter.clicked.connect(self.runFilter) self.dlg.btnTrain.clicked.connect(self.runTrain) self.dlg.btnClassify.clicked.connect(self.runClassify) self.dlg.inModel.clear() self.dlg.selectModelStep3.clicked.connect(self.select_load_file) self.dlg.outShp.clear() self.dlg.selectOutShp.clicked.connect(self.select_output_file) ## init fields self.dlg.inTraining.currentIndexChanged[int].connect( self.onChangedLayer) ## By default field list is empty, so we fill with current layer ## if no currentLayer, no filling, or it will crash Qgis self.dlg.inField.clear() if self.dlg.inField.currentText( ) == '' and self.dlg.inTraining.currentLayer( ) and self.dlg.inTraining.currentLayer() != 'NoneType': activeLayer = self.dlg.inTraining.currentLayer() provider = activeLayer.dataProvider() fields = provider.fields() listFieldNames = [field.name() for field in fields] self.dlg.inField.addItems(listFieldNames) ## hide/show nfolds spinbox self.dlg.nFolds.hide()