November 26, 2006

Verbosio progress, 11/26/2006

I'm continuing to build basic functionality for Verbosio, my extensible XML editor project. Remember when I said "Designing an editor is hard", not once, but twice? Well, hard problems just slow me down. They don't stop me. :-)

Right now, the following things work:

  • Opening a XML document.
  • A DOM Inspector-like tree view rendering.
  • Selecting a sequence of nodes in the view.
  • Opening the extensions manager and error console.
  • Context menu and editing menu for undo, redo, cut, copy, paste, delete (the items appear and show enabled/disabled status, that is).
  • XPath Generator from mozilla.org bug 319768 is now temporarily a Verbosio extension.
  • Recompiling IDL interfaces on-the-fly
  • Synchronizing between the source directories in the repository and the object directories where the XULRunner application lives.
  • Undoing and redoing transactions (what the user actually does).

The last is a "maybe", because I haven't got any fully-fleshed-out transactions to do or undo. The first transaction I'm attempting to implement is a delete transaction. In the world of single DOM nodes, a deletion is easy. In the world of a range of nodes (think selected hypertext), it gets more interesting. That is, deleting is easy, but undoing the deletion is more interesting. Especially since there are several possibilities with ranges which I have to consider.

My immediate to-do list for Verbosio looks like:

  • Finish implementing and testing the Delete command for XML documents.
  • Implement a rudimentary Copy command.
  • Implement a Cut command (Copy + Delete).
  • Implement a Paste command.

  • Implement saving and closing documents.
  • Make exiting the application check for unsaved documents.
  • Implement a "Preview mode" viewer for documents.

With luck, I could have the above done in a week. Beyond that, my longer-term to-do list for Verbosio includes:

  • Writing a basic XUL-based SVG editor (or finding one that's already out there and adapting it) for Verbosio.
  • Implementing markup templates into Verbosio itself, and the template generator.
  • Finishing the XBL language pack.
  • Adding chrome editing capabilities.
  • Editing a XUL application or extension as a complete project (what Verbosio calls a "document pack").
  • Creating back-up copies of files in the event of a crash.
  • Properly using the virtual:// protocol I created earlier.

Of the longer-term list, only the first two or three are requirements for a version 0.1 release of Verbosio. At this point, I'm down-scaling my lofty ambitions for the 0.1 release. It'll still be a good little editor if I meet the above targets, just useful enough for developers to start working with. For now, that will be satisfactory.

I don't like "satisfactory". I like "excellent". But after a couple years of slogging through this code and other projects, "satisfactory" will have to do for now.

P.S. I also bought a new MacBook on Friday, to replace the laptop that collapsed a few months ago.

Posted by WeirdAl at November 26, 2006 7:11 PM
Comments

Hmm, you know that the DOMI has code for the stuff on your immediate to-do list? Once I get working on Bug 310370 (maybe this weekend) it will even do the range of nodes that you have been talking about.

I really enjoy my Macbook. I have moved to developing all of my Mozilla work on it alone because windows just seemed clunkier (and builds a lot slower).

Posted by: Shawn Wilsher at November 26, 2006 9:16 PM