Topic: GUI is almost done
Hm. The GUI code is almost done. All the major pieces are in place (aside from Cut & Paste, docking, fancy window animations, etc. but I figure I can get those in later since they aren't important to the meat of the project). All of the controls work well, and can be deserialized from XML files. There are also two events (ButtonClick and ButtonSelect) to which actions can be attached directly from the XML file. There are only three actions at present: Close, Select, and SetPicture, but that's okay because anything past that should really be done in code. Tomorrow I'm going to put the last few tweaks in and make the ListBox more efficient (at present it would get slow if it had a couple thousand items), and after that I'll be having a look at the network code I wrote a while ago, to see whether I should keep it or write something nicer.
About the XML deserialization, the encoding the program expects is UTF-8 (no big surprise), and that's also the encoding the language files use now. Unlike the old Faldon client which had a custom binary file for languages, the new format is the same as CommonCode.Object's. So it looks like:
<?xml version="1.0" encoding="utf-8"?>
<Object Parent="Gui/Languages/English (US).xml">
<String Key="whatever text key" Value="the translation"/>
All language files will (or should) have English (US).xml as the root, that way any strings with no translation will get their text from the English file. Anyhow that supports Unicode and will make it very easy for people to make translations. It also supports (by setting Key="@file-alias:filename" and Value to the new file name) aliasing of text files which are loaded into text boxes. So that'll let us support language-specific tutorial files/help.
FWIW, right now, not counting blank lines or comments, the CommonCode solution checks in at 4983 lines, Illusory.Images at 7601, Illusory.SdlDriver at 1049, and Illusory.Gui which is now almost finished checks in at 5986 lines of code. It's pointless, but to me it's interesting to see that the GUI was in some ways a smaller project than the image library. So thus far the Faldon rewrite is 19619 lines of code long (24996 if you count blank lines and comments). Which is a lot but the old client was much more and this is cleaner and more featureful, so...