I've been thinking about your suggestions re: the statusbar stuff...
I think what I want to do initially is have SPView provide two "virtual" methods (we'll need to use the GObject vtable for now rather than real virtual methods):
StatusMessageID SPView::postStatusMessage(StatusMessageType type, bool flash, gchar const *message);
void SPView::cancelStatusMessage(StatusMessageID id);
StatusType would be an enum indicating the "style" of the message -- warnings might get a little warning icon next to them, etc...
postStatusMessage returns an id which can be later used to cancel the status message with cancelStatusMessage.
If 'flash' is true, the message is automatically cancelled after a period of time. Cancelling an already cancelled message does no harm.
These two methods will be the building blocks on top of which a "friendlier" (e.g. printf formatting and other amenities) API would be built. But details on that will have to wait for later tonight.
-mental