Author Intrusion: Week three retrospective and update

Well, it's at the end of the third week as I work toward Author Intrusion 0.1.0, the first alpha. It wasn't a very productive weekend, mainly because I got my Ouya set up and went on a Father's Day picnic. But, I got some things done. I also finally have something I can show off, so there will be a few screenshots this time.


The goal for the 0.1.0 release are pretty simple:

  • Loading and saving files
  • Auto-correction
  • Spell checking

At this point, almost everything is done. I have one nasty bug left that requires touching a lot of code, but if I can get that done, then everything will be ready for the release and I'll be writing a novella starting a week from today.

A whole lot of ugly

The interface is not pretty, but I wasn't worried about making it pretty. I needed it to handle one thing, which is to get enough functionality to let me write the novella without getting in the way.

Those who have read my blog for a few years might notice the editor widget. It was the one I started a few years ago. I wrote it for this purpose, but never wired it into something. The connection is less than perfect, but it gets the job done.

Spell Checking

I implemented two spell checkers with the initial release. The first uses NHunspell and the LibreOffice dictionaries to give me a pretty solid US English spell-checking. The other is a "local words" dictionary that lets me identify story- and world-specific names that are spelled correctly. Both are naturally implemented as plugins. The Local Words doesn't give suggestions, only identifies words that are spelled correctly. It also has a case-sensitive and case-insensitive lists for various purposes.


Auto-Correction (Immediate Correction)

I use immediate correction fairly often when I write. In Sand and Blood, there is a polite form of language. Instead of writing "Great Waryoni Garèo", I want to type "GWG" and have it expand it out.


Stylesheet Changes

One of the key tenants of this application is keeping the hands on the keyboard. This means everything has to be accessed without needing the mouse. One of the biggest things is changing the style of a line. There needs to be a way of changing the styles and introducing new chapters while typing. At the moment, I've implemented it by letting the user type the name of the style at the beginning of the line and having it change.


File I/O

I have a basic, mostly hard-coded saving system. It does the directory-based saving and loading. It also is the main way I add local words and corrections... by editing the XML directly. As I posted earlier, this system is designed to work with source control, not against it. The XML is pretty consistent and I'm happy with how it is working with check-ins.


This was actually the last thing I worked on, but I'm pretty proud of it. It isn't the greatest logic, but I like making icons for applications. This one has various sizes so it looks good at 16x16 clear up to 512x512. I also did all the various sizes needed for websites, Windows, Macintosh, and Linux. This is a cross-platform application, so I have the first version of the image done.




What doesn't work

I'm having a little trouble with two things.

The first is auto-correction when the replacement text is longer or shorter than the initial word. So, correcting "grey" to "gray" works fine, but having "GWG" to "Great Waryoni Garèo" causes problems. The same thing happens with the block/stylesheet changes via text.

The second is undo/redo logic. Unfortunately, I ended up implementing this in two places (once in the editor and once in the AI logic). These are actually what's causing the first problem with correction, but its a pretty nasty bit of logic to fix. I have a week, but it's going to take that long.