[squeak-dev] The Inbox: Tools-ct.901.mcz

David T. Lewis lewis at mail.msen.com
Sat Oct 5 15:10:58 UTC 2019


+1

This update also fixes a bug. In trunk, blue button on a selected method
in an inspector browser raises an error. After loading Tools-ct.901,
the menu works.

Dave


On Sat, Oct 05, 2019 at 10:04:44AM +0000, H. Hirzel wrote:
> The InspectorBrowser is a tool.  The methods are not used directly. So
> I consider it to be an implementation detail.
> 
> Good improvement.
> +1 for inclusion.
> 
> It would be nice it it also had a pane for code evaluation as in a
> simple Inspector.
> 
> --Hannes
> 
> On 10/2/19, Thiede, Christoph
> <Christoph.Thiede at student.hpi.uni-potsdam.de> wrote:
> > Should all the removed methods here be to moved into *60Deprecated, or would
> > you consider them an implementation detail?
> >
> > ________________________________
> > Von: Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im Auftrag
> > von commits at source.squeak.org <commits at source.squeak.org>
> > Gesendet: Mittwoch, 2. Oktober 2019 23:19:38
> > An: squeak-dev at lists.squeakfoundation.org
> > Betreff: [squeak-dev] The Inbox: Tools-ct.901.mcz
> >
> > A new version of Tools was added to project The Inbox:
> > http://source.squeak.org/inbox/Tools-ct.901.mcz
> >
> > ==================== Summary ====================
> >
> > Name: Tools-ct.901
> > Author: ct
> > Time: 2 October 2019, 11:19:39.149682 pm
> > UUID: 2641031f-a660-7642-8fae-5f415cf51f6d
> > Ancestors: Tools-ul.899
> >
> > Deduplicates the InspectorBrowser by adapting to a real Browser and
> > respecting to super. This also enhances look + functionality noticeably.
> > Increases initialExtent for a nicer sight.
> >
> > You can open an InspectorBrowser by doing:
> > InspectorBrowser openOn: Morph new.
> >
> > =============== Diff against Tools-ul.899 ===============
> >
> > Item was changed:
> >   Inspector subclass: #InspectorBrowser
> > +        instanceVariableNames: 'browser'
> > -        instanceVariableNames: 'fieldList msgList msgListIndex'
> >          classVariableNames: ''
> >          poolDictionaries: ''
> >          category: 'Tools-Inspector'!
> >
> >   !InspectorBrowser commentStamp: 'tcj 3/12/2018 07:55' prior: 0!
> >   I am an inspector that also shows all messages the inspected objects can
> > understand. I combine inspector and code browser.
> >
> >   InspectorBrowser openOn: Smalltalk!
> >
> > Item was added:
> > + ----- Method: InspectorBrowser>>browser (in category 'initialize-release')
> > -----
> > + browser
> > +
> > +        ^ browser ifNil: [browser := Browser new]!
> >
> > Item was changed:
> > + ----- Method: InspectorBrowser>>buildWith: (in category 'toolbuilder')
> > -----
> > - ----- Method: InspectorBrowser>>buildWith: (in category 'tool builder')
> > -----
> >   buildWith: builder
> >
> > +        | windowSpec |
> > +        windowSpec := self buildWindowWith: builder specs: {
> > +                (0 at 0 corner: 0.3 at 0.3) -> [self buildFieldListWith:
> > builder].
> > +                (0.3 at 0 corner: 1.0 at 0.3) -> [self buildValuePaneWith:
> > builder].
> > +                (0 at 0.3 corner: 0.3 at 1.0) -> [browser buildMessageListWith:
> > builder].
> > +                (0.3 at 0.3 corner: 1.0 at 1.0) -> [browser buildCodePaneWith:
> > builder].
> > +        }.
> > +        ^ builder build: windowSpec!
> > -        | window fieldSpec valueSpec msgSpec codeSpec |
> > -
> > -        window := builder pluggableWindowSpec new
> > -                model: self;
> > -                children: OrderedCollection new;
> > -                yourself.
> > -
> > -        fieldSpec := builder pluggableListSpec new
> > -                model: self;
> > -                list: #fieldList;
> > -                getIndex: #selectionIndex;
> > -                setIndex: #toggleIndex:;
> > -                menu: #fieldListMenu:;
> > -                frame: (0 at 0 corner: 0.3 at 0.5).
> > -
> > -        valueSpec := builder pluggableTextSpec new
> > -                model: self;
> > -                getText: #contents;
> > -                setText: #accept:;
> > -                menu: #codePaneMenu:shifted:;
> > -                frame: (0.3 at 0 corner: 1.0 at 0.5).
> > -
> > -        msgSpec := builder pluggableListSpec new
> > -                model: self;
> > -                list: #msgList;
> > -                getIndex: #msgListIndex;
> > -                setIndex: #msgListIndex:;
> > -                menu: #msgListMenu;
> > -                frame: (0 at 0.5 corner: 0.3 at 1.0).
> > -
> > -        codeSpec := builder pluggableTextSpec new
> > -                model: self;
> > -                getText: #msgText;
> > -                setText: #msgAccept:from:;
> > -                menu: #msgPaneMenu:shifted:;
> > -                frame: (0.3 at 0.5 corner: 1.0 at 1.0).
> > -
> > -        window children addAll: {fieldSpec. valueSpec. msgSpec. codeSpec}.
> > -        ^ builder build: window!
> >
> > Item was removed:
> > - ----- Method: InspectorBrowser>>fieldList (in category 'accessing') -----
> > - fieldList
> > -        fieldList ifNotNil: [^ fieldList].
> > -        ^ (fieldList := super fieldList)!
> >
> > Item was added:
> > + ----- Method: InspectorBrowser>>initialExtent (in category 'toolbuilder')
> > -----
> > + initialExtent
> > +
> > +        ^ super initialExtent * 3/2!
> >
> > Item was removed:
> > - ----- Method: InspectorBrowser>>initialize (in category
> > 'initialize-release') -----
> > - initialize
> > -
> > -        super initialize.
> > -        fieldList := nil.
> > -        msgListIndex := 0.
> > -        self changed: #msgText
> > - !
> >
> > Item was changed:
> >   ----- Method: InspectorBrowser>>inspect: (in category
> > 'initialize-release') -----
> >   inspect: anObject
> >          "Initialize the receiver so that it is inspecting anObject. There
> > is no current selection.
> >          Overriden so that my class is not changed to 'anObject
> > inspectorClass'."
> >
> >          object := anObject.
> > +        self browser selectClass: anObject class.
> >          self initialize
> >   !
> >
> > Item was removed:
> > - ----- Method: InspectorBrowser>>msgAccept:from: (in category 'messages')
> > -----
> > - msgAccept: newText from: editor
> > -        | category |
> > -        category := msgListIndex = 0
> > -                ifTrue: [ClassOrganizer default]
> > -                ifFalse: [object class organization categoryOfElement:
> > (msgList at: msgListIndex)].
> > -        ^ (object class compile: newText classified: category notifying:
> > editor) ~~ nil!
> >
> > Item was removed:
> > - ----- Method: InspectorBrowser>>msgList (in category 'messages') -----
> > - msgList
> > -
> > -        ^msgList ifNil: [ msgList := object class selectors sort ]!
> >
> > Item was removed:
> > - ----- Method: InspectorBrowser>>msgListIndex (in category 'messages')
> > -----
> > - msgListIndex
> > -        ^msgListIndex!
> >
> > Item was removed:
> > - ----- Method: InspectorBrowser>>msgListIndex: (in category 'messages')
> > -----
> > - msgListIndex: anInteger
> > -        "A selection has been made in the message pane"
> > -
> > -        msgListIndex := anInteger.
> > -        self changed: #msgText.!
> >
> > Item was removed:
> > - ----- Method: InspectorBrowser>>msgListMenu: (in category 'messages')
> > -----
> > - msgListMenu: aMenu
> > -        ^ aMenu labels: 'Not yet implemented' lines: #(0) selections:
> > #(flash)!
> >
> > Item was removed:
> > - ----- Method: InspectorBrowser>>msgPaneMenu:shifted: (in category
> > 'messages') -----
> > - msgPaneMenu: aMenu shifted: shifted
> > -        ^ aMenu labels:
> > - 'find... (f)
> > - find again (g)
> > - find and replace...
> > - do/replace again (j)
> > - undo (z)
> > - redo (Z)
> > - copy (c)
> > - cut (x)
> > - paste (v)
> > - do it (d)
> > - print it (p)
> > - inspect it (i)
> > - accept (s)
> > - cancel (l)'
> > -                lines: #(0 4 6 9 12)
> > -                selections: #(find findAgain findReplace again undo redo
> > copySelection cut paste doIt printIt inspectIt accept cancel)!
> >
> > Item was removed:
> > - ----- Method: InspectorBrowser>>msgText (in category 'messages') -----
> > - msgText
> > -        msgListIndex = 0 ifTrue: [^ nil].
> > -        ^ object class sourceCodeAt: (msgList at: msgListIndex)!
> >
> > Item was removed:
> > - ----- Method: InspectorBrowser>>step (in category 'stepping and
> > presenter') -----
> > - step
> > -        | list fieldString msg |
> > -        (list := super fieldList) = fieldList ifFalse:
> > -                [fieldString := selectionIndex > 0 ifTrue: [fieldList at:
> > selectionIndex] ifFalse: [nil].
> > -                fieldList := list.
> > -                selectionIndex := fieldList indexOf: fieldString.
> > -                self changed: #fieldList.
> > -                self changed: #selectionIndex].
> > -        list := msgList.  msgList := nil.  "force recomputation"
> > -                list = self msgList ifFalse:
> > -                [msg := msgListIndex > 0 ifTrue: [list at: msgListIndex]
> > ifFalse: [nil].
> > -                msgListIndex := msgList indexOf: msg.
> > -                self changed: #msgList.
> > -                self changed: #msgListIndex].
> > -        super step!
> >
> > Item was added:
> > + ----- Method: InspectorBrowser>>stepAt:in: (in category 'stepping and
> > presenter') -----
> > + stepAt: millisecondClockValue in: aWindow
> > +
> > +        super stepAt: millisecondClockValue in: aWindow.
> > +        browser stepAt: millisecondClockValue in: aWindow.!
> >
> > Item was removed:
> > - ----- Method: InspectorBrowser>>wantsSteps (in category 'accessing')
> > -----
> > - wantsSteps
> > -        ^ true!
> >
> >
> >


> 



More information about the Squeak-dev mailing list