Hi Gonzalo. Thanks a ton !!!
After I add the line https://git.sugarlabs.org/read/mainline/blobs/master/evinceadapter.py#line255, the above code works fine in Fedora-18; the view scrolled to the "found text" locations :) However, the same does not work on Fedora-17, as the method "Evince.EvinceView.find_started" is not present in the Fedora-17 rpms, but it is on Fedora-18. Luckily, that is good enough for me :) Just a small caveat :: Highlighting still does not work, even though I have added "self._view.find_set_highlight_search(True)" statement. Anyhow, I will keep trying !! Thanks a ton, again :) On Thu, Apr 25, 2013 at 9:17 PM, Gonzalo Odiard <[email protected]> wrote: > Hi Ajay, > > Look at the Read activity sources > https://git.sugarlabs.org/read/mainline/blobs/master/evinceadapter.py#line248 > search is working ok. > > Gonzalo > > > On Thu, Apr 25, 2013 at 12:29 PM, Ajay Garg <[email protected]>wrote: > >> 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() >> >> ################################################################################ >> >> >> >> >> >> >> When I run the above program, I get the output :: >> >> >> ################################################################################ >> 0 >> <JobFind object at 0x8489c0c (EvJobFind at 0x84b2218)> >> 1 >> <JobFind object at 0x8489c0c (EvJobFind at 0x84b2218)> >> 2 >> <JobFind object at 0x8489c0c (EvJobFind at 0x84b2218)> >> 3 >> <JobFind object at 0x8489c0c (EvJobFind at 0x84b2218)> >> 4 >> <JobFind object at 0x8489c0c (EvJobFind at 0x84b2218)> >> >> ################################################################################ >> >> >> >> This shows that "__find_updated_cb" is being hit; however, as I said, >> neither of "text-highlighting" or "scrolling-to-desired-location" takes >> place :( >> >> I am sure that I am missing something, as :: >> >> * I have simply done the porting in the "textual sense". >> * "Search" is too major a feature to not work in GTK3. >> >> >> I will be grateful for any pointers, that may help rectify my situation :) >> >> >> >> Thanks and Regards, >> Ajay >> >> _______________________________________________ >> evince-list mailing list >> [email protected] >> https://mail.gnome.org/mailman/listinfo/evince-list >> >> > -- Regards, Ajay
_______________________________________________ evince-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/evince-list
