Hi all.
I had earlier written a program using GTK2-bindings, to load a PDF, and highlight all the searched-words.
It worked perfectly fine there - highlighting the words, and scrolling to the desired page/location (if and when necessary).
I have then ported the program to GTK3, and seem to be getting the results in the callback function associated to "updated" signal.
However, neither do the words highlight, nor the scrolling takes place to the appropriate page/location.
Following is the ported program ::
################################################################################
from gi.repository import GObject
from gi.repository import Gtk
from gi.repository import EvinceView
from gi.repository import EvinceDocument
class EvinceViewer(Gtk.ScrolledWindow):
def __init__(self):
Gtk.ScrolledWindow.__init__(self)
EvinceDocument.init()
self._view = EvinceView.View()
self._view.find_set_highlight_search(True)
self.add(self._view)
self._find_job = None
self.load_document('file:///home/ajay/Downloads/Ajay_Garg_Resume.pdf')
self.find_text_first('demoable')
def load_document(self, file_path):
try:
self._document = EvinceDocument.Document.factory_get_document(file_path)
except GObject.GError, e:
print 'ERROR in loading'
return
else:
self._model = EvinceView.DocumentModel()
self._model.set_document(self._document)
self._view.set_model(self._model)
def find_text_first(self, text):
if text == "":
self._view.find_set_highlight_search(False)
return
self._view.find_set_highlight_search(True)
if self._find_job is not None:
self._find_job.cancel()
self._find_job.disconnect(self._find_updated_handler)
self._find_job = None
if text != "":
self._find_job = EvinceView.JobFind.new(self._document, 0,
self._document.get_n_pages(),
text, False)
self._find_updated_handler = \
self._find_job.connect('updated', self.__find_updated_cb)
EvinceView.Job.scheduler_push_job(self._find_job,
EvinceView.JobPriority.PRIORITY_NONE)
def __find_updated_cb(self, job, page=None):
print page
print job
#####
# This method no longer seems to be present in GTK3.
#self._view.find_changed(job, page)
#####
self._view.find_next()
win = Gtk.Window()
win.add(EvinceViewer())
win.maximize()
win.show_all()
Gtk.main()
################################################################################
################################################################################