Hi Rob,
To try and answer your questions:
1. Print should send it's data to Dia's stdout, so if you start Dia from the command line, you should see the output from your script there.
2. Afaik there isn't any way to get Dia to reload the scripts as they are loaded at start up.
Some tips on debugging Python in regards to Dia and in general that I have learned over the years:
The easiest way in the long run is to look at using unittest and mock object
to set up some unit tests - you don't have to go the full TDD route, but take it from me, a few well designed tests now will save a lot of pain later. By using unittest and mock objects, you can
control how your code interacts with Dia in a deterministic fashion and not have to mess around with manually testing each possible case.
With mock object, you can mock all or just part of an existing Python
object. This blog explains Mock object in detail. To really speed things up, I created a Mock Dia python class which lets you write and test your code without having to start Dia at all. You can find it here if it's something you think might help: https://github.com/chebizarro/dia-test. With unittest and the mock Dia object you should be able to design and code *most* of your project without leaving your preferred IDE. One caveat is that the Dia Mock object is not complete, as I only implemented the functionality that I needed for my project, which seems like it had fairly similar requirements to your own. You can find that project here if you think it might be useful - https://github.com/chebizarro/postdia.
In terms of debugging, I personally can't recommend
pudb
enough, it's an interactive command line debugger which you can use
with unittest to zero in on what part of the code is causing the
problem.
That way you don't need to pollute your code with print statements and you can examine the internal state of your objects much more thoroughly.