Wow, Its been 3 weeks already. Time goes by so quickly.
Last week my free time was spent building another 60 Open Stub J-poles for upcoming Hamfests so programming was put on a 1 week "hold".
What I have now does run well on my RPI 2, but GUI-wise is still in its infancy.
I've found that GTK# really sucks when it comes to building GUIs. It wouldn't be so bad if there was accurate, complete and up-to-date documentation. But what can I say, GTK is designed for Linux and Linux is not known for its GUI.
Anyway, when it comes to designing and building GUIs, Microsoft's WPF has really spoiled me. WPF made it really easy to create GUI elements exactly how I wanted them, both in the way they looked and in the way they behaved. On top of that WPF was also designed to use hardware acceleration when possible allowing it to run many varying types of animations smoothly. On the other hand GTK and most of the other GUI toolkits that can run cross-platform (except java, maybe) are designed for creating very "static" UIs, so they don't support animations or customization very well.
If I had continued to use WPF I would have been able to implement the ideas for stuff like "scrolling" or "marque" text, Lightning flashes, falling snowflakes/rain on the background and animated forecast icons all without putting a strain on the system. But such is programming, weigh different options and pick the one that will do the top items on your "Wanted Features" list.
One other GUI tool kit that I'm looking into now is QT: qt-project.org
The only issue there is that (to my knowledge) if I used it the entire plugin system would have to be dropped. Which is not something that I want to do.
An idea that I'm toying with now is to split Add-InWx into 2 programs, the "back-end" one would connect to the stations and support plugins (the Background and Station type) while the second program would be just the GUI.
I'm considering this approach because I would like to eventually create a cell phone app for configuring the back-end and stations. So i would need to write the code to handle setting Station and program configuration from TCP connections anyway. Also by splitting the program like that means that it could run "headless" and on possibly a larger variety of devices. Plus one could setup more than one "display" for viewing station data. An example setup would be a RPI acting as the main "Weather Server" by handling all the Station connections, uploading station data to CWOP, Wunderground etc. Then having any number of "Displays" whether they be PCs, Macs RPIs with attached screens, android tablets or anything else that can run the GUI located in various places around the house, garage and/or workshop.
If it turns out that QT can't do what I would like it to do, then I will probably go back to Winforms for Cross-Platform GUI development. At least then I will be working with something familiar.
So that's where I'm at right now.
I would
really like to see Microsoft release a cross-platform version of WPF. That would really make my day.
Here's a final thought,
I can't be the only one to think this, but it seems like the major difference between Open Source and Proprietary "closed source" software is speed and quality of development. Its like what happens when a project is open sourced (if the project doesn't die) development slows to a crawl and nobody knows where to go with it. So it doesn't go in any defined direction, but just
"Goes".