--- a/AboutBox.st Sun Oct 09 22:55:02 2016 +0100
+++ b/AboutBox.st Tue Oct 18 22:55:22 2016 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
"
COPYRIGHT (c) 1995 by Claus Gittinger
All Rights Reserved
@@ -138,7 +136,7 @@
!
defaultIcon
- "return a smalltalk/X icon.
+ "return a Smalltalk/X icon.
Can be redefined in custom subclasses."
<resource: #programImage>
--- a/AbstractDirectoryBrowser.st Sun Oct 09 22:55:02 2016 +0100
+++ b/AbstractDirectoryBrowser.st Tue Oct 18 22:55:22 2016 +0100
@@ -184,6 +184,10 @@
selectedFiles
^ self selectedItems collect:[:item| item fileName].
+!
+
+selectedItems
+ self subclassResponsibility
! !
!AbstractDirectoryBrowser methodsFor:'startup & release'!
--- a/AbstractFileBrowser.st Sun Oct 09 22:55:02 2016 +0100
+++ b/AbstractFileBrowser.st Tue Oct 18 22:55:22 2016 +0100
@@ -6501,7 +6501,7 @@
!
doExecuteScript
- "execute a smalltalk script"
+ "execute a Smalltalk script"
|textHolder dialog template dummyClass dummyInstance|
@@ -7522,7 +7522,7 @@
generateDetachedSignaturesForSelectedFiles
"generate detached signature (pkcs7) files from the contents of the selected files.
- For smalltalk text files, better use #generateSignaturesForSelectedFiles."
+ For Smalltalk text files, better use #generateSignaturesForSelectedFiles."
self withActivityIndicationDo:[
self currentSelectedFiles do:[:fn |
--- a/AbstractLauncherApplication.st Sun Oct 09 22:55:02 2016 +0100
+++ b/AbstractLauncherApplication.st Tue Oct 18 22:55:22 2016 +0100
@@ -36,12 +36,19 @@
itemsByPath getItemByPath myHierarchicalItemWithLabelAndIcon
filterHolder masterRoot infoTextHolder loadButton
loadAndBrowseButton selectedPackageHolder monticelloRoot
- backgroundPackageFindProcess'
+ backgroundPackageFindProcess itemsMatchingFilter'
classVariableNames:'PreviousPackageDialogItems PreviousPackageDialogExtent'
poolDictionaries:''
privateIn:AbstractLauncherApplication
!
+HierarchicalItemWithLabelAndIcon subclass:#MyHierarchicalItem
+ instanceVariableNames:'type info'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:AbstractLauncherApplication::PackageLoadDialog
+!
+
!AbstractLauncherApplication class methodsFor:'documentation'!
copyright
@@ -421,6 +428,7 @@
].
settingsApp := SettingsDialog new.
+ settingsApp resources:(AbstractLauncherApplication resources).
settingsApp requestor:requestor.
settingsApp installSettingsEntries:(self allSettingsList).
"/ settingsApp requestor:self.
@@ -1284,7 +1292,7 @@
requestForWindowClose
"close request from windowing system (window close);
confirm and ask if closing of launcher only or
- a smalltalk-exit is wanted"
+ a Smalltalk-exit is wanted"
|answer|
@@ -1301,7 +1309,9 @@
^ true
].
- self exit
+ self exit.
+ "/ not reached
+ ^ false
"Modified: / 20.5.1999 / 17:24:47 / cg"
!
@@ -2558,7 +2568,7 @@
viewBrowse
"let user pick a view and browse its Application class.
- Of course, only smalltalk views are allowed"
+ Of course, only Smalltalk views are allowed"
|v app appClass browser|
@@ -2579,7 +2589,7 @@
viewDestroy
"let user pick a view and destroy it.
- Even allow destroying non-smalltalk views
+ Even allow destroying non-Smalltalk views
(also for views which I forgot due to some error)"
|screen v id i c|
@@ -2626,7 +2636,7 @@
viewInspect
"let user pick a view and inspect it.
- Of course, only smalltalk views are allowed"
+ Of course, only Smalltalk views are allowed"
|v|
@@ -2637,7 +2647,7 @@
viewMigrate
"let user pick a view and migrate it to some other display.
- Only smalltalk views are allowed"
+ Only Smalltalk views are allowed"
|v|
@@ -7242,35 +7252,20 @@
packageIdByItem := IdentityDictionary new.
pathByItem := IdentityDictionary new.
- Class withoutUpdatingChangesDo:[
- myHierarchicalItemWithLabelAndIcon :=
- HierarchicalItemWithLabelAndIcon
- subclass:#myHierarchicalItemWithLabelAndIcon
- instanceVariableNames:'type info'
- classVariableNames:''
- poolDictionaries:''
- category:nil
- inEnvironment:nil.
- myHierarchicalItemWithLabelAndIcon compile:'type ^ type'.
- myHierarchicalItemWithLabelAndIcon compile:'type:aSymbol type := aSymbol'.
- myHierarchicalItemWithLabelAndIcon compile:'info ^ info'.
- myHierarchicalItemWithLabelAndIcon compile:'info:anObject info := anObject'.
- ].
-
list := HierarchicalList new.
- masterRoot := myHierarchicalItemWithLabelAndIcon new.
+ masterRoot := MyHierarchicalItem new.
masterRoot icon:(ToolbarIconLibrary stxHomeIcon).
masterRoot label:(resources string:'local ').
masterRoot type:#localRoot.
- root := myHierarchicalItemWithLabelAndIcon new.
+ root := MyHierarchicalItem new.
root icon:folderIcon.
root label:((resources string:'[Compiled Packages]') asText allItalic withColor:Color grey).
root type:#compiledPackagesRoot.
masterRoot add:root.
- monticelloRoot := myHierarchicalItemWithLabelAndIcon new.
+ monticelloRoot := MyHierarchicalItem new.
monticelloLabel := ((resources string:'[Monticello Packages]') asText allItalic withColor:Color grey).
monticelloRoot type:#monticelloRoot.
@@ -7417,54 +7412,63 @@
!
filterChangedAction
- |matchingItems filterPattern isMatch firstMatchingItem|
+ |newMatchingItems filterPattern isMatch firstMatchingItem|
filterPattern := filterHolder value.
filterPattern isEmptyOrNil ifTrue:[
- "/ nothing
+ itemsMatchingFilter notEmptyOrNil ifTrue:[
+ "/ nothing
+ root recursiveDo:[:item |
+ item label:(item label copy asText allNonBold withoutAnyColorEmphasis).
+ ].
+ ].
+ itemsMatchingFilter := #().
+ ^ self.
+ ].
+
+ filterPattern := filterPattern asLowercase.
+ isMatch := filterPattern includesMatchCharacters.
+
+ newMatchingItems := OrderedCollection new.
+ masterRoot recursiveDo:[:item |
+ |itemLabel itemPackage|
+
+ itemLabel := item label.
+ itemPackage := packageIdByItem at:item ifAbsent:''.
+
+ ((isMatch and:[itemLabel matches:filterPattern caseSensitive:false])
+ or:[ (isMatch not and:[ itemLabel asLowercase includesString:filterPattern ])
+ or:[ (isMatch and:[itemPackage matches:filterPattern caseSensitive:false])
+ or:[ isMatch not and:[ itemPackage asLowercase includesString:filterPattern ]]]])
+ ifTrue:[
+ newMatchingItems add:item.
+ ]
+ ].
+ (newMatchingItems sameContentsAs:itemsMatchingFilter) ifTrue:[
+ ^ self
+ ].
+
+ newMatchingItems isEmpty ifTrue:[
+ "/ nothing found
root recursiveDo:[:item |
item label:(item label copy asText allNonBold withoutAnyColorEmphasis).
].
+ Screen current beep.
] ifFalse:[
- filterPattern := filterPattern asLowercase.
- isMatch := filterPattern includesMatchCharacters.
-
- matchingItems := OrderedCollection new.
+ "/ collapse all and fully expand all matching items
masterRoot recursiveDo:[:item |
- |itemLabel itemPackage|
-
- itemLabel := item label.
- itemPackage := packageIdByItem at:item ifAbsent:''.
-
- ((isMatch and:[itemLabel matches:filterPattern caseSensitive:false])
- or:[ (isMatch not and:[ itemLabel asLowercase includesString:filterPattern ])
- or:[ (isMatch and:[itemPackage matches:filterPattern caseSensitive:false])
- or:[ isMatch not and:[ itemPackage asLowercase includesString:filterPattern ]]]])
- ifTrue:[
- matchingItems add:item.
- ]
+ item collapse.
+ item label:(item label copy asText allNonBold withColor:Color grey).
].
- matchingItems isEmpty ifTrue:[
- "/ nothing found
- root recursiveDo:[:item |
- item label:(item label copy asText allNonBold withoutAnyColorEmphasis).
- ].
- Screen current beep.
- ] ifFalse:[
- "/ collapse all and fully expand all matching items
- masterRoot recursiveDo:[:item |
- item collapse.
- item label:(item label copy asText allNonBold withColor:Color grey).
- ].
- firstMatchingItem := nil.
- matchingItems do:[:item |
- item label:(item label copy asText allBold withoutAnyColorEmphasis).
- item makeVisible.
- firstMatchingItem := firstMatchingItem ? item.
- ].
- hierarchicalListView makeLineVisible:firstMatchingItem listIndex.
+ firstMatchingItem := nil.
+ newMatchingItems do:[:item |
+ item label:(item label copy asText allBold withoutAnyColorEmphasis).
+ item makeVisible.
+ firstMatchingItem := firstMatchingItem ? item.
].
- ].
+ hierarchicalListView makeLineVisible:firstMatchingItem listIndex.
+ ].
+ itemsMatchingFilter := newMatchingItems.
!
getItemByPath:path packageID:packageID under:aRoot
@@ -7478,7 +7482,7 @@
ifFalse:[ itemsByPath at:( {aRoot label},path) ifAbsent:nil ].
item isNil ifTrue:[
parent := self getItemByPath:(path copyButLast) packageID:packageID under:aRoot.
- item := myHierarchicalItemWithLabelAndIcon new
+ item := MyHierarchicalItem new
children:#();
icon:greyFolderIcon;
label:path last.
@@ -7498,7 +7502,7 @@
do:[:each |
|reposItem|
- reposItem := myHierarchicalItemWithLabelAndIcon new.
+ reposItem := MyHierarchicalItem new.
reposItem icon:folderIcon.
reposItem label:each displayString , ((resources string:' [MC Repository]') asText allItalic withColor:Color grey).
reposItem type:#monticelloRepository.
@@ -7508,7 +7512,7 @@
each allPackageNames asSortedCollection do:[:eachPackage |
|packageItem|
- packageItem := myHierarchicalItemWithLabelAndIcon new.
+ packageItem := MyHierarchicalItem new.
packageItem icon:packageIcon.
packageItem label:eachPackage.
packageItem type:#monticelloPackage.
@@ -7728,7 +7732,7 @@
path := subDir asFilename components.
(itemsByPath at:( {root label},path) ifAbsent:nil) isNil ifTrue:[
folderRoot isNil ifTrue:[
- folderRoot := myHierarchicalItemWithLabelAndIcon new.
+ folderRoot := MyHierarchicalItem new.
folderRoot icon:folderIcon.
folderRoot label:((resources string:'[%1]' with:eachDirName) asText allItalic withColor:Color grey).
folderRoot type:#compiledPackagesRoot.
@@ -8067,6 +8071,24 @@
].
! !
+!AbstractLauncherApplication::PackageLoadDialog::MyHierarchicalItem methodsFor:'accessing'!
+
+info
+ ^ info
+!
+
+info:something
+ info := something.
+!
+
+type
+ ^ type
+!
+
+type:something
+ type := something.
+! !
+
!AbstractLauncherApplication class methodsFor:'documentation'!
version
--- a/AbstractSettingsApplication.st Sun Oct 09 22:55:02 2016 +0100
+++ b/AbstractSettingsApplication.st Tue Oct 18 22:55:22 2016 +0100
@@ -367,7 +367,7 @@
webBrowserLikeLayout sortAndIndentClassesByInheritance
showLocalHistory showGlobalHistory useInPlaceSearchInBrowserLists
sourceCodeManagementMenuLayout confirmRefactorings
- smallLintRulesetDefault'
+ smallLintRulesetDefault showMarqueeInfo'
classVariableNames:''
poolDictionaries:''
privateIn:AbstractSettingsApplication
@@ -514,10 +514,10 @@
<resource: #canvas>
- ^
+ ^
#(FullSpec
name: windowSpecForDialog
- window:
+ window:
(WindowSpec
label: 'NewApplication'
name: 'NewApplication'
@@ -525,7 +525,7 @@
min: (Point 10 10)
bounds: (Rectangle 0 0 531 488)
)
- component:
+ component:
(SpecCollection
collection: (
(SubCanvasSpec
@@ -545,7 +545,7 @@
horizontalSpace: 3
verticalSpace: 3
reverseOrderIfOKAtLeft: true
- component:
+ component:
(SpecCollection
collection: (
(ActionButtonSpec
@@ -566,11 +566,12 @@
extent: (Point 159 25)
)
)
-
+
)
+ keepSpaceForOSXResizeHandleH: true
)
)
-
+
)
)
! !
@@ -1414,8 +1415,8 @@
!
basicSaveSettings
- UserPreferences current
- autoloadedPackages:(packageChooser listOfSelectedItems value asArray collect:[:each | each asStirng string]).
+ UserPreferences current
+ autoloadedPackages:(packageChooser listOfSelectedItems value asArray collect:[:each | each asString string]).
! !
!AbstractSettingsApplication::AutoloadedPackagesSettingsAppl methodsFor:'aspects'!
@@ -3995,10 +3996,10 @@
<resource: #canvas>
- ^
+ ^
#(FullSpec
name: windowSpec
- window:
+ window:
(WindowSpec
label: 'Display Screen Settings'
name: 'Display Screen Settings'
@@ -4006,7 +4007,7 @@
min: (Point 10 10)
bounds: (Rectangle 0 0 604 500)
)
- component:
+ component:
(SpecCollection
collection: (
(LabelSpec
@@ -4019,14 +4020,15 @@
(LabelSpec
label: 'Common Sizes:'
name: 'CommonSizesLabel'
- layout: (LayoutFrame 5 0 39 0 227 0 69 0)
+ layout: (LayoutFrame 0 0 39 0 277 0 69 0)
translateLabel: true
adjust: right
)
(PopUpListSpec
label: 'monitor size'
name: 'MonitorSelectionPopUpList'
- layout: (LayoutFrame 230 0 39 0 -5 1 69 0)
+ layout: (LayoutFrame 280 0 39 0 -5 1 69 0)
+ translateLabel: true
tabable: true
model: monitorSelection
menu: monitorList
@@ -4035,13 +4037,13 @@
(LabelSpec
label: 'Screen Size:'
name: 'ScreenSizeLabel'
- layout: (LayoutFrame 5 0 72 0 227 0 102 0)
+ layout: (LayoutFrame 5 0 73 0 277 0 103 0)
translateLabel: true
adjust: right
)
(InputFieldSpec
name: 'SizeXEntryField'
- layout: (LayoutFrame 230 0 72 0 297 0 102 0)
+ layout: (LayoutFrame 280 0 72 0 347 0 102 0)
model: sizeX
type: number
immediateAccept: true
@@ -4053,12 +4055,12 @@
(LabelSpec
label: ' x '
name: 'xLabel'
- layout: (LayoutFrame 298 0 72 0 319 0 102 0)
+ layout: (LayoutFrame 348 0 72 0 369 0 102 0)
translateLabel: true
)
(InputFieldSpec
name: 'SizeYEntryField'
- layout: (LayoutFrame 320 0 72 0 387 0 102 0)
+ layout: (LayoutFrame 370 0 72 0 437 0 102 0)
model: sizeY
type: number
immediateAccept: true
@@ -4070,20 +4072,20 @@
(LabelSpec
label: '(mm)'
name: 'mmLabel'
- layout: (LayoutFrame 399 0 72 0 445 0 102 0)
+ layout: (LayoutFrame 439 0 72 0 485 0 102 0)
translateLabel: true
adjust: left
)
(LabelSpec
label: 'Limit Usable Area To:'
name: 'Label1'
- layout: (LayoutFrame 5 0 110 0 227 0 140 0)
+ layout: (LayoutFrame 5 0 110 0 277 0 140 0)
translateLabel: true
adjust: right
)
(InputFieldSpec
name: 'EntryField1'
- layout: (LayoutFrame 230 0 110 0 297 0 140 0)
+ layout: (LayoutFrame 280 0 110 0 347 0 140 0)
model: usedWidth
type: number
immediateAccept: true
@@ -4095,12 +4097,12 @@
(LabelSpec
label: ' x '
name: 'Label2'
- layout: (LayoutFrame 298 0 110 0 319 0 140 0)
+ layout: (LayoutFrame 348 0 110 0 369 0 140 0)
translateLabel: true
)
(InputFieldSpec
name: 'EntryField2'
- layout: (LayoutFrame 320 0 110 0 387 0 140 0)
+ layout: (LayoutFrame 370 0 110 0 437 0 140 0)
model: usedHeight
type: number
immediateAccept: true
@@ -4112,14 +4114,15 @@
(LabelSpec
label: '(Pixel)'
name: 'Label3'
- layout: (LayoutFrame 399 0 110 0 445 0 140 0)
+ layout: (LayoutFrame 439 0 110 0 507 0 140 0)
translateLabel: true
adjust: left
)
(ActionButtonSpec
label: 'Restore'
name: 'Button1'
- layout: (AlignmentOrigin 462 0 126 0 0 0.5)
+ layout: (AlignmentOrigin 512 0 124 0 0 0.5)
+ translateLabel: true
model: restoreUsableExtent
)
(DividerSpec
@@ -4173,6 +4176,7 @@
label: 'image display'
name: 'DitherListPopUpList'
layout: (LayoutFrame 230 0 294 0 -30 1 324 0)
+ translateLabel: true
tabable: true
model: ditherListSelection
enableChannel: ditherSymsNotNil
@@ -4193,14 +4197,15 @@
(LabelSpec
label: 'ClipBoard Encoding:'
name: 'ClipBoardEncodingLabel'
- layout: (LayoutFrame 4 0 383 0 274 0 413 0)
+ layout: (LayoutFrame 0 0 383 0 277 0 413 0)
translateLabel: true
adjust: right
)
(PopUpListSpec
label: 'image display'
name: 'ClipEncodingListPopUpList'
- layout: (LayoutFrame 275 0 383 0 -30 1 413 0)
+ layout: (LayoutFrame 278 0 383 0 -30 1 413 0)
+ translateLabel: true
tabable: true
model: clipEncodingListSelection
menu: clipEncodingList
@@ -4209,13 +4214,13 @@
(LabelSpec
label: 'Max. CopyBuffer Size:'
name: 'MaxCopyBufferSizeLabel'
- layout: (LayoutFrame 4 0 418 0 274 0 448 0)
+ layout: (LayoutFrame 0 0 418 0 277 0 448 0)
translateLabel: true
adjust: right
)
(InputFieldSpec
name: 'MaxCopyBufferEntryField'
- layout: (LayoutFrame 275 0 418 0 370 0 448 0)
+ layout: (LayoutFrame 278 0 418 0 373 0 448 0)
model: maxCopyBufferSize
type: fileSize
immediateAccept: true
@@ -4232,16 +4237,14 @@
label: 'Enable VMWare Drawing Bug Workaround (Limit Number of Buffered Operations)'
name: 'CheckBox1'
layout: (LayoutFrame 5 0 464 0 0 1 486 0)
+ activeHelpKey: enableVMWareDrawingBugWorkaround
model: enableVMWareDrawingBugWorkaround
- activeHelpKey: enableVMWareDrawingBugWorkaround
translateLabel: true
)
)
-
+
)
)
-
- "Modified: / 24-06-2014 / 19:40:09 / cg"
! !
!AbstractSettingsApplication::DisplaySettingsAppl methodsFor:'actions'!
@@ -11497,18 +11500,18 @@
<resource: #canvas>
- ^
+ ^
#(FullSpec
name: windowSpec
- window:
+ window:
(WindowSpec
label: 'Printer Settings'
name: 'Printer Settings'
flags: 1
min: (Point 10 10)
- bounds: (Rectangle 0 0 614 458)
- )
- component:
+ bounds: (Rectangle 0 0 601 474)
+ )
+ component:
(SpecCollection
collection: (
(VerticalPanelViewSpec
@@ -11518,12 +11521,12 @@
verticalLayout: top
horizontalSpace: 3
verticalSpace: 3
- component:
+ component:
(SpecCollection
collection: (
(ViewSpec
name: 'PrinterSelectBox'
- component:
+ component:
(SpecCollection
collection: (
(LabelSpec
@@ -11578,14 +11581,14 @@
acceptOnPointerLeave: false
)
)
-
- )
- extent: (Point 614 108)
+
+ )
+ extent: (Point 601 108)
)
(ViewSpec
name: 'FormatBox'
visibilityChannel: supportsPageFormatSetting
- component:
+ component:
(SpecCollection
collection: (
(DividerSpec
@@ -11603,6 +11606,7 @@
label: 'PopUp List'
name: 'PageFormatPopUpList'
layout: (LayoutFrame 183 0 11 0 333 0 41 0)
+ translateLabel: true
tabable: true
model: pageFormat
enableChannel: enableFormat
@@ -11617,14 +11621,14 @@
translateLabel: true
)
)
-
- )
- extent: (Point 614 43)
+
+ )
+ extent: (Point 601 43)
)
(ViewSpec
name: 'MarginBox'
visibilityChannel: supportsMarginSetting
- component:
+ component:
(SpecCollection
collection: (
(DividerSpec
@@ -11633,17 +11637,17 @@
)
(VerticalPanelViewSpec
name: 'VerticalPanel2'
- layout: (LayoutFrame 0 0.0 4 0.0 0 1.0 4 1.0)
+ layout: (LayoutFrame 0 0.0 9 0.0 0 1.0 -16 1.0)
horizontalLayout: fit
verticalLayout: top
horizontalSpace: 3
verticalSpace: 3
- component:
+ component:
(SpecCollection
collection: (
(ViewSpec
name: 'Box1'
- component:
+ component:
(SpecCollection
collection: (
(LabelSpec
@@ -11668,19 +11672,20 @@
label: 'PopUp List'
name: 'PopUpList2'
layout: (LayoutFrame -155 1 0 0 -5 1 30 0)
+ translateLabel: true
tabable: true
model: selectedUnit
menu: unitList
useIndex: true
)
)
-
+
)
- extent: (Point 614 30)
+ extent: (Point 601 32)
)
(ViewSpec
name: 'Box2'
- component:
+ component:
(SpecCollection
collection: (
(LabelSpec
@@ -11702,13 +11707,13 @@
acceptOnPointerLeave: true
)
)
-
+
)
- extent: (Point 614 30)
+ extent: (Point 601 32)
)
(ViewSpec
name: 'Box3'
- component:
+ component:
(SpecCollection
collection: (
(LabelSpec
@@ -11730,13 +11735,13 @@
acceptOnPointerLeave: true
)
)
-
+
)
- extent: (Point 614 30)
+ extent: (Point 601 32)
)
(ViewSpec
name: 'Box4'
- component:
+ component:
(SpecCollection
collection: (
(LabelSpec
@@ -11758,23 +11763,23 @@
acceptOnPointerLeave: true
)
)
-
+
)
- extent: (Point 614 30)
- )
- )
-
- )
- )
- )
-
- )
- extent: (Point 614 143)
+ extent: (Point 601 32)
+ )
+ )
+
+ )
+ )
+ )
+
+ )
+ extent: (Point 601 164)
)
(ViewSpec
name: 'ColorBox'
visibilityChannel: supportsColorSetting
- component:
+ component:
(SpecCollection
collection: (
(DividerSpec
@@ -11790,16 +11795,16 @@
translateLabel: true
)
)
-
- )
- extent: (Point 614 34)
+
+ )
+ extent: (Point 601 34)
)
)
-
+
)
)
)
-
+
)
)
! !
@@ -17367,11 +17372,28 @@
component:
(SpecCollection
collection: (
- (CheckBoxSpec
- label: 'standard styles only'
- name: 'CheckBox1'
- model: showStandardStylesOnly
- translateLabel: true
+ (ViewSpec
+ name: 'Box4'
+ component:
+ (SpecCollection
+ collection: (
+ (CheckBoxSpec
+ label: 'standard styles only'
+ name: 'CheckBox1'
+ layout: (LayoutFrame 0 0 0 0 -150 1 0 1)
+ model: showStandardStylesOnly
+ translateLabel: true
+ )
+ (CheckBoxSpec
+ label: 'Preview'
+ name: 'CheckBox2'
+ layout: (AlignmentOrigin 0 1 17 0 1 0.5)
+ model: previewVisibleHolder
+ translateLabel: true
+ )
+ )
+
+ )
extent: (Point 562 35)
)
(SequenceViewSpec
@@ -17412,13 +17434,6 @@
resizeForLabel: true
adjust: left
)
- (CheckBoxSpec
- label: 'Preview'
- name: 'CheckBox2'
- layout: (AlignmentOrigin 0 1 17 0 1 0.5)
- model: previewVisibleHolder
- translateLabel: true
- )
)
)
@@ -17505,7 +17520,7 @@
previewVisibleHolder
previewVisibleHolder isNil ifTrue:[
- previewVisibleHolder := ValueHolder new.
+ previewVisibleHolder := false asValue.
previewVisibleHolder onChangeSend:#changeInfoLabel to:self.
].
^ previewVisibleHolder.
@@ -17559,17 +17574,17 @@
self previewVisibleHolder value ifTrue:[
self builder notNil ifTrue:[
labelView := self componentAt:#PreviewLabel.
- labelView label:'Sorry - no preview available'.
-
imgView := (self componentAt:#Preview).
- imgView image:nil.
previewFile notEmptyOrNil ifTrue:[
previewImage := Image fromFile:'../../doc/online/pictures' asFilename / previewFile.
- previewImage notNil ifTrue:[
- labelView label:'Preview'.
- imgView adjust:#fitBig; image:previewImage.
- ]
+ ].
+ previewImage notNil ifTrue:[
+ labelView label:'Preview'.
+ imgView adjust:#fitBig; image:previewImage.
+ ] ifFalse:[
+ labelView label:'Sorry - no preview available'.
+ imgView image:nil.
].
labelView forceResizeHorizontally.
]
@@ -17627,10 +17642,6 @@
self changeInfoLabel
!
-commonPostBuildWith:aBuilder
- super commonPostBuildWith:aBuilder.
-!
-
initialize
|someRsrcFile resourceDir|
@@ -18438,6 +18449,9 @@
#showLocalHistory
'Show a toolbar button to navigate the local (per browser) visited classes history'
+#showMarqueeInfo
+'Scroll multipline info texts in the low info area.\If off, multiline infos are suppressed and no automatic scrolling is done (better for VM/remote desktops)'
+
#showMethodTemplate
'Show a method code template when no method is selected'
@@ -18480,18 +18494,18 @@
<resource: #canvas>
- ^
+ ^
#(FullSpec
name: windowSpec
- window:
+ window:
(WindowSpec
label: 'System Browser Settings'
name: 'System Browser Settings'
flags: 1
min: (Point 10 10)
- bounds: (Rectangle 0 0 617 659)
- )
- component:
+ bounds: (Rectangle 0 0 569 590)
+ )
+ component:
(SpecCollection
collection: (
(VerticalPanelViewSpec
@@ -18501,7 +18515,7 @@
verticalLayout: top
horizontalSpace: 3
verticalSpace: 3
- component:
+ component:
(SpecCollection
collection: (
(FramedBoxSpec
@@ -18509,7 +18523,7 @@
name: 'ToolsSettingsPanel'
labelPosition: topLeft
translateLabel: true
- component:
+ component:
(SpecCollection
collection: (
(VerticalPanelViewSpec
@@ -18519,7 +18533,7 @@
verticalLayout: top
horizontalSpace: 3
verticalSpace: 3
- component:
+ component:
(SpecCollection
collection: (
(CheckBoxSpec
@@ -18528,7 +18542,7 @@
activeHelpKey: useEmbeddedTestRunner
model: showEmbeddedTestRunnerInBrowser
translateLabel: true
- extent: (Point 583 30)
+ extent: (Point 533 30)
)
(CheckBoxSpec
label: 'Web Browser Like Layout (Toolbars are Part of the Tab - experimental)'
@@ -18545,7 +18559,7 @@
activeHelpKey: showBookmarksBar
model: showBookmarkBar
translateLabel: true
- extent: (Point 583 30)
+ extent: (Point 533 30)
)
(CheckBoxSpec
label: 'Sort and Indent Classes by Inheritance'
@@ -18553,7 +18567,7 @@
activeHelpKey: sortAndIndentClassesByInheritance
model: sortAndIndentClassesByInheritance
translateLabel: true
- extent: (Point 583 30)
+ extent: (Point 533 30)
)
(CheckBoxSpec
label: 'Show Local Navigation History (Separate History per Browser Tab)'
@@ -18561,7 +18575,7 @@
activeHelpKey: showLocalHistory
model: showLocalHistory
translateLabel: true
- extent: (Point 583 30)
+ extent: (Point 533 30)
)
(CheckBoxSpec
label: 'Show Global Navigation History (Global History for all Browsers)'
@@ -18569,7 +18583,7 @@
activeHelpKey: showGlobalHistory
model: showGlobalHistory
translateLabel: true
- extent: (Point 583 30)
+ extent: (Point 533 30)
)
(CheckBoxSpec
label: 'Show Search Bar in Browser'
@@ -18577,7 +18591,7 @@
activeHelpKey: searchBarInBrowser
model: useSearchBarInBrowser
translateLabel: true
- extent: (Point 583 30)
+ extent: (Point 533 30)
)
(CheckBoxSpec
label: 'Use in-place Search in Browser Lists (experimental)'
@@ -18585,7 +18599,7 @@
activeHelpKey: inPlaceSearch
model: useInPlaceSearchInBrowserLists
translateLabel: true
- extent: (Point 583 30)
+ extent: (Point 533 30)
)
(CheckBoxSpec
label: 'Show Method Template'
@@ -18593,35 +18607,41 @@
activeHelpKey: showMethodTemplate
model: showMethodTemplate
translateLabel: true
- extent: (Point 583 30)
- )
- )
-
- )
- )
- )
-
- )
- extent: (Point 607 308)
- useDynamicPreferredHeight: true
- usePreferredHeight: true
+ extent: (Point 533 30)
+ )
+ (CheckBoxSpec
+ label: 'Marquee Info'
+ name: 'CheckBox5'
+ activeHelpKey: showMarqueeInfo
+ model: showMarqueeInfo
+ translateLabel: true
+ extent: (Point 533 30)
+ )
+ )
+
+ )
+ )
+ )
+
+ )
+ extent: (Point 569 333)
)
(FramedBoxSpec
label: 'Sourcecode Management Menu Layout'
name: 'MenuLayoutPanel'
labelPosition: topLeft
translateLabel: true
- component:
+ component:
(SpecCollection
collection: (
(VerticalPanelViewSpec
- name: 'MenyLayoutVPanel'
- layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ name: 'MenuLayoutVPanel'
+ layout: (LayoutFrame 0 0 5 0 0 1 0 1)
horizontalLayout: fit
verticalLayout: top
horizontalSpace: 3
verticalSpace: 3
- component:
+ component:
(SpecCollection
collection: (
(RadioButtonSpec
@@ -18632,7 +18652,7 @@
model: sourceCodeManagementMenuLayout
isTriggerOnDown: true
select: 'old'
- extent: (Point 583 30)
+ extent: (Point 533 30)
)
(RadioButtonSpec
label: 'Inline'
@@ -18642,7 +18662,7 @@
model: sourceCodeManagementMenuLayout
isTriggerOnDown: true
select: 'inline'
- extent: (Point 583 30)
+ extent: (Point 533 30)
)
(RadioButtonSpec
label: 'Compact'
@@ -18652,25 +18672,23 @@
model: sourceCodeManagementMenuLayout
isTriggerOnDown: true
select: 'compact'
- extent: (Point 583 30)
- )
- )
-
- )
- )
- )
-
- )
- extent: (Point 617 143)
- useDynamicPreferredHeight: true
- usePreferredHeight: true
+ extent: (Point 533 30)
+ )
+ )
+
+ )
+ )
+ )
+
+ )
+ extent: (Point 569 135)
)
(FramedBoxSpec
label: 'Static Analysis (Lint)'
name: 'LintPanel'
labelPosition: topLeft
translateLabel: true
- component:
+ component:
(SpecCollection
collection: (
(VerticalPanelViewSpec
@@ -18680,24 +18698,24 @@
verticalLayout: top
horizontalSpace: 3
verticalSpace: 3
- component:
+ component:
(SpecCollection
collection: (
(ViewSpec
name: 'DefaultRulesetBox'
- component:
+ component:
(SpecCollection
collection: (
(LabelSpec
label: 'Default Rules:'
name: 'DefaultRulesetLabel'
- layout: (LayoutFrame 0 0 0 0 120 0 0 1)
+ layout: (LayoutFrame 0 0 0 0 138 0 0 1)
translateLabel: true
adjust: left
)
(InputFieldSpec
name: 'DefaultRuleset'
- layout: (LayoutFrame 120 0 0 0 -70 1 0 1)
+ layout: (LayoutFrame 144 0 0 0 -100 1 0 1)
model: smallLintRulesetDefault
isReadOnly: true
acceptOnReturn: true
@@ -18709,53 +18727,51 @@
(ActionButtonSpec
label: 'Select'
name: 'DefaultRulesetSelectButton'
- layout: (LayoutFrame -70 1 0 0 0 1 0 1)
+ layout: (LayoutFrame -100 1 0 0 0 1 0 1)
translateLabel: true
model: doSelectDefaultRuleset
)
)
-
+
)
- extent: (Point 583 25)
+ extent: (Point 533 25)
)
(ViewSpec
name: 'Box1'
- component:
+ component:
(SpecCollection
collection: (
(LinkButtonSpec
label: 'Configure Rule Sets...'
name: 'Button1'
- layout: (LayoutFrame -150 1 -20 1 0 1 0 1)
+ layout: (LayoutFrame -200 1 -20 1 0 1 0 1)
foregroundColor: (Color 0.0 0.0 100.0)
translateLabel: true
adjust: right
model: doConfigureRulesets
)
)
-
+
)
- extent: (Point 583 25)
- )
- )
-
+ extent: (Point 533 25)
+ )
+ )
+
)
useDynamicPreferredHeight: true
usePreferredHeight: true
)
)
-
- )
- extent: (Point 617 100)
- useDynamicPreferredHeight: true
- usePreferredHeight: true
+
+ )
+ extent: (Point 569 92)
)
)
-
+
)
)
)
-
+
)
)
! !
@@ -18807,6 +18823,7 @@
sourceCodeManagementMenuLayout
confirmRefactorings
smallLintRulesetDefault
+ showMarqueeInfo
)
"Created: / 25-11-2011 / 15:09:28 / cg"
@@ -18879,6 +18896,14 @@
"Created: / 07-07-2011 / 00:05:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+showMarqueeInfo
+ showMarqueeInfo isNil ifTrue:[
+ showMarqueeInfo := true asValue.
+ showMarqueeInfo onChangeSend:#updateModifiedChannel to:self
+ ].
+ ^ showMarqueeInfo.
+!
+
showMethodTemplate
"return/create the 'showMethodTemplate' value holder (automatically generated)"
@@ -19527,6 +19552,9 @@
defaultIcon
<resource: #programImage>
+ OperatingSystem isUNIXlike ifTrue:[
+ ^ ToolbarIconLibrary unixShellTerminal22x22Icon
+ ].
^ ToolbarIconLibrary terminal16x16Icon
! !
--- a/DebugView.st Sun Oct 09 22:55:02 2016 +0100
+++ b/DebugView.st Tue Oct 18 22:55:22 2016 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
"
COPYRIGHT (c) 1989 by Claus Gittinger
All Rights Reserved
@@ -2787,9 +2785,9 @@
].
aComponent == terminateButton ifTrue:[
Processor activeProcess isGUIProcess ifTrue:[
- s := 'Terminate the process (closes view and shuts down application)'
+ s := 'Terminate the process.\Attention: closes view and shuts down application.'
] ifFalse:[
- s := 'Terminate the process'
+ s := 'Terminate the process.\Attention: do not kill a system thread'
]
].
aComponent == continueButton ifTrue:[
@@ -3033,45 +3031,45 @@
|m|
withConfirmation ifTrue:[
- self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - exit anyway ?'))
- ifFalse:[
- ^ self
- ]
- ]
+ self checkIfCodeIsReallyModified ifTrue:[
+ (self confirm:('Code was modified.\\Exit anyway ?'))
+ ifFalse:[
+ ^ self
+ ]
+ ]
].
self autoUpdateOff.
(m := contextView middleButtonMenu) notNil ifTrue:[m hide].
inspecting ifFalse:[
- "I am running on top of a process, abort or continue it"
-
- windowGroup notNil ifTrue:[
- windowGroup setProcess:nil.
- ].
- self uncacheMyself.
-
- "/
- "/ catch invalid return;
- "/ this happens, when my process has somehow died (quickterminate)
- "/ and I am a leftOver view, which gets terminated via the launchers
- "/ #destroy-window function.
- "/
- Context cannotReturnSignal handle:[:ex |
- 'DebugView [info]: OOPS - non regular debugView closing(1)' infoPrintCR.
- self uncacheMyself.
- Debugger newDebugger.
- ex return.
- ] do:[
- AbortOperationRequest isHandled ifTrue:[
- self doAbort.
- ] ifFalse:[
- self doContinue
- ]
- ].
- "/ We don't reach this point normally
- 'DebugView [info]: OOPS - non regular debugView closing(2)' infoPrintCR.
+ "I am running on top of a process, abort or continue it"
+
+ windowGroup notNil ifTrue:[
+ windowGroup setProcess:nil.
+ ].
+ self uncacheMyself.
+
+ "/
+ "/ catch invalid return;
+ "/ this happens, when my process has somehow died (quickterminate)
+ "/ and I am a leftOver view, which gets terminated via the launchers
+ "/ #destroy-window function.
+ "/
+ Context cannotReturnSignal handle:[:ex |
+ 'DebugView [info]: OOPS - non regular debugView closing(1)' infoPrintCR.
+ self uncacheMyself.
+ Debugger newDebugger.
+ ex return.
+ ] do:[
+ AbortOperationRequest isHandled ifTrue:[
+ self doAbort.
+ ] ifFalse:[
+ self doContinue
+ ]
+ ].
+ "/ We don't reach this point normally
+ 'DebugView [info]: OOPS - non regular debugView closing(2)' infoPrintCR.
].
Debugger newDebugger.
@@ -3242,19 +3240,21 @@
initializeButtons1In:bpanel
"creates the top button row, consisting of 'continue', 'abort', 'terminate'..."
- |separator|
-
+ |separator buttonWidth|
+
+ buttonWidth := 170.
+
bpanel horizontalLayout:#left.
bpanel verticalLayout:#centerMax.
bpanel verticalSpace:ViewSpacing // 2.
self initializeContinueButtonIn:bpanel.
- continueButton width:150.
+ continueButton width:buttonWidth.
"/ separator := View extent:(10 @ 5) in:bpanel.
"/ separator borderWidth:0; level:0.
self initializeAbortButtonIn:bpanel.
- abortButton width:150.
+ abortButton width:buttonWidth.
separator := View extent:(100 @ 5) in:bpanel.
separator borderWidth:0; level:0.
@@ -3269,9 +3269,9 @@
self initializeDefineButtonIn:bpanel.
(UserPreferences current allowSendMailFromDebugger and:[SendMailTool notNil]) ifTrue:[
- separator := View extent:(10 @ 5) in:bpanel.
- separator borderWidth:0; level:0.
- self initializeReportButtonIn:bpanel.
+ separator := View extent:(10 @ 5) in:bpanel.
+ separator borderWidth:0; level:0.
+ self initializeReportButtonIn:bpanel.
].
"Modified: / 17.11.2001 / 21:02:59 / cg"
!
@@ -3279,17 +3279,19 @@
initializeButtons2In:bpanel
"creates the second button row, consisting of 'next', 'step', 'return'..."
- |separator|
+ |separator buttonWidth|
+
+ buttonWidth := 130.
bpanel horizontalLayout:#left.
bpanel verticalLayout:#centerMax.
bpanel verticalSpace:ViewSpacing // 2.
self initializeNextButtonIn:bpanel.
- nextButton width:100.
+ nextButton width:buttonWidth.
self initializeStepButtonIn:bpanel.
- stepButton width:100.
+ stepButton width:buttonWidth.
"/ cg:
"/ I disabled the stepIn / stepOut buttons - for now.
@@ -3325,17 +3327,17 @@
"/ in:bpanel.
self initializeSendButtonIn:bpanel.
- sendButton width:100.
+ sendButton width:buttonWidth.
separator := View extent:(30 @ 5) in:bpanel.
separator borderWidth:0; level:0.
self initializeReturnButtonIn:bpanel.
- returnButton width:100.
+ returnButton width:buttonWidth.
self initializeRestartButtonIn:bpanel.
- restartButton width:100.
+ restartButton width:buttonWidth.
self initializeResendButtonIn:bpanel.
- resendButton width:100.
+ resendButton width:buttonWidth.
"Modified: / 18-06-2010 / 08:32:05 / cg"
!
@@ -4877,41 +4879,12 @@
from whatever the process is doing, but does not terminate it."
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - abort anyway ?'))
- ifFalse:[
- ^ self
- ]
- ].
-
- inspecting ifTrue:[
- inspectedProcess isDead ifTrue:[
- self showTerminated.
- ^ self
- ].
- (AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
- self showError:'** the process does not handle the abort signal **'
- ] ifTrue:[
- self interruptProcessWith:[AbortOperationRequest raise].
- ].
- ^ self
- ].
-
- steppedContext := wrapperContext := nil.
- haveControl := false.
- exitAction := #abort.
-
- "exit private event-loop"
- catchBlock notNil ifTrue:[
- abortButton turnOff.
- catchBlock value.
-
- "/ not reached
- 'DebugView [warning]: abort failed' errorPrintCR.
- ].
-
- ^ self.
-
- "Modified: / 17.11.2001 / 22:53:22 / cg"
+ (self confirm:('Code was modified.\\Abort anyway ?'))
+ ifFalse:[
+ ^ self
+ ]
+ ].
+ ^ self doAbortWithoutConfirmation
!
doAbortAll
@@ -4957,6 +4930,42 @@
"Modified: / 17.11.2001 / 22:53:22 / cg"
!
+doAbortWithoutConfirmation
+ "abort - send Object>>abortSignal, which is usually caught
+ at save places (for example: in the event loop) and returns back
+ from whatever the process is doing, but does not terminate it."
+
+ inspecting ifTrue:[
+ inspectedProcess isDead ifTrue:[
+ self showTerminated.
+ ^ self
+ ].
+ (AbortOperationRequest isHandledIn:inspectedProcess suspendedContext) ifFalse:[
+ self showError:'** the process does not handle the abort signal **'
+ ] ifTrue:[
+ self interruptProcessWith:[AbortOperationRequest raise].
+ ].
+ ^ self
+ ].
+
+ steppedContext := wrapperContext := nil.
+ haveControl := false.
+ exitAction := #abort.
+
+ "exit private event-loop"
+ catchBlock notNil ifTrue:[
+ abortButton turnOff.
+ catchBlock value.
+
+ "/ not reached
+ 'DebugView [warning]: abort failed' errorPrintCR.
+ ].
+
+ ^ self.
+
+ "Modified: / 17.11.2001 / 22:53:22 / cg"
+!
+
doChangeProcessPriority
"ask for and change the process's priority"
@@ -5280,23 +5289,23 @@
inspecting ifTrue:[^ self].
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - step anyway ?'))
- ifFalse:[
- ^ self
- ]
+ (self confirm:('Code was modified.\\Step anyway ?'))
+ ifFalse:[
+ ^ self
+ ]
].
canContinue ifTrue:[
- steppedContext := wrapperContext := nil.
- haveControl := false.
- exitAction := #step.
-
- "exit private event-loop"
- catchBlock value.
-
- "/ not reached
- 'DebugView [warning]: send failed' errorPrintCR.
- sendButton turnOff.
+ steppedContext := wrapperContext := nil.
+ haveControl := false.
+ exitAction := #step.
+
+ "exit private event-loop"
+ catchBlock value.
+
+ "/ not reached
+ 'DebugView [warning]: send failed' errorPrintCR.
+ sendButton turnOff.
]
"Created: / 6.3.1997 / 21:09:36 / cg"
@@ -5510,70 +5519,70 @@
inspecting ifTrue:[^ self].
self checkIfCodeIsReallyModified ifTrue:[
- (self confirm:('Code modified - step anyway ?'))
- ifFalse:[
- ^ self
- ]
+ (self confirm:('Code was modified\\Step anyway ?'))
+ ifFalse:[
+ ^ self
+ ]
].
canContinue ifTrue:[
- selectedContext notNil ifTrue:[
- con := actualContext. "/ selectedContext.
- steppedContextLineno := actualContext lineNumber.
- ] ifFalse:[
- con := contextArray at:2.
- steppedContextLineno := con lineNumber.
- ].
-
- skipLineNr := lineNrOrNilOrMinus1.
-
- lineNrOrNilOrMinus1 == -1 ifTrue:[
- steppedContextLineno := skipLineNr := nil.
- ].
-
- (stepUntilEntering isNil and:[stepHow == #send]) ifTrue:[
- steppedContext := contextArray at:1.
- stepHow := #nextIn.
- ] ifFalse:[
- stepHow == #nextOut ifTrue:[
- steppedContext := con home.
- ] ifFalse:[
- steppedContext := con.
- ].
- ].
-
- wrapperContext := nil.
+ selectedContext notNil ifTrue:[
+ con := actualContext. "/ selectedContext.
+ steppedContextLineno := actualContext lineNumber.
+ ] ifFalse:[
+ con := contextArray at:2.
+ steppedContextLineno := con lineNumber.
+ ].
+
+ skipLineNr := lineNrOrNilOrMinus1.
+
+ lineNrOrNilOrMinus1 == -1 ifTrue:[
+ steppedContextLineno := skipLineNr := nil.
+ ].
+
+ (stepUntilEntering isNil and:[stepHow == #send]) ifTrue:[
+ steppedContext := contextArray at:1.
+ stepHow := #nextIn.
+ ] ifFalse:[
+ stepHow == #nextOut ifTrue:[
+ steppedContext := con home.
+ ] ifFalse:[
+ steppedContext := con.
+ ].
+ ].
+
+ wrapperContext := nil.
"/ ' step con:' print. (ObjectMemory addressOf:steppedContext) printHex. ' ' print. steppedContext printCR.
- "
- if we step in a wrapped method,
- prepare to skip the prolog ...
- "
-
- inWrap := false.
- method := con method.
- (method notNil
- and:[method isWrapped
- and:[method originalMethod ~~ method]]) ifTrue:[
- inWrap := true
- ].
-
- lineNrOrNilOrMinus1 == #return ifTrue:[
- Processor activeProcess forceInterruptOnReturnOf:con.
- ].
-
- con := nil.
- bigStep := true.
- haveControl := false.
- exitAction := #step.
-
- "exit private event-loop"
- catchBlock value.
-
- "/ not reached
- 'DebugView [warning]: step failed' errorPrintCR.
- stepButton turnOff. nextButton turnOff. sendButton turnOff.
+ "
+ if we step in a wrapped method,
+ prepare to skip the prolog ...
+ "
+
+ inWrap := false.
+ method := con method.
+ (method notNil
+ and:[method isWrapped
+ and:[method originalMethod ~~ method]]) ifTrue:[
+ inWrap := true
+ ].
+
+ lineNrOrNilOrMinus1 == #return ifTrue:[
+ Processor activeProcess forceInterruptOnReturnOf:con.
+ ].
+
+ con := nil.
+ bigStep := true.
+ haveControl := false.
+ exitAction := #step.
+
+ "exit private event-loop"
+ catchBlock value.
+
+ "/ not reached
+ 'DebugView [warning]: step failed' errorPrintCR.
+ stepButton turnOff. nextButton turnOff. sendButton turnOff.
]
"Modified: / 29.7.1998 / 21:50:16 / cg"
@@ -6688,21 +6697,22 @@
findNodeIn:tree forInterval:interval
<resource: #obsolete>
- |node|
-
-self obsoleteMethodWarning.
- node := nil.
- tree nodesDo:[:each |
- (each intersectsInterval:interval) ifTrue:[
- (node isNil or:[node == each parent]) ifTrue:[
- node := each
- ] ifFalse:[
- (node parent notNil
- and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
- ]
- ]
- ].
- ^ node
+ self obsoleteMethodWarning.
+ ^ DoWhatIMeanSupport findNodeIn:tree forInterval:interval
+"/ |node|
+"/
+"/ node := nil.
+"/ tree nodesDo:[:each |
+"/ (each intersectsInterval:interval) ifTrue:[
+"/ (node isNil or:[node == each parent]) ifTrue:[
+"/ node := each
+"/ ] ifFalse:[
+"/ (node parent notNil
+"/ and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
+"/ ]
+"/ ]
+"/ ].
+"/ ^ node
!
goodSkipUntilSelector
@@ -8261,6 +8271,8 @@
"/ self showError:ex description.
"/ ex proceed.
"/ ] do:[
+ device isNil ifTrue:[^ self].
+
device
dispatchModalWhile:[
Processor activeProcess state:#debug.
@@ -8769,9 +8781,9 @@
Redefined here, to answer true, if exclusice Debugger, which cannot handle popup boxes"
(exclusive or:[windowGroup isNil]) ifTrue:[
- ^ true
- ].
- ^ super confirm:aString.
+ ^ true
+ ].
+ ^ super confirm:(resources stringWithCRs:aString).
!
doShowSelection:lineNr
@@ -9297,11 +9309,12 @@
] ifFalse:[
UserPreferences current syntaxColoring ifTrue:[
implementorClass isNil ifTrue:[
+ |guessedHome|
(con isBlockContext
and:[con home isNil
- and:[con guessedHome notNil]])
+ and:[(guessedHome := con guessedHome) notNil]])
ifTrue:[
- implementorClass := con guessedHome mclass
+ implementorClass := guessedHome mclass
]
].
implementorClass notNil ifTrue:[
@@ -9375,6 +9388,7 @@
].
codeView
+ simulatedSelf:rec;
doItAction:
[:theCode |
evaluatorClass
@@ -9481,7 +9495,7 @@
printConditionOn:aStream
ignoredSendingClassAndSelectors notEmptyOrNil ifTrue:[
- aStream nextPutAll:(' if called from %1 » %2'
+ aStream nextPutAll:(' if called from %1 » %2'
bindWith:ignoredSendingClassAndSelectors first first
with:ignoredSendingClassAndSelectors first second).
^ self.
--- a/Diff2.st Sun Oct 09 22:55:02 2016 +0100
+++ b/Diff2.st Tue Oct 18 22:55:22 2016 +0100
@@ -29,6 +29,8 @@
"
"{ Package: 'stx:libtool' }"
+"{ NameSpace: Smalltalk }"
+
Object subclass:#Diff2
instanceVariableNames:'file1 file2'
classVariableNames:''
@@ -121,7 +123,8 @@
documentation
"
- Generic diff/comm utilities. Agnostic as to the longestCommonSubsequence algorithm used.
+ Generic diff/comm utilities.
+ Agnostic as to the longestCommonSubsequence algorithm used.
Instance Variables
file1: <SequenceableCollection> One of the two files to compare.
@@ -841,10 +844,10 @@
!Diff2 class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/Diff2.st,v 1.5 2014-11-24 14:15:56 cg Exp $'
+ ^ '$Header$'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/Diff2.st,v 1.5 2014-11-24 14:15:56 cg Exp $'
+ ^ '$Header$'
! !
--- a/Diff3.st Sun Oct 09 22:55:02 2016 +0100
+++ b/Diff3.st Tue Oct 18 22:55:22 2016 +0100
@@ -29,6 +29,8 @@
"
"{ Package: 'stx:libtool' }"
+"{ NameSpace: Smalltalk }"
+
Object subclass:#Diff3
instanceVariableNames:'file1 file0 file2 diffClass'
classVariableNames:''
@@ -102,7 +104,8 @@
documentation
"
- Diff3 provides a three-way-merge algorithm suitable for performing textual merges, such as are often required as part of source-code version control systems.
+ Diff3 provides a three-way-merge algorithm suitable for performing textual merges,
+ such as are often required as part of source-code version control systems.
Instance Variables
diffClass: <Class> Should be a subclass of GenericDiff. Used to resolve changes.
@@ -834,10 +837,10 @@
!Diff3 class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/Diff3.st,v 1.3 2014-02-25 07:00:13 cg Exp $'
+ ^ '$Header$'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/Diff3.st,v 1.3 2014-02-25 07:00:13 cg Exp $'
+ ^ '$Header$'
! !
--- a/DirectoryContentsBrowser.st Sun Oct 09 22:55:02 2016 +0100
+++ b/DirectoryContentsBrowser.st Tue Oct 18 22:55:22 2016 +0100
@@ -1846,12 +1846,15 @@
rawKey := anEvent rawKey.
"/ (key ~= #'Alt_L') ifTrue:[self halt.].
- key == #Accept ifTrue:[
- self withActivityIndicationDo:[
- self fileFileIn.
- ].
- ^ true.
- ].
+ "/ cg: removed; too dangerous, because it depends on which view has
+ "/ the focus - in the codeView, it is a save; in the list, it is a fileIn.
+ "/ this is confusing to newcomers.
+"/ key == #Accept ifTrue:[
+"/ self withActivityIndicationDo:[
+"/ self fileFileIn.
+"/ ].
+"/ ^ true.
+"/ ].
key == #Paste ifTrue:[
self pasteFiles.
^ true.
--- a/FileBrowser.st Sun Oct 09 22:55:02 2016 +0100
+++ b/FileBrowser.st Tue Oct 18 22:55:22 2016 +0100
@@ -2026,10 +2026,13 @@
self fileRemove.
^ self
].
- (key == #Accept) ifTrue:[
- self fileFileIn.
- ^ self
- ].
+ "/ cg: removed; too dangerous, because it depends on which view has
+ "/ the focus - in the codeView, it is a save; in the list, it is a fileIn.
+ "/ this is confusing to newcomers.
+ "/ (key == #Accept) ifTrue:[
+ "/ self fileFileIn.
+ "/ ^ self
+ "/ ].
(key == #GotoLine) ifTrue:[
self fileGet.
^ self
--- a/FileBrowserV2SettingsDialog.st Sun Oct 09 22:55:02 2016 +0100
+++ b/FileBrowserV2SettingsDialog.st Tue Oct 18 22:55:22 2016 +0100
@@ -114,7 +114,7 @@
name: 'Settings Dialog'
min: (Point 10 10)
max: (Point 1024 768)
- bounds: (Rectangle 0 0 443 621)
+ bounds: (Rectangle 0 0 528 649)
menu: mainMenu
)
component:
@@ -122,7 +122,7 @@
collection: (
(SubCanvasSpec
name: 'FileBrowserV2SettingsAppl'
- layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 -34 1)
+ layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 -36 1)
level: 0
hasHorizontalScrollBar: true
hasVerticalScrollBar: true
@@ -133,7 +133,7 @@
)
(HorizontalPanelViewSpec
name: 'HorizontalPanel1'
- layout: (LayoutFrame 0 0.0 -34 1 -16 1.0 0 1)
+ layout: (LayoutFrame 0 0.0 -36 1 -16 1.0 0 1)
horizontalLayout: fitSpace
verticalLayout: center
horizontalSpace: 3
@@ -147,7 +147,8 @@
translateLabel: true
model: doSave
enableChannel: enableButtons
- extent: (Point 81 22)
+ extent: (Point 97 32)
+ usePreferredHeight: true
)
(ActionButtonSpec
label: 'Apply'
@@ -155,7 +156,8 @@
translateLabel: true
model: doApply
enableChannel: enableButtons
- extent: (Point 82 22)
+ extent: (Point 98 32)
+ usePreferredHeight: true
)
(ActionButtonSpec
label: 'Reload'
@@ -163,14 +165,16 @@
translateLabel: true
model: doReload
enableChannel: enableButtons
- extent: (Point 82 22)
+ extent: (Point 97 32)
+ usePreferredHeight: true
)
(ActionButtonSpec
label: 'Cancel'
name: 'Cancel'
translateLabel: true
model: doCancel
- extent: (Point 82 22)
+ extent: (Point 98 32)
+ usePreferredHeight: true
)
(ActionButtonSpec
label: 'Help'
@@ -179,7 +183,8 @@
translateLabel: true
model: help
enableChannel: enableButtons
- extent: (Point 82 22)
+ extent: (Point 98 32)
+ usePreferredHeight: true
)
)
@@ -322,10 +327,10 @@
!FileBrowserV2SettingsDialog class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2SettingsDialog.st,v 1.12 2015-01-27 12:17:15 cg Exp $'
+ ^ '$Header$'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2SettingsDialog.st,v 1.12 2015-01-27 12:17:15 cg Exp $'
+ ^ '$Header$'
! !
--- a/FindFileApplication.st Sun Oct 09 22:55:02 2016 +0100
+++ b/FindFileApplication.st Tue Oct 18 22:55:22 2016 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
"
COPYRIGHT (c) 2002 by eXept Software AG
All Rights Reserved
@@ -515,7 +513,7 @@
(ActionButtonSpec
label: 'Clear Cache'
name: 'ClearCacheButton'
- layout: (LayoutFrame -169 1 125 0 -44 1 147 0)
+ layout: (LayoutFrame -169 1 125 0 -21 1 147 0)
translateLabel: true
model: clearCache
)
--- a/NewLauncher.st Sun Oct 09 22:55:02 2016 +0100
+++ b/NewLauncher.st Tue Oct 18 22:55:22 2016 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
"
COPYRIGHT (c) 1997-1998 by eXept Software AG
All Rights Reserved
@@ -2325,6 +2323,7 @@
"Do not manually edit this!! If it is corrupted,
the MenuEditor may not be able to read the specification."
+
"
MenuEditor new openOnClass:NewLauncher andSelector:#menuToolbar
(Menu new fromLiteralArrayEncoding:(NewLauncher menuToolbar)) startUp
@@ -2332,133 +2331,121 @@
<resource: #menu>
- ^
+ ^
#(Menu
- (
- (MenuItem
- activeHelpKey: fileSaveImage
- enabled: enableDangerousMenuItemsInRemoteLauncher
- label: 'save image'
- itemValue: saveImage
- nameKey: saveImage
- translateLabel: true
- isButton: true
- labelImage: (ResourceRetriever ToolbarIconLibrary saveImageIcon)
- )
- (MenuItem
- activeHelpKey: fileFileBrowser
- label: 'open file browser'
- itemValue: openFileBrowser
- nameKey: fileBrowser
- translateLabel: true
- isButton: true
- isVisible: fileBrowserItemVisible
- submenuChannel: menuFileHistory
- labelImage: (ResourceRetriever ToolbarIconLibrary startFileBrowserIcon)
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- activeHelpKey: toolsWorkspace
- label: 'open workspace'
- itemValue: openWorkspace
- nameKey: workspace
- translateLabel: true
- isButton: true
- submenuChannel: menuOpenWorkspaceTypes
- labelImage: (ResourceRetriever ToolbarIconLibrary startWorkspaceIcon)
- )
- (MenuItem
- activeHelpKey: classesSystemBrowser
- label: 'open system browser'
- itemValue: openApplication:
- nameKey: systemBrowser
- translateLabel: true
- isButton: true
- isVisible: systemBrowserItemVisible
- submenuChannel: menuClassHistory
- labelImage: (ResourceRetriever ToolbarIconLibrary startSystemBrowserIcon)
- argument: 'SystemBrowser'
- )
- (MenuItem
- activeHelpKey: classesSystemBrowserOnClass
- label: 'System Browser On Class'
- translateLabel: true
- isButton: true
- isVisible: false
- submenuChannel: menuClassHistory
- labelImage: (ResourceRetriever ToolbarIconLibrary startSystemBrowserOnHistoryClassIcon)
- )
- (MenuItem
- activeHelpKey: toolsChangesBrowserOrNavigateToRecentChange
- label: 'open changes browser'
- itemValue: startChangesBrowser
- nameKey: changesBrowser
- translateLabel: true
- isButton: true
- submenuChannel: menuChangeHistory
- labelImage: (ResourceRetriever ToolbarIconLibrary startChangesBrowserIcon)
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- activeHelpKey: toolsGUIPainter
- label: 'open GUI Builder'
- itemValue: openApplication:
- nameKey: guiBuilder
- translateLabel: true
- isButton: true
- labelImage: (ResourceRetriever ToolbarIconLibrary startUIPainterIcon)
- argument: 'UIPainter'
- )
- (MenuItem
- activeHelpKey: toolsMenuEditor
- label: 'open menu editor'
- itemValue: openApplication:
- nameKey: menuEditor
- translateLabel: true
- isButton: true
- labelImage: (ResourceRetriever ToolbarIconLibrary startMenuEditorIcon)
- argument: 'MenuEditor'
- )
- (MenuItem
- activeHelpKey: toolsImageEditor
- label: 'open image editor'
- itemValue: openApplication:
- nameKey: imageEditor
- translateLabel: true
- isButton: true
- labelImage: (ResourceRetriever ToolbarIconLibrary startImageEditorIcon)
- argument: 'ImageEditor'
- )
- (MenuItem
- label: ''
- )
- (MenuItem
- activeHelpKey: systemGarbageCollectAndCompress
- label: 'garbage collect and compress'
- itemValue: compressingGarbageCollect
- nameKey: garbageCollect
- translateLabel: true
- isButton: true
- isVisible: false
- labelImage: (ResourceRetriever ToolbarIconLibrary garbageCollectIcon)
- )
- (MenuItem
- activeHelpKey: helpSTXOnlineDocumentation
- label: 'help'
- itemValue: startDocumentationTool
- nameKey: help
- translateLabel: true
- isButton: true
- startGroup: right
- labelImage: (ResourceRetriever XPToolbarIconLibrary stxHelpIcon)
- )
- )
- nil
- nil
+ (
+ (MenuItem
+ activeHelpKey: fileSaveImage
+ enabled: enableDangerousMenuItemsInRemoteLauncher
+ label: 'save image'
+ itemValue: saveImage
+ nameKey: saveImage
+ isButton: true
+ labelImage: (ResourceRetriever ToolbarIconLibrary saveImageIcon)
+ )
+ (MenuItem
+ activeHelpKey: fileFileBrowser
+ label: 'open file browser'
+ itemValue: openFileBrowser
+ nameKey: fileBrowser
+ isButton: true
+ isVisible: fileBrowserItemVisible
+ submenuChannel: menuFileHistory
+ labelImage: (ResourceRetriever ToolbarIconLibrary startFileBrowserIcon)
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ activeHelpKey: toolsWorkspace
+ label: 'open workspace'
+ itemValue: openWorkspace
+ nameKey: workspace
+ isButton: true
+ submenuChannel: menuOpenWorkspaceTypes
+ labelImage: (ResourceRetriever ToolbarIconLibrary startWorkspaceIcon)
+ )
+ (MenuItem
+ activeHelpKey: newSystemBrowser
+ label: 'open system browser'
+ itemValue: openApplication:
+ nameKey: systemBrowser
+ isButton: true
+ submenuChannel: menuClassHistory
+ labelImage: (ResourceRetriever ToolbarIconLibrary startNewSystemBrowserIcon)
+ argument: 'Tools::NewSystemBrowser'
+ )
+ (MenuItem
+ activeHelpKey: classesSystemBrowserOnClass
+ label: 'System Browser On Class'
+ isButton: true
+ isVisible: false
+ submenuChannel: menuClassHistory
+ labelImage: (ResourceRetriever ToolbarIconLibrary startSystemBrowserOnHistoryClassIcon)
+ )
+ (MenuItem
+ activeHelpKey: toolsChangesBrowserOrNavigateToRecentChange
+ label: 'open changes browser'
+ itemValue: startChangesBrowser
+ nameKey: changesBrowser
+ isButton: true
+ submenuChannel: menuChangeHistory
+ labelImage: (ResourceRetriever ToolbarIconLibrary startChangesBrowserIcon)
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ activeHelpKey: toolsGUIPainter
+ label: 'open GUI Builder'
+ itemValue: openApplication:
+ nameKey: guiBuilder
+ isButton: true
+ labelImage: (ResourceRetriever ToolbarIconLibrary startUIPainterIcon)
+ argument: 'UIPainter'
+ )
+ (MenuItem
+ activeHelpKey: toolsMenuEditor
+ label: 'open menu editor'
+ itemValue: openApplication:
+ nameKey: menuEditor
+ isButton: true
+ labelImage: (ResourceRetriever ToolbarIconLibrary startMenuEditorIcon)
+ argument: 'MenuEditor'
+ )
+ (MenuItem
+ activeHelpKey: toolsImageEditor
+ label: 'open image editor'
+ itemValue: openApplication:
+ nameKey: imageEditor
+ isButton: true
+ labelImage: (ResourceRetriever ToolbarIconLibrary startImageEditorIcon)
+ argument: 'ImageEditor'
+ )
+ (MenuItem
+ label: ''
+ )
+ (MenuItem
+ activeHelpKey: systemGarbageCollectAndCompress
+ label: 'garbage collect and compress'
+ itemValue: compressingGarbageCollect
+ nameKey: garbageCollect
+ isButton: true
+ isVisible: false
+ labelImage: (ResourceRetriever ToolbarIconLibrary garbageCollectIcon)
+ )
+ (MenuItem
+ activeHelpKey: helpSTXOnlineDocumentation
+ label: 'help'
+ itemValue: startDocumentationTool
+ nameKey: help
+ isButton: true
+ startGroup: right
+ labelImage: (ResourceRetriever XPToolbarIconLibrary stxHelpIcon)
+ )
+ )
+ nil
+ nil
)
!
@@ -3686,17 +3673,6 @@
^ (Smalltalk at:#'SQL::ODBCScratchpad') notNil
!
-systemBrowserItemVisible
- |holder|
-
- (holder := builder bindingAt:#systemBrowserItemVisible) isNil ifTrue:[
- builder
- aspectAt:#systemBrowserItemVisible
- put:(holder := ValueHolder with:UserPreferences current useNewSystemBrowser not).
- ].
- ^ holder
-!
-
tabList
^ resources array:#('Transcript' 'Errors').
!
--- a/PerforceSourceCodeManagerUtilities.st Sun Oct 09 22:55:02 2016 +0100
+++ b/PerforceSourceCodeManagerUtilities.st Tue Oct 18 22:55:22 2016 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
"
COPYRIGHT (c) 2006 by eXept Software AG
All Rights Reserved
@@ -310,7 +308,7 @@
^ true.
].
- self activityNotification:(resources string:'checking in %1' with:aClass name).
+ self activityNotification:(resources string:'PerforceSourceCodeManager [info]: checking in %1' with:aClass name).
pri := Processor activePriority.
Processor activeProcess withPriority:pri-1 to:pri
do:[
@@ -1805,7 +1803,7 @@
].
checkInRepaired ifTrue:[
- Transcript showCR:'checking in ' , pathName asFilename baseName , ' (manually repaired version) ...'
+ Transcript showCR:'PerforceSourceCodeManager [info]: checking in ' , pathName asFilename baseName , ' (manually repaired version) ...'
] ifFalse:[
'PerforceSourceCodeManager [warning]: cannot (for now) checkin; conflicts found' infoPrintCR.
Transcript showCR:'checkin of ' , pathName asFilename baseName , ' aborted (conflicting changes; repository unchanged)'.
--- a/SettingsDialog.st Sun Oct 09 22:55:02 2016 +0100
+++ b/SettingsDialog.st Tue Oct 18 22:55:22 2016 +0100
@@ -67,7 +67,7 @@
It is used (among others) in the launcher's and filebrowser's settings-dialogs.
However, it is rather generic and can be setup for any application's setting dialog.
- The actual contents (i.e. the arganization tree and tab contents) is provided
+ The actual contents (i.e. the organization tree and tab contents) is provided
by a spec-array (the settingsList).
You will find a default settings list here, but in theory, applications may provide
their own one, or modify a copy of that list for specialized settings dialogs.
@@ -1687,7 +1687,7 @@
"D121136 - Filename doesnot understand allBold"
(Dialog
confirm:(resources
- stringWithCRs:'Save your changed settings in the settings file?\(which is: "%1"\\If not saved, these changes only apply to your current session.'
+ stringWithCRs:'Save your changed settings in the settings file?\(which is: "%1")\\If not saved, these changes only apply to your current session.'
with:self class currentSettingsFilename asString allBold))
ifTrue:[
self saveSettingsWithoutAskingForFile.
@@ -1708,7 +1708,10 @@
createRootItem
|rootItem lbl|
- resources := AbstractLauncherApplication resources.
+ "/ this is stupidly wrong!!
+ "/ if the launcher thinks it needs this, it should set the resources
+ "/ (otherwise, reuse of resource dialog is difficult eg. in expecco)
+ "/ resources := AbstractLauncherApplication resources.
rootItem := self class itemClass new.
lbl := resources string:'Settings'.
rootItem label:lbl "allBold".
@@ -1724,10 +1727,10 @@
initialize
|rootItem|
+ super initialize.
rootItem := self createRootItem.
self applicationList root:rootItem; showRoot:true "false".
self selectedItem value:rootItem.
- super initialize.
"Modified: / 03-11-2007 / 14:22:18 / cg"
!
--- a/Tools__CheckinInfoDialog.st Sun Oct 09 22:55:02 2016 +0100
+++ b/Tools__CheckinInfoDialog.st Tue Oct 18 22:55:22 2016 +0100
@@ -319,7 +319,7 @@
translateLabel: true
model: checkinReasonHolder
isTriggerOnDown: true
- select: 'reasonBugfix'
+ select: reasonBugfix
)
(RadioButtonSpec
label: 'Feature / Enhancement'
@@ -408,6 +408,7 @@
translateLabel: true
model: doCancel
extent: (Point 282 22)
+ usePreferredHeight: true
)
(ActionButtonSpec
label: 'OK'
@@ -415,6 +416,7 @@
translateLabel: true
model: doAccept
extent: (Point 282 22)
+ usePreferredHeight: true
)
)
--- a/Tools__CodeView2.st Sun Oct 09 22:55:02 2016 +0100
+++ b/Tools__CodeView2.st Tue Oct 18 22:55:22 2016 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
"
COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
All Rights Reserved
@@ -477,6 +475,11 @@
"Modified: / 01-08-2010 / 20:40:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+acceptEnabled:aBoolean
+
+ textView acceptEnabled:aBoolean
+!
+
breakpoints
|s|
--- a/Tools__MethodCategoryList.st Sun Oct 09 22:55:02 2016 +0100
+++ b/Tools__MethodCategoryList.st Tue Oct 18 22:55:22 2016 +0100
@@ -1788,7 +1788,7 @@
methodInfoFor:aMethod in:mclass selector:selector lazy:lazy
|info isDocumentationMethod isVersionMethod def methodsPackage|
- "/ the first at:ifAbsent: is aktually not needed - it is here to
+ "/ the first at:ifAbsent: is actually not needed - it is here to
"/ reduce the average blocking time, and to allow for debugging the info generating
"/ code without deadlock
MethodInfoCacheAccessLock critical:[
--- a/Tools__MethodList.st Sun Oct 09 22:55:02 2016 +0100
+++ b/Tools__MethodList.st Tue Oct 18 22:55:22 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 2000 by eXept Software AG
All Rights Reserved
@@ -1595,14 +1597,14 @@
].
idx == 0 ifTrue:[
"/ method was not previously shown; try to avoid a full update
- (self isMethodToBeShown:aMethod) ifTrue:[
+ "/ (self isMethodToBeShown:aMethod) ifTrue:[
self invalidateList
- ].
+ "/ ].
] ifFalse:[
self browserNameList at:idx put:s.
]
- "Modified: / 17-08-2011 / 15:05:02 / cg"
+ "Modified: / 16-10-2016 / 23:31:22 / cg"
! !
!MethodList methodsFor:'private-presentation'!
--- a/Tools__NavigationState.st Sun Oct 09 22:55:02 2016 +0100
+++ b/Tools__NavigationState.st Tue Oct 18 22:55:22 2016 +0100
@@ -1686,6 +1686,9 @@
!
isProjectFullBrowser
+ "showing a single or multiple full projects
+ (but not a regular browser, in projects-mode."
+
^ canvasType == #singleProjectFullBrowserSpec
or:[ canvasType == #multipleProjectFullBrowserSpec ]
--- a/Tools__NewClassWizardDialog.st Sun Oct 09 22:55:02 2016 +0100
+++ b/Tools__NewClassWizardDialog.st Tue Oct 18 22:55:22 2016 +0100
@@ -21,7 +21,8 @@
createUpdateMethodHolder createInitializerHolder
createInitialGUICodeHolder classInstVarNamesHolder
classVarNamesHolder nameSpaceHolder categoryHolder
- stereotypeHolder'
+ stereotypeHolder isCreatingClassHolder listOfSuperclassesHolder
+ canDisableTemplateCreationHolder'
classVariableNames:'LastLanguage LastSuperclass LastPackage LastNamespace
LastCategory'
poolDictionaries:''
@@ -136,7 +137,7 @@
'Open a dialog for namespace selection'
#package
-'Package into which this class should be placed.\Packages are units for deployment\(separately compiled & deployable libraries and applications)'
+'Packages are units for deployment\(separately compiled & deployable libraries and applications).\For class creation, choose the package into which this class should be placed.\For package creation, define the packageID of the new package.\ID must be of the form: "<module>:<path>", for example: "myname:demos/myFirstDemoProgram"'
#project
'Project-ID (aka package) into which this class should be placed'
@@ -314,55 +315,66 @@
translateLabel: true
)
(LabelSpec
- label: 'Class Creation Wizard'
+ label: 'Class/Package Creation Wizard'
name: 'Label11'
layout: (LayoutFrame 100 0 10 0 390 0 50 0)
translateLabel: true
)
(LabelSpec
- label: 'Programming Language:'
- name: 'Label9'
- layout: (LayoutFrame 7 0 90 0 301 0 112 0)
- activeHelpKey: programmingLanguage
- translateLabel: true
- adjust: right
- )
- (ComboListSpec
- name: 'ComboList1'
- layout: (LayoutFrame 308 0 90 0 -32 1 112 0)
- activeHelpKey: programmingLanguage
- model: languageHolder
- comboList: listOfLanguages
- useIndex: true
- )
- (LabelSpec
label: 'Stereotype:'
name: 'Label13'
- layout: (LayoutFrame 10 0 143 0 180 0 165 0)
+ layout: (LayoutFrame 10 0 91 0 180 0 113 0)
activeHelpKey: stereotype
translateLabel: true
adjust: right
)
(ComboListSpec
name: 'ComboList3'
- layout: (LayoutFrame 190 0 142 0 -32 1 164 0)
+ layout: (LayoutFrame 190 0 91 0 -32 1 113 0)
activeHelpKey: stereotype
model: stereotypeHolder
comboList: listOfStereotypes
useIndex: true
)
(LabelSpec
+ label: 'Programming Language:'
+ name: 'Label9'
+ layout: (LayoutFrame 7 0 126 0 301 0 148 0)
+ activeHelpKey: programmingLanguage
+ visibilityChannel: isCreatingClassHolder
+ translateLabel: true
+ adjust: right
+ )
+ (ComboListSpec
+ name: 'ComboList1'
+ layout: (LayoutFrame 308 0 126 0 -32 1 148 0)
+ activeHelpKey: programmingLanguage
+ visibilityChannel: isCreatingClassHolder
+ model: languageHolder
+ comboList: listOfLanguages
+ useIndex: true
+ )
+ (LabelSpec
label: 'Class Name:'
name: 'Label1'
layout: (LayoutFrame 10 0 172 0 180 0 194 0)
activeHelpKey: className
+ visibilityChannel: isCreatingClassHolder
translateLabel: true
adjust: right
)
+ (LabelSpec
+ label: '*'
+ name: 'Label14'
+ layout: (LayoutFrame 180 0 173 0 190 0 195 0)
+ visibilityChannel: isCreatingClassHolder
+ translateLabel: true
+ )
(InputFieldSpec
name: 'EntryField1'
layout: (LayoutFrame 190 0 172 0 -32 1 194 0)
activeHelpKey: className
+ visibilityChannel: isCreatingClassHolder
model: classNameHolder
acceptOnReturn: true
acceptOnTab: true
@@ -370,16 +382,11 @@
acceptOnPointerLeave: true
)
(LabelSpec
- label: '*'
- name: 'Label14'
- layout: (LayoutFrame 180 0 173 0 190 0 195 0)
- translateLabel: true
- )
- (LabelSpec
label: 'Superclass:'
name: 'Label2'
layout: (LayoutFrame 10 0 202 0 180 0 224 0)
activeHelpKey: superclass
+ visibilityChannel: isCreatingClassHolder
translateLabel: true
adjust: right
)
@@ -387,15 +394,17 @@
name: 'ComboBox1'
layout: (LayoutFrame 190 0 202 0 -32 1 224 0)
activeHelpKey: superclass
+ visibilityChannel: isCreatingClassHolder
model: superclassNameHolder
acceptOnLostFocus: true
- comboList: listOfSuperclasses
+ comboList: listOfSuperclassesHolder
useIndex: false
)
(LabelSpec
label: '*'
name: 'Label15'
layout: (LayoutFrame 180 0 202 0 190 0 224 0)
+ visibilityChannel: isCreatingClassHolder
translateLabel: true
)
(ActionButtonSpec
@@ -403,6 +412,7 @@
name: 'Button1'
layout: (LayoutFrame -22 1 202 0 -2 1 224 0)
activeHelpKey: chooseSuperclass
+ visibilityChannel: isCreatingClassHolder
translateLabel: true
model: openSuperClassChooser
)
@@ -414,6 +424,13 @@
translateLabel: true
adjust: right
)
+ (LabelSpec
+ label: '*'
+ name: 'Label16'
+ layout: (LayoutFrame 180 0 245 0 190 0 267 0)
+ visibilityChannel: isCreatingPackageHolder
+ translateLabel: true
+ )
(ComboBoxSpec
name: 'ComboBox2'
layout: (LayoutFrame 190 0 242 0 -32 1 264 0)
@@ -438,6 +455,7 @@
name: 'Label4'
layout: (LayoutFrame 10 0 272 0 180 0 294 0)
activeHelpKey: namespace
+ visibilityChannel: isCreatingClassHolder
translateLabel: true
adjust: right
)
@@ -445,6 +463,7 @@
name: 'ComboList2'
layout: (LayoutFrame 190 0 272 0 -32 1 294 0)
activeHelpKey: namespace
+ visibilityChannel: isCreatingClassHolder
model: nameSpaceHolder
comboList: listOfNamespaces
)
@@ -453,6 +472,7 @@
name: 'Button5'
layout: (LayoutFrame -22 1 272 0 -2 1 294 0)
activeHelpKey: namespaceChooser
+ visibilityChannel: isCreatingClassHolder
translateLabel: true
model: openNamespaceChooser
)
@@ -461,6 +481,7 @@
name: 'Label12'
layout: (LayoutFrame 10 0 302 0 180 0 324 0)
activeHelpKey: category
+ visibilityChannel: isCreatingClassHolder
translateLabel: true
adjust: right
)
@@ -468,6 +489,7 @@
name: 'ComboBox3'
layout: (LayoutFrame 190 0 302 0 -32 1 324 0)
activeHelpKey: category
+ visibilityChannel: isCreatingClassHolder
model: categoryHolder
acceptOnLostFocus: true
comboList: listOfCategories
@@ -477,6 +499,7 @@
name: 'Button6'
layout: (LayoutFrame -22 1 302 0 -2 1 324 0)
activeHelpKey: categoryChooser
+ visibilityChannel: isCreatingClassHolder
translateLabel: true
model: openCategoryChooser
)
@@ -485,6 +508,7 @@
name: 'Label5'
layout: (LayoutFrame 10 0 342 0 180 0 364 0)
activeHelpKey: instanceVariableNames
+ visibilityChannel: isCreatingClassHolder
translateLabel: true
adjust: right
)
@@ -492,6 +516,7 @@
name: 'EntryField4'
layout: (LayoutFrame 190 0 342 0 -32 1 364 0)
activeHelpKey: instanceVariableNames
+ visibilityChannel: isCreatingClassHolder
model: instVarNamesHolder
acceptOnReturn: true
acceptOnTab: true
@@ -503,6 +528,7 @@
name: 'Label6'
layout: (LayoutFrame 10 0 372 0 180 0 394 0)
activeHelpKey: classVariableNames
+ visibilityChannel: isCreatingClassHolder
translateLabel: true
adjust: right
)
@@ -510,6 +536,7 @@
name: 'EntryField5'
layout: (LayoutFrame 190 0 372 0 -32 1 394 0)
activeHelpKey: classVariableNames
+ visibilityChannel: isCreatingClassHolder
model: classVarNamesHolder
acceptOnReturn: true
acceptOnTab: true
@@ -521,6 +548,7 @@
name: 'Label7'
layout: (LayoutFrame 10 0 402 0 180 0 424 0)
activeHelpKey: classInstVariableNames
+ visibilityChannel: isCreatingClassHolder
translateLabel: true
adjust: right
)
@@ -528,6 +556,7 @@
name: 'EntryField6'
layout: (LayoutFrame 190 0 402 0 -32 1 424 0)
activeHelpKey: classInstVariableNames
+ visibilityChannel: isCreatingClassHolder
model: classInstVarNamesHolder
acceptOnReturn: true
acceptOnTab: true
@@ -546,6 +575,7 @@
name: 'CheckBox1'
layout: (LayoutFrame 120 0 442 0 280 0 464 0)
activeHelpKey: createAccessors
+ visibilityChannel: isCreatingClassHolder
model: createAccessorsHolder
translateLabel: true
)
@@ -554,6 +584,7 @@
name: 'CheckBox6'
layout: (LayoutFrame 310 0 442 0 -36 1 464 0)
activeHelpKey: createInitialGUICode
+ enableChannel: canDisableTemplateCreationHolder
model: createInitialGUICodeHolder
translateLabel: true
)
@@ -562,6 +593,7 @@
name: 'CheckBox2'
layout: (LayoutFrame 120 0 472 0 0 1 494 0)
activeHelpKey: createInitializer
+ visibilityChannel: isCreatingClassHolder
model: createInitializerHolder
translateLabel: true
)
@@ -570,6 +602,7 @@
name: 'CheckBox5'
layout: (LayoutFrame 120 0 502 0 0 1 524 0)
activeHelpKey: createUpdateMethod
+ visibilityChannel: isCreatingClassHolder
model: createUpdateMethodHolder
translateLabel: true
)
@@ -578,6 +611,7 @@
name: 'CheckBox3'
layout: (LayoutFrame 120 0 532 0 0 1 554 0)
activeHelpKey: createRequiredMethods
+ visibilityChannel: isCreatingClassHolder
model: createRequiredMethodsHolder
translateLabel: true
)
@@ -756,34 +790,43 @@
!NewClassWizardDialog methodsFor:'actions'!
doAccept
+ self isCreatingPackageHolder value ifFalse:[
+ self doAcceptForNewClass ifFalse:[^ self].
+ ] ifTrue:[
+ self doAcceptForNewPackage ifFalse:[^ self].
+ ].
+ super doAccept.
+!
+
+doAcceptForNewClass
|newClassName superclassName superclass package answer|
newClassName := self classNameHolder value.
newClassName isEmptyOrNil ifTrue:[
- Dialog warn:'No Classname entered'.
- ^ self.
+ self warn:('No Classname entered').
+ ^ false.
].
newClassName isValidSmalltalkIdentifier ifFalse:[
- Dialog warn:'No valid Classname entered (must be alphaNumeric)'.
- ^ self.
+ self warn:'No valid Classname entered (must be alphaNumeric)'.
+ ^ false.
].
newClassName first isUppercase ifFalse:[
- Dialog warn:'No valid Classname entered (first Character must be uppercase)'.
- ^ self.
+ self warn:'No valid Classname entered (first Character must be uppercase)'.
+ ^ false.
].
superclassName := self superclassNameHolder value.
superclass := Smalltalk classNamed:superclassName.
superclass isNil ifTrue:[
(superclassName knownAsSymbol and:[Smalltalk includesKey:superclassName asSymbol]) ifFalse:[
- Dialog warn:'No such Superclass'.
- ^ self.
+ self warn:'No such Superclass'.
+ ^ false.
].
(Smalltalk at:superclassName asSymbol) isBehavior ifFalse:[
- Dialog warn:('"%1" refers to a global which is not a class (%2)'
- bindWith:superclassName
- with:superclass className).
- ^ self.
+ self warn:'"%1" refers to a global which is not a class (%2)'
+ with:superclassName
+ with:superclass className.
+ ^ false.
].
].
@@ -791,9 +834,9 @@
package notEmptyOrNil ifTrue:[
(package asPackageId module isEmptyOrNil
or:[ package asPackageId directory isEmptyOrNil ]) ifTrue:[
- Dialog warn:('The packageID "%1" must be of the form "module:directory" (for the source repository management)'
- bindWith:package).
- ^ self.
+ self warn:'The packageID "%1" must be of the form "module:directory" (for the source repository management)'
+ with:package.
+ ^ false.
].
(ProjectDefinition definitionClassForPackage:package) isNil ifTrue:[
@@ -808,7 +851,7 @@
values:#(guiApplicationType #nonGuiApplicationType #libraryType)
lines:nil cancel:false.
- answer == false ifTrue:[^ self].
+ answer == false ifTrue:[^ false].
ProjectDefinition
definitionClassForPackage:package
@@ -834,12 +877,55 @@
LastPackage := packageHolder value.
LastLanguage := self listOfLanguages at:(languageHolder value).
- super doAccept.
+ ^ true
"Modified: / 30-01-2011 / 09:33:28 / cg"
"Modified (comment): / 27-01-2012 / 14:53:02 / cg"
!
+doAcceptForNewPackage
+ |package projectType|
+
+ package := self packageHolder value.
+ package isEmptyOrNil ifTrue:[
+ self warn:'Missing packageID'.
+ ^ false.
+ ].
+
+ (package asPackageId module isEmptyOrNil
+ or:[ package asPackageId directory isEmptyOrNil ]) ifTrue:[
+ self warn:'The packageID "%1" must be of the form "module:directory" (for the source repository management)'
+ with:package.
+ ^ false.
+ ].
+
+ (ProjectDefinition definitionClassForPackage:package) notNil ifTrue:[
+ self warn:'Package already exists'.
+ ^ false.
+ ].
+ self stereotypeSymbol == #GUIProject ifTrue:[
+ projectType := ProjectDefinition guiApplicationType
+ ] ifFalse:[
+ self stereotypeSymbol == #NonGUIProject ifTrue:[
+ projectType := ProjectDefinition nonGuiApplicationType
+ ] ifFalse:[
+ self stereotypeSymbol == #LibraryProject ifTrue:[
+ projectType := ProjectDefinition libraryType
+ ] ifFalse:[
+ self warn:'oops - what kind of package is this'.
+ ^ false.
+ ]
+ ].
+ ].
+ ProjectDefinition
+ definitionClassForPackage:package
+ projectType:projectType
+ createIfAbsent:true.
+
+ self doCancel. "/ hack - for now.
+ ^ false.
+!
+
doCancel
self closeRequest.
!
@@ -929,11 +1015,24 @@
!
stereotypeChanged
- |stereoType|
+ |stereoTypeSymbol|
- stereoType := self listOfStereotypes at:(self stereotypeHolder value).
-
- stereoType = '<none>' ifTrue:[
+ self listOfSuperclassesHolder value:self listOfSuperclasses.
+
+ stereoTypeSymbol := self stereotypeSymbol.
+
+ (stereoTypeSymbol = #'GUIProject'
+ or:[ stereoTypeSymbol = #'NonGUIProject'
+ or:[ stereoTypeSymbol = #'LibraryProject' ]]) ifTrue:[
+ self isCreatingClassHolder value:false.
+ self canDisableTemplateCreationHolder value:false.
+ self createInitialGUICodeHolder value:true.
+ ] ifFalse:[
+ self isCreatingClassHolder value:true.
+ self canDisableTemplateCreationHolder value:true.
+ ].
+
+ stereoTypeSymbol = nil ifTrue:[
self createInitializerHolder value:true.
self createPrintMethodHolder value:false.
self createAccessorsHolder value:true.
@@ -941,26 +1040,26 @@
self createUpdateMethodHolder value:false.
].
- stereoType = 'Data Object' ifTrue:[
+ stereoTypeSymbol = #'DataObject' ifTrue:[
self superclassNameHolder value:'Model'.
self createAccessorsHolder value:true.
self createInitialGUICodeHolder value:false.
self createUpdateMethodHolder value:false.
].
-"/ stereoType = 'Enumeration' ifTrue:[
+"/ stereoTypeSymbol = #'Enumeration' ifTrue:[
"/ self superclassNameHolder value:'Enumeration'.
"/ self createInitializerHolder value:true.
"/ self createAccessorsHolder value:false.
"/ self createInitialGUICodeHolder value:false.
"/ ].
- stereoType = 'GUIApplication' ifTrue:[
+ stereoTypeSymbol = #'GUIApplication' ifTrue:[
self superclassNameHolder value:'ApplicationModel'.
self createInitializerHolder value:false.
self createPrintMethodHolder value:false.
self createInitialGUICodeHolder value:true.
self createUpdateMethodHolder value:true.
].
- stereoType = 'SharedPool' ifTrue:[
+ stereoTypeSymbol = #'SharedPool' ifTrue:[
self superclassNameHolder value:'SharedPool'.
self createAccessorsHolder value:false.
self createInitializerHolder value:true.
@@ -968,7 +1067,7 @@
self createInitialGUICodeHolder value:false.
self createUpdateMethodHolder value:false.
].
- (stereoType startsWith: 'Startup') ifTrue:[
+ (stereoTypeSymbol = #'StartupClass') ifTrue:[
self superclassNameHolder value:'StandaloneStartup'.
self createAccessorsHolder value:false.
self createInitializerHolder value:true.
@@ -976,7 +1075,7 @@
self createInitialGUICodeHolder value:true.
self createUpdateMethodHolder value:false.
].
- stereoType = 'TestCase' ifTrue:[
+ stereoTypeSymbol = #'TestCase' ifTrue:[
self superclassNameHolder value:'TestCase'.
self createAccessorsHolder value:false.
self createInitializerHolder value:false.
@@ -984,7 +1083,7 @@
self createInitialGUICodeHolder value:true.
self createUpdateMethodHolder value:false.
].
- stereoType = 'WebService' ifTrue:[
+ stereoTypeSymbol = #'WebService' ifTrue:[
self superclassNameHolder value:'HTTPService'.
self createAccessorsHolder value:false.
self createInitializerHolder value:false.
@@ -992,7 +1091,7 @@
self createInitialGUICodeHolder value:true.
self createUpdateMethodHolder value:false.
].
- stereoType = 'Widget' ifTrue:[
+ stereoTypeSymbol = #'Widget' ifTrue:[
self superclassNameHolder value:'View'.
self createInitializerHolder value:false.
self createPrintMethodHolder value:false.
@@ -1001,10 +1100,30 @@
].
"Modified: / 27-01-2012 / 14:47:20 / cg"
+!
+
+stereotypeSymbol
+ |stereoTypeIndex stereoTypeSpec stereoTypeSymbol|
+
+ stereoTypeIndex := self stereotypeHolder value.
+ stereoTypeIndex isNil ifTrue:[^ nil].
+
+ stereoTypeSpec := self stereotypeSpec at:stereoTypeIndex.
+ stereoTypeSymbol := stereoTypeSpec first.
+ ^ stereoTypeSymbol
! !
!NewClassWizardDialog methodsFor:'aspects'!
+canDisableTemplateCreationHolder
+ <resource: #uiAspect>
+
+ canDisableTemplateCreationHolder isNil ifTrue:[
+ canDisableTemplateCreationHolder := true asValue.
+ ].
+ ^ canDisableTemplateCreationHolder.
+!
+
categoryHolder
<resource: #uiAspect>
@@ -1032,6 +1151,12 @@
^ classNameHolder.
!
+classNameVisibleHolder
+ <resource: #uiAspect>
+
+ ^ self isCreatingClassHolder
+!
+
classVarNamesHolder
<resource: #uiAspect>
@@ -1128,6 +1253,19 @@
^ instVarNamesHolder.
!
+isCreatingClassHolder
+ <resource: #uiAspect>
+
+ isCreatingClassHolder isNil ifTrue:[
+ isCreatingClassHolder := true asValue
+ ].
+ ^ isCreatingClassHolder.
+!
+
+isCreatingPackageHolder
+ ^ BlockValue forLogicalNot:self isCreatingClassHolder.
+!
+
languageHolder
<resource: #uiAspect>
@@ -1164,51 +1302,101 @@
^ Smalltalk allPackageIDs copy sort
!
+listOfStereotypeSymbols
+ "program readable list"
+ ^ self stereotypeSpec collect:[:each | each isNil ifTrue:[nil] ifFalse:[each first]].
+!
+
listOfStereotypes
- ^ #(
- '<none>'
-"/ ConsoleApplication
- 'Data Object'
-"/ Enumeration
- GUIApplication
- SharedPool
- TestCase
- 'StartupClass (main entry for standalone apps)'
- WebService
- Widget
- )
-
- "Modified: / 27-01-2012 / 14:46:39 / cg"
+ "human readable list"
+ ^ self stereotypeSpec collect:[:each | each isNil ifTrue:[nil] ifFalse:[each second]].
!
listOfSuperclasses
<resource: #uiAspect>
- |l superClassName|
+ |l superClassName
+ stereoTypeSymbol more
+ includeObject includeModel includeApplicationModel includeView
+ includeStandaloneStartup|
+ stereoTypeSymbol := self stereotypeSymbol.
+
+ includeObject := includeModel := includeApplicationModel := includeView := true.
+ includeStandaloneStartup := false.
+
+ stereoTypeSymbol = #'DataObject' ifTrue:[
+ includeApplicationModel := includeView := false.
+ ].
+ stereoTypeSymbol = #'Enumeration' ifTrue:[
+ includeModel := includeApplicationModel := includeView := false.
+ ].
+ stereoTypeSymbol = #'GUIApplication' ifTrue:[
+ includeModel := includeView := includeObject := false.
+ ].
+ stereoTypeSymbol = #'ConsoleProgram' ifTrue:[
+ includeModel := includeApplicationModel := includeView := includeObject := false.
+ includeStandaloneStartup := true.
+ ].
+ stereoTypeSymbol = #'SharedPool' ifTrue:[
+ includeModel := includeApplicationModel := includeView := includeObject := false.
+ ].
+ (stereoTypeSymbol = #'StartupClass') ifTrue:[
+ includeModel := includeApplicationModel := includeView := includeObject := false.
+ includeStandaloneStartup := true.
+ ].
+ stereoTypeSymbol = #'TestCase' ifTrue:[
+ includeModel := includeApplicationModel := includeView := includeObject := false.
+ ].
+ stereoTypeSymbol = #'WebService' ifTrue:[
+ includeModel := includeApplicationModel := includeView := includeObject := false.
+ ].
+ stereoTypeSymbol = #'Widget' ifTrue:[
+ includeModel := includeApplicationModel := includeObject := false.
+ ].
+
l := OrderedCollection new.
- (superClassName := self superclassNameHolder value) notNil ifTrue:[
- l add:superClassName.
- ].
- superClassName ~= 'Object' ifTrue:[
+ (includeObject and:[superClassName ~= 'Object']) ifTrue:[
l add:'Object'
].
- superClassName ~= 'Model' ifTrue:[
+ (includeModel and:[superClassName ~= 'Model']) ifTrue:[
l add:'Model'
].
- superClassName ~= 'View' ifTrue:[
+ (includeView and:[superClassName ~= 'View']) ifTrue:[
l add:'View'
].
- superClassName ~= 'ApplicationModel' ifTrue:[
+ (includeApplicationModel and:[superClassName ~= 'ApplicationModel']) ifTrue:[
l add:'ApplicationModel'
].
- l add:'-'.
- l addAll:(SystemBrowser visitedClassNamesHistory).
+
+ includeStandaloneStartup ifTrue:[
+ superClassName ~= 'StandaloneStartup' ifTrue:[
+ l add:'StandaloneStartup'
+ ].
+ superClassName ~= 'StandaloneStartupHeadless' ifTrue:[
+ l add:'StandaloneStartupHeadless'
+ ].
+ ].
+
+ more := UserPreferences systemBrowserClass visitedClassNamesHistory.
+ more notEmptyOrNil ifTrue:[
+ l add:'-'.
+ l addAll:more.
+ ].
^ l
"Created: / 30-01-2011 / 10:34:44 / cg"
!
+listOfSuperclassesHolder
+ <resource: #uiAspect>
+
+ listOfSuperclassesHolder isNil ifTrue:[
+ listOfSuperclassesHolder := self listOfSuperclasses asValue.
+ ].
+ ^ listOfSuperclassesHolder.
+!
+
nameSpaceHolder
<resource: #uiAspect>
@@ -1245,11 +1433,32 @@
^ stereotypeHolder.
!
+stereotypeSpec
+ ^ #(
+ ( nil '<none>' )
+ ( DataObject 'Data Object' )
+"/ ( Enumeration Enumeration )
+ ( GUIApplication 'GUI Application')
+ ( ConsoleProgram 'Console Program')
+ ( SharedPool 'Shared Pool')
+ ( TestCase TestCase )
+ ( WebService 'Web Service' )
+ ( Widget Widget)
+ ( StartupClass 'Startup Class (main entry for standalone apps)' )
+ nil
+ ( GUIProject 'GUI Project')
+ ( NonGUIProject 'Non-GUI Project')
+ ( LibraryProject 'Library Project')
+ )
+
+ "Modified: / 27-01-2012 / 14:46:39 / cg"
+!
+
superclassNameHolder
<resource: #uiAspect>
superclassNameHolder isNil ifTrue:[
- superclassNameHolder := (LastSuperclass ? 'Object') asValue.
+ superclassNameHolder := (LastSuperclass ? ''"'Object'") asValue.
].
^ superclassNameHolder.
--- a/Tools__NewSystemBrowser.st Sun Oct 09 22:55:02 2016 +0100
+++ b/Tools__NewSystemBrowser.st Tue Oct 18 22:55:22 2016 +0100
@@ -125,68 +125,6 @@
initialize
Icon initialize.
Color initialize.
-
- "/ self installInLauncher. - now done in phase 2
- ObjectMemory addDependent:self.
-!
-
-installInLauncher
- "add myself to the launcher menu and toolBar"
-
- |menuItem icon action currentLauncher|
-
- NewLauncher isNil ifTrue:[^ self].
- ToolbarIconLibrary isNil ifTrue:[^ self].
-
-"/ "Class may be changed, and we want to start the changed class"
- action := (MessageSend receiver:(Smalltalk at:self name) selector:#open).
- icon := [self startNewSystemBrowserIcon].
-
-"/ menuItem := MenuItem new
-"/ value: action;
-"/ isButton: false;
-"/ translateLabel: true;
-"/ label:'New System Browser' icon:icon;
-"/ nameKey: #newSystemBrowser;
-"/ activeHelpKey: #newSystemBrowser;
-"/ submenuChannel: #menuClassHistoryNew;
-"/ showBusyCursorWhilePerforming:true.
-"/
-"/ NewLauncher
-"/ addMenuItem:menuItem
-"/ from:self
-"/ in:'menu.classes'
-"/ position:#(before systemBrowser)
-"/ space:true.
-
- menuItem := MenuItem new
- value: action;
- isButton: true;
- translateLabel: true;
- icon:icon;
- nameKey: #newSystemBrowser;
- activeHelpKey: #newSystemBrowser;
- submenuChannel: #menuClassHistoryNew;
- showBusyCursorWhilePerforming:true.
-
- NewLauncher
- addMenuItem:menuItem
- from:self
- in:'toolbar'
- position:#(before systemBrowser)
- space:false.
- currentLauncher := NewLauncher current.
- currentLauncher notNil ifTrue:[
- currentLauncher systemBrowserItemVisible value:false.
- ]
-
- "
- self removeFromLauncher.
- self installInLauncher.
- self removeFromLauncher
- "
-
- "Modified: / 08-08-2011 / 21:48:27 / cg"
!
loadRefactoryBrowser
@@ -200,9 +138,7 @@
!
postAutoload
- "add myself to the launcher menu."
-
- self installInLauncher.
+
"/ try to load the refactoryBrowser package ...
self loadRefactoryBrowser.
@@ -213,39 +149,6 @@
"
"Modified: / 23.8.2001 / 12:32:34 / cg"
-!
-
-removeFromLauncher
- "remove myself from the launcher menu"
-
- |currentLauncher|
-
- NewLauncher isNil ifTrue:[^ self].
- NewLauncher removeUserTool:#newSystemBrowser.
- currentLauncher := NewLauncher current.
- currentLauncher notNil ifTrue:[
- currentLauncher systemBrowserItemVisible value:true
- ]
-
- "
- self removeFromLauncher
- "
-!
-
-unload
- "class is about to be unloaded - remove myself from the launcher menu"
-
- self removeFromLauncher.
- super unload.
-!
-
-update:something with:aParameter from:changedObject
- something == #initialized ifTrue:[
- changedObject == ObjectMemory ifTrue:[
- self installInLauncher.
- ObjectMemory removeDependent:self.
- ]
- ].
! !
!NewSystemBrowser class methodsFor:'accessing-history'!
@@ -23364,7 +23267,9 @@
|cls|
^ (cls := self theSingleSelectedClass) notNil
- and:[ cls theNonMetaclass isVisualStartable ]
+ and:[ (cls theNonMetaclass isVisualStartable)
+ or:[ cls isStartableWithMain
+ or:[ cls isStartableWithStart ]]]
!
hasStartableApplicationSelectedHolder
@@ -31881,18 +31786,6 @@
do:[
|builder|
-"/ createdClass :=
-"/ superclass
-"/ subclass: (namespacePrefix,newClassName) asSymbol
-"/ instanceVariableNames: dialog instVarNamesHolder value
-"/ classVariableNames: dialog classVarNamesHolder value
-"/ poolDictionaries: ' '
-"/ category: category.
-"/
-"/ dialog classInstVarNamesHolder value notEmptyOrNil ifTrue:[
-"/ createdClass class instanceVariableNames: dialog classInstVarNamesHolder value
-"/ ].
-
builder := ClassBuilder new.
builder metaclass:(language metaClass).
builder
@@ -38913,10 +38806,17 @@
^ self
].
(cls := aClass whichClassDefinesInstVar:newName) notNil ifTrue:[
- Dialog warn:(resources string:'Sorry: a variable named ''%1'' is already defined in ''%2''.\\Proceed ?'
+ Dialog warn:(resources stringWithCRs:'A variable named ''%1'' is already defined in ''%2''.'
with:newName allBold
with:cls name allBold).
^ self
+"/ disabled, because refactoring will fail (need a new one: rewrite uses of var1 to use var2
+"/ (Dialog confirm:(resources stringWithCRs:'A variable named ''%1'' is already defined in ''%2''.\\Change the code to use that one as well?'
+"/ with:newName allBold
+"/ with:cls name allBold)) ifFalse:[
+"/ ^ self
+"/ ].
+"/ self halt.
].
(Dialog
@@ -38949,7 +38849,13 @@
oldName := node name.
definingNode := node whoDefines: oldName.
- definingNode isNil ifTrue: [self warn: oldName , ' is not a temporary variable in the method'. ^ self].
+ definingNode isNil ifTrue: [
+ self hasInstanceVariableSelectedInCodeView ifTrue:[
+ self codeMenuRenameInstanceVariable.
+ ^ self.
+ ].
+ self warn: oldName , ' is not a temporary variable in the method'. ^ self
+ ].
LastVariableRenames isNil ifTrue:[
LastVariableRenames := CacheDictionary new:30.
@@ -39019,27 +38925,28 @@
findNodeIn:tree forInterval:interval
<resource: #obsolete>
- |node wouldReturn|
-
-self obsoleteMethodWarning.
- node := nil.
- tree nodesDo:[:each |
- (each intersectsInterval:interval) ifTrue:[
- (node isNil or:[node == each parent]) ifTrue:[
- node := each
- ] ifFalse:[
- (node parent notNil
- and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
- ]
- ] ifFalse:[
- node notNil ifTrue:[
- "/ already found one - beyond that one; leave
- wouldReturn notNil ifTrue:[wouldReturn := node].
- ]
- ].
- ].
-"/ (wouldReturn notNil and:[wouldReturn ~~ node]) ifTrue:[self halt].
- ^ node
+
+ self obsoleteMethodWarning.
+ ^ DoWhatIMeanSupport findNodeIn:tree forInterval:interval
+"/ |node wouldReturn|
+"/ node := nil.
+"/ tree nodesDo:[:each |
+"/ (each intersectsInterval:interval) ifTrue:[
+"/ (node isNil or:[node == each parent]) ifTrue:[
+"/ node := each
+"/ ] ifFalse:[
+"/ (node parent notNil
+"/ and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
+"/ ]
+"/ ] ifFalse:[
+"/ node notNil ifTrue:[
+"/ "/ already found one - beyond that one; leave
+"/ wouldReturn notNil ifTrue:[wouldReturn := node].
+"/ ]
+"/ ].
+"/ ].
+"/"/ (wouldReturn notNil and:[wouldReturn ~~ node]) ifTrue:[self halt].
+"/ ^ node
"Modified: / 20-11-2006 / 12:31:12 / cg"
!
@@ -56425,6 +56332,9 @@
result := result reject:[:m | m mclass isMeta]
].
].
+ dialog ignoreDocumentationMethods ifTrue:[
+ result := result reject:[:m | m category = 'documentation' ]
+ ].
].
self showInfo:nil.
result
@@ -58976,13 +58886,17 @@
self navigationState showingParseError:false.
(messageShown := msg) notNil ifTrue:[
messageShown := msg asStringCollection "asStringWithoutFinalCR".
- messageShown size == 1 ifTrue:[
+ messageShown size <= 1 ifTrue:[
messageShown := msg.
] ifFalse:[
- doAnimate := true.
- "/ messageShown do:[:eachLine|
- "/ Transcript show:' > '; showCR:eachLine; showCR:'"'.
- "/].
+ UserPreferences current showMarqueeInfo ifFalse:[
+ messageShown := messageShown first
+ ] ifTrue:[
+ doAnimate := true.
+ "/ messageShown do:[:eachLine|
+ "/ Transcript show:' > '; showCR:eachLine; showCR:'"'.
+ "/].
+ ].
].
].
self infoLabelHolder value:messageShown.
@@ -61094,11 +61008,11 @@
"double-click on a class to exec; or launch button.
Return true if successful"
- |cls|
+ |cls args|
cls := clsArg theNonMetaclass.
- (cls isBrowserStartable) ifFalse:[^ false].
+ "/ (cls isBrowserStartable) ifFalse:[^ false].
(cls isVisualStartable) ifTrue:[
self busyLabel:'starting application %1' with:cls name.
@@ -61113,10 +61027,16 @@
].
(cls isStartableWithMain) ifTrue:[
self busyLabel:'invoking main of %1' with:cls name.
- "/ (self confirm:('Invoke %1''s main ?' bindWith:clsName)) ifTrue:[
- cls main.
- "/ ].
- ^ true.
+ (cls class includesSelector:'main') ifTrue:[
+ "/ (self confirm:('Invoke %1''s main ?' bindWith:clsName)) ifTrue:[
+ cls main.
+ "/ ].
+ ^ true.
+ ].
+ args := Dialog request:'command line arguments:' initialAnswer:'' onCancel:nil.
+ args isNil ifTrue:[^ false].
+ cls main:(args asCollectionOfWords).
+ ^ true
].
(cls isStartableWithStart) ifTrue:[
self busyLabel:'invoking start of %1' with:cls name.
--- a/Tools__NewSystemBrowserCodeView.st Sun Oct 09 22:55:02 2016 +0100
+++ b/Tools__NewSystemBrowserCodeView.st Tue Oct 18 22:55:22 2016 +0100
@@ -218,9 +218,8 @@
!
findNodeForInterval:anInterval
-
"
- An empty interval check based on Claus suggestion
+ An empty interval check based on Claus' suggestion
(email Fri, 10 Oct 2008 16:10:25 +0200)
"
anInterval isEmpty ifTrue:[^nil].
@@ -233,27 +232,28 @@
!
findNodeIn:tree forInterval:interval
- |node wouldReturn|
-
- node := nil.
- tree = #error ifTrue:[^nil].
- tree nodesDo:[:each |
- (each intersectsInterval:interval) ifTrue:[
- (node isNil or:[node == each parent]) ifTrue:[
- node := each
- ] ifFalse:[
- (node parent notNil
- and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
- ]
- ] ifFalse:[
- node notNil ifTrue:[
- "/ already found one - beyond that one; leave
- wouldReturn notNil ifTrue:[wouldReturn := node].
- ]
- ].
- ].
-(wouldReturn notNil and:[wouldReturn ~~ node]) ifTrue:[self halt].
- ^ node
+ ^ DoWhatIMeanSupport findNodeIn:tree forInterval:interval
+"/ |node wouldReturn|
+"/
+"/ node := nil.
+"/ tree = #error ifTrue:[^nil].
+"/ tree nodesDo:[:each |
+"/ (each intersectsInterval:interval) ifTrue:[
+"/ (node isNil or:[node == each parent]) ifTrue:[
+"/ node := each
+"/ ] ifFalse:[
+"/ (node parent notNil
+"/ and:[node parent isCascade and:[each parent isCascade]]) ifFalse:[^ nil]
+"/ ]
+"/ ] ifFalse:[
+"/ node notNil ifTrue:[
+"/ "/ already found one - beyond that one; leave
+"/ wouldReturn notNil ifTrue:[wouldReturn := node].
+"/ ]
+"/ ].
+"/ ].
+"/(wouldReturn notNil and:[wouldReturn ~~ node]) ifTrue:[self halt].
+"/ ^ node
"Created: / 19-02-2008 / 09:40:24 / janfrog"
"Modified: / 21-02-2008 / 09:35:31 / janfrog"
--- a/Tools__SearchDialog.st Sun Oct 09 22:55:02 2016 +0100
+++ b/Tools__SearchDialog.st Tue Oct 18 22:55:22 2016 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
"
COPYRIGHT (c) 2000 by eXept Software AG
All Rights Reserved
@@ -26,7 +24,8 @@
listHolder matchProcess inputField showMetaFilter
metaclassesOnlyHolder classesOnlyHolder initialText
withSearchStringInLiterals searchStringInLiteralsHolder
- searchFreeStandingWordsOnlyHolder withSearchFreeStandingWordsOnly'
+ searchFreeStandingWordsOnlyHolder withSearchFreeStandingWordsOnly
+ ignoreDocumentationMethodsHolder'
classVariableNames:'LastCodeSearched LastCodeSearchWasMethod LastGlobalSearched
LastStringSearched LastSearchWasMatch LastSearchWasCaseSensitive
LastStringSearchArea LastCodeSearchArea AREA_LISTOFMETHODS
@@ -179,10 +178,18 @@
!SearchDialog methodsFor:'accessing'!
+currentClass:aClass
+ currentClass := aClass
+!
+
currentPackage
^ currentPackage
!
+currentPackage:aPackage
+ currentPackage := aPackage
+!
+
initialText:aString
initialText := aString.
!
@@ -225,6 +232,13 @@
^ selectorOrCode.
!
+ignoreDocumentationMethods
+ "the value of the corresponding check toggle;
+ if on, only search in metaclasses"
+
+ ^ (ignoreDocumentationMethodsHolder ? false) value
+!
+
matchMethods
^ isMethodHolder value ? false.
!
@@ -548,8 +562,8 @@
Any additional parameters (metaOnly, searchLiterals etc. must have been done
already."
- "searchWhat:
- one of:#selector
+ "searchWhatArg:
+ one of:#selector #string
searchArea:
one of: #everywhere #currentNameSpace
"
@@ -603,6 +617,12 @@
currentPanel := self.
self addCheckBoxForSearchFreeStandingWordsOnly
].
+ (showMetaFilter ? false) ifTrue:[
+ currentPanel := self.
+ searchWhat == #string ifTrue:[
+ self addCheckBoxForIgnoreDocumentationMethods
+ ].
+ ].
self addHorizontalLine.
@@ -711,7 +731,7 @@
].
].
].
- (currentPackage notNil and:[ currentPackage ~= (browser nameListEntryForALL) ])
+ (currentPackage notNil and:[ browser isNil or:[ currentPackage ~= (browser nameListEntryForALL) ]])
ifTrue:[
self addCheckBoxForCurrentPackage.
self addCheckBoxForCurrentPackageAndSubPackages.
@@ -720,6 +740,9 @@
self addCheckBoxForClassesPackage:(currentClass package)
].
].
+ currentClass notNil ifTrue:[
+ self addCheckBoxForSelectedClass
+ ].
].
searchAreas isEmptyOrNil ifTrue:[
self addCheckBoxForEverywhere.
@@ -913,6 +936,20 @@
^ b.
!
+addCheckBoxForIgnoreDocumentationMethods
+ |p b|
+
+ p := View new.
+
+ b := CheckBox label:(resources string:'Ignore Documentation Methods') in:p.
+ b model:(ignoreDocumentationMethodsHolder := false asValue).
+ b helpKey:#ignoreDocumentationMethods.
+ self makeTabable:b.
+
+ currentPanel add:p.
+ ^ nil.
+!
+
addCheckBoxForMetaClassesOnly
|p b|
@@ -1012,9 +1049,9 @@
addCheckBoxForSelectedClass
|b lbl arg|
- (browser isMethodListBrowser
+ ((browser notNil and:[browser isMethodListBrowser])
or:[ currentClass isNil
- or:[ selectedClasses size > 1] ]) ifTrue:[
+ or:[ selectedClasses size > 1]]) ifTrue:[
selectedClasses size == 1 ifTrue:[
lbl := 'Selected class ("%1")'.
arg := selectedClasses first theNonMetaclass name.
--- a/WorkspaceApplication.st Sun Oct 09 22:55:02 2016 +0100
+++ b/WorkspaceApplication.st Tue Oct 18 22:55:22 2016 +0100
@@ -4490,11 +4490,29 @@
"/ ].
device platformName == #X11 ifTrue:[
- font := Font family:'unifont' face:'medium' style:'roman' size:16 encoding:'iso10646-1'.
- font := font onDevice:device ifAbsent:nil.
+ OperatingSystem isOSXlike ifTrue:[
+ font := Font family:'Arial Unicode MS' face:'regular' style:'roman' size:11 encoding:'iso10646-1'.
+ font := font onDevice:device ifAbsent:nil.
+ font isNil ifTrue:[
+ font := Font family:'Menlo' face:'regular' style:'roman' size:11 encoding:'iso10646-1'.
+ font := font onDevice:device ifAbsent:nil.
+ ].
+ ].
font isNil ifTrue:[
- font := Font family:'arial' face:'medium' style:'roman' size:12 encoding:'iso10646-1'.
+ font := Font family:'DejaVuSansMono' face:'medium' style:'roman' size:16 encoding:'iso10646-1'.
font := font onDevice:device ifAbsent:nil.
+ font isNil ifTrue:[
+ font := Font family:'FreeMono' face:'regular' style:'roman' size:16 encoding:'iso10646-1'.
+ font := font onDevice:device ifAbsent:nil.
+ font isNil ifTrue:[
+ font := Font family:'unifont' face:'medium' style:'roman' size:16 encoding:'iso10646-1'.
+ font := font onDevice:device ifAbsent:nil.
+ font isNil ifTrue:[
+ font := Font family:'arial' face:'medium' style:'roman' size:12 encoding:'iso10646-1'.
+ font := font onDevice:device ifAbsent:nil.
+ ].
+ ].
+ ].
].
] ifFalse:[
"/ font := Font family:'Arial Unicode MS' face:'medium' style:'roman' size:10 encoding:'ms-ansi'.
--- a/extensions.st Sun Oct 09 22:55:02 2016 +0100
+++ b/extensions.st Tue Oct 18 22:55:22 2016 +0100
@@ -2140,6 +2140,9 @@
add:'-windowGroup' -> [ self instVarNamed:#windowGroup ];
add:'-sensor' -> [ self instVarNamed:#sensor ];
add:'-parent' -> [ self instVarNamed:#container ];
+ add:'-hidden' -> [ self isHiddenOnRealize ];
+ add:'-enabled' -> [ self enabled ];
+
yourself
! !
--- a/resources/de.rs Sun Oct 09 22:55:02 2016 +0100
+++ b/resources/de.rs Tue Oct 18 22:55:22 2016 +0100
@@ -631,7 +631,9 @@
'Code Search' 'Quellcode suchen'
'Code to Search' 'Zu suchender Quellcode'
'Code was modified.\\Change selection anyway' 'Geänderter Text wurde nicht gesichert.\\Auswahl dennoch ändern'
-'Code was modified.\\Exit anyway ?' 'Modifizierter Text wurde nicht gesichert. Dennoch beenden ?'
+'Code was modified.\\Exit anyway ?' 'Modifizierter Text wurde nicht gesichert.\\Dennoch beenden ?'
+'Code was modified.\\Abort anyway ?' 'Modifizierter Text wurde nicht gesichert.\\Dennoch abbrechen ?'
+'Code was modified.\\Step anyway ?' 'Modifizierter Text wurde nicht gesichert.\\Dennoch Einzelschritt ausführen ?'
'Code was modified.\\Remove buffer anyway' 'Änderungen wurden nicht gesichert.\\Seite dennoch entfernen'
'Coded Break & Tracepoints' 'Break- und Tracepoints im Code'
'Coded Breakpoints' 'Breakpoints im Code'
@@ -684,6 +686,7 @@
'Compare with Current' 'Vergleichen - mit aktueller Version'
'Compare with Current Version' 'Vergleichen mit aktueller Version'
'Compare with Each Other' 'Miteinander vergleichen'
+'Compare with File' 'Vergleich mit Datei'
'Compare with Newest in Repository' 'Vergleichen mit neuester Repository-Version'
'Compare with Original in Repository' 'Vergleichen mit ursprünglicher Repository-Version'
'Compare with Previous' 'Vergleich mit voriger Version'