Hallo!
i think this inherits a bit the weaknesses of pd's standard format. which is: mixing up functionality (object-name), modifiers (arguments) and graphical representation (position).
yep!
i would rather seperate them as much as possible, something like
<canvas> <gui xpos="828" ypos="549" height="450" width="341"> <obj ID="obj1"> f <args>2</args> <gui xpos="49" ypos="134"> </obj> <obj ID="obj2"> trigger <args>float float</args> <gui xpos="49" ypos="134" bgcolor="#FF00FF"> </obj> </canvas>
okay, maybe it's clearer to use a own tag for all the gui properties. So we can also easy expand these GUI-descriptions (e.g. for IEM-GUIs etc.).
as with pd-0.38, objects that pd's not able to create still connect (i guess with some wild hack that tracks the highest number of connected outlets of an object)
good to know ...
this could also be done simply by giving meta-information such as <obj ID="obj10" inlets="1" outlets="4">foo</obj>
well i am not at all into XML (so i do not know which restrictions you can put into a validator) but i guess this syntax is very prone for things like
<connect> <outlet ID="obj1">0</outlet> <outlet ID="obj2">1</outlet> </connect> how could you avoid this ? (connecting 2 outlets)
in the parsing of the XML-file only outlet tags get connected to inlet tags? of course it could also be something like this: <connect from="obj1" outlet="0" to="obj2" inlet="1"/> But in this case it's more difficult to connect one outlet to multiple inlets. e.g.: <connect> <outlet ID="obj1">0</outlet> <inlet ID="obj2">1</inlet> <inlet ID="obj5">0</inlet> </connect> But do we need that ?
it is not clear from your example (because it is short), but: object-identifiers ("ID") should be unique identifiers, at least within the scope of a (canvas-) tag. ID's should be able to be chosen arbitrarily, so this would be a valid patch:
I also thought in that way.
people that are writing patches in a text-editor could choose whatever ID they like (but have to make sure, that it is unique)
This way, i think, it's really much easier to write patches in a text editor.
<obj ID="foo">print</obj>
<msg ID="bar"> bang <connect n="0"> <inlet ID="foo" n="0"> <gui color="red">comment</gui> </connect> </msg>
Maybe this (and also to top down approach) should be possible additionally to the normal connect tag? But doesn't it get to complicated ?
LG Georg