def exportTable(model, parent=None): filters = [ 'CSV file (*.csv)', 'CSV TAB-delimited file (*.csv)', 'HTML file (*.html)', 'All files (*)', ] try: ncols = model.columnCount() except TypeError: # columnCount is a private method in QAbstractListModel ncols = 1 if ncols == 1: filters.insert(0, 'Text file (*.txt)') target = os.path.join(utils.default_workdir(), 'data.txt') if ncols == 2: filters.insert(0, 'INI file format (*.ini)') target = os.path.join(utils.default_workdir(), 'data.ini') else: target = os.path.join(utils.default_workdir(), 'data.csv') # @TODO: check if parent is None: try: parent = model.window() except AttributeError: parent = None filename, filter_ = QtWidgets.QFileDialog.getSaveFileName( parent, model.tr('Save'), target, ';;'.join(filters)) if filename: ext = os.path.splitext(filename)[-1] ext = ext.lower() if ext == '.csv' or ext == '.txt': if 'TAB' in filter_: dialect = 'excel-tab' else: dialect = 'excel' data = modelToCsv(model, dialect) elif ext == '.ini': cfg = modelToIni(model) fp = StringIO() cfg.write(fp) data = fp.getvalue() elif ext == '.html': doc = modelToTextDocument(model) data = doc.toHtml() else: # default data = modelToCsv(model, 'excel-tab') with open(filename, 'w') as fd: fd.write(data)
def exportKML(self): item = self._currentDatasetItem() if item is None: logging.info('no item to export.') QtGui.QMessageBox.information(self.app, self.tr('Information'), self.tr('No item to export.')) return src = item.filename filters = [ 'KML files (*.kml)', 'All files (*)', ] target = os.path.basename(src) target = os.path.splitext(target)[0] + '.kml' target = os.path.join(utils.default_workdir(), target) dst, filter_ = QtGui.QFileDialog.getSaveFileNameAndFilter( self.app, self.tr('Save KML'), target, ';;'.join(filters)) dst = str(dst) if dst: try: ras2vec.export_raster(src, dst, boxlayer='box', gcplayer='GCPs', mark_corners=True) except (OSError, RuntimeError): # @TODO: QtGui.QMessageBox.error(...) logging.error('unable to export "%s" to "%s".' % (src, dst))
def exportKML(self): item = self._currentDatasetItem() if item is None: _log.info('no item to export.') QtWidgets.QMessageBox.information( self.app, self.tr('Information'), self.tr('No item to export.')) return src = item.filename filters = [ 'KML files (*.kml)', 'All files (*)', ] target = os.path.basename(src) target = os.path.splitext(target)[0] + '.kml' target = os.path.join(utils.default_workdir(), target) dst, filter_ = QtWidgets.QFileDialog.getSaveFileName( self.app, self.tr('Save KML'), target, ';;'.join(filters)) dst = str(dst) if dst: try: ras2vec.export_raster(src, dst, boxlayer='box', gcplayer='GCPs', mark_corners=True) except (OSError, RuntimeError): # @TODO: QtWidgets.QMessageBox.error(...) _log.error('unable to export "%s" to "%s".', src, dst)
def _restoreFileDialogState(self, settings=None): if settings is None: settings = self.settings settings.beginGroup('filedialog') try: # state state = settings.value('state') if state is not None: try: # QFileDialog.restoreState is new in Qt 4.3 self.filedialog.restoreState(state) except AttributeError: _log.debug('unable to restore the file dialog state') # workdir workdir = settings.value('workdir', utils.default_workdir()) workdir = os.path.expanduser(os.path.expandvars(workdir)) self.filedialog.setDirectory(workdir) # history #history = settings.value('history') #if history: # self.filedialog.setHistory(history) # sidebar urls try: # QFileDialog.setSidebarUrls is new in Qt 4.3 sidebarurls = settings.value('sidebarurls') if sidebarurls: sidebarurls = [QtCore.QUrl(item) for item in sidebarurls] self.filedialog.setSidebarUrls(sidebarurls) except AttributeError: _log.debug('unable to restore sidebar URLs of the file dialog') finally: settings.endGroup()
def imgexport(obj, parent=None): filters = [ obj.tr('All files (*)'), obj.tr('Simple Vector Graphics file (*.svg)'), obj.tr('PDF file (*.pdf)'), obj.tr('PostScript file (*.ps)'), ] filters.extend('%s file (*.%s)' % ( str(fmt).upper(), str(fmt)) for fmt in QtGui.QImageWriter.supportedImageFormats()) formats = set( str(fmt).lower() for fmt in QtGui.QImageWriter.supportedImageFormats()) formats.update(('svg', 'pdf', 'ps')) # @TODO: check if parent is None: try: parent = obj.window() except AttributeError: parent = None target = os.path.join(utils.default_workdir(), 'image.jpeg') filename, filter_ = QtWidgets.QFileDialog.getSaveFileName( parent, obj.tr('Save picture'), target, ';;'.join(filters)) ext = 'unknown' while filename and (ext not in formats): ext = os.path.splitext(filename)[1] if ext: ext = ext[1:].lower() if ext in formats: break else: QtWidgets.QMessageBox.information( parent, obj.tr('Unknown file format'), obj.tr('Unknown file format "%s".\nPlease retry.') % ext) filename, filter_ = QtWidgets.QFileDialog.getSaveFileName( parent, obj.tr('Save draw'), filename, ';;'.join(filters), filter_) else: ext = 'unknown' if filename: if hasattr(obj, 'viewport'): srcsize = obj.viewport().rect().size() elif hasattr(obj, 'sceneRect'): # QGraphicsViews alsa has a viewport method so they should be # trapped by the previous check srcsize = obj.sceneRect().toRect().size() else: srcsize = QtWidgets.QSize(800, 600) if ext in ('pdf', 'ps'): device = QtPrintSupport.QPrinter(QtPrintSupport.QPrinter.HighResolution) device.setOutputFileName(filename) if ext == 'pdf': device.setOutputFormat(QtPrintSupport.QPrinter.PdfFormat) else: # ext == 'ps' device.setOutputFormat(QtPrintSupport.QPrinter.PostScriptFormat) elif ext == 'svg': device = QtSvg.QSvgGenerator() device.setFileName(filename) device.setSize(srcsize) #device.setViewBox(obj.sceneRect().toRect()) #device.setTitle(obj.tr('Graphics Draw')) #device.setDescription(obj.tr('Qt SVG drawing.')) else: device = QtGui.QPixmap(srcsize) # @TODO: check device.fill(QtCore.Qt.white) painter = QtGui.QPainter() if painter.begin(device): #painter.setRenderHint(QtGui.QPainter.Antialiasing) obj.render(painter) painter.end() if hasattr(device, 'save'): device.save(filename) else: QtWidgets.QMessageBox.warning( parent, obj.tr('Warning'), obj.tr('Unable initialize painting device.'))