GSOC 2009 So Far
As a precursor to the midterm evaluation, Mithro has asked me to write a short summary of what I have done so far in GSOC.
I started with a client that was in pretty bad shape for tp04 support. It was not merged with the new features in the main branch, and the only panel that was even partly working was the systems tree. The starmap didn’t show anything, orders didn’t function, the media panel was broken, and the info panel was missing most of its information.
On the first day, I merged in the changes from the mainline, bringing the tp04 branch back up to date.
Then, I jumped right in and fixed the display of dynamic objects on the starmap, getting them to show in a similar form to the tp03 versions. It looked like this:
I spent some time trying to get a handle on how to look inside dynamic objects, wrestling with determining whether they could move and how to draw them. I created an objectutils function library with functions that were very helpful in this regard, and it has grown during the summer.
Next, I fixed panelPicture. I had to figure out how the new media properties worked, and I didn’t have anything to test with until Llnz was kind enough to add media to the minisec ruleset for me. The downloading code was mostly there, but I had to get the correct URLs, which took some changes in libtpclient-py. Eventually I had a nice media viewer again.
I then added icon support to the systems tree, which was a similar process to the panelPicture changes except without the initial downloading support already in place. Fortunately, I was able to copy code over with some changes to get it working. I had to keep a list of downloading icons, rather than just a single icon, for instance.
I then took a short detour to fix the Resources overlay, which shows pie charts of the available resources in a system. I basically updated the means of determining position and resource amounts, and then I fixed the popup text that explained the visuals.
I also created a new overlay for the Starmap, one to show the self-specified media icons for objects rather than the auto-generated dots and circles of the standard view.
Orders were my next task, and the most in-depth yet. I had to rewrite a large portion of the orders panel, which had used a completely different type of order referencing. It stumped me for a while, but I managed to figure out the format and display the orders properly. I also had to make new panels for certain types of order parameters.
The other main part of fixing the orders panel was enabling multiple order queue support. This involved putting a drop-down box listing the queues, then processing the events, as well as tracking the order queue separately from the object (previously, these had been one and the same).
It all worked out:
To test the orders, I had to get Llnz to help me add a second order queue to planets in minisec. With a few more bug fixes in the server and in libtpclient-py (for timestamps on order modifications, which weren’t being set right), I put that behind me.
But I wasn’t done yet – it was on to panelInfo. My work there has been to re-write the entire panel, replacing the static and out-of-date text display of static parameters with a completely dynamic and extensible display of collapsible panels that can have interactive elements, images, or any other wxWidget inside them. This is nearly complete, and I expect to be done with it in the next couple of days.
I actually went through a few revisions, first just updating the text display, then using a simple tree, but I really like this final incarnation.
Here’s how it looks now:
I’ll leave you with one final screenshot of the entire client, showing as many new features as I can: