Example #1
0
 def load_file(self, fn=None):
     if not fn:
         try:
             dialog = QFileDialog.getOpenFileNameAndFilter
         except AttributeError:
             dialog = QFileDialog.getOpenFileName
         fn, _ = dialog(self, "Open", self.last_used_folder, "Hexcells/SixCells Level (*.hexcells *sixcells *.sixcellz)")
     if not fn:
         return
     if not self.close_file():
         return
     self.status = "Loading a level..."
     if fn.endswith('.hexcells'):
         try:
             load_hexcells(fn, self.scene, Cell=Cell, Column=Column)
         except ValueError as e:
             QMessageBox.critical(None, "Error", str(e))
             self.status = "Failed", 1
             return
     else:
         load_file(fn, self.scene, gz=fn.endswith('.sixcellz'), Cell=Cell, Column=Column)
     for it in self.scene.all(Column):
         it.cell = min(it.members, key=lambda m: (m.pos()-it.pos()).manhattanLength())
     self.view.fitInView(self.scene.itemsBoundingRect().adjusted(-0.5, -0.5, 0.5, 0.5), qt.KeepAspectRatio)
     if isinstance(fn, basestring):
         self.current_file = fn
         self.last_used_folder = os.path.dirname(fn)
     self.no_changes()
     self.status = "Done", 1
     return True
Example #2
0
 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
Example #3
0
 def load_file(self, fn=None):
     if not fn:
         try:
             dialog = QFileDialog.getOpenFileNameAndFilter
         except AttributeError:
             dialog = QFileDialog.getOpenFileName
         fn, _ = dialog(self, "Open", self.last_used_folder, "Hexcells/SixCells Level (*.hexcells *sixcells *.sixcellz)")
     if not fn:
         return
     if not self.close_file():
         return
     self.status = "Loading a level..."
     if fn.endswith('.hexcells'):
         try:
             load_hexcells(fn, self.scene, Cell=Cell, Column=Column)
         except ValueError as e:
             QMessageBox.critical(None, "Error", str(e))
             self.status = "Failed", 1
             return
     else:
         load_file(fn, self.scene, gz=fn.endswith('.sixcellz'), Cell=Cell, Column=Column)
     for it in self.scene.all(Column):
         it.cell = min(it.members, key=lambda m: (m.pos()-it.pos()).manhattanLength())
     self.view.fitInView(self.scene.itemsBoundingRect().adjusted(-0.5, -0.5, 0.5, 0.5), qt.KeepAspectRatio)
     if isinstance(fn, basestring):
         self.current_file = fn
         self.last_used_folder = os.path.dirname(fn)
     self.no_changes()
     self.status = "Done", 1
     return True
Example #4
0
 def open_from_web_page(self):
     import webpage
     dialog = webpage.Dialog(self)
     if dialog.exec_() == QDialog.Rejected:
         return
     if not self.close_file():
         return
     self.status = "Loading a level from web page..."
     try:
         load_hexcells(dialog.selected_level_file,
                       self.scene,
                       Cell=Cell,
                       Column=Column)
     except ValueError as e:
         QMessageBox.critical(None, "Error", str(e))
         self.status = "Failed", 1
         return
     for it in self.scene.all(Column):
         it.cell = min(it.members,
                       key=lambda m: (m.pos() - it.pos()).manhattanLength())
     self.view.fitInView(
         self.scene.itemsBoundingRect().adjusted(-0.5, -0.5, 0.5, 0.5),
         qt.KeepAspectRatio)
     self.no_changes()
     self.status = "Done", 1
     return True
Example #5
0
def show_exception():
    from traceback import format_exc
    from qt.widgets import QMessageBox
    
    lines = format_exc().replace('  ', '    ').splitlines()
    try:
        index = next(i for i in range(len(lines)) if '"settings/config.py"' in lines[i])
        lines = lines[index:]
    except StopIteration: pass
    QMessageBox.critical(None, "Steam Notifier", "Error traceback:\n"+'\n'.join(lines))
Example #6
0
 def load(self, level):
     if not self.close_file():
         return
     self.status = "Loading a level..."
     try:
         load(level, self.scene, Cell=self.Cell, Column=self.Column)
     except ValueError as e:
         QMessageBox.critical(None, "Error", str(e))
         self.status = "Failed", 1
         return
     self.prepare()
     self.status = "Done", 1
     return True
Example #7
0
 def load(self, level):
     if not self.close_file():
         return
     self.status = "Loading a level..."
     try:
         load(level, self.scene, Cell=self.Cell, Column=self.Column)
     except ValueError as e:
         QMessageBox.critical(None, "Error", str(e))
         self.status = "Failed", 1
         return
     self.prepare()
     self.status = "Done", 1
     return True
Example #8
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
Example #9
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
Example #10
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
Example #11
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
Example #12
0
 def open_from_web_page(self):
     import webpage
     dialog = webpage.Dialog(self)
     if dialog.exec_() == QDialog.Rejected:
         return
     if not self.close_file():
         return
     self.status = "Loading a level from web page..."
     try:
         load_hexcells(dialog.selected_level_file, self.scene, Cell=Cell, Column=Column)
     except ValueError as e:
         QMessageBox.critical(None, "Error", str(e))
         self.status = "Failed", 1
         return
     for it in self.scene.all(Column):
         it.cell = min(it.members, key=lambda m: (m.pos()-it.pos()).manhattanLength())
     self.view.fitInView(self.scene.itemsBoundingRect().adjusted(-0.5, -0.5, 0.5, 0.5), qt.KeepAspectRatio)
     self.no_changes()
     self.status = "Done", 1
     return True
Example #13
0
 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
Example #14
0
 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
Example #15
0
 def fetch_error(self):
   self.fetch_in_progress.reset()
   QMessageBox.critical(self, "Error", "Cannot fetch web page")
Example #16
0
 def fetch_error(self):
     self.fetch_in_progress.reset()
     QMessageBox.critical(self, "Error", "Cannot fetch web page")