New Extensible Inspector for Pharo-Core

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

New Extensible Inspector for Pharo-Core

Frederic Pluquet-3
Hello,

I worked on a new extensible inspector for Pharo (written without OB and so usable directly in Pharo-Core). This tool is based on a tree view of objects in which children can be dynamically extended by simple message overriding. Actions per object menu can be also defined dynamically. A definition panel shows a description of the selected object in the tree. A bottom right pane permits to evaluate some code (in which self is bound to the selected object in the tree).

You can load the code from SqueakSource (NewInspector project). See the class extensions (CompiledMethod, OrderedCollection, Set, Dictionary for the moment) to know how to incorporable your needs.

It is a stable but very young version (I started to code yesterday evening ;)). Any feedback is welcome :) 

Fréd
----
Frédéric Pluquet
Université Libre de Bruxelles (ULB)
Assistant
http://www.ulb.ac.be/di/fpluquet

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Stéphane Ducasse
frederick what I would love to have is a
        - merge between the explorer and the inspector
        - get the view inpesctor (flash behavior)
        - get trippy like navigation (when you select an iv of an element  
that you can go over all the elements looking only
        at the iv you selected)
        - see the morph in the pane when this is a morph :)

Stef


On Jun 8, 2009, at 10:11 PM, Frederic Pluquet wrote:

> Hello,
>
> I worked on a new extensible inspector for Pharo (written without OB  
> and so usable directly in Pharo-Core). This tool is based on a tree  
> view of objects in which children can be dynamically extended by  
> simple message overriding. Actions per object menu can be also  
> defined dynamically. A definition panel shows a description of the  
> selected object in the tree. A bottom right pane permits to evaluate  
> some code (in which self is bound to the selected object in the tree).
>
> You can load the code from SqueakSource (NewInspector project). See  
> the class extensions (CompiledMethod, OrderedCollection, Set,  
> Dictionary for the moment) to know how to incorporable your needs.
>
> It is a stable but very young version (I started to code yesterday  
> evening ;)). Any feedback is welcome :)
>
> Fréd
> ----
> Frédéric Pluquet
> Université Libre de Bruxelles (ULB)
> Assistant
> http://www.ulb.ac.be/di/fpluquet
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Frederic Pluquet-3
Hello,
 
frederick what I would love to have is a
       - merge between the explorer and the inspector

This is, no ? :)
 

       - get the view inpesctor (flash behavior)

I don't understand what it means.
 

       - get trippy like navigation (when you select an iv of an element
that you can go over all the elements looking only
       at the iv you selected)

You can select an object (an instVar value, a method, ... any item of the tree) and select "Add as root" in the contextual menu (or Cmd-a). You can also delete a root item (menu "Remove from roots" or Cmd-a).

It is not exactly a trippy-like navigation, but you can inspect only some sub-objects if you want.


       - see the morph in the pane when this is a morph :)

Good idea but it is no simple to implement (I want to work only with Pluggeable*Spec classes and no directly with Morphs).

Fréd

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Stéphane Ducasse

On Jun 8, 2009, at 10:53 PM, Frederic Pluquet wrote:

> Hello,
>
> frederick what I would love to have is a
>        - merge between the explorer and the inspector
>
> This is, no ? :)

ok I did not load your code :)
>
>
>        - get the view inpesctor (flash behavior)
>
> I don't understand what it means.

you select in your tree an object bring a menu and click flash and  
oops you see you widgets flashing.
Check the viewExplorer... sent in the list by "steven wirts"

>
>
>        - get trippy like navigation (when you select an iv of an  
> element
> that you can go over all the elements looking only
>        at the iv you selected)
>
> You can select an object (an instVar value, a method, ... any item  
> of the tree) and select "Add as root" in the contextual menu (or Cmd-
> a). You can also delete a root item (menu "Remove from roots" or Cmd-
> a).
>
> It is not exactly a trippy-like navigation, but you can inspect only  
> some sub-objects if you want.
>
>
>        - see the morph in the pane when this is a morph :)
>
> Good idea but it is no simple to implement (I want to work only with  
> Pluggeable*Spec classes and no directly with Morphs).
>
> Fréd
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Frederic Pluquet-3
>        - get the view inpesctor (flash behavior)
>
> I don't understand what it means.

you select in your tree an object bring a menu and click flash and
oops you see you widgets flashing.
Check the viewExplorer... sent in the list by "steven wirts"

It is done in the last published version of NewInspector :) A new menu item "Flash" appears for Morph instances (Cmd-f works also).

Fréd

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Frederic Pluquet-3
I also added a new child "Submorphs" for any instance of Morph (and subclasses) to inspect directly (and more easily) them.

Fréd
----
Frédéric Pluquet
Université Libre de Bruxelles (ULB)
Assistant
http://www.ulb.ac.be/di/fpluquet


On Mon, Jun 8, 2009 at 11:15 PM, Frederic Pluquet <[hidden email]> wrote:
>        - get the view inpesctor (flash behavior)
>
> I don't understand what it means.

you select in your tree an object bring a menu and click flash and
oops you see you widgets flashing.
Check the viewExplorer... sent in the list by "steven wirts"

It is done in the last published version of NewInspector :) A new menu item "Flash" appears for Morph instances (Cmd-f works also).

Fréd


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Alexandre Bergel
In reply to this post by Frederic Pluquet-3
Hi Frederic,

It looks really good. I tried to used it instead of the Explorer.
Few comments:
        - Unfolding a branch that contains an element with a very very long  
printOn: seems to freeze the system. I got an error niDescription not  
found.
        - I spend a lot of time in unfolding branches to see field content.  
Maybe field values could be displayed without having to unfold ?

Cheers,
Alexandre

On 8 Jun 2009, at 16:11, Frederic Pluquet wrote:

> Hello,
>
> I worked on a new extensible inspector for Pharo (written without OB  
> and so usable directly in Pharo-Core). This tool is based on a tree  
> view of objects in which children can be dynamically extended by  
> simple message overriding. Actions per object menu can be also  
> defined dynamically. A definition panel shows a description of the  
> selected object in the tree. A bottom right pane permits to evaluate  
> some code (in which self is bound to the selected object in the tree).
>
> You can load the code from SqueakSource (NewInspector project). See  
> the class extensions (CompiledMethod, OrderedCollection, Set,  
> Dictionary for the moment) to know how to incorporable your needs.
>
> It is a stable but very young version (I started to code yesterday  
> evening ;)). Any feedback is welcome :)
>
> Fréd
> ----
> Frédéric Pluquet
> Université Libre de Bruxelles (ULB)
> Assistant
> http://www.ulb.ac.be/di/fpluquet
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Frederic Pluquet-3
Hello Alex,

On Tue, Jun 9, 2009 at 4:26 PM, Alexandre Bergel <[hidden email]> wrote:
Hi Frederic,

It looks really good. I tried to used it instead of the Explorer.
Few comments:
       - Unfolding a branch that contains an element with a very very long
printOn: seems to freeze the system.

Ok, I should limit the size of the generated string (with ... at the end).
 
I got an error niDescription not found.

Do you have an example I can reproduce ? 
 
       - I spend a lot of time in unfolding branches to see field content.
Maybe field values could be displayed without having to unfold ?

Good idea. I'll see what I can do. 

Cheers,

Fréd


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Stéphane Ducasse
Hi frederic

Here is some feedback
        - Continue!!!

Now could you:
        - add a class comment to classes. I have to browse the class
        - categorise the methods.
        - avoid using category in your package.
        I do not want to have undocumented new code in pharo.

        - Instead of fields can you use
                InstVar
                Fields is not smalltalkish

        - when we use an inspector/explorer we can see really fast the value  
of iv without
        having to click on something.
        may be you should propose something
                classListIndex : 1
               
        - Why when I browse a symbol I do not get #in front?

        - In some case we have contents what is it?

        - why when I browse an array I do not get #
       
        - roots are not obviously displayed

It seems that you lost your symbol

openOn: t1
        | t2 t3 t4 |
        t3 := MorphicToolBuilder new.
        (t4 := (t2 := self new on: t1;
                                                 yourself) buildWith: t3) openInWorld.
        ^ t2

Stef

On Jun 9, 2009, at 7:31 PM, Frederic Pluquet wrote:

> Hello Alex,
>
> On Tue, Jun 9, 2009 at 4:26 PM, Alexandre Bergel  
> <[hidden email]> wrote:
> Hi Frederic,
>
> It looks really good. I tried to used it instead of the Explorer.
> Few comments:
>        - Unfolding a branch that contains an element with a very  
> very long
> printOn: seems to freeze the system.
>
> Ok, I should limit the size of the generated string (with ... at the  
> end).
>
> I got an error niDescription not found.
>
> Do you have an example I can reproduce ?
>
>        - I spend a lot of time in unfolding branches to see field  
> content.
> Maybe field values could be displayed without having to unfold ?
>
> Good idea. I'll see what I can do.
>
> Cheers,
>
> Fréd
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Mariano Martinez Peck


       - avoid using category in your package.


I know you answer Frederic but I am curious, why not using categories in a package? Or I misunderstood that
 
best,

mariano


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Alexandre Bergel
In reply to this post by Frederic Pluquet-3
>        - Unfolding a branch that contains an element with a very  
> very long
> printOn: seems to freeze the system.
>
> Ok, I should limit the size of the generated string (with ... at the  
> end).
>
> I got an error niDescription not found.
>
> Do you have an example I can reproduce ?

Hum... Load moose, CAnalyzer, then the linux kernel, and open a  
NewInspector on the model.
I checked a bit the code, and apparently this issue will be solved if  
you limit the size of the generated string.

>        - I spend a lot of time in unfolding branches to see field  
> content.
> Maybe field values could be displayed without having to unfold ?
>
> Good idea. I'll see what I can do.

Ok, I will be delighted to check it out

Cheers,
Alexandre

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Stéphane Ducasse
In reply to this post by Mariano Martinez Peck

On Jun 9, 2009, at 8:12 PM, Mariano Martinez Peck wrote:

>
>
>        - avoid using category in your package.
>
>
> I know you answer Frederic but I am curious, why not using  
> categories in a package? Or I misunderstood that

because we should get rid of them. And also having one category for  
one class just clutter the space
It makes everything complex we have category that are not packages....
all kind of tools support for that.

Stef

>
>
> best,
>
> mariano
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Frederic Pluquet-3
In reply to this post by Stéphane Ducasse

On Tue, Jun 9, 2009 at 7:57 PM, Stéphane Ducasse <[hidden email]> wrote:
Hi frederic

Here is some feedback
       - Continue!!!
Thanks :)
 
Now could you:
       - add a class comment to classes. I have to browse the class
       - categorise the methods.
       - avoid using category in your package.
       I do not want to have undocumented new code in pharo.

Ok done. 


       - Instead of fields can you use
               InstVar
               Fields is not smalltalkish

Done. 


       - when we use an inspector/explorer we can see really fast the value
of iv without
       having to click on something.
       may be you should propose something
               classListIndex : 1

Difficult to do without speak to morphic directly. I must found another way. 


       - Why when I browse a symbol I do not get #in front?

Fixed. 

       - In some case we have contents what is it?

Accessible elements of the collection. Changed to "Elements". For dictionaries, you have "Elements" (key => value, inspecting the value) and "Keys" (inspecting the keys objects, having a child "Value" to retrieve the associated value in the dictionary :)).
 
       - why when I browse an array I do not get #



       - roots are not obviously displayed 


It seems that you lost your symbol

openOn: t1
       | t2 t3 t4 |
       t3 := MorphicToolBuilder new.
       (t4 := (t2 := self new on: t1;
                                                yourself) buildWith: t3) openInWorld.
       ^ t2

Yes, I have some problem with my image... I'll verify all my methods...


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Frederic Pluquet-3
In reply to this post by Alexandre Bergel
- the value of each instance variable is shown at left of the name of the inst var.
- Descriptions are now limited to 5000 characters. The elements shown in "Elements" of an OrderedCollection are limited to the 500 first ones.

Fréd
----
Frédéric Pluquet
Université Libre de Bruxelles (ULB)
Assistant
http://www.ulb.ac.be/di/fpluquet


On Tue, Jun 9, 2009 at 9:06 PM, Alexandre Bergel <[hidden email]> wrote:
>        - Unfolding a branch that contains an element with a very
> very long
> printOn: seems to freeze the system.
>
> Ok, I should limit the size of the generated string (with ... at the
> end).
>
> I got an error niDescription not found.
>
> Do you have an example I can reproduce ?

Hum... Load moose, CAnalyzer, then the linux kernel, and open a
NewInspector on the model.
I checked a bit the code, and apparently this issue will be solved if
you limit the size of the generated string.

>        - I spend a lot of time in unfolding branches to see field
> content.
> Maybe field values could be displayed without having to unfold ?
>
> Good idea. I'll see what I can do.

Ok, I will be delighted to check it out

Cheers,
Alexandre

--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

SergeStinckwich
In reply to this post by Alexandre Bergel
On Wed, Jun 10, 2009 at 2:06 AM, Alexandre Bergel<[hidden email]> wrote:

>>        - Unfolding a branch that contains an element with a very
>> very long
>> printOn: seems to freeze the system.
>>
>> Ok, I should limit the size of the generated string (with ... at the
>> end).
>>
>> I got an error niDescription not found.
>>
>> Do you have an example I can reproduce ?
>
> Hum... Load moose, CAnalyzer, then the linux kernel, and open a
> NewInspector on the model.

great, you could analyse the linux kernel C code inside Pharo ?

--
Serge Stinckwich
UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam
Smalltalkers do: [:it | All with: Class, (And love: it)]
http://doesnotunderstand.org/

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Stéphane Ducasse
In reply to this post by Frederic Pluquet-3
>
Excellent!
So soon we should only have one tools.


>        - why when I browse an array I do not get #
>
> ?

I browsed a class and check the class category which should be an  
array and I got
(    )
instead of #(   )

>
>
>        - roots are not obviously displayed
>
> It seems that you lost your symbol
>
> openOn: t1
>        | t2 t3 t4 |
>        t3 := MorphicToolBuilder new.
>        (t4 := (t2 := self new on: t1;
>                                                 yourself) buildWith:  
> t3) openInWorld.
>        ^ t2
>
> Yes, I have some problem with my image... I'll verify all my  
> methods...
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector

Stéphane Ducasse
In reply to this post by SergeStinckwich
yes

but just parsing no symbol resolution.

>
>>>        - Unfolding a branch that contains an element with a very
>>> very long
>>> printOn: seems to freeze the system.
>>>
>>> Ok, I should limit the size of the generated string (with ... at the
>>> end).
>>>
>>> I got an error niDescription not found.
>>>
>>> Do you have an example I can reproduce ?
>>
>> Hum... Load moose, CAnalyzer, then the linux kernel, and open a
>> NewInspector on the model.
>
> great, you could analyse the linux kernel C code inside Pharo ?
>
> --
> Serge Stinckwich
> UMI UMMISCO 209 (IRD/UPMC), Hanoi, Vietnam
> Smalltalkers do: [:it | All with: Class, (And love: it)]
> http://doesnotunderstand.org/
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Frederic Pluquet-3
In reply to this post by Stéphane Ducasse
I commited a new version of NewInspector, with new feartures :

- add progress bar indicator when long collections are inspected (no freeze feeling)
- limit the description string of collections to 5000 characters(speed)
- add inst vars as direct children of an object (accessibility and speed)
- children of first inspected object opened by default (accessibility and speed)

Thanks for your feedback !

Fréd
----
Frédéric Pluquet
Université Libre de Bruxelles (ULB)
Assistant
http://www.ulb.ac.be/di/fpluquet



_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Antoine Marot
When I click on "Methods", the item displayed on the right is not the method dictionary but the parent object.

Could you check that ?


Antoine

Le 10-juin-09 à 10:49, Frederic Pluquet a écrit :

I commited a new version of NewInspector, with new feartures :

- add progress bar indicator when long collections are inspected (no freeze feeling)
- limit the description string of collections to 5000 characters(speed)
- add inst vars as direct children of an object (accessibility and speed)
- children of first inspected object opened by default (accessibility and speed)

Thanks for your feedback !

Fréd
----
Frédéric Pluquet
Université Libre de Bruxelles (ULB)
Assistant
http://www.ulb.ac.be/di/fpluquet


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: New Extensible Inspector for Pharo-Core

Antoine Marot
It happens as well for Implementors, Elements, ...


Le 10-juin-09 à 11:59, Antoine Marot a écrit :

When I click on "Methods", the item displayed on the right is not the method dictionary but the parent object.

Could you check that ?


Antoine

Le 10-juin-09 à 10:49, Frederic Pluquet a écrit :

I commited a new version of NewInspector, with new feartures :

- add progress bar indicator when long collections are inspected (no freeze feeling)
- limit the description string of collections to 5000 characters(speed)
- add inst vars as direct children of an object (accessibility and speed)
- children of first inspected object opened by default (accessibility and speed)

Thanks for your feedback !

Fréd
----
Frédéric Pluquet
Université Libre de Bruxelles (ULB)
Assistant
http://www.ulb.ac.be/di/fpluquet


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
12