Web · Wiki · Activities · Blog · Lists · Chat · Meeting · Bugs · Git · Translate · Archive · People · Donate

Commit fc9eefb085fc801f16b85b42e8d234a429dcabd9

Add page previews
scan.py
(36 / 3)
  
1717"""
1818from __future__ import with_statement
1919
20from StringIO import StringIO
2021from gettext import lgettext as _
2122from gettext import lngettext as ngettext
2223import logging
395395 with self._cond:
396396 return self._action in actions
397397
398 def _pil_image_to_pixbuf(self, image):
399 f = StringIO()
400 image.save(f, 'ppm')
401 contents = f.getvalue()
402 f.close()
403 loader = gtk.gdk.PixbufLoader('pnm')
404 loader.write(contents, len(contents))
405 pixbuf = loader.get_pixbuf()
406 loader.close()
407 return pixbuf
408
398409 def _process_image(self, image):
399410 image_file = tempfile.NamedTemporaryFile(dir=self._temp_dir,
400411 suffix='.png')
401412 image.save(image_file.name)
402413 image_file.flush()
414 image.thumbnail((1024, 1024))
415 preview = self._pil_image_to_pixbuf(image)
403416 info = {
404417 'file': image_file,
405418 'width_pixel': image.size[0],
406419 'height_pixel': image.size[1],
407420 'dpi': self._dpi,
421 'preview': preview,
408422 }
409423 del image
410424 return info
566566 msg_box.set_editable(False)
567567 msg_box.set_wrap_mode(gtk.WRAP_WORD)
568568 self._msg_box_buf = msg_box.get_buffer()
569 vbox.pack_start(msg_box, expand=True, fill=True)
570 msg_box.show()
569 #vbox.pack_start(msg_box, expand=False)
570 #msg_box.show()
571
572 images_window = gtk.ScrolledWindow()
573 images_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
574 self._images_model = gtk.ListStore(gtk.gdk.Pixbuf)
575 self._images_view = gtk.TreeView(self._images_model)
576 image_column = gtk.TreeViewColumn('Image', gtk.CellRendererPixbuf(),
577 pixbuf=0)
578 self._images_view.append_column(image_column)
579 self._images_view.set_headers_visible(False)
580 images_window.add(self._images_view)
581 images_window.show_all()
582 vbox.pack_start(images_window, expand=True)
583
571584 self.set_canvas(vbox)
572585 vbox.show()
573586
655655 num_images) % (num_images, ))
656656 self._save_button.set_sensitive(True)
657657
658 self._image_infos += image_infos
658 self._add_images(image_infos)
659659
660660 if not exc:
661661 self._set_status('ready')
662662 else:
663663 self._reopen_scanner()
664
665 def _add_images(self, image_infos):
666 self._image_infos += image_infos
667 for info in image_infos:
668 self._images_model.append([info['preview']])
664669
665670 @trace()
666671 def _save_button_cb(self, *args):