def test_set_image_from_pbosf(self): image = Gtk.Image() if hasattr(Gtk.Image, "new_from_surface"): sf = cairo.ImageSurface(cairo.FORMAT_RGB24, 10, 10) set_image_from_pbosf(image, sf) self.assertTrue(image.props.surface) rgb = GdkPixbuf.Colorspace.RGB newpb = GdkPixbuf.Pixbuf.new(rgb, True, 8, 10, 10) set_image_from_pbosf(image, newpb) self.assertTrue(image.props.pixbuf)
def __init__(self, title, fileobj, parent): super(BigCenteredImage, self).__init__(type=Gtk.WindowType.POPUP) self.set_type_hint(Gdk.WindowTypeHint.TOOLTIP) assert parent parent = qltk.get_top_parent(parent) self.set_transient_for(parent) if qltk.is_wayland(): # no screen size with wayland, the parent window is # the next best thing.. width, height = parent.get_size() width = int(width / 1.1) height = int(height / 1.1) else: width = int(Gdk.Screen.width() / 1.75) height = int(Gdk.Screen.height() / 1.75) self.set_position(Gtk.WindowPosition.CENTER_ON_PARENT) scale_factor = get_scale_factor(self) pixbuf = None try: pixbuf = pixbuf_from_file(fileobj, (width, height), scale_factor) except GLib.GError: pass # failed to load, abort if not pixbuf: self.destroy() return image = Gtk.Image() set_image_from_pbosf(image, get_pbosf_for_pixbuf(self, pixbuf)) event_box = Gtk.EventBox() event_box.add(image) frame = Gtk.Frame() frame.set_shadow_type(Gtk.ShadowType.OUT) frame.add(event_box) self.add(frame) event_box.connect('button-press-event', self.__destroy) event_box.connect('key-press-event', self.__destroy) self.get_child().show_all()
def __scale_pixbuf(self, *data): if not self.current_pixbuf: return pixbuf = self.current_pixbuf if not self.window_fit.get_active(): pbosf = pixbuf else: alloc = self.scrolled.get_allocation() width = alloc.width height = alloc.height scale_factor = get_scale_factor(self) boundary = (width * scale_factor, height * scale_factor) pixbuf = scale(pixbuf, boundary, scale_up=False) pbosf = get_pbosf_for_pixbuf(self, pixbuf) set_image_from_pbosf(self.image, pbosf)
def idle_set(): set_image_from_pbosf(self.image, pixbuf)