Chris Muller uploaded a new version of ST80Tools to project Squeak 4.6:
http://source.squeak.org/squeak46/ST80Tools-cmm.8.mcz ==================== Summary ==================== Name: ST80Tools-cmm.8 Author: cmm Time: 21 April 2015, 4:49:40.23 pm UUID: 1d69716a-4a2c-44e6-9bae-2613b5590947 Ancestors: ST80Tools-mt.7 Fix underscore assignment. ==================== Snapshot ==================== ----- Method: ParagraphEditor>>browseChangeSetsWithSelector (in category '*ST80Tools') ----- browseChangeSetsWithSelector "Determine which, if any, change sets have at least one change for the selected selector, independent of class" | aSelector | self lineSelectAndEmptyCheck: [^ self]. (aSelector := self selectedSelector) == nil ifTrue: [^ view flash]. self terminateAndInitializeAround: [ChangeSorter browseChangeSetsWithSelector: aSelector]! ----- Method: ParagraphEditor>>browseItHere (in category '*ST80Tools') ----- browseItHere "Retarget the receiver's window to look at the selected class, if appropriate. 3/1/96 sw" | aSymbol b | (((b := model) isKindOf: Browser) and: [b couldBrowseAnyClass]) ifFalse: [^ view flash]. model okToChange ifFalse: [^ view flash]. self selectionInterval isEmpty ifTrue: [self selectWord]. (aSymbol := self selectedSymbol) ifNil: [^ view flash]. self terminateAndInitializeAround: [| foundClass | foundClass := (Smalltalk at: aSymbol ifAbsent: [nil]). foundClass ifNil: [^ view flash]. (foundClass isKindOf: Class) ifTrue: [model selectSystemCategory: foundClass category. model classListIndex: (model classList indexOf: foundClass name)]]! ----- Method: ParagraphEditor>>debug:receiver:in: (in category '*ST80Tools') ----- debug: aCompiledMethod receiver: anObject in: evalContext | guineaPig debugger debuggerWindow context | guineaPig := [aCompiledMethod valueWithReceiver: anObject arguments: (evalContext ifNil: [ #() ] ifNotNil: [ { evalContext } ]). guineaPig := nil "spot the return from aCompiledMethod"] newProcess. context := guineaPig suspendedContext. debugger := Debugger new process: guineaPig controller: ((Smalltalk isMorphic not and: [ScheduledControllers inActiveControllerProcess]) ifTrue: [ScheduledControllers activeController]) context: context. debuggerWindow := debugger openFullNoSuspendLabel: 'Debug it'. "Now step into the expression. But if it is quick (is implemented as a primtiive, e.g. `0') it will return immediately back to the block that is sent newProcess above. Guard against that with the check for home being thisContext." [debugger interruptedContext method == aCompiledMethod] whileFalse: [(guineaPig isNil and: [debugger interruptedContext home == thisContext]) ifTrue: [debuggerWindow controller closeAndUnschedule. UIManager default inform: 'Nothing to debug; expression is optimized'. ^self]. debugger send]! ----- Method: ParagraphEditor>>debugIt (in category '*ST80Tools') ----- debugIt | method receiver context | (model respondsTo: #doItReceiver) ifTrue: [receiver := model doItReceiver. context := model doItContext] ifFalse: [receiver := context := nil]. self lineSelectAndEmptyCheck: [^self]. method := self compileSelectionFor: receiver in: context. method notNil ifTrue: [self debug: method receiver: receiver in: context].! ----- Method: StringHolderView>>canHaveUnacceptedEdits (in category '*ST80Tools-multi-window support') ----- canHaveUnacceptedEdits "Answer if the receiver is an object that can hold unaccepted edits (such as a text editor widget)" ^true! ----- Method: StringHolderView>>unacceptedEditState (in category '*ST80Tools-multi-window support') ----- unacceptedEditState ^hasUnacceptedEdits ifTrue: [displayContents text]! ----- Method: StringHolderView>>unacceptedEditState: (in category '*ST80Tools-multi-window support') ----- unacceptedEditState: stateOrNil (hasUnacceptedEdits := stateOrNil notNil) ifTrue: [self editString: stateOrNil]! ----- Method: ScreenController>>browseRecentLog (in category '*ST80Tools') ----- browseRecentLog "Open a changelist browser on changes submitted since the last snapshot. 1/17/96 sw" ChangeList browseRecentLog! ----- Method: ScreenController>>chooseDirtyBrowser (in category '*ST80Tools') ----- chooseDirtyBrowser "Put up a list of browsers with unsubmitted edits and activate the one selected by the user, if any." "ScheduledControllers screenController chooseDirtyBrowser" ScheduledControllers findWindowSatisfying: [:c | (c model isKindOf: Browser) and: [c model canDiscardEdits not]]. ! ----- Method: ScreenController>>openChangeManager (in category '*ST80Tools') ----- openChangeManager "Open a dual change sorter. For looking at two change sets at once." DualChangeSorter new open! ----- Method: ScreenController>>openFile (in category '*ST80Tools') ----- openFile FileList openFileDirectly! ----- Method: ScreenController>>openFileList (in category '*ST80Tools') ----- openFileList "Create and schedule a FileList view for specifying files to access." FileList openInMVC! ----- Method: ScreenController>>openPackageBrowser (in category '*ST80Tools') ----- openPackageBrowser "Create and schedule a Browser view for browsing code." PackagePaneBrowser openBrowser! ----- Method: ScreenController>>openSelectorBrowser (in category '*ST80Tools') ----- openSelectorBrowser "Create and schedule a selector fragment window." SelectorBrowser new open! ----- Method: ScreenController>>openSimpleChangeSorter (in category '*ST80Tools') ----- openSimpleChangeSorter ChangeSorter new open! ----- Method: FileList class>>openInMVC (in category '*ST80Tools-instance creation') ----- openInMVC "Open a view of an instance of me on the default directory." | dir aFileList topView volListView templateView fileListView fileContentsView underPane pHeight | dir := FileDirectory default. aFileList := self new directory: dir. topView := StandardSystemView new. topView model: aFileList; label: dir pathName; minimumSize: 200@200. topView borderWidth: 1. volListView := PluggableListView on: aFileList list: #volumeList selected: #volumeListIndex changeSelected: #volumeListIndex: menu: #volumeMenu:. volListView autoDeselect: false. volListView window: (0@0 extent: 80@45). topView addSubView: volListView. templateView := PluggableTextView on: aFileList text: #pattern accept: #pattern:. templateView askBeforeDiscardingEdits: false. templateView window: (0@0 extent: 80@15). topView addSubView: templateView below: volListView. aFileList wantsOptionalButtons ifTrue: [underPane := aFileList optionalButtonViewForMVC. underPane isNil ifTrue: [pHeight := 60] ifFalse: [ topView addSubView: underPane toRightOf: volListView. pHeight := 60 - aFileList optionalButtonHeight]] ifFalse: [underPane := nil. pHeight := 60]. fileListView := PluggableListView on: aFileList list: #fileList selected: #fileListIndex changeSelected: #fileListIndex: menu: #fileListMenu:. fileListView window: (0@0 extent: 120@pHeight). underPane isNil ifTrue: [topView addSubView: fileListView toRightOf: volListView] ifFalse: [topView addSubView: fileListView below: underPane]. fileListView controller terminateDuringSelect: true. "Pane to left may change under scrollbar" fileContentsView := PluggableTextView on: aFileList text: #contents accept: #put: readSelection: #contentsSelection menu: #fileContentsMenu:shifted:. fileContentsView window: (0@0 extent: 200@140). topView addSubView: fileContentsView below: templateView. topView controller open! ----- Method: FileList>>optionalButtonViewForMVC (in category '*ST80Tools-initialization') ----- optionalButtonViewForMVC "Answer a view of optional buttons" | aView bHeight windowWidth offset previousView aButtonView wid services sel allServices | aView := View new model: self. bHeight := self optionalButtonHeight. windowWidth := 120. aView window: (0 @ 0 extent: windowWidth @ bHeight). offset := 0. allServices := self universalButtonServices. services := allServices copyFrom: 1 to: (allServices size min: 5). previousView := nil. services do: [:service | sel := service selector. aButtonView := sel asString numArgs = 0 ifTrue: [PluggableButtonView on: service provider getState: (service extraSelector == #none ifFalse: [service extraSelector]) action: sel] ifFalse: [PluggableButtonView on: service provider getState: (service extraSelector == #none ifFalse: [service extraSelector]) action: sel getArguments: #fullName from: self]. service selector = services last selector ifTrue: [wid := windowWidth - offset] ifFalse: [aButtonView borderWidthLeft: 0 right: 1 top: 0 bottom: 0. wid := windowWidth // services size - 2]. aButtonView label: service buttonLabel asParagraph; window: (offset @ 0 extent: wid @ bHeight). offset := offset + wid. service selector = services first selector ifTrue: [aView addSubView: aButtonView] ifFalse: [aView addSubView: aButtonView toRightOf: previousView]. previousView := aButtonView]. ^ aView! |
Free forum by Nabble | Edit this page |