]> git.lyx.org Git - features.git/commitdiff
Implemented "whose words" option of the Advanced F&R feature.
authorTommaso Cucinotta <tommaso@lyx.org>
Sat, 9 Jan 2010 12:39:29 +0000 (12:39 +0000)
committerTommaso Cucinotta <tommaso@lyx.org>
Sat, 9 Jan 2010 12:39:29 +0000 (12:39 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32905 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/ui/FindAndReplaceUi.ui
src/lyxfind.cpp

index 686d39e44c481a8d82aa1a3b3c33a799a5056858..1d36e167f1668030d3602ff428c678b6fb2f4874 100644 (file)
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
  <class>FindAndReplaceUi</class>
  <widget class="QWidget" name="FindAndReplaceUi">
@@ -10,9 +11,7 @@
    </rect>
   </property>
   <property name="sizePolicy">
-   <sizepolicy>
-    <hsizetype>1</hsizetype>
-    <vsizetype>7</vsizetype>
+   <sizepolicy hsizetype="Minimum" vsizetype="Expanding">
     <horstretch>0</horstretch>
     <verstretch>0</verstretch>
    </sizepolicy>
@@ -60,9 +59,7 @@
        <item row="0" column="0">
         <widget class="QTabWidget" name="tabWidget">
          <property name="sizePolicy">
-          <sizepolicy>
-           <hsizetype>7</hsizetype>
-           <vsizetype>7</vsizetype>
+          <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
            <horstretch>0</horstretch>
            <verstretch>0</verstretch>
           </sizepolicy>
@@ -84,9 +81,7 @@
          </property>
          <widget class="QWidget" name="tab_3">
           <property name="sizePolicy">
-           <sizepolicy>
-            <hsizetype>5</hsizetype>
-            <vsizetype>7</vsizetype>
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
             <horstretch>0</horstretch>
             <verstretch>0</verstretch>
            </sizepolicy>
            <item row="2" column="0">
             <widget class="QFrame" name="replace_frame">
              <property name="sizePolicy">
-              <sizepolicy>
-               <hsizetype>7</hsizetype>
-               <vsizetype>7</vsizetype>
+              <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
                <horstretch>0</horstretch>
                <verstretch>0</verstretch>
               </sizepolicy>
               <item row="1" column="0">
                <widget class="QGroupBox" name="groupBox_3">
                 <property name="sizePolicy">
-                 <sizepolicy>
-                  <hsizetype>7</hsizetype>
-                  <vsizetype>7</vsizetype>
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
                   <horstretch>0</horstretch>
                   <verstretch>0</verstretch>
                  </sizepolicy>
                      </rect>
                     </property>
                     <property name="sizePolicy">
-                     <sizepolicy>
-                      <hsizetype>7</hsizetype>
-                      <vsizetype>7</vsizetype>
+                     <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
                       <horstretch>0</horstretch>
                       <verstretch>0</verstretch>
                      </sizepolicy>
                     <bool>true</bool>
                    </property>
                    <property name="sizePolicy">
-                    <sizepolicy>
-                     <hsizetype>7</hsizetype>
-                     <vsizetype>1</vsizetype>
+                    <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                      <horstretch>1</horstretch>
                      <verstretch>0</verstretch>
                     </sizepolicy>
                     <bool>true</bool>
                    </property>
                    <property name="sizePolicy">
-                    <sizepolicy>
-                     <hsizetype>7</hsizetype>
-                     <vsizetype>1</vsizetype>
+                    <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                      <horstretch>1</horstretch>
                      <verstretch>0</verstretch>
                     </sizepolicy>
                     <bool>false</bool>
                    </property>
                    <property name="sizePolicy">
-                    <sizepolicy>
-                     <hsizetype>7</hsizetype>
-                     <vsizetype>1</vsizetype>
+                    <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                      <horstretch>0</horstretch>
                      <verstretch>0</verstretch>
                     </sizepolicy>
                  <item row="1" column="0" colspan="2">
                   <widget class="QCheckBox" name="keepCaseCB">
                    <property name="sizePolicy">
-                    <sizepolicy>
-                     <hsizetype>7</hsizetype>
-                     <vsizetype>1</vsizetype>
+                    <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                      <horstretch>1</horstretch>
                      <verstretch>0</verstretch>
                     </sizepolicy>
                  <item row="3" column="1">
                   <widget class="QPushButton" name="closePB">
                    <property name="sizePolicy">
-                    <sizepolicy>
-                     <hsizetype>7</hsizetype>
-                     <vsizetype>1</vsizetype>
+                    <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                      <horstretch>1</horstretch>
                      <verstretch>0</verstretch>
                     </sizepolicy>
            <item row="0" column="0">
             <widget class="QFrame" name="find_frame">
              <property name="sizePolicy">
-              <sizepolicy>
-               <hsizetype>7</hsizetype>
-               <vsizetype>7</vsizetype>
+              <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
                <horstretch>0</horstretch>
                <verstretch>0</verstretch>
               </sizepolicy>
               <item row="0" column="0">
                <widget class="QGroupBox" name="groupBox">
                 <property name="sizePolicy">
-                 <sizepolicy>
-                  <hsizetype>7</hsizetype>
-                  <vsizetype>7</vsizetype>
+                 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
                   <horstretch>0</horstretch>
                   <verstretch>0</verstretch>
                  </sizepolicy>
                      </rect>
                     </property>
                     <property name="sizePolicy">
-                     <sizepolicy>
-                      <hsizetype>7</hsizetype>
-                      <vsizetype>7</vsizetype>
+                     <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
                       <horstretch>0</horstretch>
                       <verstretch>0</verstretch>
                      </sizepolicy>
                  <item row="1" column="0" colspan="2">
                   <widget class="QCheckBox" name="caseCB">
                    <property name="sizePolicy">
-                    <sizepolicy>
-                     <hsizetype>7</hsizetype>
-                     <vsizetype>1</vsizetype>
+                    <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                      <horstretch>0</horstretch>
                      <verstretch>0</verstretch>
                     </sizepolicy>
                     <bool>true</bool>
                    </property>
                    <property name="sizePolicy">
-                    <sizepolicy>
-                     <hsizetype>7</hsizetype>
-                     <vsizetype>1</vsizetype>
+                    <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                      <horstretch>0</horstretch>
                      <verstretch>0</verstretch>
                     </sizepolicy>
                     <bool>true</bool>
                    </property>
                    <property name="sizePolicy">
-                    <sizepolicy>
-                     <hsizetype>7</hsizetype>
-                     <vsizetype>1</vsizetype>
+                    <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                      <horstretch>0</horstretch>
                      <verstretch>0</verstretch>
                     </sizepolicy>
                     <bool>true</bool>
                    </property>
                    <property name="sizePolicy">
-                    <sizepolicy>
-                     <hsizetype>7</hsizetype>
-                     <vsizetype>1</vsizetype>
+                    <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                      <horstretch>0</horstretch>
                      <verstretch>0</verstretch>
                     </sizepolicy>
                  <item row="2" column="0" colspan="2">
                   <widget class="QCheckBox" name="wordsCB">
                    <property name="enabled">
-                    <bool>false</bool>
+                    <bool>true</bool>
                    </property>
                    <property name="sizePolicy">
-                    <sizepolicy>
-                     <hsizetype>7</hsizetype>
-                     <vsizetype>1</vsizetype>
+                    <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                      <horstretch>0</horstretch>
                      <verstretch>0</verstretch>
                     </sizepolicy>
          </widget>
          <widget class="QWidget" name="tab_4">
           <property name="sizePolicy">
-           <sizepolicy>
-            <hsizetype>7</hsizetype>
-            <vsizetype>7</vsizetype>
+           <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
             <horstretch>0</horstretch>
             <verstretch>0</verstretch>
            </sizepolicy>
                 <bool>true</bool>
                </property>
                <property name="sizePolicy">
-                <sizepolicy>
-                 <hsizetype>7</hsizetype>
-                 <vsizetype>1</vsizetype>
+                <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                  <horstretch>0</horstretch>
                  <verstretch>0</verstretch>
                 </sizepolicy>
                    <bool>false</bool>
                   </property>
                   <property name="sizePolicy">
-                   <sizepolicy>
-                    <hsizetype>1</hsizetype>
-                    <vsizetype>1</vsizetype>
+                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
                     <horstretch>0</horstretch>
                     <verstretch>0</verstretch>
                    </sizepolicy>
                    <bool>true</bool>
                   </property>
                   <property name="sizePolicy">
-                   <sizepolicy>
-                    <hsizetype>1</hsizetype>
-                    <vsizetype>1</vsizetype>
+                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
                     <horstretch>0</horstretch>
                     <verstretch>0</verstretch>
                    </sizepolicy>
                    <bool>true</bool>
                   </property>
                   <property name="sizePolicy">
-                   <sizepolicy>
-                    <hsizetype>1</hsizetype>
-                    <vsizetype>1</vsizetype>
+                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
                     <horstretch>0</horstretch>
                     <verstretch>0</verstretch>
                    </sizepolicy>
                    <bool>true</bool>
                   </property>
                   <property name="sizePolicy">
-                   <sizepolicy>
-                    <hsizetype>1</hsizetype>
-                    <vsizetype>1</vsizetype>
+                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
                     <horstretch>0</horstretch>
                     <verstretch>0</verstretch>
                    </sizepolicy>
                    <bool>false</bool>
                   </property>
                   <property name="sizePolicy">
-                   <sizepolicy>
-                    <hsizetype>1</hsizetype>
-                    <vsizetype>1</vsizetype>
+                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
                     <horstretch>0</horstretch>
                     <verstretch>0</verstretch>
                    </sizepolicy>
                 <bool>false</bool>
                </property>
                <property name="sizePolicy">
-                <sizepolicy>
-                 <hsizetype>7</hsizetype>
-                 <vsizetype>1</vsizetype>
+                <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                  <horstretch>0</horstretch>
                  <verstretch>0</verstretch>
                 </sizepolicy>
                 <bool>true</bool>
                </property>
                <property name="sizePolicy">
-                <sizepolicy>
-                 <hsizetype>7</hsizetype>
-                 <vsizetype>1</vsizetype>
+                <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
                  <horstretch>0</horstretch>
                  <verstretch>0</verstretch>
                 </sizepolicy>
index bf99caf33f536244fb1315d73eeea7b95a7c8eeb..bfa88ff658fd4e7dcfab37e9ac9a481d13d67cfc 100644 (file)
@@ -635,6 +635,9 @@ public:
        FindAndReplaceOptions const & opt;
 
 private:
+       /// Auxiliary find method (does not account for opt.matchword)
+       int findAux(DocIterator const & cur, int len = -1, bool at_begin = true) const;
+
        /** Normalize a stringified or latexified LyX paragraph.
         **
         ** Normalize means:
@@ -722,7 +725,7 @@ MatchStringAdv::MatchStringAdv(lyx::Buffer & buf, FindAndReplaceOptions const &
 }
 
 
-int MatchStringAdv::operator()(DocIterator const & cur, int len, bool at_begin) const
+int MatchStringAdv::findAux(DocIterator const & cur, int len, bool at_begin) const
 {
        docstring docstr = stringifyFromForSearch(opt, cur, len);
        LYXERR(Debug::FIND, "Matching against     '" << lyx::to_utf8(docstr) << "'");
@@ -765,6 +768,26 @@ int MatchStringAdv::operator()(DocIterator const & cur, int len, bool at_begin)
 }
 
 
+int MatchStringAdv::operator()(DocIterator const & cur, int len, bool at_begin) const
+{
+       int res = findAux(cur, len, at_begin);
+       if (res == 0 || !at_begin || !opt.matchword || !cur.inTexted())
+               return res;
+       Paragraph const & par = cur.paragraph();
+       bool ws_left = cur.pos() > 0 ?
+               par.isWordSeparator(cur.pos() - 1) : true;
+       bool ws_right = cur.pos() + res < par.size() ?
+               par.isWordSeparator(cur.pos() + res) : true;
+       LYXERR(Debug::FIND,
+              "cur.pos()=" << cur.pos() << ", res=" << res
+              << ", separ: " << ws_left << ", " << ws_right
+              << endl);
+       if (ws_left && ws_right)
+               return res;
+       return 0;
+}
+
+
 string MatchStringAdv::normalize(docstring const & s) const
 {
        string t;