12 Aug 2007 RyanPavlik   » (Master)

Spit and Shoepolish

Well, I’ve been working more on the Win32 port of AbiCollab. It’s certainly more rewarding now that it actually basically works, and I’ve gotten it to the point where most of the asserts have been hammered out and the interface is usable, if not ideal. Only one crasher, and one UI blocker - more info later.

However, I’d like to show off some screen shots of the dialogs in their current state. These images are all from the latest SVN build of my own running on Windows 2000.

Accounts Dialog

Accounts Dialog - When you go to Collaboration, Accounts, you’ll see this dialog. You can see I’ve already added an account, and so the appropriate items are available here. Buttons/controls that make no sense given the context are disabled in this and all other dialogs, with one exception.

Add Account dialog

Add Account Dialog - Click the Add button in the Accounts dialog, and you’ll see this. I’ve figured out how to get the fonts fixed, though the appearance of the text boxes and their sizing is still weird. Combining the backend-drawn controls (in the Account Details region) with the rest of the dialog handled in the core has proven to be some of the trickiest problems - this is the only dialog that doesn’t have context-sensitive control enabling, though not for lack of trying. I can’t get the DlgProc for the overall dialog to even receive notifications about the contained controls from the backend, though once I do figure out how to get them in the AddAccount DlgProc, I already have the passthrough and context-sensitive logic implemented in the backend.

Join dialog - No Selection Join dialog - Document Selected Join dialog - Buddy Selected

Three states of the Join dialog - Just to prove it to those who don’t run Windows, here is the Join dialog. It’s available under Collaboration, Available Documents, and lists “Buddies” (right now only the TCP servers we’re connected to) and documents being shared by those buddies (here, “The cha cha slide.abw”). Since there are additional backends that support multiple buddies per connection (like Jabber/XMPP), that’s why the buddy management gadgetry is in here. It will all work, actually, just need a backend to use it. The only “hidden feature” of this dialog is that double-clicking a document on the list will toggle your joined status. Most people will probably just select a document and click join, then close the document window to leave, but this option is available too. (Partially so that I can more easily break things and fix them.)

Now, the one interface blocker:

 Add Account dialog - Bug on Windows XP

Windows XP and its Visual Styles come to smite my Radio Buttons. I’ve tried a variety of control/window styles when creating these (they are created with CreateWindowEx, not with a resource file), tried adding a manifest to the Abi core, AbiCollab, and both, and nothing seems to be helping. This is why those weird (Join) (Serve) labels were redundantly visible in the previous screenshot of this dialog - Windows XP displays STATIC labels just fine, so I’ve added those as a temporary workaround. If anyone has any pointers or information regarding this issue or what I could do to solve it, please comment - I have spent quite a bit of time unsuccessfully trying to squash this bug, and it saddens me that my stuff has to look so ugly on what is probably the primary platform, WIndows XP. (I think it has to do with the same reason the text entries on that dialog are ugly. And, FYI, I’d prefer not to just move the label out of the Radio Button control since that breaks some important accessibility bits, though I might do it for a release if I can’t figure it out by then.)

The other issue is the one crasher bug - you can’t disconnect from an account or delete an account. I’ve traced through that code, and it seems to be destroying the account fine and works until I choose “continue”, but the backtrace is all weird, and Marc (my mentor) suspects stack corruption. Again, any insight is beneficial, though I think this is probably going to be my own dragon to slay, since it’s a lot more specialized of a problem.

If you’d like to try it for yourself, get a nightly build from my web site (it’s in the Tools plugins, you also need to get the latest 2.5.x core from the nightly build) and give it a shot! Please file bugs if you find any.

Keep on hacking, ants!

Syndicated 2007-08-12 19:29:52 from code art life - Ryan Pavlik on ClearDefinition

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!