Hi,
I would like to reply with a couple of suggestions:
Have you thought about another technique? instead of making several
[select]s with lots of variables (which will have to be checked now and
then, as we don't know fow now which version of vanilla was your reference
version), you could take on a more environment-dependent approach: pd
scans the extra folder (including subfolders) for installed
externals/abstractions and writes the names of the installed objects in a
list (or [textfile] (or [msgfile]) ) - they're easy to find if you look
for the endings .pd (abstractions), or .dll / .pd_linux / .darwin [actual
non-windows extensions are wrong, I think].
That would create a personal database for each pd installation for each
user (assuming that users add something to their extra folder or a user
has several versions of pd installed). Then the patch->environment
comparation process you already programmed would take place. Meaning, you
could test quite easily if a patch you want to open has any elements your
system doesn't have.
One option to look automatically for objects in abstractions could be:
pre-scan the patch folder (+ subfolders, if any?), and see if they come up
in the results. if so, just open those files automatically afterwards.
For what use did you thought the patch might be useful? I think it's quite
useful if I want to make a "standalone" patch, which has to be packaged
with the program with it - and for that vanilla+ is better as extended.
But from my opinion, I don't know nowadays how many people are working
with vanilla instead of with extended (except some hardcore users). I
guess new users use extended, since both are now in parallel versions.
As it was replied, [5] isn't "wrong". for example, if [5] is triggered by
another object (and not a message), it's more efficient to have
[object]->[object] than [object]->[message(, as data types don't have to
be converted. (as I read some years ago in this list)
But if you (rightfully) don't want floats to go in your list, you can
filter them out, a [route float] with no connection from the first outlet
does it. (I just tried it)
João Pais
PS: for GUI design, I always say "GOP is your friend" - specially now,
when you can even hide the creation name/arguments
I've made a patch that might be useful for others. In the attached patch you can open a pd-file and the main window prints all the abstractions or externals that you need to make the patch work. It doesn't detect abstractions within abstractions though and it also prints objects like [5] or [$1], I didn't find a solution for this (small) problem yet. (I'd think it is bad pratice to use [5] in sted of [5( or am I wrong?) I wanted to make a patch that copied all the necessary abstractions and the file itself to a new folder but I ended up with this simpler solution...
hans r