Added ability to export a graph to a fully attributed Xml document.
graph := GraphViz new.
graph add: #A.
graph add: #B - #C.
graph asXml "- an instance of XMLDocument"
First the graph is sent through one of the GraphViz programs which does node and edge placement. The output is written in plain text to a "dot" file which has been fully attributed.
Lastly, dot2gxl is run automatically (included in the GraphViz distro bin folder) and the resulting xml file is parsed and delivered as the result of asXml. So then you can rip over the Xml any way you like and/or utilize the automatic layout however you like.
Also made it easier to sub in other GraphVizGenerators should someone want to build a Mac or Unix edition.
Also I totally reworked the primitive external process synchronization with the spawned windows process that does the graph generation. Now instead of just trying periodically to load the resulting PNG or XML files inside an exception handling loop, I look to see if the file really exists and has a newer modification timestamp (if appropriate) and that the file size is non-zero. This works on Windows quite well as when a file is pre-existent and getting written over by a subsequent process, the file size goes to zero during the writting process and is finally non-zero when the writing process is finished. I use this fact to synchronize Squeak with the GraphViz programs to ensure it is done writing the output file before trying to read it.