Exemple #1
0
    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
Exemple #2
0
 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
Exemple #3
0
    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.")
Exemple #4
0
 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.")