On Tue, 2019-10-01 at 21:02 +0200, Davide Nitti via evince-list wrote: > I'm making a pdf editor in python reusing evince and Gtk libraries. > > I would like to add a link with a click, but I don't know *how to > convert the cursor position I get from the click event to the > position and page in the pdf document.* > > I would also like to *add annotations* (highlights for example), this > should be implemented in evince, but I don't know how to import this > feature in python.
You might want to start with something simpler, like adding an
annotation based on the text already selected. Something like the
design proposal in h
ttps://wiki.gnome.org/Design/Apps/DocumentViewer#Discussion
To achieve that, you could do something like:
class ...
def __init__(...):
...
self.view.connect('button-event',
self.on_button_release_event)
...
box = Gtk.Box()
button = Gtk.Button.new_with_mnemonic("_Highlight")
button.connect("clicked", self.on_open_clicked)
box.pack_start(button, True, True, 0)
button.set_border_width(6)
self.popover = Gtk.Popover()
self.popover.add(box)
self.popover.set_position(Gtk.PositionType.BOTTOM)
self.popover.set_relative_to(self.view)
...
def on_button_release_event(self, view, event):
pos = Gdk.Rectangle()
pos.x, pos.y = event.x + 6, event.y + 6
pos.width, pos.height = 0, 0
if self.view.get_has_selection():
self.popover.set_pointing_to(pos)
self.popover.show_all()
self.popover.popup()
else:
self.popover.popdown()
def on_open_clicked(self, button):
if self.view.get_has_selection():
self.view.add_text_markup_annotation_for_selected_text()
self.popover.popdown()
if you want a different type of markup annotation, then you would need
to set it up to squiggly, StrikeOut, or Underline.
If you want to do it interactively, then you can use:
self.view.begin_add_annotation(annot_type)
then you can explore the values in EvinceDocument.Annotation*
You can take a look at how is implemented in Evince, for example, in
https://gitlab.gnome.org/GNOME/evince/blob/master/shell/ev-window.c
search for annotation/annot.
Best,
--
Germán Poo-Caamaño
https://calcifer.org/
signature.asc
Description: This is a digitally signed message part
_______________________________________________ evince-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/evince-list
