コード例 #1
0
ファイル: Workspace.py プロジェクト: walkoncross/YOSO
    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))
コード例 #2
0
ファイル: Workspace.py プロジェクト: ariaaan/pi-utils
    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))
コード例 #3
0
ファイル: eventlog.py プロジェクト: pinnaculum/galacteek
    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()
コード例 #4
0
ファイル: gto_qgis.py プロジェクト: msgis/swwat-gzp-template
 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)
コード例 #5
0
ファイル: files.py プロジェクト: tuomasisola/graphics_editor
 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
コード例 #6
0
    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
コード例 #7
0
 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()
コード例 #8
0
 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
コード例 #9
0
    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
コード例 #10
0
    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
コード例 #11
0
ファイル: csvplugin.py プロジェクト: theall/Python-Tiled
    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
コード例 #12
0
    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