[poppler] RFC: Expose whole-words search option in Qt frontends

Albert Astals Cid aacid at kde.org
Sun Jan 11 13:39:45 PST 2015


El Diumenge, 11 de gener de 2015, a les 22:30:43, Adam Reichold va escriure:
> Hello again,
> 
> Am 11.01.2015 um 22:13 schrieb Albert Astals Cid:
> > El Diumenge, 11 de gener de 2015, a les 22:04:53, Adam Reichold va
> > 
> > escriure:
> >> Hello,
> >> 
> >> Am 11.01.2015 um 21:50 schrieb Albert Astals Cid:
> >>> El Diumenge, 11 de gener de 2015, a les 20:36:44, Adam Reichold
> >>> va
> >>> 
> >>> escriure:
> >>>> Hello,
> >>>> 
> >>>> Am 11.01.2015 um 20:19 schrieb Albert Astals Cid:
> >>>>> El Diumenge, 11 de gener de 2015, a les 11:14:12, Adam
> >>>>> Reichold va
> >>>>> 
> >>>>> escriure:
> >>>>>> Hello again,
> >>>>>> 
> >>>>>> Am 11.01.2015 um 00:57 schrieb Albert Astals Cid:
> >>>>>>> El Diumenge, 11 de gener de 2015, a les 00:37:36, Adam
> >>>>>>> Reichold va
> >>>>>>> 
> >>>>>>> escriure:
> >>>>>>>> Hello,
> >>>>>>>> 
> >>>>>>>> Am 10.01.2015 um 23:45 schrieb Albert Astals Cid:
> >>>>>>>>> Maybe you can add some tests to check_search.cpp?
> >>>>>>>> 
> >>>>>>>> Attached patch with a test case for the four flag
> >>>>>>>> combinations added to the Qt4 and Qt5 versions of
> >>>>>>>> "check_search.cpp".
> >>>>>>>> 
> >>>>>>>> Of course, this very much highlights the ugliness of
> >>>>>>>> shoe horning the flags into the existing enumeration.
> >>>>>>>> But I don't think that making "Poppler::Page::search"
> >>>>>>>> take an "int" instead of "SearchMode" would be ABI
> >>>>>>>> compatible strictly speaking, since now the compiler
> >>>>>>>> is free to choose the underlying type for the
> >>>>>>>> enumeration.
> >>>>>>> 
> >>>>>>> Meh, you're right, this is not good either since
> >>>>>>> you're passing in SearchMode something that is not a
> >>>>>>> SearchMode (it's the sum of two).
> >>>>>>> 
> >>>>>>> So yeah it'd be better to go the QFlags way. Maybe you
> >>>>>>> can leave the old function there, mark it as deprecated
> >>>>>>> and say that it only obeys the sensitiviness part and
> >>>>>>> add a new function that accepts the qflags?
> >>>>>> 
> >>>>>> Ok, attached is the patch which adds a new flags type
> >>>>>> SearchFlags and corresponding overloads to the Qt4
> >>>>>> frontend. I try to factor out as much common code as
> >>>>>> possible and add a test case as well. I'll add the Qt5
> >>>>>> frontend as soon we think the approach is sound.
> >>>>>> 
> >>>>>> I chose to use a new enumeration SearchFlag instead of
> >>>>>> SearchMode since the symmetry of SearchMode does not
> >>>>>> really make sense if there are several non-exclusive
> >>>>>> flags.
> >>>>> 
> >>>>> Yep, now thinking out loud, would it make sense to merge
> >>>>> SearchDirection in there too? The three enums are also
> >>>>> exclusive one another.
> >>>> 
> >>>> I don't think this would work, since the range of
> >>>> "SearchDirection" has more than two elements and hence would
> >>>> need at least two flags but then those would not be
> >>>> exclusive. E.g. I'd add two flags "NextResult" and
> >>>> "PreviousResult" with "FromTop" as the default, but then the
> >>>> user could specify "NextResult | PreviousResult" which does
> >>>> not make sense?
> >>> 
> >>> Ok, let's leave it as you suggested, bring back the tests
> >>> (adding uses for both deprecated and non deprecated versions)
> >>> and the qt5 side and it looks good to me.
> >> 
> >> Ok, can you be more specific about which additional test cases
> >> you'd like to have? (The ones from the previous design are
> >> included already.) I'll then add them during the week.
> >> ("WholeWords" won't work with the deprecated methods, but I could
> >> add test cases for case sensitivity alone and also the
> >> list-returning variants.)
> > 
> > I'd like to have the old tests but using the new non deprecated
> > calls (not sure if that was added in the email that crossed the
> > intewebs with my other email).
> 
> Sorry, that took me a minute to get... :-) Attached is the patch with
> the search tests adjusted to use non-deprecated methods.

That looks good to me, let's give people a week so someone else can comment.

Cheers,
  Albert

> 
> Best regards, Adam.
> 
> > Cheers, Albert
> > 
> >> Best regards, Adam.
> >> 
> >>> Cheers, Albert
> >>> 
> >>>> Best regards, Adam.
> >>>> 
> >>>>> But on the other hand it may feel a bit shoehorned.
> >>>>> 
> >>>>> What do you think?
> >>>>> 
> >>>>> Cheer,s Albert
> >>>>> 
> >>>>>> Best regards, Adam.
> >>>>>> 
> >>>>>>> Cheers, Albert
> >>>>>>> 
> >>>>>>>> Best regards, Adam.
> >>>>>>>> 
> >>>>>>>>> Cheers, Albert
> >>>>>>>>> 
> >>>>>>>>> El Dissabte, 10 de gener de 2015, a les 23:26:01,
> >>>>>>>>> Adam Reichold va
> >>>>>>>>> 
> >>>>>>>>> escriure:
> >>>>>>>>>> Hello again,
> >>>>>>>>>> 
> >>>>>>>>>> Am 10.01.2015 um 22:25 schrieb Albert Astals
> >>>>>>>>>> 
> >>>>>>>>>> Cid:
> >>>>>>>>>>> El Dissabte, 10 de gener de 2015, a les
> >>>>>>>>>>> 17:51:48, Adam Reichold va
> >>>>>>>>>>> 
> >>>>>>>>>>> escriure:
> >>>>>>>>>>>> Hello,
> >>>>>>>>>>>> 
> >>>>>>>>>>>> Attach is a patch that would expose
> >>>>>>>>>>>> Poppler's whole-words search option within
> >>>>>>>>>>>> the Qt frontends.
> >>>>>>>>>>>> 
> >>>>>>>>>>>> While the implementation seems straight
> >>>>>>>>>>>> forward so far, I would like to request
> >>>>>>>>>>>> comments whether extending the "SearchMode"
> >>>>>>>>>>>> enumeration to flag definition is considered
> >>>>>>>>>>>> harmless. The proper way to do it seems to be
> >>>>>>>>>>>> the introduction of "QFlags<SearchMode>"
> >>>>>>>>>>>> which would however break compatibility and
> >>>>>>>>>>>> hence imply the need to have an additional
> >>>>>>>>>>>> overloads using a separate flag (and
> >>>>>>>>>>>> enumeration?) definition.
> >>>>>>>>>>> 
> >>>>>>>>>>> Looks good to me. The qt5/ side would need the
> >>>>>>>>>>> documentation update too, no?
> >>>>>>>>>> 
> >>>>>>>>>> patch with fixed Qt5 documentation and "\since"
> >>>>>>>>>> commands attached.
> >>>>>>>>>> 
> >>>>>>>>>> Best regards, Adam.
> >>>>>>>>>> 
> >>>>>>>>>>> Cheers, Albert
> >>>>>>>>>>> 
> >>>>>>>>>>>> Best regards, Adam.
> >>>>>>>>>>> 
> >>>>>>>>>>> _______________________________________________
> 
> poppler mailing list poppler at lists.freedesktop.org
> 
> >>>>>>>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
> 
> _______________________________________________ poppler
> 
> >>>>>>>>> mailing list poppler at lists.freedesktop.org
> >>>>>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
> 
> _______________________________________________ poppler
> 
> >>>>>>> mailing list poppler at lists.freedesktop.org
> >>>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
> >>>>> 
> >>>>> _______________________________________________ poppler
> >>>>> mailing list poppler at lists.freedesktop.org
> >>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
> >>>> 
> >>>> _______________________________________________ poppler
> >>>> mailing list poppler at lists.freedesktop.org
> >>>> http://lists.freedesktop.org/mailman/listinfo/poppler
> >>> 
> >>> _______________________________________________ poppler
> >>> mailing list poppler at lists.freedesktop.org
> >>> http://lists.freedesktop.org/mailman/listinfo/poppler
> >> 
> >> _______________________________________________ poppler mailing
> >> list poppler at lists.freedesktop.org
> >> http://lists.freedesktop.org/mailman/listinfo/poppler
> > 
> > _______________________________________________ poppler mailing
> > list poppler at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/poppler



More information about the poppler mailing list