TextView.st
changeset 5547 5637fb125cbf
parent 5543 39eb7c59b271
child 5552 58ac0bd34b7b
child 5554 f389396b26a6
--- a/TextView.st	Fri Jan 15 22:53:02 2016 +0100
+++ b/TextView.st	Fri Jan 15 22:53:54 2016 +0100
@@ -30,7 +30,7 @@
 		WordSelectCatchesBlanks LastSearchPatterns
 		NumRememberedSearchPatterns LastSearchIgnoredCase
 		LastSearchWasMatch DefaultParenthesisSpecification
-		LastSearchWasMatchWithRegex LastSearchWasWithWrapAtEnd'
+		LastSearchWasMatchWithRegex LastSearchWasWrapAtEndOfText'
 	poolDictionaries:''
 	category:'Views-Text'
 !
@@ -382,7 +382,7 @@
          name: 'String search'
          min: (Point 10 10)
          max: (Point 1280 1024)
-         bounds: (Rectangle 0 0 411 272)
+         bounds: (Rectangle 0 0 420 323)
        )
        component: 
       (SpecCollection
@@ -426,7 +426,7 @@
                    tabable: true
                    model: caseSensitive
                    translateLabel: true
-                   extent: (Point 411 24)
+                   extent: (Point 420 24)
                  )
                 (ViewSpec
                    name: 'MatchBox'
@@ -447,7 +447,7 @@
                          label: 'Regex Match'
                          name: 'CheckBox6'
                          layout: (LayoutFrame -151 1 0 0 0 1 22 0)
-                         visibilityChannel: match
+                         visibilityChannel: matchWithRegexVisible
                          enableChannel: match
                          model: matchWithRegex
                          translateLabel: true
@@ -455,7 +455,7 @@
                       )
                     
                    )
-                   extent: (Point 411 24)
+                   extent: (Point 420 24)
                  )
                 (CheckBoxSpec
                    label: 'Search Full Words'
@@ -466,7 +466,7 @@
                    tabable: true
                    model: searchFullWord
                    translateLabel: true
-                   extent: (Point 411 24)
+                   extent: (Point 420 24)
                  )
                 (CheckBoxSpec
                    label: 'At Begin of Line Only'
@@ -476,7 +476,7 @@
                    tabable: true
                    model: searchAtBeginOfLineOnly
                    translateLabel: true
-                   extent: (Point 411 24)
+                   extent: (Point 420 24)
                  )
                 (CheckBoxSpec
                    label: 'Variable Only'
@@ -489,7 +489,7 @@
                    model: searchVariable
                    translateLabel: true
                    labelChannel: stringWithVariableUnderCursorHolder
-                   extent: (Point 411 24)
+                   extent: (Point 420 24)
                  )
                 (CheckBoxSpec
                    label: 'Select Lines'
@@ -502,6 +502,16 @@
                    translateLabel: true
                    extent: (Point 302 24)
                  )
+                (CheckBoxSpec
+                   label: 'Wrap at End of Text (forward only)'
+                   name: 'CheckBox7'
+                   activeHelpKey: searchAtBeginOfLineOnly
+                   level: 0
+                   tabable: true
+                   model: wrapAtEndOfTextHolder
+                   translateLabel: true
+                   extent: (Point 420 24)
+                 )
                 (ViewSpec
                    name: 'ReplaceBox'
                    component: 
@@ -532,7 +542,7 @@
                       )
                     
                    )
-                   extent: (Point 411 24)
+                   extent: (Point 420 24)
                  )
                 )
               
@@ -2197,8 +2207,8 @@
      Q: is it a good idea to preserve the last searchstring between views?
      cg: yes - turns out to be useful and less confusing than keeping last per view
     "
-    |searchBox patternHolder caseHolder matchHolder matchWithRegexHolder
-     wrapAtEndHolder fwd ign match initialString
+    |searchBox patternHolder caseHolder matchHolder matchWithRegexHolder wrapAtEndHolder
+     fwd ign match initialString
      bindings bldr doSearch modal searchVariableHolder selectedVariable searchFullWordHolder
      replaceBooleanEnabledHolder replaceBooleanHolder replaceTextHolder
      searchAtBeginOfLineOnlyHolder|
@@ -2217,7 +2227,7 @@
     match := lastSearchWasMatch ? LastSearchWasMatch ? false.
     matchHolder := match asValue.
     matchWithRegexHolder := (LastSearchWasMatchWithRegex ? false) asValue.
-    wrapAtEndHolder := (LastSearchWasWithWrapAtEnd ? false) asValue.
+    wrapAtEndHolder := (LastSearchWasWrapAtEndOfText ? false) asValue.
     searchVariableHolder := (lastSearchWasVariableSearch ? false) asValue.
     searchFullWordHolder := false asValue.
     searchAtBeginOfLineOnlyHolder := false asValue.
@@ -2264,6 +2274,7 @@
             LastSearchIgnoredCase := lastSearchIgnoredCase := (caseHolder value not).
             LastSearchWasMatch := lastSearchWasMatch := matchHolder value.
             LastSearchWasMatchWithRegex := matchWithRegexHolder value.
+            LastSearchWasWrapAtEndOfText := wrapAtEndHolder value.
             pattern := patternHolder value.
             pattern notEmptyOrNil ifTrue:[
                 searchAction := [
@@ -2277,7 +2288,7 @@
                             fullWord: searchFullWordHolder value
                             forward:fwd
                             atBeginOfLineOnly:searchAtBeginOfLineOnlyHolder value
-                            wrapAroundEndOfText:wrapAtEndHolder value).
+                            wrapAtEnd:wrapAtEndHolder value).
                 ]
             ]
         ].
@@ -2326,6 +2337,11 @@
     bindings at:#caseSensitive put:caseHolder.
     bindings at:#match put:matchHolder.
     bindings at:#matchWithRegex put:matchWithRegexHolder.
+    Regex::RxMatcher isNil ifTrue:[
+        bindings at:#matchWithRegexVisible put:false.
+    ] ifFalse:[
+        bindings at:#matchWithRegexVisible put:matchHolder
+    ].
     bindings at:#patternList put:LastSearchPatterns.
 
     self supportsSyntaxElements ifFalse:[
@@ -2338,7 +2354,7 @@
             bindings
                 at:#stringWithVariableUnderCursorHolder
                 put:(resources string:'Variable ("%1")' with:selectedVariable name).
-            searchVariableHolder value:true.
+            "/ searchVariableHolder value:true.
         ] ifFalse:[
             bindings
                 at:#stringWithVariableUnderCursorHolder
@@ -2350,7 +2366,8 @@
     bindings at:#searchFullWord put:searchFullWordHolder.
     bindings at:#searchFullWordEnabled put:true.
     bindings at:#searchAtBeginOfLineOnly put:searchAtBeginOfLineOnlyHolder.
-
+    bindings at:#wrapAtEndOfTextHolder put:wrapAtEndHolder.
+    
     bindings at:#replaceEnabled put:replaceBooleanEnabledHolder.
     bindings at:#replaceBoolean put:replaceBooleanHolder.
     bindings at:#replaceTextHolder put:replaceTextHolder.
@@ -4288,10 +4305,12 @@
     "do a forward search"
 
     self
-	searchForwardUsingSpec:searchSpec
-	startingAtLine:startLine col:startCol
-	ifFound:[:line :col | self showMatch:searchSpec pattern isMatch:searchSpec match atLine:line col:col]
-	ifAbsent:aBlock
+        searchForwardUsingSpec:searchSpec
+        startingAtLine:startLine col:startCol
+        ifFound:[:line :col | 
+            self showMatch:searchSpec pattern isMatch:searchSpec match atLine:line col:col
+        ]
+        ifAbsent:aBlock
 !
 
 searchPattern