def ask_save_filename(self): if gtk.pygtk_version < (2, 3, 90): alert.critical_dialog("PyGtk 2.3.90 or later required") return None dialog = gtk.FileChooserDialog("Save..", None, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) filter = gtk.FileFilter() filter.set_name("All files") filter.add_pattern("*") dialog.add_filter(filter) filter = gtk.FileFilter() filter.set_name("Images") filter.add_mime_type("image/png") filter.add_mime_type("image/svg") filter.add_mime_type("image/pdff") filter.add_pattern("*.png") filter.add_pattern("*.svg") filter.add_pattern("*.pdf") dialog.add_filter(filter) response = dialog.run() if response == gtk.RESPONSE_OK: filename = dialog.get_filename() elif response == gtk.RESPONSE_CANCEL: filename = None dialog.destroy() return filename
def ask_save_filename(self): if gtk.pygtk_version < (2,3,90): alert.critical_dialog( "PyGtk 2.3.90 or later required" ) return None dialog = gtk.FileChooserDialog("Save..", None, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK)) dialog.set_default_response(gtk.RESPONSE_OK) filter = gtk.FileFilter() filter.set_name("All files") filter.add_pattern("*") dialog.add_filter(filter) filter = gtk.FileFilter() filter.set_name("Images") filter.add_mime_type("image/png") filter.add_mime_type("image/svg") filter.add_mime_type("image/pdff") filter.add_pattern("*.png") filter.add_pattern("*.svg") filter.add_pattern("*.pdf") dialog.add_filter(filter) response = dialog.run() if response == gtk.RESPONSE_OK: filename = dialog.get_filename() elif response == gtk.RESPONSE_CANCEL: filename = None dialog.destroy() return filename
def do_save(self, *args): filename = self.ask_save_filename() # TODO other surfaces png, svg, pdf if filename is not None: save_file, extension = os.path.splitext(filename) try: if extension == ".svg": surface = cairo.SVGSurface(filename, 200, 200) self.draw_model(self._context_for_surface(surface)) # Note differs from png: no write_to_svg() elif extension == ".png": surface = cairo.ImageSurface(cairo.FORMAT_RGB24, 200, 200) self.draw_model(self._context_for_surface(surface)) try: surface.write_to_png(filename) except IOError: alert.critical_dialog("IO error.") return # width_in_points, height_in_points) else: alert.warning_dialog("Unsupported file extension: " + extension) my_logger.debug("Unsupported extension.") return except MemoryError: alert.critical_dialog( "Out of memory. You should save and restart now.") return surface.finish() my_logger.debug("File saved.")
def do_save(self, * args): filename = self.ask_save_filename() # TODO other surfaces png, svg, pdf if filename is not None: save_file, extension = os.path.splitext(filename) try: if extension == ".svg": surface = cairo.SVGSurface(filename, 200, 200) self.draw_model(self._context_for_surface(surface)) # Note differs from png: no write_to_svg() elif extension == ".png": surface = cairo.ImageSurface(cairo.FORMAT_RGB24, 200, 200) self.draw_model(self._context_for_surface(surface)) try: surface.write_to_png(filename) except IOError: alert.critical_dialog("IO error.") return # width_in_points, height_in_points) else: alert.warning_dialog("Unsupported file extension: " + extension) my_logger.debug("Unsupported extension.") return except MemoryError: alert.critical_dialog("Out of memory. You should save and restart now.") return surface.finish() my_logger.debug("File saved.")