コード例 #1
0
ファイル: editor.py プロジェクト: BlaXpirit/sixcells
 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
コード例 #2
0
ファイル: common.py プロジェクト: Oaz/sixcells
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
コード例 #3
0
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
コード例 #4
0
 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
コード例 #5
0
ファイル: common.py プロジェクト: MarkWesterhoff/sixcells
 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
コード例 #6
0
ファイル: editor.py プロジェクト: Oaz/sixcells
 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
コード例 #7
0
 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
コード例 #8
0
ファイル: editor.py プロジェクト: Oaz/sixcells
 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
コード例 #9
0
ファイル: editor.py プロジェクト: Oaz/sixcells
 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
コード例 #10
0
ファイル: editor.py プロジェクト: Oaz/sixcells
 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
コード例 #11
0
 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