The new object based UI is a disaster for certain tasks

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

The new object based UI is a disaster for certain tasks

Eliot Miranda-2
Hi All,

    there *must* be a simple way to avoid the object selection behaviour of the new print it.  Here's a motivating example.

Today I wanted to examine the difference between two classes in a particular package.

(StackInterpreterSimulator organization categories select: [:c| c beginsWith: '*VM']) select:
[:c| (StackInterpreterSimulator organization listAtCategoryNamed: c) ~= (CogVMSimulator organization listAtCategoryNamed: c)] #(#'*VMMakerUI-InterpreterSimulation-Morphic' #'*VMMakerUI-user interface')

Then I wanted to see what the difference was. An initial use of copyWithoutAll: gave me unexpected results.  So I eyeballed the two categories:

#(#'*VMMakerUI-InterpreterSimulation-Morphic' #'*VMMakerUI-user interface') collect:
[:c| {CogVMSimulator organization listAtCategoryNamed: c. StackInterpreterSimulator organization listAtCategoryNamed: c}]

 #(#(#(#eventQueue #openAsMorph #openAsMorphNoTranscript #windowColorToUse) 
#(#eventQueue #openAsMorph #openAsMorphNoTranscript #openAsSimulatorMorph #windowColorToUse)) #(#(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #toggleTranscript #utilitiesMenu:) #(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #setClickStepBreakBlock #toggleTranscript #toggleTranscriptForSimulatorMorph: #utilitiesMenu:))) 

The first thing I was frustrated in was to add some carriage returns, so I could see.  I wanted to format the output thus:

#(#(#(#eventQueue #openAsMorph #openAsMorphNoTranscript #windowColorToUse)
#(#eventQueue #openAsMorph #openAsMorphNoTranscript #openAsSimulatorMorph #windowColorToUse))
#(#(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #toggleTranscript #utilitiesMenu:)
#(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #setClickStepBreakBlock #toggleTranscript #toggleTranscriptForSimulatorMorph: #utilitiesMenu:))) 

Of course the only way I can do this is by cursor movement.  Any attempt to click with the mouse inspects the underlying object.  Annoying but not disastrous.  I can use the cursor keys.  So I am able with minor frustration to find that StackInterpreterSimulator implements openAsSimulatorMorph whereas CogVMSimulator does not.  Now the disastem.  i simply want to look at the implementation of openAsSimulatorMorph.  So I want to select it and type command-M for implementors.  But with the new interface I have to do cursor selection with shift, and it's getting ridiculously slow just to find the implementors of a selector.

Surely the best way would be to allow normal textual interaction but use a modifier key to inspect the underlying object.  I have to completely relearn my muscle memory and abandon my mouse to use this stuff.  And that is a disaster for me.

_,,,^..^,,,_
best, Eliot


Reply | Threaded
Open this post in threaded view
|

Re: The new object based UI is a disaster for certain tasks

Eliot Miranda-2


On Thu, May 27, 2021 at 9:42 AM Eliot Miranda <[hidden email]> wrote:
Hi All,

    there *must* be a simple way to avoid the object selection behaviour of the new print it. 

OK, I get it.  I have to do copy, paste and then the underlying object disappears.
Here's a motivating example.

Today I wanted to examine the difference between two classes in a particular package.

(StackInterpreterSimulator organization categories select: [:c| c beginsWith: '*VM']) select:
[:c| (StackInterpreterSimulator organization listAtCategoryNamed: c) ~= (CogVMSimulator organization listAtCategoryNamed: c)] #(#'*VMMakerUI-InterpreterSimulation-Morphic' #'*VMMakerUI-user interface')

Then I wanted to see what the difference was. An initial use of copyWithoutAll: gave me unexpected results.  So I eyeballed the two categories:

#(#'*VMMakerUI-InterpreterSimulation-Morphic' #'*VMMakerUI-user interface') collect:
[:c| {CogVMSimulator organization listAtCategoryNamed: c. StackInterpreterSimulator organization listAtCategoryNamed: c}]

 #(#(#(#eventQueue #openAsMorph #openAsMorphNoTranscript #windowColorToUse) 
#(#eventQueue #openAsMorph #openAsMorphNoTranscript #openAsSimulatorMorph #windowColorToUse)) #(#(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #toggleTranscript #utilitiesMenu:) #(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #setClickStepBreakBlock #toggleTranscript #toggleTranscriptForSimulatorMorph: #utilitiesMenu:))) 

The first thing I was frustrated in was to add some carriage returns, so I could see.  I wanted to format the output thus:

#(#(#(#eventQueue #openAsMorph #openAsMorphNoTranscript #windowColorToUse)
#(#eventQueue #openAsMorph #openAsMorphNoTranscript #openAsSimulatorMorph #windowColorToUse))
#(#(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #toggleTranscript #utilitiesMenu:)
#(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #setClickStepBreakBlock #toggleTranscript #toggleTranscriptForSimulatorMorph: #utilitiesMenu:))) 

Of course the only way I can do this is by cursor movement.  Any attempt to click with the mouse inspects the underlying object.  Annoying but not disastrous.  I can use the cursor keys.  So I am able with minor frustration to find that StackInterpreterSimulator implements openAsSimulatorMorph whereas CogVMSimulator does not.  Now the disastem.  i simply want to look at the implementation of openAsSimulatorMorph.  So I want to select it and type command-M for implementors.  But with the new interface I have to do cursor selection with shift, and it's getting ridiculously slow just to find the implementors of a selector.

Surely the best way would be to allow normal textual interaction but use a modifier key to inspect the underlying object.  I have to completely relearn my muscle memory and abandon my mouse to use this stuff.  And that is a disaster for me.

_,,,^..^,,,_
best, Eliot


--
_,,,^..^,,,_
best, Eliot


Reply | Threaded
Open this post in threaded view
|

Re: The new object based UI is a disaster for certain tasks

marcel.taeumel
Hi Eliot,

cut/copy-and-paste removes it. And so does CMD+0. The preference is called "interactive print-it" and can be disabled.

IMO, we should have a simple filter for such primitives that can easily inspected in their text form. Strings, Symbols, literal arrays.... http://forum.world.st/The-Inbox-Morphic-ct-1586-mcz-tp5106774p5129065.html

Best,
Marcel

Am 27.05.2021 18:54:11 schrieb Eliot Miranda <[hidden email]>:



On Thu, May 27, 2021 at 9:42 AM Eliot Miranda <[hidden email]> wrote:
Hi All,

    there *must* be a simple way to avoid the object selection behaviour of the new print it. 

OK, I get it.  I have to do copy, paste and then the underlying object disappears.
Here's a motivating example.

Today I wanted to examine the difference between two classes in a particular package.

(StackInterpreterSimulator organization categories select: [:c| c beginsWith: '*VM']) select:
[:c| (StackInterpreterSimulator organization listAtCategoryNamed: c) ~= (CogVMSimulator organization listAtCategoryNamed: c)] #(#'*VMMakerUI-InterpreterSimulation-Morphic' #'*VMMakerUI-user interface')

Then I wanted to see what the difference was. An initial use of copyWithoutAll: gave me unexpected results.  So I eyeballed the two categories:

#(#'*VMMakerUI-InterpreterSimulation-Morphic' #'*VMMakerUI-user interface') collect:
[:c| {CogVMSimulator organization listAtCategoryNamed: c. StackInterpreterSimulator organization listAtCategoryNamed: c}]

 #(#(#(#eventQueue #openAsMorph #openAsMorphNoTranscript #windowColorToUse) 
#(#eventQueue #openAsMorph #openAsMorphNoTranscript #openAsSimulatorMorph #windowColorToUse)) #(#(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #toggleTranscript #utilitiesMenu:) #(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #setClickStepBreakBlock #toggleTranscript #toggleTranscriptForSimulatorMorph: #utilitiesMenu:))) 

The first thing I was frustrated in was to add some carriage returns, so I could see.  I wanted to format the output thus:

#(#(#(#eventQueue #openAsMorph #openAsMorphNoTranscript #windowColorToUse)
#(#eventQueue #openAsMorph #openAsMorphNoTranscript #openAsSimulatorMorph #windowColorToUse))
#(#(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #toggleTranscript #utilitiesMenu:)
#(#evaluatePrinter:on: #headFramePointer #headStackPointer #printFrame:WithSP:on: #setClickStepBreakBlock #toggleTranscript #toggleTranscriptForSimulatorMorph: #utilitiesMenu:))) 

Of course the only way I can do this is by cursor movement.  Any attempt to click with the mouse inspects the underlying object.  Annoying but not disastrous.  I can use the cursor keys.  So I am able with minor frustration to find that StackInterpreterSimulator implements openAsSimulatorMorph whereas CogVMSimulator does not.  Now the disastem.  i simply want to look at the implementation of openAsSimulatorMorph.  So I want to select it and type command-M for implementors.  But with the new interface I have to do cursor selection with shift, and it's getting ridiculously slow just to find the implementors of a selector.

Surely the best way would be to allow normal textual interaction but use a modifier key to inspect the underlying object.  I have to completely relearn my muscle memory and abandon my mouse to use this stuff.  And that is a disaster for me.

_,,,^..^,,,_
best, Eliot


--
_,,,^..^,,,_
best, Eliot