[Jsystem-general] Development round-up 6-May-04
Brought to you by:
cheekiemunkie,
stan050
From: Chris P. <ch...@k2...> - 2004-05-06 23:07:52
|
I thought I'd start getting some words on development out as it (i) keeps everyone up to speed on what's going on (ii) helps me remember what I've done and (iii) acts as a rolling history of development so far. Given that this is the first one there's quite a bit to get through so first off, let's start with icefire... There are two major improvements on icefire to mention. Firstly, users can now order plugins within individual docklets. It's not as neat as the drag'n'drop idea I've got planned but it's still pretty good. Now when the user right-clicks on a docklet header, instead of having 'Add plugin' and 'Remove plugin' menus, there's a single 'Plugins' menu which expands out as follows: Add > ----------- [plugin] > [plugin] > [plugin] refers to a currently loaded plugin instance within the docklet. You'll notice that each plugin entry is actually a menu parent and moving the mouse over it opens another sub menu as follows: Move up Move down ----------- Remove Obviously 'Move up' is ghosted if the plugin is already at the top of the docklet, as is 'Move down' if it's at the bottom. Like I say, it's not as neat as dragging them but it's certainly a step in the right direction! The next icefire improvement is something that's been possible for ages, it's just that I've not wanted to make it public. Did you know that plugins can also add items to the shelf? :) Yep, you just cast the 'Host' parameter to an MShelf interface and call AddToShelf() as you would from an AddOn. The only problem here is that doing it this way you won't be able to receive notifications from the shelf when the user clicks the icon. You can get around this problem by having the plugin implement the MShelfAddOn interface and then 'start' the plugin as if it was being launched as an AddOn. This, obviously, is a bit too convoluted so I'm working on a neater way to do this. The most obvious use for this would be to allow plugins to 'minimize' themselves to the shelf - imagine the Pulse plugin with a "show in shelf" option which hides the plugin (sets its height to zero), then adds an icon to the shelf. The shelf icon has a 'restore' option which puts it all back. Neat eh? That's icefire done with, now on to more melon news... Firstly, soap's come up with a couple of absolute gems. Not only has he wrapped the pdh api (performance monitoring to you and I) into a melon library so you can enumerate all objects, then all counters and instances for each object, but he's even put together a little dialog that lets the user select the one he/she wants from a list! If that wasn't enough, you can also preview the counter to see what sort of figures it pushes out. :D As if that wasn't enough he's taken the meter and graph objects from the existing plugin and turned them into 'lightweight widgets' which, instead of using a window to display in, they just create a bitmap which can be drawn into an existing window. Expect a new plugin that can display any number of graphs showing any performance counters the user wants very soon! Not to be outdone, I'm busy revamping the controls that appear in the new icefire settings dialog (tabs, sliders and buttons so far) - I've created a new toolbar control and an extended version of the standard ListBox Windows control (allows for variable height items, icons, customisable fonts, etc. There's a few other things going on but I'm gonna save them for another round-up! |