def save_file(self, fn=None): if not fn: try: dialog = QFileDialog.getSaveFileNameAndFilter except AttributeError: dialog = QFileDialog.getSaveFileName fn, _ = dialog(self, "Save", self.last_used_folder, "Hexcells level (*.hexcells)") if not fn: return self.status = "Saving..." try: level, status = save(self.scene) with open(fn, 'wb') as f: f.write(level.encode('utf-8')) if isinstance(status, basestring): QMessageBox.warning(None, "Warning", status + '\n' + "Saved anyway.") self.no_changes() self.current_file = fn self.last_used_folder = os.path.dirname(fn) self.status = "Done", 1 self.center_on(*common.level_center) return True except ValueError as e: QMessageBox.critical(None, "Error", str(e)) self.status = "Failed", 1
def load_file(file, scene, Cell=Cell, Column=Column, gz=False): if isinstance(file, basestring): file = (gzip.open if gz else io.open)(file, 'rb') jj = file.read() if not isinstance(jj, unicode): jj = jj.decode('utf-8') try: jj = json.loads(jj) except Exception as e: QMessageBox.warning(None, "Error", "Error while parsing JSON:\n{}".format(e)) return False load(jj, scene, Cell=Cell, Column=Column) return True
def load_file(file, scene, Cell=Cell, Column=Column, gz=False): if isinstance(file, basestring): file = (gzip.open if gz else io.open)(file, 'rb') jj = file.read() if not isinstance(jj, unicode): jj = jj.decode('utf-8') try: jj = json.loads(jj) except Exception as e: QMessageBox.warning(None, "Error", "Error while parsing JSON:\n{}".format(e)) return False load(jj, scene, Cell=Cell, Column=Column) return True
def copy(self, padded=True, **kwargs): self.status = "Copying to clipboard..." try: level, status = save(self.scene, **kwargs) except Exception as e: QMessageBox.critical(None, "Error", str(e)) self.status = "Failed", 1 return if status: QMessageBox.warning(None, "Warning", status + '\n' + "Copied anyway.") if padded: level = '\t' + level.replace('\n', '\n\t') app.clipboard().setText(level) self.status = "Done", 1 return True
def copy(self, padded=True, **kwargs): self.status = "Copying to clipboard..." try: level, status = save(self.scene, **kwargs) except Exception as e: QMessageBox.critical(None, "Error", str(e)) self.status = "Failed", 1 return if status: QMessageBox.warning(None, "Warning", status + '\n' + "Copied anyway.") if padded: level = '\t' + level.replace('\n', '\n\t') app.clipboard().setText(level) self.status = "Done", 1 return True
def copy(self): self.status = "Copying to clipboard..." f = io.BytesIO() try: r = save_hexcells(f, self.scene) if isinstance(r, basestring): QMessageBox.warning(None, "Warning", r+'\n'+"Copied anyway.") except ValueError as e: QMessageBox.critical(None, "Error", str(e)) self.status = "Failed", 1 return f.seek(0) s = f.read().decode('utf-8') s = '\t'+s.replace('\n', '\n\t') app.clipboard().setText(s) self.status = "Done", 1 return True
def copy(self): self.status = "Copying to clipboard..." f = io.BytesIO() try: r = save_hexcells(f, self.scene) if isinstance(r, basestring): QMessageBox.warning(None, "Warning", r+'\n'+"Copied anyway.") except ValueError as e: QMessageBox.critical(None, "Error", str(e)) self.status = "Failed", 1 return f.seek(0) s = f.read().decode('utf-8') s = '\t'+s.replace('\n', '\n\t') app.clipboard().setText(s) self.status = "Done", 1 return True
def save_file(self, fn=None): if not fn: try: dialog = QFileDialog.getSaveFileNameAndFilter except AttributeError: dialog = QFileDialog.getSaveFileName fn, _ = dialog( self, "Save", self.last_used_folder, "Hexcells level (*.hexcells);;SixCells format (JSON) (*.sixcells);;SixCells format (JSON, gzipped) (*.sixcellz)" ) if not fn: return self.status = "Saving..." if fn.endswith('.hexcells'): try: r = save_hexcells(fn, self.scene) if isinstance(r, basestring): QMessageBox.warning(None, "Warning", r + '\n' + "Saved anyway.") self.no_changes() self.current_file = fn self.last_used_folder = os.path.dirname(fn) self.status = "Done", 1 return True except ValueError as e: QMessageBox.critical(None, "Error", str(e)) self.status = "Failed", 1 return try: gz = fn.endswith('.sixcellz') except AttributeError: gz = False save_file(fn, self.scene, pretty=True, gz=gz) self.no_changes() self.current_file = fn self.last_used_folder = os.path.dirname(fn) self.status = "Done", 1 return True
def save_file(self, fn=None): if not fn: try: dialog = QFileDialog.getSaveFileNameAndFilter except AttributeError: dialog = QFileDialog.getSaveFileName fn, _ = dialog(self, "Save", self.last_used_folder, "Hexcells level (*.hexcells);;SixCells format (JSON) (*.sixcells);;SixCells format (JSON, gzipped) (*.sixcellz)" ) if not fn: return self.status = "Saving..." if fn.endswith('.hexcells'): try: r = save_hexcells(fn, self.scene) if isinstance(r, basestring): QMessageBox.warning(None, "Warning", r+'\n'+"Saved anyway.") self.no_changes() self.current_file = fn self.last_used_folder = os.path.dirname(fn) self.status = "Done", 1 return True except ValueError as e: QMessageBox.critical(None, "Error", str(e)) self.status = "Failed", 1 return try: gz = fn.endswith('.sixcellz') except AttributeError: gz = False save_file(fn, self.scene, pretty=True, gz=gz) self.no_changes() self.current_file = fn self.last_used_folder = os.path.dirname(fn) self.status = "Done", 1 return True
def close_file(self): result = False if not self.any_changes: result = True else: if self.current_file: msg = "The level \"{}\" has been modified. Do you want to save it?".format(self.current_file) else: msg = "Do you want to save this level?" btn = QMessageBox.warning(self, "Unsaved changes", msg, QMessageBox.Save|QMessageBox.Discard|QMessageBox.Cancel, QMessageBox.Save) if btn==QMessageBox.Save: if self.save_file(self.current_file): result = True elif btn==QMessageBox.Discard: result = True if result: self.current_file = None self.scene.reset() self.no_changes() return result
def close_file(self): result = False if not self.any_changes: result = True else: if self.current_file: msg = "The level \"{}\" has been modified. Do you want to save it?".format(self.current_file) else: msg = "Do you want to save this level?" btn = QMessageBox.warning(self, "Unsaved changes", msg, QMessageBox.Save|QMessageBox.Discard|QMessageBox.Cancel, QMessageBox.Save) if btn==QMessageBox.Save: if self.save_file(self.current_file): result = True elif btn==QMessageBox.Discard: result = True if result: self.current_file = None self.scene.reset() self.no_changes() return result