--- a/AbstractLauncherApplication.st Thu May 05 06:48:38 2016 +0200
+++ b/AbstractLauncherApplication.st Fri May 06 06:55:08 2016 +0200
@@ -2200,10 +2200,11 @@
bringWindow:aWindow intoBounds:bounds
"shift & resize a view to be completely inside bounds."
- |oldOrg newOrg oldCorner newCorner delta|
+ |topView oldOrg newOrg oldCorner newCorner delta|
- oldOrg := newOrg := aWindow topView origin.
- oldCorner := newCorner := aWindow topView corner.
+ topView := aWindow topView.
+ oldOrg := newOrg := topView origin.
+ oldCorner := newCorner := topView corner.
(bounds containsPoint:oldOrg) ifFalse:[
newOrg := bounds origin + (10@10).
@@ -2220,25 +2221,28 @@
].
].
].
- aWindow topView
+ topView
raiseDeiconified;
origin:newOrg corner:newCorner.
!
-bringWindowOntoScreen:aWindow
+bringWindowOntoScreen:aWindow
"shift & resize a view to be visible.
If there are multiple screens,bring them all onto the screen where the launcher is"
-
- |allBounds bounds|
-
- allBounds := self device monitorBoundsAt:aWindow center.
- allBounds size > 0 ifTrue:[
- bounds := allBounds detect:[:bounds | bounds containsPoint:self window center] ifNone:nil.
+
+ |allBounds bounds myDevice|
+
+ myDevice := self device.
+ allBounds := myDevice monitorBoundsAt:aWindow center.
+ allBounds notEmptyOrNil ifTrue:[
+ bounds := allBounds
+ detect:[:bounds | bounds containsPoint:self window center ]
+ ifNone:[ nil ].
].
bounds isNil ifTrue:[
- bounds := 0@0 extent:self device usableExtent.
- ].
- self bringWindow:aWindow intoBounds:bounds.
+ bounds := 0@0 extent:myDevice usableExtent.
+ ].
+ self bringWindow:aWindow intoBounds:bounds
!
deIconifyAllWindows
@@ -2310,18 +2314,16 @@
fullScreenHardcopy
"after a second (to allow redraw of views under menu ...),
save the contents of the whole screen."
-
- self window sensor ctrlDown ifTrue:[
+
+ |mySensor|
+
+ mySensor := self window sensor.
+ mySensor ctrlDown ifTrue:[
^ self fullScreenHardcopyUngrabbed
].
-
- Processor
- addTimedBlock:[
- self
- saveScreenImage:(Image fromScreen)
- defaultName:'screen'
- ]
- afterSeconds:(self window sensor shiftDown ifTrue:5 ifFalse:1)
+ Processor
+ addTimedBlock:[ self saveScreenImage:(Image fromScreen) defaultName:'screen' ]
+ afterSeconds:(mySensor shiftDown ifTrue:5 ifFalse:1)
!
fullScreenHardcopyUngrabbed
@@ -2541,7 +2543,8 @@
!
viewBrowse
- "let user pick a view and browse its Application class. Only smalltalk views are allowed"
+ "let user pick a view and browse its Application class.
+ Of course, only smalltalk views are allowed"
|v app appClass browser|
@@ -2608,18 +2611,19 @@
!
viewInspect
- "let user pick a view and inspect it. Only smalltalk views are allowed"
+ "let user pick a view and inspect it.
+ Of course, only smalltalk views are allowed"
|v|
(v := self pickAView) notNil ifTrue:[
v inspect
]
-
!
viewMigrate
- "let user pick a view and migrate it to some other display"
+ "let user pick a view and migrate it to some other display.
+ Only smalltalk views are allowed"
|v|
@@ -2631,7 +2635,7 @@
viewSelectAndShrink
"let user pick a view and shrink it to a reasonable size
Added for stupid mac, to get windows back onto the screen,
- which have their resize handle hidden."
+ which have their resize handle hidden or unreachable."
|v|
@@ -2647,12 +2651,13 @@
let user specify a widget and save its contents."
Processor
- addTimedBlock:[
- |v|
- (v := Screen current viewFromUser) notNil ifTrue:[
- self saveScreenImage:(Image fromView:v) defaultName:'hardcopy'
- ]
- ]
+ addTimedBlock:
+ [
+ |v|
+ (v := Screen current viewFromUser) notNil ifTrue:[
+ self saveScreenImage:(Image fromView:v) defaultName:'hardcopy'
+ ]
+ ]
afterSeconds:(self window sensor shiftDown ifTrue:5 ifFalse:1)
"Created: / 21.8.1998 / 20:44:12 / cg"
--- a/Make.proto Thu May 05 06:48:38 2016 +0200
+++ b/Make.proto Fri May 06 06:55:08 2016 +0200
@@ -334,7 +334,7 @@
$(OUTDIR)Tools__HierarchicalChangeList.$(O) Tools__HierarchicalChangeList.$(C) Tools__HierarchicalChangeList.$(H): Tools__HierarchicalChangeList.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__ChangeList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NavigatorModel.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
$(OUTDIR)Tools__HierarchicalPackageFilterList.$(O) Tools__HierarchicalPackageFilterList.$(C) Tools__HierarchicalPackageFilterList.$(H): Tools__HierarchicalPackageFilterList.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__HierarchicalProjectList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NavigatorModel.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__ProjectList.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libwidg2/AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItemWithLabel.$(H) $(STCHDR)
$(OUTDIR)Tools__InheritanceClassList.$(O) Tools__InheritanceClassList.$(C) Tools__InheritanceClassList.$(H): Tools__InheritanceClassList.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__ClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__HierarchicalClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NavigatorModel.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Autoload.$(H) $(INCLUDE_TOP)/stx/libbasic/Bag.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Block.$(H) $(INCLUDE_TOP)/stx/libbasic/Boolean.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Character.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/Date.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Filename.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Geometric.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Interval.$(H) $(INCLUDE_TOP)/stx/libbasic/KeyedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/LimitedPrecisionReal.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/MethodDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/NameSpace.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Point.$(H) $(INCLUDE_TOP)/stx/libbasic/ProgrammingLanguage.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Query.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadOnlySequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Rectangle.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(INCLUDE_TOP)/stx/libbasic/SmallInteger.$(H) $(INCLUDE_TOP)/stx/libbasic/Smalltalk.$(H) $(INCLUDE_TOP)/stx/libbasic/SmalltalkLanguage.$(H) $(INCLUDE_TOP)/stx/libbasic/StandaloneStartup.$(H) $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/StringCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Symbol.$(H) $(INCLUDE_TOP)/stx/libbasic/Timestamp.$(H) $(INCLUDE_TOP)/stx/libbasic/UndefinedObject.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/UserPreferences.$(H) $(INCLUDE_TOP)/stx/libbasic/Warning.$(H) $(INCLUDE_TOP)/stx/libbasic2/Iterator.$(H) $(INCLUDE_TOP)/stx/libbasic2/RunArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/SocketAddress.$(H) $(INCLUDE_TOP)/stx/libbasic2/Text.$(H) $(INCLUDE_TOP)/stx/libbasic2/UUID.$(H) $(INCLUDE_TOP)/stx/libbasic3/Change.$(H) $(INCLUDE_TOP)/stx/libbasic3/ChangeSet.$(H) $(INCLUDE_TOP)/stx/libbasic3/CompositeChange.$(H) $(INCLUDE_TOP)/stx/libbasic3/ProfileTree.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Breakpoint.$(H) $(INCLUDE_TOP)/stx/libcomp/BreakpointDescription.$(H) $(INCLUDE_TOP)/stx/libcomp/Explainer.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libview/Color.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/Form.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/Image.$(H) $(INCLUDE_TOP)/stx/libview/PopUpView.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libview2/MultiImage.$(H) $(INCLUDE_TOP)/stx/libwidg/EditTextView.$(H) $(INCLUDE_TOP)/stx/libwidg/GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)/stx/libwidg/ListView.$(H) $(INCLUDE_TOP)/stx/libwidg/MenuView.$(H) $(INCLUDE_TOP)/stx/libwidg/PopUpMenu.$(H) $(INCLUDE_TOP)/stx/libwidg/SelectionInListView.$(H) $(INCLUDE_TOP)/stx/libwidg/TextView.$(H) $(INCLUDE_TOP)/stx/libwidg2/ListModelView.$(H) $(INCLUDE_TOP)/stx/libwidg2/SelectionInListModelView.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Autoload.$(H) $(INCLUDE_TOP)/stx/libbasic/Bag.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Block.$(H) $(INCLUDE_TOP)/stx/libbasic/Boolean.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Character.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/Date.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Filename.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Geometric.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Interval.$(H) $(INCLUDE_TOP)/stx/libbasic/KeyedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/LimitedPrecisionReal.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/MethodDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/NameSpace.$(H) $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Point.$(H) $(INCLUDE_TOP)/stx/libbasic/ProgrammingLanguage.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Query.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadOnlySequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Rectangle.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(INCLUDE_TOP)/stx/libbasic/SmallInteger.$(H) $(INCLUDE_TOP)/stx/libbasic/Smalltalk.$(H) $(INCLUDE_TOP)/stx/libbasic/SmalltalkLanguage.$(H) $(INCLUDE_TOP)/stx/libbasic/StandaloneStartup.$(H) $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/StringCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Symbol.$(H) $(INCLUDE_TOP)/stx/libbasic/Timestamp.$(H) $(INCLUDE_TOP)/stx/libbasic/UndefinedObject.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/UserNotification.$(H) $(INCLUDE_TOP)/stx/libbasic/UserPreferences.$(H) $(INCLUDE_TOP)/stx/libbasic/Warning.$(H) $(INCLUDE_TOP)/stx/libbasic2/Iterator.$(H) $(INCLUDE_TOP)/stx/libbasic2/RunArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/SocketAddress.$(H) $(INCLUDE_TOP)/stx/libbasic2/Text.$(H) $(INCLUDE_TOP)/stx/libbasic2/UUID.$(H) $(INCLUDE_TOP)/stx/libbasic3/Change.$(H) $(INCLUDE_TOP)/stx/libbasic3/ChangeSet.$(H) $(INCLUDE_TOP)/stx/libbasic3/CompositeChange.$(H) $(INCLUDE_TOP)/stx/libbasic3/ProfileTree.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Breakpoint.$(H) $(INCLUDE_TOP)/stx/libcomp/BreakpointDescription.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libview/Color.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/Form.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/Image.$(H) $(INCLUDE_TOP)/stx/libview/PopUpView.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libview2/MultiImage.$(H) $(INCLUDE_TOP)/stx/libwidg/EditTextView.$(H) $(INCLUDE_TOP)/stx/libwidg/GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)/stx/libwidg/ListView.$(H) $(INCLUDE_TOP)/stx/libwidg/MenuView.$(H) $(INCLUDE_TOP)/stx/libwidg/PopUpMenu.$(H) $(INCLUDE_TOP)/stx/libwidg/SelectionInListView.$(H) $(INCLUDE_TOP)/stx/libwidg/TextView.$(H) $(INCLUDE_TOP)/stx/libwidg2/ListModelView.$(H) $(INCLUDE_TOP)/stx/libwidg2/SelectionInListModelView.$(H) $(STCHDR)
# ENDMAKEDEPEND --- do not remove this line
--- a/SystemBrowser.st Thu May 05 06:48:38 2016 +0200
+++ b/SystemBrowser.st Fri May 06 06:55:08 2016 +0200
@@ -2594,7 +2594,9 @@
!SystemBrowser class methodsFor:'special search startup'!
allCallsOn:aSelectorString
- "return a collection of methods which send aSelector."
+ "return a collection of methods which send aSelector.
+ This takes some time, because source code is parsed to see
+ if there is really a message send inside (and not just a symbol reference)"
^ self
allCallsOn:aSelectorString
@@ -2603,7 +2605,9 @@
match:false
"
- SystemBrowser allCallsOn:#at:put:
+ Time millisecondsToRun:[
+ SystemBrowser allCallsOn:#at:put:
+ ].
"
"Created: 24.1.1997 / 19:42:57 / cg"
@@ -5666,103 +5670,100 @@
"Modified: / 24-07-2011 / 09:50:30 / cg"
!
-searchBlockForString:aString ignoreCase:ignoreCase match:doMatch
+searchBlockForString:aString ignoreCase:ignoreCase match:doMatchArg
"return a block to search for a string."
- |searchBlock s lcString|
-
- (doMatch and:[ aString includesMatchCharacters ]) ifTrue:[
- s := '*' , aString , '*'.
+ |checkBlock pattern doMatch|
+
+ doMatch := doMatchArg.
+ aString includesMatchCharacters ifFalse:[
+ doMatch := false.
+ ].
+ doMatch ifTrue:[
"a matchString"
- searchBlock := [:c :m :sel |
- |src|
- src := m source.
- src isNil ifTrue:[
- ('Browser [info]: no source for ' , m printString) infoPrintCR.
- false
- ] ifFalse:[
- s match:src caseSensitive:ignoreCase not
- ]
- ]
+ pattern := aString.
+ aString first == $* ifFalse:[
+ pattern := '*',pattern
+ ].
+ aString last == $* ifFalse:[
+ pattern := pattern,'*'
+ ].
+ ignoreCase ifTrue:[
+ checkBlock := [:src | pattern match:src caseSensitive:false]
+ ] ifFalse:[
+ checkBlock := [:src | pattern match:src caseSensitive:true]
+ ]
] ifFalse:[
ignoreCase ifTrue:[
- lcString := aString asLowercase.
- searchBlock :=
- [:c :m :sel |
- |src|
-
- src := m source.
- src isNil ifTrue:[
- ('Browser [info]: no source for ' , m printString) infoPrintCR.
- false
- ] ifFalse:[
- (src asLowercase findString:lcString caseSensitive:true) ~~ 0
- ]
- ]
+ checkBlock := [:src | src includesString:aString caseSensitive:false]
] ifFalse:[
- searchBlock :=
- [:c :m :sel |
- |src|
-
- src := m source.
- src isNil ifTrue:[
- ('Browser [info]: no source for ' , m printString) infoPrintCR.
- false
- ] ifFalse:[
- (src findString:aString caseSensitive:ignoreCase not) ~~ 0
- ]
- ]
- ].
+ checkBlock := [:src | src includesString:aString caseSensitive:true]
+ ].
].
- ^ searchBlock.
+ ^ [:cls :mthd :sel |
+ |src|
+
+ src := mthd source.
+ src isNil ifTrue:[
+ ('Browser [info]: no source for ' , mthd printString) infoPrintCR.
+ false
+ ] ifFalse:[
+ checkBlock value:src
+ ]
+ ]
"
SystemBrowser findString:'should' in:(Array with:Object) ignoreCase:false
"
!
-searchBlockForStringLiteral:aString ignoreCase:ignoreCase match:doMatch
+searchBlockForStringLiteral:aString ignoreCase:ignoreCase match:doMatchArg
"return a block to search for a string-literal."
- |searchBlock s|
-
- (doMatch and:[ aString includesMatchCharacters]) ifTrue:[
- s := '*' , aString , '*'.
+ |pattern s doMatch checkLiteral|
+
+ aString isEmpty ifTrue:[^ [:cls :mthd :sel | true ]].
+
+ doMatch := doMatchArg.
+ (aString includesMatchCharacters) ifFalse:[
+ doMatch := false
+ ].
+ doMatch ifTrue:[
"a matchString"
- searchBlock := [:c :m :sel |
- |lits|
- lits := m literals ? #().
- lits contains:[:lit |
- lit isString
- and:[lit isSymbol not
- and:[s match:lit caseSensitive:ignoreCase not]]
- ]
- ]
+ pattern := aString.
+ aString first == $* ifFalse:[
+ pattern := '*',pattern
+ ].
+ aString last == $* ifFalse:[
+ pattern := pattern,'*'
+ ].
+ checkLiteral :=
+ [:lit |
+ lit isString
+ and:[lit isSymbol not
+ and:[s match:lit caseSensitive:ignoreCase not]]
+ ]
] ifFalse:[
ignoreCase ifTrue:[
- s := aString asLowercase.
- searchBlock := [:c :m :sel |
- |lits|
- lits := m literals ? #().
- lits contains:[:lit |
- lit isString
- and:[lit isSymbol not
- and:[s = lit asLowercase]]
- ]
- ]
+ checkLiteral :=
+ [:lit |
+ lit isString
+ and:[lit isSymbol not
+ and:[lit includesString:aString caseSensitive:true]]
+ ]
] ifFalse:[
- searchBlock := [:c :m :sel |
- |lits|
- lits := m literals ? #().
- lits contains:[:lit |
- lit isString
- and:[lit isSymbol not
- and:[s = lit]]
- ]
- ]
- ].
+ checkLiteral :=
+ [:lit |
+ lit isString
+ and:[lit isSymbol not
+ and:[lit includesString:aString]]
+ ]
+ ].
].
- ^ searchBlock.
+
+ ^ [:cls :mthd :sel |
+ (mthd literalsDetect:checkLiteral ifNone:[nil]) notNil
+ ]
"
SystemBrowser findStringLiteral:'error' in:(Array with:Object) ignoreCase:true match:true
@@ -6280,7 +6281,8 @@
"return all instance- (if wantInst is true) and/or classmethods (if wantClass is true)
from classes in aCollectionOfClasses, where aBlock evaluates to true."
- |list checkedClasses checkBlock nClasses nClassesDone oldPercentage newPercentage|
+ |list checkedClasses checkBlock nClasses
+ nClassesDone oldPercentage newPercentage nClassesSinceLastPercentage bulkSize|
checkedClasses := IdentitySet new.
list := OrderedCollection new.
@@ -6311,9 +6313,13 @@
nClasses := aCollectionOfClasses size.
nClassesDone := 0.
oldPercentage := 0.
+ nClassesSinceLastPercentage := 0.
+ bulkSize := (nClasses // 30) max:10. "/ roughly every 3%.
aCollectionOfClasses do:[:aClass |
(aClass notNil and:[aClass isObsolete not]) ifTrue:[
+ nClassesSinceLastPercentage := nClassesSinceLastPercentage + 1.
+
"
output disabled - it slows down things too much (when searching for
implementors or senders)
@@ -6326,13 +6332,14 @@
"/ Transcript show:'searching '; show:aClass class name; showCR:' ...'; endEntry.
checkBlock value:(aClass class)
].
- nClassesDone > 5 ifTrue:[
+ nClassesSinceLastPercentage > bulkSize ifTrue:[
"/ Processor yield
newPercentage := nClassesDone * 100 // nClasses.
newPercentage ~= oldPercentage ifTrue:[
ProgressNotification progressPercentage:newPercentage.
oldPercentage := newPercentage.
].
+ nClassesSinceLastPercentage := 0.
].
].
nClassesDone := nClassesDone + 1.
--- a/Tools__NewSystemBrowser.st Thu May 05 06:48:38 2016 +0200
+++ b/Tools__NewSystemBrowser.st Fri May 06 06:55:08 2016 +0200
@@ -6001,7 +6001,7 @@
<resource: #menu>
- ^
+ ^
#(Menu
(
(MenuItem
@@ -6031,7 +6031,7 @@
)
(MenuItem
label: 'Classes'
- submenu:
+ submenu:
(Menu
(
(MenuItem
@@ -6174,6 +6174,17 @@
label: '-'
)
(MenuItem
+ label: 'Pick a View, Browse its Application Class'
+ itemValue: pickViewAndBrowseApplicationClass
+ )
+ (MenuItem
+ label: 'Pick a View, Browse Widget''s Class'
+ itemValue: pickViewAndBrowseViewClass
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
label: 'Special'
submenuChannel: specialBrowseMenu
)
@@ -6228,7 +6239,7 @@
)
(MenuItem
label: 'Methods'
- submenu:
+ submenu:
(Menu
(
(MenuItem
@@ -26305,7 +26316,8 @@
self
askForMethodAndSpawnSearchTitle:'String to Search for in Sources:'
browserLabel:'Methods containing "%1"'
- searchWith:#( #'findString:in:ignoreCase:match:' #'findString:inMethods:ignoreCase:match:' )
+ searchWith:#( #'findString:in:ignoreCase:match:' #'findString:inMethods:ignoreCase:match:'
+ #'findStringLiteral:in:ignoreCase:match:' #'findStringLiteral:inMethods:ignoreCase:match:' )
searchWhat:#string
searchArea:whereDefault
withCaseIgnore:true
@@ -27200,6 +27212,34 @@
^ classes asOrderedCollection
!
+pickViewAndBrowseApplicationClass
+ "let user click on a view, then browse its appliction class"
+
+ |view app|
+
+ view := Screen current viewFromUser.
+ view isNil ifTrue:[^ self].
+ (app := view application) isNil ifTrue:[
+ (app := view topView application) isNil ifTrue:[
+ Dialog information:'Neither widget nor its topview have an application'.
+ ^ self
+ ].
+ ].
+ self createBuffer.
+ self switchToClass:app class selector:nil updateHistory:false.
+!
+
+pickViewAndBrowseWidgetClass
+ "let user click on a view, then browse its class"
+
+ |view|
+
+ view := Screen current viewFromUser.
+ view isNil ifTrue:[^ self].
+ self createBuffer.
+ self switchToClass:view class selector:nil updateHistory:false.
+!
+
spawnClassDocumentationBrowserIn:where
"browse documentation;
where is: #newBrowser - open a new browser
@@ -37660,7 +37700,7 @@
!
codeMenuFormat
- "format (prettyPrint) the selected method(s)"
+ "format (prettyPrint) the selected method(s) and accept"
|modifiedBefore|
@@ -38749,7 +38789,8 @@
!
formatCode
- "format (prettyPrint) the selected method's code"
+ "format (prettyPrint) the selected method's code.
+ Does not accept, so caller can decide"
|tree newText mthd codeView|
@@ -38775,7 +38816,8 @@
codeView
undoableDo:[ codeView replaceContentsWith:newText ]
info:'Format'.
- codeView modified:true.
+ "/ codeView modified:true.
+ navigationState modified:true.
navigationState realModifiedState:true.
^ newText.
!
@@ -49214,7 +49256,7 @@
|label|
self withSearchCursorDo:[
- |cachedList newBrowser theSingleSelector searchBlock|
+ |cachedList newBrowser theSingleSelector searchBlock answer|
aSelectorCollection size == 1 ifTrue:[
theSingleSelector := aSelectorCollection first.
@@ -49223,36 +49265,40 @@
label := resources string:labelPrefix.
].
- searchBlock := [
- |l|
-
- cachedList notNil ifTrue:[
- l := cachedList.
- cachedList := nil
- ] ifFalse:[
- l := IdentitySet new.
- aSelectorCollection do:[:aSelector |
- l addAll:(self class
- findSendersOf:aSelector
- in:setOfClasses
- ignoreCase:false
- match:false
- )
- ].
- l := l asOrderedCollection
- ].
- l
- ].
+ searchBlock :=
+ [
+ |l|
+
+ cachedList notNil ifTrue:[
+ l := cachedList.
+ cachedList := nil
+ ] ifFalse:[
+ l := IdentitySet new.
+ aSelectorCollection do:[:aSelector |
+ l addAll:(self class
+ findSendersOf:aSelector in:setOfClasses
+ ignoreCase:false match:false
+ )
+ ].
+ l := l asOrderedCollection
+ ].
+ l
+ ].
theSingleSelector notNil ifTrue:[
cachedList := searchBlock value.
cachedList size == 0 ifTrue:[
- (Dialog
- confirm:(label , (resources string:' - none found'))
- yesLabel:(resources string:'Show Implementors') noLabel:'OK'
- initialAnswer:false
- ) ifTrue:[
- self spawnMethodImplementorsBrowserFor:aSelectorCollection in:openHow
+ answer := Dialog
+ confirmWithCancel:(label , (resources string:' - none found'))
+ labels:(resources array: #('Cancel' 'Search String' 'Show Implementors'))
+ values:#(nil #string #implementors)
+ default:nil.
+ (answer == #string) ifTrue:[
+ self spawnMethodStringSearchBrowserFor:aSelectorCollection in:openHow
+ ] ifFalse:[
+ (answer == #implementors) ifTrue:[
+ self spawnMethodImplementorsBrowserFor:aSelectorCollection in:openHow
+ ].
].
^ self
].
@@ -49278,6 +49324,73 @@
"Created: / 05-09-2006 / 10:43:21 / cg"
!
+spawnMethodStringSearchBrowserFor:aStringCollection in:openHow
+ "open a new browser or add a buffer showing the selected methods only"
+
+ ^ self
+ spawnMethodStringSearchBrowserFor:aStringCollection
+ match:false
+ in:openHow
+ classes:environment allClasses
+ label:'string search'
+!
+
+spawnMethodStringSearchBrowserFor:aStringCollection match:doMatch in:openHow classes:classes label:labelPrefix
+ "open a new browser or add a buffer showing the selected methods only"
+
+ self withSearchCursorDo:[
+ |newBrowser label impls searchBlock cachedList theSingleString|
+
+ aStringCollection size == 1 ifTrue:[
+ theSingleString := aStringCollection first.
+ label := resources string:(labelPrefix,' with %1') with:(theSingleString allBold)
+ ] ifFalse:[
+ label := resources string:labelPrefix.
+ ].
+
+ searchBlock :=
+ [
+ |list|
+
+ (list := cachedList) notNil ifTrue:[
+ cachedList := nil
+ ] ifFalse:[
+ list := IdentitySet new.
+ aStringCollection do:[:eachString |
+ list addAll:(self class
+ findString:eachString
+ in:classes
+ ignoreCase:false
+ match:doMatch
+ )
+ ].
+ list := list asOrderedCollection
+ ].
+ list
+ ].
+
+ cachedList := searchBlock value.
+ (cachedList size == 1 and:[cachedList first == self theSingleSelectedMethod]) ifTrue:[
+ (Dialog
+ confirm:label,' - ',(resources stringWithCRs:'only the selected method found.\\Browse anyway?')
+ initialAnswer:false
+ ) ifFalse:[
+ ^ self
+ ]
+ ].
+
+ newBrowser := self
+ spawnMethodBrowserForSearch:searchBlock
+ sortBy:nil
+ in:openHow
+ label:label.
+
+ newBrowser autoSearchPattern:(aStringCollection asStringWith:'|') ignoreCase:false.
+ newBrowser sortBy value:#classes.
+ newBrowser
+ ]
+!
+
spawnProjectExtensionsBrowserFor:aMethodCollection in:openHow
"open a new browser or add a buffer showing the selected methods senders only"
@@ -55649,7 +55762,7 @@
!
askForMethodAndSpawnSearchTitle:title browserLabel:labelHolderOrBlock
- searchWith:aSelectorOrBlock searchWhat:searchWhat searchArea:whereDefault
+ searchWith:searchWithSpec searchWhat:searchWhat searchArea:whereDefault
withCaseIgnore:withCaseIgnore withTextEntry:withTextEntry
withMatch:withMatch withMethodList:withMethodList
setSearchPattern:setSearchPatternAction
@@ -55675,11 +55788,28 @@
searchWhat is a symbol such as #selector, #code etc.
"
- |dialog|
-
+ |dialog selectorOrBlockOrSelectorPair literalStringSearchSelectors|
+
+ selectorOrBlockOrSelectorPair := searchWithSpec.
+
dialog := SearchDialog new
initialText:aString;
- showMetaFilter:true;
+ showMetaFilter:true.
+
+ "/ hack...
+ searchWhat == #string ifTrue:[
+ selectorOrBlockOrSelectorPair size == 4 ifTrue:[
+ "/ the first two are for a string search,
+ "/ the last two for a string-in-literal search.
+ "/ need to clean that ugly interface up...
+ literalStringSearchSelectors := selectorOrBlockOrSelectorPair copyFrom:3.
+ selectorOrBlockOrSelectorPair := selectorOrBlockOrSelectorPair copyTo:2.
+
+ dialog withSearchStringInLiterals:true.
+ ].
+ ].
+
+ dialog
setupToAskForMethodSearchTitle:title
forBrowser:self
searchWhat:searchWhat
@@ -55691,7 +55821,7 @@
allowBuffer:true
allowBrowser:true
withTextEntry:withTextEntry.
-
+
[:restart|
dialog askThenDo:[
|classes string ignoreCase openHow match methods isMethod searchAction
@@ -55711,38 +55841,46 @@
self withSearchCursorDo:[
|initialList list newBrowser numFound label
- selector entities arguments numArgs answer
- alternativeSelector question altArguments t|
-
- aSelectorOrBlock isArray ifTrue:[
+ selectorList selector entities arguments numArgs answer
+ alternativeSelector question altArguments t extraStringMsg|
+
+ (literalStringSearchSelectors notNil and:[dialog searchStringInLiterals]) ifTrue:[
+ selectorList := literalStringSearchSelectors.
+ extraStringMsg := ' (in String literals)'.
+ ] ifFalse:[
+ selectorList := selectorOrBlockOrSelectorPair.
+ extraStringMsg := ''.
+ ].
+
+ selectorList isArray ifTrue:[
classes notNil ifTrue:[
- selector := aSelectorOrBlock first.
+ selector := selectorList first.
entities := classes.
] ifFalse:[
- selector := aSelectorOrBlock second.
+ selector := selectorList second.
entities := methods.
].
numArgs := selector numArgs.
] ifFalse:[
entities := classes.
- aSelectorOrBlock isSymbol ifTrue:[
- selector := aSelectorOrBlock.
+ selectorList isSymbol ifTrue:[
+ selector := selectorList.
] ifFalse:[
selector := nil
].
- numArgs := aSelectorOrBlock numArgs.
+ numArgs := selectorList numArgs.
].
(selector notNil
and:[ (selector numArgs == 1)
and:[ (selector endsWith:'In:') or:[ selector endsWith:'inMethods:' ]]]) ifTrue:[
arguments := Array with:entities
] ifFalse:[
- arguments := (Array
- with:string
- with:entities
- with:((selector notNil and:[selector endsWith:'isMethod:']) ifTrue:[isMethod] ifFalse:[ignoreCase])
- with:match
- ) copyTo:numArgs.
+ arguments := { string .
+ entities .
+ ((selector notNil and:[selector endsWith:'isMethod:'])
+ ifTrue:[isMethod] ifFalse:[ignoreCase]) .
+ match
+ } copyTo:numArgs.
].
searchAction :=
@@ -55760,17 +55898,17 @@
selector notNil ifTrue:[
result := self class perform:selector withArguments:arguments.
] ifFalse:[
- result := aSelectorOrBlock valueWithArguments:arguments
+ result := selectorList valueWithArguments:arguments
].
"/ sorry for this special case: when searching in a package,
"/ also search extensionMethods
dialog searchAreaSelected == #currentPackage ifTrue:[
- aSelectorOrBlock isArray ifTrue:[
+ selectorList isArray ifTrue:[
"/ findSendersOf:inMethods:ignoreCase:match:
extensionMethods := environment allExtensionsForPackage:(dialog currentPackage).
arguments2 := arguments copy.
arguments2 at:2 put:extensionMethods.
- moreResults := self class perform:(aSelectorOrBlock at:2) withArguments:arguments2.
+ moreResults := self class perform:(selectorList at:2) withArguments:arguments2.
result := result , moreResults.
]
].
@@ -55803,7 +55941,11 @@
numFound := initialList size.
numFound == 0 ifTrue:[
- question := resources stringWithCRs:label with:((string ? '') allBold colorizeAllWith:Color red darkened).
+ question := resources
+ stringWithCRs:label,extraStringMsg
+ with:((string ? '')
+ allBold
+ colorizeAllWith:Color red darkened).
question := question , (resources string:' - none found.').
((selector == #findImplementors:in:ignoreCase:match:)
@@ -58161,7 +58303,7 @@
!
getMethodInfoForMethod:aMethod
- "get something about aMethod
+ "get some info about aMethod
to be shown in the info line at the bottom"
|msg msg2 method wrapper|
--- a/Tools__SearchDialog.st Thu May 05 06:48:38 2016 +0200
+++ b/Tools__SearchDialog.st Fri May 06 06:55:08 2016 +0200
@@ -22,7 +22,8 @@
allowBuffer allowBrowser searchWhat searchClassProtocolHolder
searchInstanceProtocolHolder selectorOrCode selectionList
listHolder matchProcess inputField showMetaFilter
- metaclassesOnlyHolder classesOnlyHolder initialText'
+ metaclassesOnlyHolder classesOnlyHolder initialText
+ withSearchStringInLiterals searchStringInLiteralsHolder'
classVariableNames:'LastCodeSearched LastCodeSearchWasMethod LastGlobalSearched
LastStringSearched LastSearchWasMatch LastSearchWasCaseSensitive
LastStringSearchArea LastCodeSearchArea AREA_LISTOFMETHODS
@@ -63,6 +64,99 @@
"Created: / 19-11-2010 / 12:11:50 / cg"
! !
+!SearchDialog class methodsFor:'help'!
+
+helpSpec
+ ^ Dictionary new addPairsFrom:#(
+#listOfChangedClasses
+'Search only in changed classes'
+
+#listOfChangedMethods
+'Search only in changed methods'
+
+#currentClassesNameSpace
+'Search in the namespace(s) of the selected class(es)'
+
+#currentClassesPackage
+'Search in the package(s) of the selected class(es)'
+
+#currentNameSpace
+'Search in the current selected or selected classes namespace'
+
+#currentPackage
+'Search in the current selected or selected classes package'
+
+#currentClassesPackage
+'Search in the current selected classes package'
+
+#currentPackageAndSubPackages
+'Search in the current (selected) package and subpackages.\(disabled if there are no subpackages)'
+
+#everywhere
+'Search everywhere (all loaded classes)'
+
+#listOfMethods
+'Search only in the list of (shown) methods'
+
+#ownersWithPrivateClasses
+'Search in class and the owning and private classes.\(disabled if there are none)'
+
+#ownersHierarchiesWithPrivateClasses
+'Search in class, owners, private classes and all subclasses.\(disabled if there are none)'
+
+#classes
+'Search in selected class(es) only'
+
+#classesWithPrivateClasses
+'Search in selected class(es) and any private classes.\(disabled if there are no private classes)'
+
+#classHierarchies
+'Search in selected class(es) and down all subclasses.\(disabled if there are no subclasses)'
+
+#classHierarchiesWithPrivateClasses
+'Search in selected class(es), down all subclasses and all of their private classes.\(disabled if there are none)'
+
+#classesAndSuperclasses
+'Search in selected class(es) and up all super classes.\(disabled if there are none)'
+
+#classCategories
+'Search in selected class category(s)'
+
+#listOfSelectedMethodClasses
+'Search in class(es) of selected method(s)'
+
+#listOfSelectedMethodPackages
+'Search in package(es) of selected method(s)'
+
+#listOfSelectedMethods
+'Search in selected method(s)'
+
+#selectedPackages
+'Search in selected package(s)'
+
+#searchPatternField
+'The searched string or name. Does completion on TAB-key'
+
+#codeEntryField
+'Code fragment to match against in the search.\Press "pattern-help" to learn more about code searches'
+
+#nonMetaClassesOnly
+'Search only in instance methods (non-meta classes)'
+
+#metaClassesOnly
+'Search only in class methods (meta classes)'
+
+#searchStringInLiterals
+'Search string in literal constants; not in source code'
+
+#match
+'Perform a pattern match search, as oposed to an exact string search.\Pattern is a simple GLOB pattern (as in filenames)'
+
+#caseSensitive
+'Perform a case sensitive search (default is to ignore case differences)'
+)
+! !
+
!SearchDialog class methodsFor:'queries'!
lastCodeSearchArea
@@ -87,13 +181,25 @@
initialText := aString.
!
-showMetaFilter:something
- showMetaFilter := something.
+showMetaFilter:aBoolean
+ "enable another checkbox, to allow searching in meta/non-meta"
+
+ showMetaFilter := aBoolean.
+!
+
+withSearchStringInLiterals:aBoolean
+ "enable another checkbox, to allow searching for a string
+ in the literals only"
+
+ withSearchStringInLiterals := aBoolean.
! !
!SearchDialog methodsFor:'accessing-entered values'!
classesOnly
+ "the value of the corresponding check toggle;
+ if on, only search in non-metaclasses"
+
^ (classesOnlyHolder ? false) value
"Created: / 20-08-2012 / 13:25:26 / cg"
@@ -112,6 +218,9 @@
!
metaclassesOnly
+ "the value of the corresponding check toggle;
+ if on, only search in metaclasses"
+
^ (metaclassesOnlyHolder ? false) value
"Created: / 20-08-2012 / 13:17:12 / cg"
@@ -122,10 +231,16 @@
!
openHow
+ "the value of the corresponding button pressed to close the dialog;
+ a symbol describing what to do (newBrowser/newBuffer/find)"
+
^ openHow.
!
searchAreaSelected
+ "the value of the corresponding radio button;
+ a symbol describing where to search"
+
^ whereRadioGroup value.
!
@@ -134,10 +249,24 @@
!
searchIsCaseSensitive
+ "the value of the corresponding check toggle;
+ if on, search is case sensitive; otherwise ignore case"
+
^ (caseHolder value ? false)
!
+searchStringInLiterals
+ "the value of the corresponding check toggle;
+ if on, only literal strings should be searched;
+ otherwise, the sourcecode is searched"
+
+ ^ searchStringInLiteralsHolder value ? false.
+!
+
searchWithMatch
+ "the value of the corresponding check toggle;
+ if on, do a GLOB match; otherwise an exact search"
+
^ matchHolder value ? false.
!
@@ -145,6 +274,21 @@
^ selectorOrCode.
! !
+!SearchDialog methodsFor:'help'!
+
+flyByHelpTextFor:aComponent
+ |symbolicHelpKey text|
+
+ (symbolicHelpKey := aComponent helpKey) notNil ifTrue:[
+ Transcript showCR:symbolicHelpKey.
+ text := self class helpSpec at:symbolicHelpKey ifAbsent:[ nil ].
+ text notNil ifTrue:[
+ ^ NewSystemBrowser classResources stringWithCRs:text.
+ ].
+ ].
+ ^ nil
+! !
+
!SearchDialog methodsFor:'obsolete'!
addCheckBoxForClassMethodSearch
@@ -232,18 +376,20 @@
(searchWhat ~~ #resource) ifTrue:[
initialCaseSensitive := (LastSearchWasCaseSensitive ? false)
].
- self
+ (self
addCheckBox:(resources string:'Case Sensitive')
- on:(caseHolder := initialCaseSensitive asValue).
+ on:(caseHolder := initialCaseSensitive asValue))
+ helpKey:#caseSensitive.
].
withMatch ifTrue:[
initialMatch := true.
(searchWhat ~~ #resource) ifTrue:[
initialMatch := (LastSearchWasMatch ? true)
].
- self
+ (self
addCheckBox:(resources string:'Match')
- on:(matchHolder := initialMatch asValue).
+ on:(matchHolder := initialMatch asValue))
+ helpKey:#match.
"/ (isSelector and:[ sel notNil. ]) ifTrue:[
"/ sel includesMatchCharacters ifTrue:[
"/ matchHolder value:false.
@@ -379,6 +525,10 @@
withMethodList:withMethodList allowFind:allowFindArg allowBuffer:allowBufferArg
allowBrowser:allowBrowserArg withTextEntry:withTextEntryArg
+ "the real construction of the box is done here.
+ Any additional parameters (metaOnly, searchLiterals etc. must have been done
+ already."
+
"searchWhat:
one of:#selector
searchArea:
@@ -422,16 +572,16 @@
self addTextEntryWithCaseIgnore:withCaseIgnore withMatch:withMatch.
].
- searchAreas := OrderedCollection new.
-
- self addHorizontalLine.
- "/ self addVerticalSpace.
-
(showMetaFilter ? false) ifTrue:[
currentPanel := self.
self addCheckBoxForMetaClassesOnly.
].
-
+ (withSearchStringInLiterals ? false) ifTrue:[
+ currentPanel := self.
+ self addCheckBoxForSearchInLiteralsOnly
+ ].
+
+ self addHorizontalLine.
hPanel := HorizontalPanelView "SimpleView" new.
hPanel verticalLayout:#top.
@@ -443,6 +593,7 @@
(self addTextLabel:(resources string:'Search in:')) adjust:#left.
+ searchAreas := OrderedCollection new.
whereRadioGroup := RadioButtonGroup new.
self addCheckBoxForEverywhere.
@@ -636,16 +787,22 @@
!SearchDialog methodsFor:'setup'!
addCheckBox:b forSearchArea:area
+ self addCheckBox:b forSearchArea:area helpKey:area
+!
+
+addCheckBox:b forSearchArea:area helpKey:symbolicHelpKey
currentPanel add:b.
whereRadioGroup add:b value:area.
searchAreas add:area.
self makeTabable:b.
+ symbolicHelpKey notNil ifTrue:[ b helpKey:symbolicHelpKey ].
!
addCheckBoxForChangedClassesList
|b|
b := RadioButton "CheckBox" label:(resources string:'Changed Classes').
+
self addCheckBox:b forSearchArea:#listOfChangedClasses.
ChangeSet current changedClasses isEmpty ifTrue:[
b disable
@@ -657,6 +814,7 @@
|b|
b := RadioButton "CheckBox" label:(resources string:'Changed Methods').
+
self addCheckBox:b forSearchArea:#listOfChangedMethods.
ChangeSet current changeSelectors isEmpty ifTrue:[
b disable
@@ -739,12 +897,14 @@
b := CheckBox label:(resources string:'Metaclasses Only') in:p.
b model:(metaclassesOnlyHolder := false asValue).
+ b helpKey:#metaClassesOnly.
metaclassesOnlyHolder onChangeEvaluate:[metaclassesOnlyHolder value ifTrue:[classesOnlyHolder value:false]].
self makeTabable:b.
b := CheckBox label:(resources string:'Classes Only') in:p.
b left:0.5.
b model:(classesOnlyHolder := false asValue).
+ b helpKey:#nonMetaClassesOnly.
classesOnlyHolder onChangeEvaluate:[classesOnlyHolder value ifTrue:[metaclassesOnlyHolder value:false]].
self makeTabable:b.
@@ -798,6 +958,20 @@
^ b.
!
+addCheckBoxForSearchInLiteralsOnly
+ |p b|
+
+ p := View new.
+
+ b := CheckBox label:(resources string:'Search Literals Only') in:p.
+ b model:(searchStringInLiteralsHolder := false asValue).
+ p helpKey:#searchStringInLiterals.
+ self makeTabable:b.
+
+ currentPanel add:p.
+ ^ nil.
+!
+
addCheckBoxForSelectedClass
|b lbl arg|
@@ -973,15 +1147,15 @@
addCheckBoxForSelectedPackage
|b lbl arg|
- currentClassCategory notNil ifTrue:[
- lbl := 'Class category ("%1")'.
- arg := currentClassCategory.
+ currentPackage notNil ifTrue:[
+ lbl := 'Class package ("%1")'.
+ arg := currentPackage.
] ifFalse:[
- lbl := 'Selected classes categories (%1)'.
- arg := selectedCategories size.
+ lbl := 'Selected classes packages (%1)'.
+ arg := selectedPackages size.
].
b := RadioButton "CheckBox" label:(resources string:lbl with:arg).
- self addCheckBox:b forSearchArea:#classCategories.
+ self addCheckBox:b forSearchArea:#selectedPackages.
^ b.
!
@@ -990,10 +1164,12 @@
y := self yPosition.
b1 := self addCheckBox:(resources string:'Instance Protocol') on:(self searchInstanceProtocolHolder).
+ b1 helpKey:#classesOnly.
"/ b1 width:0.5.
"/ self yPosition:y.
b2 := self addCheckBox:(resources string:'Class Protocol') on:(self searchClassProtocolHolder).
+ b2 helpKey:#metaClassesOnly.
"/ b2 left:0.5; width:0.5.
"Created: / 06-12-2011 / 11:24:11 / cg"
@@ -1072,6 +1248,7 @@
inputField selectAllInitially.
inputField immediateAccept:true.
inputField takeFocus.
+ inputField helpKey:#searchPatternField.
searchWhat == #string ifFalse:[
inputField
@@ -1113,6 +1290,7 @@
box := View new.
box extent:(600 @ 200).
+ box helpKey:#codeEntryField.
panel := VariableHorizontalPanel in:box.
panel origin:0.0@0.0 corner:(1.0@1.0).
--- a/bc.mak Thu May 05 06:48:38 2016 +0200
+++ b/bc.mak Fri May 06 06:55:08 2016 +0200
@@ -262,7 +262,7 @@
$(OUTDIR)Tools__HierarchicalChangeList.$(O) Tools__HierarchicalChangeList.$(C) Tools__HierarchicalChangeList.$(H): Tools__HierarchicalChangeList.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__ChangeList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NavigatorModel.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
$(OUTDIR)Tools__HierarchicalPackageFilterList.$(O) Tools__HierarchicalPackageFilterList.$(C) Tools__HierarchicalPackageFilterList.$(H): Tools__HierarchicalPackageFilterList.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__HierarchicalProjectList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NavigatorModel.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__ProjectList.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libwidg2\AbstractHierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItemWithLabel.$(H) $(STCHDR)
$(OUTDIR)Tools__InheritanceClassList.$(O) Tools__InheritanceClassList.$(C) Tools__InheritanceClassList.$(H): Tools__InheritanceClassList.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__ClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__HierarchicalClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NavigatorModel.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Autoload.$(H) $(INCLUDE_TOP)\stx\libbasic\Bag.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Block.$(H) $(INCLUDE_TOP)\stx\libbasic\Boolean.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Character.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\Date.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Filename.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Geometric.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Interval.$(H) $(INCLUDE_TOP)\stx\libbasic\KeyedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\LimitedPrecisionReal.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\MethodDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\NameSpace.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Point.$(H) $(INCLUDE_TOP)\stx\libbasic\ProgrammingLanguage.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Query.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadOnlySequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Rectangle.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(INCLUDE_TOP)\stx\libbasic\SmallInteger.$(H) $(INCLUDE_TOP)\stx\libbasic\Smalltalk.$(H) $(INCLUDE_TOP)\stx\libbasic\SmalltalkLanguage.$(H) $(INCLUDE_TOP)\stx\libbasic\StandaloneStartup.$(H) $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\StringCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Symbol.$(H) $(INCLUDE_TOP)\stx\libbasic\Timestamp.$(H) $(INCLUDE_TOP)\stx\libbasic\UndefinedObject.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(INCLUDE_TOP)\stx\libbasic\Warning.$(H) $(INCLUDE_TOP)\stx\libbasic2\Iterator.$(H) $(INCLUDE_TOP)\stx\libbasic2\RunArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\SocketAddress.$(H) $(INCLUDE_TOP)\stx\libbasic2\Text.$(H) $(INCLUDE_TOP)\stx\libbasic2\UUID.$(H) $(INCLUDE_TOP)\stx\libbasic3\Change.$(H) $(INCLUDE_TOP)\stx\libbasic3\ChangeSet.$(H) $(INCLUDE_TOP)\stx\libbasic3\CompositeChange.$(H) $(INCLUDE_TOP)\stx\libbasic3\ProfileTree.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Breakpoint.$(H) $(INCLUDE_TOP)\stx\libcomp\BreakpointDescription.$(H) $(INCLUDE_TOP)\stx\libcomp\Explainer.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libview\Color.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\Form.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\Image.$(H) $(INCLUDE_TOP)\stx\libview\PopUpView.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libview2\MultiImage.$(H) $(INCLUDE_TOP)\stx\libwidg\EditTextView.$(H) $(INCLUDE_TOP)\stx\libwidg\GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)\stx\libwidg\ListView.$(H) $(INCLUDE_TOP)\stx\libwidg\MenuView.$(H) $(INCLUDE_TOP)\stx\libwidg\PopUpMenu.$(H) $(INCLUDE_TOP)\stx\libwidg\SelectionInListView.$(H) $(INCLUDE_TOP)\stx\libwidg\TextView.$(H) $(INCLUDE_TOP)\stx\libwidg2\ListModelView.$(H) $(INCLUDE_TOP)\stx\libwidg2\SelectionInListModelView.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Autoload.$(H) $(INCLUDE_TOP)\stx\libbasic\Bag.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Block.$(H) $(INCLUDE_TOP)\stx\libbasic\Boolean.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Character.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\Date.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Filename.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Geometric.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Interval.$(H) $(INCLUDE_TOP)\stx\libbasic\KeyedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\LimitedPrecisionReal.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\MethodDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\NameSpace.$(H) $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Point.$(H) $(INCLUDE_TOP)\stx\libbasic\ProgrammingLanguage.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Query.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadOnlySequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Rectangle.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(INCLUDE_TOP)\stx\libbasic\SmallInteger.$(H) $(INCLUDE_TOP)\stx\libbasic\Smalltalk.$(H) $(INCLUDE_TOP)\stx\libbasic\SmalltalkLanguage.$(H) $(INCLUDE_TOP)\stx\libbasic\StandaloneStartup.$(H) $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\StringCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Symbol.$(H) $(INCLUDE_TOP)\stx\libbasic\Timestamp.$(H) $(INCLUDE_TOP)\stx\libbasic\UndefinedObject.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\UserNotification.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(INCLUDE_TOP)\stx\libbasic\Warning.$(H) $(INCLUDE_TOP)\stx\libbasic2\Iterator.$(H) $(INCLUDE_TOP)\stx\libbasic2\RunArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\SocketAddress.$(H) $(INCLUDE_TOP)\stx\libbasic2\Text.$(H) $(INCLUDE_TOP)\stx\libbasic2\UUID.$(H) $(INCLUDE_TOP)\stx\libbasic3\Change.$(H) $(INCLUDE_TOP)\stx\libbasic3\ChangeSet.$(H) $(INCLUDE_TOP)\stx\libbasic3\CompositeChange.$(H) $(INCLUDE_TOP)\stx\libbasic3\ProfileTree.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Breakpoint.$(H) $(INCLUDE_TOP)\stx\libcomp\BreakpointDescription.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libview\Color.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\Form.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\Image.$(H) $(INCLUDE_TOP)\stx\libview\PopUpView.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libview2\MultiImage.$(H) $(INCLUDE_TOP)\stx\libwidg\EditTextView.$(H) $(INCLUDE_TOP)\stx\libwidg\GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)\stx\libwidg\ListView.$(H) $(INCLUDE_TOP)\stx\libwidg\MenuView.$(H) $(INCLUDE_TOP)\stx\libwidg\PopUpMenu.$(H) $(INCLUDE_TOP)\stx\libwidg\SelectionInListView.$(H) $(INCLUDE_TOP)\stx\libwidg\TextView.$(H) $(INCLUDE_TOP)\stx\libwidg2\ListModelView.$(H) $(INCLUDE_TOP)\stx\libwidg2\SelectionInListModelView.$(H) $(STCHDR)
# ENDMAKEDEPEND --- do not remove this line
--- a/libtool.rc Thu May 05 06:48:38 2016 +0200
+++ b/libtool.rc Fri May 06 06:55:08 2016 +0200
@@ -3,7 +3,7 @@
// automagically generated from the projectDefinition: stx_libtool.
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 6,2,1,139
+ FILEVERSION 6,2,1,140
PRODUCTVERSION 6,2,5,0
#if (__BORLANDC__)
FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE
@@ -20,12 +20,12 @@
BEGIN
VALUE "CompanyName", "eXept Software AG\0"
VALUE "FileDescription", "Smalltalk/X Tools (LIB)\0"
- VALUE "FileVersion", "6.2.1.139\0"
+ VALUE "FileVersion", "6.2.1.140\0"
VALUE "InternalName", "stx:libtool\0"
VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 2012\0"
VALUE "ProductName", "Smalltalk/X\0"
VALUE "ProductVersion", "6.2.5.0\0"
- VALUE "ProductDate", "Wed, 04 May 2016 07:23:08 GMT\0"
+ VALUE "ProductDate", "Fri, 06 May 2016 03:00:19 GMT\0"
END
END
--- a/stx_libtool.st Thu May 05 06:48:38 2016 +0200
+++ b/stx_libtool.st Fri May 06 06:55:08 2016 +0200
@@ -421,8 +421,10 @@
!
extensionMethodNames
- "list class/selector pairs of extensions.
- A correponding method with real names must be present in my concrete subclasses"
+ "lists the extension methods which are to be included in the project.
+ Entries are 2-element array literals, consisting of class-name and selector.
+ A correponding method with real names must be present in my concrete subclasses
+ if it has extensions."
^ #(
ApplicationModel inspectorExtraAttributes
@@ -579,11 +581,6 @@
'Collection class' iconInBrowserSymbol
'Date class' iconInBrowserSymbol
'Error class' iconInBrowserSymbol
- 'Explainer class' infoStringForClasses:withPrefix:
- 'Explainer class' methodImplementorsInfoFor:inEnvironment:
- 'Explainer class' methodInheritanceInfoFor:
- 'Explainer class' methodRedefinitionInfoFor:
- 'Explainer class' methodSpecialInfoFor:
'GenericException class' iconInBrowserSymbol
'GenericToolbarIconLibrary class' bookmarks22x22
'GenericToolbarIconLibrary class' bug16x16Icon