# HG changeset patch # User Jan Vrany # Date 1476827722 -3600 # Node ID c4cce8b7a95df20d13527c5113324e930930729a # Parent f9f20407fbf949f6ab015f45be93e5390b5bc10b# Parent 0159bd547729abc62efb0936a2274adb13850312 Merge diff -r f9f20407fbf9 -r c4cce8b7a95d AboutBox.st --- 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." diff -r f9f20407fbf9 -r c4cce8b7a95d AbstractDirectoryBrowser.st --- 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'! diff -r f9f20407fbf9 -r c4cce8b7a95d AbstractFileBrowser.st --- 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 | diff -r f9f20407fbf9 -r c4cce8b7a95d AbstractLauncherApplication.st --- 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 diff -r f9f20407fbf9 -r c4cce8b7a95d AbstractSettingsApplication.st --- 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 @@ - ^ + ^ #(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 @@ - ^ + ^ #(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 @@ - ^ + ^ #(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 @@ - ^ + ^ #(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 " ! +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 + OperatingSystem isUNIXlike ifTrue:[ + ^ ToolbarIconLibrary unixShellTerminal22x22Icon + ]. ^ ToolbarIconLibrary terminal16x16Icon ! ! diff -r f9f20407fbf9 -r c4cce8b7a95d DebugView.st --- 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 - |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. diff -r f9f20407fbf9 -r c4cce8b7a95d Diff2.st --- 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: 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$' ! ! diff -r f9f20407fbf9 -r c4cce8b7a95d Diff3.st --- 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: 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$' ! ! diff -r f9f20407fbf9 -r c4cce8b7a95d DirectoryContentsBrowser.st --- 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. diff -r f9f20407fbf9 -r c4cce8b7a95d FileBrowser.st --- 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 diff -r f9f20407fbf9 -r c4cce8b7a95d FileBrowserV2SettingsDialog.st --- 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$' ! ! diff -r f9f20407fbf9 -r c4cce8b7a95d FindFileApplication.st --- 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 ) diff -r f9f20407fbf9 -r c4cce8b7a95d NewLauncher.st --- 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 @@ - ^ + ^ #(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'). ! diff -r f9f20407fbf9 -r c4cce8b7a95d PerforceSourceCodeManagerUtilities.st --- 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)'. diff -r f9f20407fbf9 -r c4cce8b7a95d SettingsDialog.st --- 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" ! diff -r f9f20407fbf9 -r c4cce8b7a95d Tools__CheckinInfoDialog.st --- 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 ) ) diff -r f9f20407fbf9 -r c4cce8b7a95d Tools__CodeView2.st --- 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 " ! +acceptEnabled:aBoolean + + textView acceptEnabled:aBoolean +! + breakpoints |s| diff -r f9f20407fbf9 -r c4cce8b7a95d Tools__MethodCategoryList.st --- 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:[ diff -r f9f20407fbf9 -r c4cce8b7a95d Tools__MethodList.st --- 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'! diff -r f9f20407fbf9 -r c4cce8b7a95d Tools__NavigationState.st --- 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 ] diff -r f9f20407fbf9 -r c4cce8b7a95d Tools__NewClassWizardDialog.st --- 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: ":", 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 = '' 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 + + + canDisableTemplateCreationHolder isNil ifTrue:[ + canDisableTemplateCreationHolder := true asValue. + ]. + ^ canDisableTemplateCreationHolder. +! + categoryHolder @@ -1032,6 +1151,12 @@ ^ classNameHolder. ! +classNameVisibleHolder + + + ^ self isCreatingClassHolder +! + classVarNamesHolder @@ -1128,6 +1253,19 @@ ^ instVarNamesHolder. ! +isCreatingClassHolder + + + isCreatingClassHolder isNil ifTrue:[ + isCreatingClassHolder := true asValue + ]. + ^ isCreatingClassHolder. +! + +isCreatingPackageHolder + ^ BlockValue forLogicalNot:self isCreatingClassHolder. +! + languageHolder @@ -1164,51 +1302,101 @@ ^ Smalltalk allPackageIDs copy sort ! +listOfStereotypeSymbols + "program readable list" + ^ self stereotypeSpec collect:[:each | each isNil ifTrue:[nil] ifFalse:[each first]]. +! + listOfStereotypes - ^ #( - '' -"/ 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 - |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 + + + listOfSuperclassesHolder isNil ifTrue:[ + listOfSuperclassesHolder := self listOfSuperclasses asValue. + ]. + ^ listOfSuperclassesHolder. +! + nameSpaceHolder @@ -1245,11 +1433,32 @@ ^ stereotypeHolder. ! +stereotypeSpec + ^ #( + ( nil '' ) + ( 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 superclassNameHolder isNil ifTrue:[ - superclassNameHolder := (LastSuperclass ? 'Object') asValue. + superclassNameHolder := (LastSuperclass ? ''"'Object'") asValue. ]. ^ superclassNameHolder. diff -r f9f20407fbf9 -r c4cce8b7a95d Tools__NewSystemBrowser.st --- 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 - |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. diff -r f9f20407fbf9 -r c4cce8b7a95d Tools__NewSystemBrowserCodeView.st --- 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" diff -r f9f20407fbf9 -r c4cce8b7a95d Tools__SearchDialog.st --- 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. diff -r f9f20407fbf9 -r c4cce8b7a95d WorkspaceApplication.st --- 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'. diff -r f9f20407fbf9 -r c4cce8b7a95d extensions.st --- 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 ! ! diff -r f9f20407fbf9 -r c4cce8b7a95d resources/de.rs --- 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'