def exportCharacter(self): """ Diese Funktion druckt den Charakter in ein PDF-Dokument. """ appPath = PathTools.program_path() # Pfad zum Speicherverzeichnis savePath = "{}/{}".format(appPath, Config.SAVE_DIR) # Wenn Unterverzeichnis nicht existiert, erstelle es if not os.path.exists(savePath): os.makedirs(savePath) if GlobalState.is_develop: filePath = "{}/untitled.pdf".format(savePath) else: fileData = QFileDialog.getSaveFileName( self, self.tr("Export Character"), "{}/untitled.pdf".format(savePath), self.tr("Portable Document Format (*.pdf)")) # Sollte PySide verwendet werden! #filePath = fileData[0] # Sollte PyQt4 verwendet werden! filePath = fileData # Ohne diese Abfrage, würde der Druckauftrag auch bei einem angeblichen Abbrechen an den Drucker geschickt, aber wegen der Einstellungen als pdf etc. kommt ein seltsamer Ausdruck heraus. War zumindest zu C++-Zeiten so. if (filePath): self.__createPdf(filePath)
def exportCharacter(self): """ Diese Funktion druckt den Charakter in ein PDF-Dokument. """ appPath = PathTools.program_path() # Pfad zum Speicherverzeichnis savePath = "{}/{}".format(appPath, Config.SAVE_DIR) # Wenn Unterverzeichnis nicht existiert, erstelle es if not os.path.exists(savePath): os.makedirs(savePath) if GlobalState.is_develop: filePath = "{}/untitled.pdf".format(savePath) else: fileData = QFileDialog.getSaveFileName( self, self.tr( "Export Character" ), "{}/untitled.pdf".format(savePath), self.tr( "Portable Document Format (*.pdf)" ) ) # Sollte PySide verwendet werden! #filePath = fileData[0] # Sollte PyQt4 verwendet werden! filePath = fileData # Ohne diese Abfrage, würde der Druckauftrag auch bei einem angeblichen Abbrechen an den Drucker geschickt, aber wegen der Einstellungen als pdf etc. kommt ein seltsamer Ausdruck heraus. War zumindest zu C++-Zeiten so. if ( filePath ): self.__createPdf(filePath)
def saveCharacter(self): """ Über diese Funktion wird erst der Dialog aufgerufen zum Aussuchen des Speicherortes und danach dann das Schreiben des Charakters in eine XML-Datei eingeletiet. """ appPath = PathTools.program_path() # Pfad zum Speicherverzeichnis savePath = "{}/{}".format(appPath, Config.SAVE_DIR) # Wenn Unterverzeichnis nicht existiert, erstelle es if not os.path.exists(savePath): os.makedirs(savePath) fileData = QFileDialog.getSaveFileName( self, self.tr( "Save Character" ), "{}/untitled.{}".format(savePath, Config.FILE_SUFFIX_SAVE), self.tr( "WoD Characters (*.{})".format(Config.FILE_SUFFIX_SAVE) ) ) # Sollte PySide verwendet werden! #filePath = fileData[0] # Sollte PyQt4 verwendet werden! filePath = fileData # Nur Speichern, wenn ein Name eingegeben wurde. if filePath: try: self.__writeCharacter.write( filePath ) except ErrXmlVersion as e: MessageBox.exception( self, e.message(), e.description() ) except ErrXmlParsing as e: MessageBox.exception( self, e.message(), e.description() ) except ErrFileNotOpened as e: MessageBox.exception( self, e.message(), e.description() ) # Unmittelbar nach dem Speichern ist der Charkter natürlich nicht mehr 'geändert'. self.__character.setModified( False )
def templates_include(): """ Erstellt eine Liste aller zu kopierender template-Dateien. """ result = [] for item in os.listdir( os.path.join( PathTools.program_path(), Config.PATH_RESOURCE, Config.RESOURCE_DIR_TEMPLATES ) ): result.append( os.path.join( Config.PATH_RESOURCE, Config.RESOURCE_DIR_TEMPLATES, item ) ) return result
def openCharacter(self, fileName=None): """ Über diese Funktion wird der Dialog aufgerufen, um einen gespeicherten Charakter in das Programm laden zu können. """ # Warnen, wenn der vorherige Charakter noch nicht gespeichert wurde! if ( self.maybeSave() ): #Debug.debug("Open") filePath = "" if fileName: filePath = fileName else: appPath = PathTools.program_path() # Pfad zum Speicherverzeichnis savePath = "{}/{}".format(appPath, Config.SAVE_DIR) # Wenn Unterverzeichnis nicht existiert, suche im Programmverzeichnis. if ( not os.path.exists( savePath ) ): savePath = appPath fileData = QFileDialog.getOpenFileName( self, self.tr( "Select Character File" ), savePath, self.tr( "WoD Characters (*.{})".format(Config.FILE_SUFFIX_SAVE) ) ) # Sollte PySide verwendet werden! #filePath = fileData[0] # Sollte PyQt4 verwendet werden! filePath = fileData if ( filePath ): # Charakter wird erst gelöscht, wenn auch wirklich ein neuer Charkater geladen werden soll. self.__character.resetCharacter() ## Verhindern, daß unnötig Warnungen auftauchen, wenn man einen Charakter lädt. self.__character.isLoading = True try: self.__readCharacter.read(filePath) except ErrXmlVersion as e: MessageBox.error( self, e ) except ErrXmlParsing as e: MessageBox.error( self, e ) except ErrFileNotOpened as e: MessageBox.error( self, e ) # Unmittelbar nach dem Laden ist der Charkter natürlich nicht mehr 'geändert'. self.__character.setModified( False ) self.__character.isLoading = False
def openCharacter(self, fileName=None): """ Über diese Funktion wird der Dialog aufgerufen, um einen gespeicherten Charakter in das Programm laden zu können. """ # Warnen, wenn der vorherige Charakter noch nicht gespeichert wurde! if (self.maybeSave()): #Debug.debug("Open") filePath = "" if fileName: filePath = fileName else: appPath = PathTools.program_path() # Pfad zum Speicherverzeichnis savePath = "{}/{}".format(appPath, Config.SAVE_DIR) # Wenn Unterverzeichnis nicht existiert, suche im Programmverzeichnis. if (not os.path.exists(savePath)): savePath = appPath fileData = QFileDialog.getOpenFileName( self, self.tr("Select Character File"), savePath, self.tr("WoD Characters (*.{})".format( Config.FILE_SUFFIX_SAVE))) # Sollte PySide verwendet werden! #filePath = fileData[0] # Sollte PyQt4 verwendet werden! filePath = fileData if (filePath): # Charakter wird erst gelöscht, wenn auch wirklich ein neuer Charkater geladen werden soll. self.__character.resetCharacter() ## Verhindern, daß unnötig Warnungen auftauchen, wenn man einen Charakter lädt. self.__character.isLoading = True try: self.__readCharacter.read(filePath) except ErrXmlVersion as e: MessageBox.error(self, e) except ErrXmlParsing as e: MessageBox.error(self, e) except ErrFileNotOpened as e: MessageBox.error(self, e) # Unmittelbar nach dem Laden ist der Charkter natürlich nicht mehr 'geändert'. self.__character.setModified(False) self.__character.isLoading = False
def templates_include(): """ Erstellt eine Liste aller zu kopierender template-Dateien. """ result = [] for item in os.listdir( os.path.join(PathTools.program_path(), Config.PATH_RESOURCE, Config.RESOURCE_DIR_TEMPLATES)): result.append( os.path.join(Config.PATH_RESOURCE, Config.RESOURCE_DIR_TEMPLATES, item)) return result
def __init__(self, template, parent=None): """ \warning Aufgrund der multiplen Vererbung wird nicht die super()-Methode beim Aufruf der __init__()-Methoden der Elternkalssen verwendet. """ QObject.__init__(self, parent) ReadXml.__init__(self) self.__storage = template ## Die Template-Dateien alle für das Laden vorbereiten. self.__templateFiles = [] path_to_templates = os.path.join( PathTools.program_path(), Config.PATH_RESOURCE, Config.RESOURCE_DIR_TEMPLATES ) for template_file in os.listdir(path_to_templates): if template_file.endswith(".{}".format(Config.FILE_SUFFIX_COMPRESSED)): self.__templateFiles.append( os.path.join( path_to_templates, template_file ) )
def writeSettings(self): """ Speichert die Konfiguration dieses Programms für den nächsten Aufruf. """ settings = Settings( "{}/{}".format(PathTools.program_path(), Config.CONFIG_FILE )) settings.beginGroup( "MainWindow" ) settings.setValue( "size", self.size() ) settings.setValue( "pos", self.pos() ) settings.setValue( "state", self.saveState() ) settings.endGroup() settings.beginGroup( "Config" ) settings.setValue( "autoSelectEra", Config.era_auto_select ) settings.setValue( "compressSaves", Config.compress_saves ) settings.endGroup()
def writeSettings(self): """ Speichert die Konfiguration dieses Programms für den nächsten Aufruf. """ settings = Settings("{}/{}".format(PathTools.program_path(), Config.CONFIG_FILE)) settings.beginGroup("MainWindow") settings.setValue("size", self.size()) settings.setValue("pos", self.pos()) settings.setValue("state", self.saveState()) settings.endGroup() settings.beginGroup("Config") settings.setValue("autoSelectEra", Config.era_auto_select) settings.setValue("compressSaves", Config.compress_saves) settings.endGroup()
def readSettings(self): """ Liest die Einstellungen für das Programm aus der Konfigurationsdatei. """ appPath = PathTools.program_path() settings = Settings( "{}/{}".format(appPath, Config.CONFIG_FILE)) settings.beginGroup( "MainWindow" ) self.resize( settings.value( "size", QSize( 900, 600 ) ) ) self.move( settings.value( "pos", QPoint( 200, 200 ) ) ) self.restoreState( QByteArray( settings.value( "state", "0" ) ) ) settings.endGroup() settings.beginGroup( "Config" ) Config.era_auto_select = str(settings.value( "autoSelectEra" )).lower() != "false" Config.compress_saves = str(settings.value( "compressSaves" )).lower() != "false" settings.endGroup()
def __init__(self, template, parent=None): """ \warning Aufgrund der multiplen Vererbung wird nicht die super()-Methode beim Aufruf der __init__()-Methoden der Elternkalssen verwendet. """ QObject.__init__(self, parent) ReadXml.__init__(self) self.__storage = template ## Die Template-Dateien alle für das Laden vorbereiten. self.__templateFiles = [] path_to_templates = os.path.join(PathTools.program_path(), Config.PATH_RESOURCE, Config.RESOURCE_DIR_TEMPLATES) for template_file in os.listdir(path_to_templates): if template_file.endswith(".{}".format( Config.FILE_SUFFIX_COMPRESSED)): self.__templateFiles.append( os.path.join(path_to_templates, template_file))
def readSettings(self): """ Liest die Einstellungen für das Programm aus der Konfigurationsdatei. """ appPath = PathTools.program_path() settings = Settings("{}/{}".format(appPath, Config.CONFIG_FILE)) settings.beginGroup("MainWindow") self.resize(settings.value("size", QSize(900, 600))) self.move(settings.value("pos", QPoint(200, 200))) self.restoreState(QByteArray(settings.value("state", "0"))) settings.endGroup() settings.beginGroup("Config") Config.era_auto_select = str( settings.value("autoSelectEra")).lower() != "false" Config.compress_saves = str( settings.value("compressSaves")).lower() != "false" settings.endGroup()
def openImage(self): """ Öffnet einen Dialog zum Laden eines Charakterbildes und speichert selbiges im Charakter-Speicher. \note Das Bild wird auf eine in der Configurationsdatei festgelegte Maximalgröße skaliert, um die Größe überschaubar zu halten. """ appPath = PathTools.program_path() # Pfad zum Speicherverzeichnis savePath = "" if os.name == "nt": savePath = os.environ['HOMEPATH'] else: savePath = os.environ['HOME'] # Wenn Unterverzeichnis nicht existiert, suche im Programmverzeichnis. if (not os.path.exists(savePath)): savePath = appPath fileData = QFileDialog.getOpenFileName( self, self.tr("Select Image File"), savePath, self. tr("Images (*.jpg *.jpeg *.png *.bmp *.gif *.pgm *.pbm *.ppm *.svg )" )) # Sollte PySide verwendet werden! #filePath = fileData[0] # Sollte PyQt4 verwendet werden! filePath = fileData if (filePath): image = QPixmap(filePath) if image.width() > Config.CHARACTER_PIC_WIDTH_MAX or image.height( ) > Config.CHARACTER_PIC_HEIGHT_MAX: image = image.scaled(800, 800, Qt.KeepAspectRatio) self.updatePicture(image) self.__character.picture = image
def openImage(self ): """ Öffnet einen Dialog zum Laden eines Charakterbildes und speichert selbiges im Charakter-Speicher. \note Das Bild wird auf eine in der Configurationsdatei festgelegte Maximalgröße skaliert, um die Größe überschaubar zu halten. """ appPath = PathTools.program_path() # Pfad zum Speicherverzeichnis savePath = "" if os.name == "nt": savePath = os.environ['HOMEPATH'] else: savePath = os.environ['HOME'] # Wenn Unterverzeichnis nicht existiert, suche im Programmverzeichnis. if ( not os.path.exists( savePath ) ): savePath = appPath fileData = QFileDialog.getOpenFileName( self, self.tr( "Select Image File" ), savePath, self.tr( "Images (*.jpg *.jpeg *.png *.bmp *.gif *.pgm *.pbm *.ppm *.svg )" ) ) # Sollte PySide verwendet werden! #filePath = fileData[0] # Sollte PyQt4 verwendet werden! filePath = fileData if ( filePath ): image = QPixmap(filePath) if image.width() > Config.CHARACTER_PIC_WIDTH_MAX or image.height() > Config.CHARACTER_PIC_HEIGHT_MAX: image = image.scaled(800, 800, Qt.KeepAspectRatio) self.updatePicture(image) self.__character.picture = image
def saveCharacter(self): """ Über diese Funktion wird erst der Dialog aufgerufen zum Aussuchen des Speicherortes und danach dann das Schreiben des Charakters in eine XML-Datei eingeletiet. """ appPath = PathTools.program_path() # Pfad zum Speicherverzeichnis savePath = "{}/{}".format(appPath, Config.SAVE_DIR) # Wenn Unterverzeichnis nicht existiert, erstelle es if not os.path.exists(savePath): os.makedirs(savePath) fileData = QFileDialog.getSaveFileName( self, self.tr("Save Character"), "{}/untitled.{}".format(savePath, Config.FILE_SUFFIX_SAVE), self.tr("WoD Characters (*.{})".format(Config.FILE_SUFFIX_SAVE))) # Sollte PySide verwendet werden! #filePath = fileData[0] # Sollte PyQt4 verwendet werden! filePath = fileData # Nur Speichern, wenn ein Name eingegeben wurde. if filePath: try: self.__writeCharacter.write(filePath) except ErrXmlVersion as e: MessageBox.exception(self, e.message(), e.description()) except ErrXmlParsing as e: MessageBox.exception(self, e.message(), e.description()) except ErrFileNotOpened as e: MessageBox.exception(self, e.message(), e.description()) # Unmittelbar nach dem Speichern ist der Charkter natürlich nicht mehr 'geändert'. self.__character.setModified(False)