--- a/TextView.st Sat Jan 16 13:04:14 2016 +0100
+++ b/TextView.st Sun Jan 17 02:26:31 2016 +0100
@@ -512,25 +512,29 @@
translateLabel: true
extent: (Point 420 24)
)
- (ViewSpec
- name: 'ReplaceBox'
+ (HorizontalPanelViewSpec
+ name: 'HorizontalPanel1'
+ horizontalLayout: leftFit
+ verticalLayout: fit
+ ignoreInvisibleComponents: false
+ elementsChangeSize: true
component:
(SpecCollection
collection: (
(CheckBoxSpec
- label: 'Global Replace With:'
+ label: 'Replace By:'
name: 'CheckBox4'
- layout: (LayoutFrame 0 0 0 0 180 0 23 0)
activeHelpKey: replaceText
level: 0
enableChannel: replaceEnabled
tabable: true
model: replaceBoolean
translateLabel: true
+ resizeForLabel: true
+ useDefaultExtent: true
)
(InputFieldSpec
name: 'ReplaceEntryField'
- layout: (LayoutFrame 180 0 0 0 -2 1 22 0)
activeHelpKey: replaceText
visibilityChannel: replaceBoolean
enableChannel: replaceBoolean
@@ -538,12 +542,24 @@
acceptOnReturn: true
acceptOnTab: true
acceptOnPointerLeave: true
+ extent: (Point 290 24)
)
)
)
extent: (Point 420 24)
)
+ (CheckBoxSpec
+ label: 'Replace All (to End of Text)'
+ name: 'CheckBox8'
+ activeHelpKey: searchAtBeginOfLineOnly
+ level: 0
+ visibilityChannel: replaceBoolean
+ tabable: true
+ model: replaceAllBoolean
+ translateLabel: true
+ extent: (Point 420 24)
+ )
)
)
@@ -2211,6 +2227,7 @@
fwd ign match initialString
bindings bldr doSearch modal searchVariableHolder selectedVariable searchFullWordHolder
replaceBooleanEnabledHolder replaceBooleanHolder replaceTextHolder
+ replaceAllBooleanHolder
searchAtBeginOfLineOnlyHolder|
searchBarActionBlock notNil ifTrue:[
@@ -2232,6 +2249,7 @@
searchFullWordHolder := false asValue.
searchAtBeginOfLineOnlyHolder := false asValue.
replaceBooleanHolder := false asValue.
+ replaceAllBooleanHolder := false asValue.
replaceTextHolder := '' asValue.
replaceBooleanEnabledHolder := self isReadOnly not asValue.
@@ -2268,7 +2286,10 @@
and:[selectedVariable notNil]].
isVariableSearch ifTrue:[
- searchAction := [self searchVariableWithSyntaxElement:selectedVariable forward:fwd].
+ searchAction :=
+ [
+ self searchVariableWithSyntaxElement:selectedVariable forward:fwd
+ ].
] ifFalse:[
lastSearchWasVariableSearch := false.
LastSearchIgnoredCase := lastSearchIgnoredCase := (caseHolder value not).
@@ -2277,19 +2298,20 @@
LastSearchWasWrapAtEndOfText := wrapAtEndHolder value.
pattern := patternHolder value.
pattern notEmptyOrNil ifTrue:[
- searchAction := [
- self searchUsingSpec:(
- ListView::SearchSpec new
- pattern:pattern
- ignoreCase:lastSearchIgnoredCase
- match: lastSearchWasMatch
- regexMatch:matchWithRegexHolder value
- variable: searchVariableHolder value
- fullWord: searchFullWordHolder value
- forward:fwd
- atBeginOfLineOnly:searchAtBeginOfLineOnlyHolder value
- wrapAtEnd:wrapAtEndHolder value).
- ]
+ searchAction :=
+ [
+ self searchUsingSpec:(
+ ListView::SearchSpec new
+ pattern:pattern
+ ignoreCase:lastSearchIgnoredCase
+ match: lastSearchWasMatch
+ regexMatch:matchWithRegexHolder value
+ variable: searchVariableHolder value
+ fullWord: searchFullWordHolder value
+ forward:fwd
+ atBeginOfLineOnly:searchAtBeginOfLineOnlyHolder value
+ wrapAtEnd:wrapAtEndHolder value).
+ ]
]
].
@@ -2303,22 +2325,26 @@
selectedVariable := selectedVariable lastElementInChain.
self selectFromCharacterPosition:selectedVariable start to:selectedVariable stop.
- searchAction := [selectedVariable := selectedVariable previousElement.
- selectedVariable notNil ifTrue:[
- self selectFromCharacterPosition:selectedVariable start to:selectedVariable stop.
- ].
- "/ self searchVariableWithSyntaxElement:selectedVariable forward:false
- ].
+ searchAction :=
+ [
+ selectedVariable := selectedVariable previousElement.
+ selectedVariable notNil ifTrue:[
+ self selectFromCharacterPosition:selectedVariable start to:selectedVariable stop.
+ ].
+ "/ self searchVariableWithSyntaxElement:selectedVariable forward:false
+ ].
].
selStart := self characterPositionOfSelection.
self replace:(replaceTextHolder value).
searchAction value.
- [self characterPositionOfSelection ~= selStart] whileTrue:[
- selStart := self characterPositionOfSelection.
- self replace:(replaceTextHolder value).
- searchAction value.
+ replaceAllBooleanHolder value ifTrue:[
+ [self characterPositionOfSelection ~= selStart] whileTrue:[
+ selStart := self characterPositionOfSelection.
+ self replace:(replaceTextHolder value).
+ searchAction value.
+ ]
]
] ifFalse:[
searchAction value.
@@ -2328,11 +2354,23 @@
bindings := IdentityDictionary new.
bindings at:#searchPattern put:patternHolder.
modal ifTrue:[
- bindings at:#nextAction put:[searchBox doAccept.].
- bindings at:#prevAction put:[fwd := false. searchBox doAccept.].
+ bindings at:#nextAction put:[
+ replaceAllBooleanHolder value ifTrue:[
+ searchBox doAccept.
+ ] ifFalse:[
+ doSearch value:true
+ ]
+ ].
+ bindings at:#prevAction put:[
+ replaceAllBooleanHolder value ifTrue:[
+ fwd := false. searchBox doAccept.
+ ] ifFalse:[
+ doSearch value:false
+ ]
+ ].
] ifFalse:[
- bindings at:#nextAction put:[doSearch value:true. "searchBox doAccept."].
- bindings at:#prevAction put:[doSearch value:false. "fwd := false. searchBox doAccept."].
+ bindings at:#nextAction put:[doSearch value:true.].
+ bindings at:#prevAction put:[doSearch value:false.].
].
bindings at:#caseSensitive put:caseHolder.
bindings at:#match put:matchHolder.
@@ -2370,6 +2408,7 @@
bindings at:#replaceEnabled put:replaceBooleanEnabledHolder.
bindings at:#replaceBoolean put:replaceBooleanHolder.
+ bindings at:#replaceAllBoolean put:replaceAllBooleanHolder.
bindings at:#replaceTextHolder put:replaceTextHolder.
replaceBooleanHolder onChangeEvaluate:
[