parent
6ece4ce742
commit
bdbecfa46c
@ -100,6 +100,7 @@ class EditMediaRef(EditReference):
|
|||||||
tblref = self.top.get_object('table50')
|
tblref = self.top.get_object('table50')
|
||||||
self.notebook_ref = self.top.get_object('notebook_ref')
|
self.notebook_ref = self.top.get_object('notebook_ref')
|
||||||
self.track_ref_for_deletion("notebook_ref")
|
self.track_ref_for_deletion("notebook_ref")
|
||||||
|
self.expander = self.top.get_object('expander1')
|
||||||
#recreate start page as GrampsTab
|
#recreate start page as GrampsTab
|
||||||
self.notebook_ref.remove_page(0)
|
self.notebook_ref.remove_page(0)
|
||||||
self.reftab = RefTab(self.dbstate, self.uistate, self.track,
|
self.reftab = RefTab(self.dbstate, self.uistate, self.track,
|
||||||
@ -187,6 +188,7 @@ class EditMediaRef(EditReference):
|
|||||||
self.selection.set_multiple_selection(False)
|
self.selection.set_multiple_selection(False)
|
||||||
self.selection.connect("region-modified", self.region_modified)
|
self.selection.connect("region-modified", self.region_modified)
|
||||||
self.selection.connect("region-created", self.region_modified)
|
self.selection.connect("region-created", self.region_modified)
|
||||||
|
self.expander.connect("activate", self.selection.expander)
|
||||||
frame = self.top.get_object("frame9")
|
frame = self.top.get_object("frame9")
|
||||||
frame.add(self.selection)
|
frame.add(self.selection)
|
||||||
self.track_ref_for_deletion("selection")
|
self.track_ref_for_deletion("selection")
|
||||||
|
@ -197,6 +197,7 @@ class SelectionWidget(Gtk.ScrolledWindow):
|
|||||||
self.pixbuf = None
|
self.pixbuf = None
|
||||||
self.scaled_pixbuf = None
|
self.scaled_pixbuf = None
|
||||||
self.scale = 1.0
|
self.scale = 1.0
|
||||||
|
self.old_viewport_size = None
|
||||||
|
|
||||||
Gtk.ScrolledWindow.__init__(self)
|
Gtk.ScrolledWindow.__init__(self)
|
||||||
self.add(self._build_gui())
|
self.add(self._build_gui())
|
||||||
@ -227,6 +228,7 @@ class SelectionWidget(Gtk.ScrolledWindow):
|
|||||||
self.event_box.add(self.image)
|
self.event_box.add(self.image)
|
||||||
|
|
||||||
self.viewport = Gtk.Viewport()
|
self.viewport = Gtk.Viewport()
|
||||||
|
self.connect("size-allocate", self._resize)
|
||||||
self.viewport.add(self.event_box)
|
self.viewport.add(self.event_box)
|
||||||
return self.viewport
|
return self.viewport
|
||||||
|
|
||||||
@ -296,6 +298,7 @@ class SelectionWidget(Gtk.ScrolledWindow):
|
|||||||
self.pixbuf.get_height())
|
self.pixbuf.get_height())
|
||||||
|
|
||||||
viewport_size = self.viewport.get_allocation()
|
viewport_size = self.viewport.get_allocation()
|
||||||
|
self.old_viewport_size = viewport_size
|
||||||
self.scale = scale_to_fit(self.pixbuf.get_width(),
|
self.scale = scale_to_fit(self.pixbuf.get_width(),
|
||||||
self.pixbuf.get_height(),
|
self.pixbuf.get_height(),
|
||||||
viewport_size.width,
|
viewport_size.width,
|
||||||
@ -313,6 +316,32 @@ class SelectionWidget(Gtk.ScrolledWindow):
|
|||||||
self.image.set_from_icon_name('image-missing', Gtk.IconSize.DIALOG)
|
self.image.set_from_icon_name('image-missing', Gtk.IconSize.DIALOG)
|
||||||
self.image.queue_draw()
|
self.image.queue_draw()
|
||||||
|
|
||||||
|
def _resize(self, *dummy):
|
||||||
|
"""
|
||||||
|
Handles size-allocate' events from Gtk.
|
||||||
|
"""
|
||||||
|
if self.pixbuf:
|
||||||
|
viewport_size = self.viewport.get_allocation()
|
||||||
|
if viewport_size.height != self.old_viewport_size.height or \
|
||||||
|
viewport_size.width != self.old_viewport_size.width or \
|
||||||
|
not self.image.get_pixbuf():
|
||||||
|
self.scale = scale_to_fit(self.pixbuf.get_width(),
|
||||||
|
self.pixbuf.get_height(),
|
||||||
|
viewport_size.width,
|
||||||
|
viewport_size.height)
|
||||||
|
self._rescale()
|
||||||
|
self.old_viewport_size = viewport_size
|
||||||
|
return False
|
||||||
|
|
||||||
|
def expander(self, *dummy):
|
||||||
|
""" Handler for expander in caller; needed because Gtk doesn't handle
|
||||||
|
verticle expansion right
|
||||||
|
"""
|
||||||
|
self.image.clear()
|
||||||
|
self.image.set_size_request(2, 2)
|
||||||
|
self.event_box.set_size_request(2, 2)
|
||||||
|
return False
|
||||||
|
|
||||||
# ======================================================
|
# ======================================================
|
||||||
# coordinate transformations (public methods)
|
# coordinate transformations (public methods)
|
||||||
# ======================================================
|
# ======================================================
|
||||||
@ -531,14 +560,14 @@ class SelectionWidget(Gtk.ScrolledWindow):
|
|||||||
# drawing and scaling the image
|
# drawing and scaling the image
|
||||||
# ======================================================
|
# ======================================================
|
||||||
|
|
||||||
def _expose_handler(self, widget, event):
|
def _expose_handler(self, widget, cr):
|
||||||
"""
|
"""
|
||||||
Handles the expose-event signal of the underlying widget.
|
Handles the expose-event signal of the underlying widget.
|
||||||
"""
|
"""
|
||||||
if self.pixbuf:
|
if self.pixbuf:
|
||||||
self._draw_selection()
|
self._draw_selection(widget, cr)
|
||||||
|
|
||||||
def _draw_selection(self):
|
def _draw_selection(self, widget, cr):
|
||||||
"""
|
"""
|
||||||
Draws the image, the selection boxes and does the necessary
|
Draws the image, the selection boxes and does the necessary
|
||||||
shading.
|
shading.
|
||||||
@ -551,8 +580,6 @@ class SelectionWidget(Gtk.ScrolledWindow):
|
|||||||
offset_x -= 1
|
offset_x -= 1
|
||||||
offset_y -= 1
|
offset_y -= 1
|
||||||
|
|
||||||
cr = self.image.get_window().cairo_create()
|
|
||||||
|
|
||||||
if self.selection:
|
if self.selection:
|
||||||
x1, y1, x2, y2 = self._rect_image_to_screen(self.selection)
|
x1, y1, x2, y2 = self._rect_image_to_screen(self.selection)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user