def __init__(self, iface):

        # Save reference to the QGIS interface
        self.iface = iface
        # 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',
            'SUEWSAnalyzer_{}.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 = SUEWSAnalyzerDialog()
        # self.layerComboManagerPolygrid = VectorLayerCombo(self.dlg.comboBox_Polygrid, initLayer="",
        #                                                   options={"geomType": QGis.Polygon})
        # fieldgen = VectorLayerCombo(self.dlg.comboBox_Polygrid, initLayer="", options={"geomType": QGis.Polygon})
        # self.layerComboManagerPolyField = FieldCombo(self.dlg.comboBox_Field, fieldgen)
        self.layerComboManagerPolygrid = QgsMapLayerComboBox(self.dlg.widgetPolygrid)
        self.layerComboManagerPolygrid.setCurrentIndex(-1)
        self.layerComboManagerPolygrid.setFilters(QgsMapLayerProxyModel.PolygonLayer)
        self.layerComboManagerPolygrid.setFixedWidth(175)
        self.layerComboManagerPolyfield = QgsFieldComboBox(self.dlg.widgetField)
        self.layerComboManagerPolyfield.setFilters(QgsFieldProxyModel.Numeric)
        self.layerComboManagerPolygrid.layerChanged.connect(self.layerComboManagerPolyfield.setLayer)

        self.dlg.pushButtonHelp.clicked.connect(self.help)
        self.dlg.pushButtonRunControl.clicked.connect(self.get_runcontrol)
        self.dlg.pushButtonSave.clicked.connect(self.geotiff_save)
        self.dlg.runButtonPlot.clicked.connect(self.plotpoint)
        self.dlg.runButtonSpatial.clicked.connect(self.spatial)

        self.dlg.comboBox_POIField.activated.connect(self.changeGridPOI)
        self.dlg.comboBox_POIYYYY.activated.connect(self.changeYearPOI)
        self.dlg.comboBox_SpatialYYYY.activated.connect(self.changeYearSP)

        self.fileDialog = QFileDialog()
        self.fileDialognml = QFileDialog()
        self.fileDialognml.setNameFilter("(RunControl.nml)")

        # Declare instance attributes
        self.actions = []
        self.menu = self.tr(u'&SUEWS Analyzer')
        # TODO: We are going to let the user set this up in a future iteration
        # self.toolbar = self.iface.addToolBar(u'SUEWSAnalyzer')
        # self.toolbar.setObjectName(u'SUEWSAnalyzer')

        self.outputfile = None
        self.unit = None
        self.resout = None
        self.fileCode = None
        self.gridcodemetmat = []
    def __init__(self, main_window_ref):
        super(UIDefineNewColorWidget, self).__init__()
        uic.loadUi(currentdir + '/ui_files/DefineNewColor.ui', self)
        self._main_window_ref = main_window_ref
        self._MAX_COLORS = 10

        # initialize image selection dialog
        self.dlgLoadImage = QFileDialog()
        self.dlgLoadImage.setFileMode(QFileDialog.ExistingFile)
        self.dlgLoadImage.setFilter("Image files (*.png *.jpeg *.jpg *.bmp)")
        self.dlgLoadImage.setAcceptMode(QFileDialog.AcceptOpen)

        # initialize color saving dialog
        self.dlgSaveColors = QFileDialog()
        self.dlgSaveColors.setFileMode(QFileDialog.AnyFile)
        self.dlgSaveColors.setFilter("Color files (*.clr)")
        self.dlgSaveColors.setAcceptMode(QFileDialog.AcceptSave)

        # initialize graphics view objects and color array
        self.btnClearColorsClicked()

        # connect buttons to functions
        self.btnLoadImage.clicked.connect(self.btnLoadImageClicked)
        self.btnSaveColors.clicked.connect(self.btnSaveColorsClicked)
        self.btnClearColors.clicked.connect(self.btnClearColorsClicked)
Exemple #3
0
    def init(cls):
        cls._file_save_dialog = QFileDialog()
        #configuración del fileDialog de Qt
        cls._file_save_dialog.setAcceptMode(
            QFileDialog.AcceptSave)  #Sólo se acepta salvar fichero
        cls._file_save_dialog.setViewMode(
            QFileDialog.Detail)  #La vista se muestra en detalles

        cls._file_load_dialog = QFileDialog()
        #configuración del fileDialog de Qt
        cls._file_load_dialog.setAcceptMode(
            QFileDialog.AcceptOpen)  #Sólo se acepta abrir fichero
        cls._file_load_dialog.setViewMode(
            QFileDialog.Detail)  #La vista se muestra en detalles
    def import_profile(self):
        """ Import minimum needs from an existing json file.

        The minimum needs are loaded from a file into the table. This state
        is only saved if the form is accepted.
        """
        # noinspection PyCallByClass,PyTypeChecker
        file_name_dialog = QFileDialog(self)
        file_name_dialog.setAcceptMode(QtGui.QFileDialog.AcceptSave)
        file_name_dialog.setNameFilter(self.tr('JSON files (*.json *.JSON)'))
        file_name_dialog.setDefaultSuffix('json')
        current_directory = os.path.dirname(__file__)
        path_name = os.path.join(
            current_directory, '..', '..', 'resources', 'minimum_needs')
        file_name_dialog.setDirectory(path_name)
        if file_name_dialog.exec_():
            file_name = file_name_dialog.selectedFiles()[0]
        else:
            return -1

        if self.minimum_needs.read_from_file(file_name) == -1:
            return -1

        self.clear_resource_list()
        self.populate_resource_list()
        self.switch_context(self.profile_edit_page)
    def importXMLFromFile(self):
        ''' NO DOCUMENTATION '''
        # print "importXMLFromFile"
        # First, prompt the user for the filename to read in
        start_dir = paths.get_project_configs_path()
        configDialog = QFileDialog()
        filter_str = QString("*.xml")
        fd = configDialog.getOpenFileName(
            self.manager.base_widget, "Please select an XML file to import...",
            start_dir, filter_str)
        # Check for cancel
        if len(fd) == 0:
            return
        fileName = QString(fd)

        # Pass that in to create a new XMLConfiguration
        try:
            options = ''
            xml_tree = load_xml_file(str(fileName))
            xml_node = xml_tree.getroot()

            options = ' or another node in the tree view'
            self.import_from_node(xml_node)
        except Exception, e:
            MessageBox.error(mainwindow=self.view,
                             text='Cannot insert XML file.',
                             detailed_text='XML insert failed.  '
                             '%s.  '
                             'Please select another XML file%s.' %
                             (e, options))
            return
Exemple #6
0
 def askExportPath(self):
     newPath = QFileDialog().getSaveFileName(self, self.tr("CSV path"),
                                             self.exportPath)
     if len(newPath):
         self.exportPath = unicode(newPath.toUtf8(), 'utf-8')
         self.exportPathLineEdit.clear()
         self.exportPathLineEdit.insert(self.exportPath)
Exemple #7
0
 def download(self):
     if not empty(self.subtitle.url):
         if self.subtitle.url.endswith('.rar'):
             ext = '.rar'
         elif self.subtitle.url.endswith('.srt'):
             ext = '.srt'
         else:
             ext = '.zip'
     fileDial = QFileDialog(self,
                            'Save "%s" subtitle file' % self.subtitle.name,
                            '%s%s' % (self.subtitle.name, ext),
                            'all files (*)')
     fileDial.setAcceptMode(QFileDialog.AcceptSave)
     fileDial.setLabelText(QFileDialog.Accept, 'Save subtitle file')
     fileDial.setLabelText(QFileDialog.FileName, 'Subtitle file name')
     ok = (fileDial.exec_() == 1)
     if not ok:
         return
     result = fileDial.selectedFiles()
     if len(result) > 0:
         dest = result[0]
         data = self.backend.get_subtitle_file(self.subtitle.id)
         try:
             with open(dest, 'w') as f:
                 f.write(data)
         except IOError as e:
             print('Unable to write subtitle file in "%s": %s' % (dest, e),
                   file=self.stderr)
             return 1
         return
Exemple #8
0
    def getImageFileNamesToOpen(cls, parent_window, defaultDirectory):
        """
        Launch an "Open File" dialog to ask the user for one or more image files.
        """
        extensions = OpDataSelection.SupportedExtensions
        filter_strs = ["*." + x for x in extensions]
        filters = ["{filt} ({filt})".format(filt=x) for x in filter_strs]
        filt_all_str = "Image files (" + ' '.join(filter_strs) + ')'

        fileNames = []

        if ilastik_config.getboolean("ilastik", "debug"):
            # use Qt dialog in debug mode (more portable?)
            file_dialog = QFileDialog(parent_window, "Select Images")
            file_dialog.setOption(QFileDialog.DontUseNativeDialog, True)
            # do not display file types associated with a filter
            # the line for "Image files" is too long otherwise
            file_dialog.setFilters([filt_all_str] + filters)
            file_dialog.setNameFilterDetailsVisible(False)
            # select multiple files
            file_dialog.setFileMode(QFileDialog.ExistingFiles)
            file_dialog.setDirectory(defaultDirectory)

            if file_dialog.exec_():
                fileNames = file_dialog.selectedFiles()
        else:
            # otherwise, use native dialog of the present platform
            fileNames = QFileDialog.getOpenFileNames(parent_window,
                                                     "Select Images",
                                                     defaultDirectory,
                                                     filt_all_str)
        # Convert from QtString to python str
        fileNames = map(encode_from_qstring, fileNames)
        return fileNames
Exemple #9
0
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.ui = uic.loadUi("mainwindow.ui")
        self.ui.closeEvent = self.closeEvent
        self.steppingTimer = QtCore.QTimer()
        self.calibrTimer = QtCore.QTimer()
        self.calibrHomeTimer = QtCore.QTimer()
        self.calibrFWTimer = QtCore.QTimer()
        self.measTimer = QtCore.QTimer()
        self.angleUpdateTimer = QtCore.QTimer()

        self.stepperStateTimer = QtCore.QTimer()
        self.oscReadTimer = QtCore.QTimer()

        self.config = configparser.ConfigParser()
        self.config.read('settings.ini')
        print(sys.argv[0], self.config.sections())

        self.globalSettingsDict = self.config[
            'GLOBAL']  #.read('globalSettings.ini')
        self.updateSettingsTable()

        self.uiConnect()
        self.initUi()

        self.fileDialog = QFileDialog(self)

        #self.initET1255()
        self.tmpData = []  #[[0,0,0]]
        self.calibrData = np.array([])  #[0,0,0])
        #self.SMD = SMD004()
        #self.extLaserStrob = laserStrob(0.1)
        self.oscillo = HAMEG()
        self.oscilloLastMaster = 'HAMEG'
Exemple #10
0
 def detect(self):
     pf = platform.system()
     if pf == 'Windows':
         self.mosesPath = self.findRegistryPath()
         if self.mosesPath:
             return self.checkMosesInstall()
         else:
             if not doQuestion(
                     'Cannot find Moses installation, click "Yes" to '
                     'manually set the Moses path, click "No" to exit.'):
                 return False
         # If not found, use a dialog.
         startdir = 'C:\\'
         if "ProgramFiles(x86)" in os.environ:
             startdir = os.environ["ProgramFiles(x86)"]
         elif "ProgramFiles" in os.environ:
             startdir = os.environ["ProgramFiles"]
         else:
             pass
         dialog = QFileDialog(None, directory=startdir)
         dialog.setFileMode(QFileDialog.Directory)
         dialog.setViewMode(QFileDialog.Detail)
         dialog.setOptions(QFileDialog.ShowDirsOnly)
         if dialog.exec_():
             self.mosesPath = str(dialog.selectedFiles()[0])
             return self.checkMosesInstall()
         else:
             doAlert("Failed to find Moses Installation path, exit.")
             return False
     else:
         doAlert("Platform %s not supported yet" % pf)
         return False
 def accept(self):
     if self.collectedDataDict:
         exportMap = self.getExportFieldMap()
         cleanedDataDict = []
         for feature in self.collectedDataDict:
             cleanedFeat = {}
             for key,value in feature.iteritems():
                 if key == "GEOMETRY":
                     if "," in value: #geometry comes from google drive
                         value = value.replace(" ",";").replace(",", " ") # fixed comma/space/semicolon mismatch between odk aggregate and google drive
                     cleanedFeat["GEOMETRY"] = value
                 elif key[-7:] == "ODKUUID":
                     cleanedFeat["ODKUUID"] = value
                 elif key in exportMap:
                     cleanedFeat[exportMap[key]] = self.cleanURI(value) #Download and provide local URI if value is internet URI
             cleanedDataDict.append(cleanedFeat)
         if self.syncroCheckBox.isChecked():
             self.updateLayer(self.getCurrentLayer(),cleanedDataDict)
         else:
             geojsonDict = self.module.settingsDlg.getLayerFromTable(cleanedDataDict)
             if geojsonDict:
                 self.hide()
                 workDir = QgsProject.instance().readPath("./")
                 geoJsonFileName = QFileDialog().getSaveFileName(None, self.tr("Save as GeoJson"), workDir, "*.geojson")
                 if QFileInfo(geoJsonFileName).suffix() != "geojson":
                     geoJsonFileName += ".geojson"
                 with open(os.path.join(workDir,geoJsonFileName), "w") as geojson_file:
                     geojson_file.write(json.dumps(geojsonDict))
                 layer = self.iface.addVectorLayer(os.path.join(workDir,geoJsonFileName), QFileInfo(geoJsonFileName).baseName(), "ogr")
                 QgsMapLayerRegistry.instance().addMapLayer(layer)
    def export(self):
        self.export_thread_pool.waitForDone(0)
        acquisitions = None
        if self.model is not None:
            acquisitions = self.model.data

        if not acquisitions:
            self.iface.messageBar().pushMessage("Error",
                                                "No data to export.",
                                                level=QgsMessageBar.CRITICAL)
        else:
            # open file ui
            select_file_ui = QFileDialog()
            starting_file = self.export_file or os.path.expanduser("~")
            export_file = select_file_ui.getSaveFileName(
                None, "Choose output file", starting_file, SELECT_FILTER)

            if export_file:
                self.export_file = export_file
                self.init_progress_bar(0)
                export_runnable = CatalogExportRunnable(
                    acquisitions, self.export_file)
                export_runnable.task_object.task_complete.connect(
                    self.on_export_complete)
                self.export_thread_pool.start(export_runnable)
    def __runOpenDialog(self):
        startdir = os.path.expanduser("~/")
        if self.recent_paths:
            startdir = self.recent_paths[0].abspath

        if OWImportImages.Modality == Qt.WindowModal:
            dlg = QFileDialog(
                self,
                "Select Top Level Directory",
                startdir,
                acceptMode=QFileDialog.AcceptOpen,
                modal=True,
            )
            dlg.setFileMode(QFileDialog.Directory)
            dlg.setOption(QFileDialog.ShowDirsOnly)
            dlg.setDirectory(startdir)
            dlg.setAttribute(Qt.WA_DeleteOnClose)

            @dlg.accepted.connect
            def on_accepted():
                dirpath = dlg.selectedFiles()
                if dirpath:
                    self.setCurrentPath(dirpath[0])
                    self.start()

            dlg.open()
        else:
            dirpath = QFileDialog.getExistingDirectory(
                self, "Select Top Level Directory", startdir)
            if dirpath:
                self.setCurrentPath(dirpath)
                self.start()
Exemple #14
0
	def saveCvImage(self):
		global fileSelected
		global videoState
		videoState = 'pause'
		if fileSelected != "":
			dlg = QFileDialog()
			#dlg.setNameFilter('PNG files (*.png)')
			dlg.setDefaultSuffix('.png')
			fileNameImage = dlg.getSaveFileName(self.w, 'Navigate to Directory and Choose a File Name to Save To', 'untitled.png', 'PNG Image (*.png)')
			if fileNameImage != "":
				try:
					print(fileNameImage)
					cv2.imwrite(str(fileNameImage),self.grabDataFrame())
					print('Saved frame ' + str(frame) + ' as .png')
					self.history.insertPlainText('SUCCESS: Saved Frame: ' + str(frame) + ' as PNG\n')
					self.history.moveCursor(QTextCursor.End)
				except:
					self.history.insertPlainText('No PNG Image Generated\n Did Not Specify Proper FileName\n')
					self.history.moveCursor(QTextCursor.End)
					print('Did Not Specify Proper FileName')
					print('No PNG Image Generated')
			else:
				self.history.insertPlainText('No PNG Image Generated\n Did Not Specify Proper FileName\n')
				self.history.moveCursor(QTextCursor.End)
				print('Did Not Specify Proper FileName')
				print('No PNG Image Generated')
 def on_exportPushButton_clicked(self):
     if not self.profilesListWidget.currentItem():
         QMessageBox.warning(self, self.tr('Warning!'),
                             self.tr('Error! Select a profile to export!'))
         return
     fd = QFileDialog()
     folder = fd.getExistingDirectory(
         caption=self.tr('Select a folder to output'))
     if folder == '':
         QMessageBox.warning(self, self.tr('Warning!'),
                             self.tr('Error! Select a output!'))
         return
     profileName = self.profilesListWidget.currentItem().text()
     edgvVersion = self.versionSelectionComboBox.currentText()
     try:
         QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
         self.permissionManager.exportSetting(profileName, edgvVersion,
                                              folder)
         QApplication.restoreOverrideCursor()
         QMessageBox.warning(self, self.tr('Success!'),
                             self.tr('Permission successfully exported.'))
     except Exception as e:
         QApplication.restoreOverrideCursor()
         QMessageBox.warning(
             self, self.tr('Warning!'),
             self.tr('Error! Problem exporting permission: ') +
             ':'.join(e.args))
    def exportXMLToFile(self):
        ''' NO DOCUMENTATION '''
        assert self.has_selected_item()

        # Ask the users where they want to save the file
        start_dir = ''
        opus_home = os.environ.get('OPUS_HOME')
        if opus_home:
            start_dir_test = os.path.join(opus_home, 'project_configs')
            if start_dir_test:
                start_dir = start_dir_test
        configDialog = QFileDialog()
        filter_str = QString("*.xml")
        fd = configDialog.getSaveFileName(self.manager.base_widget,
                                          QString("Save As..."),
                                          QString(start_dir), filter_str)
        # Check for cancel
        if len(fd) == 0:
            return
        fileNameInfo = QFileInfo(QString(fd))
        fileName = fileNameInfo.fileName().trimmed()
        fileNamePath = fileNameInfo.absolutePath().trimmed()
        saveName = os.path.join(str(fileNamePath), str(fileName))

        # proper root node for XmlConfiguration
        root_node = Element('opus_project')
        import copy
        root_node.append(copy.deepcopy(self.selected_item().node))

        # Write out the file
        ElementTree(root_node).write(saveName)
Exemple #17
0
    def download(self, reply):
        filepath = reply.url().toString()
        #dl = self.showBox('Iniciar download de', filepath)
        #if dl == QMessageBox.Yes:
        split = urlparse.urlsplit(filepath)
        filename = split.path.split("/")[-1]
        ofd = QFileDialog()
        ofd.setFileMode(QFileDialog.Directory)
        ofd.setOption(QFileDialog.ShowDirsOnly)
        ofd.setWindowTitle(filename)
        if ofd.exec_():
            res = ofd.selectedFiles()[0]
            path = os.path.join(res, filename)
            self.start_download.emit(str(filepath), str(path))
        #elif dl == QMessageBox.No:
        #    pass
        #elif dl == QMessageBox.Cancel:
        #    pass

        rep = self.showBox('Tentar reproduzir o arquivo?', filepath)
        if rep == QMessageBox.Yes:
            self.open_video.emit(filepath, False)
            self.close()
            main.hide()
        elif rep == QMessageBox.No:
            pass
        elif rep == QMessageBox.Cancel:
            pass
    def _loadConfig(self):
        '''
        Load a JSON configuration
        '''

        # Select config file to load
        dialog = QFileDialog()
        dialog.setFileMode(QFileDialog.ExistingFile)
        dialog.setOption(QFileDialog.ReadOnly)
        dialog.setNameFilter('Json file (*.json)')
        dialog.setWindowTitle(
            QCoreApplication.translate(
                'ImportDxfDialog', 'Select the configuration file to load'))
        dialog.setSizeGripEnabled(False)
        result = dialog.exec_()

        if result == 0:
            return

        selected_files = dialog.selectedFiles()

        if len(selected_files) == 0:
            return

        filename = selected_files[0]

        # Load mapping
        self.mapping.parseJson(filename)

        self._loadLayersMapping()
 def _saveToFile(self, sender, startFolder=None):
     'save to file'
     #filter = "Shape Files (*.shp);;Geojson File (*.geojson);;GML ( *.gml);;Comma separated value File (excel) (*.csv);;MapInfo TAB (*.TAB);;Any File (*.*)"
     filter = "ESRI Shape Files (*.shp);;SpatiaLite (*.sqlite);;Any File (*.*)"  #show only formats with update capabilty
     Fdlg = QFileDialog()
     Fdlg.setFileMode(QFileDialog.AnyFile)
     fName = Fdlg.getSaveFileName(sender,
                                  "open file",
                                  filter=filter,
                                  directory=startFolder)
     if fName:
         ext = os.path.splitext(fName)[1]
         if "SHP" in ext.upper():
             flType = "ESRI Shapefile"
         elif "SQLITE" in ext.upper():
             flType = "SQLite"
         elif "GEOJSON" in ext.upper():
             flType = "GeoJSON"
         elif "GML" in ext.upper():
             flType = "GML"
         elif "CSV" in ext.upper():
             ftType = "CSV"
         elif 'TAB' in ext.upper():
             flType = 'MapInfo File'
         elif 'KML' in ext.upper():
             flType = 'KML'
         else:
             fName = fName + ".shp"
             flType = "ESRI Shapefile"
         return (fName, flType)
     else:
         return None
 def doOpenFile(self, selector):
     text = {
         'ndvi': 'NDVI file (5 Classes)',
         'lulc': 'LU/LC (5 Classes)',
         'clipShp': 'clipping shapefile'
     }
     dialog = QFileDialog()
     fname = dialog.getOpenFileName(
         self.dlg, self.tr("Open {}".format(text[selector])))
     if fname:
         if selector == 'clipShp':
             # it must be a shapefile, let's open it
             self.clipLayer = QgsVectorLayer(fname, "Clip", 'ogr')
             if not self.clipLayer.isValid():
                 self.logMsg(
                     "Could not load vector layer {} with {}".format(
                         self.clipLayer.name(), fname),
                     QgsMessageLog.WARNING)
                 self.dlg.logTextDump.append(
                     "Could not load vector layer {}".format(
                         self.clipLayer))
             else:
                 self.dlg.editClipShp.setText(fname)
         if selector == 'ndvi':
             self.dlg.editNdvi.setText(fname)
         if selector == 'lulc':
             self.dlg.editLULC.setText(fname)
Exemple #21
0
    def saveProjectAs(self):
        ''' Save the project configuration under a different name '''
        try:
            # get the location for the new config file on disk
            start_dir = paths.OPUS_PROJECT_CONFIGS_PATH
            configDialog = QFileDialog()
            filter_str = QString("*.xml")
            fd = configDialog.getSaveFileName(self, QString("Save As..."),
                                              QString(start_dir), filter_str)
            # Check for cancel
            if not fd:
                return

            filename = QString(fd)
            # append xml extension if no extension was given
            if not filename.endsWith('.xml') and len(filename.split('.')) == 1:
                filename = filename + '.xml'

            if not self.saveProject(filename):
                return

            # hack: open the project right after save to properly change the
            # 'active project' related parameters
            self.openProject(filename)

        except:
            errorMessage = formatExceptionInfo(custom_message = \
                                               'Unexpected error saving config')
            QMessageBox.warning(self, 'Warning', errorMessage)
    def project_new_clicked(self):

        self.btn_project_new.setChecked(False)

        file_dialog = QFileDialog()
        file_dialog.setWindowTitle('New project')
        file_dialog.setLabelText(QFileDialog.Accept, 'Create')
        file_dialog.setNameFilter('Inp files (*.inp)')
        if file_dialog.exec_():

            inp_file_path = file_dialog.selectedFiles()[0]
            if not inp_file_path.lower().endswith('.inp'):
                inp_file_path += '.inp'

            self.inp_file_path = inp_file_path
            self.params.last_project_dir = os.path.dirname(inp_file_path)

            lay_utils.remove_layers(self.params)

            # Request CRS for layers
            self.crs_selector()
            self.create_layers(None, self.params.crs)

            self.txt_prj_file.setText(self.inp_file_path)

            # Prompt for hydaulic options
            if self.hydraulics_dialog is None:
                self.hydraulics_dialog = HydraulicsDialog(
                    self, self.params, True)
            self.hydraulics_dialog.show()
Exemple #23
0
 def export(self):
     fileDial = QFileDialog(
         self, 'Export "%s" recipe' % self.recipe.title,
         '%s.kreml' % self.recipe.title.replace('/', ','),
         'Krecipe file (*.kreml);;all files (*)')
     fileDial.setAcceptMode(QFileDialog.AcceptSave)
     fileDial.setLabelText(QFileDialog.Accept, 'Export recipe')
     fileDial.setLabelText(QFileDialog.FileName, 'Recipe file name')
     ok = (fileDial.exec_() == 1)
     if not ok:
         return
     result = fileDial.selectedFiles()
     if len(result) > 0:
         dest = unicode(result[0])
         if not dest.endswith('.kreml'):
             dest += '.kreml'
         data = self.recipe.toKrecipesXml(author=self.backend.name)
         try:
             with codecs.open(dest, 'w', 'utf-8') as f:
                 f.write(data)
         except IOError as e:
             print >> sys.stderr, 'Unable to write Krecipe file in "%s": %s' % (
                 dest, e)
             return 1
         return
Exemple #24
0
    def saveAsPdf(self,
                  name=None,
                  path=None,
                  saveInAutoGenDir=True,
                  multipagePdf=None,
                  openFile=True):
        """if a multipagePdf object is provided, will append the plot to a new page of the pdf object"""
        if name == None:
            name = self.name
        if path == None:
            if saveInAutoGenDir:
                path = loadSave.getCurrentDir()
                import os
                file = os.path.join(path, name)
            else:
                from PyQt4.QtGui import QFileDialog
                fd = QFileDialog()
                file = fd.getSaveFileName()
        else:
            import os
            file = os.path.join(path, name)

        if file[-4:] != ".pdf":
            file = file + ".pdf"

        if multipagePdf == None:
            from matplotlib.backends.backend_pdf import PdfPages
            pdf = PdfPages(file)
        else:
            pdf = multipagePdf
        pdf.savefig(self.canvas.fig)
        if multipagePdf == None:
            pdf.close()
        import os
        os.startfile(file)
Exemple #25
0
 def save_profile_as(self):
     """Save the minimum needs under a new profile name.
     """
     # noinspection PyCallByClass,PyTypeChecker
     file_name_dialog = QFileDialog(self)
     file_name_dialog.setAcceptMode(QtGui.QFileDialog.AcceptSave)
     file_name_dialog.setNameFilter(self.tr('JSON files (*.json *.JSON)'))
     file_name_dialog.setDefaultSuffix('json')
     file_name_dialog.setDirectory(expanduser('~/.qgis2/minimum_needs'))
     if file_name_dialog.exec_():
         file_name = file_name_dialog.selectedFiles()[0]
     else:
         return
     file_name = basename(file_name)
     file_name = file_name.replace('.json', '')
     minimum_needs = {'resources': []}
     self.mark_current_profile_as_saved()
     for index in xrange(self.resources_list.count()):
         item = self.resources_list.item(index)
         minimum_needs['resources'].append(item.resource_full)
     minimum_needs['provenance'] = self.provenance.text()
     minimum_needs['profile'] = file_name
     self.minimum_needs.update_minimum_needs(minimum_needs)
     self.minimum_needs.save()
     self.minimum_needs.save_profile(file_name)
     if self.profile_combo.findText(file_name) == -1:
         self.profile_combo.addItem(file_name)
     self.profile_combo.setCurrentIndex(
         self.profile_combo.findText(file_name))
Exemple #26
0
 def exportXForm(self, fileName=None, submission_url=None):
     workDir = QgsProject.instance().readPath("./")
     if not fileName:
         fileName = QFileDialog().getSaveFileName(None,
                                                  self.tr("Save XForm"),
                                                  workDir, "*.xml")
         exportingToGDrive = None
     elif self.settingsDlg.getCurrentService().hasValue(
             'data collection table ID'):
         exportingToGDrive = True
     else:
         exportingToGDrive = None
     if QFileInfo(fileName).suffix() != "xml":
         fileName += ".xml"
     json_out = self.dlg.treeView.renderToDict(
         service=self.settingsDlg.getServiceName())
     xForm_id = json_out["name"]
     if exportingToGDrive:  #if exporting to google drive a submission_url is embedded in XFORM
         if self.settingsDlg.getCurrentService().getValue(
                 'data collection table ID') == "":  #autocreated
             submission_url = self.settingsDlg.setDataSubmissionTable(
                 xForm_id)
         else:  #user defined
             submission_url = 'https://docs.google.com/spreadsheets/d/%s/edit' % self.settingsDlg.getCurrentService(
             ).getValue('data collection table ID')
         if submission_url:
             json_out["submission_url"] = submission_url
     survey = create_survey_element_from_dict(json_out)
     warnings = []
     xform = survey.to_xml(validate=None, warnings=warnings)
     with io.open(fileName, "w", encoding="utf8") as xml_file:
         xml_file.write(xform)
     #with io.open(fileName+'.json', "wb") as json_file:
     #    json.dump(json_out,json_file)
     return xForm_id
Exemple #27
0
    def ODKLoadLayerStateAction(self, fileName=None):
        if not fileName:
            workDir = QgsProject.instance().readPath("./")
            fileName = QFileDialog().getOpenFileName(
                None, self.tr("Load QGISODK project"), workDir, "*.json")
        if fileName:
            with open(fileName, "r") as json_file:
                restoreDict = json.load(json_file)
            ODKProjectName = QFileInfo(fileName).baseName()
            self.settingsDlg.importSettings(restoreDict['settings'])
            self.dlg.treeView.recover(restoreDict)
            self.dlg.setWindowTitle("QGISODK - " + ODKProjectName)
            #print restoreDict['targetLayer']['id']
            current_idx = self.dlg.layersComboBox.findData(
                restoreDict['targetLayer']['id'])
            if current_idx == -1:
                current_idx = self.dlg.layersComboBox.findText(
                    restoreDict['targetLayer']['name'])
                if current_idx == -1:
                    current_idx = 0
            #print current_idx

            #If found sets layers combo box with provided layer, disconnecting update signals....
            try:
                self.dlg.layersComboBox.currentIndexChanged.disconnect(
                    self.VectorLayerComboChanged)
            except:
                pass
            self.dlg.layersComboBox.setCurrentIndex(current_idx)
            self.dlg.layersComboBox.currentIndexChanged.connect(
                self.VectorLayerComboChanged)
            S = QSettings()
            QgsExpressionContextUtils.setProjectVariable(
                'QgisODK_current_project', fileName)
    def openInput(self):
        # reset labelPadding
        self.dlg.labelPadding.setText('Distance to centre (in input unit)')
        # file dialog
        dialog = QFileDialog()
        self.inShapefile = dialog.getOpenFileName(self.dlg,"Open vector file", self.inputPath)
        if self.inShapefile == '':
            return True
        self.cleanErrorMessage()
        # open file, guess driver
        self.inDataSource = ogr.Open(self.inShapefile, 0)
        if self.inDataSource is None:
            return False
        self.inLayer = self.inDataSource.GetLayer()
        self.spatialRef = self.inLayer.GetSpatialRef()
        # update interface
        if self.spatialRef.GetAttrValue('unit') is not None:
            self.dlg.labelPadding.setText('Distance to centre (in input unit: {})'.format(self.spatialRef.GetAttrValue('unit')))
        # change padding default increment according to type
        if self.spatialRef.GetAttrValue('unit').lower() in ['meters','meter']:
            self.dlg.spinBoxPaddingX.setSingleStep(1.0)
            self.dlg.spinBoxPaddingY.setSingleStep(1.0)
        else:
            self.dlg.spinBoxPaddingX.setSingleStep(0.1)
            self.dlg.spinBoxPaddingY.setSingleStep(0.1)

        # once all done, update text field
        self.dlg.textFileInput.setText(self.inShapefile)
        # and save path for next time
        self.inputPath =  os.path.dirname(self.inShapefile); 

        return True
Exemple #29
0
 def processtrigger(self, q):
     self.set_params()
     if q.text() == 'Загрузить данные':
         dlg = QFileDialog()
         dlg.setFileMode(QFileDialog.AnyFile)
         dlg.setFileMode(QFileDialog.ExistingFiles)
         filenames = QStringListModel()
         if dlg.exec_():
             filenames = dlg.selectedFiles()
         if self.active_class_item is not None:
             for f in filenames:
                 self.active_class_item.addChild(QTreeWidgetItem([str(f)]))
                 img = imread(f, mode='P')
                 lbl = self.active_class_item.text(0)[
                     -1]  #считаем, что не будет двузначных меток
                 if self.active_class_item.text(0) == 'Тест':
                     self.mController.add_test(img, self.params)
                 else:
                     self.mController.add_data(img, lbl, self.params)
     elif q.text() == 'Очистить':
         count = self.active_class_item.childCount()
         for _ in range(count):
             self.active_class_item.removeChild(
                 self.active_class_item.child(0))
         if self.active_class_item.text(0) == 'Тест':
             self.mController.delete_test()
         else:
             lbl = self.active_class_item.text(0)[-1]
             self.mController.delete_data(lbl)
     self.active_class_item = None
Exemple #30
0
    def open_image(self, checked=False, path=None):
        if path is None:
            dlg = QFileDialog()
            dlg.setFileMode(QFileDialog.ExistingFile)
            dlg.setFilter("Image Files (*.NEF *.TIFF *.TIF)")
            filenames = []
            if dlg.exec_():
                filenames = dlg.selectedFiles()
            if len(filenames) >= 1:
                path = unicode(filenames[0])
            else:
                #TODO: add messagebox
                return

        if os.path.isfile(path):
            filename = os.path.basename(path)
            if path not in self.current_images:
                im = cv2.imread(path, -1)
                widget = QImageWidget()
                visualization = im.copy()
                if visualization .shape[0] > self.screen_size.height():
                    visualization = self.image_resize(visualization , height=self.screen_size.height()-200)
                if visualization .shape[1] > self.screen_size.width():
                    visualization  = self.image_resize(visualization , width=self.screen_size.width()-200)
                widget.set_opencv_image(visualization )
                new_image = {"filename": filename, "path": path, "data":im, "widget": widget}
                self.create_image_tab(new_image)
            else:
                #TODO: Go to tab
                pass
            self.current_images.append(new_image)
            self.statusBar().showMessage("Opened file %s"%filename)
        else:
            mb = QMessageBox("ERROR in path", "Path to file \n%s\ncould not be found."%path,  QMessageBox.Warning, QMessageBox.Ok, 0, 0)
            mb.exec_()