Tuesday, July 31, 2007

Expression Editor

I went ahead and threw together a possible layout for the TPCL Expression Editor in wxGlade today. It was based heavily off of the mockups I did before my project was chosen. A screenshot is shown below:


















I'm also working on a way to make the expression editor useful for those who don't really program. That is to say, it will simply be a matter of pointing, clicking and selecting what you need. And if that's all you do there should be no errors in your code. Code snippets should be available in plenty and pre-constructed blocks of code should provide common functionality quickly and easily. Lofty goals, eh?

Right now I feel like the way I'm going about it is too brute force and inelegant, but I'll get this working in a basic prototype form and if I still feel issues I'll go back to the drawing board and do some more research.

-Fro

GSoC Status Report: 7/23/07 - 7/29/07

Not so much to report on this one. No list of accomplishments. I spend the first part of the week failing to get a context menu working for the tree view. The way wxPython sends its mouse events defies my ability to grasp. I can't prevent the selectionchanging and selectionchanged events from firing before the right click event and so can't veto it. Feh. That frustrated me to no end. So I'll get back to that later from a different angle after I get the TPCL Expression Editor working. Oy. I mean. I even messed with where I bind the handlers and didn't get the results that I wanted. Meh.

I also went ahead and provided support for multiple categories now that tpserver-cpp supports them as well. They're included in the RDE and in the generated code. So that's kind of cool.

The end of the week was spent working on figuring out how to get the StyledTextCtrl to recognize keywords for the TPCL Expression Editor without me having to handle styling events with a lexer of my own. Thankfully I found something that should work.

Now I'm working on getting the TPCL EE up and running. It looks to be a bit bigger of a project than I had imagined before, but I'm confident that I'll make good progress this week.

-Fro

Oh. And since mithro is always prodding me to post new and fabulous screenshots of the RDE, here's a shot of the feedback the RDE gives on errors:

Monday, July 23, 2007

Oy, the commits

I am quite terrible about checking my commits. I'll charge on in and commit something that breaks everything else, simply because I forgot to add a new file. It's getting rather silly now. Every time I create new files I forget to add them to git. Meh. And then I make posts about how awesomely everything works. And it doesn't work when it gets checked out. Feh.

-Fro

GSoC Status Report: 7/9/07 - 7/22/07

This status report will cover two weeks instead of one since I missed the last report.
Things that were accomplished this period are:
  1. Switching to the Elementtree library for XML input and output
  2. Updated the XML persistence file format
  3. Added a global configuration manager which provides a means of tracking recent projects and other handy info like that
  4. Ability to rename objects
  5. Added project validation - All attributes must be filled in and TPCL code must be valid. Syntax is checked for the TPCL code and also all procedures and symbols used are verified as being valid.
  6. Changed how we monitor changes entered in the edit windows - no more funky delayed behaviour
  7. Added the ability to duplicate objects - handy for making a bunch of components that do pretty much the same thing to varying degrees.
On the plate for this coming week is:
  1. The TPCL Expression Editor - fun, fun
  2. Support for more types of game objects.
-Fro

Friday, July 20, 2007

RDE Fully Functional

I'm sure that there are bugs just waiting to be discovered with more rigorous use. And the fact that game objects only support one category at the moment (which is also the case with tpserver-cpp) keeps things from being perfect, the RDE is at a state that I'm quite happy with now. I just went through a quick run of duplicating the Minisec objects from tpserver-cpp in the RDE from scratch. I found a few small bugs along the way, but they were easily fixed. The generated code worked without a hitch.

TPCL syntax checking and code validation is in place so that people don't have to deal with cryptic error messages from the servers when they try to run their code. The RDE even checks to make sure that the project doesn't have any errors before generating code.

I'm can now turn my attention towards developing the TPCL expression editor. That will be quite fun, I think, and also quite challenging, but at least a lot of the work is already in place with the StyledTextCtrl that I'm using to display the TPCL code. It already provides facilities for code completion and the like so extending it to incorporate what will basically be code-snippits-on-steroids shouldn't be too bad.

Woot.

-Fro

Sunday, July 8, 2007

GSoC Status Report 7/2-7/8

This week was pretty uneventful. The Fourth of July ended up taking a lot of time, both before and after, so it turned out to be a bit of a holiday week. The things that I accomplished were:
  1. Fixed deletion behavior. Objects that are deleted now propagate the event to all other objects so that they can remove associations to it.
  2. Changed the method for loading edit panels, a new wxPanel isn't generated every new selection, a pre-existing one is simply filled with new data (thanks mithro)
  3. Refactored the code to separate GUI stuff from the guts. Also separated the various representations of game objects a bit. More work needs to be done on the XML view, but it's better than it was. This was fairly easy to do since there was already a lot of separation and decoupling between different elements of the program.
  4. Started work on adding icons to the tree control - this allows immediate feedback for modification events and allows more expressive visual elements to be incorporated into the RDE.
In the coming week I hope to produce something that someone can simply get started running and see immediate benefits from doing so. This means that I want to finish fleshing out the UI and adding functionality. This includes:
  1. Adding support for other object types, perhaps resources, solar systems and planets.
  2. Doing basic error checking on game objects to ensure that all fields are filled in before allowing code to be generated, I may also incorporate Scheme syntax checking as well if it isn't all too difficult.
  3. Allowing for the renaming of objects (this will likely involve extracting the object save routine from the individual objects and making it a general method)
  4. Finally talking to llnz to get his ideas on the generated code for tpserver-cpp
  5. Getting back to mithro about the interactions between the RDE and tpserver-py
-Fro

Sunday, July 1, 2007

GSoC Status Report: 6/25-7/01

This week went by pretty fast but I was able to get a lot accomplished. Things that were completed include:
  1. New save/load scheme for objects - persistence files are only created after an object is saved, not when the object is created in the RDE.
  2. Made saving objects work correctly, which included implementing primitive modification detection for objects. This will be made more elegant in the future as right now it's a rather simplistic and ugly way of doing things.
  3. Made all of the object editing panels load from XRC files to make it easier to get more complex layouts of widgets and modify the layouts later.
  4. Made it possible to view and edit the TPCL Cost functions associated with the Properties that Components affect.
  5. I imported the Minisec Components and Properties and made it its own project to test code generation with.
  6. Got code generation working for tpserver-cpp. This involved getting tpserver-cpp to compile in the first place, which was somewhat frustrating. But once that was done code generation went along without all too much of a hitch, just a few typos that were easily fixed.
  7. Added the Category object to the RDE and gave it code generation support. This is incomplete at the moment and will require editing of tpserver-cpp to provide support for multiple categories on an object.
My plans for the following week are as follows:
  1. Fix performance issues with panels being loaded. Right now processor usage spikes to insane levels. I'm pretty sure this is due to STC's being generated for every panel at every change in object selection, so it won't be too hard to fix.
  2. Adjust code generation so that the code that it can be used by making only one function call.
  3. Work on supporting multiple categories in both the RDE and tpserver-cpp
  4. Whatever else comes up throughout the week. I'm quite satisfied with the progress that I made at this point, with the midterm approaching in one week's time. I'll be looking just to polish things up before moving on to working on a TPCL expression editor.
-Fro