Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/port/tarball.py
diff options
context:
space:
mode:
Diffstat (limited to 'port/tarball.py')
-rw-r--r--port/tarball.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/port/tarball.py b/port/tarball.py
index d07a3e1..9e842b9 100644
--- a/port/tarball.py
+++ b/port/tarball.py
@@ -23,8 +23,6 @@ import zipfile
import tempfile
import shutil
-import port.pixbuf as pixbuf
-
class TarballError(Exception):
"""Base Tarball exception."""
pass
@@ -124,7 +122,10 @@ class Tarball:
def read_pixbuf(self, arcname):
"""Returns pixbuf object of given file from tarball."""
- return pixbuf.from_str(self.read(arcname))
+ loader = gtk.gdk.pixbuf_loader_new_with_mime_type('image/png')
+ loader.write(self.read(arcname))
+ loader.close()
+ return loader.get_pixbuf()
def write(self, arcname, data, mode=0644):
"""
@@ -147,8 +148,12 @@ class Tarball:
self.__tar.addfile(info, cStringIO.StringIO(data))
def __write_pixbuf(self, info, data):
- buffer = pixbuf.to_file(data)
- buffer.seek(0, os.SEEK_END)
+ def push(pixbuf, buffer):
+ buffer.write(pixbuf)
+
+ buffer = cStringIO.StringIO()
+ data.save_to_callback(push, 'png', user_data=buffer)
+
info.size = buffer.tell()
buffer.seek(0)
self.__tar.addfile(info, buffer)