def saveLabels(self): if self._label_path != None: if len(self._boxes()) == 0: print('Removing empty "{}"'.format(self._label_path)) try: os.remove(self._label_path) except OSError as ex: if ex.errno != errno.ENOENT: raise else: lf = QSaveFile(self._label_path) if not lf.open(QIODevice.WriteOnly | QIODevice.Text): raise IOError('Cannot open "{}" for writing'.format( self._label_path)) for bbox in self._boxes(): rect = bbox.rect() c = bbox.number x = (rect.x() + rect.width() / 2) / self._img_w y = (rect.y() + rect.height() / 2) / self._img_h w = rect.width() / self._img_w h = rect.height() / self._img_h line = '{c:d} {x:.10f} {y:.10f} {w:.10f} {h:.10f}\n'.format( c=c, x=x, y=y, w=w, h=h) lf.write(line.encode()) if lf.commit(): print('Wrote "{}"'.format(self._label_path)) else: raise IOError('Cannot write "{}"'.format(self._label_path))
def saveLabels(self): if self._label_path != None: if self._label_path.endswith(".jpg.txt"): self._label_path = self._label_path[:-8] + ".txt" lf = QSaveFile(self._label_path) if not lf.open(QIODevice.WriteOnly | QIODevice.Text): raise IOError('Cannot open "{}" for writing'.format( self._label_path)) for item in self.items(): if item.type() == BBOX: rect = item.rect() c = item.number x = (rect.x() + rect.width() / 2) / self._img_w y = (rect.y() + rect.height() / 2) / self._img_h w = rect.width() / self._img_w h = rect.height() / self._img_h line = '{c:d} {x:.10f} {y:.10f} {w:.10f} {h:.10f}\n'.format( c=c, x=x, y=y, w=w, h=h) lf.write(line.encode()) if lf.commit(): print('Wrote "{}"'.format(self._label_path)) else: raise IOError('Cannot write "{}"'.format(self._label_path))
def onSave(self): fPath = saveFileSelect() if fPath: file = QSaveFile(fPath) if not file.open(QIODevice.WriteOnly): return messageBox('Cannot open file for writing') file.write(self.logZone.toPlainText().encode()) file.commit()
def storeQGISui(self,force =False): try: # store current QGIS ui # layout qgisAppDataPath = QStandardPaths.standardLocations(QStandardPaths.AppDataLocation)[0] file = os.path.join(qgisAppDataPath, 'qgis_ui.bin') if not os.path.isfile(file) or force: if self.debug: self.info.log("storeQGISui:", self.helper.shortDisplayText(file)) f = QSaveFile(file) f.open(QIODevice.WriteOnly) f.write(self.iface.mainWindow().saveState()) f.commit() except Exception as e: self.info.err(e)
def saveFile(self): if self.filename is '': self.filename = QFileDialog.getSaveFileName(self.piirtoalusta)[0] if self.filename is not '': items = self.piirtoalusta.scene.items() if '.txt' not in self.filename: self.filename = "".join((self.filename, '.txt')) textfile = QSaveFile(self.filename) textfile.open(QIODevice.WriteOnly | QIODevice.Text) output = QByteArray() items = self.piirtoalusta.scene.items() save = Save(items) output.append(save.content) textfile.write(output) textfile.commit() return save.content
def saveStamp(self, stamp): # make sure we have a stamps directory prefs = preferences.Preferences.instance() stampsDirectory = prefs.stampsDirectory() stampsDir = QDir(stampsDirectory) if (not stampsDir.exists() and not stampsDir.mkpath(".")): qDebug("Failed to create stamps directory" + stampsDirectory) return filePath = stampsDir.filePath(stamp.fileName()) file = QSaveFile(filePath) if (not file.open(QIODevice.WriteOnly)): qDebug("Failed to open stamp file for writing" + filePath) return stampJson = stamp.toJson(QFileInfo(filePath).dir()) file.write(QJsonDocument(stampJson).toJson(QJsonDocument.Compact)) if (not file.commit()): qDebug() << "Failed to write stamp" << filePath
def export(self, file, simplif=False): """le type d'export est obtenu par analyse de l'extension file est un QString: tuple (nom de fichier, filtre) la simplification est lue depuis l'attribut QMW.simple """ # choix pour pst,pag choix = {True: self.xmlsimplif, False: self.xml} f = file[0] ext = f[-3:] # 3 derniers caractères if ext == "tex": o = self.tab2latex(simplif=simplif) t = QByteArray(o.encode("utf-8")) elif ext in ["pst", "pag"]: o = etree.tostring(choix[simplif], pretty_print=True) t = QByteArray(o) out = QSaveFile(file[0]) out.open(QIODevice.WriteOnly) # cette constante de classe vaut 2 out.write(t) out.commit()
def write(self, map, fileName): # Check layer count and type if (map.layerCount() != 1 or not map.layerAt(0).isTileLayer()): self.mError = self.tr( "The map needs to have exactly one tile layer!") return False mapLayer = map.layerAt(0).asTileLayer() # Check layer size if (mapLayer.width() != 48 or mapLayer.height() != 48): self.mError = self.tr( "The layer must have a size of 48 x 48 tiles!") return False # Create QByteArray and compress it uncompressed = QByteArray(48 * 48, b'\x00') width = mapLayer.width() height = mapLayer.height() for y in range(0, height): for x in range(0, width): tile = mapLayer.cellAt(x, y).tile if tile: # 'QByteArray' object does not support item assignment uncompressed.replace(y * width + x, 1, bytes([tile.id() & 0xff])) compressed = compress(uncompressed, CompressionMethod.Gzip) # Write QByteArray file = QSaveFile(fileName) if (not file.open(QIODevice.WriteOnly)): self.mError = self.tr("Could not open file for writing.") return False file.write(compressed) if not file.commit(): self.mError = file.errorString() return False return True
def write(self, map, fileName): # Check layer count and type if (map.layerCount() != 1 or not map.layerAt(0).isTileLayer()) : self.mError = self.tr("The map needs to have exactly one tile layer!") return False mapLayer = map.layerAt(0).asTileLayer() # Check layer size if (mapLayer.width() != 48 or mapLayer.height() != 48) : self.mError = self.tr("The layer must have a size of 48 x 48 tiles!") return False # Create QByteArray and compress it uncompressed = QByteArray(48 * 48, b'\x00') width = mapLayer.width() height = mapLayer.height() for y in range(0, height): for x in range(0, width): tile = mapLayer.cellAt(x, y).tile if tile: # 'QByteArray' object does not support item assignment uncompressed.replace(y * width + x, 1, bytes([tile.id()&0xff])) compressed = compress(uncompressed, CompressionMethod.Gzip) # Write QByteArray file = QSaveFile(fileName) if (not file.open(QIODevice.WriteOnly)) : self.mError = self.tr("Could not open file for writing.") return False file.write(compressed) if not file.commit(): self.mError = file.errorString() return False return True
def write(self, map, fileName): # Get file paths for each layer layerPaths = self.outputFiles(map, fileName) # Traverse all tile layers currentLayer = 0 for layer in map.layers(): if layer.layerType() != Layer.TileLayerType: continue tileLayer = layer file = QSaveFile(layerPaths[currentLayer]) if (not file.open(QIODevice.WriteOnly | QIODevice.Text)): self.mError = self.tr("Could not open file for writing.") return False # Write out tiles either by ID or their name, if given. -1 is "empty" for y in range(0, tileLayer.height()): for x in range(0, tileLayer.width()): if (x > 0): file.write(",") cell = tileLayer.cellAt(x, y) tile = cell.tile if (tile and tile.hasProperty("name")) : file.write(tile.property("name").encode()) else: if tile: id = tile.id() else: id = -1 file.write(QByteArray.number(id)) file.write("\n") if (file.error() != QFile.NoError) : self.mError = file.errorString() return False if (not file.commit()) : self.mError = file.errorString() return False return True
def write(self, map, fileName): # Get file paths for each layer layerPaths = self.outputFiles(map, fileName) # Traverse all tile layers currentLayer = 0 for layer in map.layers(): if layer.layerType() != Layer.TileLayerType: continue tileLayer = layer file = QSaveFile(layerPaths[currentLayer]) if (not file.open(QIODevice.WriteOnly | QIODevice.Text)): self.mError = self.tr("Could not open file for writing.") return False # Write out tiles either by ID or their name, if given. -1 is "empty" for y in range(0, tileLayer.height()): for x in range(0, tileLayer.width()): if (x > 0): file.write(",") cell = tileLayer.cellAt(x, y) tile = cell.tile if (tile and tile.hasProperty("name")): file.write(tile.property("name").encode()) else: if tile: id = tile.id() else: id = -1 file.write(QByteArray.number(id)) file.write("\n") if (file.error() != QFile.NoError): self.mError = file.errorString() return False if (not file.commit()): self.mError = file.errorString() return False return True