LiteStep Developer Journal Downloads News Archive Home Page

Contact me at :

check out my sponsor!

03 June 2000

OK, the Popups actually seem to be doing fine this time around :-) Though there is some more cleaning up to do, I decided to start another project before that. The next project on my list was actually converting DS SysVWM to the new GUI configuration format but as is usual with me, I took a detour again <vbg>

Recently I've been quite annoyed by the fact that I lose systray icons whenever I quit from DarkStep. Since I do quite a bit of development on a daily basis, I also do a lot of quitting (or rather crashing out of DS due to some failed module setting <vbg>) from DarkStep. Thus, I decided to push forward another one of the items on my to-do list: namely, the butchering of Mike Lin's TraySaver code :-)

Now those of you who are long-time LiteStep users may remember that Mike Lin at one time did some work on the LiteStep core - adding support for his TraySaver program which actually restores your system tray icons after a shell crash. Unfortunately, Mike Lin moved on with his TraySaver program and support for alternative shells was dropped along the way (or at least that's what I was given to understand ...) Recently, Mike announced that he was not going to continue development on TraySaver and released the source code to the program.

My initial idea was to do a "lite" version of the program, stripping out all GUI components and simply having the core functionality of maintaining a list of the current system tray icons and restoring those icons if the shell crashed. I also intended the program to be a general purpose one that could be used by the users of any shell - not just DarkStep.

Unfortunately however, some of my intentions could not be fulfilled - at least in this first release of TraySaver Lite. Basically all I did was strip out most of the GUI component code and prune out all unnecessary code though there is still probably a lot of unnecessary stuff in there. The code wasn't compatible with Mike Lin's earlier changes to LiteStep though I was able to figure out how the previous code worked by comparing the current TraySaver code with the changes that were done to the original LiteStep code. The final outcome was that I was able to get the "lite" version of TraySaver working successfully with the DarkStep core.

In order to do this, I had to add two code snippets to DarkStep. One to receive tray notifications from TraySaverLite and pass it on to the loaded system tray module and one to respond to TraySaverLite's request for the current system tray contents for the eventuality when TraySaverLite is loaded after DarkStep is loaded. In the process, I also had to make a very minor change to Maduin's Systray.dll - it was still compliant with the TraySaver changes that had been originally done but it wasn't passing one piece of information that was necessary.

After all these changes, I was actually able to load TraySaverLite, quit from DarkStep and restart DarkStep and have all of my original tray icons back except for one (and even that one is in the tray but simply doesn't show an icon <g>). That's good enough for me :-)

I had originally intended to release TraySaverLite, the changed Systray.dll as well as the new release of DarkStep that complies with the TraySaverLite functionality. But while I was writing this, I realized that that might be too hasty <g> especially as most of you probably don't have the trouble I have with the system tray. So, I decided to let Maduin know about the change that I'd made so that he can update Systray.dll if he desires and publish the rest of the story here so that I can see if anybody wants the TraySaverLite functionality and if any other shell developers are interested in using the same functionality ... This would also give me time to test TraySaverLite under NT - something that I haven't done yet ... Then I guess it can be released to all and sundry :-) What do all of you think?

Oh yeah, incidentally (if any developer is interested <g>) these are the code fragments that I had to add to DarkStep to get it working with TraySaverLite:

if (FindWindow("TraySaver Server", NULL)) {
SendMessage(FindWindow("TraySaver Server", NULL), DM_SENDSYSTRAY, 1, (LPARAM)hDSWnd);

The above code went in just after loading the modules. That was to receive the system tray icon list from TraySaverLite in case DarkStep was actually being reloaded after a crash. The second code fragment went into the windows procedure of the main DarkStep window:

switch (pcd->dwData){
case 1:

The SystrayMessage function above is actually a function that Maduin added to the LiteStep desktop.dll sometime back so that the core system tray would pass on tray item related messages to external system tray modules. Here the function is used to propagate the system tray messages that TraySaverLite sends to the DarkStep core to the actual system tray module. And that's all there is to it!

02 June 2000

I have been receiving so many solid bug reports both on the DarkStep mailing list and on the DS web board that I've managed to get another release done in record time :-) (Well, maybe not record time but it is pretty fast <g>) I actually think the Popup menu definition is more solid now. I currently have a static folder, a dynamic folder, a task folder and a custom folder as well as a couple of items on my Popups and they all seem to work fine. There are quite a few fixes (and if you are interested, you can read about it in the documentation <g>)

I just realized that I didn't try defining a folder within a folder that has an item or two in it - though I did briefly define a folder within a folder but deleted it before recycling to check out dynamic folder deletion ... and that seems to work too. I'm sure that somebody will let me know if folders within folders don't work <vbg>

I am still not certain that the Popups are completely out of the woods and so this will be a beta release too. This will probably be the last beta release for Popup 2.0 and the next release will either be a pre-release or the final release itself (unless there is a major bug discovered in this release ...) So have fun and keep those bug reports rolling in!

31 May 2000

Well, thanks to the really helpful bug reports from people like jugg and Ian (I don't have his e-mail at hand at the moment and so won't repay him by mutilating his last name <g>), I've been able to fix all the reported bugs for the Popup release 2.0 very fast! There probably are a few more bugs in there and so I'm keeping the Popups in beta status.

That reminds me of something else that I've been meaning to clarify for a while. Now those of you on the DS mailing list know that I've already mentioned this and I would like to mention once again that this is not a rant at anybody specific (or even at all those nice people who are kind enough to report bugs to me ...) but simply a clarification of the program status descriptions I use. I use three different status classifcations:

  1. Beta : This means that the program/module works out of the box but different settings and options haven't been tested too much and there probably are quite a few bugs in there :-)
  2. Pre-release : This means that the program has been tested quite a bit and is almost ready for release but I'm not certain that all the bugs have been discovered.
  3. Release : This is the very stable and usable version of the program. I won't say that it is completely bug free as those nasty bugs have a tendency to hide in the darkest corners but all reported bugs have been fixed and I can't find any more :-)

So now you know :-) I thought this clarification might be necessary as some other programs (such as LiteStep <g>) are in beta status but each release is pretty excellent and so people might expect the same from me <vbg>

Oh yeah, one more thing I forgot to mention when I released beta 1, the Popup dll cannot be renamed. If you rename the file, you will not get the GUI configuration dialog when you execute !popupconfig. Incidentally, this release includes updated documentation which reflects this fact. So what are you waiting for? Download it already and let me know of the bugs that you find :-)

28 May 2000

It has been almost two weeks since I last updated this page and did a DarkStep related release. Wow!! Can't believe that so much time has passed by! I have spent almost most of that time coding the new GUI configuration interface for the DS Popups. The work is finally done and in the process I also managed to make several bug fixes, API additions and even a feature addition to DarkStep itself. Since the new Popups need the some of the new additions to DarkStep, I'm releasing DS 0.971 along with the release of the Popups.

So what's new? Where do I begin? <vbg> In the DarkStep core, I managed to fix the minor irritation of systray icons disappearing when a system tray is recycled. This however is a work around and will require the sub-string "tray" being in the name of the system tray module (this is for all of those who are fond of renaming modules ... <vbg>) I've also fixed several API bugs in DSAPI and have added a whole slew of new API calls to support the GUI configuration elements and allow module developers to add GUI configuration support to their modules as well. One of these options, the icon browser dialog, actually uses an undocumented Windows API function and so might not work on all versions of Windows. If you'd like to test it out for me, check the icon browser buttons in the second tab of the Popup configuration dialog and let me know ...

While I was messing around with undocumented function calls, I decided to use two more undocumented calls to add two !bang commands to the DarkStep core - !find and !findcomp. These !bang commands provide a functionality that a lot of users often ask for - the ability to call up the Windows Find Files and Find Computers dialogs. Since I am at home, I've only been able to test these !bangs on Win98SE and they work - with certain exceptions. So what are the exceptions? The first tab on the Find Files dialog - the one where you can select the drive and specify the file name/wild card - is missing (at least on Win98SE). The dialog defaults to searching all drives and you can only search for specific file types - not much use I know ... but I'm hoping that it might behave differently under NT, W2K or even Win95. So let me know ...

As for the Popups, there have been a lot of internal changes to facilitate the GUI configuration but the major change that you'll notice is that there is a new !bang command (!popupconfig) which brings up a configuration dialog for the Popups. This dialog allows you to specify all settings for the Popups and even define your Popup menu via a tree-view. The Popups work out-of-the box with a default menu structure that has two items - your Start Menu and an item to configure the Popups. You can then access the configuration dialog and tweak the settings to your heart's content :-)

I haven't fully tested all the options and combinations of options for the Popups (hence the beta status) but it works perfectly well in the out-of-the-box state. I have done some testing of menu definitions and it worked fine during my tests. There are however, a few things to keep in mind ... The "Item" button inserts a new item to the menu above the currently selected item unless the currently selected item happens to be a folder - then it adds the item in the folder. The same with the "Folder" button. Both buttons create a default item a la the "New Folder" option in Explorer and if you don't press "OK" on the configuration dialog, it won't get saved but will still be on the menu for the duration of the current session. You can always use the "Delete" button to remove any undesirable items or folders.

I think that's about it for the moment. Enjoy and do let me know if you find any bugs or run into problems and I'll have it fixed before the final release. Have fun :-)

Beta Download Links
DS Popups 2.0 B2
Release Download Links
DarkStep 0.971
DS Mirror
DS Dekstop 2.0


DS SysVWM 1.0
DS TaskBar 1.0

DarkStep Message Board

DarkStep Discussion List

DarkStep News List
Nedstat Counter

Site Design by : Lowspirit