thanks phil
We should do another pass on nautilus.

On 21 Mar 2014, at 19:58, phil@highoctane.be wrote:

Furthering the investigation:

With groups, plugins are not working at all as package doesn't exist in DynamicClassGroup etc.

I fixed the plugin I was interested in but this makes for strange code as:

>>packageSelected: anAnnouncement
| package name |
(anAnnouncement respondsTo: #package) ifTrue: [ 
...

This is because the announcement comes for a package which is not one.

even if one has registered it with:

registerTo: aModel

aModel announcer
on: NautilusPackageSelected send: #packageSelected: to: self

Maybe should we have other announcements for these specific items like DynamicClassGroup (e.g. DynamicClassGroupSelected announcement)

I have made a little plugin to help me explore the selected classes in the left most list.

Also adding 

RPackage>>package
   ^self

helps with package selected code as without it it is hard to write:

package node item package 

for both PackageTreeTagSelection and PackageTreePackageSelection


This makes the TasksPlugin code like;

packageSelected: anAnnouncement
| package |
(anAnnouncement respondsTo: #package) ifTrue: [ 
package := anAnnouncement package.

package
ifNil: [ tasks removeAll ]
ifNotNil: [ 
(package node item respondsTo: #package) ifTrue: [ 
tasks := (self systemNavigation allCallsOn: 'flag:' asSymbol) select: [ :m | package node item package includesMethod: m selector ofClass: m methodClass ]
].
].

] ifFalse: [ 
 tasks removeAll.
  ].

self changed: #tasks.

Maybe can we get this leaner with the proposed changes to the announcements.

Phil 

 



On Fri, Mar 21, 2014 at 7:12 PM, phil@highoctane.be <phil@highoctane.be> wrote:
I have been looking at Nautilus plugins as I wanted to be able to export some classes to other formats (e.g. CSV, XML for use with other tools).

Then, I started playing around with the URLPlugin with its buildString method, which proves helpful to find out about what is selected in the 'list2'.

So, that's where I started drilling down the rabbit hole...

So, I see that we have packages and package tags. And actions like promote as true package and demote (which kind of doesn't work and crashes, but I should test further).

One thing is that this setup breaks the PackageTasks plugin is broken at this point.

We have: 
>>packageSelected: anAnnouncement
package := anAnnouncement package.
...
tasks := (self systemNavigation allCallsOn: 'flag:' asSymbol) select: [ :m | package includesMethod: m selector ofClass: m methodClass ] ]

But with the packages and tags, it doesn't work.

In fact, package is misleading as the announcement contains a PackageTreePackageSelection or a PackageTreeTagSelection.

Question: how is one filtering on either the package or a given tag? Is this possible?
I saw the >>node and node>>item things.

I was trying to build the full path (Like "Nautilus-Plugin" from what is selected in the model).
Question; Is there any method for doing that at this point? (e.g. fullTag?)

Then I tried this:

Object subclass: #XXXX
instanceVariableNames: ''
classVariableNames: ''
category: 'Nautilus-Nautilus'

This gets XXXX mixed with the classes in Nautilus under the Nautilus package in the Nautilus tag.

So, a tag class is mixed with the root package. Not nice.

What's the underlying model? Is there a doc somewhere?

Going back to the digging...

TIA
Phil

<ExplorePackageSelectedPlugin.st>