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
>
>
_______________________________________________
evince-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/evince-list

Reply via email to