Watcher development

I forced myself to make a release of Watcher last night. I feared if I didn’t release it then it might languish on my disk like all of my other little gadgets. Forcing myself to release it meant I had to finish it at least enough to not be entirely embarrassed by it. Tonight, I started working on the next version:

  • Changed default slide interval (how long it shows each photo) to 10 seconds
  • Removed the embedded installer used to make the .exe file appear as a single file when in fact py2exe emits an .exe and a bunch of support .dll and .pyds (all the binary dependencies). It was clever… too clever. I get all of the wins of smaller download with the installer, so trying to hide all the runtime goo is unnecessary complexity. Now the installer will emit the result of the py2exe into the program installation directory.
  • Moved RSS fetch, parse, and processing into its own thread so the UI doesn’t hang while it works.
  • Moved photo fetching to its own thread so etc
  • Wrote little abstraction for moving stuff into a seperate thread while ensuring all the GUI updating happens in the GUI thread (maybe more on this later)
  • Rearranged the source code so its not all one huge .py file.
  • Made a note to maybe write up the preferences abstraction — it stores prefs in the registry, but rather than write all the goo for each pref I wrote a couple wrapper classes after utterly failing to find such a thing freely available.
  • Slightly improved the layout of the control frame by adding some spacers. More work to be done here.
  • Updated the TODO list.
  • No doubt introduced some bugs by moving stuff into their own thread — I need to review how all that stuff works to at least reduce the probability that it will always shoot itself in its foot.