Beispiel #1
0
    def on_import_image(self, widget):
        """Load an image file into Pynt (replaces current image)
           Currently must be a palette based file (e.g. GIF or palette PNG)"""
        filedir, filename = os.path.split(self.save_file)
        load_file = file_browse(gtk.FILE_CHOOSER_ACTION_OPEN, file_dir=filedir,
                                file_name="", file_ext="png")
        if load_file != "":
            img = Image.open(load_file)

            if img.mode != "P":
                # Convert to "optimal" 256 color palette
                img = img.convert("P", palette=Image.ADAPTIVE, colors=256)

            lut = img.resize((256, 1))
            lut.putdata(range(256))
            lut = list(lut.convert("RGB").getdata())

            print "Image size:", img.size

            stack = PyntStack(resolution=img.size, data = img)
            stack.set_palette(lut)
            stack.palette.set_colors(lut)
            #self.paletteview.palette = self.pe_paletteview.palette = self.stack.palette
            #self.paletteview.invalidate_all()
            #self.pe_paletteview.invalidate_all()

            #self.paper.stack = self.stack
            #self.paper.invalidate()
            self.stacks.append(stack)
            self.switch_stack(stack)
Beispiel #2
0
    def on_load_session(self, widget):
        filedir, filename = os.path.split(self.save_file)
        load_file = file_browse(gtk.FILE_CHOOSER_ACTION_OPEN,
                                file_dir=filedir,
                                file_name=filename, file_ext="pynt")
        if load_file != "":
            f = open(load_file, "r")
            self.save_file = load_file
            pyntdata = cPickle.load(f)
            self.stacks = []
            while self.page_notebook.get_n_pages() > 0:
                self.page_notebook.remove_page(-1)
            for s in pyntdata:
                self.add_image(stack=PyntStack(data=s))
                #self.stacks.append(PyntStack(data=s))
            #self.stacks = [PyntStack(data=stackdata) for stackdata in pyntdata]
            self.stack = self.stacks[0]
            f.close()

            self.paletteview.palette = self.pe_paletteview.palette = \
                self.stack.palette
            self.paletteview.invalidate_all()
            self.pe_paletteview.invalidate_all()
            self.paper.stack = self.stack

            self.paper.invalidate()

            self.update_page_label()
            self.update_frame_label()
            self.update_layer_label()
            self.update_window_title()
Beispiel #3
0
 def on_save_session_as(self, widget):
     """Save current session as a Pynt file (pickled python object)"""
     filedir, filename = os.path.split(self.save_file)
     save_file = file_browse(gtk.FILE_CHOOSER_ACTION_SAVE,
                             file_dir=filedir,
                             file_name=filename, file_ext="pynt")
     if save_file != "":
         self.save_file = self.save_session(save_file)
         self.update_window_title()
Beispiel #4
0
    def on_save_image_as(self, widget):
        """Save current image as a Pynt file (pickled python object)"""
        filedir, filename = os.path.split(self.save_file)
        save_file = file_browse(gtk.FILE_CHOOSER_ACTION_SAVE,
                                file_dir=filedir,
                                file_name=filename, file_ext="pynt")
        if save_file != "":
            if not save_file.endswith(".pynt"):
                save_file += ".pynt"
            pyntdata = PyntData(self.stack)
            pyntdata.save(save_file)

            self.save_file = save_file
            self.update_window_title()
Beispiel #5
0
 def on_export_image(self, widget):
     """Export image as a palette based PNG
     (layers are merged in the image).
     """
     filedir, filename = os.path.split(self.save_file)
     filename = os.path.splitext(filename)[0] + ".png"
     save_file = file_browse(gtk.FILE_CHOOSER_ACTION_SAVE, file_dir=filedir,
                             file_name=filename, file_ext="png")
     if save_file != "":
         path, extension = os.path.splitext(save_file)
         if extension == "":
             save_file = path + ".png"
         img = self.stack.get_area(*((0, 0) + self.stack.resolution))
         img.save(save_file, "PNG")
Beispiel #6
0
 def on_export_brush(self, widget):
     """Export image as a palette based PNG (layers are merged in the image)"""
     filedir, filename = os.path.split(self.brush_file)
     filename = os.path.splitext(filename)[0] + ".png"
     brush_file = file_browse(gtk.FILE_CHOOSER_ACTION_SAVE,
                              file_dir=filedir,
                              file_name=filename, file_ext="png")
     if brush_file != "":
         path, extension = os.path.splitext(brush_file)
         if extension == "":
             brush_file = path + ".png"
         #img = self.stack.get_area(*((0, 0) + self.stack.resolution))
         img = self.paper.brush.data  #.convert("RGB")
         img.save(brush_file, "PNG", transparency=0)
         self.brush_file = brush_file
Beispiel #7
0
    def on_load_image(self, widget):
        """Load a Pynt image file"""
        filedir, filename = os.path.split(self.save_file)
        load_file = file_browse(gtk.FILE_CHOOSER_ACTION_OPEN,
                                file_dir=filedir,
                                file_name=filename, file_ext="pynt")
        if load_file != "":
            f = open(load_file, "r")
            self.save_file = load_file
            pyntdata = cPickle.load(f)

            self.stack = PyntStack(data=pyntdata)

            self.paletteview.palette = self.pe_paletteview.palette = \
                self.stack.palette
            self.paletteview.invalidate_all()
            self.pe_paletteview.invalidate_all()
            self.paper.stack = self.stack

            self.scrolledwindow.remove(self.paper)
            self.paper = PyntPaper(self.stack)
            print "done"

            #self.image_notebook = self.mainTree.get_widget("image_notebook")
            self.scrolledwindow.add(self.paper)

            self.paper.connect("fgcolor-picked", self.set_fgcolor)
            self.paper.connect("bgcolor-picked", self.set_bgcolor)
            self.paper.connect("coords-changed", self.set_coords)
            self.paper.connect("set-tool", lambda w, t: self.set_tool(t))

            #self.set_width(1)
            self.paper.show()

            #self.paper.invalidate()

            self.update_frame_label()
            self.update_layer_label()
            self.update_window_title()

            f.close()