HTMLHelp File Created Using:

Web2HTMLHelp 		Free To Download From:
http://www.web2htmlhelp.co.uk

Also Available:
HTMLHelp ePublisher
HTMLHelp eDocument Creation Made Easy

Free To Download From:
http://www.htmlhelp-epublisher.co.uk

[ Back ]


Return to Main

---------------------------------------------------------------------------------

Alarm.dll

---------------------------------------------------------------------------------

  • install:
  • extract to your module directory and load with LoadModule
  • step.rc commands:
  • AlarmYearWithSiecle
  • The year for the date is now with 4 digits.
  • You MUST specify this option to use the reminders.
  • The new date format is dd/mm/yyyy
  • AlarmReminderBefore n
  • To activate the alarm n days before the time on LiteStep start.
  • You must specify the 'r' flag to enable this feature on the alarm.
  • AlarmReminderAfter n
  • To activate the alarm n days after the time on LiteStep start.
  • You must specify the 'r' flag to enable this feature on the alarm.
  • AlarmReminderEveryMinute n
  • To activate the alarm every n minutes between AlarmReminderBefore and AlarmReminderAfter.
  • AlarmNoUSTime
  • Range for hour is 0 to 23 instead of 0 to 12 (with AM/PM).
  • *Alarm - execute the command at the time/date
  • *Alarm time [date] [mode] [flags] command [args]
  • - time: time in format hh:mm with hh from 0 to 12 and AM or PM after.
  • if AlarmNoUSTime is define, hh if from 0 to 23, without AM/PM.
  • - date: (optional) set a date for the alarm. format: dd/mm/yy
  • - mode: (optional) can be everyday, weekly, monthly, yearly or once.
  • By default, mode is everyday.
  • If a date is specify, the default mode is once.
  • This option is useful if you specify a date, or else... ^_^;
  • - flags: #n : specify a group n
  • d : disable this alarm (enable it with !EnableAlarm)
  • r : enable AlarmReminderBefore and AlarmReminderAfter on this alarm
  • i : enable AlarmReminderEveryMinute on this alarm
  • (create an AlarmInt for you =) )
  • example:
  • *Alarm 1:00AM "C:\program files\winamp\winamp.exe" c:\mp3s\
  • this will execute winamp at 1am
  • *Alarm 20:40 16/02/01 !BirthdayLabelShow
  • this will show my label named BirthdayLabel at 8:40pm the 16/02/01
  • *Alarm 13:00 1/02/01 monthly #2 !msgbox "Scan your hard drives !!!"
  • every month, starting the 1/02/01 at 13:00, this will display a message box.
  • *AlarmInt - will execute a command every however minutes
  • *AlarmInt minutes [flags] command
  • - flags: #n : specify a group n
  • d : disable this alarm (enable it with !EnableAlarm)
  • example:
  • *AlarmInt 5 "C:\4dos\4dos.com"
  • this will execute 4dos every 5 minutes (don't know why you'd want to =)
  • *AlarmInt 15 !msgbox "do your homeworks instead of playing Quake 3 !!!"
  • maybe more useful ^_^;
  • bang commands:
  • !ToggleAlarm [n]- toggles alarms on/off, if n is specify, toggle the group of alarms
  • !DisableAlarm [n] - disables alarms, if n is specify, disable the group of alarms
  • !EnableAlarm [n] - enables the alarms, if n is specify, enable the group of alarms
  • !AlarmStat - shows some status information
  • changes:
  • 1.5 (by Syl):
  • - added reminder script example
  • - fixed a bug with command args
  • - fixed a bug in the !alarmstat box
  • 1.5 (by Syl):
  • - added AlarmReminderBefore, AlarmReminderAfter, AlarmReminderEveryMinute,
  • AlarmYearWithSiecle
  • - added flags to *Alarm (r and i)
  • 1.42 (by Syl):
  • - rewrite of the module in C++ and use new LiteStep interfaces
  • - rewrite of the readme.txt
  • - added date to *Alarm
  • - added weekly, monthly and yearly interpretation of the date
  • - added flags to *Alarm and *AlarmInt (#group, d)
  • - added AlarmNoUSTime
  • - modified !AlarmStat to show more Alarms informations
  • - modified !Toggle/Disable/EnableAlarm to fit with the groups
  • 0.9:
  • - changed version numbers
  • - can have more than 1 alarm now
  • - added alarm interval, this will execute a command every however minutes
  • 1b:
  • - first release.
  • please email me with comments/suggestions/bugs
  • - pod (danielb@vnet.net)
  • http://thunder.prohosting.com/~danielb/
  • - modified by Syl (rouque_s@epita.fr)
  • http://www.epita.fr/~rouque_s/

----------------------------------------------------------------------------------


Alsclock.dll

---------------------------------------------------------------------------------

Analog Litestep Clock

By Ryan Mullin/Whodini <whodini@remorse.org>

Introduction

Whodini's Analog Litestep Clock is a simple module based on LSSDK that is

much like Xclock for X11. I noticed a lot of people wanting an analog clock,

but no one had the time to write one. I knew it was a simple thing to write

as long as you knew the math. So, ho hum, here it is.

What it does

The little lines point to the little timey thingy. For more information on

what an analog watch does, go to the watch counter of your neighborhood

K-Mart and they will gladly explain it to you. The arms and the date are put

over whatever .BMP you tell LiteStep to use.

Installation/Configuration

Unarchive. Put alsclock in litestep's main directory. Copy the

.BMP into your images directory. You would put a line like this in your

step.rc:

*Wharf "Date & Time" chex-clock.bmp @c:\litestep\alsclock.dll

"Date & Time" = name of Wharf.

chex-clock.bmp = name of BMP file in your LiteStep images directory

@c:\litestep\alsclock.dll = name/location of alsclock module.

Those who want wmclock support would do this:

*Wharf "Date & Time" wm_time.bmp @c:\litestep\alsclock.dll

(and of course put wmclock_mode=1 in the modules.ini).

The colors are in what #litestep people like to call "The frenchie

hexc0dez". Instead of the HTML #RGB format, it is instead BGR.

-- configuration out of modules.ini ---

[alsClock]

; Color of clockhands in BGR hex format.

Hour_color=0x42E8FC

Minute_color=0x42E8FC

Second_Color=0x42E8FC

; Color of the DOT in midle of hands.

Dot_Color=0x000000

; Color of Date text.

Date_Color=0xFFFFFF

;Turn off Date and Second hand

No_Date=1

No_Second=1

; Set the refresh rate to 1 second

Refresh_Rate=1000

; WMCLOCK Emmulation Mode

wmclock_mode=0

.BMP information

For the uninformed, there should be a "tick" every 30 degrees of a

clock. When making a clock image, its best to follow that rule so that your

time is accurate. If you have one that you think should be included in

release, do not hesitate to email it to me.

Changes

v1.0

Fixed wrong month in wmclock_mode. Added doubleclick to set time. Released

source.

b4

Fixed "disapearing arm trick" that would happen if you had NO_DATE=1 and

you used a fullscreen app. Added uptime to rightclick. Changed the wmclock

font a bit. (Used DrawText instead of TextOut). Fixed bad month in wmclock

mode. (No one could actually read it before to tell me that the month was

wrong :)). Lots of new tiles.

b3

Arkay writes in double buffering support. Unfortunately none of my usual

testers have gotten back to me wether its actually working. Its ArKay,

of *COURSE* it works.

b2

Using GetLocalTime(); instead of localtime(); because people had lots of

trouble. Stripped the border support. Configurable refresh rate. And

by popular demand a wmclock emmulation mode (what I like to call "ugly

mode"). Just written today, but it should work ok.

NTP code?

I don't know, I find it useless, myself. The Rastas were right

when they said "Time be Time mon, I and I get there when I and I get there."

The fact that your clock was configured using NTP will not satisfy your boss

who's time is based on the Preview Channel and a watch with a cheap synthetic

quartz crystal that drifts its frequency in sudden temperature changes.

Greets for this Project

Treman, Cypher Hex, RK (LOTS OF GREETS FOR ARKAY!), SC, j_edge, Webba,

Floach, LoneRunner, Mr. Holmes, RW, and escaped

----------------------------------------------------------------------------------

Return to Main


AppPath.dll

---------------------------------------------------------------------------------

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

AppPath beta 2

by repugnant

repugnant2k@hotmail.com

ICQ: 1658289

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

-- DESCRIPTION -----------------------------------------------------------------

This module opens your file manager to the current application's installation

folder. Does that make sense? Feel free to send me a better explanation to

include in the readme :)

It also lets you customize the folders it opens, so certain applications open

certain folders (for example I have Opera set up to open my D:\Downloads folder).

This version has been running stable for me, but please report any bugs. AppPath

will only work on WinNT/2K/XP.

-- USAGE -----------------------------------------------------------------------

!AppPathOpen can only be called from a hotkey, because it uses the forground

(current) window to get the path; it will not work from a shortcut, lsbox, etc.

-- CONFIGURATION ---------------------------------------------------------------

; option default

AppPathFileManagerPath "explorer.exe" ; Path to the file manager to use.

AppPathFileManagerParams "/e," ; Extra parameters to use. These

; will be inserted onto the command

; line BEFORE the folder path.

-- CUSTOM PATHS ----------------------------------------------------------------

If you want a particular application to be tied to a special folder you can

use *AppPathCustom like this:

*AppPathCustom ClassOrWindowText FolderToOpen

The first parameter is the class name or the window caption of the application.

The second parameter is the folder you want to open when !AppPathOpen is called.

-- BANGS -----------------------------------------------------------------------

!AppPathOpen

Opens the folder in which the current application is installed (or a the

custom folder if one has been specified).

-- VERSION HISTORY -------------------------------------------------------------

Beta 2 - Fixed resource leak.

Beta 1 - First version.

-- THE FUTURE ------------------------------------------------------------------

Once the bugs are all out, I don't see that there's too much to add to this

module. This module is pretty useful, IMO, and I hope you like it too.

- repugnant


Autorecycle.dll

---------------------------------------------------------------------------------

Autorecycle.dll

A simple module to recycle litestep everytime you save your step.rc or your theme file.

Steps:

1) Unzip to a location of your choice

2) Loadmodule "path to autorecycle\autorecycle.dll"

3) Add any files you wish to watch to your step using the structure:

*Watchfile "$litestepDir$script.rc"

Similarly for any directories with:

*WatchDir "some directory"

Warning: Be sure to include quotes round any paths with spaces

Version History:

0.1 1st release

0.2 Added Theme File support

0.3 Ability to add up to 30 files to watch for changes

fixed Theme File support (wasn't supporting new LsThemeFile setting)

Added Bang Command !AutorecycleToggle as requested

0.4 Added the ablility to prevent an autorecyle by holding down the shift key

Added preliminary support for the new user defined step files eg. step2.rc.

It will take settings from the new step, but you need to add the new step to

your *watchfile list

0.5 Added The ability to watch a directory's contents for changes

Added setting to ignore the step.rc file, *NoStep

This is to allow greater support for the new builds.

Fixed the email address in the readme (sorry about that)

Fixed a potential problem with complicated self-altering scripting

Some code streamlining (Many thanks to NeXTer for all his help)

0.6 Now Works

1.0 Fixed a bug when there was no themefile (*watchlist was broken)

Added ability to perform a command instead of a recycle

e.g "*watchfile c:\litestep\changes.txt !Execute [!recycle][!Amp_Power][!Amp_Play]"

Removed dimsumesque scripting support

Looking feature complete so probably the final release

Added RCSetting ARDefault this specifies the default action, defaults to !recycle,

example "ARDefault "!Execute [!Amp_power][!Amp_Play]""

NOTE: The Source is available, just email me and I will send it to you

Any Comments and suggestions welcome, direct them to:

Galois@Techie.com

or #litestep on EfNet

Galois


Bang.exe

---------------------------------------------------------------------------------

bang.exe by azathoth 2000

this is just a win32 version of the !.exe program written by maduin (maduin@dasoft.org)....

syntax: bang.exe !about

runs bang commands on a command line prompt...

well, i dunno, tnl wanted it so i wrote it up...

later everyone

azathoth

http://www.intricatechaos.com/ & http://www.ls2k.org/

mailto:azathoth@itnricatechaos.com

icq: 25810657


BangPath.dll

---------------------------------------------------------------------------------

Updated module now uses commands of the form !fileman and not !X fileman like it used to.

Yay!

Entries like the following go into a file called paths.rc in your litestep directory:

*Bang ftp "D:\Other stuff\CuteFTP\Cutftp32.exe"

*Bang fileman explorer.exe

*Bang web "C:\Program Files\Netscape\Communicator\Program\Netscape.exe"

*Bang mp3 "C:\Program Files\Winamp\winamp.exe"

*Bang irc D:\mirc\mirc32.exe

*Bang network explorer ::{208D2C60-3AEA-1069-A2D7-08002B30309D}

*Bang mycomputer explorer ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}

*Bang display control.exe desk.cpl

*Bang controlpanel explorer ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}

Then you can use these new bang commands in step.rc:

LoadModule bangpath.dll ;don't forget this...

...

*Shortcut "" -43 156 m_mail.bmp m_mail_cl.bmp m_mail_cl.bmp #2 !mail

*Shortcut "" -43 175 m_web.bmp m_web_cl.bmp m_web_cl.bmp #2 !web

*Shortcut "" -43 194 m_irc.bmp m_irc_cl.bmp m_irc_cl.bmp #2 !irc

*Popup "My computer" !X mycomp

Hope someone finds this useful.

Source code is a modified version of hotkeys =)

Cheers.

Crank


bbVWM.dll

---------------------------------------------------------------------------------

*********************

* bbvwm.dll v 1.3.7 *

*********************

by pika

_gingerfish_@yahoo.com

http://pika.quadrent.net/

Overview:

---------

As of version 1.3.2, bbvwm.dll is a standalone vwm module in the vein of the

vwm provided with the linux window manager blackbox. It consists of three basic

parts:

The Main display is a bitmap that the module will draw text on top of. The text

consists of two things: the "DeskName" as specified by bbvwmDeskName, followed

by a space and the current desktop number as kept track of by the module

itself. Responds to clicks and executes bbvwmMainCmd.

The Left arrow is a bitmap that only responds to clicks. As of v0.3.0, clicking

with the left mouse button automatically executes !bbvwmLeft and also executes

bbvwmLeftCmd if it is set. Please keep in mind that bbvwm automatically does

this, and it is not necessary to assign !bbvwmLeft to bbvwmLeftCmd. Good use of

bbvwmLeftCmd might be subtracting from an mzscript variable if you need to keep

track of the desktop number the user is on inside mzscript bangs.

The Right arrow is a bitmap that responds in the same manner as the Left arrow,

except that it automatically executes !bbvwmRight and also bbvwmRightCmd if it

is set.

The bang commands !bbvwmRight and !bbvwmLeft, which are, again, automatically

executed when clicking on the right or left arrows respectively, change the

text in the Main display by adding or removing one to the desknumber in the

display, and advances the desktop either to the left or right.

Step Commands:

--------------

bbvwmMain bitmap.bmp

sets the bitmap for the main display.

bbvwmMainCmd "!BangCommand Arguments"

sets the bang command to execute when clicking the main display.

bbvwmLeft bitmap.bmp

sets the bitmap for the left arrow.

bbvwmLeftCmd "!BangCommand"

sets the bang command to execute when clicking the left arrow.

bbvwmRight bitmap.bmp

sets the bitmap for the right arrow.

bbvwmRightCmd "!BangCommand"

sets the bang command to execute when clicking the right arrow.

bbvwmBorder 0

sets the border size for the four sides. Applies to the main display only.

bbvwmBorderLeft 0

sets the left border size

bbvwmBorderTop 0

sets the top border size

bbvwmBorderRight 0

sets the right border size

bbvwmBorderBottom 0

sets the bottom border size.

bbvwmSpacing 0

sets the space put between the first and second bitmap displayed, and the

second and third bitmap displayed.

bbvwmX 0

sets the x-coord of the module

bbvwmY 0

sets the y-coord of the module

bbvwmFont "Arial"

sets the font used to display the deskname and current desk.

bbvwmFontSize 14

sets the font size of the display.

bbvwmFontColor FFFFFF

sets the font color of the display.

bbvwmFontItalic false

sets the font to be displayed in italics if set to true.

bbvwmFontBold false

sets the font to be displayed in bold if set to true.

bbvwmFontShadow false

sets the font to display a shadow if set to true.

bbvwmFontShadowOffset 2

sets the number of pixels the shadow is offset by.

bbvwmFontShadowColor 000000

sets the color value of the shadow.

bbvwmDeskName "desk"

sets the name of desks in the display.

bbvwmDesks 3

sets the number of desks being used.

bbvwmOrder 012

sets the order of display of the bitmaps.

0 = Main display

1 = Left arrow

2 = right arrow

bbvwmOnTop false

sets the module to be on top of other windows if set to true.

bbvwmHidden false

sets the module to be hidden on start if set to true.

bbvwmWrapDesks false

sets bbvwm to wrap desktops, i.e. if you attempt to go left while on

desktop 1, bbvwm will switch to the last desktop, and vice versa.

bbvwmVwmPrefix false

sets bbvwm to use bangs prefixed with "!vwm" as opposed to "!bbvwm"

bbvwmOnDesk1 !alert "desk number 1" "desk"

sets commands to execeute whenever bbvwm switches to specified desk, in

this case desk number 1. follow the same format for every desk number,

e.g.:

bbvwmOnDesk2 !alert "desk number 2" "desk"

*bbvwmFix className

used to "fix" certain windows, such as Photoshop. Without this, Photoshop

tool windows tend to remain visible on all desktops. This (hopefully)

solves this with a line like so:

*bbvwmFix Photoshop

multiple instances may be used. if you have any problems or any windows

that don't fix themselves with this command, please email me about them.

*bbvwmSticky classname

used to make certain windows present on all desktops. bbvwm will ignore

any windows with the classname specified in these commands. multiple

instances may be used. Example:

*bbvwmSticky Winamp v1.x

the winamp window will now never be hidden when switching desktops.

GDI Functions

-------------

bbvwmUseGdi false

forces bbvwm to use the GDI functions that follow. Note - bbvwm will only

use the GDI functions if you set this to true or if any of the specified

bitmaps do not load correctly. It is also all or nothing - that is, if any

one of the bitmaps do not load correctly, none of them will be used and

the window will be displayed using only the GDI functions.

bbvwmColor 989898

sets the background color to be used in the GDI functions

bbvwmLight FFFFFF

sets the highlight color used in the GDI functions

bbvwmDark 000000

sets the shadow color used in the GDI functions

bbvwmArrowColor FFFFFF

sets the arrow color used in the GDI functions

bbvwmArrowWidth 6

sets the width of the arrows. Note - this doesn't really reflect the true

width in pixels of the arrows due to irregularities in the code.

bbvwmArrowHeight 5

sets the height of the arrows. Note - this doesnt really reflect the true

height in pixels of the arrows due to irregularities in the code.

bbvwmMainWidth 70

sets the width of the main display section when using GDI functions

bbvwmLeftWidth 15

sets the width of the left arrow section when using GDI functions

bbvwmRightWidth 15

sets the width of the right arrow section when using GDI functions

Bang Commands:

--------------

!bbvwmDesk N

changes the display to reflect desktop number 'N'.

!bbvwmDeskName "desktop"

changes the deskname displayed.

!bbvwmFont "comic sans ms"

changes the font used for display.

!bbvwmFontSize 10

changes the font size used for display.

!bbvwmHide

hides the module

!bbvwmLeft

backs up the desktop displayed. Called automatically on clicking left

arrow.

!bbvwmMove 10 10

moves the bbvwm module display to specified coordinates. the 'c' flag may

be used in this command to have the coordinates be calculated from the

center of the screen.

!bbvwmRight

advances the desktop displayed. Called automatically on clicking right

arrow.

!bbvwmSetText "click here"

sets the text displayed in the module until left or right arrow is clicked

on.

!bbvwmShow

shows the module

!bbvwmToggle

toggles the visible state of the module

More Info:

----------

This is now a standalone vwm module. You need not load any other vwm module,

unless you just happen to have a fancy to. The bang commands !bbvwmLeft,

!bbvwmRight, and !bbvwmDesk N all now reflect this fact, so it will change the

desktop for you. Keep in mind that !bbvwmLeft and !bbvwmRight are still called

automatically upon clicking the left and right arrow images.

As for the bang commands, please don't get confused when using the

"bbvwmVwmPrefix" step command. When that is false (and it defaults to false)

the bang command titles are exactly as they appear in the readme. If it is set

to true, the bang command "prefix" is changed. For example, the bang command

"!bbvwmMove" would become "!vwmMove" and so on down the list. I've added this

command to try to aid in compatibility for every user. Many people have

personal settings that point to commands such as "!vwmLeft" or "!vwmRight", but

not "!bbvwmLeft" or "!bbvwmRight".

Another thing I'd like to point out has to do with the way bbvwm changes

desktops. A virtual desktop is just that - virtual. Certain other vwm modules

do this by physically moving windows around. What you see as 4 desktops in a

square, is in reality one desktop 4 times the size it normally is. The vwm

module simple navigates around that one large desktop to show you the part of

it you wish to see. Bbvwm, however, does it a different way. What I've decided

to do with this module is to keep listings of all windows open on each

workspace. When you switch to a different desktop, windows from the last

desktop are hidden, and windows on the new desktop are shown. This causes a few

side effects which, while not necessarily bad, should be taken into account.

You'll notice that when you switch to a desktop, if you're also using tasks.dll

or some other tasks module or program, including taskmgr.exe in Windows 2000,

only the windows available to the current desktop are shown. This is very

similar to an option ckVWM has (vwmHideTaskOnSwitch i believe it's called),

except that in bbvwm it's the default behaviour, and there's no way currently

to disable it. In the future I may add an option to disable that, but the truth

of the matter is I'm not entirely sure how to implement it without mucking up

the module. If I do figure out a decent and efficient way, rest assured it will

be an option in future versions.

Be sure to note, though, that you can minimize windows in order to move them to

other desktops. If you minimize a window, it will be available to the desktop

you move to, but it will still be minimized. In this way you can "scroll" to

the desktop you wish the window to be on, and restore it on that desktop. It

will then stay on that desktop until you minimize it and restore it on a

different desktop.

Future Plans:

-------------

Some future features I hope to add include basic gdi functions, such as

background, text, and arrow colours. Along with that, I'm looking into creating

gradient graphics. And, of course, trying to fix any bugs that seem to show up,

so please let me know if you find any.

If you have any ideas as to the function of the module, or any problems with

it, please email me at _gingerfish_@yahoo.com and let me know. I'm always

interested in feedback.

Thanks

------

I'd like to say just a few things about the development process I've been

through. I'd like to firstly say thanks to Nexter, Message, and Killarny for

all the help they've freely given me without getting (too) upset at me. Also a

big thanks to TucknDar, Morph, and Galois for helping me test this thing and

get rid of what bugs seemed to show up. As well, thanks to vwm2 and shortcut2

whose code i studied extensively, and I'd like to say here that I have borrowed

just a bit of code from vwm2. If anyone has any problem with this, please let

me know and I'll remove it immediately.

History:

--------

02-12-2002

-Released. *yay*

02-14-2002

-Fixed the bug where it wouldn't let litestep execute !Shutdown.

-Felt really silly about putting a history section into the readme.

02-18-2002

-Stopped bbvwm from showing up in the task manager list in 2000/XP (i think)

02-26-2002

-Now a functional vwm module in and of itself.

-Added the *bbvwmFix command to help with photoshop and like windows.

-Added the *bbvwmSticky command.

-Added the !bbvwmMove bang command

02-27-2002

-Fixed the problem with applications that minimized to system tray (i think)

03-01-2002

-Added bbvwmOnDeskN commands

-Fixed a bug with windows not hiding correctly on switching desktops.

03-03-2002

-Added ability to move windows by minimizing them and switching desktops. Read

last paragraph of More Info for more info.

03-04-2002

-Fixed bug with "fixed" windows when minimizing and moving to other desktops.

03-05-2002

-Programs that minimize to systray no longer pop back up if you minimize them

and return to the desktop they're on.

03-08-2002

-Added "bbvwmFontShadow", "bbvwmFontShadowOffset", and "bbvwmFontShadowColor"

-Added "bbvwmVwmPrefix"

-Added a "sample.zip" file containing sample bitmaps and step settings

03-11-2002

-Removed the necessity of putting quotes around Main, Left, and RightCmd

settings

-Added primitive GDI Functions to bbvwm. New commands include:

-bbvwmMainWidth specifies width of main display section

-bbvwmLeftWidth specifies width of left arrow section

-bbvwmRightWidth specifies width of right arrow section

-bbvwmHeight specifies height of window

-bbvwmArrowWidth specifies width of arrows

-bbvwmArrowHeight specifies height of arrows

-bbvwmArrowColor specifies color of arrows

-bbvwmColor specifies background color of window

-bbvwmLight specifies highlight color of window

-bbvwmDark specifies shadow color of window

-bbvwmUseGdi forces bbvwm to use GDI settings


Bscript.dll

---------------------------------------------------------------------------------

**********************************************

* Bang scripting module - Version 1.0 readme *

**********************************************

0. Contents

*******************

1. Introduction

2. Installation

3. Reference

4. About

1. Introduction

***********************

First of all, sorry for my bad grammatical errors, I hope you'll understand

this piece!

This module enables You to write bang scripts. Sample use in included in

LSRC - readme.txt.

2. Installation

***********************

1) Unzip bscript.dll

2) Copy the file in Your LiteStep modules path

3) Add lswchanger.dll to the list with modules loaded with

LiteStep in step.rc

4) Create script.rc file with some scripts and put it into your LiteStep

directory. Sample script.rc file is included in this archive

5) Recycle LiteStep

3. Reference

********************

!bscript <script_name> - executes the script

Each script can have !bang and console commands. Each script body has the foloving

format:

*bscript <script_name>

... ; some commands

*end <script_name>

Sample script:

*bscript popup_red

!rc-set PopupGradientTitle 0000FF

!rc-set PopupTitleColor FFFFFF

!rc-set PopupTitleBgColor 000000

!rc-set PopupGradientEntry FF0000

!rc-set PopupEntryColor FFF000

!rc-set PopupEntryBgColor 200000

*end popup_red

4. About

****************

I am Tzvetan Raikov, I am from Bulgaria and now I am study at Sofia university.

To send a bug reports, when you have good ideas, or to contact with me you can use:

e-mail: craikov@hotmail.com

www: http://www.geocities.com/wchangerbg


burnclk.dll

---------------------------------------------------------------------------------

_ _ _ _ _ __ ____ _____ __ ____

//_ //_ //_ __ ////_ _ _ _ _ _ _ _ _ /__\/ __/\ / / _ \ /__\/ __/

/_ // _// _//_ \o ////////////////////// //_// __/\ \/ /||_|| //_// __/

//// \_/ \_// __/o/////____//____//____/o/___/\__/ \__/ \___/o/___/___/

/_/

burning clock v7

~~~~~~~~~~~~~~~~

configurable clock for litestep. used as wharfmodule or desktopmodule.

example:

*Wharf "BurnClock" wharfbackground.bmp @c:\litestep\burnclk.dll

or

LoadModule c:\litestep\burnclk.dll

configuration example is in 'steprc' file.

append it to your step.rc and modify it.

the transparent color of the bitmap is rgb(255,0,255) or #FF00FF! check? ok!

have fun, murphy.

bang-commands

~~~~~~~~~~~~~

!ShowFire [animated]

use this command to show the fire. add animated to fade in the fire.

!HideFire

hides the fire. sorry, no fading.

!ToggleFire [animated]

when the fire is visible it hides the fire, otherwise it shows the fire.

add animated to fade in the fire.

!SwitchTime [time] [date] [beat] [unix]

when you parse all params it shows all parts of the clock. when you only

parse time to switchtime it only show you the time, all others will be hidden.

switchtime without params hides all timeparts.

example:

!SwitchTime time date

show only time and date, but hides the beats and the unix-time.

!SwitchTime time date beat

shows all but the unix-time.

warning:

~~~~~~~~

the use of this wharf is your own risk. i don't take any responsbilities...

blaaaaaa blaaaa.... i hate this text... i don't pay anything and so on...

bugs:

~~~~~

i don't know how many are in there...

send bugs and the description to murphy@dev0.de!

future:

~~~~~~~

- bitmap fonts and normal fonts

- switching to core api should reduce size of dll

- analog clock with many options

- analog or digital clock in second wharf!

- eventually other animations like:

- rotating bitmaps

- bouncing balls

- bouncing minidisplay of screen

- user avi-, icon- or bitmap-animation

- self playing tower of hanoi ;-)

features of digital clock:

~~~~~~~~~~~~~~~~~~~~~~~~~~

- displays date, time and internet-beats

- fonts, sizes and colors are configurable

- all things can be disabled

features of analog clock: (near future)

~~~~~~~~~~~~~~~~~~~~~~~~~

- 12 hour and 24 hour clock (one rotation) => like an old swatch

- rotating in both directions (left and right) => only fun!

- rotating in different directions (minutes to left and hours to right and

vice verse)

- setting of 12 or 24 to top and bottom (minutes also) => like my swatch!

history:

~~~~~~~

v7 (2001/06/25)

+ added ability to use current background from desktop as desktopbackground

+ added LM_GETREVID message for !about detailed

v6 (2001/06/25)

+ added loading as desktopmodule.

+ added step.rc-settings: ClkLeft, ClkTop, ClkBackground

pre-5 (1999/04/15)

+ added bangcommands: !ShowFire, !HideFire, !ToggleFire, !SwitchTime

pre-4 (1999/04/14)

+ added unixtime (seconds since 1970/01/01 0:00 GMT+0)

* optimized drawing code. 5% less cpupower use!

pre-3b (1999/04/13)

* really fixed internettime

pre-3 (1999/04/12)

* fixed internettime with daylight-saving-time

- removed ClkGMT specifier

pre-2 (1999/04/11)

* fixed ClkBeatFormat config

+ added leftclick for datetime configuration

+ added ClkGMT specifier

+ added bitmap between flames and text (ClkBitmap)

pre-1 (1999/04/11)

- font, size, color, position configurable

- beat, time and date

- flames

-


ByPassLoad.dll

---------------------------------------------------------------------------------

Name : BYPASSLOAD.DLL

Version : 1.2

Purpose : Provide ability to bypass module loading by holding shift keys

Platform: Litestep load-module

Author : Pavel Vitis, pavel.vitis@seznam.cz

Date : October 01, 2001

· Description ··································································

This module allows to bypass module loading at Litestep startup / recycle by holding

defined shift key(s).

Use:

*bypassload shift_keys module

shift_keys is string of at least one shift key specifier:

L for left Shift

R for right Shift

S for any Shift

C for Ctrl

A for Alt

i.e.:

First load the module:

LoadModule c:\litestep\bypassload.dll

Then use following command for optional module loading:

*bypassload SC c:\litestep\hotspots.dll

This will load hotspots.dll module only when Shift or Ctrl keys are not pressed

during Litestep startup / recycling.

You may specify startup delay in milliseconds:

BypassloadDelay 2000

will load your modules 2 seconds after loading BYPASSLOAD.DLL

If you have slow machine and loading of Litestep takes some time, load BYPASSLOAD.DLL

as first module in STEP.RC and set parameter

BypassloadBeep

When BYPASSLOAD.DLL is loaded into memory, the shift-keys will be checked and

you will hear speaker beep, what means you can release key(s) you are holding and

wait for the rest of loading procedure.

You may use:

BypassloadBeep wav_file

to play any wave file, instead of speaker beep.

· Version history ······························································

1.2

+ Newest LS builds fix - timer is HWND based now

1.1

+ Added BypassloadBeep parameter

+ Added BypassloadDelay parameter

* Redesigned loading mechanism

* Added automatic unloading of module after its work is done

* Module ported to C

* Source now available under GPL license

1.0

* Initial release. Tested on Win98 / PureLS

················································································

Pavel Vitis

mailto:pavel.vitis@seznam.cz

http://floach.pimpin.net/pavel/ (main site)

http://lsg.come.to/ (mirror site)


Change.dll

---------------------------------------------------------------------------------

File Editor (change.dll) version 0.2

This file was updated on 10-23-2001 by Two_toNe

This file was originally created on 2000-00-18 by Asperon

**************************************************************

1. Introduction

This modules' purpose is to write changes directly to the

step.rc or any given file. It writes the change and saves it

"behind the scenes". The changes are put into effect when

the user recycles litestep.

**************************************************************

2. Installation

Unzip the change.dll into your litestep dir. Add the line:

loadmodule c:\litestep\change.dll

to your step.rc (change c:\litestep to point at your

litestep dir)

**************************************************************

3. Usage

The syntax for this module is very simple. Each change you

wish to make becomes a bang command. The bang command that

you create can be activated by any of the common ways.

Ie: shortcut, popup, wharf, hotkey, or command line

(lsxcommand).

The bang command looks like this:

!changeline [original line] [new line] [mode] {file to edit}

note: anything enclosed in [] is required, anything enclosed in {} is optional.

Parameters can be enclosed in nothing or any of the following: [], "", {}, ''.

All parameters are currently case sensitive, working on a fix for this.

The mode parameter determines how the changes are made.

currently there are 3 modes:

[normal] - find the line in param1, replace with param2

[substring] - is param1 a substring of the current line, if so, replace

[force] - just like normal mode, but if the line isn't found then append param2 to the end of file

note: comments at the end of a line are ignored and left intact (tab characters are changed to spaces)

an example of this might be:

!changeline [SystrayHidden][;SystrayHidden][normal]

This would look for 'SystrayHidden' in the step.rc and changed it to

';SystrayHidden' if it is found. Nothing would happen if it was not found.

But if we change the bang to:

!changeline [SystrayHidden][;SystrayHidden][force]

If 'SystrayHidden' was not found, it would add ';SystrayHidden' to the end of

the step.rc.

Now say we have an entry in a file called command.rc in the theme path

(variables are reconized) like this:

CommandTextColor 000000 ;color of the text

By calling this bang:

!changeline [CommandTextColor][CommandTextColor 404040][normal][$dirTheme$command.rc]

The line would be changed to:

CommandTextColor 404040 ;color of the text

note: tab characters are changed to spaces, working on this fix too.

Now lets try the substring mode:

Again say we have an entry in a file called command.rc in the theme path

(variables are reconized) like this:

BarTopImage $BarColor$bar_top.bmp|$TrimColor$bar_top.bmp|$ButtonColor$bar_top.bmp ;top bar image

By calling this bang:

!changeline [bar_top][bar_bottom][substring][$dirTheme$test.rc]

The line would be changed to:

BarTopImage $BarColor$bar_bottom.bmp|$TrimColor$bar_bottom.bmp|$ButtonColor$bar_bottom.bmp ;top bar image

But be careful when using substrings, because odd things can happen.

For example, by calling this:

!changeline "is" "isn't" "substring"

would change this:

This is a Test

to this:

Thisn't isn't a Test

The correct way to call this bang would be:

!changeline " is " " isn't " "substring"

With a result of:

This isn't a Test

**************************************************************

4. Updates

0.2 update by Two_toNe

[fix] - recompiled to work with new builds

[fix] - 'force' mode now works correctly

[fix] - 'substring' now only changes the word(s) specified, not the whole line

[new] - ability to specify a file to edit

[new] - now saves comments at the end of a line

0.1 first release by Asperon

**************************************************************

5. Contact

Any desired features, bug reports or just to show your

gratitude, get in contact with me.

You can contact me at:

2tone@inreach.com

The lastest updates for this program can be found at:

http://shellfront.org

**************************************************************

6. Thnx to

Message - for some small issues with my coding

pika` - for testing

**************************************************************

7. Known problems

- Parameters are case sensitive, working on a fix for this

- extra blank lines are sometimes added to the file, not a problem, but may try to fix soon

- in lines edited, tab characters are changed to spaces, also not a problem, but may try to fix soon


Chimes.dll

---------------------------------------------------------------------------------

--------------------------------------------------------------------

Chimes.dll v1.3 09/27/99

--------------------------------------------------------------------

Chimes is Litestep loadmodule. It plays specified WAV file every

15 minutes. You can specify different WAV for hour, half-hour, and

quarter-hour intervals. There can be multiple WAV files in one

chime, each one can be played multiple times (x hour).

This module was written in Delphi 3, using LSDevKit by Murphy.

--------------------------------------------------------------------

Installation

--------------------------------------------------------------------

Simply load at startup as:

LoadModule "c:\litestep\chimes.dll"

--------------------------------------------------------------------

Setup

step.rc commands:

--------------------------------------------------------------------

; Disable chimes at startup

; (default: enabled)

; ChimesStartDisabled

; Specify chime waves directory

; default: empty

ChimesDir "path_to_wave_files"

; Specify which WAV file to play every hour

ChimeHour "[path_to\]filename.wav"

; Specify which WAV file to play at half-hour

ChimeHalf "[path_to\]filename.wav"

; Specify which WAV file to play at quarter after hour

ChimeQuarterAfter "[path_to\]filename.wav"

; Specify which WAV file to play at quarter before hour

ChimeQuarterBefore "[path_to\]filename.wav"

; Bang commands:

;

; Play WAV - You should specify *FULL PATH* here!

; !Chime "path_to\filename.wav"

; Enable chimes

; !ChimesEnable

; Disable chimes

; !ChimesDisable

; Toggle chimes

; !ChimesToggle

; Abort any currently playing chime

; !ChimeAbort

There can be multiple WAV files in one chime, separated by '|' character.

They will be played sequentially:

ChimeHour c:\sounds\hour.wav|c:\sounds\hourbell.wav

Also, if the wave-filename is preceded by '*', it will be played

multiple times (x hour):

ChimeHour c:\sounds\hour.wav|*c:\sounds\hourbell.wav

i.e. at six o'clock it will play hour.wav, then 6x hourbell.wav.

This feature brings greater flexibility to define more complex

chimes.

When the chime is not the last chime in the chain, you can limit

its playing duration by specifying time in 1/100 sec, preceding

the number by '#' character (1..1000):

ChimeHour c:\sounds\hour.wav|*#80c:\sounds\hourbell.wav

i.e. at six o'clock it will play hour.wav, then 5x hourbell.wav

each playing at 80*1/100sec duration, and then 1x hourbell.wav at

full duration. It is useful when the hourbell.wav is for example

some "tower bell" sound, and has very long sustain. This sustain

should be heard at the last bell strike only.

If you specify longer limit than the real wave duration is,

it will produce gap after the wave has been played.

If you wish to specify this limit and your wave filename begins

with number(s), specify the limit as four digit number, preceded

by zeros, as needed:

ChimeHour c:\sounds\hour.wav|*#0080101hourbell.wav

It will play 101hourbell.wav with 80*1/100 second duration limit.

--------------------------------------------------------------------

History

--------------------------------------------------------------------

v1.3 09/27/99

+ Added optional "ChimesDir" parameter to aid shorter chimes

definitions

+ Added option to limit/extent playing-duration for multiple chimes

+ Added bang !ChimeAbort to abort (mute) currently played chime

(twelve bell strikes at 12:00 is sometimes too much for your

ears, especially at night, playing your favorite game or doing

some litestep-module coding :)

v1.2 09/16/99

+ Added separate chimes for quarter intervals

- Removed 'Multiple chimes' switch - replaced by '*' prefix

* Changed chime format - multiple waves, multiple playing

* Optimizations

v1.1 09/06/99

* Lower memory requirements

* Minor bugfixes

+ Added 'Multiple chimes' feature (on request)

v1.0

Initial version

Future plans:

Add option to "sleep" chimes in certain time interval.

Known bugs:

In rare cases, if your audio device is busy, chime won't play

at all. In multiple mode, when Chimes doesn't succeed playing

the first chime at exact hour interval, it aborts remaining

chimes.

====================================================================

author: Pavel Vitis

mailto: pavel.vitis@seznam.cz

www: http://come.to/pavel.vitis/

LSDevKit by Murphy:

http://www.dev0.de/


Chronos.dll

---------------------------------------------------------------------------------

chronos 1.5 04 jul 2000

abstract

chronos is a Litestep loadable module which can display the

current date and time anywhere on the desktop. it supports

background bitmaps, variable font styles, and user-defined date

and time formats.

release notes

chronos 1.2 uses features recently added to lsapi.dll. you must

have a build of lsapi.dll from august 23 or later. the chronos

page on my site [maduin.dasoft.org/chronos] has a zip file with

a recent lsapi.dll. if you do not have the august 23 (or later)

devbuild installed you can just replace your lsapi.dll with the

one supplied in the zip.

installation

copy chronos.dll to your Litestep directory and add a line like

the following to your step.rc file:

LoadModule C:\Litestep\chronos.dll

or to load chronos as a wharf module, use:

*Wharf "Chronos" . @C:\Litestep\chronos.dll

after recycling Litestep, chronos should appear as a desktop

or wharf module with the default settings. however, most likely

you'll want to customize chronos to your liking, which leads us

to...

configuration

you can add commands to your step.rc file to customize chronos

to look and function any way you like. none of these commands

need to be present, in which case appropriate defaults will be

used. a chronos.rc file is also provided that can be used as

template for customizing chronos.

ChronosAlignH (center | left | right)

specifies the horizontal text alignment. the default value

is "center".

ChronosAlignV (center | top | bottom)

specifies the vertical text alignment. the default value is

also "center".

ChronosAlwaysOnTop

if present, chronos will appear above all normal windows;

else chronos remains below all normal windows. this command

has no effect when loaded as a wharf module.

ChronosBitmap <bitmap-file>

specifies a bitmap file to use to paint the background. if

this command is not present a default background based on

system colors is used.

ChronosEdgeScaling <left> <top> <right> <bottom>

sets the edge scaling widths for the bitmap (ChronosBitmap).

edge scaling lets you prevent some pixels at the edge of the

bitmap from being scaled. this is the same effect as used in

the Enlightenment window manager and it also used in one of

my other modules: systray.dll. the default is 0 0 0 0.

ChronosFloat

if present this allows chronos to float above other windows

without being always on top. you can also use !ChronosShow

to bring chronos to the top. if docked to the wharf or if

ChronosAlwaysOnTop is enabled this command has no effect.

ChronosFont <font-name>

sets the name of the font used to display the time and date

text. the default is "Arial".

ChronosFontBold

if present, the date and time font is bold; else the font is

displayed with normal weight.

ChronosFontColor <color>

sets the main color of date and time font. if font shadow is

enabled, the default is white; else the default is black.

ChronosFontItalic

if present, the date and time font is italic; else the font

is displayed normally.

ChronosFontShadow

if present, this command enables font shadow. a second image

of the date and time is painted behind and offset from the

main image in the shadow color; else only a single image of

the text is displayed.

ChronosFontShadowColor <color>

sets the color of the font shadow if shadow is enabled. the

default color is black.

ChronosFontShadowDepth <X> <Y>

sets the depth of the shadow (the distance, in pixels, that

the shadow image is offset from the main image) for both the

horizontal (X) and vertical (Y) directions. the default is

2 2.

ChronosFontSize <N>

sets the size (in points) of the font used to display the

date and time. the default value is 8.

ChronosFormat <format-text>

this command determines how the date and time are formatted

on screen. the format text can contain normal characters and

escape sequences. the escape sequences are formed by a

percent sign (%) followed by a single character. this method

is similar to that used by strftime, though the set of

escape sequences is not exactly the same. the following are

support by chronos:

%% - inserts a single percent sign (%)

%; - inserts a semicolon (;)

%a - abbreviated weekday name

%A - full weekday name

%b - abbreviated month name

%B - full month name

%c - locale-specific date and time

%C - centibeats, hundreths of a beat [%@] (00-99)

%d - day of month (01-31)

%H - hour, 24-hour format (00-23)

%I - hour, 12-hour format (01-12)

%j - day of year (001-366)

%m - month (01-12)

%M - minute (00-59)

%n - inserts a new line

%p - locale-specific AM/PM indicator

%S - second (00-59)

%TZ - sets the timezone used for subsequent commands

%Ud - uptime: days

%UH - uptime: hours (00-23)

%UM - uptime: minutes (00-59)

%US - uptime: seconds (00-59)

%w - day of week (0-6), 0 = Sun, 6 = Sat

%x - locale-specific date

%X - locale-specific time

%y - 2-digit year (00-99)

%Y - full year

%@ - Swatch internet time (000-999)

the %TZ command lets you set the timezone for commands that

follow it. this specifier is unique in that is takes an

offset specification in parenthesis. for example:

%TZ(+4) - 4 hours after local time

%TZ(-2:30) - 2.5 hours before local time

%TZ(GMT) - GMT time

%TZ(GMT-8) - 8 hours before GMT

%TZ() - local time (used to reset timezone)

you can also place a hash mark (#) between the percent sign

and the character to modify how the values are formatted

(eg, "%#I"). for numeric values that have a leading zero,

the hash mark removes it. also the following are special

uses of the hash mark modifier:

%#c - locale-specific date/time with a long date

%#x - locale-specific date in long format

here are some example format strings:

format: "%a, %d %b %y %H:%M:%S"

displays: "Fri, 01 Jan 99 16:56:24"

format: "%B %#d, %Y %I: %I:%M %p"

displays: "January 1, 1999 04:56 PM"

format: "%#I o'clock and %#M minutes %p"

displays: "4 o'clock and 56 minutes PM"

format: "Local: %H:%M, GMT: %TZ(GMT)%H:%M"

displays: "Local: 16:56, GMT: 21:56"

you can also specify multiple formats by seperating them

with semicolons (;). then you can switch formats by right-

clicking chronos or invoking the !ChronosNext command. for

example, "%x;%X" lets you switch between displaying the date

and the time. you can have up to 8 different formats. the

default value for ChronosFormat is "%#I:%M %p".

ChronosGravityX (left | center | right)

sets the default horizontal gravity, which can be "left",

"center" or "right". the default is "left".

gravity determines how chronos is positioned relative to the

X/Y coordinates you give it. the default gravity is left/top

which causes coordinates to be interpreted as the top left

corner of chronos' window. this is the way it works in most

modules. but you can change that behavior by changing the

gravity. for instance if you set the gravity as right/bottom

and X/Y as 128/96 then chronos' window will be positioned

such that the bottom right corner of the window will be at

128/96 rather the top left corner. if you set gravity as

center/center then chronos will be centered at that point.

the reason for gravity is to make it easier to place chronos

where you want it. normally, to place chronos right up

against the bottom right corner of the screen you'd have to:

ChronosX <negative of ChronosWidth>

ChronosY <negative of ChronosHeight>

so if you wanted to change the size of chronos you'll also

have to change the X/Y position. however, using gravity you

can just...

ChronosGravityX right

ChronosGravityY bottom

ChronosX -1

ChronosY -1

and now the X/Y position is independent of the size. there

are also other examples: the command !ChronosMove with no

parameters moves chronos to current mouse cursor position.

without gravity this will always move such that the top

left corner is at the mouse cursor. but by using a gravity

specification in the command such as "!ChronosMove center

center" you can make chronos appear centered at the mouse

cursor position.

ChronosGravityY (top | center | bottom)

set the default vertical gravity. this can be either "top",

"center" or "bottom". the default is "top".

see ChronosGravityX for a discussion of gravity.

ChronosHidden

if present, chronos starts hidden. use the !ChronosShow or

!ChronosToggle commands to make it visible.

ChronosHideOnUnfocus

if present, chronos will hide when it loses focus. you can

then use !ChronosShow or !ChronosToggle to reshow chronos.

ChronosInterval <N>

sets the update interval in milliseconds. the default value

is 1000 (1 second). a larger value reduces the rate at which

chronos updates its display; a smaller value increases it.

in almost all cases the default is fine.

ChronosNoAutoSave

normally if you drag chronos to a new location that location

is saved and chronos returns there on restart/recycle. if

this command is present, that behavior is disabled and

chronos will always appear at the location specified by the

ChronosX and ChronosY commands.

ChronosNoDrag

normally you can drag chronos to a new location on the

screen. if this command is present dragging is disabled.

ChronosOn*Click <command>

ChronosOnLeftClick

ChronosOnLeftDoubleClick

ChronosOnMiddleClick

ChronosOnMiddleDoubleClick

ChronosOnRightClick

ChronosOnRightDoubleClick

these commands let you assign any application or bang

command to a mouse button for chronos. you can also use the

standard LSExecute style ([!foo][!bar]) for multiple actions

for one button. if any of these commands is not present, the

default for the mouse button is used instead. for a left

double click the default is !ChronosControlPanel and for a

right click the default is !ChronosNext. the rest do nothing

by default. using both a click action and a double click

action for a mouse button will not work.

ChronosOnMouseEnter <command>

lets you assign an action to perform whenever the mouse

cursor enters chronos' window.

ChronosOnMouseLeave <command>

lets you assign an action to perform whenever the mouse

cursor leaves chronos' window.

ChronosPadding <left> <top> <right> <bottom>

sets the amount of padding between the text and the edge of

the window. text which extends beyond this padding area is

clipped. the default is 0 0 0 0.

ChronosToolTip <format>

if present this command adds a tooltip for chronos and sets

the format of the tooltip text. the format parameter can have

any of the format specifiers for ChronosFormat except for the

multiformat (;) or new line (%n).

ChronosTransparent

this command enables transparency support. if a bitmap is

also specified (ChronosBitmap) the areas of that bitmap that

are pink (RGB 255 0 255) will be transparent (will let the

desktop wallpaper show through). if no bitmap is given, the

entire background will be transparent. currently, this will

not work if loaded as a wharf module.

ChronosX <N>

sets the horizontal position in pixels that chronos starts

at, unless overridden by autosave. the default is 0. this

command has no effect if loaded as a wharf module.

ChronosY <N>

sets the vertical position in pixels that chronos starts at,

unless overriden by autosave. the default is 0. this command

has no effect if loaded as a wharf module.

ChronosWidth <N>

sets the width of the chronos window in pixels. the default

value is 72. this command has no effect if loaded as a wharf

module.

ChronosHeight <N>

sets the height of the chronos window in pixels. the default

value is 24. this command has no effect is loaded as a wharf

module.

bang commands

chronos also defines the following bang commands which can be

called in the usual manner:

!ChronosControlPanel

brings up the Windows time and date control panel applet.

!ChronosHide

hides chronos

!ChronosMove [<gravityX> <gravityY>] [<X> <Y> [<W> <H>]]

moves chronos to the position specified by X and Y and sets

the size to WxH if the parameters are present. if none are

given chronos moves to the current mouse position. the optional

gravity specification overrides the ChronosGravityX/Y settings.

see ChronosGravityX for a discussion of gravity.

!ChronosMoveHome

moves chronos to its home position, that is, the position

specified by ChronosX and ChronosY.

!ChronosNext

switches to the next format if multiple formats have been

specified by ChronosFormat.

!ChronosShow

shows chronos

!ChronosToggle

toggles the show/hide state of chronos

!ChronosAlwaysOnTop

makes chronos always on top; that is, chronos will always remain

above top-level windows.

!ChronosToggleAlwaysOnTop

toggles chronos' always-on-top state.

!ChronosNotAlwaysOnTop

reverses !ChronosAlwaysOnTop, causing chronos to again remain

below all top-level windows.

feedback

if you have a bug report, feature request, or any kind of feed-

back, feel free to email it to me at maduin@dasoft.org. I will

read all the mail I receive, but I don't guarentee I'll reply

to them all.

disclaimer

Copyright (C) 1999-2000, Kevin Schaffer

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES

OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-

INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT

HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,

WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

OTHER DEALINGS IN THE SOFTWARE.

_______________________________________________________________

maduin maduin@dasoft.org


ckDialog.dll

---------------------------------------------------------------------------------

======================

ckDialog 0.1

======================

----------------------

Author: Chao-Kuo Lin

Nick: Chaku

E-mail: chaokuo@iname.com

WWW: http://cklin.cjb.net or http://chaku.ls2k.org

Released Date: 08/17/2001

----------------------

======================

E-mail me any bugs and how you use this module

======================

Before you begin reading this readme, I would like you ask you to

drop me an e-mail @ chaokuo@iname.com about any bugs in this module

or how you are using this module. If the e-mail address doesn't work,

you can always reach me on IRC, efnet, dalnet, openprojects.net,

undernet, you name it(thanks to Nexter) in channels #lshelp and #litestep.

======================

Introduction

======================

This module is aiming for people who want to make modules but don't have the knowledge about

programming or module programmers who do not want to make a gui interface for their module.

So basically what this module does is letting you specify window layout, buttons, listboxes,

and etc. and you can have a fully working dialog box just as if you can do windows programming.

The possibility for this module I believe is endless when used in conjunction with other modules.

The first dialog I did to test was a dialog that let's you enter a line of text,

and when you click on its button, it'll call the litespeak's bang "!Speak" and

speak the text you entered. I think if you use any timer module with this,

you can create animated effect, make your own property sheet dialog, or make your own file manager,

your vwm UI, your own text, your calendar. Other possibilities are....I dont know..you tell me.

Using this module combining with scripting modules, windows scripting host scripts

(JScript, VBScript, and others), and the new shell core Raptor, who needs a module coder anymore?

======================

Mistakes in this readme

======================

I know there are going to be plenty because I was rushing things out.

I hope I didn't omit any features, and typo corrections are always welcome.

I am planning to probably make a HTML version for this and for the

reference.txt

======================

Features

======================

*You can make your own dialog window, and pretty much everything.

*Support callback event handling

*Support variables evaluation(no operations), and built-in variables.

*Support user specified font type, font color, background color

*Many others...

======================

Note about examples

======================

Hopefully I'll be able to make some really useful dialogs and put some

nice examples up on my site @ http://cklin.cjb.net or http://chaku.ls2k.org

with more complex litestep scripting and some windows scripting host scripting.

Of course, you are always welcome to send me what you have.

======================

Before you begin

======================

ALWAYS REMEMBER TO START SMALL, THEN BUILD ON TOP OF THAT!!!!!!

It'll save you time to find out what was wrong in your syntax.

======================

Example

======================

I think the best way to learn how to use or do something is by example, so here it

is.

The following is a very simple example on how I created the LiteSpeak Dialog:

======================================================================

*ckDialog new

*ckDialog id LiteSpeakDialog

*ckDialog title "LiteSpeak Dialog"

*ckDialog size 300 300 300 50

*ckDialog style "wsclipchildren | wsoverlappedwindow"

*ckDialog edit

*ckDialog id speakTextEdit

*ckDialog size 0 2 235 44

*ckDialog xstyle "wsxclientedge"

*ckDialog ~edit

*ckDialog button

*ckDialog id speakButton

*ckDialog title "Speak"

*ckDialog size 240 0 52 23

*ckDialog ~button

*ckDialog ~new

*onckDialogEvent LiteSpeakDialog.speakButton.click "!ckExecEvaluate !Speak %[LiteSpeakDialog.speakTextEdit.title]"

======================================================================

The syntax should be easy to follow and understand. Now I'll explain line by line

what they do.

*ckDialog new

----------------------

*ckDialog is the config name you have to prefix it in everyline in step.rc.

The keyword, "new", tells ckDialog.dll to start a new dialog template.

*ckDialog id LiteSpeakDialog

----------------------

id is an attribute, and it is how this dialog will be referred in the future when

you create a dialog, you give ckdialog.dll this id. It is recommended that you use

one word for the id that is the id name can't have any spaces.

*ckDialog title "LiteSpeak Dialog"

----------------------

Title is another attribute, and since it's for a dialog so in this case the title will

be the window title when you create a dialog from this template. Remember to quote the

title like "LiteSpeak Dialog" if your title is more than one word.

*ckDialog size 300 300 300 50

----------------------

This is the size attribute where you specify the size for your dialog. The four numbers

represent left, top, width, and height. Remember don't quote the four numbers or ckDialog.dll

won't recognize it.

*ckDialog style "wsclipchildren | wsoverlappedwindow"

----------------------

The style attribute allows you to specify window styles, that is, how they look. In this

example, we are creating a window with overlapped window style, and it will clip its

children windows when drawing. It is important that you have all your style quoted if

there are any spaces in between them. And to specify multilple styles, you just separate

differnt styles with "|". So it's like: style "style1 | style2 | style3 | style4".

*ckDialog edit

----------------------

Alright, this line is a little different. In this line we are signaling ckDialog.dll

to create an edit control inside the dialog we are creating. An edit control is like

an edit box where you enter text. It is similar to create other controls like dialog,

button, listbox, combobox, and static.

*ckDialog id speakTextEdit

*ckDialog size 0 2 235 44

*ckDialog xstyle "wsxclientedge"

----------------------

The next two lines are similar to what we did in the first few lines, however the

only difference is that we have an xstyle attribute. What xstyle attribute does

is similar to style, but xstyle gives to some more options to specify to give your

controls' and dialogs' looks. For example, you can put "wsxtoolwindow" and you'll

have a dialog that looks like a toolwindow similar to the photoshop ones. The syntax

for xstyle is similar to style where you can use "|" to separate all the styles you want.

You can also specify a title for edit control, which will be the default text that'll appear

inside the edit box.

*ckDialog ~edit

----------------------

The edit with a ~ in front tells ckDialog.dll that our edit definition is done and we

are about to do something else. It is important that you close a definition like this

or you'll have unexpected results.

*ckDialog button

----------------------

Alright, similar to the edit control, right now we are going to make a button control

so we can click on it and speak the words.

*ckDialog id speakButton

----------------------

We assign the button with id "speakButton"

*ckDialog title "Speak"

----------------------

The button will have the work Speak on it.

*ckDialog size 240 0 52 23

----------------------

This specify the button's size

*ckDialog ~button

----------------------

We are closing the definition for button.

*ckDialog ~new

----------------------

We are closing the definition for our whole dialog template.

The template for this dialog is done, and we can create one whenever we want.

*onckDialogEvent LiteSpeakDialog.speakButton.click "!ckExecEvaluate !Speak %[LiteSpeakDialog.speakTextEdit.title]"

----------------------

This is not part of the dialog template. It's actually an event handling config,

for detailed explaination please check the event handling section below.

Bascically it's placing the bang commang !ckExecEvalute as a handler to be called when the button

speakButton is clicked.

For all the styles you can use and different controls you can have, please

consult with ckDialog_reference.txt

======================

Dialog Template Data Types

======================

Before going to the dialog template syntax, I have to explain some basic data types

and their definition, though they don't seem to be really helpful.

boolean

======================

can be either "true" or "false", somtimes it is expanded beyond true and false to give

more options

text

======================

It has to be quoted if it is more than two words.

Example:

thisistext

"This is text"

123456blah

If you want to include characters suchs as '%', '[', ']', '\', you have to use the escape sequence

similar to C/C++ and many other languages.

Example:

"c:\\litestep\\litestep.exe"

"100\%"

"1000\r\n" <- this would have the same result as in C/C++, the result is

similar to typing 1000 then press "enter", for writing files,

you would get to a new line.

string

======================

String is very much like text except it HAS to start with an alphabet or underscore '_'.

When it contains more than two words, it has to be quoted too, and immediately following the

quote will have to be an alphabet or underscore '_'.

single_word_string

======================

Can't have more than two words and has to start with an alphabet or underscore '_'

ored_string

======================

ored_string is like having several sing_word_string separated by "|", and the whole thing

has to be quoted if there are spaces in between. This is mainly used with styles

Example:

string1|string2|string3

"string1 | string2 | string3"

string1 | string 2 | string3 <- this is incorrect

int

======================

Represents an integer, which can be negative.

unsigned_int

======================

Similar to int, but this can only be positive

hex

======================

Use this for color mostly, and it would represent RGB

Example:

001AFF <- Red: 00 Green: 1A Blue: FF

FFFFFF <- Red: FF Green: FF Blue: FF

control_symbol

======================

control_symbol's are what you use to specify a new control such as edit, button, and etc

in your dialog. You have to remember to close your definition with ~control_symbol.

valid control symbols so far are:

new, dialog, button, edit, listbox, combobox, static

The new cannot appear anywhere inside a dialog template, but has to be in the first and

the last place.

attribute value

======================

An attribute almost always contains a key, value pair where attribute name is the key such

as title, id, size, and the next thing specified is a value separated by space, newline or tab.

Remember if you specify a key, it HAS to be a single_word_string, and you HAVE to have a value or

ckDialog.dll will not be able to recognize what you are doing. Therefore, when you define a variable,

it has to follow this rule

======================

Dialog Template Syntax

======================

The syntax for dialog template is very simple, basically it follows the the rule

below:

======================================================================

control_symbol

attribute1 value

attribute2 value

attribute3 value

attribute4 value

userdataname value

control_symbol

attribute5 value

attribute6 value

attribute7 value

attribute8 value

~control_symbol

~control_symbol

======================================================================

So for a new dialog template, obvious you'll have to have: new and ~new enclosing the dialog's

attributes, title, id, size, style, xstyle and etc. It would look like this:

======================================================================

*ckDialog new

*ckDialog title "window title"

*ckDialog id myDialogID

*ckDialog size 0 0 100 200

*ckDialog style "wsclipchildren | wsoverlappedwindow"

*ckDialog xstyle "wsxclientedge"

*ckDialog font "Comic Sans MS"

*ckDialog fontcolor 0000FF

*ckDialog bgcolor 000000

*ckDialog control_symbol

*ckDialog ...

*ckDialog ~control_symbol

*ckDialog control_symbol

*ckDialog ...

*ckDialog ~control_symbol

*ckDialog ~new

======================================================================

title text

----------------------

The title will be the window title for the dialog, It has to be quoted if it's more than one

word.

id single_word_string

----------------------

The id will be the identifier when you want to creat this dialog or perform action on it. The id

can be anything starting with an alphabet or underscore '_', anything else will not be recognized.

size unsigned_int unsigned_int unsigned_int unsigned_int

----------------------

(size left top width height)

The size would be the dimension for your dialog, in this example, it would be located at the

left top of your screen with width and height of 100, and 200 pixels. Please don't quote the

four unsigned_int together or you'll get unexpected result.

style ored_string

xstyle ored_string

----------------------

You can combine differnt style with "|" but they have to be quoted if there are any

space between them

font text

----------------------

obviously the text here has to be a valid font type on the user's machine.

fontcolor hex

bgcolor hex

----------------------

specify the font color to use with this control, i'm not to sure how much use it

would be for the dialog, but it's useful for edit, buttons, and etc.

For creating other types of control a button for example inside the dialog template we created

above, you would do something like this

======================================================================

*ckDialog new

*ckDialog title "window title"

*ckDialog id myDialogID

*ckDialog size 0 0 100 200

*ckDialog style "wsclipchildren | wsoverlappedwindow"

*ckDialog xstyle "wsxclientedge"

*ckDialog font "Comic Sans MS"

*ckDialog fontcolor 0000FF

*ckDialog bgcolor 000000

*ckDialog button

*ckDialog id myButton

*ckDialog title "Text that appears on my title"

*ckDialog size 10 10 50 30

*ckDialog bgcolor FFFF00

*ckDialog

*ckDialog ~button

*ckDialog ~new

======================================================================

For all the things you can put, the attribute names, control names, styles, xstyles, and

colors please refer to the ckDialog_reference.txt

======================

Event Handler Syntax

======================

Event handling syntax is very easy, basically you just add a config with the following

format:

*onckDialogEvent ID.event "exe or bang command to be executed when the event occurs"

Where the ID has to be specified starting with your dialog template id.

Example ID.eveent:

myDialog.init

myDialog.myButton.click

myDialog.anotherDialogInsidemyDialog.myButton.dblclick

myDialog.anotherdialogInsidemyDialog.yetanotherDialog.myButtoninside3LevelsofDialog.click

The 3rd example give above would have a dialog template similar to:

======================================================================

new

id myDialog

dialog

id anotherdialogInsidemyDialog

dialog

id yetanotherDialog

button

id myButtoninside3LevelsofDialog

~button

~dialog

~dialog

~new

======================================================================

======================

Dialog Creating Bang

======================

!ckCreateDialog dialog_template_id dialog_id

the dialog_template_id would be your id specified in the template, and dialog_id

would be the new id you assigned for the active dialog.

Take the following example:

======================================================================

new

id myDialog

dialog

id anotherdialogInsidemyDialog

dialog

id yetanotherDialog

button

id myButtoninside3LevelsofDialog

~button

~dialog

~dialog

~new

======================================================================

you would use a creation bang:

!ckCreateDialog myDialog activeDialogID

so you would refer to the newly created dialog with id "activeDialogID".

It is ok that you specify the same id for your active dialog_id.

!ckCreateDialog myDialog myDialog

so the bang above should be legal.

======================

Action Bang

======================

!ckAction ID.Action arguments

The way your refer to the id is similar to the way you refer the a particular ID

in the "Event Handler Syntax" section, exception that this time you'll have to specify

the new active dialog id you specified in !ckCreateDialog. If the new active dialog id

is the same as the template id, then there wouldn't be any difference.

Example:

activeDialogID.set "my new title"

activeDialogID.show false

activeDialogID.state disable

activeDialogID.move 10 10

This bang will be very useful when updating your dialog's state such as disabling

an edit box, disabling a button, or hiding or showing differnt child dialogs inside

the dialog to create property sheets effect.

*For all the actions you can do, please refer to the ckDialog_reference.txt

======================

Variables, User Defined Variables &

Variable Altering

Variables Evaluation Bang

======================

%[examplevariable.attribute]

!ckSetVariable ID.attribute value

!ckExecEvaluate Bang_you_want_or_exe_file arguments_for_that_bang_or_exe

Variables

----------------------

Syntax for variables:

%[id.attribute]

Example:

%[myDialog.myListBox.all]

%[myDialog.myListBox.sel]

%[myDialog.myListBox.all(3)]

!ckSetVariable id.attribute

----------------------

The bang command !ckSetVariable allows you to set an attribute of a particular control, however, you

have to keep in mind that some attributes are read-only, such as title, state, size. The only way to

alter those read-only variables would be using the !ckAction bang command.

!ckExecEvaluate "bang command or exe files" arguments

----------------------

Alright, another ability is that you can store user defined variables inside the template

definition, and you can access the built-in variable such as title, and etc.

In the first example in the "Example" section, you saw there was a line specifying this

*onckDialogEvent LiteSpeakDialog.speakButton.click "!ckExecEvaluate !Speak %[LiteSpeakDialog.speakTextEdit.title]"

And by now you should know that it's an event handling config which you specify the button to execute

the bang command "!ckExecEvaluate !Speak %[LiteSpeakDialog.speakTextEdit.title]" when it's clicked.

This bang coammnd, !ckExecEvaluate, in fact will evaluate the the line that comes after it, and translate

any variables specified in it. In this example, the variable %[LiteSpeakDialog.speakTextEdit.title]

would represent the current text inside the edit box. After translating the variable,

!ckExecEvaluate would call the bang command !Speak and supply it with an argument which is the text from our

edit box.

*An important thing to remember is that the arguments you put after the bang command you want to execute.

You'll have to leave them the same way to call the bang, that is you quote what you usually quote and

don't worry about them. What this mean is, take a bang you usually specify in step.rc with its arguments,

or you would type them in lsxcommand, and just add !ckExecEvalute in front of it,

Just replace where you want to replace with the variables and boom you are done.

Take ckHotspots for example, we want to dynamically add a hotspot:

This is what we usually do:

!HotspotAdd 0 0 32 32 "!Bang its_arguments more_arguments" !none

as you see we have to quote the first bang because it contains arguments and ckHotspots will be confused if

it's not quoted and mistaken the arguments for the bang to call when your mouse leaves. Ok, if we want add

a hotspot, but with a user specified bang name, we can just add !ckExeEvalute in front, like this:

!ckExecEvaluate !HotspotAdd 0 0 32 32 "!%[mydialog.txtMyDog.title] its_arguments more_arguments" !none

Easy isn't it?

User Defined Variables

----------------------

Now, if you have payed clsoe attention, you must noticed that you can specify attributes like:

userdataname value

In the dialog template, this means you can specify your own variables stored. The userdataname has

a datatype of single_word_string while value just has the datatype text. (If you can't remember what

they are please refer to the dialog datatype section)

This means that your own variables can be evaluated and set just like any other built-in variables.

*For a list of all the built-in variables please refer to the ckDialog_reference.txt

======================

Installation

======================

just add an entry in your step.rc with the line like this:

LoadModule "C:\LiteStep\ckDialog.dll"

Adjust to the appropriate path where the dll is located.

======================

Step.rc configs

======================

*ckDialog

*onckDialogEvent

please refer to the syntax section above and ckDialog_reference.txt for details.

======================

Bang Commands

======================

!ckAction ID.Action arguments

!ckExecEvaluate !bang arguments to that bang

again, please refer to the sections that discuss about the above bang commands

and ckDialog_reference.txt for details.

======================

Useful Building Tips

======================

Now that you shouhld be fairly familiar with the syntax, I will give you some tip on how

to build a successful dialog.

1. Be clear on what you want to build, is it going to be very complex or simple.

2. Always draw on the paper first what your dialog going to look like and where should

the controls be placed, and how they are going to interact with each other.

3. After drawing, approximate the size and dimension of each control, then you should be

ready to build in your step.rc

4. START SMALL, always start with just a dialog, that is just a new, ~new statement with necessary attributes

such as title and color in between. Then you can add in bits and peices.

5. Double check your template so that you don't have typos or anything, and it is also useful to check the Common

Mistakes section below.

======================

Common Mistakes

======================

*Always remember to close a control or a new statement with its coresponding closing statement

such as ~new and ~dialog.

*You are putting a style inside xstyle attribute or vice version. Or putting a style for button

in a dialog's style.

*When specifying filename, you use single backslash '\' instead of double backslash '\\'

*Some functions might not work if you don't have the appropriate styles or xstyles specified

*You commented out a portion of the template, but since the ;'s are too small that you didn' see them commented out.

This might cause parsing error when you are referring to a control's id that's non-existant.

======================

Error Messages

======================

I'm sorry that the error messages might not be very informative when it encounters parsing

error. I will make sure that the error messages will be more helpful in the future versions.

======================

Useful References

======================

Microsoft Scripting Technology Homepage:

http://msdn.microsoft.com/scripting/default.htm?/scripting/start.htm

The JScript page:

http://msdn.microsoft.com/scripting/jscript/default.htm

The VBScript page:

http://msdn.microsoft.com/scripting/vbscript/default.htm

There are other scripting languages that supports wsh such as

perl, you can also check them out.

Of course any litestep modules especially scripting modules would be very

useful, too.

======================

Future Plans

======================

.I think I forgot to add something such as the ability to check a button's state

.Dynamic control template insertion, either from a line of text or from a file.

.Tab Stop support.

.Inherited attributes.

.Add in some other windows function such as the ability to capture mouse, set timer, and etc,

so for example you can then make windows without title bar and still be able to move it by dragging.

.Icons and bitmaps for buttons, listboxes, comboboxes.

.Add new controls such as treeview, scrollbar, menues, and others.

.Add RevID support for all the active dialog you created through !ckCreateDialog

.Release exe version

======================

Known Bugs

======================

.The color for combo box works to some extent but might not yeild desired effect.

.No RevID in the aboutbox, and probably won't add it.

======================

History

======================

0.1 - 8/15/2001

first release

______________________________________________________________________________

======================

ckDialog Reference

======================

============================================

|

| How to Read this

|

============================================

OK, how to read this? I'm asking that question to myself, too.

Basically after the "Definition" seciton, You'll start finding the

detailed reference for each type of control starting from:

dialog, button, edit, listbox, combobox, static. In that order.

Under each controls you'll find its valid attributes, styles, xstyles,

events, variables, and actions, also in that order. Hope this helps.

I'm planning to convert this into HTML, so that it'll be easier to

navigate.

What I'm asking is that If you want to use certain controls please

read everything in that control's section, because some functions need

or events and/or actions need certain styles in order to work.

============================================

|

| Warning

|

============================================

Sorry, I pretty much copied and pasted a lot of things, so there might

be some mistakes in referencing control types, but it still

too me a lot lot of time, so I didn't get much change proof reading it.

============================================

|

| Simple Data Types

|

============================================

Before going to the dialog template syntax, I have to explain some basic data types

and their definition, though they don't seem to be really helpful.

boolean

======================

can be either "true" or "false", somtimes it is expanded beyond true and false to give

more options

text

======================

It has to be quoted if it is more than two words.

Example:

thisistext

"This is text"

123456blah

If you want to include characters suchs as '%', '[', ']', '\', you have to use the escape sequence

similar to C/C++ and many other languages.

Example:

"c:\\litestep\\litestep.exe"

"100\%"

"1000\r\n" <- this would have the same result as in C/C++, the result is

similar to typing 1000 then press "enter", for writing files,

you would get to a new line.

string

======================

String is very much like text except it HAS to start with an alphabet or underscore '_'.

When it contains more than two words, it has to be quoted too, and immediately following the

quote will have to be an alphabet or underscore '_'.

single_word_string

======================

Can't have more than two words and has to start with an alphabet or underscore '_'

ored_string

======================

ored_string is like having several sing_word_string separated by "|", and the whole thing

has to be quoted if there are spaces in between. This is mainly used with styles

Example:

string1|string2|string3

"string1 | string2 | string3"

string1 | string 2 | string3 <- this is incorrect

int

======================

Represents an integer, which can be negative.

unsigned_int

======================

Similar to int, but this can only be positive

hex

======================

Use this for color mostly, and it would represent RGB

Example:

001AFF <- Red: 00 Green: 1A Blue: FF

FFFFFF <- Red: FF Green: FF Blue: FF

control_symbol

======================

control_symbol's are what you use to specify a new control such as edit, button, and etc

in your dialog. You have to remember to close your definition with ~control_symbol.

valid control symbols so far are:

new, dialog, button, edit, listbox, combobox, static

The new cannot appear anywhere inside a dialog template, but has to be in the first and

the last place.

attribute value

======================

An attribute almost always contains a key, value pair where attribute name is the key such

as title, id, size, and the next thing specified is a value separated by space, newline or tab.

Remember if you specify a key, it HAS to be a single_word_string, and you HAVE to have a value or

ckDialog.dll will not be able to recognize what you are doing. Therefore, when you define a variable,

it has to follow this rule

operation

======================

operation usually consists of a single_word_string, and it's used to distinquish different actions.

============================================

|

| Definitions

|

============================================

Controls

======================

There are six different controls so far and their control symbol are:

dialog, button, edit, listbox, combobox, static

Attributes

======================

Attributes have a key value pair nature, and the keys always have the

datatype of single_word_string, the values are almost always string

except in the case of size attribute which is made up by 4 unsigned_int type.

Events

======================

Events are passive callbacks which are triggered when that event occurs, and

there are differernt events for different type of controls.

Actions

======================

Actions are different actions that are available by each control for you to manipulate

them.

============================================

|

| Dialog

|

============================================

Dialog Template Syntax

======================

dialog

~dialog

It is also created as a top level parent when you specify

new

~new

Attributes

======================

The following attributes are valid for dialogs.

id, title, size, style, xstyle, icon, bgcolor, font, fontcolor

id single_word_string

----------------------

The id assigned for this control

title text

----------------------

The window title the dialog will have when created.

size unsigned_int unsigned_int unsigned_int unsigned_int

----------------------

The size of the dialog, the first two specify its left top coordinate, while

the latter two will specify its width and height.

icon text

----------------------

the text is the path to the icon

bgcolor hex

----------------------

specifies the background color for this dialog

font text

----------------------

the text would specify the font face or the font type you want

fontcolor hex

----------------------

the color for the font.

style ored_string

----------------------

The following is a list of styles that you can apply to dialogs, though

most of them are not limited to dialogs, such as wshidden, wsdisable, wsgroup,

wstabstop, and etc.

wshidden

=-=-=-=-=-=

This style will make your control to appear hidden when created.

wsminimize

=-=-=-=-=-=

The dialog will be minimized upon creation.

wsmaximize

=-=-=-=-=-=

The dialog will be maximized upon creation.

wsdisable

=-=-=-=-=-=

The control will be disabled when first created.

wssizebox

=-=-=-=-=-=

This will let you create a dialog with sizing border, same as wsthickborder style.

wsoverlapped

=-=-=-=-=-=

This style lets you create an overlapped dialog with title bar and border.

wsoverlappedwindow

=-=-=-=-=-=

Combination of wsoverlapped, wscaption, wssysmenu, wsthickborder, wsminimizebox, and wsmaximizebox.

wspopup

=-=-=-=-=-=

Let's you create a popup window

wspopupwindow

=-=-=-=-=-=

Combination of wsborder, wspopup, wssysmenu

wshscroll

=-=-=-=-=-=

Creates a dialog with horizontal scroll bar, though it doesn't have much

use at this time.

wsvscroll

=-=-=-=-=-=

Creats a dialog with vertical scroll bar, although it's not very useful

for dialog control right now.

wsborder

=-=-=-=-=-=

Creates a dialog with thin-lined border

wsthickborder

=-=-=-=-=-=

Creates a dialog with thick border

wsdlgframe

=-=-=-=-=-=

Yes another type of border, but you can't have title bar with this style.

wssysmenu

=-=-=-=-=-=

Adds a sys menu to your dialog.

wscaption

=-=-=-=-=-=

Adds a title bar to your dialog (includes wsborder)

wsminimizebox

=-=-=-=-=-=

Creates a dialog that has a minimize button in the title bar.

(requires wssysmenu)

wsmaximizebox(requires WS_SYSMENU)

=-=-=-=-=-=

Creates a dialog that has a maxmized button in the title bar.

(requires wssysmenu)

wsgroup

=-=-=-=-=-=

Allows your to group controls. The group would have all the controls

starting with the first one that has this style and all the controls

in between until the next control that has this style. You usually

group controls and add wstabstop to the first one to allow you to tab

between different groups, and use arrow keys to navigate in each group.

However, the wstabstop style doesn't current work.

wstabstop (doesn't work)

=-=-=-=-=-=

Allows your to tab between any control that has this style.

wsclipchildren

=-=-=-=-=-=

Exclude the area of the child controls when drawing occurs inside the dialog.

wsclipsiblings

=-=-=-=-=-=

Clip controls when drawing.

xstyles ored_string

----------------------

wsxclientedge

=-=-=-=-=-=

This is a very important xstyle if you want your other controls to look

normal such as edit control. Not much use for dialog.

wsxtopmost

=-=-=-=-=-=

This let's your create dailog with always on top state, sorry, you can't toggle yet.

wsxtoolwindow

=-=-=-=-=-=

This let's you to create dialogs that look like photoshop toolwindows.

wsxappwindow

=-=-=-=-=-=

Forces a toplevel dialog to be in taskbar when its minimized.

wsxmodalframe

=-=-=-=-=-=

Gives you a frame similar to modal dialog.

Events

======================

The following events are available for dialog

init

----------------------

This is sent when dialog is first created. Be careful that at this time

only the dialog is created and not any the controls inside the dialog.

destroy

----------------------

This is sent when dialog is destroyed.

focus

----------------------

This event happens when dialog gains keyboard focus.

blur

----------------------

This event happens when dialog loses keyboard focus.

move

----------------------

This is sent after dialog is moved.

size

----------------------

This is sent after dialog is resized.

ldblclick

----------------------

This is sent when user double clicks the dialog with left button.

lbuttondown

----------------------

This is sent when user press the left button.

lbuttonup

----------------------

This is sent when user release the left button.

rdblclick

----------------------

This is sent when user double clicks the dialog with right button.

rbuttondown

----------------------

This is sent when user press the right button.

rbuttonup

----------------------

This is sent when user release the right button.

Variables

======================

The available read-only variables are:

id, title, size, style, xstyle, icon, bgcolor, font, fontcolor

title: will be the current title instead of the one specified in

the template if the title has changed since creation.

size: will be in the same format you specify in your template,

it too will reflect the new changes.

everything else will not reflect the changes so far.

Actions

======================

Valid actions to do with !ckAction are:

show boolean

----------------------

show follows a boolean to either show or hide the control.

You can also place "close" in place for the boolean, and

it will destroy the window, so no reference will be made to

that window

resize unsigned_int unsigned_int

----------------------

This actually means:

resize width height.

move unsigned_int unsigned_int

----------------------

Moves the control to (unsigned_int, unsigned_int)

state operation boolean

----------------------

The operation can be "enable" or "focus", if it's enable, then the

following boolean means to either enable or disable it. The boolean

has no effect if operation is "focus"

set text

----------------------

The text will equal to the new window title you want to set.

setui icon text

----------------------

The text would equal to the path to the file.

Remember to have double backslash instead of single.

============================================

|

| Button

|

============================================

Dialog Template Syntax

======================

button

~button

Attributes

======================

The following attributes are valid for dialogs.

id, title, size, style, xstyle, bgcolor, bevellight, beveldark, font, fontcolor

id single_word_string

----------------------

The id assigned for this control

title text

----------------------

The text on the button.

size unsigned_int unsigned_int unsigned_int unsigned_int

----------------------

The size of the dialog, the first two specify its left top coordinate, while

the latter two will specify its width and height.

bgcolor hex

----------------------

specifies the background color for this dialog

bevellight hex

----------------------

The light color when drawing the button border

beveldark hex

----------------------

The dark color when drawing the button border

font text

----------------------

the text would specify the font face or the font type you want

fontcolor hex

----------------------

the color for the font.

style ored_string

----------------------

The following is a list of styles that you can apply to buttons.

bsauto3state

=-=-=-=-=-=

Creates a button that looks like a 3 state check-box.

bsautocheckbox

=-=-=-=-=-=

Creates a button that looks like a check-box.

bsautoradiobutton

=-=-=-=-=-=

Creates a button that looks like radio button.

bsdefpushbutton

=-=-=-=-=-=

With this style, the button will be the default push button,

though probably isn't very useful at this time.

bspushbutton

=-=-=-=-=-=

This let's you create a push button. This is the default style.

bspushlike

=-=-=-=-=-=

This let's you to create a button that will sink when you click. And

rise back to normal state when you click again.

bsgroupbox

=-=-=-=-=-=

This style will let you create a group box that you usuallly see on

other people's dialogs with a border square and with a text on the upper

left corner.

bsbottom

=-=-=-=-=-=

This style will bottom-align your text for the button.

bstop

=-=-=-=-=-=

This style will top-align your text for the button.

bscenter

=-=-=-=-=-=

This style will center-align your text for the button.

bsright

=-=-=-=-=-=

This style will right-align your text for the button.

bsvcenter

=-=-=-=-=-=

This style will center-align your text vertically for the button.

bslefttext

=-=-=-=-=-=

Place the text to the left of a radio button or check box.

bsmultiline

=-=-=-=-=-=

The text will wrapp to next line if the current line is not enough

for displaying the text.

bsnotify

=-=-=-=-=-=

If you want to receive double clicks on buttons, specify this to enable

the notification. Warning: this style might slow the button reaction a little.

*Styles from the dialog that possibly work, you should probably experiment

with them

wshidden

=-=-=-=-=-=

This style will make your control to appear hidden when created.

wsdisable

=-=-=-=-=-=

The control will be disabled when first created.

wsborder

=-=-=-=-=-=

Creates a dialog with thin-lined border

wsthickborder

=-=-=-=-=-=

Creates a dialog with thick border

wsdlgframe

=-=-=-=-=-=

Yes another type of border, but you can't have title bar with this style.

wsgroup

=-=-=-=-=-=

Allows your to group controls. The group would have all the controls

starting with the first one that has this style and all the controls

in between until the next control that has this style. You usually

group controls and add wstabstop to the first one to allow you to tab

between different groups, and use arrow keys to navigate in each group.

However, the wstabstop style doesn't current work.

wstabstop (doesn't work)

=-=-=-=-=-=

Allows your to tab between any control that has this style.

xstyle

----------------------

please refer to the xstyle section in dialog

Events

======================

The following events are available for button

(I hope they work as advertised, some might not)

init

----------------------

This is sent when button is first created.

destroy

----------------------

This is sent when button is destroyed.

focus

----------------------

This event happens when button gains keyboard focus.

blur

----------------------

This event happens when button loses keyboard focus.

move

----------------------

This is sent after button is moved.

size

----------------------

This is sent after button is resized.

click

----------------------

This is sent right after the user clicks the button.

dblclick

----------------------

This is sent right after the user double clicks the button.

*you'll need to specify bsnotify for this to work

disable

----------------------

This is sent when the button is disabled

push

----------------------

This is sent when the button is pushed

unpush

----------------------

This is sent when the button is unpushed

Variables

======================

The available read-only variables are:

id, title, size, style, xstyle, bgcolor, bevellight, beveldark, font, fontcolor

title: will be the current text on the button.

everything else will not reflect the changes so far.

Actions

======================

Valid actions to do with !ckAction are:

show boolean

----------------------

show follows a boolean to either show or hide the control.

You can also place "close" in place for the boolean, and

it will destroy the window, so no reference will be made to

that window

resize unsigned_int unsigned_int

----------------------

This actually means:

resize width height.

move unsigned_int unsigned_int

----------------------

Moves the control to (unsigned_int, unsigned_int)

state operation boolean

----------------------

Valid operations are: "enable", "focus", "check", "push"

The enable and focus work similar to the dialog's while push

you also specifies a boolean the make the button pushes down

or up(true = down, false = up). This not only works with push-like

buttons, but also push buttons, the effect is pretty sick.

For check, you would use it with a checkbox or radio button, while

the boolean can be "true", "false", or "dontknow" where the true

will check it, false will uncheck it, dontknow will have a undetermined

state only if your button has a 3state like style.

set text

----------------------

The text will equal to the text on the button

============================================

|

| Edit

|

============================================

Dialog Template Syntax

======================

edit

~edit

Attributes

======================

The following attributes are valid for dialogs.

id, title, size, style, xstyle, bgcolor, font, fontcolor

id single_word_string

----------------------

The id assigned for this control

title text

----------------------

The default text to appear in the edit box.

size unsigned_int unsigned_int unsigned_int unsigned_int

----------------------

The size of the dialog, the first two specify its left top coordinate, while

the latter two will specify its width and height.

bgcolor hex

----------------------

specifies the background color for this edit

font text

----------------------

the text would specify the font face or the font type you want

fontcolor hex

----------------------

the color for the font.

style ored_string

----------------------

The following is a list of styles that you can apply to buttons.

esautohscroll

=-=-=-=-=-=

Automatically scrolls text to the right when the text you type reaches

the end of the visible edit box line.

esautovscroll

=-=-=-=-=-=

Automatically scrolls the text up on page when the user hit enter

on the last line

escenter

=-=-=-=-=-=

Centers text in multiline edit box

esleft

=-=-=-=-=-=

Left-aligns text.

esright

=-=-=-=-=-=

Right-aligns text.

eslowercase

=-=-=-=-=-=

All the characters the user typed will be lower-cased

esuppercase

=-=-=-=-=-=

All the characters the user typed will be upper-cased

esmultiline

=-=-=-=-=-=

Enable the edit box to accept multiple lines of text.

eswantreturn

=-=-=-=-=-=

Specify this so that the user can insert carriage return when hitting the enter

key in a multiline edit box, otherwise hitting the enter key will have the same

effect as pushing the default button.

esnohidesel

=-=-=-=-=-=

With this style, the text selection will be inverted even when the edit

box loses its focus. Normally it would return to normal look when the edit

loses the focus.

esnumber

=-=-=-=-=-=

Allows only numbers to be entered into the edit box.

espassword

=-=-=-=-=-=

Will mask the edit box with '*' so user can safely enters the password.

esreadonly

=-=-=-=-=-=

This will make the edit control read-only so the user can't type anything

in it.

*Styles from the dialog that possibly work, you should probably experiment

with them

wshidden

=-=-=-=-=-=

This style will make your control to appear hidden when created.

wsdisable

=-=-=-=-=-=

The control will be disabled when first created.

wsborder

=-=-=-=-=-=

Creates a dialog with thin-lined border

wsthickborder

=-=-=-=-=-=

Creates a dialog with thick border

wsdlgframe

=-=-=-=-=-=

Yes another type of border, but you can't have title bar with this style.

wsgroup

=-=-=-=-=-=

Allows your to group controls. The group would have all the controls

starting with the first one that has this style and all the controls

in between until the next control that has this style. You usually

group controls and add wstabstop to the first one to allow you to tab

between different groups, and use arrow keys to navigate in each group.

However, the wstabstop style doesn't current work.

wstabstop (doesn't work)

=-=-=-=-=-=

Allows your to tab between any control that has this style.

xstyle

----------------------

please refer to the xstyle section in dialog.

One important note is that remember to put

the wsxclientedge if you aren't specifying

any color. It'll make the edit to look what you usually

see in applications. Or if you want it to look leet,

you can take out that xstyle, and it will look leet.

Events

======================

The following events are available for edit

(I hope they work as advertised, some might not)

init

----------------------

This is sent when edit is first created.

destroy

----------------------

This is sent when edit is destroyed.

focus

----------------------

This event happens when edit gains keyboard focus.

blur

----------------------

This event happens when edit loses keyboard focus.

move

----------------------

This is sent after edit is moved.

size

----------------------

This is sent after edit is resized.

change

----------------------

This is sent after the content of the edit has changed.

Variables

======================

The available read-only variables are:

id, title, text, sel, size, style, xstyle, bgcolor, font, fontcolor

title or text : will be the current text inside the edit control.

sel: will be the text that the user is currently selecting.

everything else will not reflect the changes so far.

Actions

======================

Valid actions to do with !ckAction are:

show boolean

----------------------

show follows a boolean to either show or hide the control.

You can also place "close" in place for the boolean, and

it will destroy the window, so no reference will be made to

that window

resize unsigned_int unsigned_int

----------------------

This actually means:

resize width height.

move unsigned_int unsigned_int

----------------------

Moves the control to (unsigned_int, unsigned_int)

state operation boolean

----------------------

The operation can be "enable" or "focus", if it's enable, then the

following boolean means to either enable or disable it. The boolean

has no effect if operation is "focus"

set text

----------------------

The text will equal to the text inside the edit box

line operation int text

----------------------

Alright, this is something differnt from dialog and button.

The opearation can be: "add", "del", and "overwrite"

while the "int" here represents the line number to be operated on.

The text will be the one that's either added or overwrited.

The different operations are described below:

*Remember the line number is "0-based"

operation "add":

This will allow you to append or insert text into the edit box.

If the int is -1, it will let you append the "text"

you specify into the edit, if it's any other number that means

inserting the text into that line number(on applies in multiline edit).

operation "del":

This let's you to delete lines from the edit box specified by the line

number(starts from 0). If the int is -1, this operation will delete

all the text inside the edit box.

operation "overwrite":

This is similar to add except that it will overwrite the line you specify.

If the int, or line number is -1, it will overwrite the whole thing.

Example:

!ckAction myDialog.myEdit.line add -1 "this text will be appended"

!ckAction myDialog.myEdit.line add 0 "this text will be inserted to the first line"

!ckAction myDialog.myEdit.line overwrite 3 "this text overwrite the fourth line"

!ckAction myDialog.myEdit.del -1

The last one will delete everything in the edit box

============================================

|

| Listbox

|

============================================

Dialog Template Syntax

======================

listbox

~listbox

Attributes

======================

The following attributes are valid for dialogs.

id, title, size, style, xstyle, bgcolor, font, fontcolor

id single_word_string

----------------------

The id assigned for this control

title text

----------------------

The default text to appear in the listbox.

size unsigned_int unsigned_int unsigned_int unsigned_int

----------------------

The size of the listbox, the first two specify its left top coordinate, while

the latter two will specify its width and height.

bgcolor hex

----------------------

specifies the background color for this listbox

font text

----------------------

the text would specify the font face or the font type you want

fontcolor hex

----------------------

the color for the font.

style ored_string

----------------------

The following is a list of styles that you can apply to listbox

lbsdisablenoscroll

=-=-=-=-=-=

Displays a disabled vertical scroll bar when box doesn't have

enough to scroll otherwise the scrollbar will be hidden.

You'll also need to specify wsvscroll to make it work i believe.

lbsextendedsel

=-=-=-=-=-=

The extended selecting method which allows you to use shift key and ctrl key

to select items like you do in file managers.

lbsmultiplesel

=-=-=-=-=-=

Allows multiple selection instead of single selection.

lbssort

=-=-=-=-=-=

This will sort the strings alphabetically

lbsstandard

=-=-=-=-=-=

This will sort strings and you will recieve notification when user

clicks or double clicks on the listbox, it also has borders.

lbsnotify

=-=-=-=-=-=

Set this style if you want to be able to recieve notification when

user clicks or double clicks on the list box.

*Styles from the dialog that possibly work, you should probably experiment

with them

wshidden

=-=-=-=-=-=

This style will make your control to appear hidden when created.

wsdisable

=-=-=-=-=-=

The control will be disabled when first created.

wsborder

=-=-=-=-=-=

Creates a dialog with thin-lined border

wsthickborder

=-=-=-=-=-=

Creates a dialog with thick border

wsdlgframe

=-=-=-=-=-=

Yes another type of border, but you can't have title bar with this style.

wsgroup

=-=-=-=-=-=

Allows your to group controls. The group would have all the controls

starting with the first one that has this style and all the controls

in between until the next control that has this style. You usually

group controls and add wstabstop to the first one to allow you to tab

between different groups, and use arrow keys to navigate in each group.

However, the wstabstop style doesn't current work.

wstabstop (doesn't work)

=-=-=-=-=-=

Allows your to tab between any control that has this style.

xstyle

----------------------

please refer to the xstyle section in dialog.

Events

======================

The following events are available for edit

(I hope they work as advertised, some might not)

init

----------------------

This is sent when edit is first created.

destroy

----------------------

This is sent when edit is destroyed.

focus

----------------------

This event happens when edit gains keyboard focus.

blur

----------------------

This event happens when edit loses keyboard focus.

move

----------------------

This is sent after edit is moved.

size

----------------------

This is sent after edit is resized.

dblclick

----------------------

This event is fired when the user double clicks on the listbox,

though you'll need to specify the lbsnotify style.

selcancel

----------------------

This is sent after the user cancels a selection in the list box.

change

----------------------

This happens the the selection of hte list is about to change.

Variables

======================

The available read-only variables are:

id, title, sel, selpos, all, size, style, xstyle, bgcolor, font, fontcolor

title: i'm not sure what the title will do.

The three very exciting additions are the "selpos", "sel", and the "all" properties.

Their syntax are a little differernt from others.

They can be used just like normal variable "selpos" "sel" "all" or they work

as arrays like "selpos(1)" "sel(0)", "all(3)" If sel only behaves like arrays

when you specify the multiple selection style.

Anyway, when referring them like arrays with the index number inside the parentheses,

they return the coresponding string in that index. However, when you do not specify

anything, the text they will return will be in the format of:

for "sel" and "pos"

"string1:string2:string3:string4" where the string# are the strings that are either

selected or in the listbox depend whether you use "sel" or "all", the colon ":" is

the separator which you can specify in step.rc with:

ckDialogSeparator ":"

The separator is designed so it would be easier to be parsed with mzscript.

for "selpos" it's pretty much the same thing, except the strings will be replaces

by actual index numbers

If you don't understand what I am talking about try to use the LiteStep built-in

!alert bang to display the result by using something like:

!ckExecEvaluate !alert myDialog.myListBox.sel

!ckExecEvaluate !alert myDialog.myListBox.all

!ckExecEvaluate !alert myDialog.myListBox.all(2)

!ckExecEvaluate !alert myDialog.myListBox.selpos

!ckExecEvaluate !alert myDialog.myListBox.selpos(1)

everything else will not reflect the changes so far.

Actions

======================

Valid actions to do with !ckAction are:

show boolean

----------------------

show follows a boolean to either show or hide the control.

You can also place "close" in place for the boolean, and

it will destroy the window, so no reference will be made to

that window

resize unsigned_int unsigned_int

----------------------

This actually means:

resize width height.

move unsigned_int unsigned_int

----------------------

Moves the control to (unsigned_int, unsigned_int)

state operation boolean

----------------------

The operation can be "enable" or "focus", if it's enable, then the

following boolean means to either enable or disable it. The boolean

has no effect if operation is "focus"

set text

----------------------

The text will equal to the text inside the edit box

line operation int text

----------------------

Alright, this is something differnt from dialog and button.

The opearation can be: "add", "del", and "overwrite"

while the "int" here represents the line number to be operated on.

The text will be the one that's either added or overwrited.

The different operations are described below:

*Remember the line number is "0-based"

operation "add":

This will allow you to append or insert text entry into the listbox.

If the int is -1, it will let you append the list with an item entry of "text"

you specify into the listbox, if it's any other number that means

inserting the text into that line number.

operation "del":

This let's you to delete items from the edit box specified by the line

number(starts from 0). If the int is -1, this operation will delete

all the content inside the listbox

operation "overwrite":

This is similar to add except that it will overwrite the line you specify.

If the int, or line number is -1, it will overwrite the whole thing.

============================================

|

| Combobox

|

============================================

Dialog Template Syntax

======================

combobox

~combobox

Attributes

======================

The following attributes are valid for dialogs.

id, title, size, style, xstyle, selcolor, selfontcolor, bgcolor, font, fontcolor, sel

*selcolor, selfontcolor are new, everything else is pretty much the same as before

*must specify this style, cbownerdraw, if you want the colors to work

id single_word_string

----------------------

The id assigned for this control

title text

----------------------

The default text to appear in the combobox.

size unsigned_int unsigned_int unsigned_int unsigned_int

----------------------

The size of the combobox, the first two specify its left top coordinate, while

the latter two will specify its width and height.

selcolor hex

----------------------

The selcolor would be the highlight color when the user selects an entry.

selfontcolor hex

----------------------

The selfontcolor will be the font color when the user selects an entry,

specify a differnt color than fontcolor to create an inverted effect.

bgcolor hex

----------------------

specifies the background color for this combobox

font text

----------------------

the text would specify the font face or the font type you want

fontcolor hex

----------------------

the color for the font.

style ored_string

----------------------

The following is a list of styles that you can apply to combobox

cbsautohscroll

=-=-=-=-=-=

automatically scrolls the text in the edit control when the user types somethign

at the end of the line.

cbsdisablenoscroll

=-=-=-=-=-=

shows disabled vertical scroll bar in the listbox of the combobox when there are

not enough items it in.

cbsdropdown

=-=-=-=-=-=

similar to cbssimple except that the listbox is not displyed until the user selects

the open icon next to the edit control

cbsdropdownlist

=-=-=-=-=-=

similar to cbsdropdown except the edit box is replaced by a static text control.

cbslowercase

=-=-=-=-=-=

convert everything to lowercase in the edit box.

cbsuppercase

=-=-=-=-=-=

convert everything to uppercase in the edit box.

cbssimple

=-=-=-=-=-=

displays the listbox at all times.

cbssort

=-=-=-=-=-=

sorts the items in the listbox

cbownerdraw

=-=-=-=-=-=

*This must be specified if you want the color you specified to show up

*Styles from the dialog that possibly work, you should probably experiment

with them

wshidden

=-=-=-=-=-=

This style will make your control to appear hidden when created.

wsdisable

=-=-=-=-=-=

The control will be disabled when first created.

wsborder

=-=-=-=-=-=

Creates a dialog with thin-lined border

wsthickborder

=-=-=-=-=-=

Creates a dialog with thick border

wsdlgframe

=-=-=-=-=-=

Yes another type of border, but you can't have title bar with this style.

wsgroup

=-=-=-=-=-=

Allows your to group controls. The group would have all the controls

starting with the first one that has this style and all the controls

in between until the next control that has this style. You usually

group controls and add wstabstop to the first one to allow you to tab

between different groups, and use arrow keys to navigate in each group.

However, the wstabstop style doesn't current work.

wstabstop (doesn't work)

=-=-=-=-=-=

Allows your to tab between any control that has this style.

xstyle

----------------------

please refer to the xstyle section in dialog.

Events

======================

The following events are available for edit

(I hope they work as advertised, some might not)

init

----------------------

This is sent when edit is first created.

destroy

----------------------

This is sent when edit is destroyed.

focus

----------------------

This event happens when edit gains keyboard focus.

blur

----------------------

This event happens when edit loses keyboard focus.

move

----------------------

This is sent after edit is moved.

size

----------------------

This is sent after edit is resized.

dblclick

----------------------

This event is fired when the user double clicks on the listbox,

though you'll need to specify the lbsnotify style.

closeup

----------------------

This is sent when the list box of the combo box is closed.

dropdown

----------------------

This is sent when then list box of the combo box is about to be visible

selchange

----------------------

This is sent when the selection of the listbox of the combobox is about to change

due ot user clicking or arrow key selecting.

selendcancel

----------------------

This is sent when the user selects an item, but then selects another control or close

the dialog.

selendok

----------------------

This is sent when the user successfully selects an item.

selcancel

----------------------

This is sent after the user cancels a selection in the list box.

change

----------------------

This happens when the user has changed the content of the edit box.

(i'm not too sure about this one)

Variables

======================

The available read-only variables are:

id, title, edit, sel, selpos, all, size, style, xstyle, bgcolor, font, fontcolor

title and edit: they should return the text that is inside the edit box

The syntax for sel, and selpos are a little different while the syntax for all

is the same. Since you can only have single selection in combobox, the sel, and

selpos returned will be only one string or one number.

everything else will not reflect the changes so far.

Actions

======================

Valid actions to do with !ckAction are:

show boolean

----------------------

show follows a boolean to either show or hide the control.

You can also place "close" in place for the boolean, and

it will destroy the window, so no reference will be made to

that window

resize unsigned_int unsigned_int

----------------------

This actually means:

resize width height.

move unsigned_int unsigned_int

----------------------

Moves the control to (unsigned_int, unsigned_int)

state operation boolean

----------------------

The operation can be "enable" or "focus", if it's enable, then the

following boolean means to either enable or disable it. The boolean

has no effect if operation is "focus"

set text

----------------------

The text will equal to the text inside the edit box

line operation int text

----------------------

Alright, this is something differnt from dialog and button.

The opearation can be: "add", "del", and "overwrite"

while the "int" here represents the line number to be operated on.

The text will be the one that's either added or overwrited.

The different operations are described below:

*Remember the line number is "0-based"

operation "add":

This will allow you to append or insert text entry into the listbox.

If the int is -1, it will let you append the list with an item entry of "text"

you specify into the listbox, if it's any other number that means

inserting the text into that line number.

operation "del":

This let's you to delete items from the edit box specified by the line

number(starts from 0). If the int is -1, this operation will delete

all the content inside the listbox

operation "overwrite":

This is similar to add except that it will overwrite the line you specify.

If the int, or line number is -1, it will overwrite the whole thing.

======================

|

| Static

|

======================

Dialog Template Syntax

======================

static

~static

The static is very useful as it allows you to either put a text label on your

dialog or you can even put bitmaps in it. This can be utilized to simulate

buttons, as that buttons don't allow you to put bitmaps or icons right now.

Attributes

======================

The following attributes are valid for dialogs.

id, title, size, style, xstyle, icon, bitmap, bgcolor, font, fontcolor

id single_word_string

----------------------

The id assigned for this control

title text

----------------------

The window title the dialog will have when created.

size unsigned_int unsigned_int unsigned_int unsigned_int

----------------------

The size of the dialog, the first two specify its left top coordinate, while

the latter two will specify its width and height.

bitmap text

----------------------

the text would be the path to the bitmap, remember to use double backslash for the path!

bgcolor hex

----------------------

specifies the background color for this dialog

font text

----------------------

the text would specify the font face or the font type you want

fontcolor hex

----------------------

the color for the font.

style ored_string

----------------------

The following is a list of styles that you can apply to dialogs, though

most of them are not limited to dialogs, such as wshidden, wsdisable, wsgroup,

wstabstop, and etc.

*The styles for static control havent' been fully tested

ssbitmap

=-=-=-=-=-=

This style must be specified in order for your bitmap to showup,

and when this is specified, you CANNOT have anything specified for your title.

(I think, though you are welcome to try it at your own risk)

ssblackframe

=-=-=-=-=-=

Specifies the frame to be drawn in the same color as the window frames.

This color is black in the default Windows color scheme.

ssblackrect

=-=-=-=-=-=

Specifies the rectangle to be filled with the current window frame color.

sscenter

=-=-=-=-=-=

Centers the text

sscenterimage

=-=-=-=-=-=

Centerst the image

ssgrayframe

=-=-=-=-=-=

Gives you the same color as the screen's background, the default window background

color is gray.

ssgrayrect

=-=-=-=-=-=

Specifies a rectangle to be filled with that color.

ssleft

=-=-=-=-=-=

Left-aligns the text.

ssleftnowordwrap

=-=-=-=-=-=

Left-algins and no wrapping.

ssnoprefix

=-=-=-=-=-=

Prevent the character '&' being interpreted as accenting the next character

ssright

=-=-=-=-=-=

Right-aligns the text.

sssimple

=-=-=-=-=-=

Specifies a simple rectangle and displays a single line of left-aligned text in the rectangle.

The text line cannot be shortened or altered in any way.

(This style is not recommended if you use colors or anything)

sswhiteframe

=-=-=-=-=-=

Specifies the reactangle to be drawn as the same color as windows backgrounds, the default

window color scheme for this is white.

sswhiterect

=-=-=-=-=-=

Fills the rectangle with the windows background color same as above.

ssnotify

=-=-=-=-=-=

If you want to be able to prcoess click and dblclick events, you'll need to specify this one.

*Styles from the dialog that possibly work, you should probably experiment

with them

wshidden

=-=-=-=-=-=

This style will make your control to appear hidden when created.

wsdisable

=-=-=-=-=-=

The control will be disabled when first created.

wsborder

=-=-=-=-=-=

Creates a dialog with thin-lined border

wsthickborder

=-=-=-=-=-=

Creates a dialog with thick border

wsdlgframe

=-=-=-=-=-=

Yes another type of border, but you can't have title bar with this style.

wsgroup

=-=-=-=-=-=

Allows your to group controls. The group would have all the controls

starting with the first one that has this style and all the controls

in between until the next control that has this style. You usually

group controls and add wstabstop to the first one to allow you to tab

between different groups, and use arrow keys to navigate in each group.

However, the wstabstop style doesn't current work.

wstabstop (doesn't work)

=-=-=-=-=-=

Allows your to tab between any control that has this style.

xstyle

----------------------

please refer to the xstyle section in dialog.

Events

======================

The following events are available for dialog

init

----------------------

This is sent when dialog is first created. Be careful that at this time

only the dialog is created and not any the controls inside the dialog.

destroy

----------------------

This is sent when dialog is destroyed.

focus

----------------------

This event happens when dialog gains keyboard focus.

blur

----------------------

This event happens when dialog loses keyboard focus.

move

----------------------

This is sent after dialog is moved.

size

----------------------

This is sent after dialog is resized.

click

----------------------

This event is triggered when the user clicks on the static control.

You must have the ssnotify style in order for this to work.

dblclick

----------------------

This event is triggered when the user double clicks on the static control.

You must have the ssnotify style in order for this to work.

disable

----------------------

This event is triggered when the static control is disabled.

enable

----------------------

This event is triggered when the static control is enabled.

Variables

======================

The available read-only variables are:

id, title, size, style, xstyle, icon, bgcolor, font, fontcolor

title: will be the current title instead of the one specified in

the template if the title has changed since creation.

size: will be in the same format you specify in your template,

it too will reflect the new changes.

everything else will not reflect the changes so far.

Actions

======================

Valid actions to do with !ckAction are:

show boolean

----------------------

show follows a boolean to either show or hide the control.

You can also place "close" in place for the boolean, and

it will destroy the window, so no reference will be made to

that window

resize unsigned_int unsigned_int

----------------------

This actually means:

resize width height.

move unsigned_int unsigned_int

----------------------

Moves the control to (unsigned_int, unsigned_int)

state operation boolean

----------------------

The operation can be "enable" or "focus", if it's enable, then the

following boolean means to either enable or disable it. The boolean

has no effect if operation is "focus"

set text

----------------------

The text will equal to the new window title you want to set.

setui bitmap text

----------------------

The text would equal to the path to the file of the bitmap.

Remember to have double backslash instead of single.


ckHotspots.dll

---------------------------------------------------------------------------------

============================================================

ckHotspots.dll v2.2

------------------------------------------------------------

Filename: ckHotspots.dll

Author : Chao-Kuo Lin

E-mail : chaokuo@iname.com

Webpage : http://cklin.cjb.net

Purpose :

This is a really simple hotpots module that let you define hotspots

and what to do when your mouse cursor enter or leave the spot

------------------------------------------------------------

Usage:

LoadModule "C:\LiteStep\ckHotspots.dll"

and place your ckMouseHook.dll in your LiteStep.exe and lsapi.dll directoy

Step.rc Settings

||Single Settings||

ckHotspotsTimeOut #

=================

define how frequent the module will check the mouse, the smaller the more frequent, (default: 100)

*update: right now this setting only works if you specify ckHotspotsVersion1Style

ckHotspotsVersion1Style

=================

-By putting this in the step.rc you'll making the module to use the version one mouse trapping

engine. Use it to tweak the module and see which works best for you.

-This style is the default style if you have nothing specified. (recommended for newbies)

ckHotspotsMouseHookStyle

=================

-By having this in step.rc you'll make the module utilize the ckmousehook.dll and will generally have a quicker response

than the default style, however, sometimes it might have some unexpected results. (recommended for intermediate users)

-Remember to place your ckMouseHook.dll in your LiteStep.exe and lsapi.dll directoy for this to work

IHaveAlotOfResourcesAndIReallyWantSomeVeryQuickStyle

=================

-By having this one in step.rc, you are using the ultimate combination of mouse trapping engine. However, as the name

implies, It might require slightly more resource but would be hard to notice. (recommended for advanced users)

||Multiple Settings||

*ckHotspot x y width height [action to perform when mouse enters] [action to perform when mouse leaves] [name] on/off

==================

-name is the new addition so you can have more control over your spots ;-)

just specify a text here, and the spot will be assigned with that name. You'll need

the name to toggle it and stuff. and remember, name is totally OPTIONAL! that means

you assign name only when you want to control them.

-the on/off is for you to specify the spot's initial status. you can activate the spot after the module

is loaded by putting "on" or "true" or "yes" otherwise you can put "off", "false", "no". If you didn't

specify anything, the spot will default to be on or activated.

-x, y, width and height can be negative

-x, y specifies the left top hotspot box

-width and height specifies the width and height for the hotspot box. If you specify either one of them to be 0

the box width or height will span to the whole screen.

-the next two action can be bang commands or a path to a program

Bang Commands:

!HotspotON "name"

!HotspotOFF "name"

!HotspotToggle "name"

===================

Description: these three are pretty self explanatory. The name parameter is the name you assign to the spot in

step.rc. You can turn different spots on and off by doing something like:

!HotspotON "mysexyspot" ; this will turn your sexy spot on.

!HotspotOFF "myGspot" ; this will turn your G spot off so it'll stop functioning until you turn it on again.

If the "name" parameter is not supplied, then all the spots are effected.

!HotspotON to turn on all the spots at once

!HotspotAdd x y width height [action to perform when mouse enters] [action to perform when mouse leaves] [name] on/off

!HotspotRemove "name"

===================

Description: these two bangs allows you to add and remove spots dynamically.

The arguments for HotspotAdd is exactly the same as the *ckHotspot config in step.rc

section. So like:

!HotspotAdd -32 -32 0 0 !VWMRight !none

will add a spot located at -32, -32 and it's width and height are spanned to the rest of the screen.

!HotspotDebug

==================

Description: This bang is for debug purpose only. When you execute this bang, all your spots defintion

will be popped up in message box, so you can check if they are correct or not.

/****************** v2.2 2001/08/03************/

Since mouse hook was causing some problem, and it seems that version 1 style

is best for default style so newbies won't get frustrated, so I have changed the default

style back to the old version 1 style.

Step.rc config

Added

-ckHotspotsMouseHookStyle

Since version 1 style becomes default now, for those who wants version 2 style

can specify this.

-IHaveAlotOfResourcesAndIReallyWantSomeVeryQuickStyle

This is the ultimate style with the combination of version 1 + 2 engine. It should

be pretty self-explanatory if you want this style or not.

Bug fixed

-The problem with not showing popup menus is now fixed

Speical thanks to Pavel Vitis, the author of hotspot.dll, for helping with the bug fix.

/****************** v2.1 2001/07/01************/

Alright, in this version, i separated the mouse hook into it's own dll,

which now runs much much faster and more efficient.

But remember to place it in the root dir with LiteStep.exe and lsapi.dll

or it won't work. You don't need to load ckMouseHook.dll,

hotspots will load it if you didn't specify ckHotspotsVersion1Style.

So this is basically it. BTW, thanks jugg for his suggestion and help. Thanks ;-)

/****************** v2.0 2001/05/28************/

Now second version adds the ability to add and remove spots on the fly and to turn spots ON and OFF, and

you can also toggle them.

Second version also employs a differnt mouse coordinate trapping technique by installing a mouse hook.

I found that it feels a bit slower to use the hook, but if that works best for you then. The only benefit

would be that you get instantaneous hotspot reaction. So i would prefer that you specify ckHotspotsVersion1Style

to make things more efficient.

*warning: YOU DO NOT NEED TO CHANGE ANY CONFIGUARTION FROM VERSION ONE AND IT'LL

STILL WORK! unless of course you want to use the new functionalities.

Step.rc config

Updated

-*ckHotspot x y width height [action to perform when mouse enters] [action to perform when mouse leaves] [name] on/off

>name is the new addition so you can have more control over your spots ;-)

just specify a text here, and the spot will be assigned with that name. You'll need

the name to toggle it and stuff. and remember, name is totally OPTIONAL! that means

you assign name only when you want to control them.

>the on/off is for you to specify the spot's initial status. you can activate the spot after the module

is loaded by putting "on" or "true" or "yes" otherwise you can put "off", "false", "no". If you didn't

specify anything, the spot will default to be on or activated.

-ckHotspotsVersion1Style

>By putting this in the step.rc you'll making the module to use the version one mouse trapping

engine. Use it to tweak the module and see which works best for you.

Bang Commands

!HotspotON "name"

!HotspotOFF "name"

!HotspotToggle "name"

Description: these three are pretty self explanatory. The name parameter is the name you assign to the spot in

step.rc. You can turn different spots on and off by doing something like:

!HotspotON "mysexyspot" ; this will turn your sexy spot on.

!HotspotOFF "myGspot" ; this will turn your G spot off so it'll stop functioning until you turn it on again.

If the "name" parameter is not supplied, then all the spots are effected.

!HotspotON to turn on all the spots at once

!HotspotAdd x y width height [action to perform when mouse enters] [action to perform when mouse leaves] [name] on/off

!HotspotRemove "name"

Description: these two bangs allows you to add and remove spots dynamically.

The arguments for HotspotAdd is exactly the same as the *ckHotspot config in step.rc

section. So like:

!HotspotAdd -32 -32 0 0 !VWMRight !none

will add a spot located at -32, -32 and it's width and height are spanned to the rest of the screen.

!HotspotDebug

Description: This bang is for debug purpose only. When you execute this bang, all your spots defintion

will be popped up in message box, so you can check if they are correct or not.

/****************** v1.0 2000/10/28************/

First release

I coded it up because hotspots.dll doesn't let me click through the spots, and

i just wanted something simple to achieve the autohide feature in some modules

that didn't implement it. This hotspots module is a lot smaller than hotspots.dll

because of its simplicity and thus the speed.

Step.rc config

-ckHotspotsTimeOut #

>define how frequent the module will check the mouse, the smaller the more frequent, (default: 100)

-*ckHotspot x y width height [action to perform when mouse enters] [action to perform when mouse leaves]

>x, y, width and height can be negative

>x, y specifies the left top hotspot box

>width and height specifies the width and height for the hotspot box. If you specify either one of them to be 0

the box width or height will span to the whole screen.

>the next two action can be bang commands or a path to a program

*Important: none of your configurations from your Hotspots module will work because this has nothing

to do with the hotspots module

------------------------------------------------------------

Example Step.rc config (my config):

*ckHotspot -32 -32 0 0 !VWMRight !none ;the box is located at -32, -32 and it's width and height are spanned to the rest of the screen.

*ckHotspot 0 -32 32 0 !VWMLeft !none ;the box is located at 0, -32, and it's height is spanned to the bottom of the screen.

*ckHotspot 0 20 16 800 !QBoxShow !QBoxHide


ckVWM.dll

---------------------------------------------------------------------------------

//============================================================

//ckVWM.dll v1.32 - a vwm based on sysvwm

//------------------------------------------------------------

//Filename : ckVWM.dll

//Author : Chao-Kuo Lin

//E-mail : chaokuo@iname.com

//Webpage : http://cklin.cjb.net

//Purpose :

// This module adds some new functions to the sysvwm

//------------------------------------------------------------

---------------

I: Installation

---------------

Put ckVWM.dll in any directory you like, for example c:\litestep\, then add this line to step.rc

LoadModule c:\litestep\ckVWM.dll

or you can load it inside wharf as a wharf module by adding this entry:

*Wharf "ckVWM" .none @c:\litestep\ckVWM.dll

---------------

II: Settings

---------------

This Section contains both the features from the sysvwm and ckVWM to save you from having

to look at two readmes for one module.

*NOTE: all functions that use desktop number as an argument are fixed so that the first desk starts with

1 instead of 0.

The following is copied straight from sysvwm's readme

---------------

Mouse functions

---------------

VWMMouseRight #

---------------

Allows you to define which functions your right mouse button do. Defaults to 1.

VWMMouseLeft #

--------------

Allows you to define which functions your left mouse button do. Defaults to 2.

VWMMouseMiddle #

----------------

Allows you to define which functions your middle mouse button do. Defaults to 0.

Valid entries for the above are: 0 - disables mouse button, 1 - button will switch to the vwm that you click on, 2 - button will drag the miniwindows and the vwm.

Drag and drop is also supported. You can drop a file on sysVWM, and the file will open inside the virtual desktop that you drop it on.

----------------------------

commands (step.rc and !bang)

----------------------------

In addition to the normal "undocked" mode, sysVWM can be loaded as a wharf module, allowing you to use the more advanced options even while docked inside the wharf. Some options are disabled when on the wharf, like the ability to specify your own height, width, and x,y positioning. Generally, if an option doesn't make sense to be available to a wharf module, then it has probably been disabled. Rollup is disabled, Reset does nothing, etc.

*Wharf "sysVWM" .none @sysvwm.dll

The module does not load anything out of the bitmap parameter, but it is still needed so that wharf.dll will load sysVWM. sysVWM will use its regular method for displaying bitmaps.

VWMNoSwitchOnFocus

------------------

Prevents automatic virtual desktop switching when the system focus changes to a window that is outside the current desktop.

VWMFocusCenter

--------------

Sets your system focus to whatever window is in the center of the screen when you switch desktops.

VWMNoShow

---------

Sets initial mode for !VWMRollup to hidden. In other words, the vwm will be hidden when this option is used. !VWMRollup would be used to display the vwm.

VWMNoGathering

--------------

Prevents automatic "gathering" of all windows to the first virtual desktop upon a recycle of litestep.

VWMNoMove

------------

Disables the ability to drag the vwm around.

VWMShowIcons

------------

sysVWM will paint an icon inside each miniwindow. The icon associated with the task that the miniwindow represents will be used.

VWMIconSize #

-------------

Specifies the size that you prefer each icon to be drawn at. Default value is 16.

VWMAutohide

-----------

Enables autohide features. Autohide will work only when the vwm is docked against one of the sides of the screen. If you drag the vwm away from the side it is docked on, autohide will be turned off until the vwm is returned to the side of the screen again.

VWMAutohideDistance #

---------------------

When autohide features are enabled, this value is used to determine how close to the edge of the screen you must be to show the vwm. This value will default to 3 if not used.

VWMAutoSwitch

-------------

This feature will allow sysVWM to automatically switch desktops when your mouse cursor reaches the edge of the screen. For example, if you move your mouse to the right edge of your screen, then sysVWM will switch to the next desktop to the right.

VWMAutoSwitchDistance #

-----------------------

This value determines how far from the edges of the screen your cursor needs to be before VWMAutoSwitch kicks in and changes your desktop. This setting defaults to 1.

VWMAutoSwitchDelay #

--------------------

When VWMAutoSwitch is enabled, this value determines the approximate number of milliseconds to wait before switching vwm's when the mouse reaches the edge of the screen. Default is 50.

VWMTitlebars

------------

Enables the titlebars on the windows in the miniview.

VWMTitlebarMod #

----------------

sysVWM will use this modifier when calculating the height of the titlebars. sysVWM will divide the height of the desktop by this modifier, then display a titlebar at that ratio. So if you specified VWMTitlebarMod 2, then your titlebars would be half the height of each virtual window. This setting defaults to 16.

VWMBevel

--------

Enables the bevel on windows in the miniview. The bevel highlight will use the color specified in VWMForeColor, and the shadow will use VWMBorderColor. The windows will then be filled with the color specified in VWMWinColor.

VWMSnapWidth #

--------------

When dragging the vwm window around, it will snap to the edge of the screen when it comes within the number of pixels specified in #.

VWMAlwaysOnTop

--------------

Keeps the vwm window above all other windows. If this is not specified, sysVWM will be below all other windows.

*VWMSticky <text>

-----------------

Enables and defines sticky settings. When you switch desks, sysVWM will match the <text> against the window titles and classes in your current virtual desktop, and any windows that match will be carried to the new desktop.

(this command can be specified multiple times for different windows)

VWMForeColor ######

-------------------

Sets the color of the "mini-windows" that represent an open window. Uses default litestep color format.

VWMBackColor ######

-------------------

Sets the color of the background for sysVWM. Uses default litestep color format.

VWMSelBackColor ######

----------------------

Sets the color of the shading that is applied to a selected desktop. Uses default litestep color format.

VWMBorderColor ######

---------------------

Used for the border of the "mini-windows", and the dividing lines between each desktop window. Uses default litestep color format.

VWMWinColor ######

-------------------

Sets the color of the background of the windows when VWMBevel is specified. Uses default litestep color format.

VWMUseInitialDesk

-----------------

Allows usage of VWMInitialDesk.

VWMInitialDesk #

----------------

Starts the VWM on the specified desktop, the # will start from 1 representing the first desktop instead of 0.

VWMDesksX #

-----------

Number of desktops you want to have on the X axis.

VWMDesksY #

-----------

Number of desktops you want to have on the Y axis.

VWMx #

------

Tells sysVWM how many pixels down from the top of the screen you want the vwm to be placed at. Negative numbers are also valid, and will make sysVWM use the bottom of the screen.

VWMy #

------

Tells sysVWM how many pixels across from the left side of the screen you want the vwm to be placed at. Negative numbers are also valid, and will make sysVWM use the right side of the screen.

VWMwidth #

----------

The width of the entire vwm.

VWMheight #

-----------

The height of the entire vwm.

VWMBackBmp <bitmap>

-------------------

sysVWM will use this bitmap instead of the color specified in VWMBackColor. VWMBackBmp .snapshot will take a snapshot of the desktop to use as the background here.

VWMSelBmp <bitmap>

------------------

Makes sysVWM ignore the VWMSelBackColor and use this bitmap to paint on the background of the selected virtual window.

VWMTitlebarBmp <bitmap>

-----------------------

Uses a bitmap for the titlebar representations in the miniviews. If a bitmap is not specified here, then VWMBorderColor will be used to fill the titlebars.

VWMWinBmp <bitmap>

------------------

This bitmap will be used for the tiny windows in the miniviews. VWMForeColor will be used if no bitmap is specified here.

; Additional settings from ckVWM

VWMHideTaskOnSwitch <bool>

-----------------------------------

This will set the vwm to hide windows that are currently not in the current desktop which is the

original purpose of ckVWM.

default: false

VWMWrapScreen <bool>

-----------------------------------

This will make the the vwm's like a circular loop which for instance when you move right when you

are in the right most desktop, you will switch to the left most desktop. If you move right at the bottom

right desktop, you'll move to the left top desktop.

default: false

VWMReturnToFirstScreen <bool>

-----------------------------------

This is for people whose Litestep doesn't support data storing, such as PureLS. Specify this setting

will force you to return to the first desktop when recycling so you won't lose some windows.

default: false

VWMRestoreX <int>

-----------------------------------

This will specify the left x position of your window when they are restored using the restore window

bang in the next section.

default: 10

VWMRestoreY <int>

-----------------------------------

This will specify the top y position of your window when they are restored using the restore window

bang in the next section.

default: 10

VWMRestoreWidth <int>

-----------------------------------

This will specify the width of your window when they are restored using the restore window

bang in the next section.

defualt: -400

*If this is negative, then the window's width and heigh are not changed during restoring

VWMRestoreHeight <int>

-----------------------------------

This will specify the height of your window when they are restored using the restore window

bang in the next section.

default: -300

*If this is negative, then the window's width and heigh are not changed during restoring

VWMMaximizeThreshold <int>

-----------------------------------

The number is between 0 and 100. It will effect how vwm consider whether a window is inside this

desktop or outside. It basically a percentage where the greater the number is, the better chance

the vwm will do the right thing. I recomment you not to play with this setting unless you know what

you are doing

default: 10

VWMDisableVerticalAutoSwitch <bool>

-----------------------------------

This setting is handy when your vwm is vertical or horizontal and you have the VWMAutoSwitch

and VWMWrapScreen settings on. It will prevent you from autoswitch vertically when you have

a one line horizontal vwms.

default: false

VWMDisableHorizontalAutoSwitch <bool>

-----------------------------------

This setting is handy when your vwm is vertical or horizontal and you have the VWMAutoSwitch

and VWMWrapScreen settings on. It will prevent you from autoswitch horizontally when you have

a one line horizontal vwms.

VWMSnapWindowOnDrag <bool>

-----------------------------------

This setting will allow you to retain a window's relative position to its desktop while dragging.

default: false

VWMFocusLast <bool>

-----------------------------------

This setting allows the vwm to remember your last window that was active when you left that desktop.

So the correct active window will be re-activated when you move back to the desktop

default: false

VWMNoBorder <bool>

-----------------------------------

This setting eliminates the border when you don't have a bitmap but a color for background

VWMNoWindows <bool>

-----------------------------------

This setting prevent the vwm from drawing all the miniwindows

*VWMStartWindowsOnDesktop <text> <int>

-----------------------------------

This is another neat feature of ckVWM. You can specify what windows, by specifying its window name

or class name, will start on the specified desktop number. The number of the desktop starts from 1.

default: no default

(this command can be specified multiple times for different windows)

*VWMFix <text>

-----------------------------------

This command fixes photoshop's toolwindows or other programs toolwindows such as illustrator.

It is a bit tricky to use as you have to specify the window title or the class name of

the "PARENT" window of the toolwindows. So you have to use winspy or other program

to check Photoshop's class name or windows' title in order for this config to work

default: no default

example: *VWMFix Photoshop; this will fix photoshop's toolwindow

(this command can be specified multiple times for different windows)

---------------

III: Bang Commands

---------------

!VWMUp, !VWMDown, !VWMLeft, !VWMRight

-------------------------------------

Using these bang commands will change the active desktop, moving one desktop over in the direction specified.

!VWMDesk #

-------------------------------------

Changes the active desktop, moving your focus to the desktop specified with #.

!VWMRollup

----------

You can hide sysVWM by using the bang command !VWMRollup. This command will hide and show the vwm, acting as a toggle.

!VWMReset

---------

This will reload the step.rc settings for the vwm. Useful for when you drag the vwm to a place where you can't get at it anymore. Just hit !VWMReset, and it reloads the vwm at the coordinates you set in the step.rc.

!VWMGather

----------

Brings all open windows to your current desktop. This command functions independently of VWMNoGathering.

!VWMOpen <desk> <command> <parameters>

--------------------------------------

Opens the file or program specified in <command> with the given <parameters> within the virtual desktop specified in <desk>. For example, the command !VWMOpen 0 notepad will open notepad in the top left vwm.

*the desk is fixed so that it starts with 1 instead of 0

!VWMMoveApp <argument>

-----------------------

This command will move the active window one virtual desktop over in the direction you specify for <argument> where valid directions are Up, Down, Left, and Right.

In addition, with ckVWM now you can specify a number for the argument representing the target desktop number to move to.

!VWMTOGGLEHIDETASKONSWITCH

-----------------------------------

This bang command will toggle your vwm to whether hide tasks that are not in the current desktops or display all of them in taskbar.

!VWMTOGGLEWRAPSCREEN

-----------------------------------

This bang command will toggle your setting for VWMWrapScreen

!VWMRESTOREWINDOW <text>

-----------------------------------

This will restore one window whose title or classname matches the pattern specified in text.

!VWMRESTOREALLWINDOWS <text> <method>

-----------------------------------

This will restore all windows whose title or classname matches the pattern specified in text.

The method so far can be either, overlap or cascade, in which overlap is the default if nothing is specified.

*for detail on how the windows are restored please check the VWMRestoreXXX settings in the previous section

!VWMToggleOnTop <text>

-----------------------------------

This bang is used for toggling always on top of the vwm main window.

valid text argument are: "true", "on", "yes" would set always on top, everything else

would set it not on top. If no text is specified, it would act as normal toggling

------------------------------

IV: History

------------------------------

/****************** v1.32 08/1/2001************///

//

// Bug fixed:

// -always on top should now work properly

// Changes:

// -added setting VWMNoBorder

// This setting eliminates the border when you don't have a bitmap but a color for background

// -added setting VWMNoWindows

// This setting prevent the vwm from drawing all the miniwindows

// -added !VWMToggleOnTop <text>

// This bang is used for toggling always on top of the vwm main window.

// valid text argument are: "true", "on", "yes" would set always on top, everything else

// would set it not on top. If no text is specified, it would act as normal toggling

// -improved background drawing speed, though you might not notice any

//

/****************** v1.31 07/1/2001************///

//

// Bug fixed:

// -when you drag a window vertically, it gets off and off more in the minipanel

// -the random jumping vwm problem

/****************** v1.30 06/1/2001************///

//

// Changes:

// -added config *VWMFix <text>, to deal with stupid photoshop's toolwindow. I have to tell

// you, photoshop's toolwindows are NOT friendly.

//

// Bug fixed:

// -when clicking on task that is a maximized window, it will show the correct desktop.

// -sorry, photoshop's toolwindow fix is not built-in, consult the new *VWMFix config for more info.

// -now VWMFocusLast will work better if you click on vwm or shortcuts to change desktop

//

/****************** v1.25 11/22/2000************///

// This release is mainly a bug fix version.

// First i want to say sorry about the the future plan, and the features people have been asking, cause I've

// been very busy lately. Just in case you didn't know, I joined the ls dev team recently which will make me busier.

// Some of the features i'm still considering whether i should add it or not. If you

// really want any feature, just e-mail me, and then i'll if those features are worth adding or not.

//

// Anyway, this is kind of my Thanksgiving present for you LS users, and all you CK users ;-) Have Fun!

//

// Changes:

// -added config VWMFocusLast, so that the window that has the last focus will be focussed when switch back

// to that desktop. This config can coexist with config VWMFocusCenter, but the focus last code will run first before

// the focus center code.

//

// -now !VWMMOVEAPP can accept number that specifies which desktop to move to instead of just

// moving to the neighboring desktop. syntax: !VWMMOVEAPP #, where # is the desktop number starting from 1

//

// Bug fixed:

// -now compatible with dwarf and lsbox(no 64^2 size limit), and almost all other wharf loading modules

// -photoshop tools

// -fixed !VWMMoveApp bang, so that it won't move always on top stuff.

// -fixed a rendering problem when the width of each vwm is shorter than the height

//

// *Just in case you didn't know, I've added the version resource, so you can check your ckVWM version by checking

// the file properties.

//

/****************** v1.2 10/28/2000************///

// Changes:

// Bang commands:

// changed:

// -!VWMRESTOREALLWINDOWS

// >changed to !VWMRESTOREALLWINDOWS "window title or class name" "method"

// where method could be blank(default to overlap), overlap, or cascade

// -!VWMRESTOREWINDOW and !VWMRESTOREALLWINDOWS

// >changed the window title or class name matching scheme to use the match() function.

// The syntax for matching a specific word such as MIRC would be: *MIRC*

// The matching is not case sensitive

// added:

// -!VWMMove x y

// >change the position of the VWM to x, y (x and y can be negative)

// >if nothing is supplied, the VWM will move back it's old position specified in step.rc

//

//

// Step.rc configs:

// -Added configs to disable the vertical or horizontal autoswitch

// >VWMDisableVerticalAutoSwitch

// >VWMDisableHorizontalAutoSwitch

//

// -Changed the RestoreWidth, and RestoreHeight so that if you don't specify them or

// one of them is negative, then when restoring windows using !VWMRESTOREWINDOW or

// !VWMRESTOREALLWINDOWS the windows' original width and heigh will not be changed.

//

// -Added config *VWMStartWindowsOnDesktop "Window title or class name" "Desktop Number"

// so that windows that match will always start on the desktop number you specify

// (doesn't work with PureLS at this time)

//

// -Added config VWMSnapWindowOnDrag so that window will retain its relative coordinate to

// the desktop when dragging the miniwindows

//

// Misc:

// In this release, i added a two modified popup modules, popup r9.3 and popup2, that will work with ckvwm.

// They will allow you to have popup tasks for hidden windows on differnt desktops when you have the

// config VWMHideTaskOnSwitch.

// The step.rc config for these added popup feature is:

// PopupckVWMPath "path"

// where path equals to the path to your ckvwm.dll, the one you load module with.

//

// When you dont use ckvwm, you can simply comment out the PopupckVWMPath, and everything

// will be the same as before.

//

// The syntax to see windows on other desktop is the same as !PopupTasks,

// just replace !PopupTasks with !PopupTasks1, !PopupTasks2, !PopupTasks3.....depending on your

// vwm configuration. !PopupTasksAll Allows you to tasks from all desktops.

//

// *Note: if a warning dialog popups up from your shell saying that the module ckvwm is already

// loaded, simply change the order you load ckvwm and popup in step.rc Load ckvwm before popup

//

// Bug Fix:

// -Fix the problem that !VWMTOGGLEHIDETASKONSWITCH will make windows disappear

// -Fix !MoveApp bang so that it will work with VWMWrapScreen

// -Fix !MoveApp bang so that for examle you click on a shortcut which calls this bang, the program will

// look for the topmost visible window to move.

// -Fix the bug that when clicking on task, the wrong desktop will be shown.

// -Fix the config VWMDeskWallpaper# so that it can use e-vars, and save the time to allocate unnecessary memory spaces

//

// Future Plan:

// -Add a lock feature so that you can't switch to other desktop or control other desktop

// unless you enter the right password

// -The ability to double click on a miniwindow to maximize or restore the window.

// -When dragging miniwindows, vwm will automatically switch to the desktop that the window is in.

// -Add bang commands to control group of windows

//

//

// Note:

// Special thanks to [steve] in helping me to diagnose a bug, and a lot of people who contributed their

// ideas, or told me their problems. If there is a bug that isn't fixed, or any ideas that you have either

// new or i forgot to implement it and it's not in the Future Plan list, please send an e-mail to me (even

// if you did already and it's still not fixed) to chaokuo@iname.com or

// go to irc channel @ EFnet, in #ls_help and tell me. My nick is Chaku, thanks.

//

/****************** v1.0 9/30/2000************/

//

// Finally found the bug that was causing my v0.81(internal version) to be unstable.

// First, I want to thank those who had contributed to any part of this code

// and those who helped spreading it. Also, thanks for those who sent me e-mail

// with suggestions and bug reports. This version should be stable and....

// Anyway, here we go...

//

// Changes:

// Added Bang commands:

// !VWMRESTOREWINDOW <text>

// This command will help you retrieve hidden window that's lost in your desktop.

// The text specify any word or sentence in the window's title that you want to restore.

// !VWMRESTOREALLWINDOWS <text>

// Same as the bang above, except this one will restore all the window that contains text

// in its title.

//

// Added Step.rc configs:

// The following 4 fonfigs will determine where the window will show when you

// use the restore bangs above:

// VWMRestoreX # (default 10)

// VWMRestoreY # (default 10)

// VWMRestoreWidth # (default 400)

// VWMRestoreHeight # (default 300)

//

// The following config will allow you to change how VWM will determine whether the maximized

// window is out of the current desktop. The # represents portion of the area where 10

// means 10%, and 20 means 20%. Unless you really know what you are doing, it is not

// recommend that you change this config. It's default to 10( which means 10%)

//

// VWMMaximizeThreshold #

//

//

// Bug Fix:

// -Fix the problem that VWMWrapScreen doesn't work when AutoSwitching

// -Fix the bang commands, VWMOpen and VWMInitialDesk, so that the first desktop will be 1 instead of 0

// -Fix the bang command, VWMReset.

// -Fix the problem that maximized or full screen stuff will disappear. (sorry guys)

// -Fix the problem that it will occasionally lock up.

// -Others that i can't think of right now.....

//

// *Note:

// -VWMReturnToFirstScreen i think is for users of Litestep families(such as PureLS)that don't

// support the message LM_SAVEDATA, so your windows won't disappear after recycle.

// -Source code is availabe at my site.

//

//

/****************** v0.8b 9/24/2000************/

//Changes:

// Added Step.rc Config:

// VWMHideTaskOnSwitch

// -This will cause the sysvwm hide the tasks from task bar if

// its window is not on the current screen. It will not hide the minimized window

// from task bar, and it'll carry it to differnt desktop. So when restored, the window

// will be in the current desktop, and not in the old

//

// VWMWrapScreen

// -This will alow your desktops to be kind of circular. Let's say the you are in the

// first desktop. When you use !VWMLeft, this config will allow you to move to the last

// desktop.

// VWMReturnToFirstScreen

// -For those whose sysvwm will behave weird when not recycling in the first desktop,

// this config will force the sysvwm to go back to the first desktop.

// (I don't know about most of the people, but i guess you won't experience this kind of problem)

//

// Added Bang Commands:

// !VWMTOGGLEHIDETASKONSWITCH

// -This is for toggling the VWMHideTaskOnSwitch config

// !VWMTOGGLEWRAPSCREEN

// -This is for toggling the VWMWrapScreen config

//

// *Note:

// -In this version of !VWMDesk #, the # will start from 1 and not 0

// -This is just a beta version. I welcome any suggestions, and if you found a bug

// please please report to me @ chaokuo@iname.com Thanks.

//------------------------------------------------------------

//Example Step.rc config:

// LoadModule "C:\Litestep\ckVWM.dll"

// VWMHideTaskOnSwitch

// VWMReturnToFirstScreen

// VWMWrapScreen

//


Cleardoc.dll

---------------------------------------------------------------------------------

Clear Recent Documents (cleardoc.dll) by Message (bgvinyard@aol.com)

Well, someone wanted it and here it is, a bang command to clear your recent documents

load the module in step.rc: Ex. loadmodule "$litestepdir$cleardoc.dll"

command usage is !ClearRecentDocs

That simple.


Connected.dll

---------------------------------------------------------------------------------

connected.dll 0.11 connected.txt

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

General

¯¯¯¯¯¯¯

Connected is a LiteStep module that keeps track of your

internet connection and executes commands when you connect

and/or disconnect.

Installation

¯¯¯¯¯¯¯¯¯¯¯¯

Copy connected.dll to your Litestep directory and add a line

like the following to your step.rc file:

LoadModule $LiteStepDir$connected.dll

After recycling Litestep you will have access to the module.

Bangs

¯¯¯¯¯

!Connected [connected][disconnected]

Executes whatever is in the connected parameter if you're

connected and what's in disconnected if you're not.

RC settings

¯¯¯¯¯¯¯¯¯¯¯

ConnectedIfConnected

Command to execute if you're connect on startup/recycle

ConnectedIfDisconnected

Command to execute if you're not connect on startup/recycle

ConnectedOnConnect

Command to execute when you connect

ConnectedOnDisconnect

Command to execute when you disconnect

ConnectedInterval

The ammount of time the module waits between the connection

checks. The time is in milliseconds. By adding a trailing s, m

or h to the time you can change the timeunit. s is for seconds,

m for minutes and h for hours. The sufix should follow the time

directly without any space, like 5s or 2m. The default interval

is 10 seconds.

Changes

¯¯¯¯¯¯¯

Date Ver Changes

21 jan 2002 0.11 Added code from Jesus_mjjg

* ConnectedIfConnected

* ConnectedIfDisconnected

11 aug 2001 0.1 First public release

To-do-list

¯¯¯¯¯¯¯¯¯¯

* Very simple module, can't think of anything else. If you've

got any ideas, please send me a mail.

Feedback

¯¯¯¯¯¯¯¯

If you have a bug report, feature request, or any kind of

feedback, feel free to email it to me at erik@alfafish.com.

For more info and other LiteStep modules and programs, check

out www.alfafish.com

Sourcecode

¯¯¯¯¯¯¯¯¯¯

The sourcecode for this module is distrbuted under the GNU

Public License. If you didn't get the sourcecode with this

module, you can download it from www.alfafish.com

_______________________________________________________________

Erik Christiansson, aka Sci erik@alfafish.com


Date & Time

---------------------------------------------------------------------------------

"jugg's Date & Time version 0.97"

This is a program in Beta developement. Report bugs to the email address listed at the end of this file.

I'll keep this short and sweet. I wrote this little program (jugg's date & time) cause I have never been able to find a small simple date and time program that is completely customizable.

Well, so I made one. The only drawback I can come up with is, that I wrote it in VisualBasic, and it needs the VB6 RunTime files. You can get them at: ftp://ftp.microsoft.com/Softlib/MSLFILES/VBRUN60.EXE

Other then that, there really isn't much to say. Oh, you will notice that if you have 'autosize' enabled, that you can not use a skinable background.

Hrm one more thing. To return the Date & Time settings back to the defaults, open up the 'Clock Settings' dialog and click 'Defaults' then leave the dialog, close the program, and restart it.

Also, make sure you set your BMT setting under Settings correctly, otherwise your iTime/Date will not display the right stuff.

The interface is easy enough: left mouse click toggles date/time, left mouse drag moves clock around (if enabled under Settings), right click brings up the popup menu. The rest is basically self explanitory.

My favorite Font to use with this is called "OCR A Extended" at a 12point size and the file name is "OCRAExt.ttf". I'm not including it at this point, because I'm not sure about the legal stuff with that...

Well as for some legal type of things.

Do what ever the heck you want with this program. Its completely free.

However, you may NOT destribute this program on any media type, floppy, cdrom, or any other form that is being sold at any price.

If you want to include it on a cdrom or some such, please contact me first.

Feel free to give it to your friends, distribute it over the internet, bbs, etc.

However, this readme.txt file must be included intact, as is.

author - (jugg) chris rempel jugg@earthling.net

http://aster.omega2.com/jugg/


Dwarf.dll

---------------------------------------------------------------------------------

****************************

* Dwarf.dll version 1.12 *

****************************

1. Introduction

~~~~~~~~~~~~~~~~

What is Dwarf.dll? It is a Litestep system module that allows you to run modules,

shortcuts, folders, and folders with subfolders anywhere on your desktop.

2. Installation

~~~~~~~~~~~~~~~~

# = group number

T = always on top

H = hide window

V = vertical folder/horizontal subfolders(default is horizontal folder/vertical subfolders

D = dock dwarf to active window

Add Dwarf.dll to your step.rc:

LoadModule C:\LITESTEP\Dwarf.dll

Add modules and shortcuts like the following:

*Dwarf #<#TH> "name" x-position y-position bitmap width height module/program/bang-command arguments

example:

*Dwarf #1T "wharfpong" 64 64 .none 64 64 @C:\litestep\modules\wharfanoid.app

*Dwarf #1H "LSWallpaper" 128 128 LSWallpaper.bmp 32 32 @C:\litestep\modules\LSWallpaper.dll

*Dwarf #2D "Step.RC" 64 256 .none 64 32 notepad C:\LITESTEP\step.rc

*Dwarf #2T "Shutdown Windows" -256 -256 b24_shutdown.bmp 64 64 !Shutdown

Add folders and subfolders like the following:

*Dwarf #<#THV> "name" x-position y-position bitmap width height Folder

*Dwarf "name" bitmap module/program/litestep-bang-command arguments

*Dwarf "name" bitmap Folder

*Dwarf "name" bitmap module/program/litestep-bang-command arguments

*Dwarf "name" bitmap module/program/litestep-bang-command arguments

*Dwarf ~Folder

*Dwarf "name" bitmap module/program/litestep-bang-command arguments

*Dwarf ~Folder

example:

*Dwarf #3V "Development" 256 256 b24_apps.bmp 32 16 Folder

*Dwarf "Borland C++" bc5.bmp "C:\BC5\BIN\bcw.exe"

*Dwarf "System Folder" b24_sys.bmp Folder

*Dwarf "Recycle" b24_recycle.bmp !Recycle

*Dwarf "Step.rc" b24_folder.bmp notepad C:\LITESTEP\step.rc

*Dwarf Explorer b24_explorer.bmp explorer.exe

*Dwarf ~Folder

*Dwarf "Visual Basic" vb5.bmp "C:\Program Files\DevStudio\VB\vb5.exe"

*Dwarf "Development" b24_apps.bmp Folder

*Dwarf "Borland C++" bc5.bmp "C:\BC5\BIN\bcw.exe"

*Dwarf "Visual Basic" vb5.bmp "C:\Program Files\DevStudio\VB\vb5.exe"

*Dwarf ~Folder

*Dwarf "Visual C++" metal_visualc.bmp "C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE"

*Dwarf ~Folder

3. How to use

~~~~~~~~~~~~~~

When dragging is enabled, a right click on the Dwarf will then allow you to move it(make sure to give it a good

right click-seems to be picky). To stop moving it, click the left mouse button. If the module has a right click menu,

it will appear after the left click. The new coordinates are stored in the modules.ini under section [Dwarf] with

the window name followed by the coordinates separated by a slash.(Ex. WharfPong=256/345)

step.rc options:

DwarfNoAnim ;turns off folder/subfolder animations

DwarfAnimStep ## ;sets the folder/subfolder animation step to ##(defaults to 64)

DwarfAnimDelay ## ;sets the folder/subfolder animation time delay to ##(defaults to 10)

DwarfNoHints ;turns off Dwarf hints

DwarfCloseOnSwitch ;causes all folders/subfolders to close when focus switches to another window

DwarfBackPic bitmap ;sets a default bitmap to show behind every main Dwarf

DwarfFolderBackPic bitmap ;sets a default bitmap to show behind all folder/subfolder items

DwarfFolderPic bitmap ;sets a default bitmap to show behind all folders/subfolders

DwarfEnableDrag ;enables dragging of Dwarfs

DwarfDockPosition POS ;where on the active window you want your docked dwarfs to be

;where POS is one of the positions below

DwarfDockOffsetX ## ;offsets the horizontal position of the docked dwarfs by ##

DwarfDockOffsetY ## ;offsets the vertical position of the docked dwarfs by ##

internal bang commands:

!DwarfCloseFolder ;can only be used by a dwarf tile in a folder/subfolder to close the folder it is in

bang commands:

!DwarfShow # ;shows group #

!DwarfHide # ;hides group #

!DwarfToggleShow # ;toggles show/hide for group #

!DwarfToggleTopmost # ;toggles topmost/not topmost for group #

!DwarfToggleDrag ;toggles enable/disable of dragging

Docking Positions:

POS DESCRIPTION

---------------------------------

These positions are on the outer edge of the active window:

LT left side top edge

LB left side bottom edge

RT right side top edge

RB right side bottom edge

TL top side left edge

TR top side right edge

BL bottom side left edge

BR bottom side right edge

These positions are in the titlebar of the active window:

TBL titlebar left edge

TBR titlebar right edge

4. Known Problems

~~~~~~~~~~~~~~~~~~

- Some modules do not work in folders/subfolders. This is a problem with the module not Dwarf.dll.

- LSTime.dll is not transparent in a Dwarf. Have not figured this one out yet.

5. Bug reports/suggestions

~~~~~~~~~~~~~~~~~~~~~~~~~~~

You can email me at crouson@inreach.com with bugs and suggestions or comments.

6. Future Plans

~~~~~~~~~~~~~~~~

Your comments and suggestions are welcome.

7. Credits/Thanks

~~~~~~~~~~~~~~~~~~

Thanks to the LSDEV team for LITESTEP and releasing the source, since Dwarf.dll is

a major tweak of the wharf.dll.

Thanks to the guys on IRC channel #ls_help for their input on version 0.7, you know

who you are :)

Thanks to dissipate for the dock to active window idea and his input.

8. Contact

~~~~~~~~~~~

Jeb Crouson (aka TrOgI)

http://desktopsource.mindjunction.com

email - crouson@inreach.com


EasyCuts.dll

---------------------------------------------------------------------------------

LITE

STEP

+----------------+ _ +----------------+

| EasyCuts V3.0 | | |_ | EasyCuts V3.0 |

+----0-++-0----+----------------+ |_ _| +----------------+--------------+

| README..FILE | | By Ender |

+----0-++-0----+ DLL +----0-++-0----+

+-------+

|Changes|

+-------+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+

| v3.0 - Many, MANY, wonderful changes. So there. Released because Garg |

| was after a feature, and because I was in the wrong place, at the |

| wrong time :P [N.b: Sounds probably don't work. Sorry] |

| Also has a few compatibility fixes for DarkStep |

| Note the documentation below MAY be incorrect. You will probably |

| -not- need to press a key after right clicking, to drag |

+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

+------------+

|Installation|

+------------+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+

| First, backup your step.rc just in case :) |

| Next, replace the 'LoadModule Shortcut.dll' line in your step.rc with; |

| |

| LoadModule c:\Module Path\ECuts4.dll |

| |

| where 'C:\Module Path\' is the path to your Litestep modules. |

| (ie: LoadModule c:\litestep\Ecuts4.dll) |

+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

+---------+

|Shortcuts|

+---------+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

| |

| A typical Shortcut entry in your step.rc will look like this; |

| |

| *Shortcut "Title" X Y picture.bmp "command" |

| |

| '*Shortcut' tells Litestep that this line is a Shorcut entry. |

| |

| "Title" is the name of the shortcut. |

| It can be more than one word, as long as you put quotes around the words. |

| |

| 'X' is the X coordinate of where the Shortcut will be on the desktop. |

| 'Y' is the Y coordinate of where the Shortcut will be on the desktop. |

| |

| 'picture.bmp' is the image you will use for the Shortcut. |

| This can either be the path to a bitmap, or an icon. |

| If you choose to use an icon, it can any icon from any file. For example; |

| '.extract=c:\quake2\quake2.exe,0' |

| The .extract= tells Litestep to extract icon 0 from c:\quake2\quake2.exe |

| and use it as this Shortcut's image. Using '.winicon' will use the |

| default icon for the program that the Shortcut executes. |

| If you don't want to specify an image, enter '.none' as the image. |

| |

| "Command" is the command the Shortcut executes when clicked on. |

| This can be either a file or !Bang command. |

| If the command has spaces in it, put quotations marks around the entire | | command. |

+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

+------------------+

|Advanced Shortcuts|

+------------------+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

| |

| A more complex Shortcut entry in your step.rc will look like this; |

| |

| *Shortcut "Title" X Y picture.bmp mouseover.bmp clicked.bmp #OTHM "command"|

| |

| 'mouseover.bmp' is the image that the Shortcut uses when you put the mouse |

| cursor over it. |

| |

| 'clicked.bmp' is the image that the Shortcut uses when you click on it. |

| |

| '#0THM' are Shortcut flags, and are explained below. |

| |

+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

+----------------+

|Moving Shortcuts|

+----------------+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+

| |

| To reposition Shortcuts, right click on them. The mouse pointer should |

| change to the 'move' pointer. If you made a mistake, you can press escape |

| at any time. Now, press a key on the keyboard to confirm you want to move |

| this shortcut, or escape to cancel. |

| You can now use the mouse, or arrow keys, to move the shortcut around on |

| screen. Press escape to abort, or (once you have it in final position) |

| press the left mouse button, or return/enter, to keep it there. |

| |

| To move shortcut; right click on shortcut, press a keyboard key, move |

| shortcut where you want it, press left mouse button. |

| |

| This only keeps the Shortcut where you moved it until you reboot/recycle. |

| If you want to SAVE where you moved it, so that it'll be there from now on,|

| you need to use the '!SnapShot' bang. |

| Once you use '!SnapShot', your step.rc will be backed up as 'step.org', |

| and the new positions will be saved. If you start messing up, you can |

| recycle without doing a '!SnapShot' and your Shortcuts will return to |

| their original positions. |

| |

| (Warning note: When you do a !Snapshot, only your shortcut lines are |

| changed. Any manual changes to shortcuts since the last recycle will be |

| overwritten. |

| |

| Putting 'ShortcutDragMode' in your step.rc allows you to change the way |

| you can move a shortcut. |

| |

| ShortcutDragMode 0 - This uses the default "right click, press a key." |

| ShortcutDragMode 1 - This makes Shortcuts act like explorer, where you can |

| simply click and drag. |

| ShortcutDragMode 2 - This disables the moving of Shortcuts. |

| |

| (See the next section, Right Click Behavior, for related info) |

|

| --- Adding Shortcuts from Explorer windows --- |

| |

| To ADD a Shortcut onto the desktop, simply drag it onto the desktop from |

| the Explorer window, or some other drag/drop compatible file manager. |

| Note that you can only drag/drop one Shortcut at a time. |

| |

| Note that when using '!SnapShot', Shortcuts will be written in the same |

| place they were in the step.rc, and any new shortcuts (made by dragging & |

| dropping from a window) will be placed at the end of the step.rc |

+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

+---+

|RMB|

+---+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

| There are also three new Step.Rc options which control the behavior of the |

| Right Mouse Button (rmb), when applied to Shortcuts: |

| |

| ShortcutMenu 0 : Move on RMB click |

| ShortcutMenu 1 : Open Litestep popup on RMB click |

| ShortcutMenu 2 : Open config menu on RMB click (incomplete) |

| |

| The last two modes are best used with ShortcutDragMode 1 |

+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

+--------------+

|Shortcut Flags|

+--------------+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+

| You can combine Shortcut flags with each other for multiple effects. |

| |

| --- Shortcut groups --- |

| |

| Shortcut groups are used so that you can hide, show, and move multiple |

| Shortcuts with only one command. |

| You specify the Shortcut group by adding '#X' before the Shortcut's |

| command, where 'X' is the Shortcut group number. |

| |

| *Shortcut "Games" 50 10 games.bmp #1 "!toggleshortcutgroup 2" |

| |

| The '#1' tells you that this Shortcut is in Shortcut group 1. |

| To hide or show all Shortcuts in Shortcut group 1, you would use one of |

| one of the following commands; |

| |

| "!ToggleShortcutGroup 1" This switches between Shortcut group 1 being |

| shown and hidden. |

| "!HideShortcutGroup 1" This hides Shortcut group 1. |

| "!ShowShortcutGroup 1" This shows Shortcut group 1. |

| |

| If you don't want a Shortcut to be a part of any Shortcut group, then you |

| would use '#0' as its Shortcut group. |

| |

| --- Always on top --- |

| |

| To make Shorcuts always on top, add the following line to your step.rc; |

| |

| ShortcutsAlwaysOnTop |

| |

| This will make ALL Shortcuts always on top. |

| If you would rather specify which Shortcuts are always on top, and which |

| are not, do not add this. Instead, put a 'T' in the Shortcut flags. |

| |

| *Shortcut "Quake" 100 15 quake.bmp #0T "c:\quake\quake.exe" |

| |

| This makes the Shortcut in NO group, and always on top. |

| The bang '!ToggleOnTopShortcutGroup X' will toggle all Shortcuts in a |

| Shortcut group (where 'X' is the Shortcut group's number) between being |

| always on top and not being always on top. |

| |

| If you add the line "ScDesktopFloat" in your step.rc, Shortcuts will ONLY |

| sit on-top of your desktop, while by default they are ontop of all your |

| windows, etc, too. |

| --- Hidden Shortcuts --- |

| |

| Adding an 'H' to the Shortcut flags makes that Shortcut start out hidden. |

| |

| *Shortcut "ICQ' 200 100 icq.bmp #2H "c:\icq\icq.exe" |

| |

| This makes the Shortcut in Shortcut group 2, and hidden when you |

| start/recycle Litestep. To show it, use the '!ToggleShortcutGroup' or |

| '!ShowShortcutGroup' bangs mentioned above. |

| |

| --- Moving multiple Shortcuts simultaneously --- |

| |

| Adding an 'M' to the Shortcut flags will allow you to move all Shortcuts |

| in a group at the same time by moving that Shortcut. |

| |

| *Shortcut "Internet' 25 500 internet.bmp #1M "!toggleshortcutgroup 2" |

| |

| When you move this Shortcut, all Shortcuts in group '1' will also move. |

| |

| --- Making Shortcuts immoveable --- |

| |

| Adding an 'S' to the Shortcut flags will make that Shortcut immoveable. |

| |

| *Shorcut "Internet' 25 500 internet.bmp #1S "!toggleshortcutgroup 2" |

| |

| You wouldn't be able to move this Shorcut, no matter how hard you clicked! |

+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

+--------------------+

|Maudin's Systray.dll|

+--------------------+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+

| |

| From Easycuts 2.5 onwards, if you use Maduin's systray, you can 'dock' it |

| to a Shortcut group. This means it will hide/show with the group, and move |

| with a Shortcut group if you use a the #0M flag above. To do so, put the |

| following line in your step.rc; |

| |

| SystrayDockToShortcutGroup # |

| |

| Where '#' is the number of the Shortcut group you want the systray to be | | in. |

| |

| SystrayDockToShortcutGroup 1 |

| |

| This would make the systray become part of Shortcut group 1. |

| |

| Bugs in this should be reported to Ender, not Maduin :) |

| Check the documentation of your version of Systray to see if it supports |

| this feature. |

+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-+

+--------+

|Features|

+--------+----------------------------------------------------+--------------+

| Description | Status |

+-------------------------------------------------------------+--------------+

| Movable Shortcuts | Finished |

| Drag/Drop Shortcut Creation | Finished |

| .winicon icon extraction | Finished |

| Always on top icons | Finished |

| Explorer like Dragging | Finished |

| Drag disable toggle | Finished |

| Master Drag Support | Finished |

| Systraydocktoshortcutgroup for Maudins SysTray | Finished |

| MouseOver trigger | Debugging |

| Showing Explorer desktop icons | Debugging |

| Context sensitive menu | In progress |

+----------------------------------------------------------------------------+

+----------------------------------------------------------------------------+

|EasyCuts programmed 1999 Ender. E-mail comments to Ender@vision.net.au |

|Under GPL (V2+). Some code (C) 1997-99 The LiteStep Development Team |

+----------------------------------------------------------------------------+

+---------------+

|Quick Reference|

+---------------+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=+

| |

| --- Step.rc Commands --- |

| |

| ;; ShortcutDragMode # ;; |

| |

| ShortcutDragMode 0 - This uses the default "right click, press a key." |

| ShortcutDragMode 1 - This makes Shortcuts act like explorer, where you can |

| simply click and drag. |

| ShortcutDragMode 2 - This disables the moving of Shortcuts. |

| |

| ;; ShortcutsAlwaysOnTop ;; |

| |

| This makes ALL shortcuts "Always on Top." |

| |

| ;; SystrayDockToShortcutGroup # ;; |

| |

| This docks Maudin's systray.dll to a shortcut group, where '#' is the |

| Shortcut group number. |

| |

| --- Bang Commands --- |

| |

| ;;; !SnapShot ;;; |

| |

| This saves the position of all Shortcuts into the step.rc file. |

| |

| ;;; !ToggleShortcutGroup # ;;; |

| |

| This shows a Shortcut group when it's hidden, and hides it when it's |

| visible, where '#' is the Shortcut group number. |

| |

| ;;; !ShowShortcutGroup # ;;; |

| |

| This shows all Shortcuts in a Shortcut group, where '#' is the Shortcut |

| group number. |

| |

| ;;; !HideShortcutGroup # ;;; |

| |

| This hides all Shortcuts in a Shortcut group, where '#' is the Shortcut |

| group number. |

| |

| ;;; !ToggleOnTopShortcutGroup # ;;; |

| |

| This toggles all Shortcuts in a Shortcut group between being always on top |

| and not always on top, where '#' is the Shortcut group number. |

| |

| --- Shortcut Flags --- |

| |

| You can combine Shortcut flags with each other for multiple effects. |

| |

| ;;; Shortcut Groups ;;; |

| |

| A Shorcut flag of '#1' will make that Shortcut in Shortcut group 1. |

| A Shorcut flag of '#300' will make that Shortcut in Shortcut group 300. |

| |

| ;;; Always on Top Shortcuts ;;; |

| |

| A Shortcut flag of '#0T' will make that Shortcut always on top. |

| |

| ;;; Hidden Shortcuts ;;; |

| |

| A Shortcut flag of '#0H' will make that Shortcut hidden when you |

| start/recycle Litestep. |

| |

| ;;; Moving Multiple Shortcuts ;;; |

| |

| A Shortcut flag of '#1M' will make is so that, when you move this |

| Shortcut, it will move ALL Shortcuts in Shortcut group 1. |

| |

| ;;; Static Shortcuts ;;; |

| |

| A Shortcut flag of '#0S' will make that Shortcut immoveable.


Find.dll

---------------------------------------------------------------------------------

find v0.98

----------

1. Description

A Litestep loadmodule that provides the "Find" functions available from explorer.

2. Installation

Copy find.dll into your litestep directory and add the following to your step.rc

LoadModule C:\Litestep_directory\find.dll

3. Bang commands

!FindFiles root_dir

Invoke the Find file dialog with root_dir as the initial directory.

!FindComputer

Invoke the Find computer dialog.

4. Limitations

On win98 correct operation depends on whether the API InitCommonControlsEx is available in comctl32.dll.

No testing has been performed on NT.

This module uses undocumented API calls, and as a consequence may stop working in the future.

5. Changes

0.95 - Creation, buggy with win98 and NT.

0.98 - Tested working on win98 with comctl32.dll ver5.80, untested with NT.

--

written by mirul

mirul_@hotmail.com


FnXL.dll

---------------------------------------------------------------------------------

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

FnXL 1.0 beta 6

by repugnant

repugnant2k@hotmail.com

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

-- WHAT'S NEW ------------------------------------------------------------------

1.0 b6 - Added !FnXLReloadConfig (suggested by Pavel).

1.0 b5 - Reduced CPU usage.

1.0 b4 - Moved configuration into an external file because of the $1 $2 problem.

- First public release.

1.0 b3 - Redesigned, now includes headache-inducing regular expressions!

1.0 b2 - Redesigned

1.0 b1 - Everything

-- ABOUT -----------------------------------------------------------------------

FnXL searches for a string in a window title and crops it out. Simple. It grew

out of my frustration at a certain Microsoft program that put its name *before*

the name of the open document so I couldn't tell the difference from one task

tile and another.

-- INSTALLATION ----------------------------------------------------------------

Just plunk fnxl.dll into your module directory and add a LoadModule line to your

step file.

-- OPTIONS ---------------------------------------------------------------------

FnXLConfigFile ".none" ; path to the FnXL config file. REQUIRED

-- CONFIGURATION FILE ----------------------------------------------------------

For every title you want to change there must be two lines in the config file:

one for the regular expression to search for, and one for the replacement title.

See the included fnxl.cfg file for examples. I recommend creating an fnxl.cfg

file in your

-- REGULAR EXPRESSIONS -------------------------------------------------------

Regular expressions are a notation for searching text with wildcards and

patterns. If you are not familiar with regexps then please visit

http://www.perl.com/pub/a/2000/11/begperl3.html for more information. For the

most part a regexp that works with Perl will work with FnXL.

FnXL uses Dr. John Maddock's RegExp++ library. You can find out more about it

at http://ourworld.compuserve.com/homepages/John_Maddock/index.htm

-- THE END ---------------------------------------------------------------------

Enjoy

- John Woltman (repugnant)

-------------------------

config examples

-------------------------

Opera - \[(.*)\]\z

$1

alphaedit2 - \[(.*)\]\z

$1

(.*) - Microsoft Visual C\+\+

$1

.* - Microsoft Visual C\+\+ - \[(.*)\]$

$1

Microsoft Excel - (.+)

$1

(MSDN Library) - (.+)

$2 - $1

^Microsoft Access - \[(.+) : .+\]$

$1

^Microsoft Access$

Access

^(.+) - Bersirc IRC Client.+

$1

^(.+) - Microsoft Internet Explorer$

$1


Geekamp.dll

---------------------------------------------------------------------------------

******************************************************************************

Geekamp Version 1.9.666 [31/09/2001]

******************************************************************************

Original Author

***********

Lowell Heddings, geekMASTER

Maintainer, Updater and Support

************************

Ben Crosse, Azathoth

http://disrupted.net/~azathoth/

/*********************************************/

/ Suggestions, bugs or just general talk can be directed here:

/

/ E-Mail: azathoth@ls2k.org or azathoth@disrupted.net

/ ICQ: 25810657

/ IRC: #ls2k on EFNet, Undernet, Dalnet or OpenProjects.net (nick == azathoth)

/

/*********************************************/

******************************************************************************

******************************************************************************

This .dll file is used to control Winamp via bang commands.

******************************************************************************

To use: Simply add a line to your step.rc file that looks like the following:

LoadModule c:\litestep\geekamp.dll

******************************************************************************

Once you have loaded the module, you can use any of the commands anywhere

in litestep. This could be either a Shortcut or a Hotkey or a Wharf.

For Instance:

*Hotkey Win F9 !execute [!Amp_Play]

This line would assign the combo of Win + F9 to Play the current song.

*Popup "Winamp Play" !execute [!amp_play]

This line would play the current song through the use of a popup line.

*Shortcut "Winamp Play" waplay_normal.bmp waplay_over.bmp waplay_click.bmp #0T !execute [!amp_play]

This would assign a shotcut ont eh desktop that woudl execute !amp_play and play the currwent song.

WARNING: GEEKAMP WILL NOT WORK WITH OLD BUILDS (0.24.5 -> Late 2000 builds. This means the default installer on ls.com will not work.)

If you experience a "Litestep cannot load Geekamp.dll" or "Unable to find GetRCBoolDef in lsapi.dll" or some other error, please update your build from http://builds.lsdev.org/ or http://shellfront.org/lsdev/.

******************************************************************************

Bang Command Listing:

******************************************************************************

!Amp_Play* : Plays currently selected song.

!Amp_Pause : Pauses currently playing song.

!Amp_Stop : Stops currently playing song.

!Amp_Next : Moves to next song.

!Amp_Prev : Moves to previous song.

!Amp_VolumeUp : Turns volume up by one increment.

!Amp_VolumeDown : Turns volume down by one increment.

!Amp_LoadFile* : This pops up the load file box.

!Amp_Rew5s : Rewind currently playing song by 5 seconds

!Amp_Rewd10s : Rewind currently playing song by 10 seconds.

!Amp_Rewd20s : Rewind currently playing song by 20 seconds.

!Amp_Ffwd5s : Fast forward currently playing song by 5 seconds.

!Amp_Ffwd10s : Fast forward currently playing song by 10 seconds.

!Amp_Ffwd20s : Fast forward currently playing song by 20 seconds.

!Amp_Eq : Toggles Equaliser window.

!Amp_PlayList* : Toggles Playlist editor.

!Amp_Prefs* : Toggles Preferances window.

!Amp_OnTop : Toggles OnTop status of Winamp.

!Amp_Rew : Rewind currently playing track.

!Amp_About : Displays the About dialog for Winamp.

!Amp_Power : Toggles Winamp on / off.

!Amp_OpenLoc : Opens the Open Location dialog box.

!Amp_ListStart : Moves to the start of the playlist.

!Amp_ListEnd : Moves to the end of the playlist.

!Amp_StopFade : Stops with fadeout.

!Amp_Show* : Toggles the main window.

!Amp_Repeat : Toggles the Repeat status.

!Amp_Shuffle : Toggles the Shuffle status.

!Amp_MainMenuPopup : Popup the main Winamp Menu.

!Amp_DoubeSize : Toggles DoubleSize mode.

!Amp_EasyMove : This toggles Easymove mode.

!Amp_LoadDir : Shows the dialog to add a directory to the playlist.

!Amp_JumpToTime : Shows the Jump to Time dialog.

!Amp_JumpToFile : Shows the Jump to File box.

!Amp_Jump10Forward : Move 10 songs forward in the playlist.

!Amp_Jump10Back : Move 10 songs backward in playlist.

!Amp_WIndowShade : This toggles Windowshade mode.

!Amp_StartPlugin : Toggle plugin.

!Amp_PluginSetup : Shows the plugin config dialog.

!Amp_VisSetup : Shows Visualisations Setup.

!Amp_EditID3 : Shows dialog so you can add / view the ID3 tags.

!Amp_SetVolume <amount> : Set Volume to a number between 0 and 255, 0 being the lowest volume.

!Amp_SetPanning <amount> : Set Panning to a number between 0 and 255, 0 being all left and 255 being all right.

!Amp_ShadePlaylist : Toggle Shade the Playlist.

!Amp_ShadeBoth : Toggle Shade both the main window and the playlist.

!Amp_ToggleBrowser : Toggle the MiniBrowser.

!Amp_SelectSkin : Opens the Skin Selector Dialog.

!Amp_ReloadSkin : Reload the current skin.

!Amp_FileInfo : Displays a box with the currently playing song in the title, with bitrate, samplerate and channel info shown.

!Amp_PowerOn : Turns winamp on with no toggle.

!Amp_PowerOff : Turns winamp off with no toggle.

!Amp_Restart : Restarts Winamp.

!Amp_LoadEQPreset : Show the list of eq presets so that you can change them on the fly.

!Amp_PlayPause* : Toggles playing status of Winamp.

!Amp_MovePosition <modifier> <amount> : This moves the current song position forwards or backwards.

Examples:

!Amp_MovePosition + 100 // This will move the current song position forwards 100 seconds

!Amp_MovePosition - 100 // This will move the current song position backwards 100 seconds.

!Amp_Hide : Hides Winamp if already open.

!Amp_Display : Shows Winamp if hidden.

!Amp_AddSong <song_title> : Appends song to current playlist.

!Amp_TimeElapsed : Sets Winamp to display the time elapsed on a song.

!Amp_TimeRemaining : Sets Winamp to display the time remaining on a song.

!Amp_LS2k : Displays a box showing all members of #LS2k on EFNet, Dalnet, Undernet and Openprojects.net.

Current Bang Command Count : 61

(* = Command will open Winamp if it is not already open)

******************************************************************************

Step.rc Settings:

******************************************************************************

WinampStartNormal

Default = Off

On opening, Winamp will remain on screen. If this is not set, Winamp defaults to minimizing when run.

(This works only with Geekamp bang commands, not running Winamp through any other method)

WinampPath

Default = c:\progra~1\winamp\winamp.exe

Specifies where the Winamp executable is held.

Eg. WinampPath "c:\audio\winamp\winamp.exe"

WinampIniPath

Default = c:\progra~1\winamp\winamp.ini

Specifies where the Winamp ini file is held.

Eg. WinampIniPath "c:\audio\winamp\winamp.ini"

WinampStartOldSetting

Default = Off

Tells geekamp to load Winamp in the last position (ie. showing or iconized)

LoadFileNotOpen

Default = Off

Geekamp will not open Winamp if it is not open when the !amp_loadfile command is used.

PlayNotOpen

Default = Off

Geekamp will not open Winamp if it is not open when the !amp_play command is used.

PlayPauseNotOpen

Default = Off

Geekamp will not open Winamp if it is not open when the !amp_playpause command is used.

PrefsNotOpen

Default = Off

Geekamp will not open Winamp if it is not open when the !amp_prefs command is used.

PlaylistNotOpen

Default = Off

Geekamp will not open Winamp if it is not open when the !amp_playlist command is used.

ShowNotOpen

Default = Off

Geekamp will not open Winamp if it is not open when the !amp_show command is used.


geekPASTER.dll

---------------------------------------------------------------------------------

---------------------------------------------

geekPASTER.dll v.1

---------------------------------------------

Lowell Heddings (geekMASTER)

lheddings@geocities.com

http://floach.pimpin.net

---------------------------------------------

What this module does:

Basically, this module will allow you to assign

a string of text to a bang command, which when

executed, will copy that string of text into

the current application window (the window

with the keyboard focus)

---------------------------------------------

Installation:

Add the following line to near the bottom of

your loadmodule section:

loadmodule c:\litestep\geekpaster.dll

---------------------------------------------

Usage:

!geekPaste TextToBePastedIntoTheCurrentApplication

!geekPaste Text To Be Pasted into the current application

Either of the above forms should work just fine,

just note that if you include a [ or ], the new

scripting in the latest dev builds will cause

problems. This isn't really much of a problem usually,

and I have some updates planned to solve that.

Note that this was designed to be run off a hotkey,

although you can also run it off a popup menu, if you

use Ctrl_Esc, or another hotkey to pop up the popop

menu. For instance, you would hit your hotkey, (Win P, for

example), and you would be greeted with your customizable

popup menu from Litestep, and then select the item that

you had previously created with an action of !geekpaste,

and it would then paste it into the active window.

Obviously this is more confusing than just assigning it to

a hotkey.

Here are some example settings:

Hotkey Settings:

--------------------

*Hotkey Win P !GeekPaste geekMASTER Rules!

*Hotkey Win P !GeekPaste This is a long line of text, I think.

Normal Popup(Fahim's and Re5ources before 9.3)

-------------------------------------------------

*popup "FPN URL" !GeekPaste http://floach.pimpin.net

Note that you would need to use a hotkey to pop up

the popup menu for it to work properly. (Ctrl_esc, or Win)

(e)'s modified re5ource popup, version 9.3 and later:

------------------------------------------------------

*Popup !New !popuppaster

*popup "FPN" !geekpaste <a href=http://floach.pimpin.net>FPN</a>

*popup "Modulo" !geekpaste <a href=http://www.chunkymunky.com/modulo>Modulo</a>

*popup "Litestep.net" !geekpaste <a href=http://www.litestep.net>litestep.net</a>

*popup "chunkymunky.com" !geekpaste <a href=http://chunkymunky.com>chunkymunky.com</a>

*popup "LSDev" !geekpaste <a href=http://floach.pimpin.net/lsdev>LSDev</a>

*popup ~new

Note the new syntax. This is actually a completely

seperate popup menu from the normal default one. This popup

can only be use when called from the bang command that

we assign to it in the popup def line, in this case it

would be !PopupPaster. Simply assign this to a hotkey,

or even to a hotspot, and you can have a hotkey popup menu

that will allow you to paste certain texts into the active

document. For me, its very useful to have urls at my fingertips,

or even to have a MessageBox def.

Enjoy!!!!


Gestures.dll

---------------------------------------------------------------------------------

GESTURES.DLL 1.1

----------------

1. What is it?

--------------

Gestures implements simple mouse stroke controlling system, same

that can be found in Opera browser, at system level.

2. How it works?

----------------

1. Right click with your mouse everywhere on desktop or any window

and start drag (or "paint") your gesture

(You can define another mouse button, define keyboard hotkey or even

combine mouse-click with hotkeys).

2. As long as underlying window is not in list of excluded windows

(hardcoded or defined, see below), you can see that your gesture is

painted onto screen as thin line.

3. To finish your gesture, you will release mouse button (or release

hotkey).

4. Now, if you managed to draw your gesture correctly, module will

search predefined list of gestures and will do appropriate action,

if any match has been found.

5. The line symbolising the gesture is cleared up.

6. If timeout expires during gesture drawing or gesture is not found

in the list, nothing happens.

3. Notes

--------

1. If you interrupt drawing your gesture for too long, timeout will

expire and nothing happens. You will be notified with the sound about

this. Sound and timeout values are configurable.

2. Gestures module will capture your mouse click. If you like to drag

with your right mouse button (files in explorer, for example), there are

several ways how to avoid conflicts:

a) You can just right-click and wait a moment for timeout to expire

(it is very short time period) and after you hear the timeout sound,

you can drag your files as usual. Simple right click (without dragging)

works just normal, as usual.

b) You can also define different mouse-button (though right button is

default) or define keyboard hotkeys that may be used standalone or

in combination with mouse-click.

c) You can add Explorer file-management-area to windows exclusion list

so gestures module will be inactive if your mouse is over Eplorer window

(see example below).

3. As you will see later in the document, there are some predefined

actions for every mouse gesture.

4. How to define gestures?

--------------------------

To define gestures, imagine 3 to 3 matrix:

1 2 3

4 5 6

7 8 9

and imaginary put your mouse movement into it, you will get resulting

sequence:

so, to define "L" gesture, it is 14789

to define "U" gesture, it is 1478963

to define "Z" gesture, it is 1235789

and so on.

you may define more gestures on one line, first gesture recognized

will be used. it is useful when you have more complex (or circular)

gestures that may be recognized in more ways, for example for "L"

gesture, it may be 14789, 1478, or 4789, depending on its symmetric

proportions.

same as for "C", it may be 3214789, or 32489, or 324789 or 321489, or

214789... etc.

5. How to set gestures in STEP.RC?

----------------------------------

See enclosed EXAMPLE.RC file for more complex examples.

Notice I named all commands beginning with "stroke" here, which

is synonym for "gesture". Don't ask my why, I don't remember... ;-)

Parameters:

------------------

StrokeDrawing

Switch gesture drawing (painting) on.

StrokeColor 0000FF

Color of gesture line.

Default is FF0000 (red).

StrokeNotifySound c:\sounds\down.wav

Sound that will be played after successful gesture recognition.

StrokeTimeoutSound c:\sounds\msgback.wav

Sound that will be played after gesture-timeout.

StrokeTimeout 400

Gesture timeout in milliseconds.

Default is 500ms.

StrokeReversed

Reverse definition matrix in Y-axe, so you can easily use

numeric-keypad as visual reference for creating new gestures.

The matrix is then as follows:

7 8 9

4 5 6

1 2 3

StrokeNoExcludes

Disables checking for window in exclusion list.

StrokeNoDefaultExcludes

Disables checking for default hard-coded window exclusions

(for instance excluding wharf, desktop, shortcut, popup from

.close action, etc.).

StrokeExcludeSound c:\sounds\exclude.wav

Sound that will be played when underlying window has been found

in exclusion list.

StrokeButton 0|1|2|3

Define mouse button that must be pressed to iniciate stroke.

0 = No button. In this case, hotkey should be defined

1 = Left button

2 = Right button

3 = Middle button

Button combinations are not supported.

Default is 2.

StrokeHotkey hotkey|hotkey_combination

Define keyboard key that must be pressed to iniciate stroke.

It can be Shift, Alt, Ctrl or combination of these

(use + or | as separator).

It can be used in combination with StrokeButton, or may work

as standalone activation key if StrokeButton is 0.

Default is no-hotkey.

Definition:

------------

*stroke "gesture_name" gesture_sequence [gesture_sequence2 ...]

*stroke action action_parameter [command_parameters]

*stroke ~

Actions:

--------

action_parameter can be bang-command, or one of predefined actions:

.maximize

Maximize window under cursor

.minimize

Minimize window under cursor

.restore

Restore window under cursor to its normal size

.close

Close window (application) under cursor

.browseBack

Browser back function - actually sends Alt+Left to window under cursor

.browseForward

Browser forward function - actually sends Alt+Right to window under cursor

.browseReload

Browser reload function - actually sends Ctrl+R to window under cursor

.exec c:\dev\shutdown.lnk

Execute program or document

Commands:

---------

*StrokeExcludeWin "window_executable" "window_class_name" "window_title"

Define window/application that will not react on gestures. Wildcards

(*,?) may be used. Window is matched if all parameters match.

For instance, you can exclude Explorer windows file management area:

*StrokeExcludeWin "*\explorer.exe" "Sys????View32" ""

These exclusions are used by default (hardcoded):

*StrokeExcludeWin "*\opera.exe" "" ""

For spying windows executable-name, class and title, you can use

Spy32 from http://come.to/kobik/.

Though this program cannot display executable name (module name)

under WindowsNT (v 2.70). If you know about another window-spying

program that can, please let me know.

6. Acknowledgements

-------------------

Module uses GPLed library LIBSTROKE:

http://www.etla.net/~willey/projects/libstroke/

If you are interested in gesture recognition techniques, here are some

links:

http://www.etla.net/~willey/

http://www.mit.edu/people/cadet/strokes-algorithm.html

http://www.etla.net/libstroke/libstroke.pdf

http://www.etla.net/libstroke/sloppy.html

http://www.stressbunny.com/wayv/

http://sa-1.enteract.com/~mghall/tcltk/tcltk.html

7. Credits

----------

author: Pavel Vitis, (c)2001-2002

e-mail: pavel.vitis@seznam.cz

web : http://come.to/lsg/


grdAmp.dll

---------------------------------------------------------------------------------

=========================

| grdAmp version 1.09 |

=========================

==================================================================================

PROGRAMMER

==================================================================================

apart from the fact that the input/output module structures was engineered by

nullsoft, and some of the code uses lsapi.dll from litestep core build, then

everything is designed, coded and maintained by me:

Gustav Munkby (aka grd,grimreaperdesigns)

grd@post.netlink.se

http://floach.pimpin.net/grd/

ICQ: 1349988

well, that's about what I'll let you know about me... =)

==================================================================================

DISCLAIMER!

==================================================================================

this is not a normal winamp-frontend-litestep-module. it's a module that wraps the

basic functionality of winamp but WITHOUT using winamp itself.

this is achieved by interfacing the winamp input and output plugins...

This enables you to use the standard winamp- input/output plugins, but I won't

tell you to do so, but rather I will tell you to only use other plugins as

nullsoft/AOL most probably think that their plugins are their property and should

only be used in their programs...

I've also reversed enginered the plugin architecture completely without permission

so anyone at nullsoft,AOL or anywhere else might say that the plugin-architecture

is theirs and theirs alone. If that is the case, then I won't provide any

resistance and I will stop developing for it and I will delete every instance of

it that I've uploaded...

Another point is that some of these libraries (in_mp3.dll for example) utilizes a

decoding algorithm that you'll have to pay for to be able to use. This means that

this not only is unethical it's also illegal. (as I haven't paid them anything at

all). But I tell everyone right here (once more) that I will NOT encourage the

use of of winamps "own" input/output plugins and no other modules that were

designed especially to only work with winamp.

On the other hand, this module won't be distributed with those modules and

therefore require winAmp to run. This ought to make the whole thing legal. It's

nothing more than a frontend to winamp which simply doesn't require winamp to be

active.

It's also completely non-commercial as I get absolutely no money at all by doing

this, and then it's only done for a small scale of people, namely liteStep users,

to allow them to freely integrate an mp3-player into their favourite shell

without the need of having a winamp-window open.

And once again:

If there is any legal problem whatsoever, I will delete everything which I've done

with this project. I do not in any way want to interfere with nullsoft, AOL or

anyone else for that matter. This was just an exercise in my programming skills.

Or rather my reverse-engineering programming skills... =)

==================================================================================

FUNCTIONALITY

==================================================================================

if we speak about functionality instead then this mod is quite similar to geekamp

as it provides you with a couple of bangs to control your music experience.

the !bangs that are supported:

!grdAmpPlay

starts to play the first song in the "play-stack"...

!grdAmpPlay <file> [<files>]

clears the playstack and starts to play <file>. <files> represent the possability

to have several files after each other on the "cmd-line"...

!grdAmpPlay <dir>

enumerates all files in the directory and adds the files it can play to the play-

stack and starts playing the first file...

!grdAmpOpen

opens up a common-dialog-box and then start playing the selected files...

!grdAmpAdd

lets you choose one or multiple files to add to the playstack from a standard

open-common-dialog

!grdAmpAdd <file> [<files>]

add <file> to the playstack.... <files> represent the possability to have several

files after each other on the "cmd-line"...

!grdAmpAdd <dir>

enumerates all the files in the directory and adds them to the playstack.

!grdAmpListClear

removes all files waiting to play. This removes all files from the stack... but

if there is a file playing currently it will not stop playing. But on the other

hand the current playing file will be removed and if you do a !grdAmpStop you

won't be able to start that file again with a "no-arguments-!grdAmpPlay"...

!grdAmpListShuffle

rearrange all the files in the playstack. this will alter the order of the play-

stack permanently...

!grdAmpListSave <file>

save the current playStack to <file> (it'll be saved in the .m3u format allthough

.m3u will not be added to the end of the name if it's not there)

!grdAmpNext

goes to the next song in the playstack. this is wrapped so when you reach the

last file !grdampnext will get you to the first one again...

!grdAmpBack

goes to the previous song in the playstack. !grdampback is wrapped in a similar

way as !grdampnext.

!grdAmpPause

!grdAmpStop

!grdAmpVolume <i>

set volume to <i> which can be in this interval [0-255], where 255 is max

!grdAmpVolumeRel <i>

set volume relative to the current volume so !grdAmpVolumeRel 5 raises the volume

by 5 steps...

!grdAmpPanning <i>

set panning to <i>, which can be in the interval [-127 - 127], -127 is leftmost

and 127 is rightmost...

!grdAmpPanningRel <i>

set panning relative to the current panning. see !grdAmpVolumeRel

!grdAmpJumpToTime <i>

go to second <i>

!grdAmpFF <i>

fastforward <i> seconds

!grdAmpREW <i>

rewind <i> seconds

!grdamprandom

toggles whether grdamp should choose the next file to play on a randomizing basis

!grdamprepeatone

toggles whether grdamp should start the same song over when the end of the song

is reached.

!grdamprepeatall

toggles whether grdamp should start over with the first file in the playstack when

it has finnished the last track in the playstack.

!grdampconfig

show the config dialog for the currently active input module. this means the one

you're playing music from...

that's about it for now there's also a couple things that you would want to enter

into your step.rc to make it work. those are:

grdAmpOutputModule <dll>

specify the path of "out_wave.dll" in your plug-ins directory. or "out_ds.dll"

depending if you wanna use wave-output or directsound.

*grdAmpInputModule <dll>

(the * in the beginning is important and enables you to use several different

input libraries... (it will not work if you do not include this line))

specify the path of "in_mp3.dll" in your plug-ins directory. or another input-file

if you wanna use grdAmp to play other things than mp3's

grdAmpListRandom <boolean>

if you want grdAmpRandom to be toggled on by default

grdAmpListRepeatOne <boolean>

if you want grdamp to repeat one by default

grdAmpListRepeatAll <boolean>

if you want grdamp to repeat all by default

==================================================================================

REQUESTS / PROBLEMS

==================================================================================

First of all, I have to note that the order of these items does not inflict upon

in which timespace they "might" be added... but only the order they appeared on

the scene.

/-------------------------------------------------------------------------------->

| release the source-code

\--------------------------------------------------------------------------------\

/--------------------------------------------------------------------------------/

|

| what's this:

| well, release the source-code for this project

|

| problems:

| legal problems... I don't want to be fucked because of something someone else

| did to this project... and I also don't want anyone else to get in trouble for

| using it, without knowing where it's from.

| as I'm currently working on deviding the module into smaller classes, it will

| allow me to release the source-code to parts of the module that has nothing

| with the input/output modules

|

| probability:

| slightly higher than before =)

|

\-------------------------------------------------------------------------------->

/-------------------------------------------------------------------------------->

| add support for jamp/amptitle/lsxcommand or any other similar module

\--------------------------------------------------------------------------------\

/--------------------------------------------------------------------------------/

|

| what's this:

| it's all about exporting an interface where these modules can read the current

| title and length of track and so on...

|

| problems:

| none

|

| probability:

| it's allready there in the same way as winamp does it... for coders:

|

| HWND hgrdamp = FindWindow("grdampclass",NULL);

|

| for current title:

|

| GetWindowText(hgrdamp, szTitle, 4096);

|

| for played time in milliseconds:

|

| int elapsedms = SendMessage(hgrdamp,WM_USER,0,105);

|

| for total length of a track in seconds:

|

| int totals = SendMessage(hgrdamp,WM_USER,1,105);

|

| as I don't have all the space in the world I'm going to make the rest of the

| winamp-like messages a little more compressed and instead refer to what you can

| read about winamp. the winamp-like-messages avaliable are:

|

| lParam:{0,100-102,104-106,120-125}

|

| if you have worked with winamp and tried to fetch the information above from

| winamp, then you'll realize that this tries to simulate the exact same methods.

|

\-------------------------------------------------------------------------------->

/-------------------------------------------------------------------------------->

| shortcut !grdampplay bug

\--------------------------------------------------------------------------------\

/--------------------------------------------------------------------------------/

|

| what's this:

| when you try to run !grdampplay from a shortcut, then the playstack is cleared

| and then nothing is played. (it also applies for hotkeys and probably more)

|

| problems:

| when you try to run !grdampplay from a shortcut, there's an argument passed to

| grdamp's bang-command-handler. this makes grdamp believe that you're trying to

| execute a !grdampplay <file> which always results in a stop and the playstack

| being cleared. as this <file> info is just jumbo-mumbo, then grdamp can't start

| the playback of the file and therefore it moves to the next track... which does

| not exist and therefore grdamp ends up being quiet.

|

| probability:

| from my side this is a very low probability as the fault lies inside lsapi.dll

| You need to get a build which is later than 23 october 2000 and this problem

| might be fixed.

|

\-------------------------------------------------------------------------------->

/-------------------------------------------------------------------------------->

| playlist bug

\--------------------------------------------------------------------------------\

/--------------------------------------------------------------------------------/

|

| what's this:

| starting a playlist results in the second file being opened for playback instead

| of the first.

|

| problems:

| this can be caused by two things... either the playlist isn't read correctly and

| thefore the filename of the first song in the playlist gets "whackoed" or it

| could be the fact that grdamp has some kind of incompatability with some file-

| format input-library

|

| probability:

| as soon as I find out what's causing the problem, time will be spent on making

| it work as it should.

|

\-------------------------------------------------------------------------------->

/-------------------------------------------------------------------------------->

| no playstack advance

\--------------------------------------------------------------------------------\

/--------------------------------------------------------------------------------/

|

| what's this:

| when a file is played and reaches the end, then grdamp doesn't automaticly stop

| and continue to the next track.

|

| problems:

| I'm not really sure if this has been fixed or not...

|

| probability:

| as soon as I can edge out anything that results in this fenomenon,

| it will be corrected.

|

\-------------------------------------------------------------------------------->

There's probably lots of problems that I've missed and a lot of feature that you'd

like to see. Just send me an e-mail and I'll add it to this list. (and as soon as

it has reached this list, there's actually a chance that it'll be taken care of).

==================================================================================

VERSION HISTORY

==================================================================================

[version 1.09]-+-[26-12-2000]

finally constructed a workaround for the problems when the volume jumped as soon

as a new track started. this is experimental and therefore only works with output-

plugins that output information to the standard wave-out and also it has not yet

been applied to the panning...

altered the classname of the grdamp main window from "grdamp wndcls" to

"grdampclass", this means that if you had LSXCommand (or anything else) reading

from grdamp before, you'll have to change your settings... =/ this was done to

go in the lines with the modified version of jamp that is included in this release

includes a modified version of jamp (that ONLY works with grdamp)...

[version 1.08]-+-[no public release]

general cleanup and yet another useless attempt to get the volume thing working...

thx blkhawk for the eminent help... allthough it didn't accomplish exactly what

I wanted... so I rewrote the thing myself... =/

[version 1.07]-+-[no public release]

realized I had been doing tons of shit just because I can't look straight... or

at least something like that... problems with music jumping after pauses and after

fastforwarding or rewinding to fast should now be gone...

[version 1.06]-+-[no public release]

tried something to get the volume to work correctly with winamp... better for some

and worse for some (including me)

split the "in-grdamp"-interfaces one more time... now one of them is more or less

a winamp-compatible output-module... this enabled me to code support for dsp-

plugins... and doing it "my" way... which allows you to have several dsp-plugins

active at the same time... also allows a lot of other shit... but I haven't had

time to look into it...

[version 1.05]-+-[03-11-2000]

massive rewrite (so you can expect some buggyness)

most important thing is that the playlist now exists as a separate class. this

actually means that by the next version it's going to be possible to connect an

external playlist. this enables grdamp to be a fullfeatured musicplayer for those

that want that and those who want a lightweight litestep-music-player can have it

another greate addition is the fact that nowadays only the currently active input

plugin is loaded. this will hopefully make it more memory effective. this also

has effect on streams. you will only be able to open streams with a module that

is already open. so to play a stream that in_mp3 can read (don't use in_mp3 still)

you have to first load an mp3 and then load the stream directly after.

!grdampopen has been somewhat improved (thx again blkhawk)

and the module is generally alot cleaner (allthough NeXTer would prolly disagree)

!grdAmpClearStack, !grdAmpSaveStack & !grdAmpShuffleStack have all been renamed to

!grdAmpListClear, !grdAmpListSave, & !grdAmpListShuffle and

grdAmpRandom, grdAmpRepeatOne & grdAmpRepeatAll have all altered names;

grdAmpListRandom, grdAmpListRepeatOne & grdAmpListRepeatAll

this is all to provide a difference between grdAmp inside commands/settings and

grdAmpList specific commands/settings

[version 1.04]-+-[no public release]

bug-corrections here we go... there were lots of bugs in the previous version

added the possability to set the default state of random,repeatall,repeatone...

and added the !grdampopen command (at blkhawks request)

[version 1.03]-+-[30-10-2000]

made the module compatible with older builds of litestep (24.5), purels and

darkstep.

supports a lot of new winamp-style-window-messages, that for instance will enable

lsslider to work with grdamp, which is a great addition.

added !grdampsavestack, (guess what it does)

[version 1.02]-+-[no public release]

corrected some issues with the playstack routine

cleared the recycle bug (I hope)

added support for !grdampconfig

[version 1.01]-+-[24-10-2000]

the whole playstack routine has been rewritten... main reason to this was that I

couldn't get the stl::list to work, so I replaced it with something completely

"mine"... =)

coded support for !grdamprandom to constantly choose randomly from the playstack

and !grdampshufflestack to rearrange the playstack.

!grdamprepeatone and !grdamprepeatall has also been added, and even !grdampback is

there. this is because the playlist never gets deleted from memory (until you do a

!grdampclearstack or start a new !grdampplay <file>/<dir> or whatever)

unfortunately some features may not work as they should (this is due to the

massive rewrite and the lack of testing)...

[version 1.00]-+-[23-10-2000]

now you can type !grdampplay/!grdampadd <dir> and also enhanced the open-common-

dialog-box to support multiple files.

among the general bug-fixes this time, there is the fact that unplayable files

are not added to the playstack in the first case.

and also I feel like I have to point out that the case for grdamp is the same as

litestep in a whole. versiom 1.00 isn't anything special; it's just a version

between 0.99 and 1.01... =)

[version 0.99]-+-[22-10-2000]

the bug which caused !grdampplay after a file being paused cause grdamp to move to

the next track has been corrected.

some of the "time-jumping" bugs should also have been cleared out. they were the

results of timing-problems.

the timer-procedure has also been corrected to support modules that do not act

exactly as I think they ought to.

the type of files avaliable in the open-common-dialog, now correspond to the exact

modules you have loaded. (and you've also got playlists there...)

there's also been some restructuring of the code and some general improvements.

[version 0.98]-+-[19-10-2000]

noodge thought that playlist-support (in form of .m3u and .pls) was needed. and

since that request noodge will refer to me as the minute man... as I wrote the

code in approximately a minute or two... but in difference to what you might think

it is working...

[version 0.97]-+-[no public release]

NeXTer and noogde were complaining about that the continous play didn't work. They

both came up with a nice suggestion which was implemented and works like a beauty,

it seems (as it worked for me earlier). Also fixed the !grdAmpClearStack bang, as

it wasn't connected to the actual bang-command...

[version 0.96]-+-[no public release]

lots of miscellenious small problems with the playback were changed. one of these

was the fact that !grdAmpPlay !grdAmpPlay didn't result in the current song

restarting.

[version 0.95]-+-[no public release]

added the ability to play or add multiple files through !grdAmpPlay or !grdAmpAdd.

[version 0.94]-+-[no public release]

added support for an amptitle-kinda-program... I planned to do this after the hand

of MrJukes, to let him make jamp compatible with grdAmp, but unfortunately he

hasn't yet gotten in touch with me... so I implemented it in a "somewhat-winamp-

kinda-way"... if you want the current playing file check the window-title... it

should be an exact representation of the winamp-title... and if you want the track

length and so on then WM_USER with lParam==105 works in exactly the same way here

as it does in winamp...

rewrote the disclaimer section of this document and also added the problems

section, which will contain all known bugs and misshaps that might happen with the

current version of grdamp...

[version 0.93]-+-[no public release]

fixed some errors with the play-stack routine, hopefully it should be working now

[version 0.92]-+-[no public release]

added a very simple "play stack", this could be considered a limited playlist with

the few options of adding to the list, moving to the next song in the list and

clearing the whole list... doing this required that a few of the bangs had their

respective behaviours altered, the ones affected are; !grdAmpPlay & !grdAmpOpen.

(!grdAmpOpen has been renamed !grdAmpAdd.) Also a completely new bang has been

introduced; !grdAmpNext, guess what it does?

[version 0.91]-+-[no public release]

removed the 8-input-modules limit. An unlimited number of input-modules should now

be supported.

[version 0.90]-+-[no public release]

added the ability to have multiple input libraries... this is good because it

means you can actually use it to play any format that there are winamp input/

output plugins for...

[version 0.89]-+-[no public release]

added a window interface to allow responses to the LM_GETREVID message... the

window will probably be used for other stuff later on (nothing gui'ial, but the

way windows work, I need a window to do lots of things)... =)

[version 0.88]-+-[no public release]

fixed a bug with !grdAmpPlay (and some other bangs also) thx to NeXTer for

pointing this out...

[version 0.87]-+-[no public release]

main interface was created and most things worked smoothly...


grdMagick.dll

---------------------------------------------------------------------------------

grdMagick.dll - alter the appearance of your world!

grdMagick is module for LiteStep, which provides all users with some fantastic (if I may say so) general porpose eyecandy.
What it does is provide whichevery other module you'd like, with an overlay which totally changes the looks of that specific module.
The source for inspiration for this module was the great module lsTransparent by carluchi (Carl Milano).
And not only did I get inspired by lsTransparent, but he also let me look at the source-code for lsTransparent. Allthough almost everything is rewritten, I owe him a great lot of thanx.

developer: Gustav Munkby
grimreaperdesigns@gmx.net

with GREAT help from: Carl Milano
carluchi@stratos.net

evolution

  • [v 1.3.1]
    • corrected the issue with desat, where the scale was inverted.
  • [v 1.3]
    • corrected a bug wich would make grdmagick eat memory and resources
    • <+> added another effect, rect.
  • [v 1.2.1]
    • corrected a bug wich could appear with !grdmagickset
    • <+> added a check so that a chain including itself would not render an infinite loop.
  • [v 1.2]
    • <+> name is now grdMagick. (notice the k)
    • <+> first actual public version.
    • <+> removed some debugging code.
  • [v 1.2 beta 1]
    • <+> added filter and blur/gaus effect. read more
  • [v 1.1 beta 1]
    • <+> added replace effect. read more
  • [v 1.0 beta 1]
    • <0> initial version.

installation

  1. unpack the grdMagick.dll into your modules directory.
  2. add the line to step.rc looking somewhat like this:
    LoadModule $LiteStepDir$\modules\grdMagick.dll
  3. start playin' around with the settings in your step.rc

step.rc commands

*grdMagick <module> <magic/fx> <options>

<module>

the name of the module you want to add your magic to. Path and extension is ignored.

<magic/fx>

could be any magic effect, read about them in the section called effects.

<options>

depending on what magic effect you've choosen. this is all different.

Examples:
*grdMagick popup2 invert
*grdMagick grdtray3 hue 96 0xff00ff
*grdMagick popup2 desaturnation 96

*grdMagickChain <name> [? <vars> ?][<magic/fx> <options>]

<name>

the name used to reference this effect in a *grdMagick statement.

<vars>

[optional], containing variables referenced in the later specified magic/fx. This enables specifying options to a userdefined chain of effects.

<magic/fx>

see *grdMagick

<options>

see *grdMagick

Examples:
*grdMagickChain ghue [?am cl?][invert][hue ?am? ?cl?]
*grdMagickChain invbluehue [invert][hue 96 0x0033ee]

supported !bangs

!grdMagickSet <module> <magic/fx> <options>

<module>

see *grdMagick

<magic/fx>

see *grdMagick

<options>

see *grdMagick

Examples:
!grdMagickSet popup2 invert
!grdMagickSet grdTray3 invbluehue

builtin effects

desat(urate) <amount>

<amount>

[0-255]
amount of desaturation, where 0 is colored and 255 is grayscale.

invert

filter <m11> <m12> <m13> <m21> ... <m33> <factor>

<mXX>

this is a three-by-three matrix:

|m11 m12 m13|
|m21 m22 m23|
|m31 m32 m33|

for every pixel in the image, this matrix will be applied.

Example:

filter-matrix:   image-info:
|0 1 0|          |0x000000 0x110000 0x000000|
|0 0 4|          |0x110000 0x110000 0x001100|
|2 3 0|          |0x000000 0x110000 0x000000|

the pixels are all multiplied with their factor-components, and then summarized

cl = 1 * 0x110000 + 4 * 0x001100 + 3 * 0x110000
   = 0x444400

<factor>

this is the normalizor of the above matrix.
continuing from above, (with factor = 4)

cl = (cl / 4) = 0x444400 / 4 = 0x111100

hue <amount> <color>
<amount> | [0-255] the amount of the new color to be blended into the source.
<color> | the color that should be blended into the source.

gaus/blur

replace <from-color> <to-color>
<from-color> | the color, that should be substituted.
<to-color> | the substituting color.

rect <left> <top> <right> <bottom> <effect>
<left> <top> <right> <bottom> | the coordinates of the box which should be painted with the effect.
<effect> | reference to another effect (may include arguments), that should be used.

known issues

I think grdMagick has to be loaded BEFORE other modules you want to have the effects apply.

additional notes

Nothing here yet, except the fact that I'd like to be presented with a lot of ideas, help and stuff like that.

source license

The code is avaliable for free and you can get it by contacting me through e-mail or another way.
Even if the code is free, and you're allowed to do almost whatever you like with it, I have to restrict it a little. The requirements to use it is:

  • source-code has to be included
  • this documentatory file has to be included

those were the requirements, my wishes are that:

  • you tell me about using my source-code
  • you also mention Carl Milano

the man

Gustav Munkby, online known as grimreaper or grd. I'm the one man behind the concept "grd" which stands for; grim reaper designs, which is my web-page and what I do on the computer.

This is where you find my domains online:

e-mail: | grimreaperdesigns@gmx.net
www: | http://floach.pimpin.net/grd
ls@www: | <www>/ls
grdmagick: | <ls@www>/grdmagick.zip
icq: | 1349988
irc: | #lsdev/#ls2k (nick: grd)


grdTray.dll

---------------------------------------------------------------------------------

<!>==============================================================<!>

< > < >

< > grdTray.dll - system tray module for Litestep! < >

< > < >

<!>==============================================================<!>

< > < >

<#> grdTray is a system tray replacement module for <#>

< > LiteStep which provides greater control over appearance, < >

< > placement and icon layout. < >

< > This text is directly ripped from Maduin's systray.dll < >

< > readme. That is done to point out that this is just my < >

< > version of the module. I must also point out that large < >

< > portions of the code has not yet been modified to suit my < >

< > desires, so I have to thank Maduin greatly for the code. < >

< > < >

< > developer: Gustav Munkby < >

< > grd@swipnet.se < >

< > < >

< > with GREAT help from: Maduin < >

< > maduin@dasoft.org < >

< > < >

< > < >

< > updates < >

<!>--------------------------------------------------------------<!>

< > < >

< > [v3.0 beta 2] < >

< > <+> added code from jugg to make sure that ontop/notontop < >

< > should be working correctly. < >

< > <!> altered some minor things to speed up a cpl things < >

< > <+> this version will actually be released. < >

< > <+> a more approperiate thanx mess has been added to the < >

< > additional notes section. < >

< > < >

< > [v3.0 beta 1] < >

< > <+> rewrote almost all of the code that handles the tray < >

< > in the background, so it's now somewhat dynamic and < >

< > ready to support a lot of new features. < >

< > <!> changed the syntax for *grdTrayAdd a bit, read more < >

< > further down < >

< > <+> implemented two new !BANG commands !grdTrayAdd, which < >

< > uses the same syntax as *grdTrayAdd and also < >

< > !grdTrayDel, which enables you to delete ANY icon. < >

< > <+> changed almost everything to consume less of your < >

< > CPU's power and your memory. < >

< > <+> fixed the problem when grdTray disappeared when you < >

< > clicked the desktop or similar. < >

< > <-> removed the ability to access the bang commands with < >

< > SendMessage(), as it didn't help anyone anywhere. < >

< > <+> a lot of more features and enchancements that I've < >

< > forgotten about. < >

< > <-> as the code has been redesigned completely I might < >

< > included some M$-features (aka bugs), so please have < >

< > patience and help me find them. < >

< > <+> added a default "theme" for the module, and therefore < >

< > the installation instructions has been updated. < >

< > <+> added the option to use "edge snapping", the two new < >

< > rc-commands are grdTraySnap and grdTraySnapDistance < >

< > < >

< > [v2.3 beta 2] < >

< > <+> fixed that nasty transparency bug - that people were < >

< > complaining about < >

< > < >

< > [v2.3 beta 1] < >

< > <+> added support for *grdTrayAdd, it's now possible to < >

< > your own custom icons to grdTray. read all about it < >

< > further down < >

< > <+> made a few tweaks and corrections < >

< > <+> added documentation for the yesterdays new !BANG < >

< > <-> last update in a while, I'll start working on a more < >

< > dynamic approach to support a larger field of options < >

< > somewhere in the future < >

< > < >

< > [v2.2 beta 2] < >

< > <+> added another !BANG, which is named !grdTrayOnTop. < >

< > this toggles whether the tray should be on top or not < >

< > <+> improved the icon's region-generation code, to be much < >

< > faster and memory effective. < >

< > <+> once again improved the background painting routine to < >

< > consume less of your CPU's power. < >

< > <+> redesigned the code in a more "new-edition-core-mod"'s < >

< > way, and spent the world on finding a recycle bug. < >

< > < >

< > [v2.2 beta 1] < >

< > <+> the tray can now be docked as a wharf tile. < >

< > (NeXTer's request, don't know if anyone else likes it) < >

< > <+> fixed a GDI-leak, which makes grdTray the only tray < >

< > which doesn't leak any resources whatsoever. < >

< > <+> changed the painting routine to consume less of your < >

< > CPU's power. < >

< > < >

< > [v2.1 beta 2] < >

< > <+> yet another feature has been imported from systray, < >

< > AutoSizing is now included!!! < >

< > just set grdTrayAutoSize in step.rc, and you're done < >

< > <+> removed a completely useless function, that I left < >

< > inside the source by mistake < >

< > < >

< > [v2.1 beta 1] < >

< > <+> yet another feature has been imported from systray, < >

< > with grdBorderDrag set, you can drag the tray around < >

< > <+> recoded the bang commands, using AddBangCommandEx < >

< > and moved the actual code into the wndproc, which < >

< > makes all the bang commands accessible through < >

< > the SendMessage function... < >

< > <+> added another setting, grdTrayBorderSize, which < >

< > will be used if the other Border settings are omitted < >

< > updated the document which spoke of a similar < >

< > setting < >

< > < >

< > [v2.0 beta 5] < >

< > <+> this update includes the version that should have < >

< > packaged together with beta 4, so this one does work! < >

< > <+> added a new bang, namely; grdTraySize < >

< > < >

< > [v2.0 beta 4] < >

< > <+> bangs now work even if grdTrayAlwaysOnTop isn't set < >

< > <+> corrected an issue concerning win2k's way of handling < >

< > notifyicon structures < >

< > <+> made sure the tray gets redrawn when an icon is < >

< > deleted, accidentially removed this in another update < >

< > <+> removed some outdated files from the source-code and < >

< > added compiled version, lsapi.lib and this file < >

< > <+> corrected some bugs and tweaked the code a little < >

< > < >

< > [v2.0 beta 3] < >

< > <+> grdTray can now load icons saved from systray during < >

< > recycle, so it's easier to switch to grdTray < >

< > <+> changed the effect routine slightly to improve speed < >

< > <+> corrected some bugs to correct the "known issues" < >

< > < >

< > [v2.0 beta 2.1] < >

< > <+> actually deletes the deleted icons from memory < >

< > <+> fix for applications not removing their icons on < >

< > termination, such as ICQ < >

< > <+> swapped the Icon Hue effect colors, to make it RGB < >

< > instead of BGR, don't know why, but it was BGR < >

< > < >

< > [v2.0 beta 2] < >

< > <+> IconHue effect is recoded (no need for msimg32.dll) < >

< > <+> Saturnation (or rather desaturnation effect added) < >

< > <+> re-added the bang-commands < >

< > < >

< > [v2.0 beta 1] < >

< > <+> completely rewritten in a c++ object-oriented way < >

< > <+> new IconHue effect included < >

< > <+> fixed some bugs and tweaked the code a lot < >

< > <+> made it open-source [ see source license ] < >

< > <-> temporarily removed the bang-commands < >

< > < >

< > [v1.0 pre-beta 1] < >

< > <+> a complete systray module < >

< > <+> including all features of Maduin's systray except < >

< > moving, sizing and some more. < >

< > <+> supporting true transparency < >

< > < >

< > < >

< > installation < >

<!>--------------------------------------------------------------<!>

< > < >

<#> 1) unpack the grdTray.dll into your modules directory. <#>

< > < >

<#> 2) add the line to step.rc looking somewhat like this: <#>

< > LoadModule $LiteStepDir$\modules\grdTray.dll < >

< > < >

<#> 3) to enable the default skin, unpack the file grdTray.bmp <#>

< > into your images directory. Then add the settings < >

< > included in grdTray.rc < >

< > < >

<#> 4) start playin' around with the settings in your step.rc <#>

< > and images for the system tray. < >

< > < >

< > < >

< > configuring < >

<!>--------------------------------------------------------------<!>

< > < >

<#> grdTray supports a couple of step.rc settings: <#>

< > < >

<#> grdTrayAlwaysOnTop <#>

< > This is boolean value, which doesn't seam to work if < >

< > desktop.dll is loaded. < >

< > < >

<#> grdTrayHidden <#>

< > This is boolean value, which toggles wether the tray is < >

< > to be shown on startup. < >

< > < >

<#> grdTrayHideIfEmpty <#>

< > This is boolean value. Pretty self-explaining. < >

< > < >

<#> grdTrayX <integer> DEFAULT: 0 <#>

< > The trays position horizontally on the screen, it does < >

< > support negative values, which then will be relative to < >

< > righthand egde of the screen. < >

< > < >

<#> grdTrayY <integer> DEFAULT: 0 <#>

< > The trays position vertically on the screen, it does < >

< > support negative values, which then will be relative to < >

< > bottom egde of the screen. < >

< > < >

<#> grdTrayWidth <integer> DEFAULT: 100 <#>

< > Pretty self-explaining. < >

< > < >

<#> grdTrayHeight <integer> DEFAULT: 20 <#>

< > Pretty self-explaining. < >

< > < >

<#> grdTrayAutoSize <#>

< > This is boolean value, which toggles wether the tray is < >

< > autosizing (adjusting it's size to the number of icons) < >

< > < >

<#> grdTrayIconSize DEFAULT: 16 <#>

< > Pretty self-explaining. < >

< > < >

<#> grdTrayIconSpacingX <integer> DEFAULT: 1 <#>

< > The horizontal space between the tray icons. < >

< > < >

<#> grdTrayIconSpacingY <integer> DEFAULT: 1 <#>

< > The vertical space between the tray icons. < >

< > < >

<#> grdTrayIconHueColor <color> DEFAULT: FFFFFF <#>

< > The color for the IconHue effect. < >

< > < >

<#> grdTrayIconHueIntensity <int> DEFAULT: 0 RANGE: 0-255 <#>

< > The intensity of the color above in the Icon Hue effect. < >

< > < >

<#> grdTrayIconSaturnation <int> DEFAULT: 255 RANGE: 0-255 <#>

< > Icon saturnation, where 255 results in the normal icon < >

< > and 0 results in a monochrome icon. This is applied < >

< > before the Icon Hue effect. < >

< > < >

<#> grdTrayDirection <string> DEFAULT: right <#>

< > The direction which the icons will go in, right means the < >

< > second icon will be placed on the right hand side of the < >

< > first icon. Possible values: right/left/up/down < >

< > < >

<#> grdTrayWrapCount <integer> DEFAULT: 0 <#>

< > After this number of icons a new line of icons will be < >

< > started. If the parameter equals zero this will never. < >

< > happen. < >

< > < >

<#> grdTrayWrapDirection <string> DEFAULT: down <#>

< > The direction which the new lines will go in, right means < >

< > the second icon will be placed on the right hand side of < >

< > the first icon. Possible values: right/left/up/down < >

< > < >

<#> grdTrayBGColor <color> DEFAULT: FF00FF <#>

< > Pretty self-explaining. FF00FF equals transparent. < >

< > < >

<#> grdTrayBorderColor <color> DEFAULT: FFFFFF <#>

< > Pretty self-explaining. FF00FF equals transparent. < >

< > < >

<#> grdTrayBitmap <string> DEFAULT: (none) <#>

< > this should be a regular "ls-path" to a .bmp file. < >

< > < >

<#> grdTrayBitmapTiled <#>

< > This is boolean value, which toggles wether the bitmap < >

< > should be stretched or tiled to fit the tray. < >

< > < >

<#> grdTrayBorderSize <integer> DEFAULT: 0 <#>

< > The width of the default border, which is used only when < >

< > seperate values for the different directions isn't used. < >

< > < >

<#> grdTrayBorderLeft <integer> DEFAULT: 0 <#>

< > The width of the left border, applies to both color and < >

< > bitmap. < >

< > < >

<#> grdTrayBorderRight <integer> DEFAULT: 0 <#>

< > The width of the right border, applies to both color and < >

< > bitmap. < >

< > < >

<#> grdTrayBorderTop <integer> DEFAULT: 0 <#>

< > The width of the top border, applies to both color and < >

< > bitmap. < >

< > < >

<#> grdTrayBorderBottom <integer> DEFAULT: 0 <#>

< > The width of the bottom border, applies to both color and < >

< > bitmap. < >

< > < >

<#> grdTrayBorderDrag <#>

< > This is boolean value. If specified, you can move the tray < >

< > if you click on the border. < >

< > < >

<#> grdTraySnap <#>

< > This is boolean value. If specified, the tray snaps to the < >

< > egde of the screen whenever it's 10 or less pixels to the < >

< > egde. < >

< > < >

<#> grdTraySnapDistance <integer> DEFAULT: 0/10 (read above) <#>

< > If specified, the tray snaps to the egde of the screen < >

< > whenever it's the specified amount of pixels or less to < >

< > the egde of the screen. < >

< > < >

<#> That was all the configuration parameters in step.rc <#>

< > < >

< > < >

< > < >

< > *More STEP.RC commands < >

<!>--------------------------------------------------------------<!>

< > < >

<#> Since v2.3 you can add your own icons to your grdTray! <#>

< > This is achieved easily by specifiying a line like the < >

< > following in your STEP.RC: < >

< > < >

<#> *grdTrayAdd icon=<icon> onLDown=<action> onLUp=<action> \ <#>

< > onLDblClk=<action> onRDown=<action> \ < >

< > onRUp=<action> onRDblClk=<action> \ < >

< > onMDown=<action> onMUp=<action> \ < >

< > onMDblClk=<action> tip=<tip> < >

< > < >

<W> <icon>; is the same as icon always refers to in liteStep, <W>

< > an icon, an icon library, and exe or or whatever. < >

< > < >

<O> <tip>; is a tooltip for your specific icon. <O>

< > < >

<M> <action>; is a command, !BANG or similar method. <M>

< > < >

<#> This will prolly make your tray a lot more useful than it <#>

< > was before. Suggestions indeed are welcome. < >

< > < >

< > < >

< > < >

< > supported !BANG commands < >

<!>--------------------------------------------------------------<!>

< > < >

<#> grdTray supports a couple of bang commands: <#>

< > < >

<#> !grdTrayShow <#>

< > shows the tray if it's hidden. < >

< > < >

<#> !grdTrayHide <#>

< > hides the tray if it's visible. < >

< > < >

<#> !grdTrayToggle <#>

< > shows the tray if it's hidden & hides the tray if it's < >

< > visible. < >

< > < >

<#> !grdTrayOnTop <#>

< > sets the tray on top if it's not & removes from top if it < >

< > currently is on top. < >

< > < >

<#> !grdTrayMove <int>|x <int>|y <#>

< > move the tray to coordinates x,y (negative values are < >

< > supported! < >

< > < >

<#> !grdTraySize <int>|w <int>|h <#>

< > size the tray to w=width & h=height (negative values are < >

< > NOT supported! < >

< > < >

<#> !grdTrayAdd <string>|config <#>

< > add an icon of your own to the tray. It uses the same < >

< > syntax as the *grdTrayAdd config above, so look there if < >

< > you're interested. < >

< > < >

<#> !grdTrayDel <int>|n <#>

< > delete ANY icon, n is the 1-based number of the icon, < >

< > if n is negative, it's the 1-based icon from the end of < >

< > the icon list instead of the beginning. if n isn't < >

< > provided or equals 0 then the last icon is removed. < >

< > < >

<#> That was all the bang commands supported. <#>

< > < >

< > < >

< > < >

< > known issues < >

<!>--------------------------------------------------------------<!>

< > < >

< > it's not fully win2k (or winME?) compatible... < >

< > < >

< > < >

< > < >

< > additional notes < >

<!>--------------------------------------------------------------<!>

< > < >

< > Nothing here yet, except the fact that I'd like to be < >

< > presented with a lot of ideas, help and stuff like that. < >

< > < >

< > can't thank maduin enough for the basis of this module. < >

< > he also deserves credits for the win2k implementation he's < >

< > working on. < >

< > < >

< > < >

< > < >

< > source license < >

<!>--------------------------------------------------------------<!>

< > < >

< > The code is avaliable for free and you can get it by < >

< > contacting me through e-mail or another way. < >

< > Even if the code is free, and you're allowed to do < >

< > almost whatever you like with it, I have to restrict it < >

< > a little. The requirements to use it is: < >

< > < >

< > >> source-code has to be included < >

< > >> this documentatory file has to be included < >

< > < >

< > those were the requirements, my wishes are that: < >

< > < >

< > >> you tell me about using my source-code < >

< > >> you also mention Maduin < >

< > < >

< > < >

< > < >

< > the man < >

<!>--------------------------------------------------------------<!>

< > < >

< > Gustav Munkby, online known as grim reaper or grd < >

< > The man behind the concept "grd" which stands for; < >

< > grim reaper designs, which is my web-page and what I do < >

< > on the computer. < >

< > This is where you find my domains online: < >

< > < >

<?> e-mail: grd@post.netlink.se <?>

< > < >

<?> webpage: http://home.swipnet.se/grd/ <?>

< > < >

<?> grdTray: http://home.swipnet.se/grd/ls/grdtray.zip <?>

<?> -source: http://home.swipnet.se/grd/ls/grdtray.src.zip <?>

< > < >

<?> lsAmp: http://home.swipnet.se/grd/ls/lsamp.zip <?>

< > < >

<?> icq: 1349988 <?>

< > < >

<?> irc: #lsdev/#litestep (nick: grd/grd_ls/grd-ls) <?>

< > < >

< > < >


HatBangs.dll

---------------------------------------------------------------------------------

HatBangs v0.16

An improved VariousBangs by Andrew Sutherland (sombrero@catgufu.org)

This is a bangs module based off of "Remco de Jong - [rDJ]"'s VariousBangs

LoadModule (bangs.dll).

--- What's New

Version 0.16 adds:

Now will load on NT4/95 systems. Multi-monitor features are automatically

disabled.

Version 0.15 adds:

!CloseCurWindow

!ToggleOnTop

!GotoBookmark now toggles the window to minimized if it was already in the

foreground.

--- Overview

VariousBangs supported:

!SetWallPaper <bitmap>

!ChangeRes <bitsperpixel> <width> <height>

!ToggleScreenSaver

HatBangs modified the following to work as such:

!ChangeRes <bitsperpixel> <width> <height> <monitor number> <refresh rate>

HatBangs adds the following:

!SetBookmark <0 through 9, inclusive>

!GotoBookmark <0 through 9, inclusive>

!SwapAppMonitor (noresize)

!CloseCurWindow

!ToggleOnTop

--- More in-depth info

!ChangeRes <bitsperpixel> <width> <height> <monitor number> <refresh rate>

The addition of ChangeRes allows you to change the resolutions of any monitor

in a multimonitor setup. It also allows you to optionally specify the refresh

rate that should be used on that monitor. (That option is thanks to my Rage128

under Win2k which has no 'optimal' refresh rate and thus seems to believe that

70Hz is more aesthetically pleasing than 85Hz.)

If you want to leave a setting as is, you can put "default" in its place. In

the case of the monitor number, that will opt to use your first monitor. This

default value also takes effect if you opt to omit an option. (Omitting is

defined as the bang command running out of parameters. Using two spaces and

thinking that means you're omitting something doesn't count.)

!SetBookmark <0 through 9, inclusive>

!GotoBookmark <0 through 9, inclusive>

This is for all of you who use bookmarks in your IDE. I have no clue whether

this will be useful or not, but I could see it being useful. When you invoke

the SetBookmark command, the window which currently has foreground status is

saved into the specified slot number. When you invoke the GotoBookmark

command, the window stored in that slot number is returned to foreground

status. (Foreground status == currently active window.)

If you 'goto' a bookmark for a window that currently has foreground status,

the window will be minimized.

This would probably be useful in the cases where you have many IE windows

open and you don't want to have to hover over the icons/click on them

to get where you want to be.

!SwapAppMonitor (noresize)

This moves the window which currently has foreground status to your *other*

monitor. If you have more than 2 monitors, this will only work for windows

on the first two monitors, and it will only move it from one of the monitors

to the other. If I find a way to expand my usable desk space to fit a third

monitor on, then maybe I'll add support for more. Source is supplied if you

have three monitors (or more).

Because the monitors may be running at different resolutions, if you omit the

"noresize" parameter, the window will be resized to make it take up the same

percentage of horiz/vert space on the other monitor. If you tack on

"noresize", then it will simply re-position the window without resizing it.

On two monitors running at the same resolution, either way you get the same

result.

!CloseCurWindow

As one might expect, it closes the current window. This is for those of you

who are lazy like me and don't want to have to reach all the way for Alt-F4.

!ToggleOnTop

Toggles the always-on-top status of the current window. I didn't want to have

to assign two keys to accomplish this, hence this bang.

--- Update Log

v 0.11 - Fixed bookmark so minimized windows are restored.

--- Installation Info

It's a LoadModule. An example line for your step.rc, assuming you put it in

'modules' off of your LiteStep root is:

LoadModule "$LiteStepDir$\modules\hatbangs.dll"

--- Example step.rc stuff

Here's a hunk'o my step.rc. Note that the resolution stuff operates on my

second monitor and has it run at 85Hz at both resolutions. One might

suspect that the monitor can run at much higher refresh rates at 640x480,

and you're right. It runs at 160Hz. But, in a confusing move, the monitor

claimed it was still running at 85Hz (and it doesn't lie normally). When

I went to the refresh rate options in Win2k for it, it claimed it was running

at the proper refresh rate, so I can only conclude that ATI is evil.

; --- Res Change

*HotKey Win O !ChangeScreenRes 16 640 480 2 85

*HotKey Win P !ChangeScreenRes 16 1280 1024 2 85

; --- Bookmarks

; Set

*HotKey Ctrl+Win 1 !SetBookmark 1

*HotKey Ctrl+Win 2 !SetBookmark 2

*HotKey Ctrl+Win 3 !SetBookmark 3

*HotKey Ctrl+Win 4 !SetBookmark 4

*HotKey Ctrl+Win 5 !SetBookmark 5

*HotKey Ctrl+Win 6 !SetBookmark 6

*HotKey Ctrl+Win 7 !SetBookmark 7

*HotKey Ctrl+Win 8 !SetBookmark 8

*HotKey Ctrl+Win 9 !SetBookmark 9

*HotKey Ctrl+Win 0 !SetBookmark 0

; Goto

*HotKey Win 1 !GotoBookmark 1

*HotKey Win 2 !GotoBookmark 2

*HotKey Win 3 !GotoBookmark 3

*HotKey Win 4 !GotoBookmark 4

*HotKey Win 5 !GotoBookmark 5

*HotKey Win 6 !GotoBookmark 6

*HotKey Win 7 !GotoBookmark 7

*HotKey Win 8 !GotoBookmark 8

*HotKey Win 9 !GotoBookmark 9

*HotKey Win 0 !GotoBookmark 0

; --- Swap App

*HotKey Win A !SwapAppMonitor

--- License

Since this is a derivative work of [rDJ]'s, I suppose it's licensed under

whatever license he had it under. (Which he forgot to specify.) But since

it's a LiteStep module which is dynamically linked into LiteStep and LS is

GPL, I'm presuming it *must* be GPL. So, for all intents and purposes,

this code is released under the GPL, version 2 or later at your preference.

There is no warranty. You use it at your own risk. Especially if you try

to use a refresh rate your monitor doesn't support. Using a refresh rate

your monitor doesn't support while driving is right out.

--- Source Code Notes

The source is attached. [rDJ]'s VariousBangs originally built under Visual

C++. My install of Visual C++ has been downright bitchy, causing me to give

up on it. After deeming it possessed, I returned to my Borland roots and

built the dll using Borland C++ Builder. (Maybe if I remembered what

the MS equivalent of implib was, I wouldn't have had to do this.)

The .dll is currently statically linked against the BCB RTL which explains

why it's not quite as slender as it could be. I tried to trick it into

using MSVCRT, but I ran into some bad voodoo and gave up. It's 54k or so

now which is all I care about. It only uses sprintf and atoi/atol, so

this isn't causing any horrible malloc side-effects to occur.

If you make any improvements, I'd appreciate it if you'd let me know/send

me the changes so I can stick them in my copy. If not, that's fine.

--- Requests

If you run some form of LiteStep website and want to put this on there,

please link to the catgufu webserver instead of hosting the file locally.

(I like to watch the webhits graphs change.) The server is more than fast

enough to handle the 20 hits you'd otherwise serve yourself. Also, please

provide a link directly to its specific page on the server.

The webpage:

http://www.catgufu.org/projects/hatbangs.html

The file:

http://www.catgufu.org/downloads/hatbangs.zip

--- Author Contact Info

Andrew Sutherland

sombrero@catgufu.org

http://www.catgufu.org/


Hotspots.dll

---------------------------------------------------------------------------------

_ _ ___ _____ ____ ____ ___ _____ ____ ____ _ _

| | | |/ _ \_ _/ ___|| _ \ / _ \_ _/ ___| | _ \| | | |

| |_| | | | || | \___ \| |_) | | | || | \___ \ | | | | | | |

| _ | |_| || | ___) | __/| |_| || | ___) || |_| | |___| |___

|_| |_|\___/ |_| |____/|_| \___/ |_| |____(_)____/|_____|_____|

----------------------------------------------------------------

hotspots.dll v0.62 September 27, 2001

----------------------------------------------------------------

Pavel Vitis

pavel.vitis@seznam.cz

================================================================

1. Description

With Hotspots you can define transparent rectangular areas on

the screen called "hotspots". You will get ability to trigger

events (execute programs or !bangs) on mouse over, or on mouse

click. You can attach different cursor shape to each hotspot,

assign tooltips, transparently snap hotspot to any window, etc.

================================================================

2. History

v0.62 / September 27, 2001

* Win2K: Finally I'm able to test / debug HOTSPOTS on Win2K

* Win2K: Fixed so already open application is correctly sent

into foreground, when in Win2K

* Win2K: Fixed functions operating with processes/modules so

it works now on Win9x/Win2K/WinNT

* Win2K: Improved KMHOOK.DLL for Win2K

* Win2K: Fixed handling of mouse move messages

+ Win2K: Since it seems that something like "exact timing"

is history in Win2K, I had to add parameter:

HotspotsTimerResolution ms

(Use 10 for Win9x, 50 works for me on Win2K)

- Win2K: Changing of cursor shape is not working properly

in Win2K. I'm not able to fix it ...at least for now

+ New window animated rectangle effect, when switching

to hidden/minimized window (HotspotsWindowAnimation).

There are four more hidden (undocumented) parameters

that control this feature for you to find... :)

* Tested successfuly on Windows 2000 SP2, Windows 98 SE

v0.61 / August 15, 2001

* Fix: RevisionID strings wasn't returned correctly

* Due to LSDev-builds bug in LCReadNextLine, I was forced

to change config format again (hope it's last). So, use

"*hs ~" instead of "*hs~" to end hotspot definition, or

simply "*hs"

* Changed timer to WM_TIMER based. Again, latest LSDev build

block SetTimer() to TimerProc() directly

* Correction in this doc, all double-click actions are

"xxx_xdb" and not "xxx_xbd"

(i.e.: action_ldb = action left-double-button)

* Some more little fixes

v0.60 / August 08, 2001

* Completely rewritten into C

* Changed STEP.RC configuration format - much more

flexible and lucid now

- Old configuration format is not supported anymore,

conversion to new format should be very easy for you

* !HotspotUpdate format changed too, you may update

any number of parameter(s), in any order

+ Added optional tooltips to hotspots

+ Added more actions (Left+Right / Left+Middle /

Middle + Right mouse buttons simultaneously pressed)

+ Added sound_enter, sound_leave, sound_action parameters

+ Added flags: B, I, U, 1, 2, 3

- Removed C flag, replaced by 1, 2, 3 flags (consume click

of 1=left, 2=right or 3=middle buttons)

* Hotspot rectangle may be defined as relative to its snap

window

* Fixed handling of double-clicks

* KMHHOOK.DLL also rewritten into C, now should be more

stable and faster

* Source code is now available under GPL license

* ...and *a lot* of another bugfixes!

v0.56 / February 12, 2001

* bugfix: occassional crash on mouse click

* bugfix: compatibility with older version of KMHOOK.DLL

* bugfix: changed timer initialization - now works with

newest LS builds

* bugfix: cursors from custom cursor schemes are now

correctly refresed

* bugfix: hotspots reacts on screen-resolution changes

+ Size can have negative value (it is then offset of

right hotspot edge from right screen edge)

* tweaked this documentation

* updated to-to list (below) - some suggestions?

! WARNING: read updated installation instructions (below)

v0.55 / January 31, 2001

+ Hotspot can be attached to specified window(s)

idea by: xnowfall <xnowfall@xnowerks.org>

+ Add '@' before program name to run it hidden

+ Added HotspotsWindowAnimation parameter

+ Hotspots are disabled during mouse-dragging

* "Name" parameter in commands/bangs may include

wildcards (see Note below)

* Restoring of application window improved - when

application is already running and "O" (one instance)

flag was used

* Optimizations of window handling code

* Delay time now in 1/100 second ticks

* Uses new kmhook.dll v1.1

* Adjusted to work on PureLS 28.01.01

v0.54 / January 21, 2001

* bugfix: hotspot not transparent: definitely fixed

* bugfix: resource leak in cursor-handling

* Improved fullscreen detection

* "Delay" maximum value increased (actualy 864000 = 24h)

(requested)

* Improved cursor setting code

+ Added HotspotsDisabledInFullScreen

+ Added 'F' flag (enabled in Fullscreen)

+ Added bangs !HotspotEnable / !HotspotDisable to control

single hotspot (Same as !HotspotUpdate "Name" "D")

+ Added few new cursors

+ Now uses KMHOOK.DLL (keyboard & mouse systemwide hook)

Copy it along with HOTSPOTS.DLL

* DLL overhead reduced

v0.53 / June 29, 2000

* bugfix: action_out was not properly disabled when "D"

flag used

+ Added 'O' (OneInstance) flag

+ Added experimental feature - Hotspots are disabled

when any application is running fullscreen. It should

prevent conflicts with some games

_____ / June 28, 2000

* Updated readme

+ Added sample .rc file HOTSPOTS.RC

v0.52 / June 24, 2000

+ Added 'P' flag

+ Added ability to load custom mouse-over cursors from

file (.CUR, .ANI), added HotSpotCursorDir variable

+ Added 18 new click+shiftkey actions

+ Some sample cursors

v0.51 / June 23, 2000

* Hotspots click-through bug now *should* be fixed.

Hotspots weren't transparent for mouse-clicks in

previous beta version.

Try it and let me know.

v0.51 beta / March 1, 2000

+ Added !HotspotsToggle bang (To toggle single hotspot,

use !HotspotUpdate "Name" "D")

+ Added six mouse-click actions: action_lb, action_rb,

action_mb, action_lbd, action_rbd, action_mbd

+ Custom cursor change on hotspot mouse-over

! Hotspots do not pass mouseclick to underlaying windows.

It might be a big problem for some sort of use. Please

take this into account and do not use this version if it

is problem for you.

+ New LitestepGoodies mirror at http://lsg.come.to/

v0.5 / February 5, 2000

* Hotspots under WinNT with no limitations. Key modifiers

now works here.

* Fixed bug: Unable to disable hotspots

* Flags are now "toggle" based

+ New flag "0" - clear all previously set flags

v0.4a / January 24, 2000

* Hotspots tested under WinNT, removed key-modifiers

actions in WinNT/2K.

v0.4 / November 10, 1999

* Fixed bug that caused crashes on WinNT (timerproc)

+ Hotspots are automatically disabled when screensaver is

running

+ Hotspots.dll now returns RevisionID string

+ Added some items into to-do list

v0.3 / September 26, 1999

* Optimizations

* Format of hotspot definition slightly changed

+ Added separate actions for Ctrl/Shift/Alt key modifiers

+ Added mouse-out action

v0.2 / September 07, 1999

* Fixed some ugly bugs

* Fixed some minor bugs

* Some internal optimizations

+ Coordinates can be negative values

+ Sizes can be zero - they are recalculated to maximum

+ Option to start hotspots disabled

+ Added params to hotspots

+ Added !HotspotsEnable

+ Added !HotspotsDisable

+ Added !HotspotUpdate

v0.1 / September 06, 1999

+ First release, very raw

================================================================

3. Installation

3.1. Files installation:

First, copy HOTSPOTS.DLL and KMHOOK.DLL directly into your

Litestep directory. If you are upgrading from previous version,

first ensure that both modules HOTSPOTS.DLL and KMHOOK.DLL are

unloaded, otherwise you will encounter file-sharing errors

when trying to overwrite these files.

KMHOOK.DLL may be shared by another modules too, so unload all

modules that use it (currently HOTSPOTS.DLL, ONIDLE.DLL,

MOUSEHIDE.DLL, GESTURES.DLL, WINRECT.DLL). Issue !UnloadModule

bang on all these modules, or simply quit Litestep/PureLS.

Then overwrite files with their new versions.

It is highly recommended to use newest version of KMHOOK.DLL.

You can always download the latest version at:

http://lsg.come.to/other/kmhook.zip

Setup some hotspots in STEP.RC (below) and load module in

STEP.RC file:

LoadModule "c:\litestep\hotspots.dll"

or via bang command:

!ReloadModule "c:\litestep\hotspots.dll"

================================================================

4. Settings

4.1. STEP.RC syntax is as follows:

*hs "hotspot name"

*hs flags flags_list

*hs cursor cursor_name_or_path

*hs rect x-pos y-pos width height

*hs delay time_in_ms

*hs snap_win class_name

*hs snap_mod module_name

*hs action_xx action_string

*hs ~

4.2. "name"

is the unique identifier of the hotspot. Use some

descriptive string here. Multiple hotspots can share same name.

This name is used to reference the hotspot in other operations/bangs.

4.3. "flags"

is string of at least one of flags:

S - *S*ilent mode - hotspot doesn't beep

D - *D*isabled mode - hotspot is initially disabled

X - Start application ma*X*imized

M - Start application *M*inimized

O - *O*ne Instance - Run only one application instance. If already

running - just activate its window

F - Enable this hotspot when application is in *F*ullscreen mode

I - *I*gnore shift keys (Ctrl, Alt, Shift)

B - Do not require *B*utton-down event for mouse click actions

(normally, button-actions are triggered after button-down-then-up

sequence)

U - Always run o*U*t action, even if in-action has not been triggered yet

1 - Consume left mouse button clicks (*1*-st button)

2 - Consume right mouse button clicks (*2*-nd button)

3 - Consume middle mouse button (if present) clicks (*3*-rd button)

0 - (zero) clear all previously set flags

Any specified flag toggles its previous state.

Place '+' before flag to set it, '-' to clear it

*example*:

*hs flags OX1

4.4. "cursor"

defines custom mouse-over cursor

1) It is full path to .ANI or .CUR cursor file

2) Or any of predefined names:

0 (zero) clear previously defined cursor

APPSTARTING Standard arrow and small hourglass

ARROW Standard arrow

CROSS Crosshair

IBEAM Text I-beam

NO Slashed circle

SIZE Windows NT only: Four-pointed arrow

SIZEALL Same as IDC_SIZE

SIZENESW Double-pointed arrow pointing northeast and southwest

SIZENS Double-pointed arrow pointing north and south

SIZENWSE Double-pointed arrow pointing northwest and southeast

SIZEWE Double-pointed arrow pointing west and east

UPARROW Vertical arrow

WAIT Hourglass

HAND Hand (hyperlink pointer)

There are some sample cursors available for download on my site.

I suggest to copy them to Litestep\Cursors directory and

set path variable (do not forget to put "\" at the end):

HotspotCursorDir "c:\litestep\cursors\"

*examples*:

*hs cursor anim_arrow.ani

; this is the same as above:

*hs cursor c:\litestep\cursors\anim_arrow.ani

*hs cursor special\wheel_cur.ani

; this is the same as above:

*hs cursor ..\cursors\special\wheel_cur.ani

4.5 "rect"

define hotspot rectangle as position and size.

You can use negative values.

Width, Height are in pixels. Zero value "0" means maximum

size (hotspot width/height reaches opposite screen border).

Negative values in position means that position will be substracted

from right/bottom screen border.

In case you are defining snap-on-window hotspot, the size may

be ommited, hotspot will cover entire snap window area.

Position and size is taken relative to global screen coordinates,

or relative to snap window, if you specified any with snap_class,

snap_module or snap_title.

*examples*:

*hs rect 0,0,120,20

*hs rect 0 0 0 10

*hs rect -2:0:0:0

As you can see, to separate coordinates, ' ', ',' or ':' characters

may be used.

4.6. "delay"

is the time interval (in 1/10 sec) that defines how

long should mouse pointer stay in the hotspot area before

triggering associated action. It is here to avoid accidental

actions when working with mouse.

*example*:

*hs delay 0

4.7. "action_xx"

may be any executable, file, or !bang command.

If non-executable file is specified, it will be open with associated

application.

You can prefix filename with '@' to force hidden start of application.

actions can be:

action_in, action_enter Mouse in

action_out, action_leave Mouse out

action_shift Mouse in + Shift key

action_alt Mouse in + Alt key

action_ctrl Mouse in + Ctrl key

action_lb Left button click

action_rb Right button click

action_mb Middle button click

action_lbd Left button double-click

action_rbd Right button double-click

action_mbd Middle button double-click

action_lrb Left + right button simultaneously

action_lmb Left + middle button simultaneously

action_mrb Middle + Right button simultaneously

action_shift_lb Left button click + ShiftKey

action_shift_rb

action_shift_mb

action_alt_lb

action_alt_rb

action_alt_mb

action_ctrl_lb

action_ctrl_rb

action_ctrl_mb

action_shift_ldb Left button double-click + ShiftKey

action_shift_rdb

action_shift_mdb

action_alt_ldb

action_alt_rdb

action_alt_mdb

action_ctrl_ldb

action_ctrl_rdb

action_ctrl_mdb

*examples*:

*hs action_in !screensaver

*hs action_out !screensaverstop

*hs action_shift "control.exe desk.cpl ,1"

4.8. "snap_module", "snap_class", "snap_title"

if defined at least one of these parameters, hotspot will snap on

any window matching that criteria. It will cover entire window area,

or if rect is defined, it will maintain its position and size relative

to window's position and size.

*examples*:

*hs snap_module explorer.exe

*hs snap_class CABINETCLASS

*hs snap_title "control panel"

4.9. "sound_enter", "sound_leave", "sound_action"

allows you to specify different sounds to be played when triggering

actions

4.10. You can define sound that will play when action is triggered:

HotspotBeep "path_to\beep.wav"

To play any system event sound, use one of following predefined names:

SYSTEMSTART

SYSTEMEXIT

SYSTEMHAND

SYSTEMASTERISK

SYSTEMQUESTION

SYSTEMEXCLAMATION

SYSTEMWELCOME

SYSTEMDEFAULT

You can disable hotspots functionality at startup by specifying:

HotspotsDisabled

4.11. And there are some !Bangs:

!HotspotsEnable

!HotspotsDisable

!HotspotsToggle

!HotspotEnable "Name"

!HotspotDisable "Name"

It is possible to use wildcards in Name parameter

Update hotstpot values:

!HotsopotUpdate "name" parameter-1=option-1,option-2,...option-n ... parameter-n=option-1,option-2,...option-n

*example*:

!HotspotUpdate "topbar" rect=0,0,0,20 tooltip="Click for popup" action_lb=!Popup

================================================================

5. Notes:

Wildcards may be used in some parameters:

"Name" in *HotspotUpdate, !HotspotUpdate

"Name" in !HotspotEnable, !HotspotDisable

"ModuleName", "ClassName" in *Hotspot

Hotspots.dll uses LSAPI function match() to evaluate wildcards.

Taken from LSAPI.C source documentation:

---------

'*' matches any sequence of characters (zero or more)

'?' matches any character

[SET] matches any character in the specified set,

[!SET] or [^SET] matches any character not in the specified set.

A set is composed of characters or ranges; a range looks like

character hyphen character (as in 0-9 or A-Z). [0-9a-zA-Z_] is

the minimal set of characters allowed in the [..] pattern

construct.

Other characters are allowed (ie. 8 bit characters) if your

system will support them.

To suppress the special syntactic significance of any

of `[]*?!^-\', and match the character exactly, precede it

with a `\'.

---------

================================================================

6. Example step.rc entries:

See enclosed hotspots.rc file to get some examples.

================================================================

7. Features, limitations

If any of your hotspots will overlap, the control over overlapped

region takes hotspot defined later.

You can define up to maximum of 50 hotspots.

"This should be enough for everyone..." ;)

================================================================

8. TO-DO list - Plans for future versions

1) Optional list of excluded apps (especially games running in

fullscreen)

2) Allow hotspots to be overlapped

3) Different flags for each action type

7) Rewrite this blahblah to html format to make it more readable.

================================================================

9. Known bugs

1) When mouse cursor leaves the hotspot too fast after triggering

in_action, the out_action does not execute. I have no idea... :-\

2) Crashes in Windows 2000: if you experience this problem, please

read BUGREPORT.TXT file.

Any suggestions will be welcome too, don't hesitate and email me.

================================================================

9. Troubleshooting

Q: After installing new version of KMHOOK.DLL, some of other

modules wont work - MOUSEHIDE.DLL, ONIDLE.DLL

A: KMHOOK.DLL interface has changed, ONIDLE.DLL and MOUSEHIDE.DLL

should be also updated with their newest versions

Q: I'm running Windows 2000. HOTSPOTS.DLL doesn't run or it crash

Litestep, or defined hotspots do nothing

A: There are some bugs related to Win2000, please read BUGREPORT

file for more info

================================================================

11. Contact & additional info, resources:

author: Pavel Vitis

mailto: pavel.vitis@seznam.cz

www : http://floach.pimpin.net/pavel/

mirror: http://lsg.come.to/

Programmed in LCC-Win32 free C compiler/tools by Jacob Navia:

http://www.cs.virginia.edu/~lcc-win32/


Icon.dll

---------------------------------------------------------------------------------

This module puts icons on your desktop much like in explorer.

The following are the options for icon.dll in your step.rc file

along with their defaults:

IconTextColor FFFFFF

IconDesktopFolder C:\windows\desktop

IconXstart 20

IconYstart 10

IconXoffset 80

IconYoffset 80

The bang command !LineUpIcons moves the icons back to where they started.

This is still a dirty program, but have fun.

Regards,

crank


IconBox.dll

---------------------------------------------------------------------------------

_ _ ___ _____ ____ ____ ___ _____ ____ ____ _ _

/////////////////////////////

// IconBox v1.1

// Released 9/13/00

// Written By: MrJukes

// Graphics By: AznRomeo

/////////////////////////////

// NEW FEATURES

; You don't need to specify the full path for images anymore

; Fixed drawing to reduce the amount of blackness

// OLD NEW FEATURES

; Added 2 new step.rc commands

- IconBoxHookPath "c:\litestep\iconbox\ibhook.dll"

- IconBoxIconWidth 32

; Should now be compatible with NT4 and hopefully Win2k

LoadModule c:\Litestep\IconBox.dll

;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

;IconBox Options

;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

; Full path to the ibhook.dll

IconBoxHookPath "c:\litestep\iconbox\ibhook.dll"

; Delay after you hit the minimize button until the window gets minimized.

; This delays allows IconBox to take a snap shot of the current window contents.

; For slower computers, you may want to turn this value up.

; For faster computers, down may be the way for you.

IconBoxDelay 500

; X position (in screen coordinates)

IconBoxX 0

; Y position (in screen coordinates)

IconBoxY 38

; Width

IconBoxWidth 194

; Height

IconBoxHeight 100

; The amount of pixels between each icon

IconBoxPadding 7

; The X position (in client coordinates) of where to start placing icons

IconBoxPlacementX 10

; The Y position (in client coordinates) of where to start placing icons

IconBoxPlacementY 24

; The width of the area where an icon can be placed

IconBoxAreaWidth 188

; The height of the area where an icon can be placed

; This also turns out to be the width of each icon (I might change this later if asked)

IconBoxAreaHeight 53

; The width of each individual icon (the height is scaled appropriatley)

IconBoxIconWidth 32

; The bitmap to use for the left side

IconBoxLeftBitmap ib_left.bmp

; The bitmap to use for the right side

IconBoxRightBitmap ib_right.bmp

; The bitmap to use for the top

IconBoxTopBitmap ib_top.bmp

; The bitmap to use for the bottom

IconBoxBottomBitmap ib_bottom.bmp

; The bitmap to use for the background

IconBoxBackgroundBitmap ib_background.bmp

; The bitmap to use for the left arrow on the scroll bar

IconBoxArrowLeftBitmap ib_arrowleft.bmp

; The bitmap to use for the right arrow on the scroll bar

IconBoxArrowRightBitmap ib_arrowright.bmp

; The bitmap to use for the scroll bar

IconBoxScrollTrackBitmap ib_scrolltrack.bmp

; The X position (in client coordinates) of where to put the scroll bar

IconBoxScrollTrackX 3

; The Y position (in client coordinates) of where to put the scroll bar

IconBoxScrollTrackY 80

; The bitmap to use for the scroll grab

; You can't actually grab the scroll grab right now. (Future addition)

IconBoxScrollGrabBitmap ib_scrollgrab.bmp

; Sets focus to IconBox (brings it to the top)

; This also unhides IconBox if it was previously hidden

*Hotkey Win I !IconBoxFocus

; Toggles between being hidden and visible

*Hotkey Win O !IconBoxToggle

; Hides IconBox

*Hotkey Win H !IconBoxHide

; Unhides IconBox

*Hotkey Win S !IconBoxShow

Have fun,

MrJukes


Inciner8.app

---------------------------------------------------------------------------------

Incinerate v2

By Bryan Kilian (MHolmesIV)

Incinerate is a Recycle bin replacement for Litestep. It fits in a wharf,

and will accept files (drag&drop) from Explorer and any other program

supporting drag&drop files. It sends any files dropped into it into

the recycle bin.

It now supports emptying the Recycle bin. This works in windows 95 and NT 4,

I'm not sure about the other versions of windows, but it should work.

The Empty functionality is available by right clicking on the app in the

wharf, or by binding a key to !EmptyRecycleBin.

The flame colour is completely configurable It fades the palette from

color1 -> color2 -> color3 -> color4. I figured this would be easier than

that complex viscolor.txt used by winamp and LSLM.

If you set IdleFlames off, then the flames will only show when deleting files.

This could be used to make it fit into a theme of some sort. If you also set

a non-transparent overlay bitmap then the flames won't show at all.

Left clicking on the wharf will produce a puff of flame.

Right clicking will bring up a menu which will let you turn the flames on/off or

to reload the settings from disk.

It doesn't seem to have any memory leaks from what I can spot, but please report

any bugs you find to me at bryan@rucus.ru.ac.za.

CPU Usage on my machine (P133, 48MB RAM) is around 2%, which I considered acceptable.

USAGE

-----

In you step.rc you need to make either a

*wharf "Recycle Bin" .none @c:\litestep\inciner8.app

Which will load it as a wharf app, or you can

LoadModule inciner8.app

Which will make an invisible incinerate, using 0 CPU, and anly available by

using the !EmptyRecycleBin command. (For those people who only want it for

the recycle bin emptying ability)

TODO

----

1) Open recycle bin or another program of your choice.

If you can think of anything else, give me a shout.

Settings in the modules.ini file:

Leaving any of these out will cause the program to use defaults. comment out the

overlay line if you don't want the overlay.

[Incinerate]

; The four colours that you blend into

; the first is also your transparent colour. Some work, some don't. Play

; with it.

Color1=0x000000

Color2=0x0000FF

Color3=0x00FFFF

Color4=0xFFFFFF

; Whether to show flames all the time, or just when deleting.

IdleFlames=True

; Update interval in ms.

Interval=60

; Image in Litestep IMAGES dir to use as a front overlay for the flames

;Overlay=nasty.bmp

THANKS

------

Many thanks go to cbjcyber for finding the recycle bin code somewhere.


jAmpToo.dll

---------------------------------------------------------------------------------

jAmpToo v1.21 - by Wout! 15aug2001

*************

--= CONTENTS =-------------------------------------------------------------------

1) INTRODUCTION/DISCLAIMER

2) CHANGES

3) LOADING THE MODULE

4) BANGS

5) STEP.RC DETAILS

6) TIPS & TRICKS

7) BUGS, FIXES AND NEXT VERSIONS

---------------------------------------------------------------------------------

1) INTRODUCTION/DISCLAIMER

jAmpToo: THE module to display WinAmp/GrdAmp information in a LiteStep module!

Most important features:

* Loadable as a normal module or as a LSBox/Wharf module

* Allows two displays, one for the song time the other for the title

* Allows custom formatting of the title as well as the time display

* Scrolling, no scrolling, or only long titles

* Real region transparency

* Assign commands to button clicks in the title display

* Toggle time remaining and time position by clicking the time display

* Supports WinAmp and GrdAmp

This module is roughly based on MrJukes code for jAMP (thus the name).

After the v1.2 rewrite hardly any of the code looks like MrJukes', but

nevertheless, he opened up his code and so will I. Mail me if you want it!

As always I'm absolutely in no way responsible for any damages caused by the

use of this program, or through the direct or even indirect usage of this

program. In addition, I am not even responsible for any (most likely mental)

damages caused by NOT using this program!

If you have any suggestions/bugs/comments/requests you can mail them to:

Wout@graffiti.net

Thanks goes out to those people that emailed me and got me working on this

thing again!

Have fun! - Wout!

2) CHANGES

Revision history:

v1.21 ! Updated jAmpUseGrdAmp to only support v1.09 or greater

v1.2 NOTE: SETTINGS NOT BACKWARD COMPATIBLE WITH PREVIOUS VERSIONS!!!

* Almost completely rewritten!

! Fixed text color bug

! Fixed crashing when WinAmp has "Scroll title in taskbar" enabled

+ Rewrote scrolling (Scroll always or only when title too long)

+ Added button clicks in title window

+ jAmpScrollFiller sets text between repeating song title when scrolling

+ Added support for GrdAmp (jAmpUseGrdAmp)

+ Added text format setting for time display (pos, rem, length, status)

+ Clicking the time window toggles %pos% and %rem% in jAmpTimeFormat

+ Added jAmpMove bang

v1.11 ! Fixed, set scroll = 0 when ScrollMode 1 and title fits!

! Fixed hiding/showing bug

v1.1 + HideWhenNoWinamp option added (for non Wharf usage!)

! Rewrote alignment routine (only for NON scrolling text)

+ Scrolling! (Mode 1: circular, 2: out-in)

+ Scroll speed setting (pixels/step)

+ Separate drawing of TIME display

+ Clicking TIME area changes from pos to rem

v1.0 Initial version, roughly based on jAMP by MrJukes:

+ LSBox/Wharf loadability

+ better transparency, background handling

+ lots of extra settings!

- Title scrolling

NOTE: Real Wharf and freeform Wharf support have never been tested!

3) LOADING THE MODULE

From the Step.RC its the same as usual:

LoadModule C:\LiteStep\Modules\jAmpToo.dll

From an LSBox it's the normal stuff too I guess:

*WharfModule 10 10 300 20 "C:\LiteStep\modules\jAmpToo.dll"

4) BANGS

Not much bangs except for the essentials:

!jAmpShow - Show jAmpToo

!jAmpHide - Hide jAmpToo

!jAmpToggle - Toggle jAmpToo visibility

!jAmpMove X Y - Moves jAmpTo to position (X,Y) Negative values are allowed.

(e.g: !jAmpMove -500 200)

Of course these don't work when jAmpToo is loaded as a LSBox module!

5) STEP.RC DETAILS

jAmpToo supports the following Step commands. As of v1.2 these settings

are no longer backwards compatible with jAMP or previous versions of jAmpToo!

The default values are listed between brackets, these are the values used

when the setting is not listed in the Step.RC.

jAmpX - X-Coord (negative values allowed) [0]

jAmpY - Y-Coord (negative values allowed) [0]

jAmpW - Width, ONLY when jAmpBackBMP not used! [200]

jAmpH - Height, ONLY when jAmpBackBMP not used! [35]

jAmpBackBmp - Background image (jAmpBackColor used if none) [<none>]

jAmpBackColor - Background fill color (if no jAmpBackBmp) [FF00FF]

jAmpTransparencyLevel - 0= none; 1= LS fake; [2]= REAL region transparency

NOTE: By default the window is Always On Bottom

jAmpFloat - Free float window (acts like a real window) [FALSE]

jAmpAlwaysOnTop - Window Always On Top [FALSE]

jAmpAllowMove - Allow the user to move the window [FALSE]

jAmpStartHidden - Start jAmpToo hidden [FALSE]

jAmpHideWhenNoWinamp - Hide if Winamp is not loaded (module mode) [FALSE]

jAmpNoWinampText - Text when winamp is not loaded [""]

jAmpUseGrdAmp - Gets it's data from GrdAmp instead of Winamp. [FALSE]

Only support GrdAmp version 1.09 or greater!

(See: http://floach.pimpin.net/grd/)

jAmpScrollFiller - Text between repeating titles when scrolling [" "]

jAmpScrollMode - 0= off; 1= only scroll long titles; [2]= scroll always

jAmpScrollSpeed - Scrolling speed in pixels per step [2]

jAmpTitleFormat - [%title%], %tnumber%, %pos%, %rem%, %length%, %status%

e.g: "%tnumber%. %title% [%status%]"

NOTE: Text is aligned to the TOP of the title display!

Text can also be placed at negative values!

jAmpTitleTop - Top of title display (can be negative) [0]

jAmpTitleLeft - Left side of title display (can be negative) [0]

jAmpTitleBottom - Bottom of title display (can be negative) [200]

jAmpTitleRight - Right side of title display (can be negative) [22]

jAmpTitleAlign - Alignment of text: [0]= left; 1= center; 2= right

jAmpTitleFont - Font ["Tahoma"]

jAmpTitleFontSize - Font Size [20]

jAmpTitleFontColor - Font Color [FFFF00]

jAmpTitleFontBold - Set bold [FALSE]

jAmpTitleFontItalic - Set italic [FALSE]

jAmpTitleFontUnderline- Set Underline [FALSE]

jAmpTime - Allows the time to be set in a location OTHER than the

text!!! Time mode0= off, [1]= position, 2= remaining

jAmpTimeFormat - [%pos%], %rem%, %length%, %status%

e.g: "(%pos%/%length%) %status%"

Clicking the time display will toggle %pos% and %neg%

NOTE: Text is aligned to the TOP of the time display!

Text can also be placed at negative values!

jAmpTimeTop - Top of time display (can be negative) [0]

jAmpTimeLeft - Left side of time display (can be negative) [0]

jAmpTimeBottom - Bottom of time display (can be negative) [200]

jAmpTimeRight - Right side of time display (can be negative) [22]

jAmpTimeAlign - Alignment of text: [0]= left; 1= center; 2= right

jAmpTimeFont - Font ["Tahoma"]

jAmpTimeFontSize - Font Size [20]

jAmpTimeFontColor - Font Color [FFFF00]

jAmpTimeFontBold - Set bold [FALSE]

jAmpTimeFontItalic - Set italic [FALSE]

jAmpTimeFontUnderline - Set Underline [FALSE]

jAmpClickLeft - Command or bang to perform on left click [""]

jAmpClickRight - Command or bang to perform on right click [""]

jAmpClickDouble - Command or bang to perform on double click [""]

6) TIPS & TRICKS

* Loading jAmpToo with no settings gives you a fully transparent window in the

upper left corner of your screen showing the WinAmp title in scrolling yellow

text. If you add 'jAmpTime' too the step RC the time will be displayed below

the title text in a grayish color.

* As with a lot of LS modules, load your desktop module first!!!!!!!!

* jDesk and Desktop2 act differently with respect to AlwaysOnBottom windows!

I suggest you do *NOT* use jAmpAllowMove without jAmpFloat or jAmpAlwaysOnTop.

This can lead to irregular behavior and allowing a AlwaysOnBottom to be moved

around freely is not logical behavior! (But then, lot's of theme designers are,

unfortunately, not logical... but ofcourse you're an exception! ;)

* This is how you should to think the size/position settings:

+-----------------------+

| +-------------------+ | jAmpX/Y defines the initial position

| | Title display | | jAmpW/H or jAmpBackBmp defines window size

| +-------------------+ |

| +----+ | jAmp[Title/Time][Top/Left/Bottom/Right] define the

| |Time| | size of the display windows where the upper left

| +----+ | corner of the window is coordinate (0,0).

+-----------------------+

* You CAN define negative values for jAmp[Time/Title][Top/Left/Bottom/Right].

This might come in handy if you want to align your text close to the window

border.

* When using jAmpScrollMode 1 and the title fits in the display, it is aligned

according to jAmpTitleAlign. (jAmpTitleAlign is ignored with jAmpScrollMode 2)

* jAmpTransparencylevel 1 (LS fake) is the old version of the LS transparency,

it's kind of lame but could be useful under certain conditions.

I suggest you use (the default) jAmpTransparencylevel 2 in most cases.

* When using LSBox/Wharf mode, use a background (jAmpBackBmp or jAmpBackColor)

otherwise LSBox will screw up changes in the time/title displays.

* Don't forget to set (at least) a jAmpTitleRight when using jAmpToo in LSBox

mode! Otherwise title scrolling with certain title length may act weird!

* Just play around with all the settings!

7) BUGS, FIXES AND NEXT VERSIONS

* Bugs

The new Anti-Crash 'Winamp is scrolling the song title in the taskbar'

detection algorithm *MIGHT* be triggered when a song title contains the

string "** "... If you come across such a song, that's just too bad ;)

Preventing the LiteStep crash had my priority, if you do not agree, please

keep quiet and rename the ID3 tag *evil-grin*

(p.s: try toggling that WinAmp setting, LiteStep won't crash!)

* Fixes

None yet...

* Next versions

That's up to you! It currently does what I need (and more).

So, let me know if you have found any bugs or have any other suggestions!

- Wout!

--= [THE END] =------------------------------------------------------------------


jDesk.dll

---------------------------------------------------------------------------------

===================================================

===================================================

== jDesk.dll - an advanced desktop for LiteStep ===

===================================================

===================================================

====== Written by: ================================

================== Chris Rempel (jugg) ============

===================================================

================== http://jugg.logicpd.com/ =======

===================================================

===================================================

= Version: 0.70 = Release Date: 00.09.04 ==========

===================================================

===================================================

-=ToC=-

I. Introduction

II. Installation

III. Information

A} Commands

B} Changes

IV. Tips & Tricks

V. Disclaimer

=====================

== I. Introduction ==

=====================

===================================================

Welcome, and thank you for deciding to try out this

enhanced Desktop replacement module for Win32

Shells that support the LiteStep module standard.

jDesk features improved performance, stability, and

customization over the Desktop that comes with

LiteStep. For example, jDesk can execute programs,

LiteStep action (bang) commands, and combinations

of any number of commands from a single mouse

click, or mouse/keyboard combination. Also, jDesk

can set your intial Work Area (amount of screen

realestate that a maximized window covers) as well

as changing the Work Area on the fly.

=====================

== II. Istallation ==

=====================

===================================================

Extract "jDesk.dll" to your LiteStep directory

(c:\litestep\). Open up your step.rc (LiteStep

configuration file) and find the section where all

of your "LoadModule" lines are located. Remove or

comment out (using a semicolon) the "LoadModule"

line that contains "desktop.dll". Now, add a new

line that looks like this:

LoadModule c:\litestep\jdesk.dll

Of course, adjust the path as necessary. Save your

step.rc and issue the LiteStep Recycle command

(!Recycle).

NOTE 1: You MUST have a CVS (Dev) build dated

99.08.25 or later, even LiteStep 0.24.5 is NOT

recent enough, as jDesk 0.50+ requires new

functionality in the lsapi.dll. You can get this

from http://lsdev.litestep.net/

NOTE 2: jDesk does not contain a TaskBar or System

Tray. You will need to utilize a specific LiteStep

Module for those features. Please read the section

"IV. Tips & Tricks" for more information.

======================

== III. Information ==

======================

===================================================

= A} Commands =

===============

jDeskWorkArea "0,0,0,0"

- Sets the initial Work Area (amount of screen

realestate that a maximized window covers) of

your Desktop.

- Accepts negative and positive decimal values,

which combined create the WorkArea "box".

Opposite sides must have a difference greater

then 200. The order of values are:

"<left>,<right>,<top>,<bottom>"

*Note: If ".none" is specified for any of the

values, then that value is unchanged from its

previous state.

- Defaults to: "0,0,0,0"

*Note: This sets the WorkArea to full screen.

jDeskDesktopFolder ""

- If used and set to a valid directory, it will

enable drag and drop of files onto the jDesk

desktop area. Any file dropped on the desktop

will be automatically copied into the folder

specified. If the file exists, you will be

prompted to overwrite. You can not move files,

or create shortcuts. Currently dragging folders

do not work.

- Defaults to: No default. If not specified,

Drag&Drop is not enabled.

jDeskDoubleClickTime "750"

- Sets the time jDesk waits to see if a double

click happens after the first click is

received.

- Defaults to: System DoubleClick time.

*Note: It is suggested to not set this value.

jDeskClearWorkAreaOnExit

- If set, Work Area will be restored to full

screen when jDesk is unloaded.

- boolean value: true if set, otherwise false.

jDeskRecycleOnRezChange

- If set, jDesk requests are recycle of the shell

after a Screen resolution change.

- boolean value: true if set, otherwise false.

jDeskDisableMButton1

- If set, all jDesk Mouse Button 1 functionality

is disabled.

- boolean value: true if set, otherwise false.

jDeskDisableMButton2

- If set, all jDesk Mouse Button 2 functionality

is disabled.

- boolean value: true if set, otherwise false.

jDeskDisableMButton3

- If set, all jDesk Mouse Button 3 functionality

is disabled.

- boolean value: true if set, otherwise false.

jDeskDisableMButtonX1

- If set, all jDesk Mouse Button X1 functionality

is disabled.

- boolean value: true if set, otherwise false.

jDeskDisableMButtonX2

- If set, all jDesk Mouse Button X2 functionality

is disabled.

- boolean value: true if set, otherwise false.

jDeskDisableMWheelScroll

- If set, all jDesk Mouse Wheel Scroll

functionality is disabled.

- boolean value: true if set, otherwise false.

jDeskDisableDoubleClick

- If set, all jDesk ignores Double Click actions and

immediately executes the up action command instead

of waiting to see if a double click is being

executed.

- boolean value: true if set, otherwise false.

*jDeskMButton1

- parameters:

[<modkey>;<down-cmd>;<up-cmd>;<dblclick-cmd>]

<modkey> can be one of the following

SHIFT

CTRL

CTRL+SHIFT

<down-cmd>

<up-cmd>

<dblclick-cmd>

can be any !Bang command or executable that

is to be executed.

- Multiple settings of this definition are

allowed, but only one definition using the same

modkey is allowed.

- If no definitions are specified, Button is

disabled.

*jDeskMButton2

- parameters:

[<modkey>;<down-cmd>;<up-cmd>;<dblclick-cmd>]

<modkey> can be one of the following

SHIFT

CTRL

CTRL+SHIFT

<down-cmd>

<up-cmd>

<dblclick-cmd>

can be any !Bang command or executable that

is to be executed.

- Multiple settings of this definition are

allowed, but only one definition using the same

modkey is allowed.

- If no definitions are specified, Button is

disabled.

*jDeskMButton3

- parameters:

[<modkey>;<down-cmd>;<up-cmd>;<dblclick-cmd>]

<modkey> can be one of the following

SHIFT

CTRL

CTRL+SHIFT

<down-cmd>

<up-cmd>

<dblclick-cmd>

can be any !Bang command or executable that

is to be executed.

- Multiple settings of this definition are

allowed, but only one definition using the same

modkey is allowed.

- If no definitions are specified, Button is

disabled.

*jDeskMButtonX1

- parameters:

[<modkey>;<down-cmd>;<up-cmd>;<dblclick-cmd>]

<modkey> can be one of the following

SHIFT

CTRL

CTRL+SHIFT

<down-cmd>

<up-cmd>

<dblclick-cmd>

can be any !Bang command or executable that

is to be executed.

- Multiple settings of this definition are

allowed, but only one definition using the same

modkey is allowed.

- If no definitions are specified, Button is

disabled.

*jDeskMButtonX2

- parameters:

[<modkey>;<down-cmd>;<up-cmd>;<dblclick-cmd>]

<modkey> can be one of the following

SHIFT

CTRL

CTRL+SHIFT

<down-cmd>

<up-cmd>

<dblclick-cmd>

can be any !Bang command or executable that

is to be executed.

- Multiple settings of this definition are

allowed, but only one definition using the same

modkey is allowed.

- If no definitions are specified, Button is

disabled.

*jDeskMWheelScroll

- parameters:

[<modkey>;<down-cmd>;<up-cmd>]

<modkey> can be one of the following

SHIFT

CTRL

CTRL+SHIFT

<down-cmd>

<up-cmd>

can be any !Bang command or executable that

is to be executed.

- Multiple settings of this definition are

allowed, but only one definition using the same

modkey is allowed.

- If no definitions are specified, Wheel Scroll

is disabled.

!jDeskSetWorkArea "0,0,0,0"

- Sets the WorkArea. Same as "jDeskWorkArea"

setting, accept in a !Bang command version.

- Accepts negative and positive decimal values,

which combined create the WorkArea "box".

Opposite sides must have a difference greater

then 200. The order of values are:

"<left>,<right>,<top>,<bottom>"

*Note: If ".none" is specified for any of the

values, then that value is unchanged from its

previous state.

- If no parameters are specified, the WorkArea is

set to full screen.

!jDeskResetWorkArea

- Resets the WorkArea to the initial values

specified by "jDeskWorkArea".

===================================================

= B} Changes =

==============

- 0.70 -

--------

+ Complete code/settings rewrite.

+ Added ability to leave any of the work area

dimensions unaffected when setting the work

area by specifying ".none" in its place.

! Fixed multiple issues dealing with focus/zorder

^ Basically you should start with a clean setup

and build your settings from scratch, just

about everything has changed. Enjoy.

- 0.61 -

--------

! Fixed background refresh problems.

! Fixed desktop window from not resizing when the

screen resolution is changed.

! Fixed WorkArea from not updating when the

screen rosolution is changed.

- 0.60 -

--------

+ Added jDeskDesktopFolder (drag & drop) command.

- Removed "jDeskSwapMButtons" (too much extra

code, just change your commands instead).

* Changed the mouse button configuration. Now

both Down and Up commands are on the same line

seperated by brackets [].

* Changed the way the desktop background/ refresh

is handled. Using WS_EX_TRANSPARENT now.

- 0.51 -

--------

! Fixed "jDeskSwapMButtons" bug that made it not

work.

- 0.50 -

--------

+ Added the ability to assign functionality to

_both_ mouse UP and mouse DOWN events.

+ Added the ability to swap First and Second

mouse buttons

+ Added ability to disable the Third (middle)

mouse button.

- Removed obsolete commands

* Changed the way programs/commands are executed.

It now conforms to the LiteStep standards.

* Improved performance of the !jDeskSetWorkArea

and !jDeskResetWorkArea actions.

! Fixed bug when changing resolutions the DeskTop

window did not resize to the new screen size.

! Fixed bug that messed up the WorkArea when

putting quotation marks around the

!jDeskSetWorkArea parameters.

! Fixed bug when not using the "jDeskWorkArea"

command, and then using the combination of

"!jDeskWorkArea" and "!jDeskResetWorkArea"

action commands, it would set the WorkArea to

the hardcoded settings.

- 0.40 -

--------

+ Added the ability to specify executing events

on mouse DOWN or mouse UP.

+ Added ability to execute programs, folders

and the like, and not just LS actions (bangs).

+ Added ability to allow parameters to be passed

to a program or LS Action command.

+ Added ability to execute different events

depending if the SHIFT or CTRL key is held down.

+ Added !jDeskSetWorkArea and !jDeskResetWorkArea.

* Changed all of the step.rc command format.

* Several other misc changes/ fixes

- 0.30 -

--------

+ Initial release. Supports running single LS

action commands for each mouse button, and

defining application Work Area (DesktopArea).

=====================

= IV. Tips & Tricks =

=====================

===================================================

---------------------------------------------------

- To get the Wheel Scroll to work, you need to

click on the desktop to activate it first. To be

able to do this, set the following (or similar):

*jDeskMButton3 [.none;!none;!none;!none]

Then after you click on the Desktop with Button3,

you will be able to execute your wheel scroll

commands.

---------------------------------------------------

-Sample commands:

*jDeskMButton1 [.none;!TasksHide;!TasksMove !TasksShow;!none]

*jDeskMButton2 [.none;!TasksHide;!Popup;!none]

*jDeskMButton3 [CTRL;!none;!about;!about detailed]

---------------------------------------------------

- If you want to have a System Tray, download

"systray.dll", created by Maduin, from

http://maduin.dasoft.org/ This is a fully featured

skinnable System Tray that can be placed anywhere

on your Desktop. Other alternatives are grdTray

and the systray2.dll bundled with recent LiteStep

builds.

---------------------------------------------------

- If you want a Task Manager to have access to your

currently running applications you can use

"tasks.dll" available from

http://jugg.logicpd.com/software/

Or you can get "traytasks.dll", created by Sergey

Trofimov (requires "systray.dll" to run with jDesk)

TrayTasks is available from:

http://www.tv4studios.com/st/litestep/modules.html

There are other alternatives including several

Task Managers for the Wharf and Popups.

---------------------------------------------------

- If you want to have AutoRun capabilities you need

to get "autorun.dll", created by Visigoth, from

http://visigoth.litestep.com/

---------------------------------------------------

- If you are having trouble with "application bars"

showing up along the bottom of your screen when you

minimize an application, this is because you need

to get a Task Manager that supports hiding

Minimized Application Bars. If you are running

"tasks.dll" you can hide those bars by adding the

command "TasksHideMinAppBar".

---------------------------------------------------

- If you are running Windows NT, and you change the

Left side of the WorkArea from zero "0" to any

other value, it may mess up the rest of the

settings. This is not a jDesk specific bug. All

modules that use SystemParametersInfo/

SPI_SETWORKAREA functionality has this problem. A

solution is being looked into.

---------------------------------------------------

- If you are using the Wharf with jDesk, and you

do NOT want the Wharf to resize the WorkArea when

it docks to the side of the screen add the command

"SetDesktopArea" to your "step.rc" file.

=================

= V. Disclaimer =

=================

===================================================

Copyright (C) 1999, Chris Rempel

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY

OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT

LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NON-

INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES

OR OTHER LIABILITY, WHETHER IN AN ACTION OF

CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF

OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

OTHER DEALINGS IN THE SOFTWARE.


jKey.dll

---------------------------------------------------------------------------------

===================================================

===================================================

== jKey.dll - nice hotkeys ========================

===================================================

===================================================

====== Written by: ================================

================== Chris Rempel (jugg) ============

===================================================

================== http://jugg.logicpd.com/ =======

================== jugg@dylern.com ================

===================================================

===================================================

= Version: 0.36 = Release Date: 01.06.12 ==========

===================================================

===================================================

-=ToC=-

I. Introduction

II. Installation

III. Information

A} Commands

B} Changes

C} Notes

IV. Tips & Tricks

V. Disclaimer

=====================

== I. Introduction ==

=====================

===================================================

jKey.dll is Hotkey manager for Win32 Shells. jKey

is based off the idea of LiteStep's Hotkey.dll, but

offers more features and configuration options with

less overhead.

======================

== II. Installation ==

======================

===================================================

Extract "jKey.dll" to your LiteStep directory

(c:\litestep\). Open up your step.rc (LiteStep

configuration file) and find the section where all

of your "LoadModule" lines are located. Remove any

"LoadModule" lines that are loading "hotkey.dll".

Now, add a new line that looks like this:

LoadModule c:\litestep\jkey.dll

Of course, adjust the path as necessary. Save your

step.rc and issue the LiteStep Recycle command

(!Recycle).

NOTE: If you are migrating from LiteSteps hotkey

module, and do not want to have to update all of

your "*Hotkey" lines, make sure to set the command

"jKeyUseHotkeyDef" in your configuration file. If

you don't, you have to change all instances of

"*Hotkey" to "*jKey" in your configuration file.

======================

== III. Information ==

======================

===================================================

= A} Commands =

===============

jKeyVKTable "vk104.txt"

- Sets the Virtual Key code lookup table text

file that jKey will reference for special key

specifiers.

- Accepts any valid formatted test file that

contains a Virtual Keycode lookup table.

Text file format:

- One entry per line in the following format.

<keyname> , <hexvalue>

The <keyname> is a string value representing

the virtual key code (<hexvalue>). <keyname>

is used in the *jKey definition in place of

<hotkey>.

The <hexvalue> is the Virtual Key Code,

represented in Hexidecimal format.

- Defaults to: no default

jKeyLWinKey "!Popup"

- Sets the command to be executed when the

LEFT WinKey is pressed by itself.

*Note: Command will be executed after the time

specified by "jKeyLWinKeyTimeout"

setting.

*Note: "jKeyLWinKey" does not execute anything

by default and so, must be set for it to

execute anything.

- Accepts any !Bang command or Executable.

- Defaults to: no default

jKeyRWinKey "!Popup"

- Sets the command to be executed when the

RIGHT WinKey is pressed by itself.

*Note: Command will be executed after the time

specified by "jKeyRWinKeyTimeout"

setting.

*Note: "jKeyRWinKey" does not execute anything

by default and so, must be set for it to

execute anything.

- Accepts any !Bang command or Executable.

- Defaults to: no default

jKeyLWinKeyTimeout 750

- Sets the delay from the time the LEFT WinKey is

pressed to the time the command specified by

"jKeyLWinKey" is executed.

- Accepts any positive integer in milliseconds.

*Note: Anything less the 400 will probably will

cause things to behave erratically.

- Defaults to: 750

jKeyRWinKeyTimeout 750

- Sets the delay from the time the RIGHT WinKey

is pressed to the time the command specified by

"jKeyRWinKey" is executed.

- Accepts any positive integer in milliseconds.

*Note: Anything less the 400 will probably will

cause things to behave erratically.

- Defaults to: 750

jKeyNoWarn

- If Set no warning will be issued when a hotkey

fails to register correctly.

- boolean value: true if set, otherwise false.

jKeyUseHotkeyDef

- If Set the "*Hotkey" definition syntax will be

used instead of the native "*jKey" definition.

(See explanation of "*jKey")

- boolean value: true if set, otherwise false.

*jKey

- parameters: <modkey> <hotkey> <command>

<modkey> can be one or more of the following

seperated by a plus (+) sign. Spaces

are not allowed.

CTRL, SHIFT, WIN, ALT

<hotkey> can be any alpha numeric key or an

identifier listed in the

"jKeyVKTable" lookup file if one is

being used.

<command> can be any !Bang command or

executable that is to be executed

when the specified key combination

is pressed.

- Multiple settings of this command are

allowed and the maximum number is limited by

system memory.

- It is used to define the Hotkeys and the

commands to be executed when the hotkey

sequence is pressed.

*Note: You can substitute "*Hotkey" for "*jKey"

if you set the following command in your

configuration file: "jKeyUseHotkeyDef"

===================================================

= B} Changes =

==============

(+)Added

(-)Removed

(*)Changed

(!)Fixed

(^)MiscNote

- 0.36 -

--------

! Fixed lower case hotkeys from not working.

! Fixed non alpha-numeric keys from not working.

* Changed warning boxes again.

- 0.35 -

--------

* Changed the warning boxes that are displayed

when a hotkey fails to register. They are

cleaner and more informative now.

* Changed hotkey identifiers to unique values so

now jkey will never conflict with other hotkeys

defined by other programs.

^ General code cleanup. Things should be working

better.

- 0.34 -

--------

^ Private debug test build (do not use if you

happen to come upon it somewhere).

- 0.33 -

--------

! Fixed memory leak on recycle

! Fixed "jKeyVKTable" from not excepting quotes

around a file name. Now must use quotes when

specifying a long file name.

- 0.32 -

--------

! Fixed recycle bug where Window Class wasn't

wasn't being unregistered correctly.

! Fixed problem with Hotkey error box, that kept

it from showing the name of the Hotkey that

failed, if that hotkey wasn't listed in the

virtual key table.

^ I built this version under Win2k. I normally

build under Win98se. It shouldn't change

anything, but you never know.

- 0.31 -

--------

+ Added "jKeyVKTable"

- Removed "jKeyCtrlEscKey"

- Removed built in special virtual key lookup

table. Now it is accessed through "jKeyVKTable"

* Changed a bit of the internal code workings.

! Fixed potential to not unregister a hotkey

when exiting.

! Fixed no warning boxes showing up when a hotkey

was not registered correctly. Now they do.

- 0.30 -

--------

+ Initial release.

+ Supports configuration of individual WinKeys

and Ctrl+Esc sequence.

+ Supports standard LiteStep Hotkey syntax.

+ Supports MS "APPS" key (odd key to the right of

the right WinKey).

===================================================

= C} Notes =

============

Enjoy

=====================

= IV. Tips & Tricks =

=====================

===================================================

Check out the "jKeyVKTable" setting. You can

specify a custom Virtual Key code lookup table to

allow access to the custom keys on your keyboard.

So you could set up your new fancy Internet enabled

keyboard to execute custom hotkeys.

Just read the rest of this file and you should be

fine. This module does not behave like the

hotkey.dll module with it default settings. You

must enable certain aspects of it to gain the same

functionality. Like I said. Read the rest of this

file.

=================

= V. Disclaimer =

=================

===================================================

Copyright (C) 2000-2001, Chris Rempel

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY

OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT

LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NON-

INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES

OR OTHER LIABILITY, WHETHER IN AN ACTION OF

CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF

OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

OTHER DEALINGS IN THE SOFTWARE.


Label.dll

---------------------------------------------------------------------------------

--------------------------------------------------------------------------

Label 1.92

Kevin Schaffer (Maduin) <kschaffe@kent.edu>

Erik Christiansson (Sci) <erik@alfafish.com>

Last Modified: 01-30-2002

--------------------------------------------------------------------------

Overview

--------

Label.dll is a Litestep-loadable module that allows you to define multiple

skinnable labels and place them anywhere on your desktop. Labels can

display static text and dynamically updating system information that can

be updated at run-time using bang commands.

Loading the Module

------------------

Add a new LoadModule line to the step.rc file, similar to the following

(this assumes that label.dll resides in C:\Litestep):

LoadModule "C:\Litestep\label.dll"

Now recycle Litestep and you should see a small blank label in the upper-

left-hand corner of the desktop. The following sections describe how to

configure label.dll to actually do something useful.

Configuration

-------------

The following commands are typically placed in the step.rc. See the

Litestep documentation for help modifying this file. Parameters and their

types are denoted by angle brackets (<, >) and optional parameters are

enclosed in square brackets ([, ]).

LabelText <text>

Sets the text displayed by the label. If no value is provided the label is

left blank. The value can contain both simple text and escape sequences.

Escape sequences are enclosed in square brackets ("Simple text [escape]").

See the discussion of text escape sequences below for more information.

LabelX <number>

Sets the horizontal position of the label in pixels. If the value is

positive then it is relative to the left side of the desktop, if negative

then the right side. Additionally you can make the position relative to

the center of the desktop by appending the character 'c' after the number

("32c", "-128c").

LabelY <number>

Sets the vertical position of the label in pixels. If the value is

positive then it is relative to the top of the desktop, if negative then

the bottom. Additionally you can make the position relative to the center

of the desktop by appending the character 'c' after the number ("32c",

"-128c").

LabelWidth <number>

Sets the horizontal size of the label. This can be an absolute value (in

pixels) or a percentage of the desktop width.

LabelHeight <number>

Sets the vertical size of the label. This can be an absolute value (in

pixels) or a percentage of the desktop height.

LabelAlwaysOnTop

If this command is present then it makes the label "always on top", that

is, the label stays above all application windows.

LabelStartHidden

If this command is present then the label will be initially invisible. It

can later be shown using bang commands.

LabelImage <file>

Sets the name of the skin file. This file must be in Windows bitmap (BMP)

format. If no value is provided then the label is displayed with the a

default background.

LabelImageLeftEdge <number>

Sets the number of pixels on the left edge of the bitmap that will not be

stretched or tiled. If no value is provided then the default is 0.

LabelImageTopEdge <number>

Sets the number of pixels on the top edge of the bitmap that will not be

stretched or tiled. If no value is provided then the default is 0.

LabelImageRightEdge <number>

Sets the number of pixels on the right edge of the bitmap that will not be

stretched or tiled. If no value is provided then the default is 0.

LabelImageBottomEdge <number>

Sets the number of pixels on the bottom edge of the bitmap that will not

be stretched or tiled. If no value is provided then the default is 0.

LabelImageMode "stretch", "tile", "tile-horizontal", or "tile-vertical"

Sets the method used to scale the skin bitmap. If no value is provided

then the default is "stretch".

LabelTransparent

If this command is present then it enables transparency. If a skin is also

in use then areas of the skin bitmap that are pink (RGB 255, 0, 255) will

allow the desktop wallpaper to show through. If no skin is in use and this

command is present then the entire label will be transparent.

LabelFont <font>

Sets the name of the font used to display text. If no value is provided

then the default is "Arial".

LabelFontHeight <number>

Sets the height of the font used to display the text in pixels. If no

value is provided then the default is 15.

LabelFontBold

If this command is present then the font will be bold.

LabelFontItalic

If this command is present then the font will be italic.

LabelFontColor <color>

Sets the color of the font used to display the text. If no value is

provided then the default depends on whether shadowing is enabled. If it is

enabled then the default is white (the shadow color defaults to black),

otherwise the default is black.

LabelFontShadow

If this command is present then the font will be shadowed.

LabelFontShadowColor <color>

Sets the color used to display the text shadow. If no value is provided

then the default is black.

LabelFontShadowX <number>

Sets the number of pixels in the horizontal direction that the shadow is

offset from the rest of the text; this can be negative. If no value is

provided then the default is 1.

LabelFontShadowY <number>

Sets the number of pixels in the vertical direction that the shadow is

offset from the rest of the text; this can be negative. If no value is

provided then the default is 1.

LabelJustify "left", "center", or "right"

Sets the text justification to be either left-justified, centered, or

right-justified. If no value is provided then the default is "center".

LabelLeftBorder <number>

Sets the number of pixels on the left edge to reserve as a border. If no

value is provided then the default is 0.

LabelTopBorder <number>

Sets the number of pixels on the top edge to reserve as a border. If no

value is provided then the default is 0.

LabelRightBorder <number>

Sets the number of pixels on the right edge to reserve as a border. If no

value is provided then the default is 0.

LabelBottomBorder <number>

Sets the number of pixels on the bottom edge to reserve as a border. If no

value is provided then the default is 0.

LabelUpdateInterval <number>

Sets the amount of time in milliseconds between updates for labels that

contain dynamically updated content. If no value is provided then the

default is 1000 (1 second).

LabelLSBoxName <name>

Sets the name of the box (lsbox.dll) that this label should be loaded

into. The default is no value in which case the label is loaded normally.

See the section below entitled 'Using Labels inside LSBox' for more

information.

Bang Commands

-------------

Bang commands allow you to manipulate labels at run-time through scripts

or other modules. See the Litestep documentation for more information

about bang commands and how to invoke them.

!LabelAlwaysOnTop

Makes the label "always on top", that is, it stays above all application

windows.

!LabelHide

Hides the label, making it invisible.

!LabelMove <x-coordinate> <y-coordinate>

Moves the label.

!LabelPinToDesktop

Pins the label to the desktop so that it stays below all application

windows. This the default state and is the opposite of always on top.

!LabelReposition <x-coordinate> <y-coordinate> <width> <height>

Repositions (moves and resizes) the label.

!LabelResize <width> <height>

Resizes the label.

!LabelSetFontColor <color>

Changes the label's font color. You can specify the color as decimal

RGB (128 64 255) or as hexadecimal (8040FF).

!LabelSetText [<text>]

Sets the text displayed in the label. If the parameter is not present then

the label will be cleared of any text.

!LabelShow

Shows the label, making it visible.

!LabelToggleAlwaysOnTop

Switches the label back and forth between the always on top and pinned to

desktop states.

!LabelToggle

Switches the label back and forth between the visible and invisible

states.

!LabelUpdate

Forces the label to update its contents.

!LabelClipboard [<text>]

Copies the contents of the label to the clipboard. If the parameter is

present, it will be printed in front of the label contents.

Events

------

Events allow you execute programs or bang commands based on user

interaction with the label. The following work the same as configuration

settings. Each of them takes the name of program or bang commands as their

value. When the event is triggered, the program or bang command is

executed. Note that in the case of mouse clicks, assigning an action to

both the click and the double click event will not work.

LabelOnLeftClick <action>

Sets an action to perform when the user left clicks on the label.

LabelOnLeftDoubleClick <action>

Sets an action to perform when the user double-clicks the label with the

left mouse button.

LabelOnMiddleClick <action>

Sets an action to perform when the user middle clicks on the label.

LabelOnMiddleDoubleClick <action>

Sets an action to perform when the user double-clicks the label with the

middle mouse button.

LabelOnRightClick <action>

Sets an action to perform when the user right clicks on the label.

LabelOnRightDoubleClick <action>

Sets an action to perform when the user double-clicks the label with the

right mouse button.

LabelOnMouseEnter <action>

Sets an action to perform when the mouse cursor enters the label.

LabelOnMouseLeave <action>

Sets an action to perform when the mouse cursor leaves the label.

Multiple Labels

---------------

Label.dll takes a new approach to configuring multiple instances.

Traditionally a module that supported multiple instances had to use

*Config-style configuration where all the settings for each instance had

to fit on a single line (like shortcut.dll). But labels have too many

settings to put on a single line so that approach was out of the question.

Instead, each label is given an unique name and the settings for the label

all begin with that name. For example, if there is a label named "MyLabel"

then the settings for that label might look like:

MyLabelText "Hello, world!"

MyLabelImage mylabel.bmp

MyLabelHeight 24

MyLabelWidth 96

MyLabelX 64

MyLabelY 64

Simultaneously you can have another label named "MyOtherLabel":

MyOtherLabelText "Click Here!"

MyOtherLabelOnLeftClick !alert "Hello, world!"

You can have any number of labels so long as each one has a different

name. Also be careful that you label names do not conflict with any other

modules you have loaded. For instance, if chronos.dll is loaded then do

not have a label named "Chronos" or else the settings will conflict and

one module will not work correctly. In fact, I recommend that you put

"Label" somewhere in the name to keep things straight, but label.dll

places no restrictions on the name you can choose except that they can

only contain letters and numbers (no symbols or spaces).

By default, label.dll runs in a single-instance mode with only on label

(named "Label") defined. To use multiple labels you need to have one or

more "Labels" commands:

Labels <name-list>

Gives the names of the labels you wish to define. All names must be unique

and can only contain letters and numbers (no symbols or spaces). Separate

names with commas and do not use quotes. If no value is provided then a

single label named "Label" is created by default.

As of version 1.5 it is also possible to create and destroy labels as

Litestep is running. The !LabelCreate bang command takes the name of a

label that is defined in step.rc, but which is not already loaded (it

doesn't appear in any "Labels" lines). !LabelCreate then creates the label

and initializes it with the configuration specified in the step.rc. This

lets you delay creation of labels that will not be visible right away.

Each label that is loaded with have an associated !LabelDestroy bang

command that can be used to unload that label, freeing the resources it is

using.

!LabelCreate <label-name>

Creates and initializes the named label. Note that this is a global bang

command - to create a label named MyLabel use "!LabelCreate MyLabel", not

"MyLabelCreate".

!LabelDestroy

Destroy a label and release any resources in use. This bang command is

defined for each label - to destroy MyLabel use "!MyLabelDestroy".

Text Escape Sequences

---------------------

To include dynamic text in labels, such as system information, you can use

escape sequences mixed in with normal text in labels. Escapes sequences

consist of a data source names and any necessary parameters and possibly

one or more modifier functions all enclosed in square brackets:

LabelText "Just some test... [modifier(dataSource(parameter))]"

ClockLabelText "The time is: [time]"

QuoteLabelText "Quote of the Day: [trim(randomLine('C:\quotes.txt'))]"

SysLabelText "CPU: [cpu], RAM: [memInUse]"

As of version 1.5, labels can have text which spans multiple lines. To

create a line break in the text use the character sequence "\n". If you

need to include a literal backslash then use "\\".

MultiLineLabelText "This is on line 1\nThis is on line 2"

MemLabelText "Memory Info\n\nFree: [memAvailable]\nTotal: [memTotal]"

The following is a list of all the valid data sources and any parameters

they take:

activeTask

Title of the currently active task.

battery

Percentage of battery power remaining.

computerName

Name assigned to this computer.

cpu

Current total CPU usage percent.

date('format')

Current local date. Format is optional and is explained below.

diskAvailable('drive', units)

Amount of space currently available on given drive.

diskInUse('drive', units)

Amount of space currently in use on given drive.

diskTotal('drive', units)

Total amount of space on given drive.

hostName

Host name assigned to this computer.

ip

Internet Procotol (IP) address assigned to this computer.

iTime

Current time as Swatch internet time (beats).

mbmCPUUsage

CPU usage as reported by MBM5. Takes an optional numeric index as a

parameter. MBM5 supports 4 CPUs numbered 1 to 4.

mbmFanSpeed

Fan speed as reported by MBM5. Takes an optional numeric index as a

parameter. MBM5 supports 10 fans numbered 1 to 10.

mbmTemperature

Temperature as reported by MBM5. Takes an optional numeric index as a

parameter. MBM5 supports 10 temperature sensors numbered 1 to 10.

mbmVoltage

Voltage as reported by MBM5. Takes an optional numeric index as a

parameter. MBM5 supports 10 voltages numbered 1 to 10.

memAvailable(units)

Amount of physical memory currently available.

memInUse(units)

Amount of physical memory currently in use.

memTotal(units)

Total amount of physical memory in the system.

os

Name of the operating system running on this computer.

powerSource('AC', 'Battery')

Selects what text to display based on whether the system is running on AC

or battery power. Defaults are 'AC' and 'Battery'.

randomLine('file')

Retrieves a randomly selected line from the given file.

swapAvailable(units)

Amount of swap space currently available.

swapInUse(units)

Amount of swap space currently in use.

swapTotal(units)

Total amount of swap space in the system.

time('format')

Current local time. Format is optional and is explained below.

uptime('format')

Current system uptime. Format is optional and is explained below.

userName

Name of the user currently logged on.

winampSong

Song currently loaded in Winamp. If Winamp is not running or there is not

song loaded this will be empty.

winampTime

Time elapsed on the current song in Winamp.

winampRemainTime

Time remaining on the current song in Winamp.

winampTotalTime

Length of the current song in Winamp.

winampStatus

Current status of Winamp. If Winamp is running this will be one of

"Playing", "Paused", or "Stopped". If Winamp is not running this will be

empty.

windowTitle('class')

Title of the window with the given class name.

The following is the list of all valid modifier functions. These functions

can be used to modify the output from any of the above data sources. For

instance, the computer name is usually reported in all uppercase letters,

so you could use lowerCase or capitalize to change that.

after(x, delim)

Extracts the part of x after the first occurance of delim.

afterLast(x, delim)

Extracts the part of x after the last occurance of delim.

before(x, delim)

Extracts the part of x before the first occurance of delim.

beforeLast(x, delim)

Extracts the part of x before the last occurance of delim.

between(x, delim1, delim2)

Extracts the part of x that lies between the first occurance of delim1 and

the last occurance of delim2.

capitalize(x)

Makes all characters lowercase except for the first which is uppercased.

hideIfEmpty(x)

If x evaluates to an empty string and the label is visible then it is

hidden. Otherwise if x evaluates to a non-empty string and the label

is hidden then it will be shown. The argument is passed through unchanged.

lowerCase(x)

Makes all characters lowercase.

trim(x)

Removes leading and trailing whitespace.

upperCase(x)

Makes all characters uppercase.

The [date], [time], and [uptime] data sources can optionally take a format

as a parameter. The following character sequences will be interpreted in

the format (anything else is included verbatim):

m month (1-12)

mm month with leading zero (01-12)

mmm abbreviated month name (Jan, Feb, etc)

mmmm full month name (January, February, etc)

d day (1-31)

dd day with leading zero (01-31)

ddd abbreviated weekday name (Sun, Mon, etc)

dddd full weekday name (Sunday, Monday, etc)

yy 2-digit year

yyyy 4-digit year

h hour (1-12)

hh hour with leading zero (01-12)

i hour (0-23)

ii hour with leading zero (00-23)

n minute (0-59)

nn minute with leading zero (00-59)

s second (0-59)

ss second with leading zero (00-59)

am/pm am/pm indicator

For [uptime] only the day, hour, minute, and second values are valid. The

[date] and [time] data sources can also take a second parameter that

modifies the timezone used. Here are some examples:

[time('h:nn am/pm', '+4')]

[time('h:nn am/pm', '-2:30')]

[time('h:nn am/pm', 'UTC')]

[time('h:nn am/pm', 'UTC+1')]

UTC means coordinated universal time and is loosely defined as the current

date and time in Greenwich, England.

Data sources that return a size in bytes (mem, swap, etc) take an optional

parameter that specifies the units to use. Legal values are KB, MB, GB, and

% (percent). If no units are given then the units are automatically

selected based on the current value. For example, if 24 MB of memory are

free (out of 64 MB total):

[memAvailable(KB)] --> 24576

[memAvailable(MB)] --> 24

[memAvailable(GB)] --> 0.02

[memAvailable(%)] --> 38

Note that when you use specific units, the unit labels are not added for

you, but when the units are implicit they are.

MotherBoard Monitor: As of version 1.9 of Label the MBM data sources

[mbm*] require MBM version 5.1 (or higher). Due to the nature of the

changes this makes Label 1.9 incompatible with earlier versions of MBM.

Default Configurations using AllLabels

--------------------------------------

To help reduce redundant commads in the step.rc, label.dll now supports

default settings. By prepending "AllLabels" to the name of the setting you

can make defaults that apply to all labels. For example, the following

sets the a default font which will be used for LabelOne and LabelTwo but

which is overridden by LabelThree:

AllLabelsFont "Tahoma"

AllLabelsFontHeight 12

AllLabelsFontBold

AllLabelsFontColor 255 255 255

AllLabelsJustify left

LabelOneText "Hello!"

LabelOneX 100

LabelOneY 100

LabelOneJustify center

LabelTwoText "Hi!"

LabelTwoX 200

LabelTwoY 100

LabelThreeText "Greetings!"

LabelThreeX 300

LabelThreeY 100

LabelThreeFont "Arial"

LabelThreeFontHeight 11

LabelThreeFontColor 255 255 255

Using Labels inside LSBox

-------------------------

As of version 1.92 label.dll supports the new *ModuleHook LSBox interface.

To load a label into a box add a line like the following to your .box file.

*ModuleHook !LabelLsBoxHook <name of the label>

It works like !LabelCreate, in other words all the labeol settings are

stored in the .rc file.

You can use labels both inside and outside of boxes.

Label.dll has to be loaded before the box is created.

Disclaimer

----------

Copyright (C) 2001, Kevin Schaffer

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL

THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING

FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER

DEALINGS IN THE SOFTWARE.


Layercut.dll

---------------------------------------------------------------------------------

Layercut

Layercut 1.4

The Layered Shortcut Module

Layercut is a module for LiteStep based on the shortcut2 module. It's allow you to make real transparency shortcut with 32-bits png. This module only works on Windows 2000/XP.

-= Syl =-

Table of contents
  • History
  • Installation
  • Usage
    • Settings
    • Bangs
  • Animation
  • Execution
  • Tips
  • Known bugs
  • Greetings
  • Contact

History
    05/04/2002 - ver 1.4
    • Added flag K to the shortcut line (for non-clickable shortcut)
    • Well... there was still a z-order problem (thanks again to blkhawk for the explanation)
    29/03/2002 - ver 1.3c
    • Fixed the Ultimate z-order bug ^_^
    19/03/2002 - ver 1.3b
    • Fixed some problems with z-order (thanks to blkhawk for the tips).
    07/03/2002 - ver 1.3a
    • Added ShortcutNoLoadingOnStartup.
    04/03/2002 - ver 1.3
    • Added execution.
    • Reset the animation when the shortcut is shown/hidden.
    • Shortcuts that don't have caption won't be displayed in the task manager.
    28/02/2002 - ver 1.2b
    • Fixed the way to manage the second action.
    27/02/2002 - ver 1.2a
    • Added flags E and S (ActionIn and ActionOut).
    24/02/2002 - ver 1.2
    • Changed the way to handle images, now it takes less memory if you load same images with different shortcuts.
    • Removed an optimisation (!!!), shorcuts were loaded when they were visible on startup, now everything is loaded on startup, it's easier to use with LSDynamic.
    • Added animation support.
    • Added documentation in french.
    • Fixed the slowdown when shortcut was moving (with LSDynamic) and the mouse was moving over.
    • Fixed ShortcutAlphaThreshold.
    • Fixed the way to create shortcuts (shortcuts which should be on bottom were a little bit on top...).
    11/02/2002 - ver 1.1
    • Clipping region are now compute from alpha if the png has an alpha channel.
    • Added ShortcutAlphaThreshold.
    • Added right click support.
    04/02/2002 - ver 1.0
    • First release.

    started the 03/02/2002.

Installation

Copy Layercut.dll in your module directory and load the module:

LoadModule "c:\LiteStep\Modules\Layercut.dll"

if c:\LiteStep\Modules\ is your module directory of course...
Don't forget to not load the shorcut2.dll module, because it's useless...

Usage

Advantages:
- Shortcut with real transparency
- Shortcut alpha channel is enable and make the shortcut transparent
- Faster with LSDynamic
- Animated shortcuts
- Take less memory

Disadvantages:
- a little bit slower than shortcut2
- zorder is different than shortcut2

Syntax color:
<value> | you must specifie a value
<value> | a value
<value> | the value is optional
keyword | this is a keyword
keyword | the line with this keyword is optional

The syntax is compatible with shortcut2. You can also specify the alpha value for the shortcut:

*shortcut <caption> <x-pos> <y-pos> <image-normal> <image-hover> <image-click> #<group><flags> a:<alpha-value> <hover-sound> <sound-click> <action>

<alpha-value> is between 0 (transparent) to 255 (opaque). for example, a:128 is 50% transparent.
For more information about how shortcut works, view the help file about shortcut2 in the LiteStep documenttion folder.

With a little trick, you can add another action to your shortcut when you right click on it. To enable this feature, you have to use 2 !execute bang command, like this:

*Shortcut "" 0 0 normal.bmp hover.bmp click.bmp !execute [cmd1][cmd2] !execute [cmd3][cmd4]

cmd1 and cmd2 will be executed when you left click on the shortcut, and cmd3 and cmd4 when you right click.

If the flag K is specify, you can't click on the shortcut, finally, it just become a bitmap on your desktop...

If the flag D is specify, the second action will be executed when the mouse will be over the shortcut (ActionIn).
If the flag S is specify, the second action will be executed when the mouse will move out the shortcut (ActionOut).

WARNING: this syntax is obsolete but still working. You should use the execution syntax.

Settings

ShortcutDefaultAlpha <value>
Set the default alpha for the shortcuts.

ShortcutAlphaThreshold <value>
Set the threshold when the clipping region will be computed from the alpha channel. Each value in the alpha channel under the threshold is considered to be transparent. The default value is 0 (black is transparent).

ShortcutNoLoadingOnStartup Load the shortcut when it becomes visible (so it isn't loading all shortcuts on startup, back to shortcut2 style).

Bangs

!ShortcutGroupSetAlpha value groups
Change the alpha of a shortcut group.

Animation

The image for animation is based on the image in CursorXP schemes format. You can store each animation in one file, then specify the width and the height of one frame (image). Layercut will compute the number of frame with the width and the height that you specified.
You have to add some definition line to your step.rc to enable animation, then you just have to replace the name of the image by the <animation-name> in the shortcut definition.

*layercut | animation | <animation-name>
*layercut | image | <image-name>
*layercut | size | <width> <height>
*layercut | speed | <delay-in-ms>
*layercut | flags | <flags>
*layercut | between | <first-frame> <last-frame>
*layercut | ~animation

<animation-name>:
... is the name of the animation. Replace an image state in the shortcut definition with the animation name. You can put an animation for normal state, hover state and click state.

image:
Which image will be used for the animation. <image-name> can be a bmp or a png image.

size:
Specify the width and the height for a single image.

speed:
Specify the speed in milliseconds when Layercut will play the next frame.
the default value is 100 ms.

flags:
Here is the different flags:
O: force the Opacity of the animation (same as shortcut2).
L: animation Loop.
F: the animation will Finish the play before starting the next animation.
P: the animation will start (Priority) even if the current animation has the F flag (the current animation will be stopped). Useful for the click state...

between:
When the animation is looping, the default range for the loop is from the frame 0 to the last frame. When you specify between, you can chose where Layercut will loop by specifying the <first-frame> and the <last-frame>. For example if the range is between 10 and 30, Layercut will play the frame 0, 1, 2, 3, ..., 29 then will loop to the frame 9.

Execution

To make the syntax more readable, you can use this configuration for your command line. You have to add some definition line to your step.rc to enable execution syntax, then you just have to replace the name of the command by the <execution-name> in the shortcut.

*layercut | execution | <execution-name>
*layercut | left | <command>
*layercut | right | <command>
*layercut | in | <command>
*layercut | out | <command>
*layercut | ~execution

<execution-name>:
... is the name of the command macro. Replace the command in the shortcut definition with the execution name.

left, right, in, out:
You can specify a command for left click, right click, or when the mouse enter or leave the shortcut. You don't have to specify a command fo each state (if you just want to use right click, forget left, in and out).

Examples

copy the png files in your images directory, copy the layercut.rc file in your LiteStep directory (or theme directory), then include it in your step.rc file.

Tips

You don't have to replace your image from bmp to png, Layercut also work with bmp (but you won't have the alpha transparency per pixel, only the fast global alpha).

To create a png with an alpha channel, there is two way (with Photoshop):
You can create a new image with a transparent background, and draw a new image on it, then save this image into a png file.
Or you can add a new channel to the image in the layer tab, then draw a black and white image, where black is transparent and white is opaque. The advantage of the alpha channel is that you can make alpha-per-pixel and use the 256 colors grayscale to make smooth transparency.
You can also convert 32-bits tga to 32-bits png.

To make mouse-out state, use the flag L (loop) with between and the flag F (finish), like this, the animation will loop in the range specify with between, and when the mouse will move out, the animation will continue to play until the end.

To make animated shortcut, you should use AniUtil 1.3 from the CursorXP homepage.

Known bugs

This module only works on Windows 2000/XP.

This module is slower than the standard shortcut2 if you use it like shortcut2, I mean that if you don't want transparency, don't use it.

This module was made because it was too slow with LSDynamic to make shortcuts transparent, and this module is faster for transparency than other applications could make (like LSDynamic with shortcut2). Use the setting DynLayeredShortcut because you can't change the alpha of this shortcut in the old way. If you don't, this won't work.

Due to the huge modification to make shortcuts transparent, some flags for windows creation has changed, and some modification may appear with ontop shortcut, or when you change the ontop state of a shortcut. I tried to keep the shortcut2 feelings, but sometimes it was impossible.

If you use an animated shortcut for the normal state, and if this one is looping and has a very short delay ( < 100 ), this will take a lot of cpu time, you should increase your delay.

From the MSDN's FAQ:
"First of all, the Task Manager's Applications tab does not actually show applications.it shows the captions of visible, top-level windows (since this is how users typically decide which application they want to switch to). The Task Manager builds this list by walking through all of the top-level windows in the system (using something like EnumWindows), and adds to the list the windows that have the WS_VISIBLE style bit turned on."

In LSDynamic, to get the window handler, I'm using EnumWindows, and the shortcuts are visible, that's why you see them in the task manager. And I can't do anything about that.

Greetings

Thanks to the LSdev Team to let me use the shortcut2 sources to make this module.
Thanks to xnowfall (official beta-tester ;-) )
Thanks to NeoRamasay for letting me use some images from 3D Crystal Ex to illustrate Layercut.
Thanks again to xnowfall for the LiteStep logo example.

Contact

If you have a problem, want a new feature, want to report a bug, or want the source code, email me.

-= Syl =-
Web: | http://www.epita.fr/~rouque_s/
Mail: | rouque_s@epita.fr
ICQ: | 84198930


LiteInfo.dll

---------------------------------------------------------------------------------

[ Installation ]

Install like any other Litestep module:

*Wharf LiteInfo .none @c:\litestep\liteinfo.dll

Left click on the module to cycle through availible modes.

[ Monitor Mode ]

PHY - Percentage of physical memory in use

SWP - Percentage of swap file in use

CPU - CPU processor usage

[ Dial-Up Networking Mode ]

NOTE: For Dial-Up Networking Mode to function properly you need DUN v1.2 Update.

The version that comes with Windows95 or OSr2 will not work.

You can find the update at: http://www.microsoft.com/windows/downloads/contents/updates/w95dialupnetw/default.asp

BPS - This is your current BPS connection rate.

IN - Bytes/sec recieved

OUT - Bytes/sec sent

[ Themes ]

I have included minimal theme support in LiteInfo. To take advatange just

keep all your themes in their own directory. Eg: C:\LiteStep\LiteInfo\<theme>

You can then change themes by editing the Theme line in modules.ini.

Example MODULES.INI:

[LiteInfo]

Theme=C:\LiteStep\LiteInfo\CoolBlue\Theme.ini

[ History ]

v1.04

-----

- Added transparency support

- Added user defineable themes

- Added CoolBlue theme

v1.03

-----

- Fixed DUN crash bug when not connected, shame it has to take down

litestep with it

v1.02

-----

- Added bar meter to DUN bytes/sec

- Added transparent percentage readout

- Fixed uptime problem over 1 day

v1.01

-----

- Uptime now uses Windows uptime instead of local app counter

- Added Dial-Up Networking mode

- Mode is saved in MODULES.INI

- Fixed inaccurate CPU readouts

v1.00

-----

- Started keeping history

- Added double buffering to display to prevent flicker


LiteMAN.dll

---------------------------------------------------------------------------------

LiteMAN 4.3

ChangeLog

---------

New in 4.3:

- Search For Files has been implemented (Right click on a directory and select "Seach")

- Opening a saved search file implemented

New in 4.2:

- Added support for "open" and "explore" dde execution

New in Beta4:

- Fixed allocation code for program folder listing

LiteMAN should actually work now.

- Changed shell execute code to make it faster

New in Beta3:

- Removed all references to the run time libraries,

now compiles to 10k

- Fixed the bug for quoted DDE requests i.e.

"[CreateGroup("mirc")]. Bizzare...

- Removed custom code for path parsing and

used shlwapi instead.

To install this baby you need a "LoadModule C:\LITESTEP\LiteMAN.dll"

entry in your step.rc.

(replace C:\LITESTEP\ with your LiteStep path)

Then just pop the dll in your LiteStep dir and reload/

recycle.

Thats it.

Please test as many install programs as possible,

and beware of Install Shield. Included is the

message I posted to the LiteStep mailing list

about what Install Shield does, and why it sux.

Thanx for your time.

-(e)

Special thanks go to:

Chris Becke (pVoid) - For his invaluable insight into

undocumented shell functions, the run time library and

other stuff. Chris, you rule :-).

Brian Bailey (GoTH) - For helping me debug and test, and

for the coffee and the cigarettes!

Eric Krieger - For his beta testing.

Changes since beta1:

------------------------------------------------------

Install Shield message

------------------------------------------------------

Heyo,

I found a nice little work around (okay so it actually sucks, but hey :-))

to the "Install Shield checking for explorer.exe in the [boot], shell=

section" phew!

This applies to NT, but should work on 9x

step1:

open regedit HKLM\Software\Microsoft\Windows NT\Current Version\Winlogon

(or Win9x: progman.ini, [boot] section)

step2:

change the shell="C:\litestep\litestep.exe" (or what ever)

to shell="explorer.exe"

step3:

run the Install Shield program, until the first MAIN dialog pops up.

step4:

switch back to regedit (or progman.ini)

change the shell="explorer.exe" back to shell="C:\litestep\litestep.exe" (or

whatever)

step5:

switch back to the install shield program and continue the install.

NB: It is EXTREMELY important to do step4, do not leave it out

or Ultra-Bad Things Will Happen(tm) :-)

Why this hack works and what is happening:

Install Shield (at least in some versions) starts by running a 16bit app

that looks at the shell= setting, testing the string against "explorer.exe".

This 16bit app then launches the 32bit install program passing it various

bits of info including whether the shell is explorer.exe or not.

The 32bit program DOES NOT EVEN BOTHER to perform the relevant shell

functions

to add groups/items if the shell is not explorer.exe!!!

In my opinion this _reeks_ of conspiracy (or perhaps stupidty).

I tested this last night, and the program groups and items

were created perfectly (Ironware Folder was the install).

A word on LiteMAN. I now have a dll that plugs into LiteStep

and seems to work fine. This w/e I'll put in some debug logging

code to help test this thing.

-(e)

---

Peter Edwards

Software Engineer, Derivco (PTY) LTD.

Tel: +27 31 2029995 x124

Fax: +27 31 2027498

---------------------------------------------------------------------

To unsubscribe, e-mail: litestep-unsubscribe@litestep.ru.ac.za

For additional commands, e-mail: litestep-help@litestep.ru.ac.za


Litepaper.dll

---------------------------------------------------------------------------------

/*****************************************

*

*

* Litepaper.dll v1.01

* by Azathoth (2000)

*

* www.intricatechaos.com

*

*****************************************/

*About:

Litepaper.dll is a simple wallpaper changer with a few added extras.

*Features:

* Ability to browse for background picture you want rather than constantly typing.

* Ability to specify written loction of file for bangs/scripts etc.

* Ability to specify style of background display (tile/center/stretch)

* Ability to change resolutions upon background switching.

*Revision History:

[10/05/00] : 1.0

- Initial release.

[11/05/00] : 1.01

- More coding.

- Implemented LM_GETREVID so that litepaper.dll registers in the about box.

- Added a version page to the dll properties.

- Changed the bang commands from !setwallpaper and !setwallpapercmd to !litepaper and !litepapercmd respectively due to older wallpaper modules using !setwallpaper.

- Brand new feature :

Resolution support is now available. The resolution can be changed upon background switching.

This support is available in both the !litepaper and the !litepapercmd commands.

- Cleaned up tokenizing code. Works and looks nicer now.

- Comments on everything. Source will be released soon.

- Module gone from 4k to 7k (must try to refine my code).

- Linked against the newest build lib. Fixed the problems that didn't allow me to compile under the new builds.

*Usage:

Put this line in your step.rc :

Loadmodule c:\litestep\litepaper.dll (where c:\litestep is the directory of litepaper.dll)

The commands are then as follows:

!litepaper <style> <bpp> <width> <height>

This causes an open dialog to display and you can select the wallpaper of your choice.

The <style> section is there to provide the facility to change the way the bkg is displayed. 0 = center, 1 = tile, 2 = stretch.

The <bpp> defines what BitsPerPixel you wish the screen to display. ie. 16, 24...

The <width> defines how wide the screen will be (in pixels). ie. 1024, 800, 640...

The <height> defines the height in pixels of the screen. ie. 600, 768, 1200...

eg. !litepaper 0 16 800 600

!litepapercmd <path> <style> <bpp> <width> <height>

This allows you to select a picture for the bkg with a path specification.

The <path> is the full path to the image.

The <style> section is for changing the way the picture is displayed. 0 =center, 1=tile, 2 = stretch.

The <bpp> defines what BitsPerPixel the screen will change to. ie. 8, 32...

The <width> defines how many pixels wide the screen will become. ie. 1600, 1900...

The <height> defines how high in pixels the screen will be. ie. 480, 768...

eg. !litepapercmd c:\graphics\backgrounds\bg.bmp 2 32 1024 768

note: using quotes for long spaced out filenames is accepted.

eg. !litepapercmd "c:\my documents\images\chaos.bmp" 1 32 1024 768

also, note that you can only use BitMaP (bmp) files for the background, this is a windows imposed limitation and i am working on a work-around.

*Notes:

I took the initial idea from bangs.dll by rDj. I was re-writing it, implementing new commands etc., when i realised that i could do lots of stuff to the desktop. I went about making my own module and this is the result. I hope you like it.

*Thanks:

Firstly to the fellow coders who helped me greatly:-

MrJukes for helping me with many problems :)

NeXTer for showing me that i have sooo much more to learn.

Visigoth for making LSXCommand without which i would be severly stumped.

Message for listening to my rantings from time to time.

The LSDev team in general for just making something that I can use, enjoy and play with. I am just glad i can finally give something back to the community no matter how small.

I would also like to thank mindjunction.com cos it is a damn good site and it's ideas section has helped many a bored coder :) (Cheerz Geek)

I guess there are many other people to thank but i just can't think of any... oh wait...

Demigod for being so damn cool.

alrighty then, anything i missed????

*Adlib:

Send any suggestions, bugs, errors, hints or anything vaguely cool to me at the address' listed at the bottom of this doc.

********************************=============***********************************

*Contact details:

e-mail: azathoth@intricatechaos.com

website: www.intricatechaos.com

ICQ: 25810657

MSN: mistersteerpike@hotmail.com

IRC: EFNet, #litestep, #ls_help, #chunkymunky, #ds_help + others; nick = Azathoth


LiteScript.dll

---------------------------------------------------------------------------------

/////////////////////////////

// Module: LiteScript 1.1

// Written By: MrJukes

// Released: 9/18/00

/////////////////////////////

// New to 1.1

- Fixed hanging during recycle

- Added if statement

//

LoadModule c:\litestep\litescript.dll

step.rc

==========

; You can have as many of these as you would like

*LiteScript c:\litestep\litescript.scr

bangs

=======

!LiteScriptReport ; This bang will pop up a messagebox containing the class

; and caption of the window the cursor is currently over

; This bang is useful for making litescript scripts

*NOTE*

Anything in []'s is required.

Anything in ()'s is optional.

Do not actually put the []'s and ()'s in your script.

scripts

=========

The general format to create a bang is as follows:

Create Bang !BangName

Capture "Window Class" "Window Caption" (You can obtain these using !LiteScriptReport)

<Insert commands from below here>

End Capture

End Bang

Create Bang !BangName2

...

commands

==========

These are the commands you can put in the capture section from above.

; Move the currently captured window

; A = Absolute = Moves the windows to X,Y on the screen

; R = Relative = Moves the window X,Y pixels from the current location

Move [A|R] (-)X (-)Y

; Resize the currently captured window

; A = Absolute = Resizes the window so that it is WxH

; RR = Relative Right = The right border is fixed and the left border is resized

; RL = Relative Left = The left border is fixed and the right border is resized

; RT = Relative Top = The top border is fixed and the bottom border is resized

; RB = Relative Bottom = The bottom border is fixed and the top border is resized

Size [A|RR|RL|RT|RB] (-)W (-)H

; Hide the currently captured window

Hide

; Show the currently captured window

Show

; Repeat the next command X times

; Example:

; Repeat 11

; Move R 5 0

; This would move the currently captured window relatively to the right 5 pixels 11 times

Repeat X

; Set the delay between commands

; Once set, it stays set until the next call to SetDelay

SetDelay X

; Execute a bang command or an executable

Exec !Bang

Exec notepad.exe

; A basic if statement

; You cannot nest if statements

; Only 2 things may directly follow "if". They are "Visible" or "Hidden".

if Visible

Exec !Bang

Show

else

Hide

end if

==================================================================

E-mail me at mrjukes@purdue.edu with comments/suggestions/bugs.

Have fun,

MrJukes


lsAmp.dll

---------------------------------------------------------------------------------

< > lsAmp - a winAmp frontend for LiteStep (v2 is even more) < >

<!>==============================================================<!>

< > < >

<#> lsAmp v1 was developed by Gustav Munkby aiming at <#>

< > becomming a functional winAmp front-end for LiteStep. < >

< > The program is built on the same feature as geekMaster's < >

< > geekAmp. The main difference is that this is a skinnable < >

< > frontend and not just a couple bang-commands < >

< > But I wasn't really satisfied with the module when I < >

< > was more or less ready. Therefore I started creating v2, < >

< > which will be more than a front-end for winAmp. when I'm < >

< > finished it will not only be a "remote control" for < >

< > winAmp, but a "remote control" for everything on your < >

< > computer, including, executing of programs, bang commands < >

< > and some "in-program" functions (like the ones from < >

< > winAmp). Does it sound promising, just wait and see! < >

< > < >

< > developer: Gustav Munkby < >

< > grd@swipnet.se < >

< > < >

< > < >

< > installation < >

<!>--------------------------------------------------------------<!>

< > < >

<#> 1) unpack the lsAmp.dll into your LiteStep directory. <#>

< > (beta version only) < >

< > < >

<#> 2) add the line to step.rc looking somewhat like this: <#>

< > *wharf "lsAmp" .none "@c:\litestep\lsAmp.dll" < >

< > < >

<#> 3) start playin' around with the settings in your step.rc <#>

< > and images for the frontend. (final version will < >

< > contain a default "skin", anyone want to create one?) < >

< > < >

< > < >

< > configuring < >

<!>--------------------------------------------------------------<!>

< > < >

<#> lsAmp supports three different controls in it's user <#>

< > interface. They are: images, buttons & sliders. < >

< > < >

<#> Images: A control with just an image displaying on top of <#>

< > the background image. < >

< > < >

<#> Buttons: A control which is like an image, but with one <#>

< > major difference, it has an clicking action. < >

< > (final version might contain ctrl+click actions) < >

< > (or rightclick action or something, comments ) < >

< > < >

<#> Sliders: A control which has a handle which you can move <#>

< > either from side to side or up and down. < >

< > < >

< > lsAmp at least is supposed to be intelligent when it < >

< > comes to configuration, and it's supposed to be really < >

< > simple. The syntax for an image is as follows: < >

< > < >

<#> *lsAmpControl pos(x,y) size(width,height) image(src) <#>

< > < >

< > For buttons the syntax is the following: < >

< > < >

<#> *lsAmpControl pos(x,y) size(width,height) image(src) ... <#>

<#> ... action(command) <#>

< > < >

< > THE "..." MEANS THAT EVERYTHING SHOULD BE ON ONE LINE, AND < >

< > THE "..." SHOULD BE EXCLUDED. < >

< > < >

< > The syntax for sliders is: < >

< > < >

<#> *lsAmpControl pos(x,y) size(width,height) image(src) ... <#>

<#> ... action(command) handlesize(width,height) ... <#>

<#> ... handleimage(src) <#>

< > < >

< > THE "..." MEANS THAT EVERYTHING SHOULD BE ON ONE LINE, AND < >

< > THE "..." SHOULD BE EXCLUDED. < >

< > < >

<#> This means that all controls are created in an almost <#>

< > identical way, which makes it very easy. This means that < >

< > every line starting with *lsAmpControl is read in and then < >

< > lsAmp figures out whether the information supplied is an < >

< > image, button or slider. Which gives you the possability < >

< > to leave out some properties for the control. < >

< > for example, the size property isn't required to be set < >

< > if there is an image source supplied. On the other hand < >

< > imagesource isn't required if you specify the size. < >

< > < >

<#> if you don't understand this, it doesn't really matter, < >

< > just know that all these are valid lines: < >

< > < >

<#> *lsAmpControl image(pic.bmp) pos(4,20) size(8,8) ... <#>

<#> ... action(play) <#>

< > < >

<#> *lsAmpControl image("pic two.bmp") pos(8,40) ... <#>

<#> ... size(48,8) action(vertvolume) ... <#>

<#> ... handleimage(pic.bmp) handlesize(8,6) <#>

< > < >

<#> *lsAmpControl pos(4,20) image(pic.bmp) ... <#>

<#> ... action(horzpanning) handleimage(pic.bmp) <#>

< > < >

<#> *lsAmpControl pos(4,20) size(16,16) action(horvolume) ... <#>

<#> ... slidersize(8,10) <#>

< > < >

<#> *lsAmpControl size(16,16) action(next) <#>

< > < >

<#> The only thing that shouldn't be easy to understand yet, <#>

< > is the things standing inside the action parantheses. < >

< > For sliders the valid actions are: < >

< > < >

<8> horzvolume = horizontal volume slider (winAmp) <8>

<8> vertvolume = vertical volume slider (winAmp) <8>

<8> horzpanning = horizontal panning slider (winAmp) <8>

<8> vertpainnng = vertical panning slider (winAmp) <8>

<8> horztime = horizontal time slider (winAmp) <8>

<8> verttime = vertical time slider (winAmp) <8>

< > < >

<#> For buttons the pre-defined actions are: <#>

< > < >

<8> eq,equalizer = toggle equalizer window (winAmp) <8>

<8> exit = terminate (winAmp) <8>

<8> ff,fastforward = fastforward (5 sec) (winAmp) <8>

<8> mb,browser, = toggle minibrowser window (winAmp) <8>

<8> minibrowser <8>

<8> menu = show main-menu (winAmp) / lsAmp menu <8>

<8> mw,main = toggle main window (winAmp) <8>

<8> next = go to next track (winAmp) <8>

<8> paus, pause = pause the current track (winAmp) <8>

<8> pe,playlist = toggle playlist window (winAmp) <8>

<8> play = play current track (winAmp) <8>

<8> prev,previous = go to previous track (winAmp) <8>

<8> rew,rewind = rewind (5 sec) (winAmp) <8>

<8> stop = stop the current track (winAmp) <8>

<8> vdn,volumedown = decrease volume (winAmp) <8>

<8> vup,volumeup = increase volume (winAmp) <8>

< > < >

<#> Buttons also have this exciting feature that they can <#>

<#> both ordinary commands & bang-commands (simlar to wharf) <#>

<#> For any of these just type in whatever the command is! <#>

< > < >

< > < >

< > < >

< > additional notes < >

<!>--------------------------------------------------------------<!>

< > < >

< > Nothing here yet, except the fact that I'd like to be < >

< > presented with a lot of ideas, help and stuff like that. < >

< > < >

< > < >

< > < >

< > the man < >

<!>--------------------------------------------------------------<!>

< > < >

< > Gustav Munkby, online known as grim reaper or grd < >

< > The man behind the concept "grd" which stands for; < >

< > grim reaper designs, which is my web-page and what I do on < >

< > the computer. < >

< > This is where you find me online: < >

< > < >

<?> e-mail: grd@swipnet.se <?>

<?> webpage: http://home.swipnet.se/grd/ <?>

<?> lsAmp-web: http://home.swipnet.se/grd/lsAmp/ <?>

<?> icq: 1349988 <?>

<?> irc: #litestep/#lsdev/#winprog (nick: grd) <?>

< > < >


LsBox.dll

---------------------------------------------------------------------------------

--------------

I. About LsBox

--------------

LsBox is a Litestep loadmodule that allows the creation of

freefloating and final "Boxes" that can be used to

generate custom Messageboxes, Floating Menues, Dialogs and

gkrellm lookalike gizmos :)

----------------

II. Requirements

----------------

You will need a newer build to run LsBox. LsBox will load under

Win95 and WinNT 4 - if you have IE4 and a newer version of

comdlg32.dll installed installed. comdlg32.dll is usually

included with IE.

-----------------

III. Installation

-----------------

Just copy LsBox.dll to your Litestep dir and add the following

line to your step.rc:

Loadmodule C:\Litestep\LsBox.dll

(*assuming you have your LS stuff in C:\Litestep*)

--------------

IV. How to use

-------------

To actually use LsBox you have to have a .box

file and a few gfx to use with it.

The .Box file's syntax is much like the syntax of the

Step.rc.

After having placed everything in the right directorys

and editing the .box file you can call

!LsBoxCreate <path and file name of the .Box file>

Examples:

!LsBoxCreate recycle.box

Or

!LsBoxCreate LsBox\Shutdown.box

to create a box.

Now you should be able to see the box. If you want to

destroy the box and free the resources used by it

you have to call

!LsBoxDestroy <the "LsBoxName" of the box>

You can also create a box at startup by adding one or more

"*LsBoxCreate <path and file name of the .Box file>"

Commands to your Step.rc.

--------------------------------------

V. Box File Options and Bang Commands

--------------------------------------

*Essential Settings

-------------------

-LsBoxName <Name Of the Box>

The name of the box is used to identify a box. It's the

window title shown in the taskbar and it is needed to

destroy or to modify the state of a Box.

(Default: "LsBox")

-LsBoxX <xpos>

and

-LsBoxY <yPos>

These can have negative values too.

(Default: "0")

-LsBoxHeight <Height>

and

-LsBoxWidth <Width>

Use these to override the bitmap Width/Height autodetection. If

you want to use Tile-based back ground you have to set the Height

and Width of the box - it is detected from the Background bmp's

size otherwise.

(Default: "Size of BackGround Bmp")

-LsBoxBackGround <Image>

Can be made transparent with great magic pink(tm)

This also sets the Width&Height of the box.

(Default: ".none")

-LsBoxBackgroundOffs <LeftOffs> <TopOffs> <RightOffs> <BottomOffs>

This will set the border-tile size for all four sides of a box.

(Default: 0 0 0 0)

-LsBoxStartHidden

Starts a Box Hidden

(Default: "0")

-LsBoxNotSticky

Shows the Box on one Desktop only

(Default: "0")

-LsBoxRememberPosition

This let the Box save it's Position on Destroy

(Default: "0")

*ZOrder Settings

----------------

-LsBoxAlwaysOnTop

This makes the box AlwaysOnTop

(Default: "0")

-LsBoxHugBottom

This will position a box at the Bottom of the Z-Order.

(Default: "0")

*Mouse related Settings

-----------------------

-LSBoxDragRect <X1> <Y1> <X2> <Y2>

These set the dragable area of the box.

(Default: 0 0 0 0)

-LsBoxPopupAtMousePos

This will make the box pop up at your mouse pointer

(Default: "0")

-LsBoxOnLeftClick "!Bang"

Starts a !Bang or a command on leftclick.

(Default: "!none")

-LsBoxOnRightClick "!Bang"

Starts a !Bang or a command on rightclick.

(Default: "!popup")

-LsBoxSnapArea <X1> <Y1> <X2> <Y2>

Defines a DesktopArea a box cannot be moved out of by the Mouse

(Default: "!none")

*Bells & Whistles

-----------------

-LsBoxAlphaTransparency <Active Transparency> (InActive Transparency)

Lets you make a box Semi-transparent in Win2k and WinXP. The Inactive

Transparency is Optional.

(Default: 255 255)

-LsBoxUseFX <Delay> <Effect>

Sets the Effects to use when a Box Is Shown/Hidden

The Delay is in MSecs and You can use "Roll","Slide","Fade" and

"Collapse" Effects.

"Fade" currently doesn't work right with transparent Boxes.

(Default: 0 none)

-LsBoxDisableFX

This will disable the support for pretty FX like transparency for a box.

Use this if you find your Performance somewhat lacking in Win2k/XP.

(Default: "0")

*Docking Interfaces (currently disabled)

----------------------------------------

-LsBoxEnableDocking

This Setting will enable Drag N' Drop docking for a box - A box can dock to

ALL boxes - even the "non-docking" boxes.

(Default: "0")

-LsBoxDockTo "boxname1" "boxname2" ...

This will let you dock a box to one or several other boxes at create. Setting

LsBoxDockTo will also enable general Docking for that box.

(Default: "")

-LsBoxDockToWindow <App_Classname> <App_WindowName>

This will dock a boc to a normal window - several box functions are disabled

in this mode. The most important are FxEffects, saving of position and dragging.

(Default: "" "")

*Bang Commands

--------------

-!LsBoxCreate <Name of the Box>

-!LsBoxGroupShow <group>

And

-!LsBoxGroupHide <group>

And

-!LsBoxGroupToggle <group>

This will hide/show/toggle the Shortcuts&WharfModules of the given group.

-!LsBoxToggle <Name of the Box>

And

-!LsBoxShow <Name of the Box>

And

-!LsBoxHide <Name of the Box>

Show and Hide a Box. This wil NOT unload the box!

-!LsBoxResetPos

This will reset the Position of a all Boxes to the position in the .box files

-!LsBoxMoveBox <Name of the Box> <NewxPos> <NewyPos> [<Steps> <Time>]

This will let you move a box - the last to Options are optional, but look very neat :)

-!LsBoxSavePosition <Name of the Box> (*Optional* File to dump the Position to)

-!LsBoxResize <Name of the Box> <Width> <height>

This will Dynamically resize a box with a Border-Tiled Background - It will do

nothing to a box with a static Background.

-!LsBoxDock <MasterBox> <SlaveBox>

And

-!LsBoxUnDock <MasterBox> <SlaveBox>

This will chain a Box to a "MasterBox" - If the Master is moved the SlaveBox follows, but

The Master Won't follow the Sklave. Actually moving the Sklave will undoc it from the Master.

-!LsBoxBoxHook <path and file name of the .Box file>

-!LsBoxSetZOrder <Name of the Box> <ZOrder>

The ZOrder Setting is either "StayOnTop", "HugBottom" or "Normal".

Top is the default setting a Box is in.

*LsBox SubModules

-----------------

-*Shortcut <Hint> <xPos> <yPos> <Normal> <Over> <Clicked> (#<group><h>) <(Bang)Command(s)>

This will work exactly like the "normal" Shortcuts. The only Flags that work at this time are

<h> for hidden and <f> for Floating coordinbates. All Shortcuts are members of group 0 by default.

-*WharfModule <xPos> <yPos> <width> <height> <Wharfmodule to load> (#Group for module)

WharfModule Support - This is already as good as it gets -

all individual Module settings have to be placed in the Step.rc.

The Group is optional and all WharfModules are part of Group #0 by default.

You can now start a Wharfmodule <h>idden, too.

-*ModuleHook <!Modulebang> <Userdata_1>...<Userdata_N>

New Module interface - Only Rabidvwm, Tasks, Label and LsXCommand support

it, yet. You don't have to load a module before Lsbox, but the module you want to

hook must be loaded before you call the bang!

To load RabidVwm add a "VWMLoadInBox" line to your Step.rc and

a "*ModuleHook !VWMLoadBoxHook" line to the box it shall be loaded into -

if you want you can place *ALL* other settings in the Boxfile too.

To load Tasks add a "*ModuleHook !TasksBoxHook" line to your step.rc

To load Label a "*ModuleHook !LabelLsBoxHook <name of the label>" - works like !LabelCreate

-*LoadModule <Normal Litestep Loadmodule>

This Emulates Litestep's Step.rc's LoadModule line nothing more nothing less. You can

use it to load and unload a module with a box. For instance for grdamp. It works best

with non-visual modules, but some visual modules might also work.

-*Module <Module to load>

This Mode Will be phased out over the next couple of releases

------------

VII. History

------------

rel 2.8

-{Bangs} Added !LsBoxSetZOrder to allow setting of the ZOrder of a Box at runtime.

-{Boxes} Fixed an Update Problem with Box Show/hide Animations

-{LsBox} Added a Loadmodule Emulation - use this to load normal modules with a box.

-{Boxes} Added a "LsBoxHugBottom" Setting... it will put a Box at the very bottom of the

Z-Order and will let it stay there - Activated or Not.

-{Bangs} Added ModuleHooK Support to Lsbox - you can now Hook a Box to another Box by

useing "!LsBoxBoxHook" with the *ModuleHook setting - works like !LsBoxCreate

-{Boxes} Fixed "LsBoxDisableFX" so it don't disable all the transparencys anymore

-{Boxes} Added Two Optional Settings to the !LsboxMoveBox Bang - Steps and Delay

This animates the moving to the new Position.

-{Boxes} further improved the dragging code

-{Boxes} Added WM_PAINT response

-{ShortCuts} The "T" Flag for Shortcuts didn't do anything :=) Now it does.

-{ShortCuts} Speed up Shortcut normal/over/click state by updateing the RGN handeling

-{ShortCuts} Improved Error trapping

-{BoxAPI} added support for Negative Values to the Int2Str function.

-{BoxAPI} added support for "real" negative values to the Str2Int and Normalize

functions. Use "~" instead of "-" to force negative values.

-{TextCuts} are gone for god now.

-{LsBox} Cleaned up the Docs a bit.

rel 2.75

-{LsBox} Major code cleanup:

-{Boxes} Rewrote the dragging code for the boxes - runs *much* smoother now - less

bloated, too;

-{Boxes} Removed the LsBoxUnique setting - all boxes can only be loaded ONCE now

-{Bangs} Boxes are now always hidden from TasksManager - Label&Tasks should

use the new ModuleHook interface.

-{Bangs} Removed !LsBoxTaskShow

-{Boxes} Fixed MagicPink Transparency with certain settings

-{BoxAPI} Switched From LsExecute to LsExecuteEx

-{BoxAPI} Fixed a Bug in the (Command)Token Function that caused some combinations of

"" not to work. (thanks to qwilk for noticeing)

-{BoxAPI} Improved Win2k detection

-{Boxes} Fixed "LsBoxDisableFX" it won't disable all the Fx for all boxes

anymore but only the FX of the box it was set for.

-{Boxes} Disabled Docking For the time being

-{Boxes} Fixed "LsBoxEnableDocking" it could cause problems with "LsBoxDockToWindow"

-{Boxes} The Default cursor is now set properly

rel 2.72

-{Boxes} Are now dockable. Either by Drag N' Drop Docking or by Bangs - See

"!LsBoxDock" and "!LsBoxUnDock". You can also dock Boxes at

!create by adding a "LsBoxDockTo" line to the .box file.

-{Boxes} You can also Dock Boxes to Applications - See "LsBoxDockToWindow".

-{LsBox} Added Tinting at Bitmap-level - You can now Tint every bitmap that

is loaded by LsBox. Use "Bitmap.bmp(AARRGGBB)" where A is amount,

R red, G green and B blue in Hex

-{ModuleHook} New Module interface added. Seems to work pretty smooth :D

-{Boxes} Added "LsBoxDisableFX" - this will disable all the Transparency/Fx

stuff in Win2k/XP. If you want a nice Speedup for LARGE Shortcuts

then use this setting ;) (Right L-E-O?)

-{BoxFiles} Fixed an OLD bug that thankfully caused no Problems until now.

rel 2.71

-{Boxes} Boxes will now Auto-Hide from TaskManager after ~3,142 Seconds

this should allow Label & Tasks to bind to LsBox and still have

hidden Boxes.

-{Boxes} You can also unHide Boxes for ~3,142 Seconds by calling the new

"!LsBoxTaskFlash" Bang.

-{Boxes} And finally you can prevent Boxes from hiding by adding

"LsBoxNoTaskHide" to your .box file.

rel 2.7

-{Boxes} Boxes are now Hidden from the TaskManager in Win2k/XP

-{Shortcuts} Shortcuts can now defined Floating

-{WharfModules} WharfModules can now defined Floating

-{WharfModules} Grouped WharfModules now remember the shown / hidden

state on create (like the Shortcuts do).

-{WharfModules} Fixed some Compability Issues

-{Bangs} Added !LsBoxGroupAllign for Floating Groups

-{Boxes} The DragRect can now compute negative Values

-{LsBox} "-0" works now for all Settings that support relative Coordinates

rel 2.6

-{Boxes} Boxes can now Resized without Recycle if the Background is a

Tiled one - See "!LsBoxResize" and "LsBoxBackgroundOffs"

-{Boxes} Added Effects to the Show, Hide and Destroy Bangs - Looks cool

See "LsBoxUseFX" for Details

-{WharfModule} Added The Wharfmodules to the Shortcutgroups ;)

A WharfModule can now be Hidden and Shown

-{WharfModule} Fixed a Leak in the WharfModule SubModule

-{Shortcuts} Changed the Way Shorctuts are Z-ordered - This *should*

fix the Problems with Layered Hide/Show of Shortcuts.

-{Bangs} Added "!LsBoxSetTransparency" - Sets the Transparency

Level of a Box.

-{Bangs} Added "!LsBoxSavePosition" forces a box to write its

current Position to it's Box File (Or to any other File).

-{Bangs} !LsBoxResetPosition was broken - now fixed

-{Boxes} You can now Define a Second Transparency Level for Non-Active

Boxes.

-{Boxes} Non-AlwaysOnTop Boxes can now be transparent too

-{Boxes} Changed some of the Code to be more Win2k+ friendly

rel 2.5

-{Boxes} Added "LsBoxAlphaTransparency" for Win2k and WinXP.

-{Boxes} Magic Pink Transparency in Border-Tiled Skins works now -

in Win2k and WinXP.

-{Bangs} Added an "!LsBoxMoveBox" Bang - It lets you move Boxes.

-{Boxes} Added "Soft" saveing of a Box's Position - changes to the

.Box file won't be lost on Recycle if a box is writing it's

Position to the file.

rel 2.45

-{Shortcuts} The Shortcutgroups are back!

-{Boxes} LsBoxUnique was Broken, now fixed...

-{Boxes} Changed "LsBoxSticky" to "LsBoxNotSticky" - Sticky is now

the default behavior for a box.

-{Boxes} Added "LsBoxSnapArea" - This will set an Area of the Desktop

a Box cannot move out of.

-{Boxes} Removed the LsBoxNotSnappy Setting - notSnappy Boxes

don't make much sense

rel 2.4

-{LsBox}LsBox now fully supports LiteStep $Variables$ :D

-{Boxes}Added Border-Tiled Skinning (Like in Systray) for LsBox

(See "LsBoxBackgroundOffs" for details)

-{Shortcuts}the coordiantes of a shortcut can now be of negative value

and relative to the Bottom-Right corner of a Box.

-{BoxAPI}Fixed the main Tokenize function so it can Filter TAB

-{BoxFile}Changed the minor Trim function so it can Filter TAB

rel 2.3

-{LsBox}Boxes can now be created at Recycle/Startup by adding a

"*LsBoxCreate <path and filename of the .Box file>"

line in your Step.rc

-{Shortcuts}I removed the Shortcutgroups - they will be make a comeback

later

-{BoxAPI}LsBox will now show in !about

-{BoxFiles}You can now have Comments after an Entry in the .Box file.

rel 2.2

-{Shortcuts}Added support for ShortCutgroups to LsBox

!LsBoxGroupShow/Hide/Toggle it's all there ;)

-{Bangs}Added a !LsBoxToggle Bang

-{Boxes}LsBox won't close on Alt-F4 anymore (request)

-{Lsbox}Fixed a hole in the LsBoxDestroy Function. This should have caused

Crashes

-{LsBox}I moved all the Bangs to a seperate File.

rel 2.1

-Cleaned up vast parts of LsBox trying to fix the problem with threading.

It didn't help and the problem still exists - So don't use threading

with Lsbox till i fix the problem. !don't use no threading at all!

-{Boxes}Removed the adaptive rgn handeling - it was flickering too much

-{Bangs}Changed the "!LsBoxResetPos" bang to reset all positions to the ones

in the .box file even "normal" movement is now reset.

-This is the first offical version to work with LsSlider!

-Added "How to load a Module into LsBox" to the docs.

rel 2.0

-Added LsBoxOnLeftClick

-Added LsBoxOnRightClick

-Added LsBoxStartHidden

This will let you start a box Hidden by default

-Added !LsboxResetPos - This will help if a box was moved in some unnatural

way. Like when a box moves to 15mil X and 4mil Y after a resolution change

-Fixen not visible Text problem

-Fixed vanishing Shortcuts then Crash Problem

rel 1.99c

-{Boxes} Fixed the !LsBoxDestroy function, seems still to be crashing on some

win2k maschines. I still don't know what causes the crashes.

-Fixed the !lsBoxShow and !LsBoxHide functions - I broke them in the

last release.

rel 1.99b

-Fixed the dissapearing box problem by ignoring the ParentWnd supplied on InitModuleEx

-{Modules} will work with the new LsSlider release (load as *module)

-{Modules} will work with my Sysvwm patch (load as wharfmodule)

rel 1.99a

-There was no release 1.99a <G>

rel 1.99

-{Boxes} fixed a bug that caused an infinite loop after !LsBoxDestroy

-{Modules} New Module Format {Prototype}

I have already testet some of the more tolerant modules with this, but most

won't work *right*..... you can try it if you want.

-{WharfModules} Moved all WharfModule loading routines in this SubModule

rel 1.98

I have rewritten the module from ground up

Here is what is different:

-{Boxes} added a Winamplike "Snap to edge" feature

-{Boxes} Boxes won't "jump" on DesktopAreaChange anymore

-{Boxes} Boxes aren't visible in Tasks anymore

-{Boxes} Changed the way the background Bitmap is painted

-{Boxes} Changed the way the DragRect is set - RTM

This fixes the Magic Pink(tm) flash problem

-{Shortcuts} Changed the way (bang)commands are called.

Should be now faster & fool-proof, too.

-{Shortcuts} Added complex RGN handeling (still flickers a bit) -

Shortcuts can now be placed *Outside* the main Box.

-{Modules} implemented Wharf+ specs

-{Modules} WharfModule are now actually unloaded properly

-{BoxFiles} fixed a bug in the Keyname compare function

-{Text(cuts)} fixed the FontName setting to actually work - was Times New Roman only

rel 1.71

-fixed LsBox for Win95

-Module paths should now be relative to the Litestep dir

rel 1.7

-added native support for Wharfmodules

-added native support for displaying Text

-added !LsBoxShow and !LsBoxHide

-Paths are now handled relative to the Litestep Path.

-Trying to call !LsBoxCreate for an already created unique hidden

box will automatically call !LsBoxShow

-LsBoxX and LsBoxY can now have negative values

-fixed the all-tooltips-show-last-tooltip-text bug

-removed the LsBoxstatistics bang - wasn't worth the trouble

rel 1.5

-added failsave functions to prevent crashes caused by incorrect

options set in the .box file.

-evars in commands should work now

-a box can now save its position to the .box file

-LsBox should now work right with older Ls-Builds

-minor compatibily fix with PureLs ;=)

(changed initModuleEx return value to none-zero)

-LsBox should now work right with pureLs

-changed the way the Cfg pointer memory structure is created

-removed some useless code

-replaced window enumerating and box-destroy functions with

recursive versions.

-fixed a bug that caused crashes on !recycle in some cases

-added a !LsBox_Statistics bang - This bang will give detailed

infos about Memory useage of the boxes that are currently running

rel 1.1

-added hints to the shortcuts

-added LsBoxPopupAtMousePos by request

-added LsBoxWidth and LsBoxHeight -

no support for Stretch Skinning, yet

-removed old work-around code for pre-041600 builds

-fixed my tokenize functions - delimeters should work now.

-the windowclass "Lsboxclass" will now be unregistered at recycle

rel 1.0

-Rewrote cfg-destroy mechanism

-fixed the cfg leak

rel 0.98

-Added LsBoxSticky

-Added LsBoxUnique

-Added LsBoxAlwaysOnTop

-Added Destroy of other boxes from inside a box

-Added Creation of a box from inside a box

rel 0.95

-improved *image painting

-rewrote *shortcut handeling

rel 0.9

-first preview release


LSClipboard.dll

---------------------------------------------------------------------------------

////////////////////////////

// Module: LSClipboard 2.1

// Written By: MrJukes

// Released: 8/11/00

//////////////////////////

//////////////////////////

// Usage

//////////////////////////

Any text that is copied to the clipboard should show up in the LSClipboard list.

To get text back into the clipboard, double click on its entry.

To delete text from the list click on it and hit the delete key.

To delete all text from the list use the !CBClear bang command.

//////////////////////////

// New in 2.1

//////////////////////////

!CBOnTop

!CBNotOnTop

!CBToggleOnTop

- Now displays on all desktops

- Saves contents between recycles

//////////////////////////

// Step.rc

//////////////////////////

LoadModule c:\litestep\lsclipboard.dll

; Uncomment to make LSClipboard always on top

;CBAlwaysOnTop

; This will make LSClipboard start hidden

CBStartHidden

; The x cooridnate

CBX 0

; The y coordinate

CBY 20

; The width

CBWidth 150

; The Height

CBHeight 150

; The height of the top border

CBBorderTop 15

; The width of the right border

CBBorderRight 5

; The height of the bottom border

CBBorderBottom 5

; The width of the left border

CBBorderLeft 5

; The bmp to use for the backgroud of the main window

CBBgBmp lsclipboard.bmp

; The color to use for the background of the list

CBColorListBg 0x00124684

; The color to use for normal text

CBColorListFg 0x00C0C0C0

; The color to use for selected text

CBColorListFgSel 0x00FFFFFF

//////////////////////////

// !Bangs

//////////////////////////

; Shows LSClipboard

!CBShow

; Hides LSClipboard

!CBHide

; Toggles visibility

!CBToggle

; Clears all entries out of the list

!CBClear

//////////////////////////

If you find any bugs or have comments and suggestions, e-mail me at mrjukes@purdue.edu.

Have Fun,

MrJukes


LSCount.dll

---------------------------------------------------------------------------------

/////////////////////////////

// Module: LSCount v1.4

// Author: MrJukes

// Released: 6/26/00

//

// What's new - v1.4

* Hopefully fixed the problem where it crashes PureLS (and possibly some litestep crashes too).

The purpose of this module is to get an accurate account of how many people run LiteSTEP.

Thank you for helping us out with this.

To Load:

LoadModule c:\litestep\lscount.dll

Usage:

There really is no usage. It will connect to the server running on pimpin.net ONLY

the first time you run the module. After that it will never connect again. You

can have it display your user number on your desktop in any manner you wish, or you

can disable that feature. After the first time you run the module, you do not need

to load it again if you do not want to display your number on your desktop.

*NOTE*

Try to not recycle while the module is registering with the server. I would consider

this action "playing with fire". There is no cancel button while it is registering.

It should happen pretty quickly, but if it can't connect to the server, it will

time out after a minute.

Step.rc:

LSCountBgImage lscount.bmp ; Use this to display an image for the background

; If this is not present, LSCount just paints the desktop

; (There is no magic pink(tm) support for this (yet?)

LSCountX 0 ; X Position on desktop (Negative values accepted)

LSCountY 0 ; Y Position on desktop (Negative values accepted)

LSCountW 100 ; Width

LSCountH 24 ; Height

LSCountPreText "LS User: " ; What to display in front of your user number

LSCountFontFace Arial ; Font to use to display

LSCountFontSize 16 ; Size of that font

LSCountFontColor 0x00000000 ; Color of the font

LSCountNoDisplay ; If this is present, LSCount does not display your LS User #

LSCountAlwaysOnTop ; If this is present, LSCount will always be on top.

LSCountStartHidden ; If this is presend, LSCount will start hidden

Bang Commands:

!LSCountShow

!LSCountHide

!LSCountToggle

!LSCountGetCount

Have Fun,

MrJukes

*DISCLAIMER*

This module does not send any information about you, the user, or you computer.

It simply connects to the server, sends the server its own password to verify

that it is the module connecting to the server (and not somebody trying to screw

up the count), and then disconnects. Besides, if I wanted all your passwords, LSMail

would have been a better choice for me anyway. =P


LsDialer.dll

---------------------------------------------------------------------------------

LS Dialer (v0.42) by WhiteShadow (changty@muohio.edu) on 07-24-00

*******************************************************************

This module lets you dial in and disconnect to entries already in

your phonebook (the connections listed in Control Panel->Network

and Dialup Connections).

Installation:

1. Copy lsdialer.dll into your litestep folder

2. Add the line

LoadModule c:\litestep\lsdialer.dll

to your step.rc (with the appropriate drive letter and

path)

3. Recycle Litestep

Usage:

step.rc Commands

----------------

*LSDialerEntry "entry name" "Connection name" username password

This makes entries to be run by !dialerentry. It lets you

open a connection without having to type the connection

name, username and password every time (like an alias).

DialerNoDialog

This doesn't show the dialog box when starting a connection.

Bang Commands

-------------

!dialerconnect "Connection name" username password

Connection name is what is listed in your phonebook. The

phonebook is what is listed in Control Panel->Network

and Dialup Connections or My Computer->Dial Up Networking.

It is probably something like "Connection to 5555555" but

it may vary on how you have it setup. Username and

password are your username and password (obviously).

!dialerentry "entry name"

Opens connections defined by *LSDialerEntry.

!dialerhangup

This hangs up the connection.

Other Commands

--------------

When a connection is created, an icon will appear in your tray.

double-clicking on the icon will disconnect you.

Notes:

Also, currently, !dialerhangup only hangs up the first

connection found. So if you're using two modems at the same

time, then only one will be disconnected each time you call

!dialerhangup (and you can't specify which one). If someone

need support for multiple connections, email me and I'll add

the code to handle that for the next release.

History:

v0.42 (07-24-00)

-Recycling no longer loses the tray icon (only if lsdialer.dll

is loaded after systray.dll)

-Fixed a connection bug (when previous connection was closed

using another program)

v0.41 (07-06-00)

-Fixed crash on recycle when connected bug

v0.4 (06-01-00)

-Bug fixes and code optimization

v0.31 (05-20-00)

+Added DialerNoDialog

v0.3 (05-17-00)

+Added dialog box when dialing

+Added try icon (double click to disconnect)

v0.2 (05-15-00)

+Added support for *LSDialerEntry

-Fixed a bug with not hanging up the connection if it failed

v0.1 (05-11-00)

-initial release

Anyway, that's all, enjoy!

Feel free to send me comments or bugs.

WhiteShadow


LsDrinks.dll

---------------------------------------------------------------------------------

#############################################################################

# lsDrinks 2.40.0

# Hacked up by : nf0 <nf0@10500bc.org>

#

# Thanks to Charlie <ishamael@orodruin.ddns.org> for making asDrinks

# Thanks to Flip for making flipsthing.

# Thanks to Spawn@desktopz.org for helping out and making suggestions

# Thanks to Tin_Omin <desktopian.org> for the best site on the net and

# helping the community with with some backends.

# Thanks to MrJukes and geekMASTR for provinding community backends.

# Thanks to Aemergin for submitting some code to help under Win2k and IE 5.

# Thanks to Twyst <twyst@twysted.net> for makeing folder change suggestions.

#

# This program is free software; you can redistribute it and/or modify it

# under the terms of the GNU General Public License as published by the Free

# Software Foundation; either version 2 of the License, or (at your option)

# any later version.

#

# This program is distributed in the hope that it will be useful, but WITHOUT

# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or

# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for

# more details.

#

# You should have received a copy of the GNU General Public License along with

# this program; if not, write to:

# the Free Software Foundation, Inc.

# 59 Temple Place - Suite 330

# Boston, MA 02111-1307, USA.

###############################################################################

What it Does:

It checks SlashDot, FreshMeat, Linux Today, Segfault, Technotronic, DeskTopian,

Geeknews, BetaNews, 32BitOnline, ArsTechnica, Floach, BeNews, BeOSCentral,

ThemesOrg, SolarisCentral,Linux Games,Linux Apps,HackerNews,Happy Penguin News,

Happy Penguin Updates, Happy Penguin updates, Linux Quake,Absolutegamers

Linux 3d, Fullon 3d, Gizmo 3d, Blues news, Voodoo Extreme, Chunkymunky,

Python,FileForum,LiteStep.Net News, Litestep.Net Screen Shots,Litestep.Net Themes,

Geeknews.org,Demonews.com,PVPonline,DarkStep,Graphite,ShellScape,Tug House,

The Tech Report,Teh Ultimate OS,SciFi News Wire,Geeknews.org,Geeknik.net,Penny Arcade,

Fileclicks,Wired News,Cnet News,Perl Monks Code Snippets,Perl Monks Meditations,

Perl Monks Craft,Perl Monks Obfuscation,Perl Monks Poetry,Perl Monks Cool Uses of Perl,

MindJunction News, MindJunction Snips, MindJunction Ideas,Tekreview,Everything But Gaming,

Aint it cool news, EPCO News,Linux 2000,CMPTR,Elf life Comic,GPF Comic,News Hounds Comic,

Bruno the Bandit Comic,Funny Farm Comic,Goats Comic,Hounds Home Comic,

Avalon High Comic,Joe Average Comic,RoadWaffles Comic,SinFest Comic,Digital Theatre,neoFlux,

Wonko Slice,The New OS,Ice Walkers,Daemon News,Palm InfoCenter,PDA Buzz,

Palm Station,Casters Realm,Ever Lore,EQ Corner,EQ Stratics,EQ Dr. Twister,Brell Sirilis,

Nerd Perfect,DVD Animania,Modulo,Winfiles Latest,PureLS,NoNags Latest,DesktopSource Latest,

Ace's Hardware,Cold-ice,PC stats,Anime News Service,EQ'Lizer,File Watcher,WebMonkey,Infoworld,

Linux Poser,Litegnomer,LWN,mkLinux,Moneky Fist,News Forge,Packetstorm(5 total),Planet GeForce,

Pyxidis, Screaming Penguin,sdn,Freak Tech,Litestep Dev News,Litestep Distribution for the People News,

Desktop Engineer Junk Drawer,3D news,Anandtech News,comp.os.linux.announce,Daily Radar,

DeskMod,DotComma,EETimes,EmuSphere,EmuViews,Skinz.org,Streamingmedia.com,FreeOS,GA-Source,

Free XML Tools,Advogato News,BBSpot News,EndEffects,Fark,Joy Tech,Space.com,Cryptome,

Virtual Plastic,GuComics,Beta Bites,kuro5hin,Should Exist,Low Pass Industries,X-entertainment,

Dotcult,arsTechnica Front Page News (the other is there backend file),YogiNews,Ellicit,

Geeknews.Net,KDE News,Linux.com News,Linux.com Jobs,Linux.com LinuxGram,LinuxNewbie.com,

Linux Programming,Linux Telephony,Linux World,Mercury Center Breaking News,Mr. Tech,

Magic Torch Overcloking,NanoDot,Perl News,PHPbuilder General Forum,PHPbuilder Code Forum

PHPbuilder Install Forum,PHPbuilder Windows Forum,PHPbuilder Database Forum,PHPbuilder Articles,

Q3 Arena,RIVA 3D,Root Prompt,Smokedot.org,TechDirt,The Kult,Tom's Hardware,Tweak3D,

Tweak Town,Tweak Files,TwoMobile,Infolets and File Flash

Then Creates an Htm link in its folder. Then you can Look at your popup under

the selected folder and see the news. To follow the link just click on the one

you want and it will open it up in your browser.

Suggestions:

If you have any suggestion or no of any other sites that you would like added email me.

The sites must have some sort of text backend to work. If any of you with Litestep sites

would like to have your stuff added let me know.

How to Use it:

There are now 2 ways to use this script one is todo the same as always put the news in

folders and the second is to have it create an .htm page for you to open with your Browser.

Or you can do both. More details are in the lsdrinks.rc file please read that.

Way number 1 put the files in folders

1. You must already have Perl installed on you machine. It must also be in the path.

2. Extract the File to your litestep Dir with the paths. It is assumed that this is a

default install to C:\litestep. If not then you may need to change some of the paths

in the lsdrinks.pl

3. a. If you use the Default Litestep Popups:

*Important* Don't delete the x.x files from the subdirs. LS crashes when the folders

are empty when you look at your popups.

b. If you use Re5ource's popup.dll :

You can remove the x.x files it wont crash.

4. Create entries like the following:

a. If you use the Default Litestep Popups:

*Popup "SlashDot" "!PopupDynamicFolder:c:\lsdrinks\Slashdot"

*Popup "FreshMeat" "!PopupDynamicFolder:c:\lsdrinks\FreshMeat"

*Popup "Linux Today" "!PopupDynamicFolder:c:\lsdrinks\LinuxToday"

*Popup "Segfault" "!PopupDynamicfolder:c:\lsdrinks\Segfault"

*Popup "Technotronic" "!PopupDynamicfolder:c:\lsdrinks\technotronic"

*Popup "DeskTopian" "!PopupDynamicFolder:c:\lsdrinks\DeskTopian"

*Popup "Geeknews" "!PopupDynamicFolder:c:\lsdrinks\Geeknews"

*Popup "32BitsOnline" "!PopupDynamicFolder:c:\lsdrinks\32BitsOnline"

*Popup "BetaNews" "!PopupDynamicFolder:c:\lsdrinks\betanews"

*Popup "ArsTechnica" "!PopupDynamicFolder:c:\lsdrinks\ArsTechnica"

*Popup "Floach" "!PopupDynamicFolder:c:\lsdrinks\Floach"

*Popup "BeNews" "!PopupDynamicFolder:c:\lsdrinks\BeNews"

*Popup "BeOSCentral" "!PopupDynamicFolder:c:\lsdrinks\BeOSCentral"

*Popup "ThemesOrg" "!PopupDynamicFolder:c:\lsdrinks\ThemesOrg"

*Popup "SolarisCentral" "!PopupDynamicFolder:c:\lsdrinks\SolarisCentral"

*Popup "LinuxGames" "!PopupDynamicFolder:c:\lsdrinks\LinuxGames"

*Popup "LinuxApps" "!PopupDynamicFolder:c:\lsdrinks\LinuxApps"

*Popup "HackerNews " "!PopupDynamicFolder:c:\lsdrinks\HackerNews"

*Popup "HappyPenguinNews" "!PopupDynamicFolder:c:\lsdrinks\HappyPenguinNews"

*Popup "HappyPenguinUpdtes" "!PopupDynamicFolder:c:\lsdrinks\HappyPenguinUpdtes"

*Popup "HappyPenguinAdd" "!PopupDynamicFolder:c:\lsdrinks\HappyPenguinAdd"

*Popup "LinuxQuake" "!PopupDynamicFolder:c:\lsdrinks\LinuxQuake"

*Popup "LinuxQuakePage" "!PopupDynamicFolder:c:\lsdrinks\LinuxQuakePage"

*Popup "AbsoluteGamers" "!PopupDynamicFolder:c:\lsdrinks\AbsoluteGamers"

*Popup "Linux3d" "!PopupDynamicFolder:c:\lsdrinks\Linux3d"

*Popup "Fullon3d" "!PopupDynamicFolder:c:\lsdrinks\Fullon3d"

*Popup "Gizmo3d" "!PopupDynamicFolder:c:\lsdrinks\Gizmo3d"

*Popup "BluesNews" "!PopupDynamicFolder:c:\lsdrinks\luesNews"

*Popup "VoodooExtreme" "!PopupDynamicFolder:c:\lsdrinks\VoodooExtreme"

*Popup "ChunkyMunky" "!PopupDynamicFolder:c:\lsdrinks\ChunkyMunky"

*Popup "Python" "!PopupDynamicFolder:c:\lsdrinks\Python"

*Popup "Demonews" "!PopupDynamicFolder:c:\lsdrinks\Demonews"

*Popup "PVPonline" "!PopupDynamicFolder:c:\lsdrinks\PVPonline"

*Popup "DarkStep" "!PopupDynamicFolder:c:\lsdrinks\DarkStep"

*Popup "Graphite" "!PopupDynamicFolder:c:\lsdrinks\Graphite"

*Popup "ShellScape" "!PopupDynamicFolder:c:\lsdrinks\ShellScape"

*Popup "TugHouse" "!PopupDynamicFolder:c:\lsdrinks\tughouse"

*Popup "UltimateOS" "!PopupDynamicFolder:c:\lsdrinks\ultimateos"

*Popup "TechReport" "!PopupDynamicFolder:c:\lsdrinks\techreport"

*Popup "SciFiWire" "!PopupDynamicFolder:c:\lsdrinks\scifiwire"

*Popup "Geeknewsorg" "!PopupDynamicFolder:c:\lsdrinks\geeknewsorg"

*Popup "GeekNik" "!PopupDynamicFolder:c:\lsdrinks\geeknik"

*Popup "PennyArcade" "!PopupDynamicFolder:c:\lsdrinks\pennyarcade"

*Popup "FileClicks" "!PopupDynamicFolder:c:\lsdrinks\fileclicks"

b. If you use Re5ource's popup.dll :

In there own Top Level Folder (Doesn't work under the default LS Popup.dll)

*Popup "lsDrinks" Folder

*Popup "SlashDot" "!DynamicFolder:c:\lsdrinks\Slashdot"

*Popup "FreshMeat" "!DynamicFolder:c:\lsdrinks\FreshMeat"

*Popup "Linux Today" "!DynamicFolder:c:\lsdrinks\LinuxToday"

*Popup "Segfault" "!Dynamicfolder:c:\lsdrinks\Segfault"

*Popup "Technotronic" "!Dynamicfolder:c:\lsdrinks\technotronic"

*Popup "DeskTopian" "!DynamicFolder:c:\lsdrinks\DeskTopian"

*Popup "Geeknews" "!DynamicFolder:c:\lsdrinks\Geeknews"

*Popup "32BitsOnline" "!DynamicFolder:c:\lsdrinks\32BitsOnline"

*Popup "BetaNews" "!DynamicFolder:c:\lsdrinks\betanews"

*Popup "ArsTechnica" "!DynamicFolder:c:\lsdrinks\ArsTechnica"

*Popup "Floach" "!DynamicFolder:c:\lsdrinks\Floach"

*Popup "BeNews" "!DynamicFolder:c:\lsdrinks\BeNews"

*Popup "BeOSCentral" "!DynamicFolder:c:\lsdrinks\BeOSCentral"

*Popup "ThemesOrg" "!DynamicFolder:c:\lsdrinks\ThemesOrg"

*Popup "SolarisCentral" "!DynamicFolder:c:\lsdrinks\SolarisCentral"

*Popup "LinuxGames" "!DynamicFolder:c:\lsdrinks\LinuxGames"

*Popup "LinuxApps" "!DynamicFolder:c:\lsdrinks\LinuxApps"

*Popup "HackerNews " "!DynamicFolder:c:\lsdrinks\HackerNews"

*Popup "HappyPenguinNews" "!DynamicFolder:c:\lsdrinks\HappyPenguinNews"

*Popup "HappyPenguinUpdtes" "!DynamicFolder:c:\lsdrinks\HappyPenguinUpdtes"

*Popup "HappyPenguinAdd" "!DynamicFolder:c:\lsdrinks\HappyPenguinAdd"

*Popup "LinuxQuake" "!DynamicFolder:c:\lsdrinks\LinuxQuake"

*Popup "AbsoluteGamers" "!DynamicFolder:c:\lsdrinks\AbsoluteGamers"

*Popup "Linux3d" "!DynamicFolder:c:\lsdrinks\Linux3d"

*Popup "Fullon3d" "!DynamicFolder:c:\lsdrinks\Fullon3d"

*Popup "Gizmo3d" "!DynamicFolder:c:\lsdrinks\Gizmo3d"

*Popup "BluesNews" "!DynamicFolder:c:\lsdrinks\luesNews"

*Popup "VoodooExtreme" "!DynamicFolder:c:\lsdrinks\VoodooExtreme"

*Popup "ChunkyMunky" "!DynamicFolder:c:\lsdrinks\ChunkyMunky"

*Popup "Python" "!DynamicFolder:c:\lsdrinks\Python"

*Popup "Demonews" "!DynamicFolder:c:\lsdrinks\Demonews"

*Popup "PVPonline" "!DynamicFolder:c:\lsdrinks\PVPonline"

*Popup "DarkStep" "!DynamicFolder:c:\lsdrinks\DarkStep"

*Popup "Graphite" "!DynamicFolder:c:\lsdrinks\Graphite"

*Popup "ShellScape" "!DynamicFolder:c:\lsdrinks\ShellScape"

*Popup "TugHouse" "!DynamicFolder:c:\lsdrinks\tughouse"

*Popup "UltimateOS" "!DynamicFolder:c:\lsdrinks\ultimateos"

*Popup "TechReport" "!DynamicFolder:c:\lsdrinks\techreport"

*Popup "SciFiWire" "!DynamicFolder:c:\lsdrinks\scifiwire"

*Popup "Geeknewsorg" "!DynamicFolder:c:\lsdrinks\geeknewsorg"

*Popup "GeekNik" "!DynamicFolder:c:\lsdrinks\geeknik"

*Popup "PennyArcade" "!DynamicFolder:c:\lsdrinks\pennyarcade"

*Popup "FileClicks" "!DynamicFolder:c:\lsdrinks\fileclicks"

*Popup ~Folder

Or in Seperate Folders:

*Popup "SlashDot" "!DynamicFolder:c:\lsdrinks\Slashdot"

*Popup "FreshMeat" "!DynamicFolder:c:\lsdrinks\FreshMeat"

*Popup "Linux Today" "!DynamicFolder:c:\lsdrinks\LinuxToday"

*Popup "Segfault" "!Dynamicfolder:c:\lsdrinks\Segfault"

*Popup "Technotronic" "!Dynamicfolder:c:\lsdrinks\technotronic"

*Popup "DeskTopian" "!DynamicFolder:c:\lsdrinks\DeskTopian"

*Popup "Geeknews" "!DynamicFolder:c:\lsdrinks\Geeknews"

*Popup "32BitsOnline" "!DynamicFolder:c:\lsdrinks\32BitsOnline"

*Popup "BetaNews" "!DynamicFolder:c:\lsdrinks\betanews"

*Popup "ArsTechnica" "!DynamicFolder:c:\lsdrinks\ArsTechnica"

*Popup "Floach" "!DynamicFolder:c:\lsdrinks\Floach"

*Popup "BeNews" "!DynamicFolder:c:\lsdrinks\BeNews"

*Popup "BeOSCentral" "!DynamicFolder:c:\lsdrinks\BeOSCentral"

*Popup "ThemesOrg" "!DynamicFolder:c:\lsdrinks\ThemesOrg"

*Popup "SolarisCentral" "!DynamicFolder:c:\lsdrinks\SolarisCentral"

*Popup "LancedNet" "!DynamicFolder:c:\lsdrinks\LancedNet"

*Popup "LinuxGames" "!DynamicFolder:c:\lsdrinks\LinuxGames"

*Popup "LinuxApps" "!DynamicFolder:c:\lsdrinks\LinuxApps"

*Popup "HackerNews " "!DynamicFolder:c:\lsdrinks\HackerNews"

*Popup "HappyPenguinNews" "!DynamicFolder:c:\lsdrinks\HappyPenguinNews"

*Popup "HappyPenguinUpdtes" "!DynamicFolder:c:\lsdrinks\HappyPenguinUpdtes"

*Popup "HappyPenguinAdd" "!DynamicFolder:c:\lsdrinks\HappyPenguinAdd"

*Popup "LinuxQuake" "!DynamicFolder:c:\lsdrinks\LinuxQuake"

*Popup "AbsoluteGamers" "!DynamicFolder:c:\lsdrinks\AbsoluteGamers"

*Popup "Linux3d" "!DynamicFolder:c:\lsdrinks\Linux3d"

*Popup "Fullon3d" "!DynamicFolder:c:\lsdrinks\Fullon3d"

*Popup "Gizmo3d" "!DynamicFolder:c:\lsdrinks\Gizmo3d"

*Popup "X11spy" "!DynamicFolder:c:\lsdrinks\X11spy"

*Popup "BluesNews" "!DynamicFolder:c:\lsdrinks\luesNews"

*Popup "VoodooExtreme" "!DynamicFolder:c:\lsdrinks\VoodooExtreme"

*Popup "ChunkyMunky" "!DynamicFolder:c:\lsdrinks\ChunkyMunky"

*Popup "Python" "!DynamicFolder:c:\lsdrinks\Python"

*Popup "Demonews" "!DynamicFolder:c:\lsdrinks\Demonews"

*Popup "PVPonline" "!DynamicFolder:c:\lsdrinks\PVPonline"

*Popup "DarkStep" "!DynamicFolder:c:\lsdrinks\DarkStep"

*Popup "Graphite" "!DynamicFolder:c:\lsdrinks\Graphite"

*Popup "ShellScape" "!DynamicFolder:c:\lsdrinks\ShellScape"

*Popup "TugHouse" "!DynamicFolder:c:\lsdrinks\tughouse"

*Popup "UltimateOS" "!DynamicFolder:c:\lsdrinks\ultimateos"

*Popup "TechReport" "!DynamicFolder:c:\lsdrinks\techreport"

*Popup "SciFiWire" "!DynamicFolder:c:\lsdrinks\scifiwire"

*Popup "Geeknewsorg" "!DynamicFolder:c:\lsdrinks\geeknewsorg"

*Popup "GeekNik" "!DynamicFolder:c:\lsdrinks\geeknik"

*Popup "PennyArcade" "!DynamicFolder:c:\lsdrinks\pennyarcade"

*Popup "FileClicks" "!DynamicFolder:c:\lsdrinks\fileclicks"

5. To run Manually: At the Command Line Type: perl lsdrinks.pl

To run Automatically: Use the Start.bat file. That will start the Wincron program

and update it every hour at the 30 minute mark. This uses a file called WinCron.dat. This can be

changed according to how often you want it to update. Read: \lsdrinks\bin\wincron.txt

for more information.

6. To make further tweaks just open up the lsdrinks.pl in your favorite text editor. The file

is documented fairly well. You can turn on and turn off any of the news that you choose.

Way Number 2 As a WebPage

Please look at lsdrinks.rc to make the changes.

# 2.40.0 Fixed: Betanews

# Fixed: @Stake News

# Fixed: Voodoo Extreme

# Fixed: Dilbert

# Note: LiteStep.Net News - Still Down

# Note: LiteStep.Net Screen Shots - Still Down

# Note: LiteStep.Net Themes - Still Down

# Fixed: PVPonline

# Fixed: Tech Report

# Fixed: FileClicks

# Fixed: Geeknik

# Fixed: Wired

# Fixed: Sinfest Daily Comic

# Fixed: Joe Average Daily Comic

# Fixed: Avalon High Daily Comic

# Fixed: Hounds Home Daily Comic

# Fixed: Funny Farm Daily Comic

# Fixed: Bruno The Bandit Daily Comic

# Fixed: News Hounds Daily Comic

# Fixed: GPF Daily Comic

# Fixed: Elf Life Daily Comic

# Fixed: Anime News Service

# Fixed: WebMonkey

# Fixed: InfoWorld

# Fixed: PacketStorm Newest

# Fixed: PacketStorm Advisories

# Fixed: PacketStorm Tools

# Fixed: PacketStorm Exploits

# Fixed: PacketStorm Misc

# Fixed: Anandtech News

# Fixed: Joy Tech

# Fixed: Ellicit

# Fixed: Geeknews.net

# Fixed: KDE News

# Fixed: Perl News

# Fixed: TweakTown

# Fixed: FileFlash

# Fixed: Floach

# Fixed: Shell city

# Fixed: Penny Arcade

# Removed: Geeknews - dead

# Removed: 32BitsOnline - dead?

# Removed: BeOS Central - dead?

# Removed: Fullon 3d - gone

# Removed: GeekNews.Org - dead?

# Removed: Graphite News - gone

# Removed: Road Waffles Daily Comic - gone

# Removed: Linux 2000 News - gone

# Removed: Dr. Twisters EQ Alert

# Removed: Brell Serilis News

# Removed: NerdPerfect News

# Removed: WinFiles

# Removed: Cold-Ice News

# Removed: LiteGnomer

# Removed: Planet GeForce - gone

# Removed: Pyxidis - gone?

# Removed: DeskMod

# Removed: EmuSphere

# Removed: GA-Source - dead

# Removed: Fark

# Removed: GU Comics

# Removed: Low Pass Industries

# Removed: DotCult

# Removed: linuxworld

# Removed: riva3d

# Note: PacketStorm Advisories Currently Offline

# Note: PacketStorm Tools Currently Offline

# Note: PacketStorm Exploits Currently Offline

# Note: PacketStorm Misc Currently Offline

# 2.30.3 News: GeekNews (efront version) Might be down for the count.

# Fixed: floach

# Note: Geeknews(efront edition)is Possibly gone

# Fixed: Themes.org

# Note: Graphite - down, gone or moved ??

# Note: Geeknik - down or gone

# Fixed: News.com

# Fixed: SinFest

# Fixed: Brell Serilis News

# Note: modulo.litestep.org - gone or moved

# Note: WinFiles - moved to downloads.com. I'll probablly remove it next version.

# Note: Cold Ice news - gone or down

# Fixed: ShugaShack

# Fixed: Web Monkey

# Fixed: Planet geForce

# Fixed: Pyxidis - moved, down, or gone

# Fixed: Screaming Penguin

# Fixed: LS DEV News

# Note: DeskMod - moved, down or gone

# Fixed: Emusphere

# Fixed: Skinz.org

# Fixed: Streaming Media

# Fixed: GA Source

# Fixed: End Effect

# Fixed: Virtual Plastic

# Fixed: Linux World

# Fixed: Mercury Center Breaking News

# Note: RIVA 3D - unsure, part of the efront deal

# Fixed: TechDirt

# Fixed: The Kult

# 2.30.2 Fixed: Virtual Plastic

# Removed: Dtop

# Note: LiteStep.Net News Temp Down

# Note: LiteStep.Net Screen Shots Temp Down

# Note: LiteStep.Net Themes Temp Down

# Fixed: CastersRealm

# Fixed: Dr. Twisters EQ Alert

# 2.30.1 Fixed: Changed Hackernews to At Stake

# Fixed: VooDoo Extreme

# Fixed: Geeknik

# Fixed: News.com

# Fixed: Everything But Gaming

# Removed: Sit and Spin Comic (no longer done)

# Removed: Appwatch

# Removed: The NewOS

# Fixed: WonkoSlice

# Fixed: Casters Realm

# Fixed: Nerd Perfect

# Removed: Anime Digest

# Removed: Anime On DVD

# Removed: EX Anime

# Fixed: NoNags

# Note: Cold-Ice.com down during testing (possibly gone)

# Note: LiteGnomer down during testing (possibly gone)

# Note: Screaming Penguin down during testing

# Fixed: Litestep Distribution For People News

# Fixed: EmuSphere

# Note: SteamingMedia.com Down during testing.

# Fixed: Virtual Plastic

# Fixed: Kuro5hin

# Fixed: X-Entertainment

# Fixed: YogiNews

# Fixed: Linux.com News

# Fixed: Linux.com Jobs

# Fixed: Linux.com LinuxGram

# 2.30.0 Added: Space.com

# Added: Cryptome

# Added: Virtual Plastic

# Added: GuComics

# Added: Beta Bites

# Added: kuro5hin

# Added: Should Exist

# Added: Low Pass Industries

# Added: X-entertainment

# Added: Dotcult

# Added: arsTechnica Front Page News (the other is there backend file)

# Added: YogiNews

# Added: Ellicit

# Added: Geeknews.Net

# Added: KDE News

# Added: Linux.com News

# Added: Linux.com Jobs

# Added: Linux.com LinuxGram

# Added: LinuxNewbie.com

# Added: Linux Programming

# Added: Linux Telephony

# Added: Linux World

# Added: Mercury Center Breaking News

# Added: Mr. Tech

# Added: Magic Torch Overcloking

# Added: NanoDot

# Added: Perl News

# Added: PHPbuilder General Forum

# Added: PHPbuilder Code Forum

# Added: PHPbuilder Install Forum

# Added: PHPbuilder Windows Forum

# Added: PHPbuilder Database Forum

# Added: PHPbuilder Articles

# Added: Q3 Arena

# Added: RIVA 3D

# Added: Root Prompt

# Added: Smokedot.org

# Added: TechDirt

# Added: The Kult

# Added: Tom's Hardware

# Added: Tweak3D

# Added: Tweak Town

# Added: Tweak Files

# Added: TwoMobile

# Added: Infolets

# Added: File Flash

# 2.21.2 Fixed: Slashdot, changed to new backend

# Fixed: BluesNews

# Fixed: Dilbert

# Fixed: PVP Online

# Fixed: Penny Arcade

# Fixed: All perl monks sites. Temp. IP Change

# Fixed: WonkoSlice News

# Fixed: Daily Radar

# Fixed: Freshmeat, changed to new backend

# 2.21.1 Fixed: Newsforge

# Fixed: Fullon 3D

# Fixed: Dilbert

# Removed: DemoNews

# Removed: The Ultimate OS

# Removed: DarkStep

# Note: Geeknik Backend Down during testing

# Fixed: Mind Junction News

# Fixed: Mind Junction Ideas

# Note: The new OS down, possibly gone

# Fixed: EQ Corner

# Note: Anime Digest down

# Note: Anime on DVD down

# Note: Cold Ice down

# Fixed: Infoworld

# Fixed: MonkeyFist

# Note: Planet GeForce , possibly gone for good

# Fixed: LSD4P

# Fixed: Dekstop Engineer

# Fixed: EmuViews

# 2.21.0 Added: Litestep Dev News

# Added: Litestep Distribution for the People News

# Added: Desktop Engineer Junk Drawer

# Added: 3D news

# Added: Anandtech News

# Added: comp.os.linux.announce

# Added: Daily Radar

# Added: DeskMod

# Added: DotComma

# Added: EETimes

# Added: EmuSphere

# Added: EmuViews

# Added: Skinz.org

# Added: Streamingmedia.com

# Added: FreeOS

# Added: GA-Source

# Added: Free XML Tools

# Added: Advogato News

# Added: BBSpot News

# Added: EndEffects

# Added: Fark

# Added: Joy Tech

# 2.20.1 Fixed: After Y2k

# Fixed: Geeknik

# Fixed: Mind Junction Ideas

# Fixed: Daemon News

# Fixed: TechReport

# Fixed: Screaming Penguin

# Fixed: Eqcorner

# Note: Anime Digest website problems during testing

# Note: Anime on dvd website problems during testing

# Fixed: ExAnime

# 2.20.0 Added: PlanetGeForce

# Added: ThinkGeek

# Added: Pyxidis

# Added: The Screaming Penguin

# Added: SDN

# Added: Freak Tech

# Added: Last time checked

# Added: Page Title variable

# 2.19.0 Changed: Changed the FileName. Now will let you place the

# htm file anywhere you want and have any extension

# 2.18.0 Added: ShugaShack

# Added: FileWatcherNews

# Added: The Core Shell News

# Added: WebMonkey

# Added: InfoWorld

# Added: Linux Power

# Added: LiteGnomer

# Added: Linux Weekly News

# Added: mkLinux

# Added: MonkeyFist

# Added: NewsForge

# Added: Packetstorm New

# Added: Packetstorm Advisories

# Added: Packetstorm Tools

# Added: Packetstorm Exploits

# Added: Packetstorm Misc

# 2.17.4 Fixed: LiteStep ScreenShots

# Fixed: DarkStep

# Fixed: Geeknews

# Note: BeOS Central Down during testing

# Fixed: Linux3d

# Note: Ultimate OS Down during testing possibly gone

# Fixed: SinFest

# Fixed: Road Waffles

# Note: Sit and Spin Comic Not being updated for a short time.

# Fixed: FunnyFarm

# Fixed: Elf Life

# Note: The NewOS down during testing possibly gone

# Fixed: PalmInfoCenter

# Note: Anime on DVD Down during testing

# Note: Anime Digest Down during testing

# Note: Cold Ice News Down during testing

# 2.17.3 Removed: Gizmo3d

# Removed: TugHouse. It is no longer updated. :(

# 2.17.2 Fixed: LinuxToday

# Fixed: Desktopian

# Fixed: Geeknews

# Fixed: BeNews

# Fixed: Linux Games

# Fixed: Hacker News

# Fixed: Linux Quake News

# Note: Python.org is not broken It just hasn't been updated since March

# Fixed: PVP ONline

# Note: The Ultimate OS was down during testing

# Fixed: DarkStep

# Fixed: Geeknik

# Fixed: News.com

# Fixed: MindJunction News

# Fixed: Deamon News

# Note: The New OS hasn't been updated since May.

# Fixed: NeoFlux

# Fixed: EQstratics

# Fixed: NerdPerfect

# Note: AnimeDigest hasn't been updated since April

# Fixed: ExAnime

# Fixed: Desktop Source

# Note: Cold Ice down during testing

# Fixed: EQlizer

# 2.17.1 Fixed: BetaNews

# Fixed: BeOS Central

# Fixed: Themes.org

# Fixed: Solaris Central

# Change: Chunkymunky to Dtop

# Fixed: FileForum

# Fixed: After Y2k

# Fixed: Tech-Report

# Fixed: Perl Monk Snippets

# Fixed: Perl Monk Poetry

# Fixed: Perl Monk Cool Uses

# Fixed: Perl Monks Obfuscation

# Fixed: Perl Monks Craft

# Fixed: Perl Monks Meditations

# Fixed: EverLore

# Fixed: EQ Corner

# Fixed: EQ Dr. Twister

# Fixed: Several Sites not show up correctly when style set to 1

# News: Anime Digest seems to be down as of testing of this version.

# 2.17.0 Change: Added the foldernumval option. If set to 1 it will place

# Numbers infront of each topic in the folders so they will

# be displayed in order. Another good idea from Twyst.

# 2.16.0 Added: Anime News Service

# Added: EQ'Lizer.

# 2.15.1 Fixed: Geeknews to use an ip address DNS seems to be broke

# News: All the Happy Penguin Sites seem to be down at the moment.

# Fixed: Changed ChunkyMunky to the new IP until the copywrite issues are worked out.

# News: After Y2k Seems to be down for the moment. Hopefully its temporary because Tubes Rock.

# News: Still having Problems with Demonews, there server doesn't seem to play nice.

# News: Darkstep seems to be down at the moment.

# News: ShellScape seems to be down at the moment.

# Fixed: Geeknik.

# Fixed: News.Com

# Fixed: FunnyFarm

# Fixed: ElfLife

# 2.15.0 Chage: Add a change to the folder structure. You can now specifiy more specificaly

# which folder to places the news folders in.

# Done in the step.rc with the folderdir value.

# ex. folderdir=c:/windows/start menu/news/

# this will create a news folder under the start menu. This should provide more

# flexibility. Suggestion came from Twyst <twyst@twysted.net>. For better use under

# the default explorer shell.

# Added: Modulo

# Added: Winfiles Latest.

# Added: PureLS

# Added: NoNags Latest.

# Added: DesktopSource Latest.

# Added: Ace's Hardware

# Added: Cold-ice

# Added: PC stats.

# 2.14.1 Fixed: Casters Realm

# Fixed: Ever Lore

# Fixed: EQ Corner

# Fixed: EQ Stratics

# Fixed: EQ Dr. Twister

# Fixed: Brell Sirilis

# Fixed: Penny Arcade

# Fixed: Aint it Cool News

# 2.14.0 Added: Casters Realm

# Added: Ever Lore

# Added: EQ Corner

# Added: EQ Stratics

# Added: EQ Dr. Twister

# Added: Brell Sirilis

# Added: Nerd Perfect

# Added: Anime Digest

# Added: Anime on DVD

# Added: EX Anime

# Added: DVD Animania

# Fixed: Some invalid Folder names

# 2.13.0 Change: No longer are the folder vales auto-refreshing .htm files they are of the new .url

# format. This works better wiht IE 5 and Win2K. Thanks for the suggestion and code

# samples from :Aemergin.

# Change: Big overhaul to the images links in the folders made things a little bit easier.

# 2.13.0 Change: No longer are the folder vales auto-refreshing .htm files they are of the new .url

# format. This works better wiht IE 5 and Win2K. Thanks for the suggestion and code

# samples from :Aemergin.

# Change: Big overhaul to the images links in the folders made things a little bit easier.

# 2.12.0 Added: Palm Station.

# Added: PDA Buzz

# Added: Palm InfoCenter

# Added: AppWatch

# Added: Daemon News

# Added: Ice Walkers

# Added: The New OS

# Added: Wonko Slice

# Added: neoFlux

# Added: Digital Theatre

# 2.11.0 Added: SinFest Comic.

# Added: RoadWaffles Comic.

# Added: Joe Average Comic

# Added: Avalon High Comic

# Added: Hounds Home Comic.

# Added: Goats Comic

# Added: Sit and Spin Comic.

# Added: Funny Farm Comic.

# Added: Bruno the Bandit Comic.

# Added: News Hounds Comic.

# Added: GPF Comic

# Added: Elf life Comic.

# Added: CMPTR

# Added: Linux 2000

# 2.10.1 Fixed: Shell City

# 2.10.0 Added: Tekreview

# Added: Everything But Gaming

# Added: Aint it cool news.

# Added: EPCO News.

# 2.9.3 Fixed: All Mind Junction Folders.

# 2.9.2 Fixed: Mind Junction News.

# Fixed: GeekNik

# News: Segfault seems to be down. Thats all i know.

# 2.9.1 Fixed: Floach.

# Fixed: SciFi Wire.

# News: Linux Game Tome back up. Thats all the Happy Penguin News.

# News: DemoNews looks broken (server side) at the moment.

# News: Linux Quake backup.

# 2.9.0 Added: MindJunction News, MindJunction Snips, MindJunction Ideas

# 2.8.4 Fixed: After Y2k

# 2.8.3 Fixed: SciFi Wire

# News: DarkStep Down for a while. (waiting for a new server)

# Fixed: Perl Monks Craft

# 2.8.2 Fixed: Floach. Now parsing in lsDrinks doesn't use the Desktopian backend anylonger.

# News: All the HappyPenguin Sites are currently down due to server outages and changes.

# News: I have no idea whats happened to LinuxQuke it maybe dead i'll give it more time.

# 2.8.1 Fixed: Userfriendly

# 2.8.0 Added: Perl Monks Cool Uses of Perl

# Added: Perl Monks Poetry

# Added: Perl Monks Obfuscation

# Added: Perl Monks Craft

# Added: Perl Monks Meditations

# 2.7.0 Added: Perl Monks Code Snippets

# 2.6.0 Added: Cnet News

# Wired News

# 2.5.0 Added: Fileclicks.

# Added: Penny Arcade.

# Added: Geeknik.net.

# 2.4.1 Fixed: Geeknews.org.

# 2.4.0 Added: SciFi News Wire

# Added: The Tech Report

# Added: The Ultimate OS.

# Added: Tug House Comic.

# Added: ShellScape

# Added: Graphite.

# Added: DarkStep.

# 2.3.0 Added: PVPonline comic

# 2.2.0 Added: A whole new way to organize the HTM page. you can use the classic view

# to add sites in the order they were introduced or you can use the new

# style to display sites in a certain order. This works with the folders

# as well but doesn't really change anything other than the order sites are

# checked.

# 2.1.9 Changed: Liststep.Net,ScreenShots,Themes to parse in this file.(no longer using pimpin.net backends)

# Fixed: Problem with Feedback not working when folders were turned off

# Changed: Reformated alot of the Code to make it more readable

# Fixed: Technotronic.

# Removed: Litestep.com, Litestep.org,LancedNet. This dead code has been in 2 long.

# Fixed: Some of the Funky spelling problems like jumbling everything together.

# 2.1.8 Added: Demonews.com

# Fixed: BeNews

# 2.1.7 Fixed: Parsing problem with ) or (

# Fixed: LinuxToday - Page Moved

# Fixed: BetaNews - Formatting Changed

# Fixed: File Forum - Formatting Changed

# Fixed: Shell City - Formatting Changed

# 2.1.6 Added: Geeknews.org, Fixed Segfault

# 2.1.5 Added: After Y2k Cartoon

# Added: LiteStep.Net,Litestep.net Screen Shots (using backends from MrJukes and geekMASTR)

# Added: the ability for the script to create a directory if one doesn't exist so in including

# as the sub dirs is no longer needed.

# 2.1.4 Changed: floach to read from Desktopian * Thanks Tin_Omen *, Changed Tin_Toys to Desktopian

# Changed: the htm page to added a differnt header and url, Added Shell City

# 2.1.3 Added: Astronomy Pic of the Day, Dilbert,FileForum Changed the Way Floach Works.

# 2.1.2 Added: User Friendly Strip

# 2.1.1 Changed: Lots of cleanup. Several sites are gone and many have changed.

# I also added a few more formating options for the .htm page.

# I added a limit to the number of stories that will be shown.

# Lots of bug fixes and it will now automatically skip a site if

# its down.

# 2.0 Changed: Some more new code, bug fixes and cleanup.

# 1.9 Changed: Add the .htm part of the script

# 1.8 Changed: Totally rewrote all the code to be more like and engine.

# 1.7 Changed: Update Sites Started Changin code

# 1.6 Changed: Updated some to the sites that changed there backends and add a few new ones.

# Desktopz.org,Litestep.org,PCParadox,LancedNet,LinuxGames,LinuxApps

# HackerNews # Slow times out on slow connections,HappyPenguinNews

# HappyPenguinUpdtes,HappyPenguinAdd,LinuxQuake,LinuxQuakePage,AbsoluteGamers

# Linux3d,Fullon3d,740,Gizmo3d,X11spy,Polyester,MyDesktop,BluesNews

# VoodooExtreme,ChunkyMunky,Python

# 1.5 Changed: Updated some of the existing sites that no longer worked and/or moved there backend files.

# Added: Floach, LiteStepCom, BeNews, BeOSCentral, MattsHouse, ThemesOrg and SolarisCentral

# 1.4 Added: ArsTechnica,Changed some of the code

# 1.3 Added: 32BitsOnline, lsNews, and Betanews.

# Bugs: 32BitsOnline doesn't format the headlines very well.

# 1.2 Added: Tin_Omen, Technotronic, and Geeknews. Tweaked the Code just a bit.

# 1.1 Changed: After Tin_Omen suggested better ways to do the popups I have remove the recycle.exe file.

# It was in the wrong place to begin with :(

# I also removed the Targ checking as the site is closing down. The How to was update to

# reflect the suggestions from Tin_Omen.


LsDynamic.dll

---------------------------------------------------------------------------------

LSDynamic

LSDynamic 1.5

give life to your LiteStep

LSDynamic is a module for LiteStep which moves windows in a fluid way by using scripts based on the timer. Windows being referred by their classes and titles (or tooltips), so you can also move *Shortcut. Displacements can be linear or circular, with an acceleration, and the whole based on intervals of time in ms. Scripts are like a timeline under Premiere.

-= Syl =-

Table of contents
  • History
  • Installation
  • Usage
    • Movement syntax
    • Macro syntax
    • Settings
    • Bangs
    • LsBox
  • Examples
  • Tips
  • Troubleshooting
  • Greetings
  • Contact

History
    19/03/2002 - ver 1.5
    • Added DynInternalAlpha.
    • Added LsBox support.
    12/03/2002 - ver 1.4
    • Added wildcard (*) for the end of a caption name.
    • Added flags for circular movement.
    • Fixed a bug with Layercut.
    03/02/2002 - ver 1.3
    • Added DynLayeredShortcut.
    • Restore a layered shortcut just restore his initial alpha transparency.
    28/01/2002 - ver 1.2a
    • Added pause and resume to the bang command.
    • Fixed class argument for the move keyword in the macro.
    • Fixed arguments for the relay macro, and default parameter.
    • Thanks to xnowfall for his bug reports.
    22/01/2002 - ver 1.2
    • Updated pos with <relative> position.
    • Updated caption to use *.
    • Added size.
    • Added documentation in french.
    • Change the way to manage windows caption, slower but safer (the overflow shouldn't happen anymore).
    13/12/2001 - ver 1.1
    • Layered shortcuts can't be restored properly so just restore other layered windows (like Notepad).
    • Added relay.
    12/12/2001 - ver 1.0a
    • Fixed window class initialization.
    • Fixed "ShorcutClass" to "ShortcutClass" in examples.
    • Fixed tables in the readme.
    11/12/2001 - ver 1.0
    • First release.

    started the 03/12/2001.

Installation

Copy LSDynamic.dll in your module directory and load the module:

LoadModule "c:\LiteStep\Modules\LSDynamic.dll"

if c:\LiteStep\Modules\ is your module directory of course...
Then, to run the examples, go to the examples section.

Usage

LSDynamic allow you to define, in your step.rc, movements and macros, with timed movements inside, that you will call by using bangs command.
You will have to specify the window class and the window caption of the window that you want to move. To help you, you can use Winspy, a freeware that gives you these informations.
For shortcuts, the window class is "ShortcutClass" and the window caption is the tooltip that you defined when you created the shortcut.

Syntax color:

<value> | you must specifie a value
<value> | a value
<value> | the value is optional
keyword | this is a keyword
keyword | the line with this keyword is optional

Movement syntax

A movement define how your window will move. You can define a movement into a macro, but it's easier to understand if you define it outside a macro definition.
When a movement is define, you can use it into many macros. Here is a movement definition with all the possible options:

*dyn <move-type> | "move-name"
*dyn hwnd | <window-class>
*dyn caption | <window-caption>
*dyn range | <start-time> <end-time>
*dyn pos | <x-pos> <y-pos> <relative>
*dyn dest | <x-pos> <y-pos> <relative>
*dyn acc | <position-acceleration>
*dyn center | <x-pos> <y-pos> <relative>
*dyn c-dest | <x-pos> <y-pos> <relative>
*dyn c-acc | <center-acceleration>
*dyn r-dest | <ray-length>
*dyn r-acc | <ray-acceleration>
*dyn angle | <angle-in-degree>
*dyn a-acc | <angle-acceleration>
*dyn alpha | <start-alpha> <end-alpha>
*dyn alpha-acc | <alpha-acceleration>
*dyn size | <width> <height>
*dyn ~<move-type>

Definition

<move-type>:
There are two type of movements, linear and circular. A linear movement is a straight line from the initial position to the destination. A circular movement make the window follow a circular path.
The "move-name" is how you will reference the movement in the macro.
Here are the definition for each type:

*dyn linear | "move-name"
*dyn hwnd | <window-class>
*dyn caption | <window-caption>
*dyn range | <start-time> <end-time>
*dyn pos | <x-pos> <y-pos> <relative>
*dyn dest | <x-pos> <y-pos> <relative>
*dyn acc | <position-acceleration>
*dyn alpha | <start-alpha> <end-alpha>
*dyn alpha-acc | <alpha-acceleration>
*dyn size | <width> <height>
*dyn ~linear

*dyn circular | "move-name"
*dyn hwnd | <window-class>
*dyn caption | <window-caption>
*dyn range | <start-time> <end-time>
*dyn pos | <x-pos> <y-pos> <relative>
*dyn center | <x-pos> <y-pos> <relative>
*dyn c-dest | <x-pos> <y-pos> <relative>
*dyn c-acc | <center-acceleration>
*dyn r-dest | <ray-length>
*dyn r-acc | <ray-acceleration>
*dyn angle | <angle-in-degree>
*dyn a-acc | <angle-acceleration>
*dyn alpha | <start-alpha> <end-alpha>
*dyn alpha-acc | <alpha-acceleration>
*dyn size | <width> <height>
*dyn flags | <flags>
*dyn ~circular

hwnd:
Specify the window class of the window you want to move. for example, the <window-class> of a shortcut is ShortcutClass.
Tf you don't specify a hwnd for the movement, the window class is the same that you define on a move line in a macro, or in the macro.
If you don't specify a hwnd for the macro, the window class is the same that you have put in the bang command.
If you don't give a <window-class>, the default window class is ShortcutClass.

caption:
Specify the window caption of the window you want to move. for example, the <window-caption> of a shortcut is his tooltip.
You can specify several caption at the same time like this:
*dyn caption "caption1" "caption2" "caption3" "..."
 This syntax is also available where you have to specify captions.
If you don't specify a caption for the movement, the window caption is the same that you define on a move line in a macro, or in the macro.
If you don't specify a caption for the macro, the window caption is the same that you have put in the bang command.
You must at least specify a window caption somewhere.
You can use * to select all windows of the <window-class>.
Or just specify a * at the end of the name if you want to select multiple windows that begin with the same name (for example "caption *" will select "caption 1", "caption 2", "caption 3"...). You must put name with wildcard before other names ("caption *" "name *" "test 1" "test 2").

range:
The action is enable when the timer is between <start-time> and <end-time>. The range will be added with the range in the macro on the move line. If you don't specify a range for the movement, the range is the one you specify on the move line in the macro.

dest:
Define the destination of the window. You should specify a destination to make the linear movement.
The <relative> flag allow the position to be relative to the window.
If this flag isn't set, negative co-ordinate are relative to the opposite edge of the screen (like shortcut co-ordinates). If the flag is set (it acceptes value like "1", "true", "something"...), and if there is a sign in the co-ordinates (+ or -), the co-ordinates are relative to the initial position of the window (if there's no sign, the co-ordinates are relative to the screen).

pos:
This keyword move the window to a position when the movement begin, where <x-pos> and <y-pos> are the co-ordinates. Negative co-ordinate are relative to the opposite edge of the screen (like shortcut co-ordinates). If you don't specify a pos, the default position is the window position. <relative> position is relative to the window position.

size:
You can change the size of the window, just specify the new <width> and <height> of the window.

acc, r-acc, c-acc, a-acc, alpha-acc:
Define the acceleration to reach the destination. The default value is 100.
How does it work ?

acc < 100: o      o    o   o  oo ooo

acc = 100: o  o  o  o  o  o  o  o  o

acc > 100: ooo oo  o   o    o      o

 The acceleration isn't restrainte between 0 and 200 because you can make some very interesting effects according to the value of this one.

alpha:
Apply alpha blending to the window, from <start-alpha> to <end-alpha>. These values are between 0 and 255.

center:
Specify the center of the circle. The window will move around the center

c-dest:
Specify the destination of the center of the circle.

r-dest:
Specify the final ray. The initial ray is computed with the center of the circle and the window position.

angle:
The window will move around the center from the window inital position, where the angle is equal to zero, to the final position on the circular path, obtained with the angle in degree.

flags:
For the moment, there is only one flag for circular movement:
C: when the ray is computed, LSDynamic will move the window from the top/left corner (if DynNoCircularRelativeToWindowCenter isn't specify) or from the window center (if DynNoCircularRelativeToWindowCenter is specify). By default, the ray is computed from the window center.

Macro syntax

The macro is the way you will use the movements you defined.
*dyn macro | "macro-name"
*dyn flags | <flags>
*dyn hwnd | <window-class>
*dyn caption | <window-caption>
*dyn move | <start-time> <end-time> <move-name>
*dyn move | <start-time> <end-time> <move-name> <window-class> <window-caption>
*dyn move | <start-time> <end-time> <move-name> caption <window-caption>
*dyn exec | <start-time> <end-time> <command>
*dyn pause | <start-time> <end-time> <move-name>
*dyn resume | <start-time> <end-time> <move-name>
*dyn win-stats | <start-time> <end-time> <flags> <window-class> <window-caption>
*dyn win-stats | <start-time> <end-time> <flags> caption <window-caption>
*dyn restore | <window-caption>
*dyn relay | <relay-mode> <macro-name>

Definition

macro:
You can execute the macro with the bang command which is the "macro-name".

flags:
The possible <flags> are:
L: the macro will Loop.
O: a command can only be executed One time.

move:
This command moves a window with the script <move-name> during the time <start-time> and <end-time>. You can also specify a <window-class> and <window-caption>. If you don't want to specify the <window-class>, use the keyword caption
exec:
Execute a command during the time <start-time> and <end-time>.

pause:
Pause the <macro-name> when the time is between <start-time> and <end-time>.
resume:
Resume the paused <macro-name> when the time is between <start-time> and <end-time>.

win-stats:
This will show or hide the window during <start-time> and <end-time>. The available <flags> are hide and show.

restore:
Restore the window with the caption <window-caption> when the macro is finishing.

relay:
The macro, if it is stop, will give the relay to <macro-name> by using <relay-mode> which are:

  • default: stop the current macro ans start the relay macro.

    • Settings

    DynTimerUpdate <delay-in-ms>
    The macro will be updated every <delay-in-ms>.
    The default value is 10 ms.

    DynNoCircularRelativeToWindowCenter
    By default, when you make a circular movement, the co-ordinates are the center of the window. But you can force LSDynamic to take the top-left corner of the window to make the circular movement.

    DynNoHandleStorage
    By default, the windows handle are stored in a list to speed up windows detection, but if you want to move other windows than shortcut, and that windows can be closed, you should this option.

    DynStoreBadHandle
    If you only use LSDynamic with shortcuts, you can use this option to speed up again detection if a have specifie a bad window class or caption.

    DynForceLayerRestoration
    This option restore the window layer (layer is used for alpha blending) and free some memory. Normally it would speed up, but...

    DynLayeredShortcut
    If you use Layercut, enable the fast transparency.

    DynInternalAlpha <window-class> <window-class> <window-class> ...
    Allow LSDynamic to change the alpha of a module that support internal alpha (like Layercut). You must specify the window class that the module manage (for example ShortcutClass for Layercut). This system is just useful if the module manage the way to change alpha.

    How does it work:
    Specify a variable WM_ALPHA:

    #define WM_ALPHA (WM_USER + 0x42)

    In your module, prepare it to receive the WM_ALPHA message in the dispatcher:

    MESSAGE(onUpdateAlpha, WM_ALPHA)

    Then update the alpha of your window:

    void onUpdateAlpha(Message& message)
    {
      if (message.lParam < 0)
        updateAlpha(alpha_initial);
      else
        updateAlpha(message.lParam);
    }

    Of course, the last thing depend on how you manage the transparency.

    Bangs

    !macro-name default
    Run the macro.

    !macro-name stop
    Stop the current macro, and give the relay if there was a relay keyword in it.

    !macro-name pause
    Pause the macro execution.

    !macro-name resume
    Resume the macro execution.

    !macro-name caption <window-caption>
    !macro-name <window-class> <window-caption>
    Run the macro with the <window-class> and <window-caption>

    !DynRunning
    Show which macros are currently running.

    !DynChangeMoveType <move-name> <move-type>
    Change the type of the movement.

    !DynPauseAll
    !DynResumeAll
    To pause and resume all macros.

    LsBox

    To use LSDynamic with LsBox, specify this line in your box:

    *ModuleHook !DynModuleHook

    Then in the macro, the class name is LsBoxClass, and the caption name is your box name.

    Examples

    To run examples, copy the images in your image directory and the rc files in your LiteStep directory. Then include dyn.rc in your step.rc:
    include "c:\litestep\dyn.rc"
    You must load mzscript just to run the first bang !init_dyn with:
    *mzscript start !init_dyn default
    (this line is in the dyn.rc, if it doesn't work, try to put this line in your default script rc file, or run it with a hotkey).
    I try to show you with this example how LSDynamic works, so I just use mzscript to initialise the example. I don't manage if a macro has been executed, so clic just once on the big shortcut to initialise the second group, but don't clic on it a second time.

    Tips

    You should use Winspy to view <window-class> and <window-caption>.

    If you define a movement in a macro, you can also use it in other macros.

    You should pass <window-class> and <window-caption> threw bang command instead of define it in the movement or in a macro.

    LSDynamic doesn't mind in which group a shortcut is, so to have the shortcut working, you should show it with the !ShortcutGroupShow bang and then toggle the stat with win-stats. By this way, a shortcut can be in a group and can be hidden while the others are shown, the group are not altered.

    <start-time> and <end-time> can overlap another movement, you can make many movements at the same time.

    Changing the size of a transparent window isn't recommanded, or you will experience really big slowdown ^_^;

    Troubleshooting

    If the shortcut always swap its stat between normal and mouse_over, or if you can't get the window caption, use my modified shortcut2.dll.

    There is a problem with alpha blending when you use it on a shorcut which isn't ontop. You can't use alpha with child window (window create with the flag WS_CHILD). The modification I made on the shortcut module was just to allow you to use LSDynamic with ontop shortcut (the caption was disable if it was ontop).

    Some strange things can happen if you use multiples macros on same windows at the same time...

    If your shortcut is hidden when LiteStep is launched, it doesn't exist yet, you should toggle its stat before using it.

    A little slowdown should happen when the shortcut tooltip appears.

    A bug can happen when you want to execute a macro inside a macro (with the exec keyword). Email me if this happen with your macros to see what I can do...

    Greetings

    I was inspired by Lain (the manga) and mzscript (the module).
    Thanks to the LSDev Team for having made the best shell replacement.
    Thanks to Nekoi, SeRIAL, NecroBorg, Terro, Kaze, Stafkiel, Krag, Nox, Fredo, Jule, Vince, and every one who supported me =)
    Thanks to xnowfall for helping me to debug the 1.2 release.

    Contact

    If you have a problem, want a new feature, want to report a bug, email me.

    -= Syl =-
    Web: | http://www.epita.fr:8000/~rouque_s/
Mail: | rouque_s@epita.fr
ICQ: | 84198930


LsGradWall.dll

---------------------------------------------------------------------------------

LSGradWall Readme

Purpose

To create a gradient wallpaper and test the gradient engine.

Bang Commands

!SetWallTimer int ; sets the wallpaper change timer in minutes

!setwallcolor1 color ; sets color1

!Setwallcolor2 color ; ...

!setwalltype int ; ...

!gradwallinfo NULL ; displays a window showing wallpaper settings. Usefull if random wallpaper

!createwall NULL ; creates a new wallpaper

Settings

;Play with them to discover the effects possible

GradWallCreateOnStartup ; um ....

GradWallColor2 9 12 12 ; Merge to this colour

GradWallColor1 33 48 45 ; Merge from this colour

Gradwallxnumber 1 ; tile this many in a x direction

gradwallynumber 1 ; tile this many in a y direction

Gradwallx 1152 ; x position of 1st point

gradwally 0 ; y position of 1st point

gradwallangle 90 ; angle of line passing through 1st point

gradwallx2 250 ; x position of 2nd point

gradwally2 250 ; ...

gradwallangle2 90 ; ...

gradwallxcoeff 0 ; the x coeff of the merging function a*x + b*x^2 + c*x^3 + d/x

gradwallx2coeff 1 ; ... set to 1 and others to 0 for a 3d look

gradwallx3coeff 0 ; ...

gradwallinvcoeff 0 ; ...

GradwallScanlinedist 2 ; scanline distance, set to 0 to disable

;Gradwallscanlinecolor 00 00 00 ; color for the scanlines, defaults to color2

Gradwallwaves ; set waves

Gradwallwaveheight 50 ; scale factor for the waves

gradwallwavefactor 4 ; the number of waves per 360 degrees

;gradwallscale 50 ; create band of colour of this thickness, defaults to 1

gradwalltype 3 ; see below

gradwalldist 50 ; merge over this distance, defaults to whole screen

gradwallpath $themedir$wallpaper.bmp ; where to store the wallpaper

;gradwallhighquality ; does nothing atm

;types

;0 radial, 2 points

;1 line, single

;2 borders, play with it

;3 crossed lines, pipes

;4 crossed lines, pyramid - not at all functional

Thanks

Maduin, Azathoth, DevilBoi, Jalist, TNL

Feedback/complaints

email: galois@chungkuo.net

irc: #ls_help on EfNet


LsInkMenu.dll

---------------------------------------------------------------------------------

Untitled

LsLnkMenu version 1.7

Introduction:

LSLnkMenu is a Litestep module that will display a menu of .lnk files (Explorer shortcuts). It was created because I got tired of modifying all my shortcuts everytime I switched themes. With LsLnkMenu, all you have to do is change the location of the main button and all your shortcuts stay the same. LsLnkMenu will now read any file and its associated icon. However, you can change the icon that the file displays via explorer to any icon or bitmap.

Installation:

To install, add an entry to your step.rc file to load the dll (ex. LoadModule C:\LiteStep\LSLnkMenu.dll). Then make whatever modifications needed in the LSLnkMenu.ini file and place it in the LiteStep directory. NOTE: If you use the sample INI file provided, the top part contains an Example of the format don't use this, use the bottom part. You can also add an entry in your step.rc file called LsLnkMenuControlFile to have LsLnkMenu use a specific format file. This is useful for themes.
(Example LsLnkMenuControlFile c:\Litestep\themes\MyTheme\lslnkmenu.ini)

I have also included a screen shot of the module in action.

Format File:

Below is a list of all the options that can be set for the format file and a brief description of each (An “X” indicates a required value.)

[Main] Section

Command | R | Description | Sample
NumberOfSliders = integer | X | The number of Sliders to create (Required) | NumberOfSliders = 3

[SliderX] Section

This is the start of the settings for each of the buttons. Note the X represent the slider number these settings are for. Example = [Slider2] would be the settings for button number 2.

Command | R | Description | Sample
Description = string |  | The sliders description which appears on tooltip (If blank, then no tooltip for the main window) | Description = Internet Programs
LnkPath = string | X | The directory to read the .lnk files (Required) | LnkPath = c:\Internet
LnkFilesOnly = integer |  | Display .Lnk files only (Exploder shortcuts). 1 = Show only .Lnk files, 0 = Show all files. | LnkFilesOnly = 0 (Show all files)
ExclusionList = string |  | If we are showing all files, do we want to exclude certain file types. This is a string that lists the types of files to exclude. | ExclusionList = *.bat | *.txt | *.bmp (This would exclude any .bat, .txt and .bmp files from showing)
StartUpHidden = integer |  | The button is initially hidden. 1 = Start Hidden, 0 = Start Visible. Default = 0 | StartUpHidden = 0
MainTooltip = integer |  | Display the tooltip for the Main Button. Note that you must have a Description for the button to get a tooltip. This is just a way to turn it off. 1 = Show tooltip, 0 = Don't show tooltip. Default = 1 | MainTooltip = 0
MainMouseOverSound = string |  | The sound to play when the mouse passes over the main button. | MainMouseOverSound = D:\LiteStep\over.wav
MainPressSound = string |  | The sound to play when the mouse is pressed on the main button. | MainPressSound = D:\LiteStep\pressed.wav
XPos = integer |  | The X Position to place the main button. If the value is positive, the value is relative to the left side of the screen. If it is negative, it is relative to the right side of the screen. | XPos = 10
YPos = integer |  | The Y Position to place the main button. If the value is positive, the value is relative to the top of the screen. If it is negative, it is relative to the bottom of the screen. | YPos = 0
AlwaysOnTop = integer |  | Keep the button always on top. 1 = True, 0 = False (Default = 1) | AlwaysOnTop = 1
MainBitmap = string | X | The bitmap used for the main button (Required) | MainBitmap = MainButton.bmp
MainOverBitmap = string |  | The bitmap used when the mouse is over the main button. | MainOverBitmap = MainOver.bmp
MainPressedBitmap = string |  | The bitmap used when the mouse presses the main button. | MainPressedBitmap = MainPress.bmp
PanelMouseOverSound = string |  | The sound to play when the mouse passes over a button on the panel. | PanelMouseOverSound = D:\LiteStep\over.wav
PanelPressSound = string |  | The sound to play when the mouse is pressed on a button on the panel. | PanelPressSound = D:\LiteStep\pressed.wav
PanelTooltip = integer |  | Display the description of the button the mouse is over on the panel. 1 = Show tooltip, 0 = Don't show tooltip. Default = 1 | PanelTooltip = 0
PanelTopBitmap = string |  | Bitmap to place at top of the Panel. | PanelTopBitmap = PanelTop.bmp
PanelMiddleBitmap = string | X | Bitmap used for background of each .lnk file in the panel (Required) | PanelMiddleBitmap = PanelMid.bmp
PanelBottomBitmap = string |  | Bitmap to place at bottom of Panel. | PanelBottomBitmap = PanelBot.bmp
Orientation = integer |  | Orientation of Panel 1 = Vertical, 2 = Horizontal Default = 1 | Orientation = 1
SlideDirection = integer |  | Direction to slide the Panel 1 = Down, 2 = Vertical, 3 = Left, 4 = Right 5 = Right and Down, 6 = Right and Up (The last 2 are like the Explorer menu's 'Slide' feature) Default = 1 | SlideDirection = 5
SlideSpeed = integer |  | How much to expand the panel (in pixels) each loop until it is fully expanded. 0 = no 'animation' just appear. 1 = Real Slow, 50 = Faster. (Default = 0) | SlideSpeed = 15
ShowIcon = integer |  | Show Icons on the panel. (1 = True, 0 = False) Default = 1 | ShowIcon = 1
UseSmallIcon = integer |  | Use the small icon or the big one. (1 = use small, 0 = use big) Default = 1 | UseSmallIcon = 1
IconXPos = integer IconYPos = integer |  | Where to place the icon. This means the location of the icon on the PanelMiddleBitmap. | IconXPos = 10 IconYPos = 1
ShowText = integer |  | Do we print the .lnk decription. (1 = yes, 2 = no) default = 1. | ShowText = 1
TextXPos = integer TextYPos = integer |  | Same as the IconXPos and IconYPos except for the Text | TextXPos = 20 TextYPos = 25
TextColorR = integer TextColorG = integer TextColorB = integer |  | The color of the text when printing the .lnk decription. | TextColorR = 200 TextColorG = 200 TextColorB = 200
TextHighlightColorR = integer TextHighlightColorG = integer TextHighlightColorB = integer |  | The color of the text when it is highlighted. | TextHighlightColorR = 255 TextHighlightColorG = 255 TextHighlightColorB = 255
FontName = string |  | The font to use when printing the .lnk decription. Default = Small Fonts. | FontName = Tahoma
FontSize = integer |  | The size of font to use when printing the .lnk decription. Default = 10. | FontSize = 9
PanelXPos = integer PanelYPos = integer |  | Where to place the panel (In Screen Coordinates). If these are blank or missing, the location will calculated to be either under / over / left or right of the MainButton depending on the Orientation and slide direction. If the values are positive, the values is relative to the left side of the screen. If they are negative, they are relative to the right side of the screen. | PanelXPos = 200 PanelYPos = 0

[Default]

The default section was created because like all programmers, I'm very lazy and didn't like making the same change to 15 sections. The default section can contain any setting that appears in the [SliderX] section that you want to apply to all [SliderX] sections. An example would be PanelMiddleBitmap or ShowText. When the settings are loaded, the [SliderX] section will be checked first. If the setting is found there, it will use it. If it's not found, the [Default] section will searched and if the setting is found, it will use that. If the setting is not found in any of these sections, the default value will be used. An example of this is below :

[Default]
AlwaysOnTop = 1
MainTooltip = 1
PanelToolTip = 0
PanelBottomBitmap = LSLnkMenuBottom.bmp
PanelMiddleBitmap = LSLnkMenuMiddle.bmp
SlideDirection = 1
SlideSpeed = 15
TextXPos = 15
TextYPos = 2
TextColorR = 200
TextColorG = 200
TextColorB = 200
TextHighlightColorR = 255
TextHighlightColorG = 255
TextHighlightColorB = 0
FontHeight = 9
FontName = Tahoma
ShowText = 1
ShowIcon = 0

[Slider1]
LnkPath = $ShortcutsDir$Coding Stuff
Description = Code
XPos = 264
YPos = 0
MainBitmap = CodeButton1.bmp
MainPressedBitmap = CodeButton.bmp
MainOverBitmap CodeButton.bmp

[Slider2]
LnkPath = $ShortcutsDir$Coding Utilities
XPos = 304
YPos = 0
Description = Coding Utilities
MainBitmap = CodeUtilButton1.bmp
MainPressedBitmap = CodeUtilButton.bmp
MainOverBitmap = CodeUtilButton.bmp

!Bang Commands

The following is a list of all the !Bang Commands supported by LsLnkMenu

Command | Description | Sample
!LsLnkRefresh xxxx | Causes the Button to refresh its Panel (.Lnks). Pass the Description of the button to refresh that button, or pass the Slider number of the button. Pass no arguments to refresh all buttons | !LsLnkRefresh Code or !LsLnkRefresh 1 (From the format file section [Slider1] or !LsLnkRefresh (No parameters = Refresh all buttons)
!LsLnkExecute xxxx yyyy | Causes a program in LsLnkMenu to execute. Pass the Description of the button, or the Slider number of the button that contains the .Lnk file for the first parameter. Pass .Lnk description or button number in the panel for the second parameter. | !LsLnkExecute Code 1 (Causes the first .Lnk in the Code button to execute) or !LsLnkExecute Code Spy++ (Causes the .Lnk with description of Spy++ in the Code button, to execute) or !LsLnkExecute 1 5 (Causes the 5th .Lnk file in the 1st button to execute)
!LsLnkHide xxxx | Hides a button. Pass the Description of the button, or pass the Slider number of the button to hide it. Pass no arguments to hide all buttons. | !LsLnkHide Code (Hides the button with the description of 'Code') or !LsLnkHide 1 (Hides the first button. (From the format file section [Slider1])) or !LsLnkHide (Hides all buttons)
!LsLnkShow xxxx | Shows a button. Pass the Description of the button, or pass the Slider number of the button to show it. Pass no arguments to show all buttons. | !LsLnkShow Code (Show the button with the description of 'Code') or !LsLnkShow 1 (Show the first button. (From the format file section [Slider1])) or !LsLnkShow (Shows all buttons)
!LsLnkToggle xxxx | Toggle's the visible state of a button. Pass the Description of the button, or pass the Slider number of the button to toggle it. Pass no arguments to toggle all buttons | !LsLnkToggle Code (Toggle the button with the description of 'Code') or !LsLnkToggle 1 (Toggle the first button. (From the format file section [Slider1])) or !LsLnkToggle (Toggle all buttons)
!LsLnkMove xxxx aa bb | Move a button. Pass the Description of the button, or the Slider number of the button for the first parameter. Pass the XPos and YPos for the second and third parameters. | !LsLnkMove Code 100 56 (Move the button with the description of 'Code' to Screen Coord 100, 56) or !LsLnkToggle 1 -10 -100 (Move the first button. (From the format file section [Slider1]) to 10 pixels from the right side and 100 pixels from the bottom of the screen)
!LsLnkShowMenu xxx | Shows the specified menu x. | !LsLnkShowMenu 1

RunBang.Exe

I have included a program that will allow you to run a !Bang command from a shortcut. This gives you the ability to add a .Lnk file for !Recycle or !Shutdown. To use it, copy the EXE to a location (c:\litestep is fine), then make an Exploder shortcut to the program in the directory where you want it. Then edit the shortcut and put the !Bang command as an argument on the command line. Example - the link's command line should look like this c:\litestep\runbang.exe !Recycle or c:\litestep\runbang.exe !ShutDown

LSBox support:

There is (mostly finished) support for LSBox. You need to load the LsLnkMenu before LSBox. In your .box file put a like…

*ModuleHook !LsLnkBoxHook

And configure lslnkmenu as normal. Note: I don’t think you should try destroying a box if it has LsLnkMenu in it.

Enjoy!

If there are any questions, bugs or comments, please feel free to contact me at carluchi@stratos.net

Carl

History

Version 1.7 (1/21/2002)
[repugnant]

Added !LsLnkCloseAll

Added !LsLnkBoxHook

Bitmaps don't require full paths
Removed some unnecessary code

Added poor support for LSBox.

Version 1.6 ( unreleased )

Added LsLnkShowMenu

Version 1.51 (2/27/2000)
Added the ability to show all files in a directory
Added exclusion list

Version 1.5 (2/24/2000)
Added !LsLnkExecute
Added !LsLnkRefresh
Added !LsLnkHide
Added !LsLnkShow
Added !LsLnkToggle
Added !LsLnkMove
Added Sound support
Added abiltiy to startup hidden
Added ability to turn ToolTips off
Added ability to run !Bang commands from an Exploder shortcut
Added LsLnkMenuControlFile entry for the step.rc file
.Lnk's now display alphabetically
Fixed some focus problems
Fixed problem when not using AlwaysOnTop and the buttons disappearing

Version 1.0 (2/10/2000)
Initial Release


lslm.app

---------------------------------------------------------------------------------

LSLM v1.12 (LiteStep Load Meter that is ;))

==========

What is It?

-----------

This module displays the current system load in form of flow charts.

You can adjust the color settings, make it transparent-looking and

specify the interval in which the display is updated. The configuration

file can be edited and reloaded at runtime (see: popup menu).

NOTE: In case you're using Notepad as your config editor, you have to

----- use "Save As..." instead of "Save"--otherwise LSLM won't notice

the changes you made (must have to do with the way Windooze handles/

buffers .ini files *shrug*)

With the left mouse button you can cycle through the different sub display

modes (depending on the main display mode).

Main mode 1) EVERYTHING (you can control the upper and lower area):

-=-=-=-=-=-=-=-=-=-=-=-

TOP

---

Sub mode 0:

CPU = current CPU load in percent

AVG = average CPU load

Sub mode 1: (Windows 9x ONLY!)

SWP = percent of the swap file currently in use

SIZ = size of swap file in megabytes

Sub mode 2:

PHM = amount of physical memory (RAM) currently in use

AVL = free physical memory in megabytes

BOTTOM

------

Sub mode 0:

CPU use

Sub mode 1:

Uptime statistics

Sub mode 2:

Yes, both ;)

Main Mode 2) BARS ONLY:

-=-=-=-=-=-=-=--=-=-=-=

Here you can toggle your favorite display for the upper and lower

display areas (like Main mode 1 with the exception, that only bar modes

are available)

Main mode 4) UPTIME & CPU:

-=-=-=-=-=-=-=--=-=-=-=-=-

Here you can toggle the Uptime/CPU display order =)

Technical

---------

LSLM stores its specific settings under the "[LSLM]" section in a file

called "modules.ini" which resides in the LiteStep directory.

NOTE: If this file doesn't exist it will be created using

----- default values.

Installation

------------

Just copy the files you found in this archive to your LiteStep\\modules

directory (including the LSLM subdirectory!).

Then you have to add the following line to your step.rc:

;===========(Begin) Wharf.dll Entries=================

[...]

*Wharf "LS Load Monitor" "*wharfblank.bmp" "@$LiteStepDir$modules\lslm.app"

[...]

;===========(End) Wharf.dll Entries===================

Settings

--------

A (short) explanation of the various modules.ini settings:

| LSLM specific (section [LSLM])

`-------------------------------------------------------------------

Booleans (either set to TRUE or FALSE):

-=-=-=-=

Border - whether to put borders around the displays or not

Filled - if you want a filled chart set this to TRUE

Centered - centers the cpu flow chart instead of aligning it to

the bottom

Outline - makes the cpu chart have an outline

Grid - turns the background grid on or off

Transparent - restores the background after each update

DblBuffer - if activated the display won't flicker anymore :D

UseVIS - use a WinAMP .vis file for filling charts and bars

UseBMP - fill the graph. readout from a bitmap (if this is

set, UseVIS will be ignored for the flow chart--but not

for the gauge bars of course ;)) SEE: "Bitmap"

ScrBMP - whether you want the bitmap to follow the graph or not

(scroll)

UseTicks - in case the uptime stats may be spoiled set this to FALSE

(that way it starts counting at an uptime of 0 instead of

querying the system)

Numeric - display numeric values

ToolTip - shows info as Tooltip also (if set to TRUE)

StartEnabled - whether to start LSLM in active mode or not

Mode4_Full - if you want to have the CPU graph in full size when running

in CPU & Uptime stats mode, set this to TRUE

Mode4_CPUp - display order of CPU / Uptime in 4th mode

(TRUE = CPU -> Uptime, FALSE = the other way round)

Other stuff

-=-=-=-=-=-

TimeVal - here you can specify the interval in which the display

will be updated in milliseconds (1000 = default)

ModeTop - starting mode for upper display area (0/1/2)

ModeBot - " " " bottom " " (0/1/2)

ModeBarTop - Bar mode top display selection (0/1/2)

ModeBarBot - " " bottom " " (0/1/2)

CyclTop - if set to >0 it makes the module cycle through the

modes every n-th update (TimeVal)

CyclBot - the same as CyclTop -- only for the bottom area

VISFile - path and name of the visualisation file (see: UseVIS)

ConfigEd - " " " " " configuration editor you want to use

(e.g. "Notepad")

DisplayMode - initial displaymode (full-blown, only bars, bare CPU chart,

or CPU chart with Uptime display (0/1/2/3))

BorderSize - if this variable is set LSLM uses it instead of the one

which is supplied by LiteStep

Bitmap - path and name of a .bmp you might want to use for filled

readout, it will be scaled up/down to make it fit in the gfx

area (don't forget to set UseBMP to TRUE as well)

BMPPath - path to the LSLM resource .bmp directory

|Common (section [Common])

´------------------------------------------------------------------

Color values (in HEX notation (RRGGBB)):

-=-=-=-=-=-=

BGColor - background color of the display

FGColor - foreground color (filled readout)

OLColor - outline color for filled areas

GRColor - grid color

TXColor - color of text/numbers

TLEdgeC - color of the top and left sides of borders

BREdgeC - " " " bottom " right " " "

--- SIDE NOTE: ------------------------------------------------------------

The "problem" with COLORREF values is the way Windooze handles them:

"... When specifying an explicit RGB color, the COLORREF value has the

following hexadecimal form: 0x00bbggrr ..."

So if a program just reads and saves those values without proper conversion,

they will be backwards (just as in LiteStep ;))

Here's how to handle it correctly ('Color' is our COLORREF value):

For saving:

-----------

sprintf(FmtBuff, "%02X%02X%02X", GetRValue(Color),

GetGValue(Color),

GetBValue(Color));

and reading:

------------

COLORREF cTmp; // Temporary variable for conversion

sscanf(Buffer, "%X", &cTmp);

Color = RGB(GetBValue(cTmp), GetGValue(cTmp), GetRValue(cTmp));

The used macros (in case you don't have them):

#define GetRValue(rgb) ((BYTE) (rgb))

#define GetGValue(rgb) ((BYTE) (((WORD) (rgb)) >> 8))

#define GetBValue(rgb) ((BYTE) ((rgb) >> 16))

#define RGB(r, g ,b) ((DWORD) (((BYTE) (r) | \

((WORD) (g) << 8)) | \

(((DWORD) (BYTE) (b)) << 16)))

--- SIDE NOTE -------------------------------------------------------------

Popup Menu (right mousebutton)

------------------------------

x Enabled - enable/disable output

Mode > x 1) Everything - display all availabe stats (cycle with LMB)

x 2) Bars only - important datas in form of fuel gauges

x 3) CPU only - "plain" CPU usage flowchart

x 4) CPU & Uptime - CPU usage + Uptime stats

x Fullsize CPU - CPU in full window height (applies to 4)

x Centered CPU - CPU flow chart centered

Run WinTop - executes Wintop.exe (see: Kernel PowerToys)

--------------------------

Reload Config - you-guessed-it :) reloads the config file

Edit Config - spawns an external editor with modules.ini

(see variable "ConfigEd")

Requirements:

-------------

Windows 9x:

Nothing special to my knowledge (except for LiteStep of course =P)

Windwos NT:

LS and pdh.dll (Performance Data Helper)

History

-------

v0.1 - Initial release

v0.2 - added semi-transparency:

new .ini entry: "Transparent" (set to TRUE or FALSE)

v0.3 - added popup menu for editing/reloading the .ini file

- settings are now stored in "modules.ini" - "lslm.ini" is obsolete

(other modules also store their settings in that file)

- now uses a double-buffered drawing routine (if activated)

v0.4 - added support for WinAMP's .vis files (Floach)

- changed the extension to ".app" to make it look more like

an AfterStep module (Floach)

- now displays the average load ("AVG" bar)

- current load is also displayed in form of a bar and numeric as well

- various design changes

- BIG thanks to Floach for pointing out a bug before releasing this

version :)

v0.5 - added code for displaying use of physical memory and swap

- hopefully the charts don't flood the borders anymore :/

- automatic cycling through modes

v0.6 - fixed the swap use display (shouldn't crash anymore)

- added uptime statistics

v0.7 - new option for disabling the display (popup/.ini) (JoelG)

- can now start WinTop from the popup menu (redled)

(WinTop.exe is a component that comes with the "Windows 95 Kernel

PowerToys"--'A Windows 95 approximation to the UNIX "top" program')

- added a new display mode in which it only shows the important stats in

form of bars (popup/.ini)

v0.8 - yet another display mode for the purists

(bare CPU display chart as in v0.3 =))

- fixed some calculation routines (mem/swap sometimes had a variable

overflow what ended in odd results) (MH4)

- uses another routine for getting the system's uptime (MH4)

- the filled cpu chart can now be outlined

v0.9 - added NT support (now that was something hehe, there is one restriction

so far -- no display of swapfile statistics =/)

- took out all the MFC crap what made the mod grow to be a 65k monster

(so it doesn't require mfc42.dll anymore which is in fact >900kb

in size)

- changed the variable type of the uptime counter (damn overflows =P)

(MH4)

v0.99 (after having spent a whole week in hospital =/)

- fixed the "Disabled" image (the error didn't show in WharfTest and no

one seems to have noticed the display routine was broken *SHOCKED* ;P)

- added yet another running mode (CPU / Uptime stats in one view -- the

display order is toggable with left mouse click)

- 3rd bottom submode for running mode "Everything" - CPU + uptime

- new variable for specifying another editor than Notepad ("ConfigEd")

- changed the SIZ label to SZE (so that ppl stop wondering what on

earth the 512 stands for =))

- finally changed the format of the color values (RRGGBB instead of

BBGGRR) NO WORRIES, the old values will be converted (and moved to

the 'Common' section) on first program launch

- now it's also possible to use a bitmap for the filled CPU readout ;D

(see new values -> UseBMP, ScrBMP, Bitmap)

- made the colors for the boxes configurable as well

(see: TLEdgeC, BREdgeC, [Common] section)

- centered cpu readout if desired (see: Centered)

- moved the color values to another section ([Common])... maybe this could

become a shared section for all modules what would make it a lot easier

to create more standardized desktops (instead of having each module use

its own color values)? Perhaps there we could also specify things

like an external config editor (MH4? =)) etc.

- modified the uptime stat routines once again

v1.00 - new variable for using another BorderWidth than the one which is set

in LiteStep (see: BorderSize)

- put the resources in external files (so you can change the characters

without an resource editor :)) (see: BMPPath)

v1.01 - modification of Main mode 2 (Bars only) (AMJ / Side B)

v1.02 - fix for Win2K (the CPU display should work now--hopefully)

v1.10 - small modifications for LSLMConfig (nothing big I hope)

v1.11 - fixed the 'ConfigEd' overriding bug

- Swapfile stat should now work under NT as well

v1.12 (17.12.1999)

- shows info as tooltip as well

- added BMPPath setting to LSLMConf

NOTE: _actually_ LSLM should be able to figure out the path to the resource

.bmp's on its own (either by using LiteStep's wharfData or by getting

the module directoy), but somehow this doesn't seem to work for all ppl,

so in case you don't see the characters and numbers, make this point to

the directory where LSLM's .bmp files are extracted

(e.g. "C:\LiteStep\modules\LSLM\")

- the default configuration now assumes that LSLM will be installed under

$LiteStepDir$modules\

- made LSLM and LSLMConfig recognize the $LiteStepDir$ variable (this might be of

help for themebuilders).. so you can write stuff like that:

[LSLM]

VISFile=$LiteStepDir$modules\VISColor.txt

ConfigEd=$LiteStepDir$modules\LSLMConf.exe

BMPPath=$LiteStepDir$modules\LSLM\

in order to get that variable, LSLM parses the step.rc file which is assumed to

be found under the path LS supplies in his wharfData structure. (XMann)

--------------------------------------------------------------------------------

BIG THANKS FOR BUG REPORTING AND IDEAS HAVE TO GO TO:

Floach, JoelG, redled, MHolmesIV, Furan, AMJ / Side B, XMann

--------------------------------------------------------------------------------

IN CASE I HAVE FORGOTTEN ANYONE OR ANYTHING IN THIS DOCUMENTATION--SORRY IN

ADVANCE ;)

Address

-------

arkay@gmx.net OR "ArKay" on IRC (Efnet)

^^^^^^^^^^^^^ CHANGED!!


LSMail.dll

---------------------------------------------------------------------------------

/////////////////////////////

// Module: LSMail 4.0

// Written By: MrJukes

// Released: 10/01/00

/////////////////////////////

// what is it?

This is LiteSTEP's longest running third-party module. It checks for new mail on multiple

POP3 accounts and lets the user know when they have new mail.

// new to 4.0

- Complete rewrite

// usage

Left clicking will clear the new mail flag and switch back to normal mode

Right clicking will bring up a menu that is fairly self-explanatory.

Check Mail will check the mail

Launch E-Mail Client will launch your e-mail client

Clear New Mail will clear the new mail flag and switch back to normal mode

Zero all accounts will set all the counters to 0 so it will act like it does from startup

Dispaly Last Error will display the last error that LSMail encountered

- Include this if you feel the need to e-mail me a trouble report

LoadModule c:\litestep\lsmail.dll

step.rc

==========

LSMailX 0

LSMailY -34

LSMailW 125

LSMailH 16

LSMailTimer 1 ; How often to check for mail (in minutes)

; If this is 0 no timer will be set and all checking

; will have to be done manually

LSMailEMailClient "C:\Program Files\Outlook Express\msimn.exe"

LSMailFont Courier

LSMailFontSize 14

LSMailFontColor FFFFFF ; Normal font color

LSMailNewMailFontColor FF0000 ; Font color when there is new mail

LSMailCheckingFontaColor C8C8C8 ; Font color when checking mail

; *NOTE*

; If you do not specify a background color or a background image

; LSMail will use the desktop as its background.

LSMailBackColor 00FF00 ; Normal background color

LSMailBackNewMailColor FF0000 ; Background color when there is new mail

LSMailBackCheckingColor 000000 ; Background color when checking mail

LSMailBackBmp lsmail.bmp ; Normal Background image

LSMailNewMailBmp lsmail-newmail.bmp ; Background image when there is new mail

; Server Configuration

; You can have as many of these are you would like

; The format is as follows:

; *LSMailServer X Y "Display Name" host.name.com<:port> login

; Where:

; X = x offset for displaying the text inside the main window

; Y = y offset for displaying the text inside the main window

; Display Name = What to display for the server name

; host.name.com = Host to connect to

; <:port> = This is optional, leave it off and it defaults to 110

; login = Your login

Examples:

*LSMailServer 0 0 Purdue postoffice.purdue.edu:110 mrjukes

*LSMailServer 0 16 Interaccess mail.interaccess.com mrjukes

bangs

=======

!LSMailShow ; Shows the window

!LSMailHide ; Hides the window

!LSMailToggle ; Toggles visibility

!LSMailCheckMail ; Checks the mail

==================================================================

E-mail me at mrjukes@purdue.edu with comments/suggestions/bugs.

Have fun,

MrJukes


LSMousePos.dll

---------------------------------------------------------------------------------

LSMousePos LiteStep Mouse Position Module (now in Color!) Version 0.6

By Infidel 3/5/00

This module will create a small window that follows your mouse and tells you the screen coordinates of

the mouse pointer. It's available when you want it with a hotkey and dissapears when you don't need it.

It doesn't use too much memory, and uses no cpu time at all when it's not active (at least not that

you'll notice).

It will also show you the current color under the cursor. There are bangs to switch between displaying

hex and decimal, and also to switch back and forth between showing just the coordinates and the color as well.

The module can also be docked to a specific location on the desktop and set to appear on top of all other windows.

New bang commands:

!ToggleColorHex -switch between hex and decimal color values

!ToggleColorDisplay -switch between colors with coordinates, and just coordinates

Even Newer:

!ToggleMPosDock -switch between docked mode and cursor mode

New RC commands:

MousePosColorHex -start the display with hex, leave out to start in decimal

MousePosColorDisplay -start with the color display active

Even Newer:

MousePosAlwaysOnTop -put the window on top of all others

MousePosDock -Start in Docked mode

MousePosDockX 0 -Top left corner of dock location

MousePosDockY 0 -Top left corner of dock location

MousePosDockWidth 0 -Width and height of the docked window. If these are left out or set to 0,

MousePosDockHeight 0 -the docked window will stretch to the size of the test that's in it.

Rev History:

0.6 3/5/00

-Added Docking Support

0.5 3/4/00

-Added color display

-Rewrote and cleaned up code

0.2 11/27/99

-Works better with other windows (LSXCommand, Poppup)

-Text size is a little smaller

0.1 11/22/99

-Original Release

Installation:

=============

Copy the LSMousePos.dll file into your mods directory and include a loadmodule line in your step.rc:

(ex): LoadModule C:\litestep\lsmousepos.dll

The module adds a few bang commands: !ToggleMPos

!ToggleColorHex

!ToggleColorDisplay

!ToggleMPos will turn the window on or off. It's most usefull if you set it to a hotkey. Make sure

that you set it to something, or the window will get annoying after a while (Trust me).

Hotkeys are the easiest way to access these commands, but shortcuts will work too.

(ex): *Hotkey Win M !ToggleMPos

Configuration:

==============

Here are the step.rc options (settings shown are the defaults):

MousePosTextFontFace "Arial"

MousePosTextSize 14

MousePosTextColor 000000

MousePosBGColor FFFFFF

MousePosHiddenOnStart --this one does not default. You have to include this setting to make the window

hidden when you start LS.

MousePosUpdateRate 100 --this is the update rate of the position and contents of the window in

milliseconds. Lower numbers here result in smoother movement, but it's on a windows timer, so

values below 55 or so don't go any faster.

MousePosColorHex --If this is present in your step.rc, the module will start with color values

displayed in hexadecimal. If not, they'll be displayed in decimal. Change this with the

!ToggleColorHex bang command.

MousePosColorDisplay --If this command is present, the module will start with the colors displayed, if

not, it will only display the coordinates of the mouse. Change it with the !ToggleColorDisplay

bang command.

MousePosAlwaysOnTop -put the window on top of all others

MousePosDock -Start in Docked mode

MousePosDockX 0 -Top left corner of dock location

MousePosDockY 0 -Top left corner of dock location

MousePosDockWidth 0 -Width and height of the docked window. If these are left out or set to 0,

MousePosDockHeight 0 -the docked window will stretch to the size of the test that's in it.

Code By Infidel: jasonv@ncfweb.net

Send any problems, ideas, or flames my way. And as always, if it breaks your computer, it's not my fault.

(not that it will).


LsNetLoad.dll

---------------------------------------------------------------------------------

*******************************************************************************

* LSNetLoad v0.3 (released 22 April 2001) *

* Copyright (c) 2001 Peter Grimm (aka Dispater) - pmg23@columbia.edu *

* *

* This program is free software; you can redistribute it and/or *

* modify it under the terms of the GNU General Public License *

* as published by the Free Software Foundation; either version 2 *

* of the License, or (at your option) any later version. *

* *

* This program is distributed in the hope that it will be useful, *

* but WITHOUT ANY WARRANTY; without even the implied warranty of *

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *

* GNU General Public License for more details. *

* *

* You should have received a copy of the GNU General Public License *

* along with this program; if not, write to the Free Software *

* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *

*******************************************************************************

Function: Displays the current network usage on the wharf. Both in and out

are displayed in a graphical manner.

Requirements: Windows NT/2k, some sort of network connection or modem,

litestep, a computer.

Before you start: - Network Card

1. TCP/IP NetBIOS Helper Service needs to be enabled in order for the network

connection monitoring to take place, so enable it (Control Panel ->

Administrative Tools -> Services)

2. Open up Performance (Control Panel -> Administrative Tools -> Performance)

and right click on the graph area. Click add counters. Under performance

object, select network interface. Under select instance from list find

your network card's name. The module will need to know this in order to

get the nic performance variables properly.

Before you start: - Modem

1. I think you need to install the TCP/IP NetBIOS Helper Service, but i am not

sure.

2. Open up Performance (Control Panel -> Administrative Tools -> Performance)

and right click on the graph area. Click add counters. Under performance

object, select RAS Port. Under select instance from list find the

communication port your modem uses. The module will need to know this in

order to get the modem performance variables properly.

Before you start: - Windows NT 4

1. Make sure you have a copy of pdh.dll and it is either in the litestep

directory or the windows system32 directory.

Notes:

------

- All parameters are indicated with greater than and less than signs in this

text file but the signs should not be included in an actual step.rc file.

- string: This means that the value expected is a string of text. case is

important, and if the string contains any spaces of special

characters, put them in quotes. When in doubt, put them in

quotes.

- int: These are numbers. Generally these should be positive numbers. No

commas or spaces should be in the numbers, and they should not have a

decimal point.

- color: Colors are specified by a three numbers that are next to each other.

The numbers are in hexadecimal, so the digits go from 0 to 9, then

A, B, C, D, E, and F. The values are either in RRGGBB or BBGGRR.

000000 is black. FFFFFF is white. 00FF00 is green. To work with

colors as RRGGBB, put ColorRGB in the step rc. The colors shown in

this readme are in the BBGGRR format because that is the way they

are specified in c.

step.rc settings:

-----------------

LSNetLoadModem - This is required to be set if you are using a modem.

Default: Off - If you are using a network card do not set this unless

- you wish to view your modem's usage.

LSNetLoadInterface <string> - This is the name of your network

Default: "PCI Bus Master Adapter" - adapter. It is very important

or "COM2" if modem - that you get this correct or the

- module will fail miserably! If you

- have a modem it is the name of the

- respective port in your modem.

Note: it is a good idea to put the value in quotes, especially if it

includes space or punctuation marks (:,;/.[] etc).

LSNetLoadTransparent - Causes the background to be transparent (lets the

Default: Off - wharf tile show through).

LSNetLoadNoGrid - Removes the grid.

Default: Off

LSNetLoadNoBevel - Removes the bevel borders.

Default: Off

LSNetLoadScrollingGrid - Causes the grid to scroll with the graph similar

Default: Off - to the way id does in the Windows Task Manager

LSNetLoadGridColor <color> - Color of the grid.

Default: 900000

LSNetLoadBackColor <color> - Color of the background.

Default: 500000

LSNetLoadUpColor <color> - Color of the network out graph.

Default: 00FF00

LSNetLoadDownColor <color> - Color of the network in graph.

Default: FF0000

LSNetLoadNWBevelColor <color> - The color of the top left part of the

Default: 000000 - bevel border.

LSNetLoadSEBevelColor <color> - The color of the bottom right part of

Default: FFFFFF - the bevel border.

LSNetLoadMaxSpeed <int> - This is the maximum value on the graph in

Default: 10000 - bytes/second. This does not have to be the

- maximum speed of your network card. It is

- the maximum value displayed by the graph

- and affects the scale of the graph. If you

- put a value of 1250000 here, a rate of about

- 21k/s is needed to make the graph go up by one

- pixel. Divide bits/second by 8 and you will

- get the bytes per second. Modem baud rate is

- in bits per second. So there is no reason to

- set this above 7000 (56/8) for a 56k modem.

LSNetLoadRefreshDelay <int> - This is the time in milliseconds between

Default: 1000 - polls. It is inversely proportional to the

- speed of the graph.

LSNetLoadVerticalGridLines <int> - The number of vertical grid lines. This

Default: 4 - includes one for the right edge. If you

- use the scrolling feature, you will know

- why it is like this.

LSNetLoadHorizontalGridLines <int> - The number of horizontal grid lines.

Default: 4 - This includes the top, so if you have

- a maximum bandwidth of 50000 and you

- want each gridline to represent

- 10000, set the number of horizontal

- grid lines to 5.

LSNetLoadBorderSize <int> - This is the amount of space between the bevels

Default: 4 - and the edge of the wharf tile.

LSNetLoadNoText - This tells the module to not display text on startup.

Default: Off - The text can be toggled by clicking on the module.

LSNetLoadInLabel <string> - This is the text label for the current

Default: "i:" - download speed.

LSNetLoadOutLabel <string> - This is the text label for the current upload

Default: "o:" - speed.

LSNetLoadLeftTextXOffset <int> - This is how many pixels the text labels

Default: 3 - should be away from the left bevel.

LSNetLoadRightTextXOffset <int> - This is how many pixels the text numbers

Default: 3 - are away from the right bevel (they are

- right justified...)

LSNetLoadInTextYOffset <int> - This is how many pixels from the top bevel

Default: 1 - the network in text is drawn.

LSNetLoadOutTextYOffset <int> - The number of pixels from the top bevel the

Default: 15 - network out text is drawn.

LSNetLoadTextColor <color> - This is the color of the text. If you want

Default: FFAA80 - more control over the text color, use the

- following four settings.

LSNetLoadInTextColor <color> - The color of the number that

Default: the value of LSNetLoadColor - represents the current net in.

LSNetLoadOutTextColor <color> - The color of the number that

Default: the value of LSNetLoadColor - represents the current net out.

LSNetLoadInTextLabelColor <color> - The color of the text label for the

Default: the value of LSNetLoadColor - net in number.

LSNetLoadOutTextLabelColor <color> - The color of the text label for the

Default: the value of LSNetLoadColor - net out counter.

LSNetLoadFontSize <int> - The size of the font that is used to display the

Default: 10 - text. If the size that is specified here is not

- available (eg raster fonts), the font's default

- size is used.

LSNetLoadFont <string> - The name of the font that is used to display the

Default: "Comic Sans MS" - text. Most fonts should work including both

- true type and raster fonts.

LSNetLoadXOffset <int> - This setting is how far from the left

Default: <equal to the bordersize> - of the wharf tile to draw the module.

- It overrides the autocentering of the

- bordersize.

LSNetLoadYOffset <int> - This setting is how far from the top

Default: <equal to the bordersize> - of the wharf tile to draw the module.

- It overrides the autocentering of the

- bordersize.

Sample settings:

*Wharf "Network Load" ".none" "@LsNetLoad.dll"

LSNetLoadInterface "COM2"

LSNetLoadModem

More sample settings:

*Wharf "Network Load" "picture.bmp" "@LsNetLoad.dll"

LSNetLoadInterface "3Com EtherLink PCI"

LSNetLoadGridColor 007000

LSNetLoadUpColor FF0000

LSNetLoadDownColor 00FF00

LSNetLoadMaxSpeed 50000

LSNetLoadScrollingGrid

LSNetLoadRefreshDelay 500

LSNetLoadTransparent

LSNetLoadNWBevelColor 202020

LSNetLoadSEBevelColor 909090

LSNetLoadVerticalGridLines 5

LSNetLoadHorizontalGridLines 5

LSNetLoadBorderSize 2

Even more sample settings:

*Wharf "Network Load" "picture.bmp" "@LsNetLoad.dll"

LSNetLoadInterface "ELNK3 Ethernet Adapter"

LSNetLoadBackColor 2F2F2F

LSNetLoadGridColor 000000

LSNetLoadUpColor FFFFFF

LSNetLoadDownColor E4631A

LSNetLoadMaxSpeed 400000

LSNetLoadTextColor FFFFFF

LSNetLoadRefreshDelay 500

LSNetLoadNoBevel

LSNetLoadFont "Comic Sans MS"

LSNetLoadFontSize 14

LSNetLoadInLabel "Down:"

LSNetLoadOutLabel "Out:"

LSNetLoadNWBevelColor 909090

LSNetLoadSEBevelColor 909090

LSNetLoadVerticalGridLines 5

LSNetLoadHorizontalGridLines 5

LSNetLoadBorderSize 2

To Do:

+ Make this a load module in addition to being a wharf module - not soon

+ Add bar graphs

Version History:

0.3 - April 21, 2001

--------------------------

+ Added double buffering (no flicker during redraw)

+ Added font text displays

+ Many new settings

0.2 - April 14, 2001

--------------------------

+ Added transparency support.

+ Added variable number of gridlines.

+ Added ability to change bevel color.

+ Added ability to change border size.

+ Added modem support.

+ Added variable graph speed.

+ Added ability to remove bevel.

+ Added ability to remove grid.

+ Minor cosmetic enhancements to graphs.

0.1 - April 13, 2001

--------------------------

Initial Release.

If you have any questions, comments, bugs, and enhancements, please let me

know. My email is pmg23@columbia.edu.

Much thanks to my brother Robert for helping me format this lengthy readme

file. Thanks to Francis Gastellu aka Lone Runner/Aegis for not only making

litestep, but also for making lscpu and releasing the source, which made this

release possible. Thanks to jugg, noodge, furan and others for help and

support. Thanks to the devteam and all those people that contribute to the ls

community. If I missed anyone let me know


LSNews.dll

---------------------------------------------------------------------------------

////////////////////////

// LSNews 2.4

// By: MrJukes

// Released: 9/6/00

////////////////////////

// What's new in 2.4?

- Added support to read local files

+ *LSNewsURL "A File" "c:\litestep\lsnews.txt"

// What's new in 2.3?

- Added Bang Commands:

+ !LSNewsShow

+ !LSNewsHide

+ !LSNewsToggle

+ !LSNewsUpdate

+ !LSNewsNextSite

+ !LSNewsPrevSite

+ !LSNewsFocus

+ !LSNewsStartScrolling

+ !LSNewsStopScrolling

- New step.rc commands:

+ LSNewsBackColor 000000

: Sets a background color. No transparency if you use this.

+ LSNewsLinkColor RRGGBB

: Sets the color of the links

+ LSNewsLinkSize 8

: Sets the font size of the links

+ LSNewsLinkUnderline

: If this is set LSNews will underline links.

: Otherwise they are not underlined.

+ LSNewsAutoScroll

: Makes LSNews automatically scroll the text

+ LSNewsScrollSpeed 500

: The number of milliseconds between scrolls

+ LSNewsAutoSwitch

: If this is set LSNews will switch to the next

: news site when it is done scrolling.

: Otherwise it will keep scrolling the same site

// What's new in 2.2?

- Added Magic Pink (TM) support

+ Careful! This is real transparency we're dealing with people. It takes whatever area you specify to be transparent and takes it completely out of the window. I'd recommend only using it around the borders and not behind the text.

- New step.rc commands:

+ LSNewsHScrollbar

: Adds a horizontal scrollbar when needed

+ LSNewsVScrollbar

: Adds a vertical scrollbar when needed

- Modified step.rc commands:

+ Changed LSNewsURL to *LSNewsURL

: *LSNewsURL "Site Name" http://site.com/news.txt

: This now means you can have as many *LSNewsURL entries as you want.

: Use the right-click menu to switch between sites.

// What's new in 2.1?

- Added background support

- Added dragging

- Added text wrapping

- New step.rc commands:

+ LSNewsEditX 3

+ LSNewsEditY 23

+ LSNewsEditWidth 220

+ LSNewsEditHeight 100

+ LSNewsWrapText

+ LSNewsBackground c:\litestep\images\lsnews.bmp

// What's new in 2.0?

- Complete rewrite of the old code.

- It is now a loadmodule, not a wharf module.

- You can't specify a background image (yet?), it just uses transparency

// Operation

- Use the up and down arrows to scroll. Page Up and Page Down scrolls faster.

- Double click on the window to redraw the background

- Right click to bring up the popup menu.

// Step.rc commands

LoadModule h:\Litestep\lsnews.dll

LSNewsX 75 // X Position for main window

LSNewsY 75 // Y Position for main window

LSNewsWidth 400 // Width of main window

LSNewsHeight 625 // Height of main window

LSNewsEditX 0 // X Position for edit box (relative to main window)

LSNewsEditY 0 // Y Position for edit box (relative to main window)

LSNewsEditWidth 400 // Width of edit box

LSNewsEditHeight 625 // Height of edit box

LSNewsFontFace Fixedsys // Face of regular font

LSNewsFontSize 10 // Size of regular font

LSNewsFontColor FFFFFF // Color of regular font

LSNewsBackColor 000000 // Color of background (Comment out for transparency)

LSNewsTimer 15 // Number of minutes between updating

LSNewsWrapText // Wraps text on the horizontal

LSNewsLinkColor B4B400 // Color of links

LSNewsLinkSize 8 // Size of links

LSNewsLinkUnderline // Underlines links

LSNewsAutoScroll // Automatically scroll through news

LSNewsScrollSpeed 500 // Speed of scrolling in milliseconds

LSNewsAutoSwitch // Automatically switches between sites while scrolling

LSNewsHScrollbar // Adds a horizontal scrollbar

LSNewsVScrollbar // Adds a vertical scrollbar

LSNewsBackground c:\litestep\images\lsnews.bmp // Full path to background image

// For a list of sites go to

// http://lsnews.mindjunction.com

*LSNewsURL "Litestep News" http://lsnews.mindjunction.com/lsnet-news.news

*LSNewsURL "Litestep Screenshots" http://lsnews.mindjunction.com/lsnet-ss.news

*LSNewsURL "Litestep Themes" http://lsnews.mindjunction.com/lsnet-themes.news

*LSNewsURL "Slashdot" http://lsnews.mindjunction.com/slashdot.news

*LSNewsURL "AppWatch" http://lsnews.mindjunction.com/appwatch.news

*LSNewsURL "Arstechnica" http://lsnews.mindjunction.com/arstechnica.news

*LSNewsURL "Betanews" http://lsnews.mindjunction.com/betanews.news

*LSNewsURL "ChunkMunky" http://lsnews.mindjunction.com/chunky.news

*LSNewsURL "Desktopian" http://lsnews.mindjunction.com/desktopian.news

*LSNewsURL "FPN" http://lsnews.mindjunction.com/fpn.news

*LSNewsURL "Freshmeat" http://lsnews.mindjunction.com/freshmeat.news

*LSNewsURL "GeekNews" http://lsnews.mindjunction.com/geeknews.news

*LSNewsURL "Litestep.net" http://lsnews.mindjunction.com/lsnet.news

*LSNewsURL "Mindjuction Ideas" http://lsnews.mindjunction.com/mind-ideas.news

*LSNewsURL "Mindjunction News" http://lsnews.mindjunction.com/mind-news.news

*LSNewsURL "Mindjunction.com" http://lsnews.mindjunction.com/mindjunction.news

*LSNewsURL "SegFault" http://lsnews.mindjunction.com/segfault.news

*LSNewsURL "ShellCity" http://lsnews.mindjunction.com/shellcity.news

*LSNewsURL "Local File" c:\litestep\lsnews.txt

E-mail at mrjukes@purdue.edu for bug reports and feature requests.

Have Fun,

MrJukes


LSNotes.dll

---------------------------------------------------------------------------------

///////////////////////

// LSNotes v2.1

// Author: MrJukes

// Released: 8/2/00

// Step.rc

NoteDefWidth 150 // Default width

NoteDefHeight 150 // Default height

NoteDefX 100 // Default X (where new notes show up)

NoteDefY 100 // Default Y

NoteDefFontSize 12 // Default font size

NoteDefFontFace Arial // Default font face

NoteConfirmDelete // True if present

NoteDefBG lsnotes.bmp // This bmp can have FF00FF around the borders

NoteBorderTop 15

NoteBorderRight 5

NoteBorderBottom 5

NoteBorderLeft 5

NoteScrollTrackBmp lsnotes-track.bmp // The scroll track

NoteScrollUp 10 // The height of the scroll up area

NoteScrollDown 10 // The height of the scroll down area

NoteScrollBmp lsnotes-scroll.bmp // The scroll handle

NoteCloseButtonBmp lsnotes-close.bmp // The close button

NoteCloseButtonClickedBmp lsnotes-close-clicked.bmp // The close button while clicked

NoteCloseX -15 // X position of close button

NoteCloseY 3 // Y position of close button

// You can have up to 10 custom colors

*NoteColor Grey C0C0C0

*NoteColor Purple BB00BB

etc...

// Bangs

!NewNote

!HideNote

!DeleteNote


LsPlaylist.dll

---------------------------------------------------------------------------------

step.rc entries

===============

LoadModule c:\litestep\lsplaylist.dll

LSPlaylistStartHidden

bangs

=====

!LSPlaylistShow

!LSPlaylistHide

!LSPlaylistToggle

!LSPlaylistPlay

!LSPlaylistPause

!LSPlaylistStop

!LSPlaylistNext

!LSPlaylistPrev

!LSPlaylistFwd

!LSPlaylistBack

!LSPlaylistAlwaysOnTop

Make sure xaudio.dll is in your path. Do NOT LoadModule xaudio.dll.


LsQuickBox.dll

---------------------------------------------------------------------------------

LSQuickBox version v1.51 : 23 September 2000 98/W2k

--------------------------------------------------------

Epsylon3@ifrance.com

http://www.epsylon3.com

--------------------------------------------------------

Desc:

----

This module is a LiteStep Desktop Module which imitate the

IE4 Quick Lauch Box in Explorer TaskBar

--------------------------------------------------------

Know Limitations:

----------------

Win95 doesnt support the Mouse Tracking, so buttons can be HOver

when the mouse leaves the module...

Alpha Transparency is just available on Win2k

--------------------------------------------------------

Thanks to :

-----------

NeXTer for his Help, Suggestions and the Beta Test...

MrJukes for the help on some stuff...

--------------------------------------------------------

Load it by adding in the Step.rc the line:

LoadModule c:\litestep\lsquickbox.dll

--------------------------------------------------------

----------

History :

----------

v1.51 - Maybe a NT4 compatible version

- Advanced Transparency Skin on Win2k

v1.50

- Fixed Icon Location Bug

- QBoxNoBorder is now fully working :)

v1.48

- Some Drawing Fix

- Fixed Right Click on Area without Icons

- Removed Hook System in Win9x

v1.47

- Variable QBoxNoHook

- Retrieve Big Icons if QBoxIconSize >= 24

v1.46

- Seems to be working on Win9x

v1.45

- Variable QBoxIconSize (1 to 255)

v1.44

- Fixed the module for both LiteStep / Explorer Desktops

v1.43

- Hook System to enhance Mouse Wheel Support

v1.42

- Progressive Show / Hide (in Win2k)

- Command QBoxStartHided

v1.41

- Weird refresh on Enter Fixed

v1.40

- Directory Change Monitoring Thread Fixed on Win2k

v1.39

- ToolTips Fix

- Keep Position on Reload (not on Recycle)

- Add Transparent Skin (QBoxSkin TRANSPARENT)

- Other Fixes

v1.38

- Rename QBoxBitmap in QBoxSkin

(Old Command may be removed in some month)

- QBoxMOverSkin (Skin used when Mouse is over a button)

M.O.Skin Format is the Same as Skin

v1.37

- Weird Reload Fixed

- Add Support to LM_REFRESH Message (for Quick Recycle)

v1.36

- Optimize Bitmap (Stretch/Normal) Drawing

by using a Delphi TBitmap for BackGround

- Buttons Skin Support (in the main Bmp)

- Command QBoxNoArrows

v1.35 - Added Explorer Context Menu

- Added "QBoxNoMove" command

- Added "!QBoxReload" bang command

v1.30 - lost Version

v1.26

- Fixed bug when no Bitmap Background

- Fixed bug when no enough icons to fit the box

v1.25

- Added QBoxStretchBMP variable

- Monitor Directory Changes

- Improved Dbl. Buffered Painting Procedure

v1.2

- Move the Box with Mouse (drag Border)

- Bitmap Background (QBoxBitmap file.bmp)

- Major Rebuild

v1.1x (private builds)

- Transparency on Win2k by QBoxAlpha xxx

- Version Compiled with Delphi5 on NT 2000

- Bangs to toggle Show/Hide and to toggle Ontop

- Default Hint Win System

- NT Specific Drawing and Timer Bugs,

- Added Plugin File for LS Tweaker (http://tweak.cjb.net)

v1.09

- Popup Menu (Delete)

v1.08

- Hints on Buttons

- Set another Rep

v1.07

- AlwaysOntop

- HotTrack OK

- Some finition

v1.06

- Added !About Detailed Infos

- Save the Link on Disk on Drag'n'Drop

v1.05

- Added Vertical Position (Automatic)

--------------------------------------------------------

Bangs Commands :

--------------------------------------------------------

--Change Directory Of Icons :

!QBoxChangeDir C:\My\Other\Directory

--Change Position of LSQuickBox :

!QBoxChangePos X Y

--Reload QBox :

!QBoxReload

--Show/Hide QBox

!QBoxShow

!QBoxHide

!QBoxToggle

--Ontop

!QBoxToggleOnTop

--------------------------------------------------------

Step.rc Varibles :

--------------------------------------------------------

--QBoxAlpha xxx //0-255

Alpha Blending Transparency - 0 is not transparent

--QBoxSkin "Path.bmp"

Normal Skin Bitmap (Both 10 pixels on left and on right are for scroll buttons)

You Can Use QBoxSkin TRANSPARENT to get your Desktop as Skin

--QBoxMOverSkin "Path2.bmp"

Skin Bitmap on Mouse Over (Need QBoxSkin)

You Can Use QBoxMOverSkin TRANSPARENT

--QBoxStretchBitmap

Extend the Background Bitmap to fit the Icon Panel

--QBoxDir // (Def : Quick Launch) //

Directory of Icons

--QBoxOnTop

Set The module Always Ontop

--QBoxRaised

Take the Border Raised

--QBox2DBorderColor BBGGRR

Remove 3D look and Set Color of the Border

--QBoxNoBorder

Remove Border of Buttons and Set Main Border to 2D Mode

--QBoxNoArrows

Remove Arrows of Scroll Buttons

--QBoxIconSize

Set Size of Icons

--Size:

QBoxWidth N // (def N=100)

QBoxHeight N // (def N=22)

--Position:

QBoxPosX N // (def N=0)

QBoxPosY N // (def N=ScreenHeight-30)

You can use negative values to set position from the bottom right corner

--BackColor:

QBoxBGColor BBGGRR (if not ColorRGB present else RRGGBB)

ex: "QBoxColor FF0000" //Blue Color

--QBoxStartHided

Hided on Create

--QBoxNoHook

Remove Alternative Method to Grab Mouse Wheel without Qbox focus (Win2k Only)


LsSlider.dll

---------------------------------------------------------------------------------

-----------------

I. About LsSlider

-----------------

LsSlider is a general Slider loadmodule for Litestep.

You can use LsSlider to control Winamp and any given Channel

of your Soundcard.

----------------

II. Installation

----------------

Just copy LsSlider.dll to your LS dir and add the following

line to your step.rc:

Loadmodule C:\Litestep\LsSlider.dll

(*assuming you have your LS stuff in C:\Litestep*)

You can then add any number of Sliders to your Litestep Theme.

------------------

III. Configuration

------------------

LsSlider is used much like the Shortcut or the Dwharf loadmodule, but unlike :

*Slider "caption" <x> <y> <offset> background.bmp handle.bmp <Flags> [SLIDERMODE] options

"caption" The text description that is displayed when the cursor hovers

over the slider.

<x>, <y> The coordinates for the top-left corner of the slider. Can be

negative to place the slider relative to the right and/or

bottom edge of the screen.

<offset> Offset of the SliderBar's handle from the edge of the slider.

*.bmp The images used for the background and the handle of the Slider.

<Flags> Array of Flags that control the behavior of the Slider.

Use 'V' or 'H' to get either a Horizontal or a Vertical

Slider. Either 'H' or 'V' have to be set to let the Slider

function properly.

Use 'A' to make a Slider stay ontop of all windows.

Use 'T' to enable Magic Pink transparency.

Use 'I' to invert a Slider.

Use 'B' to start a Slider Hidden.

Use 'U' to enable the automatic Update function. This Option

is always set for [WINAMP] Sliders

You can assign a Slider to a Slidergroup by setting a #+the

groupnumber. All sliders are assigned to Group 0 by default.

[SLIDERMODE] Here you can define what kind of Slider the Slider should be.

There are currently four kind of "Modes":

[VOLUME] <channel>

[BALANCE] <channel>

[WINAMP]

<channel> can be any number from 0 (usually MainVolume) upto the

number of channels your Soundcard has. You can also control the

"Winamp channel" by useing "W" for <channel>

There are no Options for the [WINAMP] Mode.

!It is important that you use UPPERCASE for the mode!

Examples:

*Slider "Winamp" 340 2 1 "slider.bmp" "Slider_Handle.bmp" HI [WINAMP]

*Slider "Main Volume" 356 2 1 "slider.bmp" "Slider_Handle.bmp" V [VOLUME] W

*Slider "Main Volume" 356 2 1 "slider.bmp" "Slider_Handle.bmp" VI#4 [BALANCE] 0

-----------------

IV. Bang Commands

-----------------

-!HideSliderGroup <GroupID>

Hides a SliderGroup

-!ShowSliderGroup <GroupID>

Shows a SliderGroup

-!ToggleSliderGroup <GroupID>

Toggles a Slidergroup

Examples:

!ShowSliderGroup 0

!ToggleSliderGroup 8

------------

V. Versions

------------

rel. 1.51

-Forgot half of the Update.... made Slider Handle dissapeear in

Transparent mode - sorry

rel. 1.5

-Added a call in the Mainwinproc so the Slider handle position gets

updated if LsSlider is loaded into an alpha-transparent lsbox.

There is still some kind of Wallpaper corruption when dragging the

slider, but i'm not sure if thats LsSlider's or LsBox's fault.

-Did some codesharing with LsBox - I replaced some functions with

the newer (better) functions from LsBox.

rel. 1.4

-Changed the grdAmp classname to "grdampclass" - LsSlider will now be

able to control the newer versions of grdAmp

-removed some useless Wharf Typedefs.

rel. 1.3

rel. 1.2

-Included with Lsbox

rel. 1.1b

-Removed experimental code - didn't work like it should

rel. 1.1a

-Added new flag to start Sliders Hidden

-Minor fixes to the Show/hide/toggle bangs

-Experimental code to load LsSlider in LsBox

rel. 1.1

-Added a "WinAmp Volume" Mode

-Removed "Error Closing Step.rc" Messagebox - Darkstep and purleLS

should be able to run it without "Nag-box" on startup

-Fixed various issues with AlwaysOnTop and threaded Sliders

-I won't implement a [BANG] mode untill s.o. tells me he need it

rel. 1.0

-total rewrite

-new Winamp mode

-new VolumeControl engine

-very small and resourcefriendly

-won't need v_bang anymore {was a stupid idea}

-[BANG] mode isn't implementet, but i don't think that anyone did ever use it.

--------------

VI: Contact me

--------------

you can always get the newest version from my homepage:

http://www.blkhawk.de or http://blkhawk.cjb.net

If you have any Question, a Bug Report or a Suggestion mail me @:

blkhawk@blkhawk.de

-Have Phun!


lsTaskMan.dll

---------------------------------------------------------------------------------

------------------------------------------------------------------------------

-----------------------------[ lsTaskMan ver 1.5 ]----------------------------

------------------------------------------------------------------------------

1. Introduction

This little app will show you a currently-running-tasks.

2. Installation

Add the app to your wharfbar:

*Wharf lsTaskMan lsTaskMan1.bmp @"C:\LiteStep\lsTaskMan.app"

Included are three cool backgrounds, by PhenomTT and Troy Engel, which

you can use, as well.

That's it !

3. How to use

lsTaskMan will display the currently running tasks.

- A Click will go to that program.

- A Cntrl-click will run TaskMan/TaskMon on will... (Read 4)

- A Right-Click will pop up a menu offering you the

RESTORE, MINIMIZE, MAXIMIZE and CLOSE options (As per request)

- A Cntrl-Right-Click will scroll between pages of tasks (9 and above)

4. Modules.Ini

To add the option to run TaskMan, copy the following lines to your

Modules.Ini:

[lsTaskMan]

TaskManLocation=<EXE FILE TO RUN - FULL PATH+FILENAME>

A right click will then run your selected program (TASKMAN or TASKMON

or whatever)

5. Thanks

\\Wild, for comin' up with the idea ! :)

mian, a codin' knowledgebook... for helpin' out everytime I was lost :)

PhenomTT, for all the help and ideas and testin' :)

MHolmesIV, for the cool help with the VWM support and module size :)

Troy Engel, for the email you sent me with the ideas, and background :)

booya|, for the testin' and helpin' :)

All the rest of you guys who bothered to try it out in trial phases and/or

sent me bug reports, etc...

6. Contact

You can contact me at...

IRC - Malakai/WarezPoet

NEW Email - malakai@mail.isdn.net.il

ICQ - UIN 334208

7. Updates

VERSION 1.5 -

* Okay, this is a NORMAL release, I hope, atlast :)

It has the menus back, and the images, and the windows don't disappear.

Sorry bout 1.3 and 1.4.

VERSION 1.4 -

* Sorry for 1.3, but it was a major bummer... Windows disappeared

when they displayed a child window (sometimes), and I didn't add the

images...

VERSION 1.3 -

* Killed bug with Right-Click causing EAccessViolation

* Added the little popup menu, as per request

* Made Cntrl-Rightclick do the cycle

* Retry #3 on the window filter

VERSION 1.2 -

* Killed bug which made the program crash when there were no tasks

* Fixed the window-filter

VERSION 1.1 -

* Added support for VWM (Thanks, MHolmesIV, Owe ya bigtime)

* Added support for more than 9 windows (as per request)

* Switched the buttons' operations. All 3 used now.

* Took it down from 300k to 110k module.

* Added hints over tasks - show you the task name.

* Added a background for your pleasure, donated by Troy Engel

* Removed Tray-Task support. It had some problems with Dialup

and other tray tasks.

* Made update rate faster (every 600msecs)

VERSION 1.0 -

* First release.

------------------------------------------------------------------------------

Enjoy,

Malakai/WarezPoet

------------------------------------------------------------------------------


LsTicker.dll

---------------------------------------------------------------------------------

LSTicker 1.4

~~~~~~~~~~~~

1. Introduction

What does LSTicker do? It's a little module that I wrote to copy the functionality of the original LSTicker written by Toasty (Chad Boyda) as he lost the sources to his version and hasn't updated it since then. The original was only LiteStep b23 compatible (though there is a hack which makes LSTicker b24 compatible) whereas the new version has been written specifically for LiteStep b24+.

2. What's new since the last version?

- Added the ability to scroll tickers if the message is longer than the ticker length

- Changed the delay to handle scrolling tickers too. For scrolling tickers the delay value is in 1/10ths seconds.

- Added CPU and swap file monitoring via %c & %p but the usage of the CPU meter seems to drive up CPU usage in spikes under NT

- Fixed the frequent flicker experienced earlier when the ticker refreshed

- Hopefully fixed tickers not appearing on every virtual desktop and many painting problems

3. Installation

Copy the ticker.dll and pdh.dll files in the distribution zip file into your litestep directory and place the image files in your image directory (usually C:\Litestep\images) and then load LSTicker as a normal module in your step.rc using a command similar to the following:

LoadModule C:\LITESTEP\ticker.dll

The above just loads the LSTicker module. To run your own tickers, you have to then add an entry each for each ticker in the following format:

*Ticker X Y W L D BMP MSG

X = X cordinate of the ticker's upper left corner on the desktop

Y = Y cordinate of the ticker's upper left corner on the desktop

W = Width in pixels of each character in the bitmap font (LED2.BMP is 27 for example)

L = How many characters long the ticker is (if the value is less than the actual length of the ticker, it will scroll)

D = Delay to refresh ticker in seconds (0 means never) if it is a non-scrolling ticker, delay in 1/10ths of seconds if it is a scrolling ticker

BMP = bitmap font in your litestep images (c:\litestep\images) directory

MSG = A string in all CAPS. It can contain the following special commands.

%% = prints a normal % character

%@ = Internet time in beats

%a = AM/PM

%c = CPU utilization (as a percentage)

%d = date

%h = hour in 12/24 hour format (according to USClock setting in step.rc)

%i = IP address (when online)

%m = minutes

%n = month (name)

%o = month (number)

%p = page (swap) file free (as a percentage)

%r = ram available (as a perentage)

%s = seconds

%u = uptime (as days:hours:minutes)

%v = virtual ram free (percentage)

%w = week day

%y = year (long)

%z = year (short)

The following are two examples:

*ticker 300 10 27 400 1 led2.bmp TIME:%h:%m:%s%a

*ticker 800 10 5 100 3600 led2_1.bmp DATE: %d:%o:%z

I have included two font files LED2.BMP and LED2_1.BMP which was distributed with some of the older distros of LSTicker. You can make your own font file if you want and the following section from the original documentation should explain how:

BMP fonts are easily created in any popular graphics applications. Each charcter in the US Ascii alphabet from 32 to 96, is supported, and must maintain and equally widthed space in the bitmap in numerical order. For example if your space ' ' character (value 32, your first one in the bitmap) is 6 pixels wide, then make all your characters after that fit into 6 pixels, this is the value of W in the *Ticker command. Below is a list of all characters 32 to 96, in which order your bitmap must include them horizontally, side-by-side (dont forget to make spaces between chars, for example extand the width to 7 pixels instead of 6, and make the 7'th column blank).

You may use any colors depending on what color format you save your BMP as. For transparent pixels and spaces, use RGB color value (255, 0, 255) also refered to as Magenta.

!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`

^--- note, the first character is value 32 ie. space ' '

4. Problems/Incompatibilities

- Doesn't work too well with virtual desktops though you can use the sticky window feature in VWM to make it appear on all virtual desktops

- System performance usage sometimes locks up (at least under NT) when you have more than one performance monitoring ticker. I'm looking into this.

5. Bug reports/suggestions

You can contact me on IRC as Fahim or FahimF but I don't hangout on #litestep that much. You can also e-mail me at FahimF@usa.net

6. Version History

1.4 Ticker scrolling added finally along with CPU and swap file usage and a few bug fixes (03/09/99)

1.35 Many bug fixes and addition of pdh.dll (03/04/99)

1.3 Several bug fixes and the ability display IP address and Internet time (02/23/99)

1.2 Added system performance monitoring (02/19/99)

1.1 Added more commands and fixed a few problems (02/10/99)

1.0 Added certain commands to display date and time (02/09/99)

pre-Alpha The first test release of LSTicker. (02/09/99)

7. Future Plans

Now that I have reached (and exceeded) the feature list for the old ticker.dll, I am planning to either morph or split LSTicker (as perhaps LSTicker2) into what we'll currently call Status Textbox (suggestion 42 at MindStorm) so that it's functionality can be further enhanced into an always on top or embedded to the desktop window that displays info using true type fonts. The font size, color etc can be user specified and the Status Box will probably also take input from a text file as well as the usual ticker commands.

8. Credits/Thanks

- Toasty (Chad Boyda) who coded the original LSTicker

- SuperPhly who drew my attention to Status Textbox (though it's not coded yet <g>)

- Everybody who wanted LSTicker to be recoded so that they can use it :-)

Fahim


LsTransparent.dll

---------------------------------------------------------------------------------

LsTransparent by Carluchi verion 1.0.0.9 (Beta)

===Synopsis===

LsTransparent is a module that allows you to make most litestep modules transparent

with some simple settings and !bang commands. You can control the level of transparency as well.

You can also fade in and out these modules with !bang commands.

To load it, load the module and add entries into to your step.rc file.

===Step.rc commands===

*Note: Make sure that you load the LsTransparent module first.

*LsMakeTransparent <module> <level of translucency> <groupID> <dynamic> <Hexcolor> <Value>

<module> - just type the name of the module including the extension eg Chronos.dll,

Shortcuts.dll etc. Make sure you type it without a

path or "" around it.

<level of translucency> - 0 is totally opaque (ie you can't see through it), 100

is totally transparent.

<groupID> - used to affect more than one module at once with the

!bang commands

<dynamic> - if set to 1 then when the module is moved, resized

or altered it will refresh what is underneath it - this causes a little

flickering. 0 means it will stay painted according to

what was behind it when it was made translucent.

Popups are a good example of a module that should be dynamic

The levels of translucency are ranged from 0 (none) to 100 (total)

This setting makes items translucent when litestep is loaded,

you must have this item attached to a dll to make it transparent at any stage (EXE's do not work),

even if the level of translucency is 0 to begin with.

eg *LSMakeTransparent Popup.dll 25 3 1 0088AA 50

That would assign Popup.dll the groupID of 3, a 35% translucency level

and would refresh dynamically if moved or hidden. And Also tinted with the specified color at 50%

===!Bang Commands===

!LsTranSetTran <GroupID> <Transparency Level>

This will make a group of whichever module is assigned translucent to the level

you set

eg !LsTranSetTran 1 75 (to make Chronos up there 75% translucent)

!LsTranFadeIn <GroupID> <Redraws> <Delay>

!LsTranFadeOut <GroupID> <Redraws> <Delay>

eg !LsTranFadeOut 1 25 10 to fade chronos out to hidden - you get it

back with !LsTranFadeIn 1 25 10

The redraws setting is how many times the graphic is redrawn and the delay

is how long in milliseconds to wait between each redraw. The more redraws,

the smoother it is but it will take longer.

!LsTranToggle <GroupID> <Redraws> <Delay>

eg !LsTranToggle 1 25 10

This will toggle fade outs and fade in's. This is like a normal

toggle command instead it would fade the windows in and out instead of hiding them.

Note that all fades will not issue any !HideXXX bang command. All it does is

hide the windows, so if the module sets some state variable with its !HideXXX

bang command, FadeIn / Fadeout could cause problems.

!LsTranRefresh <GroupID>

This will refresh the group you !bang it to - so if one of the elements using

the translucency gets something painted into it like a window edge if there

was a window over it when it started, you can refresh it without recycling.

eg !LsTranRefresh 1 (Refreshes all windows in group 1)

***NOTE**

All bang commands will allow you to specify different group id's together

buy enclosing them in () and seperated by comma's.

Example !LsTranFadeOut (1,3,8) 10 50 Will fade out all windows with group

id's of 1 3 and 8.

===Bugs===

Since I havn't the time to try every LiteStep module, some may not work. If you find

one, EMail me and I'll see what I can do

**

Chronos has a problem with its inital painting. When it first appears, it doesn't

appear to be transparent. To fix it, make sure chronos is set to be dynamic,

then hide it (!ChronosHide) then show it (!ChronosShow)

**

LsLnkMenu does not work correctly (yet). My own module doesn't work :)

**

LSXCommand does not work yet either

**

wharf's still have problems (Dwarfs work though). They don't paint correctly. Try it for yourself

**

Any module that expands (Wharfs for example) should be dynamic. This may cause

some flicker though.

**

Going through translucent popup menus over lsnews makes them both flicker

**

You need *LSMakeTransparent loaded for a particular module in order to

!LsTranFadeOut / In

**

popup may flicker when it appears

**

If something doesn't paint correctly, try refreshing it (!LsTranRefresh <GroupID>)

**

I get screen corruption on opening the second level of the popup in the new

version (this is a problem with my gfx card drivers i assume, i got the same

corruptions using windowblinds - G400 in winnt4) this is using the core popup

only - in the latest builds.

===Notes===

This is still a BETA module, expect bugs and modules that don't work.

If you find one, please EMail me

You can reach me at carluchi@stratos.net

or (Effnet) #LS_HELP on IRC

Enjoy!

Carl

(this doc by dreamer - dreamer@litestep.com mail me if something needs adding /

fixing)

===History===

Version 1.0.0.9

-Fixed problems with 2.4.5 class of build not doing anything

-Fixed bug where nothing would happen if you only made 1 module Transparent

Version 1.0.0.8

- Initial release


LSWallpaper.dll

---------------------------------------------------------------------------------

*************************************

* LSWallpaper *

* by Visigoth *

* sgandhi@andrew.cmu.edu *

* =============== *

* Version: 2.1 *

* August 17, 2000 *

* =============== *

* http://floach.pimpin.net/visigoth *

*************************************

Table of Contents

=================

I. About LSWallpaper

II. Change Log

III. How to Use LSWallpaper

III.1 Installation

III.2 RC Commands

- WallpaperBitmapPath

- WallpaperTimeDelay

- WallpaperListPath

- WallpaperSequenced

- WallpaperStartup

III.3 !Bang Commands

- !WallpaperManager

- !NextWallpaper

- !PreviousWallpaper

- !RescanWallpaperList

- !ChangeWallpaper

- !AboutLSWallpaper

III.4 The wallpapers.list File

III.5 LSWallpaper Manager

IV. Known Bugs/Limitations

IV.1 "Remove from List" Menu Option doesn't work

V. Future Enhancements

V.1 Wharf Bar Integration

VI. Comments/Questions/Flames/Bug Reports

VII. Source Code

VIII. Source Code License

I. About LSWallpaper

====================

LSWallpaper is a Litestep module which changes, sequentially or

randomly, your desktop wallpaper. It was originally created by

Visigoth (aka Shaheen Gandhi) because I had a program that did

this for me, but I just wanted to get rid of another system

tray icon! Just a quick note: I'd really like to know if

people are using this thing. Just drop me an e-mail at

gandhimail@worldnet.att.net or sgandhi@andrew.cmu.edu

II. Change Log

==============

Version 2.1

-----------

Some bug fixes.. that's all the time I have to do nowadays anyway :)

- Fixed Add to List [Explorer Shell Extension]

- Use new Add wallpaper dialog with shell extension

Version 2.0

-----------

Complete rewrite of LSWallpaper from the ground up.

- Fixed !PreviousWallpaper (now works on history)

- New Wallpaper Manager

- Integrate with Explorer Context Menus

- Supports PNG, JPG, TIFF, and BMP files

- Supports "Stretch" display setting

Version 1.5.1

-------------

Just one bug fix... At least some people will be happy.

- Now compatible with newer Litestep builds

Version 1.5

-----------

Features Features Features.

- Holding Shift during startup stops the wallpaper from being

changed (if WallpaperStartup is set).

- GUI Configuration Tool (see section III.5 for details)

Version 1.1

-----------

Mainly just a bug fix release. Here's the list of bugs it fixes:

- PreviousWallPaper now works as it should (ie. actually goes

back)

- A new !Bang Command - ChangeWallPaper - now allows you to

change to a specific wallpaper. For instance,

!ChangeWallPaper myfavorite.bmp

If no argument exists for ChangeWallPaper, it will be just

like the timer had expired. NOTE: The specified wallpaper

must be in the list of wallpapers.

III. How to Use LSWallpaper

==========================

III.1 Installation

------------------

There's actually a lot to do for installing this thing, so pay

attention!

First, extract lswallpaper.dll to your modules directory AND copy lsapi.dll

to it (if you want the explorer integration to work). Then, open up a

DOS box (yes, a DOS box) and do this:

cd <to-whatever-dir-lswallpaper-is-in>

<path-to-windows-system>\regsvr32 lswallpaper.dll

If you don't see "Registration of LSWallpaper.dll succeeded" you did

something wrong. You can close the DOS box now.

Second, your step.rc must be edited to load the module. Add the

following line to your step.rc. To be safe, I added it after

the desktop.dll, because, well, without a desktop, there's no

wallpaper.

LoadModule <ModuleDirectory>\lswallpaper.dll ; LSWallpaper

Recycle Litestep with !Recycle, and wait for LSWallpaper to tell you

that the wallpapers.list file doesn't exist. Click OK, and continue

loading Litestep. Once Litestep has loaded, start explorer (or whatever

file manager you use). Right click on any wallpaper you want to add to

your wallpaper list, select LSWallpaper, and then Add to List...

Select the way you want the wallpaper to be displayed and select OK.

You can add multiple files at a time by selecting all of them at once and

then right clicking, but you still need to select their display setting

individually.

You can still set up LSWallpaper the old way (that is, creating a

wallpapers.list file and setting up all the RC Commands) if you like.

For more control over how LSWallpaper behaves, see the next section.

III.2 RC Commands

-----------------

The following is a list of RCCommands you may add to your step.rc

to control certain LSWallpaper properties.

WallPaperBitmapPath

```````````````````

Description: The path LSWallpaper uses as the place to find

wallpapers. ie. C:\Litestep\Wallpapers...

Default: PixmapPath

Note: If PixmapPath is not available, LSWallpaper will not be

able to use any of your wallpapers, unless you specify all

of your wallpapers with absolute paths in your wallpapers.list

(see below for more information about wallpapers.list).

IMPORTANT: This path must be absolute.

Example: WallPaperBitmapPath C:\Litestep\Wallpapers

WallPaperTimeDelay

``````````````````

Description: The time interval used between wallpaper changes.

Default: 00:00:00 (hours:minutes:seconds)

Note: The default time interval (00:00:00) means the wallpaper

stays constant. There is no change of wallpaper after

LSWallpaper has initialized. IMPORTANT: I strongly recommend

keeping this above 30 seconds (00:00:30). It gets annoying

and potentially dangerous to Windows.

Example: WallPaperTimeDelay 6:00:00 ; Change every 6 hours

WallPaperListPath

`````````````````

Description: The path to your list of wallpapers.

Default: <ModulesDirectory>\wallpapers.list

Note: The default occurs because LSWallpaper assumes the list of

wallpapers is in its own directory. This file does not have to

be wallpapers.list. It may be wallpapers.txt, for instance.

IMPORTANT: This path must be absolute.

Example: WallPaperListPath C:\Litestep\wallpapers.list

WallPaperSequenced

``````````````````

Description: Turns on In-Sequence processing of the wallpaper

list. If left off, your wallpapers will change randomly with

respect to the list of wallpapers. If on, your wallpaper list

will be followed line by line.

Default: 0 (If it is left out of step.rc, it is considered off)

Example: WallPaperSequenced

WallPaperStartup

````````````````

Description: Change the wallpaper at startup.

Default: 0 (If it is left out of step.rc, it is considered off)

Note: If WallPaperTimeDelay is left to be 00:00:00, you will

probably want to use this. Otherwise, the module would do

nothing.

Example: WallPaperStartup

III.3 !Bang Commands

--------------------

!Bang Commands can be bound to keys, shortcuts, wharf items, etc.

The following is a description of all the !Bang Commands

LSWallpaper can handle.

!WallpaperManager

`````````````````

Description: Launches the GUI configuration tool for LSWallpaper.

The internal wallpaper list is updated automatically. Should you

decide to undo your changes, click Close and select No when asked to

save your changes.

!NextWallPaper

``````````````

Description: Change to the Next WallPaper and resets the Timer.

Note: If you have not specified WallPaperSequenced in your

step.rc, this will use a random wallpaper from the list of

wallpapers.

!PreviousWallPaper

``````````````````

Description: Change to the Previous Wallpaper and resets the

Timer.

!ChangeWallPaper <path>

```````````````````````

Description: Changes to the wallpaper pointed to by <path>.

If no path is supplied, it acts the same as if the timer

had expired. This also resets the Timer.

!RescanWallPaperList

````````````````````

Description: Rescans the list of wallpapers.

Note: This does not change the wallpaper, but only retrieves

the path and tile information about wallpapers.

!AboutLSWallpaper

`````````````````

Description: Brings up a message box with a little information

about LSWallpaper. Nothing special, for now :)

III.4 The wallpapers.list File

------------------------------

Note: This file does not have to be named wallpapers.list. It may

be called anything else, this is just descriptive.

This file tells LSWallpaper how to use each file in your

BitmapPath. Also, each wallpaper you want to use must be listed

in this file.

Comments: Comments may be done in the C++ fashion: by starting the

comment with '//'. The rest of the line is ignored.

File Setup: Basically, each line is a new wallpaper. And each

line is structured like this:

[Path to Wallpaper] [Tiled]

Note: [Path to Wallpaper] may be an absolute or relative path. So,

if you have one wallpaper that is not in your BitmapPath, you can

just specify the entire path here instead of a relative one.

Sample wallpapers.list File

```````````````````````````

The following is a small list file.

//This is a comment, and the beginning of the file

Wallpaper1.bmp 0 //Relative path, no tiling.

C:\Windows\tileable.bmp 1 //Absolute path, tiled.

III.5 LSWallpaper Manager

-------------------------

The LSWallpaper Manager can help you manage your wallpapers. It's still a

bit buggy. I think it's self explanatory. You can delete stuff by

checking a box to the right of it andhitting delete. Adding stuff isn't

there yet, and the selection box for the display setting is pretty whacked.

Anyway, I'll update this section when it really works and there's stuff to

say about it....

IV. Known Bugs/Limitations

===========================

IV.1 "Remove from List" Menu Option doesn't work

------------------------------------------------

Right clicking on a bitmap and selecting Remove from List does not work.

You must manually remove the file from your wallpapers.list

V. Future Enhancements

======================

V.1 Add/Remove from same dialog

-------------------------------

I'll put add/remove into the dialog used to view wallpapers some time.

VI. Comments/Questions/Flames/Bug Reports

=========================================

All of these should be sent directly to me, visigoth. My e-mail

address is: gandhimail@worldnet.att.net

Seriously, though, I really would like to know if people are using

this thing. It'll help me determine whether it's worth continuing

the development of it.

VII. Source Code

===============

Yes, source code is available. Go to my web site (at the top of the readme)

and download it from there. However, if you are going to edit the code,

*please* read the Source Code License below. There are certain restrictions.

VIII. Source Code License

=========================

Article I. Sure, Have the Code!

-------------------------------

I don't want to stop progress on this module. So, I'm going to

let anyone who wants to edit the code, do so at his/her free will.

However, there are restrictions, as noted by the rest of the

license.

Article II. Redistribution

--------------------------

This file *must* be redistributed with the source code, with duly

noted changes to sections I, II, III, IV, and V. However, I

request that my name be left in Section I as the original author

of the module.

Article III. Leave Credit where It's Due!

-----------------------------------------

All I ask is that Section I still have my name in it as the

original author. And, that the !AboutLSWallpaper be renamed

if it must, but the original about box should still be in the

module and associated with a !Bang command.

Article IV. Send Me Your Cool Stuff

-----------------------------------

I'd like to know about your ideas for LSWallpaper! If you are

working on an idea, I would like to know what it is. I'm not like

Microsoft (ie. I'm going to steal your idea, throw my time at it,

and come out with a shoddier version first). I'd just like to

know what people are doing with my original code base. So, if you

do edit code for a purpose, please drop me a line as to what you

are doing.

Article V. Have Fun

-------------------

Remember, I'm not going to stop progress on this module, so go

ahead and do what you want to it. Just don't take credit for

what I've already done.


Lswchanger.dll

---------------------------------------------------------------------------------

*************************************************

* Wallpaper Changer module - Version 1.1 readme *

*************************************************

0. Contents

*******************

1. Introduction

2. Installation

3. Reference

3.1. step.rc configuration

3.2, !bang commands

4. Changes since the last version

5. About

1. Introduction

***********************

First of all, sorry for my bad grammatical errors, I hope you'll understand

this piece!

This is yet another wallpaper changer module, with some extended features:

- it can use a list with images in .BMP, .PCX, .JPG and .PNG file formats

- it can change the current picture at a specified interval of time

- and it can be controlled by using of !bang commands

2. Installation

***********************

1) Unzip lswchanger.dll

2) Copy the file in Your LiteStep modules path

3) Add lswchanger.dll to the list with modules loaded with LiteStep in step.rc

4) Add images for Your desktop

5) Recycle LiteStep

This is a sample configuration of step.rc for use with lswchanger.dll:

LoadModule c:\LiteStep\Modules\lswchanger.dll

WallpaperEnabled true

WallpaperTimeOut 3

WallpaperDisplayMethod tile

WallpaperSelectMethod random

*wallpaper .tile c:\windows

You can also add the flowing lines to Your popup configuration:

*Popup "Wallpaper" Folder

*Popup "Backgrounds" Folder

*Popup "Use blank" !wallpaper .none

*Popup "Black Thatch.bmp" !wallpaper .tile c:\windows\Black Thatch.bmp

*Popup "Blue Rivets.bmp" !wallpaper .tile c:\windows\Blue Rivets.bmp

*Popup "Bubbles.bmp" !wallpaper .tile c:\windows\Bubbles.bmp

*Popup "Carved Stone.bmp" !wallpaper .tile c:\windows\Carved Stone.bmp

*Popup "Circles.bmp" !wallpaper .tile c:\windows\Circles.bmp

*Popup "Clouds.bmp" !wallpaper .stretch c:\windows\Clouds.bmp

*Popup "Forest.bmp" !wallpaper .stretch c:\windows\Forest.bmp

*Popup "Gold Weave.bmp" !wallpaper .tile c:\windows\Gold Weave.bmp

*Popup "Houndstooth.bmp" !wallpaper .tile c:\windows\Houndstooth.bmp

*Popup "Metal Links.bmp" !wallpaper .tile c:\windows\Metal Links.bmp

*Popup "Pinstripe.bmp" !wallpaper .tile c:\windows\Pinstripe.bmp

*Popup "Red Blocks.bmp" !wallpaper .tile c:\windows\Red Blocks.bmp

*Popup "Sandstone.bmp" !wallpaper .tile c:\windows\Sandstone.bmp

*Popup "Setup.bmp" !wallpaper .stretch c:\windows\Setup.bmp

*Popup "Stitches.bmp" !wallpaper .tile c:\windows\Stitches.bmp

*Popup "Straw Mat.bmp" !wallpaper .tile c:\windows\Straw Mat.bmp

*Popup "Tiles.bmp" !wallpaper .tile Red c:\windows\Tiles.bmp

*Popup "Triangles.bmp" !wallpaper .tile c:\windows\Triangles.bmp

*Popup "Waves.bmp" !wallpaper .tile c:\windows\Waves.bmp

*Popup ~Folder

*Popup "View" Folder

*Popup "Tiled" !wallpaper .tile

*Popup "Centered" !wallpaper .center

*Popup "Stretched" !wallpaper .stretch

*Popup ~Folder

*Popup "TimeOut" Folder

*Popup "1 minute" !wallpaper .timeout 1

*Popup "2 minutes" !wallpaper .timeout 2

*Popup "3 minutes" !wallpaper .timeout 3

*Popup "4 minutes" !wallpaper .timeout 4

*Popup "5 minutes" !wallpaper .timeout 5

*Popup ~Folder

*Popup "Change" !wallpaper .change

*Popup "Mix" !wallpaper .mix

*Popup "Enable" !wallpaper .on

*Popup "Disable" !wallpaper .off

*Popup ~Folder

3. Reference

********************

3.1. step.rc configuration

**************************

WallpaperEnabled <false>|<true> - Disables/Enables wallpaper

changing at specified interval

of time

WallpaperTimeOut <integer> - Sepcifies the timeout interval

WallpaperSelectMethod <normal>|<sorted>|<random> - Specifies how to select the

pictures from the list

*Wallpaper <.tile>|<.center>|<.stretch> <path> - Adds image(s) to the list, where

path can be a single file or a

directory with pictures

3.2. !bang commands

*******************

!wallpaper <.on>|<.off>|<.toggle> - Disables/Enables wallpaper

changing at specified interval

of time

!wallpaper <.timeout> <integer> - Sepcifies the timeout interval

!wallpaper <.change> - Changes the wallpaper immediately

!wallpaper <.none> - Disables the background image

!wallpaper <.tile>|<.center>|<.stretch> [path] - Sets the display method for the

current image, when a file is

specified the wallpaper is set

to him

!wallpaper <.clear> - Clears the images list in the memory

!wallpaper <.mix> - Mixes the images list

!wallpaper <.sort> - Sorts the images list

4. Changes since the last version

*****************************************

- !wallpaper .toggle command is added

- sort & random commands are now working

- .PCX file support is now working

- some other bugs fixed

5. About

****************

I am Tzvetan Raikov, I am from Bulgaria and now I am study at Sofia university. To

send a bug reports, when you have good ideas, or to contact with me you can use:

e-mail: craikov@hotmail.com

www: http://www.geocities.com/wchangerbg


LsWeather.dll

---------------------------------------------------------------------------------

LSWeather B5 Readme 4 October 2001

+----------------------------------+-----------------------------------------------+

| Coded by: | MrJukes (mrjukes@purdue.edu) |

| Version B5 by: | Seth (lrover@mindspring.com) |

+----------------------------------+-----------------------------------------------+

=================

Table of Contents

=================

- Instructions

- Wharf Module

- Load Module

- LSWeather Usage

- What's New

- Popups Menu

- Bang Commands

- String Formatting

- Current Issues

- Feedback, etc.

==========

* NOTICE *

==========

In order for LSWeather B5 to function properly you will have to use a Litestep build

from after approximately 10-9-99. Anything before that build will probably result

in LSWeather crashing or improper functioning of the dialog boxes.

===========================

Instructions - Wharf Module

===========================

1) Unzip LSWeather to a directory off your Litestep dir.

example: C:\Litestep\LSWeather\

2) Edit your step.rc file and add the following line:

*Wharf LSWeather .none @C:\Litestep\LSWeather\lsweather.dll

3) Recycle Litestep

4) Enter the Settings dialog and load "C:\Litestep\LSWeather\lsw-wharfmodule.thm"

5) If you need help with the Settings dialog hit F1 or click on the "?" button and

then click on an edit box or button.

==========================

Instructions - Load Module

==========================

1) Unzip LSWeather to a directory off your Litestep dir.

example: C:\Litestep\LSWeather\

2) Edit your step.rc file and add the following line:

LoadModule C:\Litestep\LSWeather\lsweather.dll

3) Recycle Litestep

4) Enter the Settings dialog and load "C:\Litestep\LSWeather\lsw-loadmodule.thm"

5) If you need help with the Settings dialog hit F1 or click on the "?" button and

then click on an edit box or button.

===============

LSWeather Usage

===============

LSWeather can get weather conditions from almost anywhere on the globe, providing

that you supply it with a proper Zip Code for US residence, or a global station code for

international users.

To find out your Global Station Code goto www.wunderground.com and under the "International"

section choose the continent you live in, then on the map choose your city. Now in

the URL box of your browser it should say a number followed by an .html extension.

This is your Global Station Code.

Some Global Station Codes:

- London, England = 03772

- Paris, France = 07150

- Jerusalem, Israel = 40184

- Sydney, Australia = 94767

- Tokyo, Japan = 47662

- Hong Kong, China = 45007

- Toronto, Canada = 71265

- Vostok, Antarctica = 89606

Advanced Settings

-----------------

Apart from the configuration options in the in-program config dialog, there are three

advanced settings that can only set by editing the theme file directly. These are:

- Wind format string for when wind is calm. This is in the section "Wind" and is called

"Calm". Treat it just like any other format string. If there are leading or trailing

spaces, surround it with quotes.

- Wind style option. This is called WindStyle, is in the Wind section, and can take four

values: 0, 1, 2, or 3. The following table illustrates their use:

WindStyle value Meaning Examples

-------------------------------------------

0 ALL CAPS NNE, SOUTH

1 First Caps NNE, South (default)

2 ABBR. caps NNE, south

3 no caps nne, south

- Default string formats for report conditions dialog. For information on this feature,

see the section on string formatting.

=================

What's New in B5?

=================

(in approximate order of importance)

- Relative Feature Positioning

I wanted a more natural-language weather readout,

and found that varying field widths, esp. with

wind and conditions, led to potentially large gaps

between feature displays. So, if you choose

relative positioning, you specify the start (X,Y)

coordinate, and enable one feature with the

'follows' value left at "follows". Then create a

chain of features leading from that one. Be warned

that you should only enable one feature as the

start feature, i.e. with the 'follows' field left

to "follows". Further features so configured will

be ignored.

- Min/max temperature

LSWeather now records maximum and minimum

observed temperatures. Be warned, however,

that it makes no distinction as to where a

given temperature was observed, making it

not beneficial for users who often switch

locales. If many people would like separate

data for each locale, I may add the feature.

- Heat index/windchill

LSWeather calculates heat index and winchill.

These values are determined from performing

calculations upon other weather data, so the

reporting station at wunderground.com does not

need to provide them.

- Format strings options

An option has been added to use the custom

format string in the Report Conditions dialog.

If this is selected (the only choice in previous

versions), the strings in the report conditions

dialog will display information in the same format

as the permanent display. Otherwise, the program

uses the format string as specified by the

"Default" profile string in the theme file.

- Extended ASCII character display

To display any ASCII character, use the format

'#xxx' where xxx is replaced by the one, two, or

three digit ASCII code of that character.

- Transparency

Window transparency is now available, if no

background bitmap is specified.

- Config dialog changes

I removed the 'Load' and 'Save' theme buttons from

the config dialog, as they were somewhat redundant.

Browsing for a new theme loads it, and themes are

automatically saved.

- Time & date

Time and date are provided on the Report

Conditions dialog. This is the current system

time and is not calibrated for distant stations.

- Wind speed

A numeric wind speed value is not recorded when

wind is calm. This means that all format

specifiers after %Wk or %Wm are discarded when

there is no wind.

- Bugfixes

...reading wind speed from international stations

...error-checking when getting weather from the

server

=================

What's New in B4?

=================

- Changed weather source, now www.wunderground.com

- LSWeather now is able to display:

- Temperature, Humidity, Dewpoint

- Pressure, Visibility, Wind

- Sunrise, Sunset, Moonrise, Moonset

- Weather Conditions in text or bitmap

- New configuration dialog controls:

- All theme options

- Saving and loading of new themes

- New bang commands:

- !LSWHide, !LSWShow, !LSWToggle

- !LSWUpdate, !LSWChangeSettings

- !LSWLaunchWebpage, !LSWReport

- !LSWAlwaysOntop (Toggle)

- Customizable double-click action

- Text display formatting added for all fields.

- All loadmodule display bugs fixed (for now)

- New incredible wharf and loadmodule themes created by Tritian! :P

=================

What's New in B3?

=================

- Added a favorites menu

- Fixed some bugs

- Moved weather conditions into the modules.ini instead of being hardcoded

=================

What's New in B2?

=================

- Can be loaded as a LoadModule

- Got rid of messagebox warning that it could not connect to weather.com

- Images can be in any directory

==========

Popup Menu

==========

Update - Update weather conditions for selected area.

Active - Toggles automatic update of the weather

Report Current Conditions - Brings up a dialog with all your weather conditions

Change Settings - Changes your settings

Launch Webpage - Launches www.wunderground.com to your current location

About LSWeather - The About box

Reset Max/Min Temps - Resets max and min temps to current temp

-----

Favorites - Stores your favorites, add up to 10 favorites through settings.

-----

Use Zip Code - Uses the specified zip code

Use City - Uses the specified city file

Use Global Station - Uses the global station code for your area.

=============

Bang Commands

=============

Load/Wharf Bang Commands:

!LSWUpdate - Updates weather conditions

!LSWChangeSettings - Enters the settings dialog

!LSWLaunchWebpage - Launches www.wunderground.com

!LSWReport - Brings up a dialog with the current conditions.

LoadModule Specific Bang Commands:

!LSWHide - Hides LSWeather

!LSWShow - Shows LSWeather

!LSWToggle - Toggles Hide/Show of LSWeather

!LSWAlwaysOntop - Toggles LSWeather's always ontop status

=================

String Formatting

=================

PLEASE NOTE:

In addition to the format strings in the theme file,

there is a field called "Default" which contains the formatting for the

report conditions dialog should you choose NOT to mirror the custom

string format for that dialog. These values can only be changed by

editing the file directly.

Temperature:

+ Valid Variables: %T[fck] %d

- Example) Temp: %Tf %dF ==> Temp: 80 °F

- Example) T: %Tc%dC ==> T: 27°C

- Example) %Tk%dK ==> 278°K

Heat Index:

+ Valid Variables: %I[fck] %d

- Example) Heat Index: %If %dF ==> Heat Index: 80 °F

- Example) HI: %Ic%dC ==> HI: 27°C

- Example) %Ik%dK ==> 278°K

Pressure:

+ Valid Variables: %P[ih]

- Example) Pres: %Pi inches ==> Pres: 8 inches

- Example) P: %Ph hPa ==> P: 270 hPa

Humidity:

+ Valid Variables: %H

- Example) Hum: %H% ==> Hum: 38%

Dew Point:

+ Valid Variabes: %D[fck] %d

- Example) Dew: %Df %dF ==> Dew: 80 °F

- Example) D: %Dc%dC ==> D: 27°C

- Example) %Dk%dK ==> 278°K

Visibility:

+ Valid Variables: %V[mk]

- Example) Vis: %Vm miles ==> Vis: 10 miles

- Example) Vis: %Vk km ==> Vis: 17 km

Wind:

+ Valid Variables: %W[dmk]

- Example) Wind: %Wd at %Wm mph ==> Wind: NNW at 8mph

- Example) Wind: %Wk kph ==> Wind: 12 kph

Windchill:

+ Valid Variables: %L[fck] %d

- Example) Windchill: %Lf %dF ==> Windchill: 80 °F

- Example) WC: %Lc%dC ==> WC: 27°C

- Example) %Lk%dK ==> 278°K

Minimum Temp:

+ Valid Variables: %XL[fckhmw] %d

- Example) Minimum: %XLf%dF at %XLh:%XLm %XLw ==>Minimum: 45°F at 6:32 AM

- Example) Mintemp: %XLc%dC @ %XLh:%XLh ==>Mintemp: 12°C @ 5:49

- Example) min: %XL%dF ==>min: 56°F

Maximum Temp:

+ Valid Variables: %XH[fckhmw] %d

- Example) Maximum: %XHf%dF at %XHh:%XHm %XHw ==>Maximum: 92°F at 3:42 PM

- Example) Maxtemp: %XHc%dC @ %XHh:%XHh ==>Maxtemp: 28°C @ 2:43

- Example) max: %XH%dF ==>max: 62°F

Sunrise:

+ Valid Variables: %SR[hmwz]

- Example) Sunrise: %SRh:%SRm%SRw %SRz ==> Sunrise: 6:15AM EDT

- Example) SR: %SRh:%SRm %SRw ==> SR: 7:25 AM

Sunset:

+ Valid Variables: %SS[hmwz]

- Example) Sunset: %SSh:%SSm%SSw %SSz ==> Sunset: 6:15PM EDT

- Example) SS: %SSh:%SSm %SSw ==> SS: 7:25 PM

Moonrise:

+ Valid Variables: %MR[hmwz]

- Example) Moonrise: %MRh:%MRm%MRw %MRz ==> Moonrise: 6:15AM EDT

- Example) MR: %MRh:%MRm %MRw ==> MR: 7:25 AM

Moonset:

+ Valid Variables: %MS[hmwz]

- Example) Moonset: %MSh:%MSm%MSw %MSz ==> Moonset: 6:15AM EDT

- Example) MS: %MSh:%MSm %MSw ==> MS: 7:25 AM

Weather Conditions:

+ Valid Variables: %C

- Example) %C ==> Partly Cloudy

- Example) Cond: %C ==> Cond: Sunny

===============

Current Issues:

===============

- Max and min temps are meaningless when locale changes

(You can reset them to be valid for the current locale)

- Reports local time for distant locations in report dialog

- Does not support multiple leading relative-placed features.

Of course, if it did, they would overlap and be illegible, so...

LSWeather only pays attention to the first such feature.

===============

Feedback, etc.:

===============

If anyone would like the same module in an .exe, perhaps for a non-Litestep user,

or for whatever reason, I've got one, and would be happy to e-mail it to you.

Also, if you wish a copy of the source, let me know.

If you enjoy LSWeather B5, or have further feature requests, please tell me.

Thanks to MrJukes, who created LSWeather and let me release this updated version,

Visigoth for his online Litestep tutorials, and the entire Litestep community for

the source code and online resources they have made available. Lastly, I

apologize if my readme is excessive in its verbiage... but there ya go, it's over.

- Seth McCarus

lrover@mindspring.com


LSXCommand.dll

---------------------------------------------------------------------------------

*************************************

* LSXCommand *

* by Visigoth *

* gandhimail@worldnet.att.net *

* =============== *

* Version: 1.8.2 *

* October 23, 2000 *

* =============== *

* http://floach.pimpin.net/visigoth *

*************************************

Table of Contents

=================

i Quick & Dirty Install

ii Kudos

iii Change Log

I. About LSXCommand

II. How to use LSXCommand

II.1 Internet Searches

II.2 Added RC Commands

New to 1.8.1:

-------------

- CommandMusicPlayer

New to 1.7.6:

-------------

- CommandBottom/Top/Left/RightBorderSize

New to 1.7.4:

-------------

- Changed CommandClock to CommandTime

- CommandAddExternalsToHistory

New to 1.7.2:

-------------

- CommandOffsetX

- CommandOffsetY

- CommandSearchEngineBrowser

- CommandWinAmpDisappearsOnFocus

- CommandHideOnUnfocus

- CommandTabFileComplete

New to 1.7.1:

-------------

- CommandContextMenuStandardItems

- CommandScrollWinAmpTitle

New to 1.7:

-----------

- CommandNoAutoComplete

- CommandCommaDelimiter

- CommandTransparentEditBox

- CommandBackground

- CommandRPNCalculator

- CommandClock

- CommandClockDisappearsOnFocus

New to 1.5.3:

-------------

- CommandExplorePaths

- CommandSelectAllOnMouseFocus

New to 1.5.1:

-------------

- CommandUnixHistory

New to 1.5:

-----------

- CommandNoWarnOnError

- CommandHistoryMenuEntries

- CommandNewestHistoryItemsOnTop

- CommandContextMenuAboveBox

- CommandContextMenuExecute

- CommandContextMenuOrder

- CommandNoTabMicroComplete

- CommandClearHistoryOnStartup

- CommandAssumeNetAddress

New to LSXCommand:

------------------

- CommandHistoryEntries

- CommandSearchEngineList

- CommandSelectAllOnFocus

- *CommandAlias

II.3 Added !Bang Commands

New to 1.7.7:

-------------

- !CommandToggleTimer

- !CommandSetText

New to 1.7.5:

-------------

- !CommandMove

New to 1.7.3:

-------------

- !CommandBrowseFile

- !CommandBrowseFolder

New to 1.7.1:

-------------

- !Command

- !CommandShow

- !CommandHide

New to 1.5:

-----------

- !CommandClearHistory

- !CommandShowContextMenu

New to LSXCommand:

------------------

- !CommandRescanEngines

II.4 The engines.list File

II.5 Tab-MicroComplete & Context Menu Access

II.6 Calculator Functionality

II.7 Backgrounds & Transparencies

II.8 Clock Settings

II.9 Tab File Completion

II.10 LSXCommandClock module

II.11 AlterScript module

III. Known Bugs / Limitations

III.1 Old history entries remain

III.2 Quoted Names a Problem

IV. Comments / Questions / Flames / Bug Reports

V. Source Code

VI. Source Code License

i. Quick & Dirty Install

========================

i.1 Upgrading from LSCommand

----------------------------

This is a pretty simple thing to do. It's essentially just

replacing a file, but a little more...

1. Copy lsxcommand.dll to your modules directory

2. Replace lscommand.dll with lsxcommand.dll in your step.rc

3. Add the CommandHistoryEntries and CommandSearchEngineList

RC Commands to your step.rc (see below for specifics)

Note: CommandSearchEngineList must be an absolute path, as in

C:\Litestep\engines.list

4. Place the engines.list file to the place pointed to by

CommandSearchEngineList

5. I would really recommend at least browsing through the

section below on Internet Searching with LSXCommand.

6. Adding the CommandSearchEngineList and extracting the

engines.list file is not mandatory - you will simply not have

the ability to use the Internet search feature.

i.2 New to LSXCommand

---------------------

Read limpid's original readme (included with this distribution)

on how to set up LSCommand - from which LSXCommand is based.

Afterwords, go up to "i.1 Upgrading from LSCommand"

ii. Kudos

=========

I just think it's appropriate to officially acknowledge that

limpid did work on the original LSCommand, from which LSXCommand

is based. Thanks limpid!

Credits

-------

A big thanks goes to Takayuki Kawamoto, as he is graciously

translating this readme into Japanese. His translation may be

found at: http://litestep-jp.fsn.net/translation/lsxc.htm

The following people gave me ideas after I released version 1.0:

- Jody Franklin sent in the corrected Letterman Top 10 search engine

- Jonas Sicking can take all the credit for the calculator functions in

LSXCommand, now - he sent in entirely new calculator code which is

much better than the stuff I had.

- TAMUKI-TAM sent in a patch to LSXCommand. I also found out he's

localized LSXCommand to Japanese (that means you can use Japanese

characters with LSXCommand).

- technomancer sent in the code for different border sizes

- Mike Thrall sent in the !bang commands to move LSXCommand

- gizzmo also sent in the idea for switching between clock/amp mode

- gizzmo first sent in the idea for a separate clock module

- Kryten sent in the idea about Browse File and Folder

- Ilkka Nisula sent in the request for multiple base support

- Alasdair sent in a request for negative screen coordinates

- John Kuhn sent in the WinAmp title scrolling idea

- Reiner Meyer sent in the idea to add Clock functionality

- Hugo Ahlenius sent in the idea for RPN mode and the comma

delimiter

- Francis Tyers wanted to be able to turn off AutoComplete for

some reason.

- SXW sent in the basic idea behind AssumeNetAddress and

SelectAllOnFocus

- Jay Kerr sent in the idea behind Aliases / Bindings

- neep sent in a preliminary ideas about a context menu

- tin_omen and Jay Kerr sent in fond thoughts of quoted paths and

complex string parsing :P

- Tomislav Mutak sent in the idea for a command line calculator

- Kevin Werner sent in the idea for bash-like history navigator

- Andrew Hornback sent in a reference to the need for multiple

arguments (I'm working on it!!)

The following people sent in lists of engines (I won't list each

engine - it would just take too long)

- bonez sent in 3 new ones for 1.7.1: UBL, OLGA, and CDNow

All music related... Cool stuff

- Kryten sent in the Merriam-Webster stuff

- bizquik sent in the File Demon engine

- mirul sent in the MS Knowledge Base

- Jason Murray sent in more than 230 engines!!! That's just

overboard, IMO

- Scott Ferguson sent in MetaCrawler

iii. Change Log

===============

Version 1.8.2

-------------

Bug Fixes

`````````

- Fixed !CommandMove home making LSXCommand invisible

New Features

````````````

- !CommandMove has absolute position support

See !CommandMove documentation below.

Version 1.8.1

-------------

Bug Fixes

`````````

- Added CommandMusicPlayer

- Fixed newer build compatibility

- Fixed AlterScript Run-Twice bug (thanks to Chris Rempel for the fix)

Version 1.8.0

-------------

Bug Fixes

`````````

- Fixed CommandNoWarnOnError

- Fixed locality stuff for international users

Version 1.7.9

-------------

Bug Fixes

`````````

- Fixed DarkStep Compatibility

- Linked against a fresh lsapi.dll, so this *should* fix problems

people had loading LSXCommand 1.7.8. Drop me a line if not

Version 1.7.8

-------------

Documentation Changes

`````````````````````

- Calculator documentation entirely revamped to reflect all the new

and cool features - CHECK IT OUT!

- Added lsxcommand.rc to the package - just a list of all the

RC commands and !Bang commands.

- Documentation reflects new location of the Japanese translation

Bug Fixes

`````````

- AutoComplete bug is fixed! The fix *might* make AutoComplete work

not *exactly* as planned, but at least it won't crash any more.

New Features

````````````

- New Timer management

- Entirely new calculator code (Mad props to Jonas Sicking for coding

this stuff - credit entirely belongs to him for the calculator now)

Version 1.7.7

-------------

Documentation Changes

`````````````````````

- It turns out Mr. Kawamoto isn't a Professor after all ("merely

a student" to put it in his words). Well, at least he's a

Ph. D. candidate :)

- Kudos section fixed & updated - check out the new entry.

- Updated CommandClock section to include new !Bangs supported

by LSXCommandClock

Bug Fixes

`````````

- Fixed CommandNoWarnOnError bug when entering a path

- !CommandMove now automatically calls !FocusCommand *if*

it was called without any arguments (ie you want it to move to

the current mouse position)

- Aliases now properly parse out stuff like the following:

*CommandAlias IE "C:\program files\internet explorer\..."

Thanks to TAMUKI-TAM for sending the patch to this bug.

New Features

````````````

- LSXCommand is now offered in Japanese.. TAMUKI-TAM is the guy

who localized LSXCommand to use Japanese characters and

Mr. Kawamoto, as I said before, has translated the readme to

Japanese - thanks again!

- Added following !Bang commands (see section II.3 for details):

* !CommandToggleTimer / !CommandClockToggleTimer

* !CommandSetText

Version 1.7.6

-------------

Documentation Changes

`````````````````````

- Kudos section has a few new entries - check them out!

- CommandBorderSize documentation added

Bug Fixes

`````````

- Fixed !CommandMove bug

- Fixed Working Directory problems

New Features

````````````

- When !CommandMove/!CommandClockMove is called without

parameters, it moves to the current cursor position. I would

recommend using CommandHideOnUnfocus with this.

Also, if you !CommandMove has the parameter "home", it moves

back to the original position found in step.rc

- Added following RC Commands:

* Command + Bottom | Top | Left | Right + BorderSize

(ie. CommandTopBorderSize, CommandLeftBorderSize...)

Notes

`````

Be *sure* to read the CommandBorderSize documentation if you

are interested in using CommandBottom/Top/Left/RightBorderSize

Version 1.7.5

-------------

More bug fixes; new features

Documentation Changes

`````````````````````

- Fixed Ilkka Nisula's name.

- Updated Search Engine list documentation to reflect

"categories"

- Updated Section II.1 to note that new engines are only added

to the master search engine list available on my web site.

Bug Fixes

`````````

- Fixed !CommandBrowse* crashes

New Features

````````````

- Added Mike Thrall's code for moving LSXCommand via a !Bang

(see below)

- Added category feature to Search Engine list (see the end of

section II.1 for details)

- Added following !Bang Commands:

* !CommandMove / !CommandClockMove

- Added following Search Engines (see section II.1 for details)

* DVDExpress

* CodeGuru

* ZDNet HotFiles

Version 1.7.4

-------------

Bug fixes, bug fixes, bug fixes...

Documentation Changes

`````````````````````

- Documentation now reflects change from CommandClock to

CommandTime

Bug Fixes

`````````

- Fixed AlterScript to work like Killarny's script.dll

Meaning, understanding the LoadScript RC Commands

- Fixed !CommandBrowseFile & !CommandBrowseFolder crashing bugs

- Fixed CommandCommaDelimiter problems (stupid infinite loops)

- Fixed the weird LSXCommand/CommandClock problem: if you have

the *original* LSXCommand with a CommandClock entry, then

you must change this to CommandTime (see Notes for more info)

New Features

````````````

- Added switch WinAmp/Clock mode on mouse click in

LSXCommandClock (not in LSXCommand).

- Added following RC Commands:

* CommandAddExternalsToHistory

- Added following search engines:

* AudioFindMP3 (MP3 search engine - audiofind.com)

* PalaVista (MP3 metacrawler - palavista.com)

Notes

`````

It turns out the problem lies in LSAPI, and not LSXCommand or

LSXCommandClock. In any case, the original CommandClock RC

Command (before there ever was a LSXCommandClock) now is named

CommandTime. The LSXCommandClock RC Command "CommandClockString"

is still the same. So, if you have the original LSXCommand still

with a CommandClock entry, change it to CommandTime. NOTE:

CommandClockDisappearsOnFocus is still the same.

Example: CommandClock "#c" --> CommandTime "#c"

Version 1.7.3

-------------

A couple of features, bug fixes

Bug Fixes

`````````

- Fixed File AutoComplete junk characters error

New Features

````````````

- Separate AlterScript module (see section II.11 for details)

- Separate clock module (see section II.10 for details)

- Added following !Bang Commands:

* !CommandBrowseFile

* !CommandBrowseFolder

Version 1.7.2

-------------

Mostly bug fixes & two feature additions

Documentation Changes

`````````````````````

- Added section II.9 for Tab File Completion feature

Bug Fixes

`````````

- Fixed !CommandHide & !CommandShow problems

- Fixed CommandHiddenOnStart problems (again)

- Fixed Paste menu item problems

New Features

````````````

- New positioning system (see Notes below)

- Added file name tab completion like Re5ource's popups

(see section II.9)

- Added following RC Commands (see section II.2 for details)

* CommandSearchEngineBrowser

* CommandWinAmpDisappearsOnFocus

* CommandHideOnUnfocus

* CommandTabFileComplete

* CommandOffsetX

* CommandOffsetY

Notes

`````

In the new positioning system, CommandOffsetX/Y are used to

decide from where LSXCommand should compute its position. The

following table lists the combinations of CommandOffsetX/Y and

CommandX/Y and what they do:

CommandOffsetX/Y:

0 - Reference from Left/Top (default)

1 - Reference from Center of Horizontal/Vertical

2 - Reference from Right/Bottom

CommandX/Y:

These values now tell how many pixels away from the point

described by CommandOffsetX/Y LSXCommand should be.

For instance, using the following values will have LSXCommand

be placed 2 pixels to the left of horizontal center, at the very

bottom of the screen:

CommandOffsetX 1

CommandOffsetY 2

CommandX -2

CommandY -14 (Same as negative of CommandHeight)

If you leave your settings the way they are, they will work as

before.

To turn on file name tab completion, be sure to turn *on*

CommandTabFileComplete and CommandNoTabMicroComplete. I know

this is a bit clunky, but deal with it please... :) I didn't

test it too extensively, but it seems to be working quite

well on my system.. Of course, we know what that means...

Version 1.7.1

-------------

Just bug fixes and a few features

Documentation Changes

`````````````````````

- Added number conversion information to Calculator

Functionality section (section II.6)

- Added multiple number bases information to Calculator

Functionality section (section II.6)

- Changed the original lscommand's readme file. Many

people asked about why CommandHideOnStart doesn't work.

This is because there is no such thing.. it is

CommandHiddenOnStart. That solves that mess.

Bug Fixes

`````````

- Fixed Comma Delimiter problem(s)

- Caught up with the Kudos section of this readme. :)

- Fixed bug with CommandContextMenuOrder

- Fixed Clock that never came back after a command

- Fixed any problems with CommandHiddenOnStart with

CommandBackground

New Features

````````````

- Calculator supports limited number converion

- Calculator supports binary & hexadecimal numbers (see section

II.6)

- You can now stop any of the History / Alias / Search Engine

submenus from coming up by setting them to 9 instead of 0, 1,

or 2.

- Added following RC Commands (see section II.2 for details)

* CommandScrollWinAmpTitle

* CommandContextMenuStandardItems

- Added following !Bang Commands (see section II.3 for details)

* !Command

* !CommandShow

* !CommandHide

- Added following search engines (see section II.1 for details)

* OLGA - On-Line Guitar Archive

* UBL - Ultimate Band List

* CDNow - Search for CDs

Notes

`````

CommandScrollWinAmpTitle scrolls the current WinAmp title *if*

WinAmp's "Scroll Song Title in Windows Taskbar" preference is

on. Also, you *can* have a clock and the WinAmp scroller - but

the WinAmp scroller takes precedence. Therefore, the WinAmp

scroller will show when there is a WinAmp to scroll. If not,

LSXCommand will show a clock (if the clock setting is specified)

Version 1.7

-----------

New features...

Documentation Changes

`````````````````````

NOTE: This section notifies you about changes to existing

documentation. New documentation is not listed here. Pay

close attention to Section II, since all major features have

their own documentation added under this section.

- Added note about RPN functionality to Calculator section II.6

- Added shameless plug <g> for the full engines.list at my web

site in section II.4.

Bug Fixes

`````````

- Proper handling of border sizes (retheming may be required)

New Features

````````````

- Added following RC Commands (see section II.2 for details)

* CommandNoAutoComplete

* CommandCommaDelimiter

* CommandTransparentEditBox

* CommandBackground

* CommandRPNCalculator

* CommandClock

* CommandClockDisappearsOnFocus

Notes

`````

While doing some theming of LSXCommand myself, I noticed that

when I set BorderSize to 0, it still had a border around it.

I fixed that kind of stuff in this revision. NOTE: Some re-

theming may be required.

If you set CommandTransparentEditBox on for whatever reason, you

*WILL* see flashing while typing in the command box. No doubt.

I strongly suggest reading section II.2 for more about

transparency and backgrounds.

Version 1.5.3

-------------

Just a couple of bug fixes in the new command parser from 1.5.2

and another feature.

Bug Fixes

`````````

- Fixed the junk characters being launched as an Internet

Address when CommandAssumeNetAddress is turned on.

- Fixed history saving commands that were quoted paths alone

multiple times

- Fixed multiple explorer windows

New Features

````````````

- Added following RC Commands (see section II.2 for details)

* CommandSelectAllOnMouseFocus

* CommandExplorePaths

Version 1.5.2

-------------

More bug fixes - most related to string parsing and memory

allocation. Programmers: forgive me! I didn't check all the

NULL pointers I was supposed to! I only hope I caught all of

them in this release...

Quote of the release: What was I smoking when I released 1.5.1

anyway?

Bug Fixes

`````````

- Fixed Calculator () crashing bug

- Fixed multiple history menu entries of same command

- Fixed times when history menu wouldn't do anything

- Fixed No-Argument searching (not possible now)

- Fixed case when CommandNewestHistoryItemsOnTop was *not* on

- Fixed LSXCommand hiding / showing itself on inappropriate

commands from the context menu

- Fixed command parsing by rewriting code - woopee!!

New Features

````````````

- Totally re-written command parser (This is also a bug fix)

- Added following engines:

* IMDB - Search for movies by title at imdb.com

Notes

`````

This section will just comment on the new command parser, since

it's not big enough for it's own section.

The new command parser allows for anything to be quoted.

However, do NOT try and use quoted names for aliases and search

engines in your configuration files yet - they just aren't

implemented. I want this release to entirely stabilize before

adding other features and moving on to other stuff for a while.

Anyway, back to the parser. Before, things like this would not

run: (Let's say you have an alias of: nt notepad)

"nt" c:\litestep\step.rc <ENTER>

"nt c:\litestep\step.rc" <ENTER>

The first, now, *will* run. The second *will NOT* run. This

should be obvious: the first explicitly says nt is a command

of its own. The second says the whole line is a command of its

own. Since there is no command that fits this at all, nothing

will happen.

Also, quoted paths are now allowed. So, you can now use

"c:\program files\something"

to launch files.

LSXCommand now operates in the following fashion when given a

command:

- Try against Aliases

- See if it fits !Bang / Calculator / Search

- If not, try to execute the command and parsed arguments

- If this does not work, but the command *was* a path,

then try the whole line alone. If it wasn't a path,

your AssumeNetAddress setting kicks in and decides whether

or not to launch your browser.

Version 1.5.1

-------------

A QBF: Quick Bug Fix and one feature

Bug Fixes

`````````

- Fixed all one word commands. Seemed to be really broken, eh?

New Features

````````````

- Added following RC Commands (see Section II.2 for details)

* CommandUnixHistory

Version 1.5

-----------

Features, features, features:

Documentation Changes

`````````````````````

NOTE: This section only relates to changes made to documentation

that existed prior to the current version.

- Added information about how to make engine entries for engines

using POST method instead of GET. (See section II.4)

Bug Fixes

`````````

- Fixed memory leak on every autocomplete

- Fixed bug where people couldn't edit their engines.list

while LSXCommand was loaded.

- Fixed bug where, if you don't have CommandClearOnHide or

CommandNoClearOnCommand *was* on, the history wasn't in the

correct place the next time you used lsxcommand. (Didn't

catch that, did ya?!)

- Fixed bug where quoted paths / search phrases were ignored.

New Features

````````````

- Version Resource added for completeness.

- Calculator Functionality (see Section II.6 for details)

- Tab-MicroComplete (see Section II.5 for details

- Context Menu Command Access (see Section II.5 for details)

- Quoted Paths and Quoted Search Phrases

- Added following RC Commands: (see Section II.2 for details)

* CommandNoWarnOnError

* CommandHistoryMenuEntries

* CommandNewestHistoryItemsOnTop

* CommandContextMenuAboveBox

* CommandContextMenuExecute

* CommandContextMenuOrder

* CommandClearHistoryOnStartup

* CommandAssumeNetAddress

- Added following !Bang Commands: (see Section II.3 for details)

* !CommandClearHistory

* !CommandShowContextMenu

- Added following engines:

* BigBook - Find businesses in all 50 US states

* BarnesAndNoble - Find books at Barnes & Nobles

* MediaFindMP3 - Use Mediafind for MP3 searching

* Reel - Find movies by title

* Archieplex - Huge Archie (FTP) database

* Filez - Search with Filez.com

* Shareware - C|Net Shareware.com

* NorthernLight - A real search engine.. :)

* OpenText - Another search engine

* InfoSpace - ''

* GoTo - ''

* Pathfinder - ''

* MetaCrawler - ''

* Top5 - Top 5% of all web sites (so they say..)

* A2Z - The Lycos A2Z guide

* AskJeeves - The famous ask jeeves

* MerckMan - The Merck Manual

* APWire - The Associated Press Wire

* WhoWhere - E-Mail search

* LibraryOfCongress - Search *the* Library

* Finger - finger user@hostname

* NSLookup - NSLookup...

* LettermanTop10 - Search Dave Letterman's Top Ten

* Anonymizer - Anonymize yourself!

Version 1.1.1

-------------

Just one bug fix, but important:

New Features

````````````

- Added following search "engines":

* Dictionary - searches Merriam-Webster's Dictionary

* Thesaurus - searches Merriam-Webster's Thesaurus

* OTH - Archie search for MP3s, I think...

* FOLDOC - Free On-Line Dict. Of Computing

* Quote - Quote.Com stock quotes

* FileDemon - Software search of major sites

Bug Fixes

`````````

- Bug where you couldn't edit your step.rc as long as

lsxcommand.dll was loaded.

- Same bug for engines.list

Version 1.1

-----------

A few bug fixes and a little bit more...

New Features

````````````

- Added Select All on Focus by specifying

CommandSelectAllOnFocus in the step.rc

- Added 'Aliasing' - this allows you to "bind" a single word to

a lengthy command. For instance, you can specify 'step.rc'

to be "notepad c:\litestep\step.rc"

- Added following search "engines":

* UPS (?UPS 1Z99999999) - UPS shipment tracking

* FedEx (?FedEx 90923012) - FedEx shipment tracking

* Airborne (?Airborne 21039) - Airborne Express tracking

Bug Fixes

`````````

- Fixed bug where number of entries reported was wrong

(this is an internal code fix - just good bookkeeping)

- Added the engines.list file to the archive

I. About LSXCommand

===================

LSXCommand is a greatly extended version of LSCommand (by limpid).

A quick list of the enhancements are:

* Entirely rewritten History code (sorry limpid!)

* Resizable History

* History stored in Modules.ini (faster, makes more sense to me)

* AutoComplete

* Internet Search

* Aliasing - or Binding, if you like

* Calculator Functionality (Regular & RPN!)

* Context Menu (Right-Click) Access

* Backgrounds & Transparency

* A Clock with Date functionality as well

* A separate clock module

* A 'replacement' for Killarny's script.dll for use with

LSXCommand

* Heck, it can even use WinAmp's scrolling title feature...

* A few speed tweaks

II. How to use LSXCommand

=========================

LSXCommand is used in the exact same fashion as LSCommand. The

only differences now are: 1. You have more (or less) history to

deal with (depending on your settings) 2. AutoComplete works much

like that of Internet Explorer / Netscape and 3. You can now

search the net directly from LSXCommand!

II.1 Internet Searches

------------------------

Both Netscape and Internet Explorer support a small feature where

you can type a question mark (?) and then a keyword, and they will

search the net for you. However, you could never tell which

engine Netscape was going to use (Netcenter had deals with all the

major engines) and IE always seemed a bit screwy to me. Anyway,

LSXCommand now has this functionality - and you always know which

engine you are searching with!

For instance, to search for "Litestep" with LSXCommand, enter the

following and hit <Return>:

? Litestep

The above will search your default search engine for the phrase

Litestep. (See the section below about the engines.list file to

set up your default engine, and add more!).

To use a specific search engine with your query, you must simply

insert an engine ID after the question mark, like this (Note the

lack of a space after the question mark - it's important!):

?Altavista Litestep

This searches AltaVista for the phrase Litestep.

The following is the list of engines that come preconfigured in

the sample engines.list (Note - unless otherwise stated, these are

configured to the default options these engines use. Another note

- engine names are not case sensitive, I just wrote them the

proper way in the examples):

* Default: Yahoo!

* Yahoo! (?Yahoo quake) [Note exclusion of !]

* AltaVista (?AltaVista phrase I can't find anywhere)

* Lycos (?Lycos insane asylum)

* Excite (?Excite dilbert)

* InfoSeek (?InfoSeek obey your thirst)

* Google! (?Google linux) [Note exclusion of ! again]

* HotBot (?HotBot nothing in particular)

* DejaNews (?DejaNews good compilers)

* LycosMP3 (?LycosMP3 Offspring Gone Away)

* ScourMP3 (?ScourMP3 Robert Miles Children)

* Lyrics (?Lyrics I wish I was a little bit taller)

* LyricsByTitle (?Lyrics I Wish)

* Slashdot (?Slashdot Quest for Cool Cases)

* Floach (?Floach lsxcommand)

* MSDN (?MSDN I didn't know that API call existed)

* Amazon (?Amazon Barbarians Led by Bill Gates)

* SoftSeek (?SoftSeek UltraEdit)

* Hardware (?Hardware AMD K7)

* CMA (?CMA phrase in that article I can't find)

* Patent (?Patent US05731339__)

Added as of 1.1:

* UPS (?UPS 1Z99999999999)

* FedEx (?FedEx 1092831023)

* Airborne (?Airborne 123934309)

Added as of 1.5: (sorry, I gave up on examples - too many!)

* BigBook

* BarnesAndNoble

* MediaFindMP3

* Reel

* Archieplex

* Filez

* Shareware

* NorthernLight

* OpenText

* InfoSpace

* GoTo

* Pathfinder

* MetaCrawler

* Top5

* A2Z

* AskJeeves

* MerckMan

* APWire

* WhoWhere

* LibraryOfCongress

* Finger

* NSLookup

* LettermanTop10

* Anonymizer

Just a couple of notes:

- LycosMP3 and ScourMP3 are customized versions of Lycos

(lycos.com) and Scour (www.scour.net) to search strictly for

MP3's.

- Lyrics (by itself) searches www.lyrics.ch for the lyrics

themselves. LyricsByTitle searches for titles of songs

available on the Lyrics server.

- Hardware searches Tom's Hardware - a good site for hardware

reviews.

- CMA searches ZDNet's Computer Magazine Archive - which is cool

if you don't remember where you saw an article.

- Patent looks up the specified patent number on IBM's Patent

server - www.patents.ibm.com

- The last three are all shipment tracking searches - UPS, FedEx

or Airborne Express

For more information about adding, removing, or changing engines

in the list file, see the section below.

PLEASE NOTE: LSXCommand's default search engine list is quite

large; however, there are tons of other good search engines out

there. After version 1.5, all engines which are said to be Added

in the Change Log (above) are actually added to the master

LSXCommand Search Engines list available at my web site:

http://floach.pimpin.net/visigoth/litestep/lsxcommand-engines.list

CATEGORY FUNCTIONALITY

Before I start on the category functionality, I have to say the

following: your default search engine (identified by the

"Default ..." line in your search engines list) should be left

alone on a line by itself. Try and make it the first non-comment

line in your engines list.

Just one more note: When a search engine is in a category, you

access it *THE SAME WAY* when typing a search command.

(ie. even if "Amazon" is in the "Books" category, you still use it

by typing "?Amazon <book>")

That said, we can get to the meat of the subject. Categories are

the same as sub-menus in the popup menu. The only difference

between search engines in a category and not in a category is the

fact that one is in a sub-menu (such as "Books ->" or "MP3 ->") and

the other is in the root "Search Engines ->" sub-menu.

To create a category in your search engines list, all you have to

do is type the name of the category and then an open brace ( "{" ).

This must be on its own line. Now you can place as many search

engines as you like in that category, each one on its own line just

as in the original engines.list. To close a category, simply place

a closing brace ( "}" ) on its own line.

You can also have spaces in your category names (NOTE: This doesn't

mean you can have spaces in your search engine names. That has

not been implemented). To do this, enclose the category name in

quotes, such as "Music and Movies". Also, you can have a keyboard

accelerator assigned to a sub-menu. (You know how the File menu

and the Edit menu have underlines under the 'F' and 'E'? You can

have that too - those are called keyboard accelerators). To have

a keyboard accelerator for a particular letter in the category

name, place an ampersand ( "&" ) in front of the letter. For

instance, "Music and &Movies". If you want to have an ampersand

inside the name of a category, put two ampersands in a row. As an

example, "Music && Movies" will have an ampersand between "Music"

and "Movies" but no keyboard accelerator. "Music && &Movies" will

have both an ampersand and an accelerator.

You are allowed to have sub-categories ad-infinitum (meaning, you

can make sub-menus on the sub-menus and just keep going as far as

you like. You could do something like Computers->Software->

Download Libraries->.

For human readability, you can also have white space in front of

both search engine lines and category lines.

For an example, see the included engines.list file in this

distribution of LSXCommand.

II.2 Added RC Commands

----------------------

NOTE: Please see original LSCommand readme for previous

RC Commands.

CommandMusicPlayer

``````````````````

Description: This command enables LSXCommand to use the titles

of other music players besides WinAmp. You should set it to the

class name of the application you are looking for.

Example:

CommandMusicPlayer "WINAMP V1.X"

CommandBottom/Top/Left/RightBorderSize

``````````````````````````````````````

Description: These four commands specify separate borders for

each side of the edit box. The default for all of them is 2.

You can only use these when CommandBorderSize is *not*

soecified.

Example:

CommandTopBorderSize 4

CommandBottomBorderSize 4

CommandRightBorderSize 0

This will set a 4 pixel border on top and bottom, a 2 pixel

border on the left (default), and no border on the right.

CommandBorderSize

`````````````````

Description: Sets the border size around the edit box. This

sets the border on each side to the same number.

If you want to have different sized borders on each side, use

CommandTopBorderSize, CommandBottomBorderSize, CommandLeft...,

and CommandRight... (see above)

If CommandBorderSize is specified, Command<SIDE>BorderSize

commands are ignored.

Default for all these commands is 2.

CommandAddExternalsToHistory

````````````````````````````

Description: If this is on, LSXCommand will add any commands

launched with the !Command !Bang command to the history. Since

I've been using AlterScript with this a lot, it became

annoying to have all of AlterScript's commands end up in

LSXCommand's history. NOTE: This is an LSXCommand RC Command

(not for AlterScript). It affects any command run with !Command

and not just AlterScript's.

CommandSearchEngineBrowser

``````````````````````````

Description: Path to the browser to be used with search engines.

If not specified, LSXCommand uses the default browser on your

system.

Example: CommandSearchEngineBrowser c:\opera\opera.exe

CommandWinAmpDisappearsOnFocus

``````````````````````````````

Description: Just like CommandClockDisappearsOnFocus, but for

the WinAmp scrolling feature.

CommandTabFileComplete

``````````````````````

Description: Enables the completion of file names by using the

tab key. NOTE: You will want to also turn on the

CommandNoTabMicroComplete RC Command

CommandOffsetX/Y

````````````````

Description: This value determines which point on the screen

LSXCommand should use as a reference for the CommandX/Y values.

The default is the upper left corner.

0 - Left / Top

1 - Horizontal / Vertical Center

2 - Right / Bottom

Examples: CommandOffsetX 0 CommandOffsetY 2

CommandHideOnUnfocus

````````````````````

Description: Hides LSXCommand when it loses keyboard focus.

This can be used to hide LSXCommand after it runs an app.

Example: CommandHideOnUnfocus

CommandContextMenuStandardItems

```````````````````````````````

Description: This item does two things. It first turns on the

standard menu items: Cut, Copy & Paste. Second, it tells where

to put the standard items, above or below the LSXCommand

specific menus.

Example: CommandContextMenuStandardItems 1 ; Above

CommandContextMenuStandardItems 2 ; Below

CommandContextMenuStandardItems 0 ; Off (Default)

CommandScrollWinAmpTitle

````````````````````````

Description: If on, this setting takes WinAmp's scrolling title

and displays it in LSXCommand. Note that WinAmp's scroll song

title preference must be on for this to happen. A neat trick

with this is to have both a clock and a WinAmp scroller. The

WinAmp scroller will show when WinAmp is running. If not, the

clock will show. (Note that for the clock to show, you must use

the CommandTime RC Command described below).

Example: CommandScrollWinAmpTitle

CommandNoAutoComplete

`````````````````````

Description: Turns *off* AutoComplete. Someone asked for it, so

I coded it :).

Example: CommandNoAutoComplete

CommandCommaDelimiter

`````````````````````

Description: Some Eurpoean countries use commas as decimal

delimiters, so this changes decimals from periods to commas.

Example: CommandCommaDelimiter

CommandRPNCalculator

````````````````````

Description: Makes the calculator an RPN calculator. If you

don't know what this is, don't use it! You'll only confuse

yourself. Others call RPN "Postfix" notation. If you want

to learn more, obtain a Hewlett-Packard RPN calculator (the

48/49 series are especially nice, IMO :).

NOTE: This does not make the history a stack! It merely

means that you can write your expressions as postfix and it

will be calculated correctly. For instance, typing:

5 <ENTER> 2 <ENTER> + <ENTER>

will NOT work. You must type "=5 2 +" to get the answer

Example: CommandRPNCalculator

CommandBackground

`````````````````

Description: Path to your background image. If this is not an

absolute path, LSXCommand looks in your images directory. If

this option is not specified, the background & border colors

are used (see the original lscommand readme for info on these

colors).

NOTE: See section II.7 for more about backgrounds and their

relationship to transparency.

Example: CommandBackground "lsxcommand_background.bmp"

CommandTransparentEditBox

`````````````````````````

Description: Makes the area in which you type transparent to the

background. If this option is not specified, the background

image shows through. If there is no background, the background

color is used (see the original lscommand readme for info on

these colors).

NOTE: See section II.7 for more about backgrounds and

transparency.

Example: CommandTransparentEditBox

CommandTime

```````````

Description: Format string that tells LSXCommand how you want

your time & date to look.

NOTE: See section II.8 on different format strings and what

effect they have. It's quite long, but worth it.

Example: CommandTime "%#c"

NOTE: The above results in something like "Monday, June 14, 1999

18:00:30" depending on the real date and time.

CommandClockDisappearsOnFocus

`````````````````````````````

Description: If you want the clock to automatically disappear

when you click in LSXCommand, set this on. Otherwise, the

clock will "pause" at the current time/date. This makes it

easier for you to copy/paste the time & date into any app.

Example: CommandClockDisappearsOnFocus

CommandSelectAllOnMouseFocus

````````````````````````````

Description: Just like CommandSelectAllOnFocus, just that it

only works when clicking to focus LSXCommand. The reason

these are two separate options is for people like me: I like to

be able to just click once to put the cursor where I want it -

not select the entire command. But, some people like the

explorer way of doing things better, so I added it.

Example: CommandSelectAllOnMouseFocus ; More explorer functions

CommandExplorePaths

```````````````````

Description: If enabled, any directory path you enter into

LSXCommand will open a treed explorer window, instead of the

standard folder window.

Example: CommandExplorePaths ; Gimme a Tree!

CommandUnixHistory

``````````````````

Description: The most popular UNIX shell (bash) has the inverse

history navigation: Up for previous, down for next. You can

use this system with this setting.

Default: Down is previous; Up is next

Example: CommandUnixHistory ; I like my old command line

CommandNoWarnOnError

````````````````````

Description: If there is an error (for instance, if the command

you entered is invalid or the calculator couldn't evaluate the

expression you entered), you will get an error message. This,

when turned on, will suppress it.

Default: Off (meaning - you get the error message)

Example: CommandNoWarnOnError ; Stops error messages

CommandHistoryMenuEntries

`````````````````````````

Description: Sets the maximum number of history entries available

from the context menu.

Default: The max number of history entries

Example: CommandHistoryMenuEntries 10 ; 10 Entries available

CommandNewestHistoryItemsOnTop

``````````````````````````````

Description: This setting places newer history items at the top

of the menu, instead of at the bottom.

Default: Newest items go on the bottom

Example: CommandNewestItemsOnTop ; Puts newest stuff on top

CommandContextMenuAboveBox

``````````````````````````

Description: If you have your LSXCommand window at the bottom of

the screen, you will want to turn this on. If at the top, leave

this off. This sets where the context menu will appear - above

or below the LSXCommand box.

Default: Context Menu appears below box

Example: CommandContextMenuAboveBox ; Menu appears above box

CommandContextMenuExecute

`````````````````````````

Description: Tells LSXCommand to execute a selection from the

context menu instead of copying its data to the LSXCommand box.

NOTE: Since the point of search engines is to have you enter a

search phrase, it is not possible to have search engines

execute.

Default: Copies data (ie history / alias entry) to the box.

Example: CommandContextMenuExecute ; Execute a command, no copy

CommandContextMenuOrder

```````````````````````

Description: Specifies which order each submenu should appear.

For instance, you can have History, Alias, then Search Engines

or Alias, History, Search Engines, or...

The setting is 3 numbers: 0, 1, and 2. The combination of

these numbers sets in which order each submenu appears. The

first number is the position of the History submenu. The

second is the Alias submenu. And the last is the Search

Engines submenu.

Default: 012

Example: So, to have a menu where Search Engines are at the top,

Aliases next and the History at the bottom, you would specify:

CommandContextMenuOrder 210

CommandNoTabMicroComplete

````````````````````````

Description: Stops Tab-MicroCompletes from taking place. See

section II.5 on more about Tab-MicroComplete

Default: Tab-MicroComplete is on

Example: CommandNoTabMicroComplete ; I don't like fancy stuff

CommandClearHistoryOnStartup

````````````````````````````

Description: Clears the history on startup. NOTE: You *will*

lose the history in modules.ini - not only the history in

memory.

Default: Keeps last session's history

Example: CommandClearHistoryOnStartup

CommandAssumeNetAddress

```````````````````````

Description: If a command just doesn't cut it, you can have it

start your browser with the address.

Default: You will get an error message - this is suppressable by

CommandNoWarnOnError

Example: CommandAssumeNetAddress

Example (in lsxcommand): home

If home is not found in your path, your browser is loaded with

http://home (which usually gets changed to http://home.com or

http://www.home.com)

CommandHistoryEntries

`````````````````````

Description: Sets number of history entries of which to keep

track.

Default: 10

Note: I haven't really stress-tested LSXCommand, so I don't know

how well it scales up, but it shouldn't be too taxing even at

somewhere around 50 entries. But I think that's a bit much

anyway...

Example: CommandHistoryEntries 20

CommandSearchEngineList

```````````````````````

Description: The path to your engines.list - the list of

search engines to use with LSXCommand.

Default: -

Note: If none is supplied, or the file is unavailable, the

search feature will be unavailable.

IMPORTANT: This must be an absolute path.

Example: CommandSearchEngineList C:\Litestep\engines.list

CommandSelectAllOnFocus

```````````````````````

Description: Selects everything in the command box on focus

Default: True

Example: CommandSelectAllOnFocus ; Selects all on lsxcommand

*CommandAlias

`````````````

Description: Aliases (or Binds) a phrase to another command.

Default: -

Example: *CommandAlias step notepad c:\litestep\step.rc

II.3 Added !Bang Commands

-------------------------

NOTE: See Original LSCommand readme for previous !Bang Commands

!CommandSetText

```````````````

Description: This !Bang sets the text in LSXCommand to its

arguments. This makes for some really neat stuff (for instance,

a shortcut that pops up LSXCommand with a question mark and a

space already in it ready for an argument to search with). Note

that this !Bang command does not show LSXCommand if it is hidden.

Example: !SetText "?Altavista "

!CommandToggleTimer

```````````````````

Description: Toggles the current timer. If you use this, the

WinAmp timer no longer takes precedence over the clock. You have

to call this !Bang again for the WinAmp scroller to appear.

!CommandMove

````````````

Description: Moves the LSXCommand window either to an absolute

position, or by a delta along each axis. The horizontal and

vertical values can be configured separately (you can mix

absolute and delta values).

If the horizontal or vertical values are surrounded by

parentheses, they are interpreted as absolute values. Otherwise,

they are interpreted as +/- deltas along their respective

axis.

If there is only one parameter, it is interpreted as a horizontal

value.

!CommandMove 0 100 ; moves it 100 pixels down

When !CommandMove is called without parameters, it moves to the

current mouse cursor position. If !CommandMove is called with

"home" as its parameter, it moves back to the original position

it received from step.rc

!CommandBrowseFile

``````````````````

Description: Brings up an Open Dialog Box to browse for a file

for LSXCommand to open. It's just the same as typing in the

file's name. NOTE: You can send an argument to this !Bang

command to specify the filter for the open box. For instance,

to see just Text Files, you might do this:

!CommandBrowseFile All Text Files (*.txt, *.ini)|*.txt;*.ini

!CommandBrowseFolder

````````````````````

Description: Brings up a folder selection dialog. You can

select a folder to browse to. There are no arguments for this

!Bang command.

!CommandShow

````````````

Description: Just shows LSXCommand. NOTE: It does *not* give

LSXCommand focus. To do this, use !FocusCommand - this command

gives focus to LSXCommand, and if it's not visible, it shows it

also.

!CommandHide

````````````

Description: Just hides LSXCommand. Nothing really special.

!Command

````````

Description: Now use the power of LSXCommand anywhere within

Litestep! Shortcuts, wharf items, whatever that can run !bang

commands outside of its own can now use LSXCommand.

Example: !Command notepad

!CommandClearHistory

````````````````````

Description: Clears both the history in memory *and* the history

in modules.ini

!CommandShowContextMenu

```````````````````````

Description: Makes LSXCommand's Context Menu visible wherever

the cursor is on the screen, regardless of LSXCommand's

visibility.

!CommandRescanEngines

`````````````````````

Description: Rescans the engines.list file. Note: it does not

load a new engines.list file if specified in the step.rc; it

will attempt to reload the same engines.list file

II.4 The engines.list File

--------------------------

This file tells LSXCommand how to use different search engines to

search the Internet. The basic structure of the file is like

this (Note - it's probably a good idea to follow along with the

sample engines.list):

Default <moniker>

<moniker1> <keyed url1>

<moniker2> <keyed url2>

... ...

The <moniker> element is one of the monikers listed below

(<moniker1>, <moniker2>, etc). As explained above, the default

engine that will be used is <moniker>. The <keyed url#> elements

are, basically, URLs that tell LSXCommand where to send your web

browser. However, there is one difference: the special "key"

<args> is used to determine where to place your search string.

For instance, let's take a look at Yahoo!'s line:

Yahoo http://search.yahoo.com/bin/search?p=<args>

This means the following:

* The user must begin a search with ?Yahoo to use this search

* The user's search phrase (stuff after ?Yahoo) is placed in

<args>. So, the statement "?Yahoo something" gets converted

to: http://search.yahoo.com/bin/search?p=something

Multi-word searches are handled automatically by LSXCommand. For

this reason, LSXCommand can't quite use specialized engines to

their full extent - for instance, the "Simple Search" function on

the Lyrics server - www.lyrics.ch - has more than one search

field.

You can find the full engines.list (the one shipped with

LSXCommand is by no means complete and neither is this one, but it

is larger) here:

http://floach.pimpin.net/visigoth/litestep/lsxcommand-engines.list

TO MAKE YOUR OWN SEARCH ENTRIES:

Go to the page where you enter a search phrase. Type something

and search for it. If your URL bar has a lot of &'s and ='s, this

site can be used with LSXCommand. All you have to do is copy this

URL and paste it into your engines.list file with a moniker of its

own. Then, replace the phrase you searched for with the key

<args>.

The above type of an engine is one that uses the GET method to

send data to the web server. The other type of method is called

POST. This is the one that doesn't have all the &'s and ='s in

the URL. What you have to do is go back to the search page and

go into the actual HTML. Find the place with the <FORM> tag and

from here on, you have to set up your own &'s and ='s from the

names and values listed, using the ACTION= property of the form

tag as a base. Sorry if it's confusing, but it's almost 5 AM.

II.5 Tab-MicroComplete & Context Menu Access

--------------------------------------------

Tab-MicroComplete is a feature I made up on my own - not even

Microsoft has it. When you are typing in LSXCommand and get

an autocompletion, you may want to automatically go on to the next

word. For instance, when you search with a particular search

engine, and then want to search with the same engine again, but

with a different phrase.

With Tab-MicroComplete, you can do that. If you hit tab while in

LSXCommand, the cursor will be moved to the start of the next

word, or to the end of the line (depending on where the current

cursor is).

LSXCommand now has Context Menu Access! You can either right-

click on LSXCommand's command box or call the !CommandContextMenu

!bang command. If you use the !bang command, the menu appears

wherever your mouse is on screen. The Context Menu contains

past history entries, all your aliases, and all search engines.

II.6 Calculator Functionality

-----------------------------

As of version 1.7.8, the calculator functionality has been entirely

revamped, thanks to the work of Jonas Sicking. Just like in older

versions, calculator commands start with an = sign at the prompt, then

the expression to evaluate.

What's new? Everything - from the supported operators to the base

conversion, it's all been redone.

LSXCommand handles float precision, so decimals are allowed. The

result will be placed right back into LSXCommand's command box

with an equals sign in front of it and a space after it. This

enables you to use the result of the last command right off the

bat! (By the way - spaces are allowed)

LSXCommand understands the following operators:

+ - * \ / ( ) ^ % ! E

Addition, Subtraction, Multiplication, Division, Division,

Open Parenthesis, Close Parenthesis, Power, Modulus (remainder),

Factorial, Exponential

Yes, there are two division operators. HOWEVER, the \ means

integer division, and the / means regular division.

E is the 10 to the power operator. For instance, 1E6 is 1 million.

Note: don't try 1*E6 - that won't work. Just do 1E6 or (1E6). You

can even do 1E(5+4), but don't try to multiply the two.

FULL RECURSION

With the new calculator, recursion is fully supported. Meaning, as

long as the expression follows the order of operations, it should be

able to be calculated. For instance, you could easily do the following

calculation: =1E(log2(64)), which would return =1000000 (1 million).

MATH LIBRARY FUNCTIONS

With the revamping of the calculator functionality comes some really

useful stuff: a library of mathematics functions! The following is a

list of the supported math functions:

TRIG FUNCTIONS ANALYTIC FUNCTIONS CONSTANTS

`````````````` `````````````````` `````````

sin exp pi

cos ln e

tan log

cot log2

asin log10

acos sqrt

atan floor

acot ceil

sinh abs

cosh fpart

tanh ipart

sign

rand

rnd

The trig functions should be self explanatory. The log functions are

a bit tricky: ln and log are both base e, while log2 and log 10 are

base 2 and 10 respectively. If you haven't heard of the other

functions (like fpart and ipart), consult your graphing calculator's

manual - the one you never bothered to read because you already thought

you knew how to use a calculator :P

To use these functions, you would type something like '=sin(0)'. Note

that since pi and e are constants, you don't put () after them. For

instance, =pi would result in =3.141..

RPN CALCULATOR FUNCTIONALITY

As of version 1.7, you can use LSXCommand as a "Postfix"

calculator. If you are not familiar with this expression, leave

it be and don't worry about it! If you really want to learn more,

obtain a Hewlett-Packard RPN calculator and learn to use it.

RPN mode does *not* turn your history into a stack. It does,

however, make LSXCommand accept postfix notation expressions. See

the documentation for the CommandRPNCalculator RC Command above in

section II.2.

This functionality extends to the 1.7.8 revamping of the calculator

code. It should work fine, but I haven't played with it enough to say

anything more than that.

MULTIPLE NUMBER BASE FUNCTIONALITY

As of version 1.7.1, you can specify numbers in different number

bases. With the 1.7.8 rewrite of the calculator, LSXCommand supports

4 bases: decimal (10), binary (2), hexadecimal (16) and octal (8).

To specify a number as binary, place a 'b' in front of it. For

instance, entering "=b10" in LSXCommand will return "=2" as an

answer. If you typed "=5 + b10", you would get "=7" as an

answer.

Append the following prefixes for its respective base:

b - binary

h - hexadecimal

o - octal

d - decimal (this is, of course, the default)

NUMBER CONVERSION FUNCTIONALITY

With the version 1.7.8 rewrite comes much more flexible number

conversion. You can convert between any of the bases supported by

LSXCommand (listed above).

To convert *from* decimal *to* hexadecimal (color conversion), you

would do the following:

=dh 255 255 255 --> =hff hff hff

So, to convert *from* a base *to* another base, place the

identifier of the from base first, then the to base, then each

number to convert with a space between each one.

II.7 Backgrounds & Transparencies

---------------------------------

I'm sure many people have been wanting these features, so I made

my best attempt at added them to LSXCommand.

Backgrounds are just that - backgrounds. However, they only fill

the background window, much like the background can be set in

mIRC, but it doesn't show through the channel windows. If you

want a background to show through to the place you are typing,

set the CommandTransparentEditBox RC Command.

If there is no background set, CommandTransparentEditBox is

automatically turned off since the only effect will be to slow

down performance and other nasty things.

If there is a background, but CommandTransparentEditBox is *not*

set, the background acts like a border around the text box.

DISCLAIMER: If you turn CommandTransparentEditBox *on*, you WILL

see flashing as you are doing normal things with LSXCommand - such

as typing. Seriously, though, I have no doubts that you will get

some type of flashing effect in LSXCommand no matter what you do.

Until I write my own text output routines, you will just have to

deal.

II.8 Clock Settings

-------------------

The clock functionality in LSXCommand is quite robust, though hard

to use since the format commands look nothing like what you would

expect them to. If you want a quick format command that gives you

both the date and time, use "%#c". If you want more

customization, you will just have to read below. Sorry...

Okay, so you want more control, eh? The following comes straight

from the Microsoft Developer Network Library. It is a table of

format commands you must use to create your time & date string.

Examples are listed below the table.

%a Abbreviated weekday name

%A Full weekday name

%b Abbreviated month name

%B Full month name

%c Date & time representation for current location

%d Day of month as number (01 - 31)

%H Hour in 24-Hour format (00 - 23)

%I Hour in 12-Hour format (01 - 12)

%j Day of year as number (001 - 366)

%m Month as number (01 - 12)

%M Minute as number (00 - 59)

%p AM / PM indicator for current location

%S Second as number (00 - 59)

%U Week of year as number, with Sunday as first

day of the week (00 - 53)

%w Weekday as number, with Sunday as 0 (0 - 6)

%W Week of year as number, with Monday as first

day of the week (00 - 53)

%x Date representation for current location

%X Time representation for current location

%y Year without century (two digits) (00 - 99)

%Y Year with century (four digits)

%z Time-zone name / abbreviation

%Z Same as %z

%% Percent sign

The # sign (pound, hash, whatever you like..) can be used as a

prefix for most format commands. For instance, %#<character>. The

following lists the change in meaning for those commands that are

affected:

%#c Long date & time representation for current

location.

%#x Long date representation only for current

location.

%#d, %#H, %#I, Remove leading zeros.

%#j, %#m, %#M,

%#S, %#U, %#w,

%#W, %#y, %#Y

So, what the heck does all that crap mean? Basically, you think

of how you want your date & time to look, and then substitute the

proper codes where they are needed, for instance:

Think Of.. Code Used

`````````` `````````

05:30:00 PM %I:%M:%S %p

Monday 06/14/99 %A %x

Mon. 6/14/1999 %a %#m/%#d/%Y - Removes leading zeros

June 14, 1999 %B %d, %Y

Monday, June 14, 1999 %#x

I hope that's enough examples. If you have any problems, see

section IV about contacting me.

II.9 Tab File Completion

------------------------

If you turn on CommandTabFileComplete and

CommandNoTabMicroComplete, you can have LSXCommand autocomplete

filenames. For instance, if you type c:\autoe and hit <TAB>, you

will most likely get C:\AUTOEXEC.BAT If not, you can hit <TAB>

again to get the next matching filename. Note that you do have

to turn on both RC commands for this to work.

II.10 LSXCommandClock module

----------------------------

The LSXCommandClock module is a separate module from LSXCommand

that only has the clock and winamp features enabled. The RC

Commands are similar, but have a CommandClock instead of Command

prefix. The following is a list of the RC Commands supported

by LSXCommandClock (see section II.2 for details about these

Commands)

* CommandClockTextFontFace

* CommandClockTextColor

* CommandClockBorderColor

* CommandClockBackground

* CommandClockX, LSXCommandClockY

* CommandClockWidth, LSXCommandClockHeight

* CommandClockBGColor

* CommandClockTextSize

* CommandClockBorderSize

* CommandClockOffsetX, LSXCommandClockOffsetY

* CommandClockBevelBorder

* CommandClockNotAlwaysOnTop

* CommandClockNotMoveable

* CommandClockHiddenOnStart

* CommandClockNoCursorChange

* CommandClockSelectAllOnFocus

* CommandClockSelectAllOnMouseFocus

* CommandClockTransparentEditBox

* CommandClockScrollWinAmpTitle

* CommandClockHideOnUnfocus

* CommandClockString ****

* !ToggleCommandClock

* !FocusCommandClock

* !CommandClockShow

* !CommandClockHide

* !CommandClockMove

* !CommandClockToggleTimer

**** NOTE: CommandClockString is the same as the "CommandTime"

RC Command for LSXCommand (see section II.8 for details)

II.11 AlterScript module

------------------------

The AlterScript module is an alternative interpreter to Killarny's

script.dll. I was having problems getting his to work, so I wrote

my own... go figure. However, I'm sure the way he parses strings

and the way I do differ - this is no substitute!! There are many

differences, which are described below.

For instance, AlterScript does not interpret semi-colons that

represent pauses in Killarny's script.dll. Furthermore, every

command MUST be separated by a pipe character '|'. Everything

between pipes is a command.

AlterScript MUST be used with LSXCommand because it sends a

!Command !Bang command with the specified command. The actual

command sent (stuff between the pipes) should be *exactly* what you

would type into LSXCommand's text box. If you type it without

quotes into LSXCommand's text box, do the same between the pipes.

Same goes for if you do it with quotes.

Note that since I send the !Command !Bang command, you can use

aliases and even search engine commands.

III. Known Bugs / Limitations

=============================

III.1 Old history entries remain

--------------------------------

When you change the number of history entries LSXCommand of which

LSXCommand will keep track to a lower number, history entries that

filled slots above this number will remain in modules.ini. This

is a known bug - I'll fix it some day...

III.2 Quoted Names a Problem

----------------------------

Quoted names for search engines and aliases are a problem. Since

this would require re-writing a lot of list management code, I

decided to put it off until next revision. Either way, plans I

have for the next version of LSXCommand would require a massive

rewrite.

IV. Comments/Questions/Flames/Bug Reports

=========================================

All of these should be sent directly to me, visigoth. My e-mail

address is: gandhimail@worldnet.att.net

Seriously, though, I really would like to know if people are using

this thing. It'll help me determine whether it's worth continuing

the development of it.

V. Source Code

==============

Yes, source code is available. All you have to do is send me an

e-mail for it. My e-mail is gandhimail@worldnet.att.net

However, if you are going to edit the code, *please* read the

Source Code License below. There are certain restrictions.

VI. Source Code License

=======================

Article I. Sure, Have the Code!

-------------------------------

I don't want to stop progress on this module. So, I'm going to

let anyone who wants to edit the code, do so at his/her free will.

However, there are restrictions, as noted by the rest of the

license.

Article II. Redistribution

--------------------------

This file *must* be redistributed with the source code, with duly

noted changes to sections I, II, III, and IV. However, I request

that my name be left in Section I as the original author of the

module.

Article III. Leave Credit where It's Due!

-----------------------------------------

All I ask is that Section I still have my name in it as the

original author. Besides this file and the comments, there isn't

much to say that I did anything... :)

Article IV. Send Me Your Cool Stuff

-----------------------------------

I'd like to know about your ideas for LSXCommand! If you are

working on an idea, I would like to know what it is. I'm not like

Microsoft (ie. I'm going to steal your idea, throw my time at it,

and come out with a shoddier version first). I'd just like to

know what people are doing with my original code base. So, if you

do edit code for a purpose, please drop me a line as to what you

are doing.

Article V. Have Fun

-------------------

Remember, I'm not going to stop progress on this module, so go

ahead and do what you want to it. Just don't take credit for

what I've already done.


Untitled Document

Module Categories
Audio
Bangs
Clocks
Command
Desktop
Internet
Misc.
Popups
Productivity
Scripting
Shortcuts
Special Effects
System Monitors
Tasks
Trays
Virtual Windows
Wallpaper
Wharfs
Home


Litestep Modules Manual

This document contains the readme's for many of the common or popular modules for Litestep. These are mainly third party modules. Only the most recent version of the individual modules have been included.

Some of the modules are quite old and may or may not work with current versions of Litestep. The list of modules is categorized by module type. Click on the type to take to the particular list.

___________________________________________

Audio

* Geekamp - A bunch of bang commands to control winamp, easy to configure, great mod

* GrdAmp - This mod acts like a winamp, without starting up winamp, a ton of bang commands

* jAmpToo - Displays winamp or grdamp information like song title and time display

* LsAmp - Kinda like geekamp with graphics, tricky config

* LsPlaylist - A bunch of bang commands for controlling the winamp playlist

* LsSlider - A mod to create volume-type sliding controls, pretty neat

* Remote - Create bang commands for several different media-type players

Bangs

* SMbangs - A few bang commands to control the visibility of Sysmeter and L-ement

* BangPath - An old mod used to create custom evars

* Bang Exe - Runs bang commands on a command line prompt

* Various bangs - 3 bang commands for wallpapers and screensavers

* HatBangs - A variety of unrelated bang commands

* RabidModuleBangs - Create bang commands that allow actions based on loaded modules, tricky but cool

Clocks, Time, Calendars

* Chronos - One of the older clock mods, still a good one

* alsClock - Older wharf based analog clock

* Burning Clock - Analog and digital clock with burning fire, wharf and loadmodule

* Date & Time - Standalone clock, quite customizable

* Rainlendar - Pretty easy to configure calendar mod

* Rainminder - A mod that displays messages at desired times

* Timer - Execute commands after certain amount of elapsed time

* Alarm - Just like it sounds, displays messages as required

* Chimes - Plays specified WAV file at specified intervals

Command

* LSXCommand - A all-time favorite mod, command line control with a million options

Desktops

* ckHotspots - Simple hotspots module, easy config

* Gestures - Implements simple mouse stroke controlling system

* Hotspots - Create areas on your desktop that activate commands when the mouse enters

* jDesk - A replacement for desktop2, been around a while, still in use

* mDesktop - A new desktop2 replacement, supports loading png's for backgrounds

* Icon - An older mod for placing icons on your desktop, like explorer

* MetaDesk - A module that allows you to put 3D objects on your desktop, real buggy as I recall

* Min - Places an icon on your desktop when a window is minimized

* IconBox - A box full of icons; currently open tasks I imagine, but not sure

* ModuleBox - Creates a box which acts as a LiteStep module Loader/ unloader

Internet

* LsNetLoad - Displays the current network usage on the wharf, quite old

* LsDialer - This module lets you dial in and disconnect, puts an icon in your tray for control

* NetLoadModule - A module that will download any modules not present on your system

* Connected - Keeps track of your internet connection and executes commands

* LSMail - Perhaps the oldest third party mod, don't know if it still works

* LsTicker - A news ticker loadmodule

* LsNews - Another news ticker loadmodule, I gotta try these out someday

* LsDrinks - An older news ticker mod that displays news in a popup

* Mirc - Bang commands for remote controlling Mirc

* LSCount - Not sure if this is still active, but sends info to the net to help count LS users

Misc.

* LiteMAN - Adds DDE functionality to Litestep, good to have if you run NT4, Win2k, WinXP

* LsWeather - Oldest weather mod, still in use, can be tricky to configure

* Razrez - Bang commands to change your screen resolution, etc.

* Recycler - A desktop recycle bin mod, full and empty states visible, togge-able

* Rymshot - A new screenshot grabbing mod

* Weatherdesk - Slightly newer weather mod, lots of config options

* Syscolor - Control your system appearance colors, config via ini file, control via bang commands

* XProp - Puts a small window on your destop that displays a magnified view from below your mouse, very neat

* AppPath - This modules opens your file manager to the current application's installation folder

* AutoRecycle - A module to recycle litestep everytime you save your step.rc, simple config

* ByPassLoad - This module allows to bypass module loading at Litestep startup / recycle

* ckDialog - Yikes, how to describe this…ahhh…read the readme

* FnXL - Replace your window title bar text with custom text

* LsMousePosition - Display screen coordinates of your mouse pointer

* LsNotes - A simple notepad like module for Litestep, pretty old

* Switch - A modules for switching themes, old and no longer recommended

* Zoomer - A wharf module that zoom everything under your mouse cursor

* Incinerate - A recycle bin replacement that fits in a wharf

Popups

* Popup2 - A third party version based on popup2 that includes top-level dynamic folder capability

* MidPop - Older middle button activated popup modules, not really needed anymore

Productivity

* jKey - A replacement mod for hotkeys, tons of option, very powerful

* MultiKeys - Another replacement hotkey mod, looks pretty powerful, haven't tried it yet

* Find - A module that provides the "Find" functions available from explorer, bang commands only

* GeekPaster - Paste strings of text via bang commands

* Winctrl - A module that allows you to perform custom actions on the currently active window, lots of options

* ClearDoc - Very simple mod, does just what it says, one bang command

* LSClipboard - A clipboard for Litestep

Scripting

* Change - The original step editing mod, less powerful but easier to configure than textedit2

* Mzscript - Very powerful scripting mod, most popular script mod in use, can be tricky to configure

* Mzscript 8.6 - Same as above, with a few significant options added by Leaf

* Textedit2 - The most powerful step editing mod

* Bscript - Simple scripting mod, similar (vaguely) in syntax to mzscript

* LiteScript - Combination of scripting and active window manipulation

* SciScript - Fairly new, simple scripting mod, perhaps more to come?

Shortcuts

* EasyCuts - older mod, an alternative to the original shortcut.dll

* Label - more than just shortcuts, can display all sort of system info, ton of options

* Layercut - new shortcut mod with png alpha channel capability and more

* LsBox - Draggable boxes can contain shortcuts and modules, this mod does it all

* LsInkMenu - A module that will display a menu of .lnk files, quite effective, fairly popular as well

* LsQuickBox - This is a module which imitate the IE4 quick launch box via bmp's and bang commands

Special Effects

* grdMagick - This module provides effects such as color tinting, guassian blurs, and more

* LsDynamic - Create animation via timed movements and bang commands

* LsTransparent - Make most litestep modules transparent, fade effect too!

* Rainmation - Animation module for shortcuts, have used it in the past, very neat

System Load Monitors

* Rainmeter - Very cool system load meters and more, bit of work to configure this one

* Lslm - An older wharf based system load module, load it in a "dwarf" for a stand-alone version

* LiteInfo - A Wharf modules to display system info

Tasks

* Tasks - The million option task mod, a lot to configure

* TrayTasks - Displays task icons in your systray, super simple, old but still in use

* LsTaskMan - Older wharf mod that displays tasks as icons

Trays

* grdTray - Replacement mod to systray with icon hue effects added in

* sysTray - The original systray third party mod by Maduin, a landmark mod in its day

Virtual Windows Manager

* ckVWM - Adds wrapscreen, hide tasks, and other functions to sysVWM

* RabidVWM - A newer VWM mod with lots of options, I have used it, its quite good

* sysVWM - the original vwm loadmodule by Killarney, updated by others, still a standout mod

* bbVWM - A Blackbox style vwm, very very easy to set up, quite cool

Wallpaper

* LsGradWall - Create wallpaper effects via your step.rc, tricky configuration

* LsWallpaper - Configure your wallpapers via a wallpaper list and bang commands

* Lswchanger - Excellent wallpaper mod, easy config, supports several file types

* LitePaper - A simple wallpaper changer, works via bang commands

* wimacPaper - Real simple wallpaper changer, 1 bang command

Wharf

* Dwarf - Replacement mod for wharf, allows multiple wharfs, sizes etc.

* WharfX - A drop in replacement for wharf.dll, with quite a few extras, Very cool!

--------------------------------------------------------------

All readme's are unaltered

This page was compiled by Phar0e

Contact me at pvarcoe@leechprint.com


Litestep Modules Manual


mDesktop.dll

---------------------------------------------------------------------------------

mDesktop is a desktop module based on the desktop2 source code. Listed below

is the various fixes and enhancements. Most notable is the DesktopBackground

settings which will make the specified image the background image of the

desktop window. This is not the same as the Window's desktop image, in fact,

the Window's desktop image should be disabled if you use this feature. If you

are using a png-enabled version of LiteStep, then you are able to specify a

PNG for the background image. As of this release, only centering the image is

support (not stretching or tiling).

There is no readme in the zips, jsut a changes.txt.. all commands unless

noted otherwise are exactly the same as desktop2.

http://www.vinyards.net/mdesktop1001.zip

http://www.vinyards.net/mdesktop1001-src.zip

Changes from latest Desktop2:

- Added DesktopBackground settings center the supplied image within the

desktop window, image is centered, png images supported if you are using

a png-enabled version of litestep

(I haven't tested this, but anyone using a multiple monitor setup with the

desktop stretched across all windows should be able to specificy an image

large enough to stretch across all monitors seamlessly... YMMV...)

- Added !DesktopSetBackground... changes the background to the specified

image

- Fixed some processing in the *Desktop line parsing

- General Code formatting

- Added version info resource

------------------

from Message, to the LS Mailing List

2002.03.17

this readme included by rootrider (shellfront.org


MetaDesk.dll

---------------------------------------------------------------------------------

***********************************

* MetaDesk *

* by Visigoth *

* gandhimail@worldnet.att.net *

* ============== *

* Version: 1.1 *

* July 14, 1999 *

* ============== *

* http://home.att.net/~gandhimail *

***********************************

Table of Contents

=================

i Quick & Dirty Install

ii WARNING & DISCLAIMER

iii Change Log

I. About MetaDesk

II. How to use MetaDesk

II.1 MetaDesk Properties

II.2 RC Commands

II.3 !Bang Commands

II.4 Obtaining Metastream Objects

II.5 Recommended *Metastream RC Commands

III. Known Bugs / Limitations

IV. Comments / Questions / Flames / Bug Reports

V. Source Code

VI. Source Code License

i. Quick & Dirty Install

========================

Place metadesk.dll into your modules directory and add LoadModule

<module-dir>\metadesk.dll into your step.rc file.

There's more, however. To use this module, you will have to

download the Metastream Plug-In & ActiveX control from

http://www.metastream.com. Choose to download the installer and

run it. It's less than 800K I think, so it's not that big at all.

ii. WARNING & DISCLAIMER

========================

WARNING: Do NOT go overboard with this. Currently, because I am

so crappy at COM programming, this thing basically takes a

workaround approach and uses Internet Explorer to host the

Metastream ActiveX control. So, for now, that means loading

Internet Explorer into memory. This WILL slow down your startup

a lot unless you have something like a PII-300 / K6-300 or higher.

This is not to discourage the use of this module, but just to

discourage the over-use of it. Having more than 2 metastream

objects on the desktop is probably not the best idea at present,

and I don't see a reason to really have more than two anyway...

DISCLAIMER: Although I work for MetaCreations (the company who owns

the Metastream trademark and creators of the technology), the

company in no way endorses, supports, or guarantees that this

product works. This was created by me (Visigoth) as a project to

extend this technology beyond its original goals. Again,

MetaCreations has no official knowledge of this product and will

not support it. All questions and such should be directed toward

me. Contact information may be found in section IV.

iii. Change Log

===============

Version 1.1

-----------

Documentation Changes

`````````````````````

- Fixed "Source/Src" issue. The proper MetaDesk property is

Source.

Bug Fixes

`````````

- Hopefully fixed the "MetaDesk doesn't do anything" bug

by implementing the new features. See the Notes below

New Features

````````````

- Added following RC Commands:

* MetaDeskUseWinTempPath

* MetaDeskFilePath

Notes

`````

For those of you who have gotten MetaDesk to work, great. Just

turn on MetaDeskUseWinTempPath and it'll work just like it did

before. If it doesn't, just turn MetaDeskUseWinTempPath off and

see if that works. If not, then keep reading... For the many

of you who couldn't get it to work, try using the

MetaDeskFilePath RC Command like this: MetaDeskFilePath <path>

The path must exist. I haven't tried it with LFNs (Long

FileNames - ones with spaces), so try it with something simple

like c:\ and see if that works. If not, then something is still

fucked in MetaDesk land. I shall have to do some more debugging

if this doesn't work for all of you....

I. About MetaDesk

=================

MetaDesk is a module that enables you to put 3D objects directly on

your desktop in Litestep. These objects must be in Metastream

format - http://www.metastream.com The format is a breakthrough

in 3D modelling and enables people to "dial-down" the quality of a

3D model to suit the available performance on any machine. So,

even if you have an old Pentium 200, you should still be able to

use this module, though you'll probably have problems. (It *is*

ActiveX, you know...)

II. How to use MetaDesk

=======================

MetaDesk can be used as a decoration in any theme to provide an

animated 3D object on the desktop. It can also become functional

by setting certain properties - when the user double clicks, a

program or !Bang command may be run. If you have my LSXCommand

(version 1.7.1 or higher), MetaDesk will use the !Command !bang

command - so using aliases or search engines are also possible.

More about this is explained below.

MetaDesk step.rc commands are in the form of Maduin's DeskFolders

module:

*Metastream property(value) property(value) ....

All the properties and their meanings are explained below. To see

some examples of RC Commands, see section II.4 For more

information about Metastream and the way it works, please visit the

Metastream web site at http://www.metastream.com

II.1 MetaDesk Properties

------------------------

NOTE: The following are all the MetaDesk properties. I would

*strongly* recommend at least skimming through all of these.

Also, recommended *Metastream lines are in section II.4, so

start from those unless you're a real web developer that knows

about ActiveX Controls and such!

[BOOLEANS]

All the following are boolean properties. They can be set by

using the following:

TRUE: property(true) -or- property(1)

FALSE: property(false) -or- property(0)

AutoResolution

``````````````

Description: Turns on automatic adjustment for performance. The

technical side of it is that it dynamically changes the

resolution of the model based on frame rates. Turning this off

assumes you want full detail all the time.

Default: TRUE

RotationMode

````````````

Description: If set to true, this makes the model rotate *only*

when the user has the mouse over it.

Default: FALSE (always rotating)

AllowZoom

`````````

Description: If true, allows the user to zoom in on the model.

Default: TRUE

AllowPan

````````

Description: If true, allows the user to pan the view of the

model.

Default: TRUE

EnableMenu

``````````

Description: This enables the right-click (context) menu.

Default: FALSE (menu is off)

MouseRotation

`````````````

Description: Enables the user to rotate the model with the mouse.

Default: TRUE

MouseRes

````````

Description: Lets the user change the model's resolution by

dragging the mouse left & right with the right mouse button

held down.

Default: TRUE

BackFaceCulling

```````````````

Description: Turns on rendering of "back faces" If your model

is an "open" model, like a skull or a mask, instead of one where

you can't ever see the inside of it (like a solid sphere), turn

this on.

Default: FALSE

[COLORS]

The following are color properties available for MetaDesk. These

properties can be set like this:

property(R G B) - Note the spaces between R, G and B

R : 0 - 255 red color value

G : 0 - 255 green color value

B : 0 - 255 blue color value

BackgroundColor

```````````````

Description: Sets the background color behind the model.

Default: 0 0 0 (Black)

[INTEGERS]

The following properties are integer values. These properties

are set like this:

property(<integer>) - e.g. property(20)

RotationSpeed

`````````````

Description: Sets the rate at which the model rotates. The value

is the number of degrees the model rotates through every second.

If this value is negative, the model rotates counter-clockwise.

Default: 0

YawLimit

````````

Description: Sets the maximum number of degrees the model may

rotate through in each direction. This creates a "pendulum"

effect where the model rotates to one side, then goes back to the

other after a certain amount of degrees

Default: 0 (no limit)

AntiAlias

`````````

Description: Sets the level at which antialiasing should be done.

Higher values yeild better looking results, but it gets really

slow. A value of 4 seems to get good results.

Default: 0 (no antialiasing)

MouseAlign

``````````

Description: This sets the way in which the mouse interacts

with the model.

0 : No constraints in rotation

1 : Align mouse rotation to axes

2 : Align mouse rotation to platter axis only

Default: 0

Renderer

````````

Description: Sets the renderer that is used to render the

object.

1 : OpenGL (MUST have an OpenGL accelerator - Voodoo, TNT, etc)

2 : SreeD (MetaCreations renderer - *really* good for software)

3 : D3D (Bah - Direct3D, what else can you say?)

Default: SreeD

RenderingMode

`````````````

Description: Sets how the model should be rendered.

0 : Default Gouraud Shading

1 : Flat Shading

2 : Wireframe

Default: 0

[STRINGS]

The following properties are all strings. They can be set in

the following ways:

property(<string>) - e.g. property(c:\foo bar.baz)

property("<string>") - e.g. property("c:\foo bar.baz")

NOTE: Both are the same - the quotes don't matter

Source

``````

Description: Points to the model to render.

Default: "" (no source model)

Camera

``````

Description: This sets the position and orientation of the

camera initially. The easiest way to set this is to do the

following: Use the model without the camera property set;

rotate and zoom and pan to the place you want to look at the

model from initially; hold CTRL+ALT+SHIFT and click the right

mouse button. The proper camera coordinates have been copied

to your clipboard. Just paste the value as a property.

Default: "" (model sets initial camera coordinates)

BackgroundImage

```````````````

Description: Points to the background image to be used. NOTE:

the Metastream ActiveX control currently only supports JPEG

format images. Bitmaps and GIFs are not usable here.

Default: "" (no background - uses background color)

LinkURL

```````

Description: Command to launch when the user *DOUBLE* clicks

on the model.

Default: "" (launches nothing)

PlatterAxis

```````````

Description: Sets the platter axis. This value is stored like

this:

PlatterAxis(X Y Z)

where X, Y and Z are slope values along that axis. For instance,

PlatterAxis(0 1 0) sets the model to rotate about the Y

(vertical) axis. PlatterAxis(1 1 0) sets the model to rotate

about the line y=x. The values can be between 0 and 1.

Default: 0 1 0 (Y axis - vertical - rotation)

Locks

`````

Description: Sets the axes in which the model is not allowed to

move. This can be any combination of the letters X, Y and Z

(case does not matter). For instance, Locks(xy) stops the

model from rotating around the X or Y axis when the user attempts

to rotate the model with the mouse. If rotation speed and

platter axis were set to make the model rotate about one of these

axes, that would still occur.

Default: "" (no locks)

[NON-INTEGERS]

The following are non-integral (float) values. That just means

they can have decimals.

Scale2D

```````

Description: Scales the rendered image by a certain value. You

can shrink or magnify the image with this value. Note that this

isn't the same as zooming or paning - it's like resizing an image

in Photoshop.

Default: 0 (no scaling)

II.2 RC Commands

----------------

MetaDeskUseWinTempPath

``````````````````````

Description: Instructs MetaDesk to use Windows' temporary

path (the TEMP or TMP environment variables)

MetaDeskFilePath

````````````````

Description: Points to the directory in which MetaDesk will

store its files.

Example: c:\litestep

II.3 !Bang Commands

-------------------

!MetaDeskHide

`````````````

Description: Hides a particular MetaDesk object.

Example: !MetaDeskHide 2 ; Hides the second MetaDesk object

!MetaDeskHideAll

````````````````

Description: Hides all MetaDesk objects.

!MetaDeskToggle

```````````````

Description: Toggles the visibility of a particular MetaDesk

object. See !MetaDeskHide for syntax.

!MetaDeskShow

`````````````

Description: Shows a particular MetaDesk object. See

!MetaDeskHide for syntax.

!MetaDeskShowAll

````````````````

Description: Shows all MetaDesk objects.

II.4 Obtaining Metastream Objects

---------------------------------

Metastream is a 3D file format - just as DXF, 3DMF and LWO

(which are AutoDesk, 3DMF, and LightWave Object formats

respectively). There are several applications that can output

Metastream objects. Obviously, most are MetaCreations products,

but others exist. The following is a list of the applications I

know are able to output Metastream files. Note that MetaDesk

*only* accepts Metastream format files.

Please excuse the "commercial" type descriptions. I'm trying to

give people ideas about what these products can do with respect

to Metastream. Sorry if it sounds like I'm one of those Info-

mercial guys.

MetaCreations Infini-D 4.5 & higher

```````````````````````````````````

This was one of the first products to be able to output

Metastream objects. You can find it at:

http://www.metacreations.com/products/infinid

MetaCreations Ray Dream Studio / Ray Dream 3D

`````````````````````````````````````````````

Ray Dream Studio is a more industrial strength tool. Ray

Dream 3D is more for the casual user. Both can export

Metastream objects.

http://www.metacreations.com/products/rds

http://www.metacreations.com/products/rd3d

MetaCreations Bryce 4

`````````````````````

Bryce, IMO, is just a really cool tool. Plus, it can create

Metastream objects... You can find it here:

http://www.metacreations.com/products/bryce4

MetaCreations Poser 4

`````````````````````

With Poser 4, you can create humanoid shapes for your

Metastream objects.. Very cool.

http://www.metacreations.com/products/poser4

MetaCreations Canoma

````````````````````

Canoma enables you to create 3D objects out of photographs.

For instance, you could create a model of your home and have

MetaDesk link your rotating home to your homepage on the web!

http://www.metacreations.com/products/canoma

3D Studio MAX

`````````````

MetaCreations has created a *free* 3D Studio MAX exporter

plugin that enables you to export any 3D Studio object as a

Metastream object.

http://www.metacreations.com/products/max250

If you can't afford these products, there are a few galleries

on the Internet to get a few Metastream objects. However, many

are of little use on the desktop. I've provided a few for you

in a separate package with this module, so see if those make any

sense to use on your desktop. The package may be found at

http://home.att.net/~gandhimail under the Litestep/MetaDesk

sections.

There seem to be a few graphic artists on the Litestep mailing

list. True, they are mostly 2D graphic artists, but with some

luck, there probably are a few 3D artists out there. I hope they

see this as a good challenge to provide some really cool models

to use with MetaDesk. If you have a model idea, but not the

skills or money to make an object, ask on the list and see what

happens.

II.5 Recommended *Metastream RC Commands

----------------------------------------

The following are some standard commands that most people can

start from. Note that I didn't have enough space to put all of

a single command on one line, so I've separated them somewhat.

Top left corner of screen; 200 pixels wide & tall; launches

notepad; Always rotate @ 1 rotation / 3 seconds; Flat shading;

Rotate around vertical axis; The user can interact with the

model (rotate/move it, etc.); Right-click menu available;

Automatically adjust for performance - in that order

``````````````````````````````````````````````````````````````

*Metastream x(0) y(0) width(200) height(200)

source(c:\foo.mts) linkurl(notepad) rotationspeed(120)

rotationmode(0) platteraxis(0 1 0) mouseres(1)

mouseinteraction(1) enablemenu(1) autoresolution(1)

Same size & place; launches notepad; Rotate only when mouse is

over it @ same rate; wireframe; rotate back & forth 60 degrees

each way; rotate around Y axis; user can not interact;

antialiasing at level 4; background image

``````````````````````````````````````````````````````````````

*Metastream x(0) y(0) width(200) height(200)

source(c:\bar.mts) linkurl(notepad) rotationmode(1)

rotationspeed(120) yawlimit(60) platteraxis(0 1 0)

mouseinteraction(0) mouseres(0) antialias(4)

backgroundimage(c:\biz.jpg)

III. Known Bugs / Limitations

=============================

None that I know, but some will be bound to pop up...

IV. Comments/Questions/Flames/Bug Reports

=========================================

All of these should be sent directly to me, Visigoth. My e-mail

address is: gandhimail@worldnet.att.net

Seriously, though, I really would like to know if people are using

this thing. It'll help me determine whether it's worth continuing

the development of it.

V. Source Code

==============

Yes, source code is available. All you have to do is send me an

e-mail for it. My e-mail is gandhimail@worldnet.att.net

However, if you are going to edit the code, *please* read the

Source Code License below. There are certain restrictions.

VI. Source Code License

=======================

Article I. Sure, Have the Code!

-------------------------------

I don't want to stop progress on this module. So, I'm going to

let anyone who wants to edit the code, do so at his/her free will.

However, there are restrictions, as noted by the rest of the

license.

Article II. Redistribution

--------------------------

This file *must* be redistributed with the source code, with duly

noted changes to sections I, II, III, and IV. However, I request

that my name be left in Section I as the original author of the

module.

Article III. Leave Credit where It's Due!

-----------------------------------------

All I ask is that Section I still have my name in it as the

original author. Besides this file and the comments, there isn't

much to say that I did anything... :)

Article IV. Send Me Your Cool Stuff

-----------------------------------

I'd like to know about your ideas for MetaDesk! If you are

working on an idea, I would like to know what it is. I'm not like

Microsoft (ie. I'm going to steal your idea, throw my time at it,

and come out with a shoddier version first). I'd just like to

know what people are doing with my original code base. So, if you

do edit code for a purpose, please drop me a line as to what you

are doing.

Article V. Have Fun

-------------------

Remember, I'm not going to stop progress on this module, so go

ahead and do what you want to it. Just don't take credit for

what I've already done.


MidPop.dll

---------------------------------------------------------------------------------

MidPop README

Version 1.6 - March 17, 2000

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

What is it?

-----------

MidPop is a small module for Litestep which allows you to use your

middle mouse button to display the popup menu anywhere on the screen.

How do I use it?

----------------

1. Extract MidPop16.ZIP in your Litestep (e.g. C:\LITESTEP) directory.

2. Add this line in your STEP.RC:

loadModule C:\LITESTEP\MidPop.DLL

3. Recycle LS

Configuration

-------------

Note that these are all optional, but might be useful for fine tuning and

special cases.

First of all, you must add a new section called MidPop in MODULES.INI -

add this line:

[MidPop]

Below this line you'll add the configuration option(s). Available options

are :

- Delay=nnn

Default value : 175

Set the delay in milliseconds before MidPop decides you want to do

something else other than showing the popup. For example if you set

Delay=500, the popup will only be displayed if you press and release

the middle button within a half second time period. Normally you

would set it to how quickly you can click (i.e. press and release) the

button. This delay is useful if you also use the middle button for

scrolling page and prevent the popup from showing unintentionally when

releasing the button.

- Exclusive=[0|1]

Default value : 0

If set to 0, MidPop will let other programs see that you've clicked the

middle button, otherwise it won't. Set this to 1 if you use program such

as Pointix Scroll++ to provide scrolling function using the middle button.

Leave it to 0 otherwise.

The following options only apply to version 1.6:

First, a word about how MidPop handle exclusion list. On startup, MidPop will

try to read from the file MIDEXC.INI in Litestep directory. This file contains

the exclusion list and is organized in the following format. Note that

anything between < and > are values you must supply:

[<AppName1>]

TopWindowClass=<TopWindowClassName1>

TopWindowTitle=<TopWindowTitleName1>

WindowClass=<WindowClassName1>

[<AppName2>]

TopWindowClass=<TopWindowClassName2>

TopWindowTitle=<TopWindowTitleName2>

WindowClass=<WindowClassName2>

For example if you want to exclude Notepad add the following to

MIDEXC.INI and recycle LS:

[Notepad]

TopWindowClass=Notepad

TopWindowTitle=Untitled - Notepad

WindowClass=Edit

Seems difficult isn't it :-) Don't worry, most of the time you won't have

to type these in manually. In fact the values above is generated automagically

by MidPop, with a little help from you off course. Now to the option that makes

all this possible:

- Learn=[0|1|2]

Default value : 2

The Learn option will determine what actually happen if you click the

middle button. With Learn=0, MidPop will show the popup menu as usual. The

value 1 and 2 is helpful if you want to create an exclusion list. With

Learn=1, MidPop will always get a "snapshot" of the window currently under

the mouse pointer. With Learn=2, MidPop will show the popup menu as usual

BUT it can also save the "snapshot" if you hold the ALT+SHIFT buttons while

clicking the middle button. This "snapshot" is saved in the file

MIDSNAP.INI in Litestep directory. Every "snapshot" you take will be added

to this file but be advised that MidPop will recreate this file each time

it's restarted. The format of MIDSNAP.INI is exactly the same as MIDEXC.INI.

In fact, for first time creation you can just rename it to MIDEXC.INI,

recycle LS and you're done.

- Wildcard=^

Default value : ^

This option is useful for creating exclusion list for a window that change

its title dynamically. The simplest example is Notepad, the title consist of

the name of the document followed by the text "- Notepad". As you may've

guessed, this title information is stored in the "TopWindowTitle" keyword

in MIDEXC.INI. Using the above example, this value is "Untitled - Notepad".

This works fine if there's no document open in Notepad but, as soon as you

open, say, STEP.RC, the title will change to "Step.rc - Notepad", so the

exclusion no longer match, and the popup will be shown when you mid-click

on it. To take care of this, you must use a wildcard which defaults to

the caret (^) character and change MIDEXC.INI to

[Notepad]

TopWindowClass=Notepad

TopWindowTitle=^ - Notepad

WindowClass=Edit

This will tell MidPop to look for title that ENDS with " - Notepad". You can

use this wildcard as a prefix like above, as a suffix or both. To change this

wildcard character to another character e.g. asterisk, add the option

Wildcard=* in MODULES.INI

Example:

[MidPop]

Delay=200

Excusive=1

Learn=1

WildCard=~

More Info

---------

Here are some important points about MIDEXC.INI:

- Make sure no section has the same name (the value <AppName1> and <AppName2>

above)

- Not all three keywords (TopWindowClass, TopWindowTitle and WindowClass) are

required. In particular, WindowClass can sometimes be omitted. This will

lead to a more "generic" exclusion. For example, with Windows Explorer,

taking a snapshot of the left and right pane will produce results with

identical TopWindowClass and TopWindowTitle values but different WindowClass

value. By omitting WindowClass entirely you can create an exclusion for both

panes.

Notes

-----

I've only tested this on Win98 SE and Win2000 Pro with build 03-06-2000 of

Litestep. The popup used is LS default and also Re5ource's popup R8. Hope

it works on NT 4 too.

Thanks to all MidPop users for ideas, bug reports and encouragement. Special

thanks to Dan McMullen for help testing it.

Disclaimer

----------

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY

OF ANY KIND, EXPRESS OR IMPLIED yadda yadda yadda. In other

words, use at your own risk, I'm not responsible if it crash

or burn your system (this is not a coffee maker but who knows :-)

Contact

--------

Send comments, bug reports, ideas or just a plain "Hi" to

E-mail : illusion@cryogen.com (Budyanto Nurhalim / Spectra9)

ICQ UIN : 45687429

--------

Dedicated for 2M, the light of my life. Some dreams just never come true...


Min.dll

---------------------------------------------------------------------------------

///////////////////////////////

// Minimize to Desktop Icon

// By: MrJukes (Bret Anderson)

// Released: 4/4/99

///////////////////////////////

// BETA 6

// New in this version

1) Line up icons function

2) Got rid of the phantom icons

3) User definable starting position

4) User definable direction (horizontal/vertical)

// Settings in min.ini

// The format is 0x00BBGGRR

[min]

Vertical=0

StartX=10

StartY=10

BackgroundColor=0x00000000

TextColor=0x00FFFFFF

Left click and drag will drag the icon around.

Double click with the left will restore the window.

Right click will bring up the popup menu.

To load in your step.rc put this line AFTER loading desktop.dll:

LoadModule c:\litestep\min.dll

Have fun,

MrJukes


Mirc.dll

---------------------------------------------------------------------------------

mIRC Command (v1.2) by WhiteShadow (changty@muohio.edu) on 4-10-00

*******************************************************************

This is a small module that adds a single bang command !mirccommand

which sends a command to mIRC.

Installation:

1. Copy mirc.dll into your litestep folder

2. Add the line

LoadModule c:\litestep\mirc.dll

to your step.rc (with the appropriate drive letter and

path)

3. Make sure that you have DDE server enabled in mIRC. It is

found in Options->General->Servers

4. Add the line

mIRCDDEName <service_name>

to your step.rc if you want to use a service name other

than mIRC (the default value if the mIRCDDEName is

omitted).

Usage:

!mIRCCommand <mirc_command>

mIRC will execute whatever follows !mirccommand.

!mIRCChangeDDE <DDE name>

Changes the DDE name to DDE name. This is useful if

you run multiple instances of mIRC at once.

Examples:

1. !mirccommand hi everybody!

This will have you say "hi everybody!" in whatever

channel is on top

2. !mirccommand /me waves

This will have you do the /me action in whatever

channel is on top

3. !mircchangedde Clone | !mirccommand /msg #litestep poooooop!

This will set the dde name to Clone and have Clone say

poooooop! in #litestep.

History

4-10-00 v1.2

-Added !mircchangedde

4-2-00 v1.1

-Fixed closing of dde connection when module is unloaded.

12-11-99 v1.0

-Initial Release

Anyway, you could then bind any mIRC command to a hotkey or a shortcut.

Feel free to send me comments or bugs.

WhiteShadow


ModuleBox.dll

---------------------------------------------------------------------------------

===================================================

===================================================

== modulebox.dll - a simple Module Un/Loader ======

===================================================

===================================================

====== Written by: ================================

================== Chris Rempel (jugg) ============

===================================================

================== http://jugg.logicpd.com/ =======

===================================================

===================================================

= Version: 0.41 = Release Date: 00.05.03 ==========

===================================================

===================================================

-=ToC=-

I. Introduction

A} Overview

B} Usage

II. Installation

III. Information

A} Commands

B} Changes

C} Notes

IV. Disclaimer

=====================

== I. Introduction ==

=====================

===================================================

= A} Overview =

===============

Welcome, and thank you for deciding to try out this

simple LiteStep module Loader/ Unloader. Its full

useful functionality consists of loading and

unloading LiteStep modules by dragging and dropping

them on the "box" which this Module creates.

===================================================

= B} Usage =

============

To Load a module with ModuleBox, drag the module

(filename.dll) onto ModuleBox. To Unload a module

with ModuleBox, drag the module (filename.dll) onto

ModuleBox while holding down the SHIFT key on your

keyboard.

======================

== II. Installation ==

======================

===================================================

Extract "modulebox.dll" to your LiteStep directory

(c:\litestep\). Open up your step.rc (LiteStep

configuration file) and find the section where all

of your "LoadModule" lines are located. Add a new

line that looks like this:

LoadModule c:\litestep\modulebox.dll

Of course, adjust the path as necessary. Save your

step.rc and issue the LiteStep Recycle command

(!Recycle).

======================

== III. Information ==

======================

===================================================

= A} Commands =

===============

ModBoxX 0

- Sets the horizontal (x coordinate) value to

place the ModuleBox at.

- accepts any negative or positive integer.

- defaults to: 0

ModBoxY 0

- Sets the vertical (y coordinate) value to

place the ModuleBox at.

- accepts any negative or positive integer.

- defaults to: 0

ModBoxHeight 32

- Sets the vertical size (height) value.

- accepts any positive integer greater then 1.

- defaults to: 32

ModBoxWidth 32

- Sets the horizontal size (width) value.

- accepts any positive integer greater then 1.

- defaults to: 32

ModBoxBorderSize 2

- Sets the width (thickness) of the border that

is drawn around the ModuleBox.

- accepts any positive integer greater then 0 or

use 0 to disable the border.

- defaults to: 2

ModBoxBgImage ".none"

- Sets the background Image of the ModuleBox.

Use 0xFF00FF (RBG 255,0,255) for transparency

in the image.

- accepts any valid Bitmap file.

- defaults to: ".none"

ModBoxBgColor FFFFFF

- Sets the background color of the ModuleBox.

Use FF00FF to paint the desktop background on

the ModuleBox background (psuedo transparency).

- accepts any valid Color supported by LiteStep.

- defaults to: FFFFFF

ModBoxBorderColor 000000

- Sets the border color of the ModuleBox. (see

ModBoxBorderSize).

- accepts any valid Color supported by LiteStep.

- defaults to: 000000

ModBoxzOrder 1

- Sets the window to be "always on top" or

"always on bottom" or "floating".

- accepts 0, 1, 2

- 0 == "always on bottom"

NOTE: "0" is only available if using a

valid LiteStep Desktop Window.

- 1 == "floating"

- 2 == "always on top"

ModBoxHidden

- If set, ModuleBox will be hidden on start/

recycle of LiteStep (the shell).

- boolean value: true if set, otherwise false.

=====!Bang Commands==============================

=================================================

!ModBoxHide

- parameters: none

- Issuing this command will hide all ModBox.

!ModBoxMove

- parameters: x,y

'x' is any positive or negative integer

representing the horizontal (x coordinate)

value to position the tiles at.

'y' is any positive or negative integer

representing the vertical (y coordinate)

value to position the tiles at.

- Issuing this command will position ModuleBox

at x,y values passed, or if no values were

specified, it will position ModuleBox at

the current mouse coordinates.

!ModBoxShow

- parameters: none

- Issuing this command will show ModuleBox.

!ModBoxToggle

- parameters: none

- Issuing this command toggles the visibility

state of ModuleBox, by either hiding or

showing it, opposite of its current visible

state.

!ModBoxzOrder

- parameters: n

'n' is either 0, 1, or 2. (See command

"ModBoxzOrder" for explanation of values).

- Issuing this command sets the zOrder of

ModuleBox (ontop/floating/onbottom).

===================================================

= B} Changes =

==============

- 0.41 -

--------

! Fixed problem with !ModBoxzOrder

- 0.40 -

--------

+ Added this Readme File and Webpage

+ Added psuedo transparency if the BGColor is set

to FF00FF (Great Pink (tm)).

! Fixed zOrder functionality.

! Fixed ModuleBox from crashing when itself

(modulebox.dll) was dragged ontop itself to be

unloaded. It now unloads correctly.

^ Cleaned up some code.

- 0.30 -

--------

+ Initial release. Loading and Unloading of

LiteStep modules, with some basic configuration

options.

===================================================

= C} NOTES =

============

You must have a Valid Desktop Window to use the

"always on bottom" zOrder functionality. If not

you can only use "floating" and "always on top".

==================

= IV. Disclaimer =

==================

===================================================

Copyright (C) 1999, Chris Rempel

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY

OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT

LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NON-

INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES

OR OTHER LIABILITY, WHETHER IN AN ACTION OF

CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF

OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

OTHER DEALINGS IN THE SOFTWARE.


MultiKeys.dll

---------------------------------------------------------------------------------

multikeys - an advanced hotkeys module for LiteStep/PureLS
multikeys 3.1
December 22nd, 2001
- an advanced hotkeys module for LiteStep/PureLS
Written by qwilk (qwilk@desktopian.org)
description
multikeys is an advanced hotkeys module for LiteStep/PureLS. Its features include hotkey groups (you can have multiple functions assigned to the same hotkey depending on the currently selected group!), displaying of commands and errors, popup menus listing all available groups, hotkeys and commands, extensive configuration options with !Refresh support, and much more! It also supports the key configuration syntaxes of jugg's jKey and the standard LS hotkey module for true plug'n'play compatibility.
general information
I have included a sample configuration file (multikeys.rc, which can be #include'd into your step.rc), a background bitmap and an error sound (.wav) to get you going. I recommend trying this "demo" setup first to give you a hint of what is possible when using multikeys.

Since multikeys 3.1 makes use of some fairly new functionality in LSAPI you will need a LiteStep build dated February 6th, 2001 or later to get the most out of it. As for PureLS, you need a build dated March 27th, 2001 or later. [Please note that most features will still work fine with earlier releases] For LsBox support, you will need LsBox 2.75 or later.

And finally, quoting MrJukes: Have fun!

Today is yesterday's tomorrow.

qwilk

revision history
multikeys 3.1 (2001-12-22) / qwilk
  • Added LsBox support (mkLsBoxEnable /
    !mkLsBoxHook), which enables dragging, alpha transparency etc!
    •

    multikeys 3.0 (2001-11-12) / qwilk

  • Added support for jKey and standard LS Hotkey syntax! (you can disable this by using mkNoLoadjKeys and mkNoLoadHotkeys, respectively)
  • Changed the name of the module to multikeys to reflect its support for multiple groups, multiple syntaxes, and multiple shells (LS/PureLS)
  • All bangs now begin with "!mk", all step.rc settings with "mk", and key definitions with "*mkey" (should be easier to remember <vbg>)
  • Default group is now set to "Default" if not defined, unless jKeys/Hotkeys are present, then "jKey"/"Hotkey" will be used instead (jKey has precedence if you use both...)
  • Added !mkPlayWav <.wav> (only 10 more lines of code - one less module to load!)
  • Added missing key: PrtScn
  • Fixed: Error color would sometimes be used for successful commands when toggling the window from hidden to shown
  • Fixed: Settings can now be in any file (PureLS fix, thanks jugg for the tip!)
  • Changed group switching bang (again...) to "!mkGroup <group>" (the logical choice)
  • New documentation (HTML)
  • Cleaned up the source code

    • jukeys 2.0q (2001-02-07) / qwilk

  • Added jukeysOffsetX <offset>, jukeysOffsetY <offset> (works the same way as in LSXCommand)
  • Added jukeysGroupShow, jukeysGroupX <offset>, jukeysGroupY <offset>
  • Removed jukeysNoTitle (replaced by the new Group commands)
  • Added jukeysCommandShow, jukeysCommandX <offset>, jukeysCommandY <offset>
  • Added jukeysCommandColor <color>, jukeysErrorColor <color>
  • Added jukeysMsgErrorCmd <message>, jukeysMsgErrorBang <message>
  • Added jukeysErrorSound <path\to\.wav>
  • Added jukeysMouseLeft <n>, jukeysMouseRight <n>, jukeysMouseMiddle <n>
  • Added a new "select group" popup menu for easy group switching
  • Added !jukeysPopup, !jukeysPopupGroups
  • Added !jukeysRepeat
  • Added !jukeysMove, !jukeysMove <x> <y>
  • Added !jukeysSetCommand <command> <args> and !jukeysSetError <message> as an interface to the "world outside" (other modules)... =)
  • Added missing key: Escape
  • Now repositions automatically on screen resolution change
  • Change: "!jkSwitchTo" is now "!jukeysSwitchTo" - just like all the other bangs
  • Change: A background bitmap now has precedence over background colour, like in all other LiteStep modules...
  • Fixed: Everything (?) is updated on !Refresh now
  • Fixed: Multi-modifier hotkeys wasn't displayed correctly in the popup menu
  • Fixed: jukeysFontFace wasn't working
  • Fixed: Switching to a non-existing group was possible
  • Fixed: Bang scripting (!execute [command1][command2]... ) now works
  • Included a background bitmap, an error sound and a jukeys.rc configuration file
  • Cleaned up the code, added more comments (source to be released soon!)

    • jukeys 1.1q (2001-01-22) / qwilk

  • Added jukeysNoTitle (-> current group name not displayed)
  • Added missing keys: Pause, Insert, Delete, Home, End, PageUp, PageDown, Tab, Backspace, Spacebar, Apps, Enter, Mul, Div, Add, Sub, Dec, Num0-Num9
  • !Refresh support (only hotkey definitions are refreshed for now)
  • Compiled with latest LSAPI; now uses LSExecuteEx instead

    • jukeys 1.0 (2000-09-26) / MrJukes

  • Original release
    • future releases?
  • Support for the extra keys on extended keyboards
  • [your wish goes here - send me your ideas! :D ]
            •
    initial setup

    How to load the module (example using an e-variable):
    ThemeDir $LitestepDir$themes\MyTheme\
    LoadModule "$ThemeDir$modules\multikeys\multikeys.dll"

    step.rc settings

    "Reference from" offset (same as the one used by LSXCommand):
    0 -> Left/Top (default), 1 -> Horizontal/Vertical Center, 2 -> Bottom/Right
    mkOffsetX 1
    mkOffsetY 2

    mkX 0 x position relative to offset (see above), supports negative values
    mkY -24 y position relative to offset (see above), supports negative values
    mkW 400 width
    mkH 24 height

    mkStartHidden duh!
    mkAlwaysOnTop ...

    mkBackBmp multikeys.bmp background bitmap, has precedence over...
    mkBackColor 091F35 background color
    If neither mkBackBmp nor mkBackColor is set, the multikeys window will be hidden automatically

    mkFontFace "Tahoma" font (used for group name, command, error display)
    mkFontSize 13 font size (...)
    mkFontColor 336699 font color for the group name display
    mkCommandColor 114477 font color for the command display
    mkErrorColor 5588BB font color for the error display

    mkDefaultGroup Default
    Default group, set by multikeys at startup. "Default" is used if not defined, unless jKeys/Hotkeys are present, then "jKey"/"Hotkey" will be used instead

    mkGroupShow display group name in the multikeys window
    mkGroupX 7 group name display x offset inside window
    mkGroupY 4 group name display y offset inside window
    mkCommandShow for command and error display, same as for group name display
    mkCommandX 61 ...
    mkCommandY 4 ...

    mkMsgErrorCmd "Error: Command failed" command error message
    mkMsgErrorBang "Error: !Bang failed" !bang error message
    mkErrorSound "$ThemeDir$sounds\error.wav" .wav file to play on command/!bang error

    Mouse click settings:
    0 = "hotkeys list" popup, 1 = "select group" popup,
    2 = repeat last command, 3 = switch to default group
    mkMouseLeft 1
    mkMouseRight 0
    mkMouseMiddle 3

    mkNoLoadjKeys disable loading of *jKey configuration lines
    mkNoLoadHotkeys disable loading of *Hotkey configuration lines

    mkLsBoxEnable enable LsBox support
    This is used with !mkLsBoxHook (see below). Please note that the module is not loaded/unloaded by the box, so hotkeys will still be available even if the box is closed! Btw, remember to check your offsets - I forgot to, and it took me quite a while to figure out why multikeys did not show up inside the box... <g>

    key definition

    *mkey Group Modifier(s) Key command arguments

    Group = The name of the group you want the hotkey to part of. If multiple words "use quotes".
    There is a global group named "All" that is always active, no matter what the current group is.
    Reserved groups: "jKey" and "Hotkey" (used by multikeys)

    Modifier(s) = Win, Ctrl, Shift, Alt
    Combinations can also be used -> Win+Ctrl, Win+Alt etc.
    (Please note that the unlikely modifier Win+Ctrl+Alt+Shift is reserved for internal use...)

    Key = A-Z, 0-9, F1-F12, Left (Arrow), Right (Arrow), Up (Arrow), Down (Arrow), PrtScn, Pause, Insert, Delete, Home, End, PageUp, PageDown, Tab, Backspace, Spacebar, Enter, Mul, Div, Add, Sub, Dec, Num0-Num9, Apps (Application key, the one next to Right Win Key), Escape

    command = .exe or !bang command you want executed
    arguments = ...

    ---------------- Key definition examples -------------------
    *mkey All Win F12 !Shutdown
    *mkey Default Win S notepad $ThemeDir$step.rc
    *mkey Links Win+Ctrl Num0 !execute [http://desktopian.org/]

    !bang commands

    !mkShow show the multikeys window
    !mkHide hide the multikeys window
    !mkToggle toggle the multikeys window shown/hidden
    !mkGroup groupname makes "groupname" the active group
    !mkPopup popup the "hotkeys list" menu at mouse pointer
    !mkPopupGroups popup the "select group" menu at the mouse pointer
    !mkRepeat repeat the last command
    !mkMove moves the multikeys window back to the position defined in step.rc
    !mkMove x y moves the multikeys window to position x,y
    !mkPlayWav file.wav plays "file.wav" using synchronous sound (-> lower risk of skipping)
    !mkLsBoxHook used to hook the multikeys window (GUI) to an LsBox
    (Syntax: *ModuleHook !mkLsBoxHook )

    The following two !bangs are used to interface with the "world outside"... =)
    For example, other modules (or scripts) could use multikeys to display error messages,
    or put the commands they execute in multikeys' repeat buffer / command display!

    !mkSetCommand command args sets the multikeys command buffer and command display text
    !mkSetError text sets the multikeys error display text, clears the command buffer

    ----------------- !bang command examples -----------------
    !mkGroup Default
    !mkSetCommand !execute [!CommandMove 0 -100][!mkShow]
    !mkSetError No way, José!


MzScript.dll

---------------------------------------------------------------------------------

============================== mzscript 0.8 ===============================

An advanced script module for LiteStep/PureLS

by Marcus Westerlund (maze)

===========================================================================

First, the usual disclamer:

Use at your own risk (shouldn't be any trouble though)

===========================================================================

History:

===========================================================================

version 0.8 (2001-09-24) / qwilk

- Now works with PureLS! (thanks to jugg)

- Added !Refresh support

- Added !Pause (courtesy of Maduin's pause.dll)

- Made changes to make mzscript compile with current LSAPI

- Cleaned up the source code

version 0.7.2 (2000-05-22) / maze

- Added internal vars mousex and mousey

- Fixed case sensitivity, is now not case sensitive (should fix new build problem)

version 0.7 (2000-05-19) / maze

- Added !scriptload

- Added !scriptremove

- Added !varMul

- Added !setlistsep

- Added internal variables to return system properties

version 0.6 (2000-03-07) / maze

- Added !varAdd

- Added support for saving variables

- Added !ifEval

- Added more syntax on if bangs

- Added support for custom rc-file

- Added list functionality

- Added var substitution

- Added goto,gotoif and label to script

- Added some minor things

version 0.5 (2000-02-24) / maze

- First version out

===========================================================================

Installation:

===========================================================================

----- How to load the module:

LoadModule c:\path_to_dll\mzscript.dll

----- However, using e-variables is highly recommended:

ThemeDir $LitestepDir$themes\MyTheme\

LoadModule "$ThemeDir$modules\mzscript\mzscript.dll"

(please note that the e-variable LiteStepDir is defined automatically by LiteStep!)

===========================================================================

Usage:

===========================================================================

----- step.rc -----

mzScriptFile filename

- Uses filename as scriptfile instead of step.rc (default step.rc)

mzBangChar |

- What char to use instead of ! for bang commands. This is useful

for nesting bangs. (defaults to |)

mzListSeparator :

- Char to separate parts of variables when they are used as lists (defaults to : )

mzAutosaveVars replace/save

- Automatically saves variables in the script file in use. "replace" means no new variables

will be added to the file, but the others will be replaced. "save" also adds variables not

present in the script file. (disabled by default)

----- bangs -----

----- Variable manipulation bangs:

!varSet name The string

or !varSet name "The string"

- Sets variable "name" to "The string"

!varRemove name

- Removes variable "name"

!varShow name

- Show context of "name"

!varRun name

- executes the contents of variable "name", can be a bang or a command

!varAdd name number

- Adds number to variable "name". A non valid number vill be the same as 0

!varMul name number

- Multiplies number with "name". A non valid number vill be the same as 0.

Number may be float but "name" is always integer.

!varSave name

- Saves the variable "name" to the script file.

!varReplace name

- Saves the variable "name" to the script file, but only if it already exists.

!varSaveAll replace/save

- Saves all variables to the script file, if replace is used then no new variable

entries will be added.

----- If bangs...

!ifExist name [command]

!ifNExist name [command]

- Executes [command] if variable exists (or not).

!ifEq name "string" [command]

!ifNEq name "string" [command]

- Executes [command] if variable is equal (or not) to string.

!ifEval ("hello" <= "wow") [command]

- Evaluates expression (quite useful with var substitutions)

Valid comparisons are:

"<" less than

"<=" less or equal to

">" greater than

"=>" greater or equal to

"=" equal to

"<>" not equal to

where [command] may be of the following syntaxes:

command arg

'command arg'

'command arg' else '|bang'

'|bang hello' '"c:\foo bar\command" world'

{command arg}

{command arg} else {bang arg}

The first string between the ' signs is executed if true, if false the second (if it exists).

Likewise, the first string between { and } is executed (a must with nested ifs) if true,

if false the second string (if it exists).

----- Other bangs...

!msgbox msg

- Displays msg in a message box.

!exec command

- Executes command, may be a bang or a program (useful when invoked from someware else,

var substitution takes place)

!setlistsep s

- Sets list separator character to s

!scriptload filename

- Loads script definition file from filename

!scriptremove bang_name_without_!

- Removes scriptbang bang_name_without_!

!pause [n]

- Pauses for n milliseconds (courtesy of Maduin's pause.dll)

----- scriptfile.rc -----

(defaults to step.rc)

*Script start command

- Executes command on startup

*Script bang !thebang

- Start of a bangscript that will connected to !thebang

*Script exec command

- Part of a bangscript that executes command when the bang is invoked

*Script exit

- Exits a bangscript

*Script label labelname

- Used with goto and gotoif

*Script goto labelname

- Jumps to label labelname in bangscript. If this label is not found then the script is aborted.

*Script gotoif ("string1" <> "string2") labelname

- Jumps to label labelname in script if evaluation of expression is true. If the label is not

found then the bangscript is aborted. See !ifEval for valid comparisons.

*Script ~bang

- Declares the end of a bangscript.

*Script var name string

or *Script var name "string"

- Sets variable name to "string".

----- Substitutions -----

(This feature was implemented in version 0.6)

Substitutions are made in bangs and in scripts.

%[var]

- is substituted with the contents of variable var.

%[var:]

- is substituted with the first part of variable var's contents

(before the first list separator).

%[var:_]

- is substituted with the second part of variable var's contents

(starting from the first list separator).

?["Questions" "subst on yes" "subst on no"]

- Pops up a message box with the message "Questions". If yes is clicked

it is substituted with "subst on yes", if no is clicked it is substituted

with "subst on no".

##### Examples:

Let's say variable hello is set to "c:\hi.txt:world.txt",

and that the separator is set to the default value of ":"

- notepad %[hello]

would execute as "notepad c:\hi.txt:world.txt"

- notepad %[hello:]

would execute as "notepad c"

- notepad %[hello:_]

would execute as "notepad \hi.txt:world.txt"

----- Internal variables -----

The internal variables are:

xresolution

yresolution

year

month

day

weekday

hour

minute

second

mousex

mousey

It should be quite obvious what they stand for. They are used as regular vars.

##### Example:

!msgbox %[hour]:%[minute]:%[second]

will show the current time in a message box.

Remember not to alter internal variables. It is possible, but you have to recycle

to get them to act as functions again.

===========================================================================

Examples:

===========================================================================

----- Simple -----

;Start conditions

*Script var vwm shown

*Script var bar shown

*Script start notepad

;First bangscript

*Script bang !togglebar

*Script exec !ifeq bar "shown" '|varset bar hidden' else '|varset bar shown'

*Script exec !toggleslider [1]

*Script exec !ToggleShortcutGroup 1

*Script exec !ToggleCommand

*Script exec !SystrayToggle

*Script exec !ifeq vwm "shown" |VWMRollup

*Script ~bang

;Second bangscript

*Script bang !togglevwm

*Script exec !ifeq vwm "shown" '|varset vwm hidden' else '|varset vwm shown'

*Script exec !ifeq bar "hidden" |varset vwm shown

*Script exec !ifneq bar "hidden" |VWMRollup

*Script exec !ifeq bar "hidden" |togglebar

*Script ~bang

----- Advanced -----

;Not to be changed by varsave ... using start and !varset instead of var

;Contains turing program, makes three ones and terminates on two states

*Script start !varset t_program "one:one::1:r:two:two::1:l:one:one:1:1:l:one:two:1:1::exit"

;Bang used by turing to shift tape

*Script bang !turing_left

*Script exec !varset t_left "%[t_right:]:%[t_left]"

*Script exec !varset t_right "%[t_right:_]"

*Script ~bang

;Bang used by turing to shift tape

*Script bang !turing_right

*Script exec !varset t_right "%[t_left:]:%[t_right]"

*Script exec !varset t_left "%[t_left:_]"

*Script ~bang

;A turing bang. Using t_program as turing program

*Script bang !turing

*Script exec !varset t_left ""

*Script exec !varset t_right ""

*Script exec !varset state "%[t_program:]"

*Script label start

*Script exec !varset prog "%[t_program:_]"

*Script label loop

*Script gotoif ("%[prog:]" <> "%[state]") skipp

*Script exec !varset tmp %[prog:_]

*Script gotoif ("%[tmp:]" <> "%[t_right:]") skipp

*Script exec !varset tmp %[tmp:_]

*Script exec !varset t_right "%[tmp:]:%[t_right:_]"

*Script exec !varset tmp %[tmp:_]

*Script exec !ifeval ("%[tmp:]" = "r") |turing_right

*Script exec !ifeval ("%[tmp:]" = "l") |turing_left

*Script exec !varset tmp %[tmp:_]

*Script exec !varset state %[tmp:]

*Script goto start

*Script label skipp

*Script exec !varset prog "%[prog:_]"

*Script exec !varset prog "%[prog:_]"

*Script exec !varset prog "%[prog:_]"

*Script exec !varset prog "%[prog:_]"

*Script exec !varset prog "%[prog:_]"

*Script gotoif ("%[prog]" <> "") loop

*Script exec !varremove tmp

*Script label loop2

*Script exec !turing_right

*Script gotoif ("%[t_left]" <> "") loop2

*Script exec !msgbox Result - %[t_right]

*Script ~bang

(...and this short example shows that there is no limitations to

what can be done with this script according to A. Turing)

===========================================================================

Some things:

===========================================================================

version 0.5 (maze)

I hope this will be of some use, I know it has been for me (that's why I wrote it).

I don't know if there will be more versions to come (is there demand?), but eventually

I may add sending keystrokes to windows. (Suggestions?)

version 0.6 (maze)

Oh well. I did make some additions. But now I will probably leave this module alone for

a while. But you are welcome to send me your suggestions and bug reports.

version 0.7 (maze)

Not much to say. I'm thinking of doing plugin support, but I dont know what that would be

good for. I may check out the case sensitivity problem some day.

version 0.8 (qwilk)

Well, what can I say? I am just proud to be part of the mzscript legacy! <vbg>

I hope you enjoy it, especially the users of PureLS who has been without this

awesome module for too long...

===========================================================================

Contact (authors in order of appearance):

===========================================================================

Marcus Westerlund (maze)

marcus@cs.umu.se

http://www.acc.umu.se/~macce

Karl-Henrik Henriksson (qwilk)

qwilk@desktopian.org

http://desktopian.org/


MzScript.dll 8.61

---------------------------------------------------------------------------------

============================ mzscript 0.8.6l ==============================

An advanced script module for LiteStep/PureLS

by Marcus Westerlund (maze)

updated by Karl-Henrik Henriksson (qwilk)

revised by Phil Stopford of leaf

===========================================================================

First, the usual disclamer:

Use at your own risk (shouldn't be any trouble though)

===========================================================================

History:

===========================================================================

mzscript 0.8.6l (2002-03-12) / Phil@leaf

- mzScript now internally supports two forms of encapsulators.

- Default and traditional is to use %[].

- Specifying mzScriptNewSyntax will activate the replacement %{} encapsulators.

mzscript 0.8.5l (2002-03-07) / Phil@leaf

- mzScript now internally rounds floats up or down as required.

- Done before addition/multiplication so be careful! (e.g. 4.2 + 4.5 becomes 4 + 5)

- Added a !VarInt function to force any variable to become integer.

mzscript 0.8l (2001-10-23) / Phil@leaf

- Project settings changed to produce a multithreaded DLL.

- Size of compiled DLL has been halved with this change.

- Compiled against most recent CVS of LiteStep 0.24.6.

version 0.8 (2001-09-24) / qwilk

- Now works with PureLS! (thanks to jugg)

- Added !Refresh support

- Added !Pause (courtesy of Maduin's pause.dll)

- Made changes to make mzscript compile with current LSAPI

- Cleaned up the source code

version 0.7.2 (2000-05-22) / maze

- Added internal vars mousex and mousey

- Fixed case sensitivity, is now not case sensitive (should fix new build problem)

version 0.7 (2000-05-19) / maze

- Added !scriptload

- Added !scriptremove

- Added !varMul

- Added !setlistsep

- Added internal variables to return system properties

version 0.6 (2000-03-07) / maze

- Added !varAdd

- Added support for saving variables

- Added !ifEval

- Added more syntax on if bangs

- Added support for custom rc-file

- Added list functionality

- Added var substitution

- Added goto,gotoif and label to script

- Added some minor things

version 0.5 (2000-02-24) / maze

- First version out

===========================================================================

Installation:

===========================================================================

----- How to load the module:

LoadModule c:\path_to_dll\mzscript.dll

----- However, using e-variables is highly recommended:

ThemeDir $LitestepDir$themes\MyTheme\

LoadModule "$ThemeDir$modules\mzscript\mzscript.dll" [threaded]

(please note that the e-variable LiteStepDir is defined automatically by LiteStep!)

[this parameter is optional, but may result in a performance increase - caution is advised though.]

===========================================================================

Usage:

===========================================================================

----- step.rc -----

mzScriptFile filename

- Uses filename as scriptfile instead of step.rc (default step.rc)

mzBangChar |

- What char to use instead of ! for bang commands. This is useful

for nesting bangs. (defaults to |)

mzListSeparator :

- Char to separate parts of variables when they are used as lists (defaults to : )

mzAutosaveVars replace/save

- Automatically saves variables in the script file in use. "replace" means no new variables

will be added to the file, but the others will be replaced. "save" also adds variables not

present in the script file. (disabled by default)

----- bangs -----

----- Variable manipulation bangs:

!varSet name The string

or !varSet name "The string"

- Sets variable "name" to "The string"

!varRemove name

- Removes variable "name"

!varShow name

- Show context of "name"

!varRun name

- executes the contents of variable "name", can be a bang or a command

!varAdd name number

- Adds number to variable "name". A non valid number vill be the same as 0

!varMul name number

- Multiplies number with "name". A non valid number vill be the same as 0.

Number may be float but "name" is always integer.

!varInt name

- Forces mzScript to convert the variable "name" to an integer value. Use on strings is

untested and not recommended.

!varSave name

- Saves the variable "name" to the script file.

!varReplace name

- Saves the variable "name" to the script file, but only if it already exists.

!varSaveAll replace/save

- Saves all variables to the script file, if replace is used then no new variable

entries will be added.

----- If bangs...

!ifExist name [command]

!ifNExist name [command]

- Executes [command] if variable exists (or not).

!ifEq name "string" [command]

!ifNEq name "string" [command]

- Executes [command] if variable is equal (or not) to string.

!ifEval ("hello" <= "wow") [command]

- Evaluates expression (quite useful with var substitutions)

Valid comparisons are:

"<" less than

"<=" less or equal to

">" greater than

"=>" greater or equal to

"=" equal to

"<>" not equal to

where [command] may be of the following syntaxes:

command arg

'command arg'

'command arg' else '|bang'

'|bang hello' '"c:\foo bar\command" world'

{command arg}

{command arg} else {bang arg}

The first string between the ' signs is executed if true, if false the second (if it exists).

Likewise, the first string between { and } is executed (a must with nested ifs) if true,

if false the second string (if it exists).

----- Other bangs...

!msgbox msg

- Displays msg in a message box.

!exec command

- Executes command, may be a bang or a program (useful when invoked from someware else,

var substitution takes place)

!setlistsep s

- Sets list separator character to s

!scriptload filename

- Loads script definition file from filename

!scriptremove bang_name_without_!

- Removes scriptbang bang_name_without_!

!pause [n]

- Pauses for n milliseconds (courtesy of Maduin's pause.dll)

----- scriptfile.rc -----

(defaults to step.rc)

*Script start command

- Executes command on startup

*Script bang !thebang

- Start of a bangscript that will connected to !thebang

*Script exec command

- Part of a bangscript that executes command when the bang is invoked

*Script exit

- Exits a bangscript

*Script label labelname

- Used with goto and gotoif

*Script goto labelname

- Jumps to label labelname in bangscript. If this label is not found then the script is aborted.

*Script gotoif ("string1" <> "string2") labelname

- Jumps to label labelname in script if evaluation of expression is true. If the label is not

found then the bangscript is aborted. See !ifEval for valid comparisons.

*Script ~bang

- Declares the end of a bangscript.

*Script var name string

or *Script var name "string"

- Sets variable name to "string".

----- Substitutions -----

(This feature was implemented in version 0.6)

Substitutions are made in bangs and in scripts.

%[var]

- is substituted with the contents of variable var.

%[var:]

- is substituted with the first part of variable var's contents

(before the first list separator).

%[var:_]

- is substituted with the second part of variable var's contents

(starting from the first list separator).

?["Questions" "subst on yes" "subst on no"]

- Pops up a message box with the message "Questions". If yes is clicked

it is substituted with "subst on yes", if no is clicked it is substituted

with "subst on no".

##### Examples:

Let's say variable hello is set to "c:\hi.txt:world.txt",

and that the separator is set to the default value of ":"

- notepad %[hello]

would execute as "notepad c:\hi.txt:world.txt"

- notepad %[hello:]

would execute as "notepad c"

- notepad %[hello:_]

would execute as "notepad \hi.txt:world.txt"

----- Internal variables -----

The internal variables are:

xresolution

yresolution

year

month

day

weekday

hour

minute

second

mousex

mousey

It should be quite obvious what they stand for. They are used as regular vars.

##### Example:

!msgbox %[hour]:%[minute]:%[second]

will show the current time in a message box.

Remember not to alter internal variables. It is possible, but you have to recycle

to get them to act as functions again.

===========================================================================

Examples:

===========================================================================

----- Simple -----

;Start conditions

*Script var vwm shown

*Script var bar shown

*Script start notepad

;First bangscript

*Script bang !togglebar

*Script exec !ifeq bar "shown" '|varset bar hidden' else '|varset bar shown'

*Script exec !toggleslider [1]

*Script exec !ToggleShortcutGroup 1

*Script exec !ToggleCommand

*Script exec !SystrayToggle

*Script exec !ifeq vwm "shown" |VWMRollup

*Script ~bang

;Second bangscript

*Script bang !togglevwm

*Script exec !ifeq vwm "shown" '|varset vwm hidden' else '|varset vwm shown'

*Script exec !ifeq bar "hidden" |varset vwm shown

*Script exec !ifneq bar "hidden" |VWMRollup

*Script exec !ifeq bar "hidden" |togglebar

*Script ~bang

----- Advanced -----

;Not to be changed by varsave ... using start and !varset instead of var

;Contains turing program, makes three ones and terminates on two states

*Script start !varset t_program "one:one::1:r:two:two::1:l:one:one:1:1:l:one:two:1:1::exit"

;Bang used by turing to shift tape

*Script bang !turing_left

*Script exec !varset t_left "%[t_right:]:%[t_left]"

*Script exec !varset t_right "%[t_right:_]"

*Script ~bang

;Bang used by turing to shift tape

*Script bang !turing_right

*Script exec !varset t_right "%[t_left:]:%[t_right]"

*Script exec !varset t_left "%[t_left:_]"

*Script ~bang

;A turing bang. Using t_program as turing program

*Script bang !turing

*Script exec !varset t_left ""

*Script exec !varset t_right ""

*Script exec !varset state "%[t_program:]"

*Script label start

*Script exec !varset prog "%[t_program:_]"

*Script label loop

*Script gotoif ("%[prog:]" <> "%[state]") skipp

*Script exec !varset tmp %[prog:_]

*Script gotoif ("%[tmp:]" <> "%[t_right:]") skipp

*Script exec !varset tmp %[tmp:_]

*Script exec !varset t_right "%[tmp:]:%[t_right:_]"

*Script exec !varset tmp %[tmp:_]

*Script exec !ifeval ("%[tmp:]" = "r") |turing_right

*Script exec !ifeval ("%[tmp:]" = "l") |turing_left

*Script exec !varset tmp %[tmp:_]

*Script exec !varset state %[tmp:]

*Script goto start

*Script label skipp

*Script exec !varset prog "%[prog:_]"

*Script exec !varset prog "%[prog:_]"

*Script exec !varset prog "%[prog:_]"

*Script exec !varset prog "%[prog:_]"

*Script exec !varset prog "%[prog:_]"

*Script gotoif ("%[prog]" <> "") loop

*Script exec !varremove tmp

*Script label loop2

*Script exec !turing_right

*Script gotoif ("%[t_left]" <> "") loop2

*Script exec !msgbox Result - %[t_right]

*Script ~bang

(...and this short example shows that there is no limitations to

what can be done with this script according to A. Turing)

===========================================================================

Some things:

===========================================================================

version 0.5 (maze)

I hope this will be of some use, I know it has been for me (that's why I wrote it).

I don't know if there will be more versions to come (is there demand?), but eventually

I may add sending keystrokes to windows. (Suggestions?)

version 0.6 (maze)

Oh well. I did make some additions. But now I will probably leave this module alone for

a while. But you are welcome to send me your suggestions and bug reports.

version 0.7 (maze)

Not much to say. I'm thinking of doing plugin support, but I dont know what that would be

good for. I may check out the case sensitivity problem some day.

version 0.8 (qwilk)

Well, what can I say? I am just proud to be part of the mzscript legacy! <vbg>

I hope you enjoy it, especially the users of PureLS who has been without this

awesome module for too long...

version 0.8.5 (phil@leaf)

I'm glad to be able to contribute the rounding up/down and float to integer conversion.

For as long as I can remember, this module has been powering LDE and it's great to be able

to give something back.

===========================================================================

Contact (authors in order of appearance):

===========================================================================

Marcus Westerlund (maze)

marcus@cs.umu.se

http://www.acc.umu.se/~macce

Karl-Henrik Henriksson (qwilk)

qwilk@desktopian.org

http://desktopian.org/


NetLoadModule.dll

---------------------------------------------------------------------------------

______ __ ___ __ ___ ___ __ __

| _ \.-----. |_| | .-----.---.-.--| | Y |-----.--| |--.--. |-----.

|. | | -__| _|. | | _ | _ | _ |. | _ | _ | | | | -__|

|. | |_____|____|. |__|_____|___._|_____|. \_/ |_____|_____|_____|__|_____|

|: | | |: 1 | |: | |

|::.| | |::.. . | |::.|:. |

`--- ---' ver 1.0 `-------' `--- ---'

(aka Revenge of the Common Module Directory...)

Comments & Complaints to rabidcow@juno.com

This module is a replacement for LoadModule that will automatically download any

modules that are not present on the system. It is *not* a drop-in replacement

though, so read carefully!

(Erm... you do still need to load netloadmodule.dll with LoadModule, and probly

should load core modules that way too.)

----- Configuration

Required Commands:

*NetLoadModule <module name> [<optional url>]

This is where you specify which modules to load. The module name does not

contain a path or an extension. (ie, no ".dll") You must include the

version in the name of the module, for my evil purposes names should be

identical to the archives at ShellFront. (without the .zip of course)

Go to http://www.shellfront.org/modules-list.php, find the module you want,

copy its address and strip off all the junk.

For example, to get RabidVWM 1.0 alpha 5:

*NetLoadModule rabidvwm-1.0-alpha_5

The optional url specifies an internet address for a zip file containing this

module.

If you were to add this to the example given:

*NetLoadModule rabidvwm-1.0-alpha_5 http://rabidcow2.cjb.net/software/litestep/RabidVWM10a5.zip

*NetLoadModuleSite <url>

This specifies a location to download modules from if they don't have a

specific url, or if that one fails. Currently the only place I know of

that's organized the right way is http://www.shellfront.org/modules/

(Subject to change without notice! ;)

You may specify up to 4 download sites.

Example:

*NetLoadModuleSite http://www.shellfront.org/modules/

Optional Commands:

(I recommend you specify these only in personal.rc or equivalent, not in the

theme's step.rc.)

NetLoadModulePath <path>

Sets the path to store/load modules.

Default is $litestepdir$modules/

NetLoadModuleDocPath <path>

Sets the path to store documentation for modules.

Default is $litestepdir$modules/docs/

NetLoadModuleZipPath <path>

Sets the path to store the module zip files to.

Default is to not save them.

----- Operation

When LiteStep starts, NetLoadModule will read each *NetLoadModule line and check

if that module exists on the system or not. It will then make a list of modules

that need to be downloaded and ask the user for permission. Currently there is

no feedback during the download process, but any modules that fail to load will

be listed. Finally all the modules will be loaded in order. At this point

NetLoadModule can be safely unloaded since there is nothing else for it to do.

If all the modules are present then it will quietly load them without any fuss.

Note that modules will be copied to the module directory as they are specified

with .dll appended, so the example above would give you rabidvwm-1.0-alpha_5.dll

The same goes for any documentation, rabidvwm-1.0-alpha_5.txt etc. This ensures

that anything requiring a specific version of a module will get it.

----- History

01-13-2002: Version 1.0 created.

----- Credits and Stuff

ZIP files are decoded using the zlib compression library. http://www.zlib.org

Special thanks to rootrider and ShellFront for having a nice simple module list!


Popup2.dll

---------------------------------------------------------------------------------

- Modified [popup2 / Phil@leaf / 2001-11-29 (re-added due to absence from CVS)]

- Incorporated the SolSwords popup2 modification that allows folders to be inserted at root level. (popupmaker.cpp)

- Had to change the modified code due to the removal of the macros from the 0.24.6 source. Hopefully all should be working as expected.

--

This adds one small capability to popup2. You can now put lines in your step.rc such as

*Popup "Stuff" !new !PopupStuff !PopupFolder:$dirStuff$

or

*Popup !new !PopupStuff !PopupFolder:$dirStuff$

These lines should go outside any other popup definitions (i.e. not between a *Popup !new line and its corresponding *Popup ~new line) and should _not_ be paired with a "*Popup ~new" line of their own. Calling !PopupStuff, using the example above, will pop up the contents of the $dirStuff$ folder. Unfortunately you can only do this with !PopupFolder, not !DynamicFolder, !PopupMyComputer, or any other such command. Also you still cannot simply call !PopupFolder:C:\folder\blech\ from LSXCommand or a shortcut - you have to predefine your folder popups in your step.rc. This can work as a replacement for LSLnkMenu except that the menus have to be vertically-oriented and match the look of your popup.

This is modified from the 8/25/01 Shellfront source, so if you want to compile it yourself get the rest of the source from http://shellfront.org/lsdev/files/ls-0246-sf-20010825-src.zip and replace only PopupMaker.cpp with the included version. If you want to examine the changes (which you should, since I don't really know C++) the only method that's different is ParseStepRC().

Disclaimer: I don't actually know C++ so if my changes to the code blow up your computer it's your own problem. But they won't.

- Sol Swords

snol@flashmail.com


RabidModuleBangs.dll

---------------------------------------------------------------------------------

RabidModuleBangs 1.1 by RabidCow

Comments & complaints to rabidcow@juno.com

This module adds bang commands that allow actions based on loaded modules.

!ModuleExecIfLoaded <module> <command>

Execute <command> if a module matching <module> is found. Wildcards are allowed.

Ex: !ModuleExecIfLoaded *\lsxcommand.dll !FocusCommand

!ModuleExecIfNotLoaded <module> <command>

Execute <command> if no module matching <module> is found. Wildcards are allowed.

Ex: !ModuleExecIfNotLoaded *task* !alert "some weird action"

!ModuleUpdate <source>

Updates a running module given the source file name. This will not update a module

that isn't running, nor will it update a module that's newer than the one you're

trying to replace it with. The main purpose is to allow me to recompile a module

while it's running.

Ex: !moduleupdate C:\Documents and Settings\litestep\MYPROJECTS\RabidVWM\Debug\RabidVWM.dll

--

The source code has been included under the terms of the GPL.

(see http://www.gnu.org/licenses/gpl-faq.html#GPLModuleLicense)

If you'd like to use parts of this code under a different license, feel free to contact me


RabidVWM.dll

---------------------------------------------------------------------------------

| _ \---.-. |--.__|--| | Y | Y | Y |

|. l / _ | _ | | _ |. | |. | |. |

|. _ 1___._|_____|__|_____|. | |. / \ |. \_/ |

|: | | |: 1 |: |: | |

|::.|:. | v1.0 beta 3.1 \:.. ./|::.|:. |::.|:. |

`--- ---' `---' `--- ---'--- ---'

Comments & Complaints to rabidcow@juno.com

This module is designed to be as flexible as possible in function and appearance, while remaining fairly efficient.

This is a new VWM module, not based on sysvwm or VWM2. Thanks to those who where involved anywhere in the life of ckVWM, as I learned how to write a VWM by tinkering with that :)

Small pieces of code have been used from jugg's tasks and Maduin's label, thanks guys!

---- The Basics

VWMPos <x> <y>

VWMx <x>

VWMy <y>

These set the position of the main vwm window, you can specify them in one line with VWMPos or in two with VWMx and VWMy. Some possible coordinates are:

VWMPos 0 0 ; left edge of screen

VWMPos -0 0 ; right edge of screen (off screen)

VWMPos %50-20 0 ; 20 pixels left of center of screen

VWMPos %25 0 ; 25% across the screen

Percent based values are only allowed when you use the combined command, VWMPos

VWMSize <width> <height>

VWMWidth <width>

VWMHeight <height>

These set the size of the main vwm window, again you can set them in one line or two. All forms accepted for position can be used. If you load the VWM into a box or wharf, you can leave the size out and it will fill the area.

VWMDesks <x> <y>

VWMDesksX <x>

VWMDesksY <y>

Specifies the number of virtual desktops across and down. Only positive integers are allowed.

----- Colors and Bevels

Older color settings should also work, but I don't recommend them since they don't make any sense.

VWMWinColor <color> - miniwindow color

VWMWinBorderColor <color> - border color, if no bevel

VWMWinDarkColor <color> - shadow color, if bevel

VWMWinLightColor <color> - light color, if bevel

VWMWinBevel <amount> - bevel amount to autocalculate dark/light colors (default is 64)

VWMWinAlpha <amount> - alpha amount, if fake/real transparency

VWMTitleColor <color> - miniwindow titlebars, if drawn

VWMTitleBorderColor <color>

VWMTitleDarkColor <color>

VWMTitleLightColor <color>

VWMTitleBevel <amount>

Titles use the same alpha as the window. Note that titles drawn in magic pink will probably not work the way you expect. Don't do that.

VWMBackColor <color> - vwm background

VWMBackBorderColor <color>

VWMBackDarkColor <color>

VWMBackLightColor <color>

VWMBackBevel [<amount>] - enable bevel for background and optionally set amount

VWMBackAlpha <amount>

You must set VWMUseFakeTrans for background transparency to work.

VWMFlashColor <color> - color that miniwindows will flash in

VWMFlashBorderColor <color>

VWMFlashDarkColor <color>

VWMFlashLightColor <color>

VWMFlashBevel <amount>

VWMFlashAlpha <amount>

(VWMFlashTitleColor) - to be added?

VWMSelColor <color> - color of selected desktop

VWMSelBorderColor <color>

VWMSelDarkColor <color>

VWMSelLightColor <color>

VWMSelBevel [<amount>] - enable bevel for select and optionally set amount

VWMSelAlpha <amount>

<color> can be:

VWMWinColor :2 ; system active titlebar color (see table in "reference" section)

VWMWinColor :2*64 ; system active titlebar color, scaled by 64

VWMWinColor 00a000*-32 ; standard ls color, scaled by -32

(the scale values are the same as for ...Bevel)

Alpha amounts range from 0 to 255: 255 = completely opaque/solid, 0 = completely transparent. With real transparency, anything with an alpha of 0 will let mouse clicks through to whatever's underneath, use an alpha of 1 to prevent that.

VWMBevel

Turns on bevelling so that there's a raised edge around all of the miniwindows.

----- Bitmaps

All borders can be either a single number to indicate a fixed border on all sides, or four numbers: left, top, right, and bottom border sizes. Setting the border to 0 will effectively remove the border.

VWMBackBmp <bitmap>

VWMBackBorder <border size>

VWMBackTile

Instructs the vwm to use a bitmap for the background of the main window, and specifies which bitmap should be used. VWMBackTile makes the back bitmap tiled rather than stretched. Use this if you just want to specify one bitmap and tile it for every desktop, for example.

SNAPSHOT MODE: see VWMWinBmp, the same settings apply.

VWMDeskBorder

Defines a border area inside the VWM window where desktops are not drawn. The select bitmap can overlap this area.

VWMSelBmp <bitmap>

VWMSelBorder <border size>

VWMSelTile

Bitmap for selected desktop.

SNAPSHOT MODE: see VWMWinBmp, the same settings apply.

VWMSelExpand <border size>

The area that the desktop select bitmap is drawn in is the area for the selected desktop, plus this amount of padding on each side.

VWMWinBmp <bitmap>

VWMWinBorder <border size>

VWMWinTile

Set the bitmap for the miniwindows. VWMWinBorder specifies a border around the bitmap that does not get stretched. This basically works the same as skins for systray except in separate commands. VWMWinTile will tile anything that would have been stretched.

SNAPSHOT MODE: You can set VWMWinBMP to ".snapshot" and mini-windows will be given a shrunken snapshot of how the window looked last time it was on the screen. This takes a lot of processor time, so you can select a quality setting (eg ".snapshot 3", including quotes) as a number from 0-5, 0 being the default:

0 1 sample/pixel

1 5 samples in a +

2 5 samples in a X

3 9 samples in an octagon

4 8 samples, same as 3 but without center

5 17 samples in two octagons, for the truely insane

CPU usage will be higher with snapshot (and with more samples), but the snapshots aren't updated very often. One sample snapshot mode takes about the same CPU time as transparent bitmaps.

VWMWinBmp is also used to switch to bitmapped miniwindow mode. If no bitmap is specified, or it doesn't load, none of the other miniwindow bitmaps will work: VWMTitlebarBmp, VWMFlashBmp, VWMFlashTitleBmp. (Miniwindows are then drawn using solid colors.)

VWMTitlebarBmp <bitmap>

VWMTitlebarBorder <border size>

VWMTitlebarTile

Same as VWMWin... except for the titlebar of the miniwindows, if it gets drawn. No effect without VWMTitlebars and VWMWinBmp.

VWMFlashBmp <bitmap>

VWMFlashBorder <border size>

VWMFlashTile

Same as VWMWin... except for flashing miniwindows. No effect without VWMWinBmp.

VWMFlashTitleBmp <bitmap>

VWMFlashTitleBorder <border size>

VWMFlashTitleTile

Same as VWMTitlebar... except for flashing miniwindows.

VWMUseTransBlt

This enables magic pink transparency in bitmaps. This will take about 3 times the cpu usage of solid bitmaps, about the same as 1 sample snapshot mode.

----- Icons

VWMShowIcons

Enables drawing icons in the miniwindows.

VWMScaleIconToFit

Try to shrink the icons in miniwindows to fit inside them rather than letting them run over the edge. This has no effect if VWMShowIcons has not been specified.

VWMIconSize <size>

Icons are drawn this large, in pixels, square. This has no effect unless VWMShowIcons is specified. Defaults to 16.

VWMMinIconSize <size>

If an icon should scale to smaller than this, it is not drawn. This has no effect unless both VWMShowIcons and VWMScaleIconToFit are specified. Defaults to 4.

VWMIconBorder <border size>

Specifies the border around the window that the icon should not be draw on. All values are distances in pixels from the appropriate edge.

VWMForceIconBorderTop

If a titlebar is drawn on a miniwindow, the top border is usually replaced by the height of the titlebar. This will prevent this and ensure that the top border space set with VWMIconBorder will be used. This has no effect if VWMShowIcons and VWMTitlebars are not both enabled.

----- Titlebars

VWMTitlebars

Enables drawing titlebars on the miniwindows.

VWMTitleForTitle

Only draw titlebars on miniwindows corresponding to windows that have titlebars. Splash screens, for example, tend to not have titlebars. This has no effect if VWMTitlebars is not specified.

VWMTitlebarHeight <height>

Specifies the height of the titlebars drawn in the miniwindows in pixels. This has no effect if VWMTitlebars is not specified. Default is 3 pixels.

VWMTitlebarMod <mod>

Specifies the height of the titlebars as a fraction of the vwm desk size. Actual size is (minidesk height)/mod. This has no effect if VWMTitlebarHeight is specifically given.

----- VWM Behavior

VWMMouseLeft <action>

VWMMouseRight <action>

VWMMouseMiddle <action>

These select an action for each mouse button when you click on the vwm window. Valid actions are:

0 Do nothing

1 Switch desktops

2 Drag miniwindow (hold down CTRL to snap on drop)

The default for left is drag and right is switch desktops.

VWMAlwaysOnTop

Makes the vwm window float above mere mortal windows. This has no effect if the VWM is in the Wharf or a Box.

VWMFocusTop

Set the input focus to the topmost window on the desktop you're switching to.

VWMFocusLast

Set the input focus to whichever window last had input focus on the desktop you're switching to.

VWMNoBorder

Doesn't draw borders around desks or miniwindows. If VWMBevel is specified miniwindows still get a bevelled border.

VWMNoWindows

Doesn't draw any miniwindows.

VWMNoGathering

Doesn't gather all windows on exit. This may not work if you use VWMHideTaskOnSwitch.

VWMReturnToFirstScreen

Causes the VWM to switch to the top-left desk on exit.

VWMNoShow

VWMHidden

If either of these is present, the VWM windows starts hidden. Use !VWMShow to make it visible.

VWMNoSwitchOnFocus

Prevents the VWM from switching desktops when a LiteSteps gives a window on a different desk input focus. Switching to a window with ALT-TAB or any way but through LiteStep will not change desks.

VWMSwitchOnAnyFocus

Switches to the desk containing the window with input focus no matter how it was set. This will enable switching desks with ALT-TAB, but also sometimes when you close the last window on a desk or other times.

VWMNoWrap

Normally going right from the right-most desktop will take you to the left-most, etc. This setting will disable that.

VWMDeskSpacing <width> <height>

Maximized windows are usually sized to slightly larger than the visible area so that their borders are place offscreen. To prevent these borders from being drawn on adjacent desks, an amount of space is reserved between desks that never appears on screen. This option specifies the size of that space. Default is 16 12, other VWMs use 10 10, so use that is you're going to switch between them with windows still up.

This will also affect the space between desks in the VWM, but in scale with the screen resolution.

VWMInitialDesk <desk>

Specifies desk to start on. Note that any existing windows may not be in the correct desk if you use this.

VWMHideTaskOnSwitch

Hides tasks that aren't on the current desktop. This means they don't show up in tasks-type modules, or in the alt-tab list. If litestep crashes with this setting, you're in trouble. (During testing, I had music coming from an invisible and uncontrollable winamp.)

VWMSnapWindowOnDrag

Windows snap while they are being dragged, hold down ctrl to drag normally.

VWMHoverTime <millisec>

Specifies the amount of time that the mouse stays in one place before it is considered to be hovering, and the time after the mouse leaves the window that it is considered gone. Default is 500 milliseconds = 1/2 second.

VWMUseFakeTrans

This enables "fake" background transparency by drawing the background image in the transparent areas. Windows behind the VWM will be obscured.

VWMDetectTitleChange

Tells it to monitor the titles of windows, so miniwindows corresponding to new windows or windows whose titles have changed will flash until they're given attention. (ie, input focus)

VWMFlashOnTitleChange

Causes miniwindows to flash when their window's title changes. This has no effect without VWMDetectTitleChange. (This was the default in earlier versions.)

VWMNoShellFlash

Stop miniwindows from flashing when their window's titles do. (AIM for example.)

VWMConstantUpdate

This causes the VWM window to be redrawn constantly even if no windows have changed. This is intended to be used with .snapshot mode if you want the miniwindows to stay up to date better (off screen windows will still not be updated), but it does take a lot more CPU time. Without .snapshot windows this should have no visible effect.

----- !Bang Commands

Anywhere you see <deskno>, you can use a desk number, a desk x and y coordinate (as <deskx> <desky>), or left, right, up, or down (optionally followed by a number of desks to move in that direction). All desk numbers start at 1, 0 is the current desk (usually the same as just leaving it out). <deskno> can also be a windowspec enclosed in (parentheses) to refer to the desk containing that window.

To open Notepad on the desk containing WinAmp:

!VWMOpen (#c WinAmp*) notepad.exe

To move right 4 desks:

!VWMDesk right 4 /or/ !VWMDesk left -4

To gather all windows to desk 3 down a (vertical) 1x4 VWM:

!VWMGather 3 /or/

!VWMGather 1 3 /or/

!VWMMoveApp 3 #ac * /or/ (these are a bit less efficient)

!VWMMoveApp 1 3 #ac *

!VWMLeft/Right/Up/Down - for compatibility with lsdistro

!VWMDesk <deskno>

Switch to a specific desktop.

!VWMGather

!VWMGather <deskno>

Gathers all windows to the current or a specific desktop.

!VWMGatherLost

!VWMGatherLost <deskno>

Gathers all "lost" windows to the current or a specific desktop. Lost windows are windows that are currently outside of any desktop, normally they are left there until you try to switch to them (at which point that window is brought to the current desk).

!VWMOpen <deskno> <command> <parameters>

Switches to a specific desktop and opens or executes a command.

!VWMMoveApp <deskno>

!VWMMoveApp <deskno> <windowspec>

Move the foreground window to the specified window, or in the specified direction. If windowspec is given, moves the first matching window instead. See "special windows" for a description of windowspec, two more flags are accepted:

d find window on current desk only

p find top window in paint order rather than lowest hwnd

h find by window handle, in decimal

a find all matching windows

d1.1 only windows on desk 1,1; only numbers are valid

d4 only windows on desk 4

To gather all notepad windows to the current desk:

!VWMMoveApp 0 #ac Notepad

To move all notepad windows on desk 3,2 to a desk containing a mozilla window:

!VWMMoveApp (#c MozillaWindowClass) #ad3.2c Notepad

!VWMReset

Resets the VWM to the initial state specified in step.rc, also reload all bitmaps. This is the same as !refresh exept it only applies to the vwm.

!VWMMove <x> <y>

Sets the screen position of the VWM window. Same as VWMPos.

!VWMResize <width> <height>

Sets the size of the VWM window.

!VWMFlash <windowspec>

Flashes the miniwindow for windows that match the given windowspec. windowspec is the same as for !VWMMoveApp.

!VWMExec <command>

Executes a command after replacing variables, see the reference section below.

This allows you to read information out of the module. To find the class name for a window with a specific title, try:

!VWMExec !alert "^@wc(#t * - Notepad)^"

!VWMSetDesks <x> <y>

Change the number of desks available. This will not be remembered next time you start LiteStep. Relative values are allowed, start with + or -. 0 means no change.

!VWMSetDesks 0 +1 : add one row of desks

!VWMShow [toggle|off|no|false|hide]

Shows or hides the VWM window. If toggle is specified, the state is toggled, if off, no, false, or hide is specified, the window is hidden, if anything else or nothing is specified, the window is shown.

!VWMHide

Hides the VWM window.

!VWMToggleOnTop [toggle|on|yes|true]

This toggles between on top and on bottom. You can specify true, yes, on, or toggle (or anything else). true, yes, or on will set it to on top, toggle or nothing will toggle the state, and anything else will set it to on bottom.

!VWMToggle <setting> <state>

Toggle a setting on the fly, changes are NOT saved to the config file. state is the same as for !VWMToggleOnTop, setting can be any of:

Bevel, DetectTitleChange, FocusTop, FocusLast, ForceIconBorderTop, NoBorder,

NoGathering, NoSwitchOnFocus, NoWindows, NoWrap, ReturnToFirstScreen,

ScaleIconToFit, ShowIcons, SnapWindowOnDrag, Titlebars, TitleForTitle,

UseTransBlt, NoShellFlash, FlashOnTitleChange, ConstantUpdate

!VWMToggleHideTask [toggle|on|yes|true]

Changes the state of VWMHideTaskOnSwitch on the fly. Any parameters are treated the same as for !VWMToggleOnTop.

!VWMSetAction <action> <command>

Set an event triggerred action on the fly, changes are NOT saved to the config file. action can be any of the VWMOnXXX commands, without the leading "VWM". command is the same as for those, or nothing to clear it.

----- Special Windows

Any of these can have the window spec preceded by flags, starting with #, that will tell the vwm what to match against:

t match window title

c match window class

If you don't specify any flags, it will check both, but you can specify the flags to save a little processor time and prevent accidentally misidentified windows.

Use !VWMExec !alert "^@wc^" to find the window class of the active window, or !VWMExec !alert "^@wc(#t Window Title)^" for the window class of a window from a title.

Wildcards are allowed in all window specs.

*VWMIgnoreTitleChange <windowspec>

List windows that change their window titles often and it doesn't matter. No effect without VWMDetectTitleChange. One recommendation:

*VWMIgnoreTitleChange #c WinAmp*

*VWMFix <windowspec>

Windows that should be hidden rather than moved to different desktops. Not needed for Photoshop. I have to decide what to do on exit for these guys, probably show them and gather their parents to the current desktop. Note that the window spec identifies the PARENT of the window to be fixed.

*VWMSticky <windowspec>

Windows that should appear on all desktops and should not be drawn in the vwm.

*VWMStartWindowsOnDesktop <windowspec> <deskno>

Windows that should start on a specific desktop. Idea stolen from ckVWM, of course. All desk numbers start at 1. My favorite is:

*VWMStartWindowsOnDesktop #c AIM_IMessage (#c _Oscar_BuddyListWin)

(this starts all AIM message windows on whatever desk the buddy list is on)

----- Triggerred Actions

These can all use ^@variable^ as listed in the reference section below.

VWMOnInit <command>

VWMOnQuit <command>

Command is run after the VWM has initialized or before it quits. If the VWM is in lsbox mode, each of these will be called only once, and the VWM window may not be set up.

VWMOnMouseOver <command>

VWMOnMouseOut <command>

Runs command when mouse enters/leaves VWM window. Use VWMOnMouseOut !VWMHide for autohide. VWMOnMouseOut will be delayed by the hover time.

VWMOnHover <command>

VWMOnUnhover <command>

Runs commands when the mouse stops moving for a while over the VWM or starts moving again. VWMOnHover !VWMDesk ^@md^ will switch desks on hover.

VWMOnSwitchFrom <command>

VWMOnSwitchTo <command>

Runs commands before or after switching desktops. Combined with a background switcher, you can use something like VWMOnSwitchTo !SwitchBackground bitmap^@dc^.bmp to have a different background for each desk.

VWMOnNewWindow <command>

VWMOnRemoveWindow <command>

Runs when windows are added/removed. This may include windows that are not drawn in the VWM. I recommend against openning a new window in response to these, LiteStep windows should be ok.

VWMOnTitleChange <command>

Runs a command when a window title changes. VWMDetectTitleChange must be set for this to work.

VWMOnClickLeft <command>

VWMOnClickRight <command>

VWMOnClickMiddle <command>

Runs a command when the VWM is clicked. These actions happens before the VWMMouse... ones.

VWMOnMoveWindow <command>

VWMOnSizeWindow <command>

Runs a command when a window is moved or resized.

----- lsBox

RabidVWM can be loaded with lsbox, version 2.72 or newer, using *ModuleHook !VWMLoadBoxHook. User data strings are currently ignored.

RabidVWM will load rc commands from the box file, but they may not have any effect if they're also specified in step.rc. If the box comes up empty try !VWMMove 0 0 or something, to see if it's been given a position outside of the box.

VWMLoadInBox

Tells the vwm to wait for lsbox to load rather than creating its main window.

!VWMLoadBoxHook

Hook bang for lsbox. Do not call this manually.

----- Multi-Monitor

MonitorNames <list of monitor names>

This specifies the names of the monitors on your system. These are only used in step.rc and don't have anything to do with the names in control panel.

Monitor names are all listed on the same line, separated by spaces. The primary monitor is the first one, and the rest follow in order.

The special name "all" is reserved and refers to the total combined workspace of all monitors.

If you have three monitors and the second one (according to the order given in control panel) is the primary one,

MonitorNames pri one two

will name monitor 1 "one", monitor 2 "pri", and monitor 3 "two"

VWMOnMonitor <monitor name>

This specifies which monitor the VWM window will be drawn on. VWMPos will always specify a position on this monitor.

If no monitor name is specified, it will be on the primary monitor.

----- Reference

System colors (:###) are the same as for GetSysColor(), or:

:0 Scrollbar color

:1 Background color

:2 Active titlebar color

:3 Inactive titlebar color

:4 Menu color

:5 Window color

:6 Window "frame" color?

:7 Menu text color

:8 Window text color

:9 Active titlebar text color

:10 Active window border color

:11 Inactive window border color

:12 Background color of MDI window

:13 Selected item color

:14 Selected item text color

:15 Button/3D item color

:16 Button/3d item shadow color

:17 Disabled item text color

:18 Button/3d item text color

:19 Inactive titlebar text color

:20 Button/3d item highlight color

-- Windows 95 and newer --

:21 Button/3d item dark shadow color

:22 Button/3d item bright highlight color

:23 Tooltip text color

:24 Tooltip background color

:25 undefined

-- Windows 2000 and newer (not 98/ME?) --

:26 "hotlight"?

:27 Active titlebar gradient color

:28 Inactive titlebar gradient color

-- Windows XP and newer --

:29 "menuhilight"?

:30 "menubar"?

^@Variables^:

^@wd^ desk no of the active window (usually the current desk)

^@wh^ handle of active window

^@wt^ title of active window

^@wc^ class of active window

^@wx^ x position of active window in the vwm

^@wy^ y position of active window in the vwm

^@wxs^ x position of active window relative on screen

^@wys^ y position of active window relative on screen

^@wxv^ x position of active window on virtual screen

^@wyv^ y position of active window on virtual screen

^@wsx^ x size of active window in the vwm

^@wsy^ y size of active window in the vwm

^@wsxs^ x size of active window relative on screen

^@wsys^ y size of active window relative on screen

^@wsxv^ x size of active window on virtual screen (same as wsxs)

^@wsyv^ y size of active window on virtual screen (same as wsys)

Any of the ^@w...^ may also be specified as ^@w...(<windowspec>)^ to use the first window matching the given windowspec rather than the active window. For example, ^@wsxs(#c notepad)^ is the width of the first notepad window found in screen coordinates.

^@dx^ total number of desks across

^@dy^ total number of desks down

^@dc^ current desktop number

^@de^ number of first empty desk

^@md^ desk no that the mouse is over

^@mx^ cursor x coordinate relative to VWM window

^@my^ cursor y coordinate relative to VWM window

^@mxs^ cursor x coordinate relative to screen

^@mys^ cursor y coordinate relative to screen

^@mxv^ virtual screen x coordinate corresponding to the mouse position

^@myv^ virtual screen y coordinate corresponding to the mouse position

^@cc^ class of window relevant to command

^@ct^ title of window relevant to command

^@ch^ handle of window relevant to command

^@cd^ desk of window relevant to command

^@ka^ status of "ALT" key, either true or false

^@kc^ status of control key

^@ks^ status of shift key

^@kw^ status of window key

^@km^ status of context menu key

^@kal^ status of left alt key, c, s, or w can replace a

^@kar^ status of right alt key, c, s, or w can replace a

windowspec #flags

t match window title

c match window class

d find window on current desk only

d1.1 only windows on desk 1,1; only numbers are valid

d4 only windows on desk 4

p find top window in paint order rather than lowest hwnd #

h find by window handle, in decimal

a find all matching windows, or LAST if used in a ^@var^

----- Tricks

- To allow dragging the VWM, use lsbox.

- Switch on hover with VWMOnHover !VWMDesk ^@md^

- Miniwindow bitmaps can be very small when used with a border, I usually use 9x9 pixels.

- You can get the window class of the active window with !VWMExec !alert "^@wc^"

- Use VWMOnMouseOut !VWMHide for autohide. Make sure you have a way to show it again!

- To test a flash bitmap, try VWMOnHover !vwmflash #h ^@ch^

- Use ^@ch^ to tell whether the mouse is over a window. It will be 0 if it's not. Alternatively, test ^@ct^ against an empty string.

- tooltips, using label.dll:

labels vwmtiplabel

vwmtiplabelstarthidden

vwmtiplabelheight 16

; may want to dynamically size it with a script or something

vwmtiplabelwidth 128

vwmtiplabelonleftclick !execute [!vwmtiplabelhide][!vwmtiplabelpintodesktop]

vwmtiplabelonrightclick !execute [!vwmtiplabelhide][!vwmtiplabelpintodesktop]

vwmtiplabelonmouseleave !execute [!vwmtiplabelhide][!vwmtiplabelpintodesktop]

; set the label's appearance however you want

; set the title, move to cursor, pop it up over the vwm

VWMOnHover !execute [!vwmtiplabelsettext "^@ct^"][!vwmtiplabelmove ^@mxs^ ^@mys^][!vwmtiplabelshow][!vwmtipLabelAlwaysOnTop]

; hide it and reset z-order (need to keep changing z order to pop up over always-on-top vwm)

VWMOnUnhover !execute [!vwmtiplabelhide][!vwmtiplabelpintodesktop]

This does pop up the tooltip if you hover over empty space, you should be able to fix that with a script module. A better version might use mzscript, like so:

VWMOnHover !execute [!varset vwmtipx ^@mxs^][!varset vwmtipy ^@mys^][!varset vwmtiptitle "^@ct^"][!dovwmtip]

VWMOnUnhover !execute [!vwmtiplabelhide][!vwmtiplabelpintodesktop]

*script var vwmtiptitle ""

*script var vwmtipx 0

*script var vwmtipy 0

*script bang !dovwmtip

*script gotoif ("%[vwmtiptitle]" = "") nope

; split window titles that are "doc - app" to "doc "

*script exec !setlistsep -

*script exec !vwmtiplabelsettext "%[vwmtiptitle:]"

; don't pop up directly under cursor, that's unfriendly

*script exec !varadd vwmtipx 1

*script exec !vwmtiplabelmove %[vwmtipx] %[vwmtipy]

*script exec !vwmtiplabelshow

*script exec !vwmtiplabelalwaysontop

*script exec !setlistsep :

*script label nope

*script ~bang

----- Known bugs and notes

If a window somehow gets "lost": First try switching to that window, it should come back, then try !VWMGatherLost. If that doesn't work, use Alt-Tab to switch to that window, then press Alt-Space. If the window was maximized, select "Restore" and it will reappear, otherwise select "Move", press any arrow key on the keyboard, then move the mouse. Click to drop the window. (This trick should work with ANY vwm.)

If a *Fix window or toolbar gets lost... well you're screwed for now, deal. There's no easy way for me to distinguish between that and a window that shouldn't be shown at all. (depending on conditions...)

*VWMIgnoreTitleChange windows still trigger VWMOnTitleChange.

----- Changes

** beta 3.1 **

033102:

- fixed desktop bitmap memory leak

031302:

- tweaked defaults a bit

** beta 3 **

030702:

- removed imports from user32 that did not exist in win95 (incl multimon)

030602:

- fixed snapshot with slowly drawing windows and with dragging off the current desk

- fixed snapshots for overlapping windows and "half off the screen" windows

030202:

- fixed multimonitor so it will probably work on single monitor systems (but not win95)

- added non-functional VWMSwitchMonitor

011902:

- added MonitorNames and VWMOnMonitor

011802:

- fixed window flashing, still won't work in ls builds after 2001-11-19

because it's broken in the shell

011602:

- snapshots for windows are not taken while dragging in vwm

011102:

- fixed position of monitors to the left or above the primary monitor

- fixed popups losing focus on empty desks

** beta 2 **

010902:

- fixed problems restoring previously maximized windows from minimized state

- added snapshot mode for select bitmap

- removed requirement of VWMUseTransBlt for back alpha to work

You still need to set VWMUseFakeTrans.

010502:

- fixed .snapshot backs not showing up without background transparency

- fixed not-on-top lsbox problems. thanks blkhawk

This also affected task tiles in some circumstances.

** beta 1 **

122701:

- added VWMBackBevel and VWMSelBevel

- added .snapshot mode for background, also thanks to that code from label

121801:

- added new color settings, part 1

- added alpha settings, should work in all but win95

121501:

- tried to add multimonitor support, but I can't test it

- fake transparency is now flickerless thanks to code borrowed from Maduin's label

121201:

- tried to be a little more forceful at switching focus when changing desks

(this fixes problems I was having, esp with msvc)

- fixed wrong window gaining focus on window close (caused by changes on 11-16)

120701:

- removed OnScrollUp and OnScrollDown since they're pretty useless

The focus had to be on the VWM, and that changes when you switch desks.

- added VWMNoRealFlash and VWMFlashOnTitleChange

- added VWMConstantUpdate

- fixed problems with desks shifting around with FocusXXX & SwitchOnAnyFocus

- added window size and position ^@vars^

120601:

- hopefully fixed problems with refresh & lsbox

- fixed windows jumping across the screen while dragging off the edge

- added OnMoveWindow and OnSizeWindow

- added OnScrollUp and OnScrollDown

120501:

- put !left/right/up/down back in to work with lsdistro (grr)

- added !VWMToggleHideTask

- fixed gathering on quit with VWMHideTaskOnSwitch

120401:

- added proper window flashing, just like in the movies

(thanks Chaku, even if you're unaware that you've helped me:)

112801:

- fixed .snapshot with tiny windows

112101:

- improved state change detection

** alpha 6.1 **

- fixed black selection bug (thanks Aero)

- fixed minimized tasks restoring to the wrong place (thanks Aero)

- fixed windows disappearing when shown (thanks a bunch of people)

- fixed windows moving with !VWMDesk from hotkeys (thanks uGGi)

- fixed gathering of minimized windows (thanks Aero)

- fixed sticky windows only working if loaded after RabidVWM

** alpha 6 **

111801:

- added VWMUseFakeTrans

111701:

- added !VWMResize

- fixed problem with grdMagick/Transparent (works! yay!)

- added "fake" transparency

111601:

- improved responsiveness to new/removed windows

- added VWMSwitchOnAnyFocus

- removed FocusCenter

- added FocusTop

- added VWMHoverTime

- fixed a number of 1-byte buffer overrun bugs (lstrlen+1!)

111501:

- added ^@k..^ key state vars

- added !VWMSetAction (dynamically set event-based actions)

111401:

- stole icon grabbing code from tasks, since it works better

111201:

- finally got VWMHideTaskOnSwitch to work (grr)

- added VWMSnapWindowOnDrag

111101:

- made relative size/pos relative to box if in box

- fixed % based size/pos values

- added wharf support

111001:

- added onswitchfrom/to call in init/quit

- fixed changing desks with no windows (bug from fix yesterday)

- added VWMInitialDesk

- added ability to use a windowspec in *VWMStartWindowsOnDesktop

- added ability to specify a number after left/right/up/down in deskno

- removed !VWMleft/right/up/down; use !vwmdesk left/right/up/down instead

email me if this really bothers you & maybe i'll put it back in

- added autodetection of current desk after a litestep crash/quit

(should help prevent massive numbers of lost windows)

- added !VWMSetDesks (dynamically set # of desks)

- added !VWMToggle (dynamically change bool options)

- removed !VWMToggleWrapScreen

110901:

- fixed window move detection & !VWMGather

(thanks "u_u zZzZz")

** alpha 5 **

110801:

- added OnClicks

- added hung app detection, so ls won't freeze when something else does.

Doesn't seem to always work :(

(thanks blkhawk for bringing this to my attention, and help with testing)

110701:

- added VWMOnNewWindow, VWMOnRemoveWindow, VWMOnTitleChange

- added ^@de^

- added ^@c^ vars

110601:

- fixed OnHover & OnMouseOut

- added a bunch of ^@m...^ vars

- fixed state change detection. This means that cpu usage is greatly reduced

(not that it was all that high unless you're using snapshots), but snapshots

don't get updated as often. (only when window order or something changes)

- added flash to .snapshot mode

- fixed some bad memory accesses in drag window code

- fixed a resource leak with snapshot mode

110501:

- added lsbox support (for real! needs v 2.72) thanx blkhawk!

- added alternate config file option

- added triggered actions

110401:

- Fixed *Fix. Still can't drag *Fixed windows :6

- Fixed restore of minimized windows in LM_BRINGTOFRONT.

(thanks "u_u zZzZz" for finding this)

** alpha 4 **

110101:

- Added .snapshot mode.

- Made non-transparent default and added VWMUseTransBlt

- negative percents for position and size work (as 100-%)

- added !VWMMove

- fixed !VWMGatherLost for windows in negative space

- fixed !cmd desk references

- fixed lcd "theme"

- added !VWMFlash

- added #h flag to use hwnd in hex for window spec (! only)

- allow 0 as a valid desk number (current desk),

didn't work with !VWMMoveApp before

- added #a flag to repeat for all windows with window spec (! only)

- added (windowspec) syntax for desknos

- added #dx.y syntax for desk only flag in window spec

- tried to add lsbox compatibility, not tested (load as regular module)

- added !vwmexec and ^@commands^

- added VWMDeskSpacing

** alpha 3 **

Stuff.

-----

Have fun!

-josh

.--------.-----.-----.

| | _ | _ |__

|__|__|__|_____|_____|__|


Rainlendar.dll

---------------------------------------------------------------------------------

Rainlendar Manual

R A I N L E N D A R

Version 0.9

Info:
Rainlendar is a very customizable calendar that resides on your desktop and shows the days of the current month. The application is a Litestep plugin, but it can be used without the Litestep as well. You can use it even with the normal Explorer-shell if you like.

The calendar can be customized to fit your taste (and theme). You can use different fonts and colors, select the background image or just use copy of the current wallpaper. All customization can be made with a GUI, so no hassle with cryptic configuration-files or registry entries.
Install:
Installing for Litestep

To install just copy the Rainlendar.dll and the example folder (Default) to your Litestep directory (e.g. C:\Litestep\). You don't need the Rainlendar.exe if you are using Rainlendar as Litestep plugin. Also do not copy the included lsapi.dll over your original file as Litestep might not work after that (or at least it might become unstable). After copying, open your step.rc and add following lines:

LoadModule C:\Litestep\Rainlendar.dll
RainlendarPath C:\Litestep\Default\

... and recycle. Set the paths to point where you copied the files. RainlendarPath points to the folder where Rainlendar.ini-file is located. All files in the ini-file are also relative to that folder unless you are using absolute pathnames.

Installing for some other shell (like Explorer)

Copy all the stuff in the zip-file to some location (e.g. C:\Program files\Rainlendar\) and run Rainlendar.exe.

When Rainlendar is ran directly from the exe, it loads the configuration file from a folder called Default. You can also use different folder by giving its name as a command line argument for Rainlendar.exe. Probably the easiest way to to do that is to create a shortcut for the Rainlendar.exe and modify it. Add in the target-file after the Rainlendar.exe the path where the Rainlendar.ini is located (i.e. just the path, not the ini-file!). E.g.

"C:\Program files\Rainlendar\Rainlendar.exe" "C:\Program files\Rainlendar\Default\"

If you want Rainlendar to start every time Windows starts, move the shortcut to your startup-folder. To do that right-click on the Start-button and select Open. Go to Programs\Startup and move the shortcut of Rainlendar.exe there.

Uninstalling

To uninstall, just delete all the files you uncompressed from the zip-file (make sure that Rainlendar isn't running when doing that). If you copied the shortcut to your startup-folder, delete that also.
Config:
Configuration of the calendar is done from a GUI which you open from the popup-menu. The settings are saved in a Rainlendar.ini-file when you press the OK-button. All the images can have pink (#FF00FF) as transparency or use real alpha-map. The items (numbers) in the image can be placed either horizontally or vertically. The correct placement is determined from the dimensions of the image (i.e. whichever is bigger: height or width). The images must be cropped so that they don't hold any extra space and their width (or height) must be divisional with the number of items in the image. Only BMP-files are supported for now (PNG might also work on recent Litestep builds).

Please note that if you disable all items on the calendar the window won't have any size and it will be impossible to quit it. You'll have to kill the process in order to quit the program.

Here is some info what everything means:

General

Position
The horizontal and vertical position of the calendar-window relative to top left corner. The coordinates can also be negative in which case the position is relative to bottom right corner. The width and height of the window is calculated automatically from the background size and from the items inside the window.

The OnBottom makes the window to stay behind other windows when it's activated with mouse. Normal is a normal Z-positioning of the window and OnTop makes the calendar to stay on top of other windows.

If "Movable window" is selected, the calendar can be moved with the mouse. Please note that if the bacgroud has an alpha mask or the desktop is copied behind the calendar, the moving is really slow and can cause problems with some graphics cards. So, I'd suggest to use this feature only with non-alpha backgrounds.

The "Hide on mouse over" hides the calendar when the mouse is over the window. The calendar will reappear once the mouse is moved off the window. You can disable this feature temporarily by holding shift, alt of control button down while moving the mouse.

Background
The filename of the background picture to use behind the calendar. You can also select if you want the image to be tiled or stretched if it's too small for the calendar window. It's also possible to grab the desktop behind the calendar and use it as background.

Start hidden
If selected Rainlendar starts hidden. Be careful with this setting as the window can only be shown with !Bang-commands. This setting can be removed manually by removing StartHidden=1 line from the Rainlendar.ini file.

Start weekdays from Monday
If selected the first weekday in calendar is Monday. Otherwise it's Sunday.

Disable hotkeys
If selected the keyboard shortcuts are disabled.

Use window name
Names the window (as "Rainlendar") if enabled. BTW. the class name of the window is also "Rainlendar", if you need that to make Rainlendar sticky in virtual desktop managers.

Poll wallpaper changes
If Rainlendar doesn't automatically notice wallpaper changes (as it should), you can enable this feature. When enabled Rainlendar checks once per second if the name of the wallpaper has been changed and if it has, the calendar is automatically refreshed.

Days

Enable days
If selected the days will be drawn on the calendar.

Position & Size
Position and the size of the area where the days will be drawn. Tha area will be divided in 7 columns and 6 rows. The coordinates are relative to the top left corner of the calendar window.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the days are drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw the days. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the numbers. The bitmap can be composed of 10 or 32 numbers. If 10 numbers is used they must be defined from 0 to 9. With 32 numbers they are defined from 0 to 31 (Note tha the 0-number is never used, so it may hold anything). All the numbers must be same size.

Don't display event days
Skips the event days when drawing the days. This is useful for example when using different font to display the event days.

Don't display today's day
Skips the current day when drawing the days. This is useful for example when using different font to display the current day.

Today

Enable todays
If selected the today's number/image will be drawn on the calendar.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the today is drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw today's number. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the numbers. The bitmap can be composed of 1, 10 or 32 numbers. If the whole image is used to show today (e.g. it's a circle that will be drawn over the today's number), then select 1. If 10 numbers are used they must be defined from 0 to 9. With 32 numbers they are defined from 0 to 31 (Note tha the 0-number is never used, so it may hold anything). All the numbers must be same size.

Weekdays

Enable weekdays
If selected the weekdays will be drawn on the calendar. Note that the weekdays are placed automatically over the days, so you must set the Y-coordinate for the days more than 0 or you won't see the weekdays.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the weekdays are drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw the weekdays. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the weekdays. The bitmap must be composed of 7 items (the names of the days). The weekdays start always from Sunday, even if you have selected Start weekdays from Monday from the general-tab. All the weekdays must be same size.

Week Numbers

Enable week numbers
If selected the week numbers will be drawn on the calendar.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the today is drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw today's number. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the numbers. The bitmap can be composed of 10 or 54 numbers. If 10 numbers are used they must be defined from 0 to 9. With 54 numbers they are defined from 0 to 53 (Note tha the 0-number is never used, so it may hold anything). All the numbers must be same size.

Months

Enable month
If selected the current month will be drawn on the calendar.

Position
Position where the current month will be drawn. The position depends on the alignment, so for example if the align is set to center the X-coordinate defines the center position of the month. The coordinates are relative to the top left corner of the calendar window.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the month is drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw the month. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the months. The bitmap must be composed of 12 items (the names of the months). All the months must be same size.

Year

Enable year
If selected the current year will be drawn on the calendar.

Position
Position where the current year will be drawn. The position depends on the alignment, so for example if the align is set to center the X-coordinate defines the center position of the month. The coordinates are relative to the top left corner of the calendar window.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the year is drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw the year. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the year. The bitmap must be composed of 10 numbers from 0 to 9. All the numbers must be same size.

Event Days

Enable event days
If selected the event days will be drawn on the calendar.

Align
Alignment of the fonts or bitmaps when drawn on the window.

Rasterizer
The method how the event days are drawn on the calendar. This can be font or bitmap.

Font
If rasterizer is font then from here you can select the font that will be used to draw event days' numbers. Use the Select-button to select the font. Pressing the colored rectangle next to the Select-button opens a color-dialog, where you can select the color for the font.

Bitmap
If rasterizer is bitmap then from here you can select the bitmap for the numbers. The bitmap can be composed of 1, 10 or 32 numbers. If the whole image is used to show the event days, then select 1. If 10 numbers are used they must be defined from 0 to 9. With 32 numbers they are defined from 0 to 31 (Note tha the 0-number is never used, so it may hold anything). All the numbers must be same size.

Event
The event text can be shown in a tooltip when the mouse goes over an event day. Also a messagebox can be shown when Rainlendar is started on a day that has an event or when the day changes to a event day. Any command (or !Bang) can be executed on an event day (Leave the textbox empty if you don't want to execute anything). You can use %m to insert the event text in the command. You can also display the actual event texts in the calendar window.

Server

Enable server synconization
If selected the events are syncronized with the server. Please note that the client-server syncronization is highly experimental and complitely untested (well, it works on my system :-). So, unless you know a little about how client-server TCP connections work and how your network is set up, perhaps you should skip this feature. Of course nothing prevents you from trying, after all the worst thing that can happen is that your harddrive corrupts and you lose all your data (just kidding, that should almost never happen :-)

Ok, now that I've scared away most of the potential users, I can give some details about this feature.

Address
This is the address of the the computer that runs the RainlendarServer. You can use the IP number or the network name if the machine has one. Note that there is no public server that you can connect to (as far as I know), so you need to run the RainlendarServer on your own computer.

Port
The is the port that the RainlendarServer listens. You can use any port you wish.

ID
The ID is the identification for your events. The server will use the ID to store and retrieve the events. So, you can use the same server to store different events from clients by giving different IDs. Please note that there is no security checks or authentication of any kind, so basically anyone who can access to the server from network can read and modify your events. If you are running Linux version of the server, the ID is case sensitive.

Update
This defines how often the events are requested from the server. You can set this to zero to disable the automatic requests.

Request events on startup
If selected, the events are requested from the server when Rainlendar starts.

Sync Now
When clicked, all the events are sent immediately to the server and server's events are requested back. This is useful when testing the network connection. The status of the connection is displayed in the listbox above the button. The most important thing you should check is that the network thread completes successfully. If that doesn't happen it means that the thread hangs for some reason and the allocated resources are not free'ed. In that case I suggest that you write a comprehensive bug-report and send it to me.

It is also possible that the server locks up sometimes (especially if you click the Sync Now-button repeatedly). The server will in that state just inform that it's busy and cannot serve you at the moment. If that happens you should just wait a while as the server should reset itself in couple of minutes automatically (if it doesn't restart it and write a comprehensive bug-report :-).
Bangs:
The Rainlendar can be controlled also with Litestep !Bang-commands. You can also give the !bangs as command line arguments for Rainlendar.exe.

!RainlendarShow
Displays the Rainlendar-window.

!RainlendarHide
Hides the Rainlendar-window.

!RainlendarToggle
Toggles the Rainlendar-window.

!RainlendarConfig
Opens the config-dialog.

!RainlendarRefresh
Refreshes the Rainlendar-window.

!RainlendarQuit
Quits Rainlendar.

!RainlendarShowNext
Shows the next month.

!RainlendarShowPrev
Shows the previous month.

!RainlendarShowMonth [Month] [Year]
Shows the given month. If Year is not given the current year is used. If the month is also omitted then the current month is shown.

!RainlendarShowCurrent
Shows the today's month.
Legal:
This program is free software. Like Litestep, it is released under GNU General Public License as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Please note that this software is still in beta-state and is most likely to have defects and may not work as it should. Use it at your own risk. The author is not responsible for any damage, direct or indirect, that this software may cause.

This product includes software developed by Lee Patterson (http://ssobjects.sourceforge.net/).
Contact:
The latest version will be found from my homepage at:

http://www.iki.fi/~rainy/

You may also send comments and bug-reports to author:

rainy@iki.fi

Please put the name of the product (i.e. RAINLENDAR) in the subject-field of the mail. It may be useful if you write the version of the product also. If you are reporting a bug, please try to be as exact as possible when describing the symptoms. Also some details of your system (like OS version, Litestep build, and so on) might be helpful.
History:

2 MAR 2002 (Version 0.9 ß)

  • Added support for distribution of Rainlendar's events. Check the Server part in the documentation for more info.
  • The calendar is automatically refreshed when the screen resolution changes.
  • Multimonitor functions are only used if the the OS supports them.
  • Fixed a bug with stretched wallpapers having noise pixels in the calendar window.
  • Now it is possible to use Rainlendar.exe to send the !bangs to the calendar (Only Rainlendar's !bangs work).
  • The items can be aligned a bit more freely on the calendar. This might affect existing configs, so check the Align-widget if something is in wrong place.
  • The background image can now be automatically stretched or tiled if it's too small for the calendar.
  • Added option to check if the name of the wallpaper has been changed since last refresh. And if it has, the calendar is automatically refreshed.
  • Added an About-dialog.
  • Rainlendar supports now Litestep's variables
  • The calendar window can be moved with the mouse. Note that moving alphamasked calendar might cause problems with some gfx-cards.
  • Added support for OnTop, OnBottom and Normal positioning of the window.
  • Added support for transparency, which is based on window regions. Use magic pink color (FF00FF) in the background picture for transparent pixels (Note that you cannot use alphamask with the background).
  • Added an option to hide the window automatically when mouse is over the calendar (like in Rainmeter).

15 JAN 2002 (Version 0.8 ß)

  • Fixed a bug that prevented Rainlendar to find all its files if the command line argument was surrounded with quotes.
  • Changed the way the calendar is refreshed. Now it works even if there are other windows over it during the refreshing.
  • Now it is possible to define custom color/bitmap for different events.
  • Added possibility to show the event texts in the calendar window.
  • Fixed a memory leak during the refresh.
  • Added week numbers. They are calculated according to the ISO 8601-standard, so in countries that do not follow international standards (like in the U.S.) the week numbers might be incorrect.
  • The bitmap rasterized years are now placed in correct position.
  • By default Rainlendar.exe tries to load the configuration from a folder called Default. So, now it can be started without the need to give any arguments to the exe.
  • Removed the start delay option as it is quite unnecessary at the moment (let me know if someone wants it back :-).

26 DEC 2001 (Version 0.7 ß)

  • Now linked dynamically against MFC. You need might need to update your MFC42.DLL to run this.
  • Fixed small gfx-bugs in the dialogs.
  • The window name is now optional and can be disabled from the config-dialog.
  • The Quit button is grayed out if Rainlendar is ran as Litestep plug-in.
  • Added Wharf-interface so Rainlendar can be put inside a lsBox.

3 DEC 2000 (Version 0.6 ß)

  • Added new menu item to jump to the current month and a equivalent !bang for it (!RainlendarShowCurrent)
  • Added possibility disable hotkeys from the config.
  • Added hotkeys for changing the months. Note that key presses must be clean, i.e. modifiers (alt, shift, ...) cannot be used. This prevents accidental keypresses with vwm. Also note that that the calendar window must be active for hotkeys to work.
  • Rainlendar's window now has a name "Rainlendar"

2 OCT 2000 (Version 0.5 ß)

  • Fixed to work with the latest lsapi.dll's.
  • Rainlendar.exe now accepts quoted path as argument.
  • Fixed a bug that prevented the background image to display fully.

4 JULY 2000 (Version 0.4 ß)

  • Months can now cycled with cursor-keys.
  • Added few bangs: !RainlendarShow, !RainlendarHide, !RainlendarToggle, !RainlendarRefresh, !RainlendarConfig, !RainlendarQuit, !RainlendarShowNext, !RainlendarShowPrev, !RainlendarShowMonth [Month] [Year]
  • Added possibility to start the calendar hidden.
  • Changed the double buffering to full window version. This should reduce flickering.

13 MAY 2000 (Version 0.3 ß)

  • Changed the way how days are calculated.
  • Added possibility to display the current event in a MessageBox.
  • Added possibility execute a command (or !Bang) on a event-day. You can use %m for the event-message.
  • Added event days to display important dates. Doubleclick on a day to insert a text.
  • Added new tab in config-dialog to set the appearance of event days.
  • Alpha-Bitmaps can now have full path as well.
  • Displayed month can be selected form the context- menu.

6 APRIL 2000 (Version 0.2 ß)

  • Removed the Reload-menuitem.
  • RefreshDelay moved to the ini-file. There is no GUI for setting it, so you'll have to edit the ini-file by hand.
  • Month & weekday names are now in the ini-file for localization purposes.
  • Changed the way alpha-transparency is calculated.
  • Magic Pink works now for the background too.
  • Auto-refreshes when the day changes.

26 MARCH 2000 (Version 0.1 ß)

  • Initial Betarelease


Rainmation.dll

---------------------------------------------------------------------------------

Rainmation Manual

R A I N M A T I O N

Version 0.8

Info:
Rainmation is a Litestep plugin for putting small animations on the desktop. This is mostly an eyecandy with ability to act as simple shortcuts.

You can have any number of animations and animations may be any size. But be careful with large animations as the animation frames are stored in memory in bitmap format, so big animations will take quite much memory.

There are three different methods to use transparency in the animations: fake, real and alpha.

The way fake transparency works is that before the animation is started a copy of the background is taken and used as the animation background. Only the desktop image is grapped, not the windows over it. However the system isn't perfect and sometimes also the overlaying windows get to be part of the beckground. Fake- transparency uses pink-color as transparent color.

Real transparency uses window regions and doesn't have the limitations that the fake transparency has, but takes a lot of CPU-time.

Alpha-transparency is similar to fake-transparency, but uses separate alpha-mask to determine the amount of transparency the bitmaps have. Alpha-masks are gray-color bitmaps where black means full transparency and white full opaque. Alpha-transparency is pre-calculated on the frames so it takes the same amount of CPU-time as the fake-transparent frames (after the precalc). You can use Alpha-transparency only in the frames that need it. This way you can reduce the pre-calculation time. Alpha-transparent frames need a second bitmap with -Alpha-postfix in it's filename which defines the alpha-values for the pixels. The Alpha-bitmaps must be same size as the frame-bitmaps.

Animation can be disabled or removed from the popup-menu you'll get if you press right mouse button over the animation. You can also refresh the animation from there and open the config-dialog.
Install:
To install just copy the Rainmation.dll to your Litestep directory (eg. C:\Litestep\), copy the example animation folder to the same folder where you keep all the other Litestep images (eg. C:\Litestep\Images), edit your Step.rc and recycle. Check Step.rc and Config for more info.
Step.rc:
The Step.rc file needs some modifications as well. First of all you need to load the plugin by adding the following line to your step.rc:

LoadModule C:\LITESTEP\Rainmation.dll

Then you can define the animations with the these:

RAnimStartDelay [SECS]
Number of seconds that will be waited before the animations are started.

RAnimPixmapPath [PATH]
Path where the animations are. If missing Litestep's PixmapPath is used instead.

*RAnim [ANIMNAME]
The name of the animation. AnimName is actually the name of the folder where the pictures are. It's relative to Step.rc's PixmapPath or RAnimPixmapPath and the bitmaps inside the folder must have the same name as the folder with three digit running number (starting from 000) and .bmp at the end. All animation frames must be same size. Remember to use the '*'-char before thr RAnim-command!

Example additions to step.rc:

LoadModule C:\LITESTEP\Rainmation\Rainmation.dll
RAnimPixmapPath "C:\LITESTEP\Rainmation\"
RAnimStartDelay 5
*RAnim LSButton
Config:
Configuration of animations is done from a GUI which you open from the popup-menu. Note that some changes are set immediately and for some you need to refresh the animation. The settings are saved in a Rainmation.ini -file in the same folder where the animation pictures are. Here is some info what everything means:

Position
The horizontal and vertical position of the animations relative to top left corner. The XPOS can also be negative in which case the position is relative to right of the screen.

Delay
The amount of milliseconds between the frames. The timing uses normal Windows messaging system, so it's not very accurate. Also you might not be able to set the delay as low as you would like (there won't be any speedup in the animation playrate).

ToolTip
The string that will be shown as ToolTip when mouse stays over the animation.

Use real transparency
Uses real transparency instead of fake one for this animation. A word of warning should go here: using real transparency uses lot of CPU, so it might not be wise to use this for constantly looping animations. Also, alpha-transparency doesn't work with real transparency.

Always on top
Set this animation window to be always on top of other windows. This is only useful with real transparency.

No popup menu
Disable the right mouse button menu for this animation. You can use the !RAnimConfig-bang to reset this value.

Run animation only once
If set the animations are not looped but played only once. The stop frame will stay visible after the playing is complited.

Start animation disabled
The animation is disabled when loaded and won't start playing until it's enabled. The startframe will be shown even when this is selected.

Start animation hidden
The animation is hidden when loaded. You can use the !RAnimShow-bang to show the animation.

Execute
Command and it's arguments that will be executed when the animation is clicked with left mouse button. This can also be a !bang-command.

Wait click-animation before execution
If set, the click-animation will be played fully before the program is executed. Also note that if you don't define click-animation range the program won't be executed at all.

Mouse On Execute
Command and it's arguments that will be executed when the mouse moves over the animation. This can also be a !bang-command.

Mouse Off Execute
Command and it's arguments that will be executed when the mouse leaves the animation. This can also be a !bang-command.

Mouse over delay
Amount of milliseconds that the mouse must be over the animation before anything is executed.

Normal range
Sets the range of frames that will be played when nothing else is happening. The EndFrame can also be lower than StartFrame in which case the animation is played backwards.

Mouse on range
Sets the range of frames that will be played when mousepointer goes over the animation. These frames are played only once. The EndFrame can also be lower than StartFrame in which case the animation is played backwards.

Mouse off range
Sets the range of frames that will be played when mousepointer leaves the animation window. These frames are played only once. The EndFrame can also be lower than StartFrame in which case the animation is played backwards.

Mouse over range
Sets the range of frames that will be played when the mouse is over the animation window. These frames are looped while the mouse is over the window. The EndFrame can also be lower than StartFrame in which case the animation is played backwards.

Mouse click range
Sets the range of frames that will be played when left mouse button has been clicked on the animation window. These frames are played only once and after that the animation goes playing the normal frames (not mouse over frames even if the mouse pointer still is over the animation). The EndFrame can also be lower than StartFrame in which case the animation is played backwards.

Bangs:
Animations can be controlled with these !bang-commands:

!RAnimEnable [ANIMNAME]
Enables the animation. If ANIMNAME is not given all the animations are enabled. Everytime animation is enabled the playing starts form the startframe, so animations which are played only once will be played again with this bang.

!RAnimDisable [ANIMNAME]
Disables the animation. If ANIMNAME is not given all the animations are disabled.

!RAnimToggle [ANIMNAME]
Toggles the enabled/disabled state of the animation. If ANIMNAME is not given all the animations are toggled.

!RAnimQuit [ANIMNAME]
Quits the animation. If ANIMNAME is not given all the animations are quitted.

!RAnimRefresh [ANIMNAME]
Refreshes the animation. If ANIMNAME is not given all the animations are refreshed.

!RAnimConfig [ANIMNAME]
Opens the config-dialog. You must give the ANIMNAME-argument!

!RAnimPlayFrames [ANIMNAME] [STARTFRAME] [STOPFRAME]
Plays the given animation frames. After the frames are played the normal animations frames continue from beginning. If the animation is not looping the the last played frame (STOPFRAME) will stay visible. The STARTFRAME can be higher than STOPFRAME in which case the frames are played in reversed order. You must give all the arguments!

!RAnimShow [ANIMNAME]
Shows the animation. If ANIMNAME is not given all the animations are shown.

!RAnimHide [ANIMNAME]
Hides the animation. If ANIMNAME is not given all the animations are hidden. You should not that even if the animation is not visible it is running all the time. You need to use !RAnimDisable if you want also to stop the animation.

Legal:
This program is free software. Like Litestep, it is released under GNU General Public License as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Please note that this software is still in beta-state and is most likely to have defects and may not work as it should. Use it at your own risk. The author is not responsible for any damage, direct or indirect, that this software may cause.
Contact:
The latest version will be found from my homepage at:

http://www.iki.fi/~rainy

You may also send comments and bug-reports to author:

rainy@iki.fi

Please put the name of the product (i.e. RAINMATION) in the subject-field of the mail. It may be useful if you write the version of the product also.
Future:
Here is some features which may be included in the future:
  • Support for real animation formats (like AVI, AnimGIF, ...)
  • Merge it with shortcut.dll so you can have animated shortcuts
  • More control via Bangs
History:

26 DECEMBER 2001 (Version 0.8 ß)

  • Now linked dynamically against MFC. You need might need to update your MFC42.DLL to run this.
  • Fixed a bug with MouseOn and MouseOff execute config buttons.
  • The animations are automatically refreshed when the wallpaper is changed.
  • Changed the way refreshing copies the background desktop.
  • Added !RAnimShow and !RAnimHide bangs.
  • Added possibility to start animations hidden.
  • Added wharf-interface so the animations can be put in a lsBox.

9 FEBRUARY 2000 (Version 0.7 ß)

  • MouseOn and MouseOff can now execute commands and !bangs.
  • Redesigned the config-dialog to fit all the new stuff.
  • Added support for ToolTips.
  • Fixed a memory-leak when quitting (or recycling).

21 JANUARY 2000 (Version 0.6 ß)

  • Animations can be played only once.
  • Animations can now be started as disabled.
  • !RAnimEnable starts playing always from the normal starting frame.
  • Added !RAnimPlayFrames-bang which plays the given frames.
8 JANUARY 2000 (Version 0.5 ß)
  • Fixed couple of bugs related to animation playback.
  • Added support for Alpha-transparency. Now animations can have semitransparent frames.

25 DECEMBER 1999 (Version 0.4 ß) [Merry X-mas edition]

  • Changed bangs to take the name of tha anim as argument because the animations aren't numbered anymore.
  • Major modifications in configuration of the animations. This is _NOT_ anymore compatible with the old system.
  • Added !RAnimConfig -bang to popup the config-dialog.
  • Fixed a bug which caused gfx-errors if you had more than 4 animations running.
  • Windows aren't activated when opened.

24 OCTOBER 1999 (Version 0.3 ß)

  • Added bangs: !RAnimEnable, !RAnimDisable, !RAnimToggle, !RAnimQuit, !RAnimRefresh
  • Included LM_GETREVID-message handling for !About
  • Now uses static linking to MFC. A bit larger executable but removes the problems with MFC42.DLL
  • Optimized real transparency's window region switching.
  • RAnimPosY & RAnimPosX now accept negative coordinates as well.
  • RAnimExecute now uses LSExecute, so executing bangs should now work too.

8 OCTOBER 1999 (Version 0.2 ß)

  • Added simple shortcut support: RAnimWaitClickAnim[N] and RAnimExecute[N] [Program] [Arguments]
  • Added several commands to handle animation with various mouse events:
    • RAnimNormalRange[N] [StartFrame] [EndFrame]
    • RAnimMouseOnRange[N] [StartFrame] [EndFrame]
    • RAnimMouseOffRange[N] [StartFrame] [EndFrame]
    • RAnimMouseOverRange[N] [StartFrame] [EndFrame]
    • RAnimMouseClickRange[N] [StartFrame] [EndFrame]
  • Added RAnimRealTransparency which will set the anims to use regions as transparency.
  • Added RAnimAlwaysOnTop which will set the anims be always on top (useful only with real transparency).
  • Added RAnimNoMenu to disable the context menu.
  • Frames start from 000 (not from 001 as before!)
  • Window isn't activated when it's opened.
  • RAnimPixmapPath can be used to determine the animation directory instead of PixmapPath.

8 AUGUST 1999 (Version 0.1 ß)

  • Initial Betarelease


Rainmeter.dll

---------------------------------------------------------------------------------

Rainmeter Manual

R A I N M E T E R

Version 0.6

Info:
Rainmeter is a customizable resource meter that can display various performance data in different formats. Currently Rainmeter supports these measures:
  • CPU load
  • Allocated Memory
  • Network Traffic
  • NT performance data
  • Uptime
  • Free disk space

The data can be displayed in a histogram, a bar, bitmap frames or just plain numbers.

The application is a Litestep LoadModule plugin, but it can be used without the Litestep as well. You can use it even with the normal Explorer-shell if you like. Rainmeter also implements Litestep's wharf-interface so that it can be used with the lsbox-module. It might also work in a real wharf but this has not been tested as Rainmeter is not meant to be used in a wharf.

Rainmeter is developed and tested on Win2k, but it should work on Win9x also though Win9x is not officially supported.

And no, Rainmeter does not measure how much it rained last night (at least not yet ;-)

Install:
Installing for Litestep

To install just copy everything from the zip-file to a Rainmeter-subfolder in your Litestep-folder (i.e. wherever $litestepdir$ variable points to. Usually C:\Litestep\). You don't need the Rainmeter.exe if you are using Rainmeter as Litestep plugin, but there is no harm keeping that also in the folder. Also do not in under any circumstance replace your original lsapi.dll with the one that is in the Rainmeter's archive. The supplied lsapi.dll is only for the systems that doesn't have Litestep installed.

After copying, open your step.rc and add following line:

LoadModule $litestepdir$Rainmeter\Rainmeter.dll

... and recycle. The configuration of Rainmeter is done in a Rainmeter.ini file and not in the step.rc.

Installing for some other shell (e.g. Explorer)

Copy all the stuff in the zip-file to some location (e.g. C:\Program files\Rainmeter\). You also need the lsapi.dll somewhere in the path or in the same folder as Rainmeter.dll. You can give the Rainmeter.exe the ini-file as command line argument. The argument is used the same way as RainmeterIniFile step.rc command.
Config:
Configuration of the meters are done in a Rainmeter.ini-file. The Litestep's step.rc only has one optional entry, which can be used to define the configuration.

The ini-file is divided into three parts. All the general settings are put under [Rainmeter] section. After the general stuff comes the measures, which do the actual measuring. After the measures comes meters, which are visual representations of the measures. There can be many meters for one measure.

Here is some info what goes where:

Step.rc

RainmeterIniFile
This can be set to point to the Rainmeter.ini file if it is not placed in the default place (i.e. in a subfolder under the Rainmeter.dll's folder). You can also give just a path as the parameter. In this case the subfolders under the given path are checked for Rainmeter.ini-file and if such is found the subfolder is considered to be a config for Rainmeter. All the fond configs are listed in the Rainmeter's context menu, from where they can be changed on the fly.

The default behaviour (i.e. if RainmeterIniFile is not given) of Rainmeter is that is scans all the subfolders under the Rainmeter.dll's folder and checks for the configs. Note that this is different than in earlier versions where Rainmeter defaulted to the Rainmeter.ini in the Rainmeter.dll's folder.

General settings for Rainmeter

These must be put under [Rainmeter] section.

Background
Name of the background image. If this is omitted a copy of the desktop is taken and used as the background for the meters. Pink color (255, 0, 255) can be used as transparent color.

WindowX
X-position of the meter window. Negative values can be used too, in which case the position is relative to right edge of the screen. If Rainmeter is ran inside a lsbox the window position should be set to 0.

WindowY
Y-position of the meter window. Negative values can be used too, in which case the position is relative to bottom edge of the screen.

SavePosition
If set to 1, the position of the window is stored in the Rainmeter.ini file so that it'll be remembered when Rainmeter is executed the next time.

AlwaysOnTop
If set to 1, the window is always on top of other windows. If 0, the window stays back of the other windows.

Draggable
If set to 1, the window can be dragged around with the mouse. If 0, the window stationary.

Update
The update time for the meters. The value should be given in milliseconds. The default value is 1000 (i.e. one second).

HideOnMouseOver
If set to 1 the meter window will disappear if the mouse pointer is moved on it. The window will reappear when the mouse pointer is moved off the position where the window was. If shift, ctrl or alt is hold while moving the mouse, the window will not disappear (or reappear).

StartHidden
If set to 1, Rainmeter is hidden when started. You can use !RainmeterShow-bang to make it visible.

GatherStatistics
If set to 1, Rainmeter will gather statistics from the measured values. Currently the stats are gathered only by the net meters, which hold information of the total amount of downloaded and uploaded data. The statistics are shown in the about dialog.

LeftMouseDownAction
Command or a bang that will be executed when the left mouse button is pressed down over the Rainmeter's window. Note that this disables the dragging.

RightMouseDownAction
Command or a bang that will be executed when the right mouse button is pressed down over the Rainmeter's window.

LeftMouseUpAction
Command or a bang that will be executed when the left mouse button is released over the Rainmeter's window.

RightMouseUpAction
Command or a bang that will be executed when the right mouse button is released over the Rainmeter's window. Note that this disables the context menu.

General settings for the measures

Each measure needs to have a unique name, which defines a section in the ini-file for that measure. The name needs to be put inside []-characters. The meters use the section names to bind to the measures. Check the supplied ini-file for example.

Measure
This defines what is measured. The valid values are:

  • CPU - Measures CPU load. Gives quite random results on Win9x.
  • Memory - Measures overall memory utilization.
  • PhysicalMemory - Measures allocated physical memory.
  • SwapMemory - Measures allocated swap.
  • NetIn - Measures incoming network traffic.
  • NetOut - Measures outgoing network traffic.
  • FreeDiskSpace - Measures free diskspace.
  • PerfMon - Gets NT's performance data. Only works on NT (naturally).
  • Uptime - Shows how long your computer has been on. This works only in a STRING-meter.
  • Plugin - Measure is defined by an external plugin.
  • Registry - Measures registry values.

InvertMeasure
If set to 1, the measured value is inverted. E.g. you can measure allocated disk space instead of free space.

IfAboveAction
A bang or command that is executed when the measure goes above the value defined in IfAboveValue. The action is executed only when the measure exceeds the value, so the it needs to go below the defined value before the action is executed again.

IfAboveValue
The value for IfAboveAction.

IfBelowAction
A bang or command that is executed when the measure goes below the value defined in IfBelowValue. The action is executed only when the measure falls below the value, so the it needs to go above the defined value before the action is executed again.

IfBelowValue
The value for IfBelowAction.

Measure specific settings

Some of the measures can have special settings.

NetIn

NetInSpeed
The maximum speed of your network connection input. The value is given in bits per second. If this value is omitted or set to zero, the maximum value is determined from the input. Watch out for peaks.

NetOut

NetOutSpeed
The maximum speed of your network connection output. The value is given in bits per second. If this value is omitted or set to zero, the maximum value is determined from the input.

FreeDiskSpace

Drive
This is the drive which diskspace is measured. E.g. "C:\"

Plugin

Plugin
This defines the name of the plugin that handles the actual measuring.

Registry

RegKey
The name of the registry key.

RegValue
The name of the registry keys value. Only string and long values are supported.

MaxRegValue
The maximum value the measured registry value can have. Set this to 0 if unknown.

General settings for the meters

After the measures are defined comes the meter sections. Each meter needs to have an unique name, which is defined like with the measures.

MeasureName
The name of the measure that this meter displays.

X
The X-position of the meter inside the window.

Y
The Y-position of the meter inside the window.

W
The width of the meter. It is not necessary to define this if the width can be calculated from an image or if you are using a STRING meter. If you use the desktop as background for the Rainmeter you should always define the correct height and width for the meters or the window's dimensions might be calculated wrongly.

H
The height of the meter. This can also be left undefined under same conditions as W.

Meter
Type of the meter. The valid values are:

  • HISTOGRAM
  • STRING
  • BAR
  • BITMAP

Meter specific settings

The meters can have special settings.

Histogram

SecondaryMeasureName
The name of the secondary measure. This defines the measure for the secondary histogram that is drawn on the same meter. It is not necessary to define this if the other meter is not needed.

PrimaryColor
Color for the primary histogram. The colors are given in RGB format. Separate the color components with ",". E.g. 10,30,255

SecondaryColor
Color for the secondary histogram.

BothColor
Color that is used when the primary and secondary histograms are on top of eachother.

PrimaryImage
Name of the image that is used behind the secondary histogram. You can only use either colors or images but not both at the same time. So, if you define PrimaryImage you must also define SecondaryImage and BothImage (if you have a secondary measure in the same histogram).

SecondaryImage
Name of the image that is used behind the secondary histogram.

BothImage
Name of the image that is used when the primary and secondary histograms are on top of eachother.

String

FontColor
The color of the text.

Prefix
String that is displayed before the value.

Postfix
String that is displayed after the value.

FontFace
Name of the font

FontSize
Size of the font.

StringAlign
The alignment of the string. The valid values are: LEFT, CENTER and RIGHT.

StringStyle
Style of the string. The valid values are: NORMAL, BOLD, ITALIC and BOLDITALIC.

Scale
Scaling factor for the measured value. The measured value is divided with the scale value, so in order to get 1000 times smaller values just set the scale to 1000. If the scale value has a decimal point (e.g. 1000.0) the resulting measured value is displayed as floating point value with one decimal.

AutoScale
If set to 1, the value is scaled automatically. This setting overrides Scale. The value is automatically postfixed with T, G, M or k depending how much it was scaled.

Percentual
If set to 1, the value is displayed in percents.

Bar

BarColor
The color of the bar.

BarImage
The image that is used behind the bar. This can be used instead of the BarColor.

BarOrientation
The orientation of the bar. Valid values are:

  • HORIZONTAL
  • VERTICAL

Bitmap

BitmapImage
This is the name of the image that holds the image frames. The images can be laid horizontally or vertically in the bitmap. The orientation is determined automatically form the hieght or the width of the bitmap (whichever is larger). Also the size of one frame is calculated automatically so you need to crop the image so that there is no extra space around the frames.

BitmapFrames
The number of frames in the bitmap.
Plugins:

A Rainmeter plugin is a DLL that exports these functions:

UINT Initialize(HMODULE instance, LPCTSTR iniFile,
      LPCTSTR section, UINT id);
void Finalize(HMODULE instance, UINT id);
UINT Update(UINT id);

The Initialize function is called when the measure is initialized. The function returns the maximum value that can be measured. If the maximum value is unknown the function should return 0. The plugin can also have it's own settings which can be loaded from the iniFile and the section given as parameters to the initialize function. the id-parameter is used to identify individual measures if there are several of them using the same plugin.

Finalize is called when the measure is deleted. The Update is called once per update period (usually once per second). The function returns the measured value. Check the Rainmeter sources for example how to implement a plugin.

Currently there is one plugin distributed with the Rainmeter package. It is called PerfMon.dll and it can be used to measure NT's performance data. The plugin is the same as the PerfMon-measure that was build-in with the previous releases of Rainmeter. The settings for the plugins should be placed in the Plugin-measure's section in the ini-file.

PerfMon (Win2k and WinXP only!)
(use NT's performance monitor to find out the valid values for these settings)

PerfMonObject
The name of the performance object. E.g. Memory, Process, Processor, ...

PerfMonCounter
The name of the performance counter. E.g. "% Processor Time", "Disk Read Bytes/sec", ...

PerfMonInstance
The name of the instance. E.g. _Total. If the counter doesn't have any instances you can leave this empty.

PerfMonMaxValue
The maximum value for the measured counter. This needs to be set if you are displaying the measure in a histogram or use the InvertMeasure setting. If this value is omitted or set to zero, the maximum value is determined from the input.

PerfMonDifference
If set to 1, the difference between two updates is measured instead of the actual value. This is useful as many of the performance values are counters and you usually want to know how much the counter has increased since last update.
Bangs:
The Rainmeter can be controlled also with Litestep !Bang-commands.

!RainmeterShow
Displays the Rainmeter-window.

!RainmeterHide
Hides the Rainmeter-window.

!RainmeterRefresh
Reloads the Rainmeter.ini file.
Legal:
This program is free software. Like Litestep, it is released under GNU General Public License as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Please note that this software is still in beta-state and is most likely to have defects and may not work as it should. Use it at your own risk. The author is not responsible for any damage, direct or indirect, that this software may cause.
Contact:
The latest version will be found from my homepage at:

http://www.iki.fi/~rainy/

You may also send comments and bug-reports to author:

rainy@iki.fi

Please put the name of the product (i.e. Rainmeter) in the subject-field of the mail. It may be useful if you write the version of the product also. If you are reporting a bug, please try to be as exact as possible when describing the symptoms. Also some details of your system (like OS version, Litestep build, and so on) might be helpful.
Future:
Here is some features which may be included in the future:
  • More things to measure (any suggestions?)
  • Properly autoscaling histogram
  • GUI config (yeah right :-)
History:

15 JANUARY 2002 (Version 0.6 ß)

  • Fixed a bug that made the CPU-meter to go 100% after refreshing on Win9x.
  • It is not necessary to name the config file as "Rainmeter.ini", anything that ends with ".ini" will do. Note that this only applies if the name of the config file is defined explicitely.
  • If the previously used config cannot be found anymore, the first one is used instead.

26 DECEMBER 2001 (Version 0.5 ß)

  • IMPORTANT! The configuration file format has been changed and the old ini-files do not work anymore! Also some of the config keywords have been changed.
  • Structural changes to the code (now it is easier to maintain).
  • Added GatherStatistics, which is currently only supported by the NetIn/Out-measures.
  • Added Plugin measure for external counters. Check the source code for example plugin.
  • Added Registry measure, which can get data from a given registry key.
  • Added button up actions (RightMouseUpAction and LeftMouseUpAction) and renamed the down actions as RightMouseDownAction and LeftMouseDownAction
  • Added support for actions that are executed when a measure goes above/below certain value.
  • Removed the PerfMon measure because of incompatibilities with NT4. The PerfMon measure is now implemented as Rainmeter plugin.
  • Added Time-measure.
  • Colors can now be defined also as hex values in RGB-format (e.g. FontColor=FFCCDD).
  • The position of the window can be stored into the ini-file automatically.
  • Added support for multiple configurations. The configs can be changed from context menu.

1 SEPTEMBER 2001 (Version 0.4 ß)

  • If the maximum value for the meters (e.g. NetInSpeed) is not given it is determined automatically from the input.
  • All measures can be displayed as percentual strings.
  • Added uptime-measure. Usable in a string-meter only!
  • Added two new meters: Bar and Bitmap.
  • Added !RainmeterRefresh bang.
  • Added left and right mouse button actions.
  • Now it is possible to define the location (and the name) of Rainmeter.ini-file in the step.rc with RainmeterIniFile.
  • Added context menu, which can be used to refresh the window and quit the program if ran as standalone.
  • Added possibility to use images as the backgrounds for the histogram graphs.
  • Small adjustments so that Rainmeter can run in a lsbox as *WharfModule. Dunno if it also works in a real wharf.

19 AUGUST 2001 (Version 0.3 ß)

  • Added support for NT performance data.
  • Added support for measuring free disk space.
  • Added possibility to display the measure values as plain strings.
  • Added automatic scaling for the string values.
  • Added possibility to invert the values (e.g. measure allocated disk space instead of free space).
  • Improved mouse over hiding.
  • Now it is possible to start Rainmeter hidden.
  • Added support for Litestep's Revision ID.

19 JULY 2001 (Version 0.2 ß)

  • Rewrote (almost) everything.
  • The CPU & memory are now measured a bit different way.

22 FEBRUARY 2001 (Version 0.1 ß)

  • Initial beta release


Rainminder.dll

---------------------------------------------------------------------------------

Rainminder Manual

R A I N M I N D E R

Version 0.6 Beta

Info:
Rainminder is a Litestep plugin which can be used to display messages at desired times. It's useful to remind you about important dates or perhaps just to inform that your favorite TV-show is beginning.

Rainminder uses a very simple script-language for defining the moment when a certain message will be shown. The message can have different fonts and colors and can even display the contents of an ASCII-file. The message window grows/shrinks according to the amount of displayed text.

Rainminder also has a build-in fortunecookie program to display random fortunes/quotes/jokes. Note that to use this feature you need a fortune-file which can be found around the Web (i.e. from a linux distribution).

Rainminder can be used as wharf or as plugin module. When used as wharf it functions as lstime-compatible clock so you can easily replace your old clock with this one.
Install:
Currently there is no installer included, but you probably have already gotten used to it with other Litestep plugins.

To install just copy the Rainminder.dll to your Litestep directory (eg. C:\Litestep\), copy the images to the same folder where you keep all the other Litestep images (eg. C:\Litestep\Images), edit your Step.rc and create Rainminder.cfg. Check Step.rc and Usage for more info.
Usage:
Configuring Rainminder might be a bit tricky at least for people with no programming experience. But I guess Litestep users are above average PC-users so there shouldn't be any overwhelming problems :-) After all it's not that difficult. Check the Step.rc section for info about what is needed to change in there.

Rainminder uses a very simple script language to define events and results. The format is:

IF Evaluation functions THEN Action Functions ENDIF.

So every event must start with IF-word and end with ENDIF. Evaluation functions are evaluated once per second and if TRUE the action functions will be executed. You may use normal boolean operators (AND & OR) between the Evaluation functions. You may also group the functions with parenthesis.

Some of the Evaluation functions need also a compare value (those that doesn't return a boolean value). As a compare operator you may use these:

  • = (equal)
  • != (unequal)
  • > (greater)
  • < (less)
  • >= (greater or equal)
  • <= (less or equal)

Check the included configuration file (Rainminder.cfg) for examples.

Now few things you should be aware of when playing with this piece of software:

  • The parser doesn't notice all kind of syntax errors. It can handle some of the most basic ones, but doesn't care about things like correct number of parameters or equal amount of opening and closing parenthesis. So if the event is not working as it should (i.e. the message is not shown when it should) the reason might be a syntax error in configuration file which the parser missed.
  • You can use #-char as an end of line comment.
  • Rainminder may be disabled/enabled by pressing the right mouse button on the wharf.
  • The configuration file is parsed only when Rainminder is ran the first time so remember to Recycle after modifications to Rainminder.cfg file.
  • You can get rid of the message window simply by clicking it with left mouse button.
Evaluations:

Evaluation functions

Light red parameters are optional.

File([FILENAME])
Parameters: FILENAME, name and path of the the compared file.
Return: TRUE if the file exists.

Year()
Parameters: -
Return: Current year in four digits (eg. 1999).

Month()
Parameters: -
Return: The number of current month (eg. 7). Values from 1 to 12.

Day()
Parameters: -
Return: The number of current day (eg. 10). Values from 1 to 31.

Weekday()
Parameters: -
Return: The number of current weekday (eg. 3). Values from 1 to 7, where 1 is Sunday and 7 is Saturday.

Hour()
Parameters: -
Return: Current hour in 24H format (eg. 15). Values from 0 to 23.

Min()
Parameters: -
Return: Current minutes (eg. 31). Values from 0 to 59.

Sec()
Parameters: -
Return: Current seconds (eg. 59). Values from 0 to 59.

Date()
Parameters: -
Return: Current date. The format is DD-MM-YYYY. You must always use 2 digits with the day and the month and 4 with the year (i.e. Date()=02-04-1999).

Time()
Parameters: -
Return: Current time. The format is HH:MM (NOTE: no seconds!). You must always use 2 digits with the hours and the mins (i.e. Time()=09:05)

FirstRun()
Parameters: -
Return: TRUE if Rainminder is ran first time.

Recycle()
Parameters: -
Return: TRUE if Rainminder is ran another time (like when Litestep is recycled).

Click()
Parameters: -
Return: TRUE if left mouse button was pressed on wharf since last evaluation.

BangActivate([ID])
Parameters: ID, if given only bangs with the same ID are evaluated to TRUE.
Return: TRUE if !ActivateRainminder bang command was the cause of the evaluation.

QuickAlarm()
Parameters: -
Return: TRUE when quickalarm goes off.

AmpSongChanged()
Parameters: -
Return: TRUE when Winamp's currently playing song has changed. The changing is determined by the position of the song in the playlist. So if the position remains the same when song changes (i.e. you only have one song in the playlist), tha change won't be noticed.

Actions:

Action functions

Note that the font, color and alignment setting apply the whole line, so you can't use for example different colors in the same line. The last function for the current line is used even if it is located after the text.

Light red parameters are optional.

Text([STRING])
Parameters: STRING, string that will be displayed in message window.
Notes: Use quotes (") around the string. A line of text can be composed from many Text()-functions.

VariableText([STRING])
Parameters: STRING, string that will be displayed in message window.
Notes: Like Text, but can include environment variables, which are expanded.

NewLine()
Parameters: -
Notes: Creates a new message line.

Date([FORMATSTRING])
Parameters: FORMATSTRING, optional string which can be used to control the output. If missing a date representation for current locale is used.
Notes: String can include following format codes:

  • %a Abbreviated weekday name
  • %A Full weekday name
  • %b Abbreviated month name
  • %B Full month name
  • %c Date and time representation appropriate for locale
  • %d Day of month as decimal number (01 – 31)
  • %H Hour in 24-hour format (00 – 23)
  • %I Hour in 12-hour format (01 – 12)
  • %j Day of year as decimal number (001 – 366)
  • %m Month as decimal number (01 – 12)
  • %M Minute as decimal number (00 – 59)
  • %p Current locale’s A.M./P.M. indicator for 12-hour clock
  • %S Second as decimal number (00 – 59)
  • %U Week of year as decimal number, with Sunday as first day of week (00 – 53)
  • %w Weekday as decimal number (0 – 6; Sunday is 0)
  • %W Week of year as decimal number, with Monday as first day of week (00 – 53)
  • %x Date representation for current locale
  • %X Time representation for current locale
  • %y Year without century, as decimal number (00 – 99)
  • %Y Year with century, as decimal number
  • %z, %Z Time-zone name or abbreviation; no characters if time zone is unknown
  • %% Percent sign

Time([FORMATSTRING])
Parameters: FORMATSTRING, optional string which can be used to control the output. If missing a date representation for current locale is used.
Notes: Check Date() for the format codes.

Font([TYPEFACE], [HEIGHT], [STYLE])
Parameters: TYPEFACE, name of the font. HEIGHT, height of the font. STYLE, optionally BOLD, ITALIC or BOLDITALIC.

Color([R], [G], [B])
Parameters: R, value of red component (0-255). G, value of green component (0-255). B, value of blue component (0-255).

Align(CENTER|LEFT|RIGHT)
Parameters: Text alignment

PrintFile([FILENAME])
Parameters: FILENAME, name of the ASCII-file that will be displayed in the message window.

Fortune([FILENAME])
Parameters: FILENAME, name of the Fortune-file that will be used to fetch a random fortune and displayed in the message window. Fortune files are normal ASCII-files with %-char separating the fortunes.

Execute([FILENAME])
Parameters: FILENAME, name of the file that will be executed.

PlaySound([FILENAME])
Parameters: FILENAME, name of the WAV-file that will be played.

ShowDuration([MINDURATION], [TEXTLENGTHFACTOR])
Parameters: MINDURATION, minimum amount of seconds.that the message window will be shown. TEXTLENGTHFACTOR, amount of milliseconds per character that will be added to the showduration. These will override the step.rc settings.

Bang([BANGCOMMAND], [ARGS])
Parameters: BANGCOMMAND, a bang command that will be executed. ARGS, optional arguments for the command.

AmpText()
Parameters: -
Notes: Displays Winamp's currently playing song. The text is taken from the Winamp-windows title and not from the ID3Tag!

QuickAlarmText()
Parameters: -
Notes: Displays the QuickAlarm's custom text that was set in the QuickAlarm-dialog.

Theme([THEMENAME])
Parameters: THEMENAME, name of the theme used in the MessageWindow. If no parameters are given the default theme is used. Check the Themes-section for more info about themes.

Position([X], [Y], [HOLD])
Parameters: X, new X-position of the MessageWindow. Y, new X-position of the MessageWindow. HOLD, Corner that stays put when window is resized. This is similar to RMHold and uses the same values. The values given in step.rc are overwritten with this Action function.

BangText()
Parameters: -
Notes: Displays the !ActivateRainminder's TEXT if it was given.
Step.rc:
The Step.rc file needs some modifications as well. If you don't want to use Rainminder as a wharf you can just add Loadmodule C:\Litestep\Rainminder.dll to where your other modules are loaded.

If you want to put Rainminder in your wharfbar do not use the LoadModule to load the plugin but define a wharf for it (i.e. *Wharf "Rainminder" RainminderWharf.bmp @C:\LITESTEP\Rainminder.dll). If you are using the lstime.dll as your default clockwharf the easiest way is just to replace it with Rainminder.dll.

Important note: If you use Rainminder as a wharf and you don't have lstime as your clock you still need to set the step.rc commands that the lstime needs as Rainminder needs them too. Check Litestep documentation for more info about lstime.

RMPixmapPath [PATH]
Path where the images are and where the theme-forlders are relative to. If missing step.rc's PixmapPath is used instead.

RMTopLeftPic [FILENAME]
Name of the message window's topleft corner bitmap. Default is "RMTopLeftPic.bmp".

RMTopPic [FILENAME]
Name of the message window's top bitmap. Bitmap is tiled if window is too big. Default is "RMTopPic.bmp".

RMTopRightPic [FILENAME]
Name of the message window's topright corner bitmap. Default is "RMTopRightPic.bmp".

RMLeftPic [FILENAME]
Name of the message window's left bitmap. Bitmap is tiled if window is too big. Default is "RMLeftPic.bmp".

RMRightPic [FILENAME]
Name of the message window's right bitmap. Bitmap is tiled if window is too big. Default is "RMRightPic.bmp".

RMBottomLeftPic [FILENAME]]
Name of the message window's bottomleft corner bitmap. Default is "RMBottomLeftPic.bmp".

RMBottomPic [FILENAME]
Name of the message window's bottom bitmap. Bitmap is tiled if window is too big. Default is "RMBottomPic.bmp".

RMBottomRightPic [FILENAME]
Name of the message window's bottomright corner bitmap. Default is "RMBottomRightPic.bmp".

RMCenterPic [FILENAME]
Name of the message window's center bitmap. Bitmap is tiled if window is too big. Default is "RMCenterPic.bmp".

RMPositionX [INTEGER]
Messagewindow's X-coordinate. You can use negative values to define the position that is relative to right edge of the screen. Values which end with '%'-char are interpret as portition of the screensize (i.e. "RMPositionX 50%" would center the window). Default is 0.

RMPositionY [INTEGER]
Messagewindow's Y-coordinate. Works similarily as X-coordinate. Default is 0.

RMShowDuration [INTEGER]
Minimum time in seconds that the message window is visible. Can be longer if RMTextLengthFactor is also defined. Default is 60.

RMHold TOPLEFT|TOPRIGHT|BOTTOMLEFT|BOTTOMRIGHT|CENTER
Corner that stays put when window is resized. This is also the corner that RMPositionX and RMPositionY define. Default is TOPLEFT.

RMConfig [FILENAME]
Name of the Rainminder config file. Use full path.

RMTextLengthFactor [INTEGER]
Time in milliseconds that will be multiplied with the number of characters in text. The result will be added to RMShowDuration time and that will define how long the window will be shown. This way the show duration can be relative to amount of displayed text. Useful with fortunes.

RMTheme [THEMENAME]
Name of the default theme. Check Themes-section for more info.

Example additions to step.rc:

*Wharf "Rainminder" RMWharf.bmp @C:\LITESTEP\Rainminder.dll
RMPixmapPath "C:\Litestep\Rainminder\"
RMConfig "C:\Litestep\Rainminder\Rainminder.cfg"
RMPositionX 50%
RMPositionY 50%
RMShowDuration 40
RMTextLengthFactor 10
RMHold CENTER
RMTheme "RMDefault"
Bangs:
There is also couple of bang commands that can be used with Rainminder:
  • !EnableRainminder Enables the Rainminder
  • !DisableRainminder Disables the Rainminder
  • !ToggleRainminder Enables/Disables the Rainminder
  • !ActivateRainminder [ID] [TEXT] Activates evaluation (use with BangActivate()). The ID corresponds to the ID in BangActivate() and the TEXT can be shown with BangText()-function.
  • !RainminderQuickAlarm [MINS] Creates a quick reminder that will be shown after MINS has been passed. If no args are given a dialog will be opened where you can set time. QuickAlarm() evaluation function will evaluate to true when QuickAlarm sets off.
Themes:
Rainminders message window can be customized with themes. The default theme is selected with RMTheme step.rc command. The THEMENAME-parameter is the name of the forder where theme's the images are. The forder is relative to RMPixmapPath. So for example if your RMPixmapPath points to C:\Litestep\Rainminder and your theme is called MyCoolTheme then the images should be in C:\Litestep\Rainminder\MyCoolTheme -folder.

Different themes can be used with each message. You can define the used theme with Theme([THEMENAME])-Action function. The THEMENAME-parameter works the same way as with RMTheme.

There is a seperate bitmap for each corner, edge and for the center. The edge and the center bitmaps are tiled if the area of the window is larger than the bitmap. The names of the bitmap are defined with RMTopLeftPic, RMTopPic, ... step.rc commands. All themes must have all the nine images.

The sizes of the images may vary. Textarea is calculated from the edge bitmaps (left, right, top and bottom) so that the width of the left and right bitmap determine the horizontal position of the textarea and height of the top and bottom bitmap determine the vertical position.

The message window also has a minimum size which is determined by the corner bitmaps. The minimum size is reached when only the corner bitmaps are visible. The window won't shrink smaller than the minimum even if there is not enough text to fill the whole area.

You may use the traditional pink color (255,0,255) for transparency.
Legal:
This program is free software. Like Litestep, it is released under GNU General Public License as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Please note that this software is still in beta-state and is most likely to have defects and may not work as it should. Use it at your own risk. The author is not responsible for any damage, direct or indirect, that this software may cause.
Contact:
The latest version will be found from my homepage at:

http://www.iki.fi/~rainy

You may also send comments and bug-reports to author:

rainy@iki.fi

Please put the name of the product (i.e. RAINMINDER) in the subject-field of the mail. It may be useful if you write the version of the product also.
Future:
Here is some features which may be included in the future:
  • GUI (If I have some spare time...)
  • More Action Functions: ShowBitmap(), ...
  • More Evaluation Functions: RegKey(), ...
  • (Un)Installer
History:
22 APRIL 2000 (Version 0.6 ß)
  • Fixed respawning QuickAlarm-bug.
  • Now uses initModuleEx for compability with the newer builds.
  • Bang(), Execute(), PlaySound(), PrintFile() and Fortune() supports now environment variables.
  • !ActivateRainminder-Bang can now have arguments.
  • Changed BangActivate() to take one optional parameter.
  • Added BangText() to show the text from a !ActivateRainminder-Bang.
  • Added VariableText() to show text with environment variables.
  • \n inside a text is interpreted as newline
  • Added DigiColonWidth for the clock to set the width of the colon between hours & mins
  • Fixed a memory-leak when quitting (or recycling)
  • FirstRun() now evaluates to true only when Litestep is started and not when it is recycled. You can use Recycle() for recycle-time messages.

18 DECEMBER 1999 (Version 0.5 ß)

  • Fixed the fortune-randomizer. No more empty fortunes (I hope ;)
  • Added Position([X], [Y], [HOLD]) Action function to set the window position.
  • Positions can be defined with %-char.
  • Added Themes. Use Theme([ThemeName]) to change MessageWindows graphics and RMTheme in step.rc to set the default theme.
  • Removed the limit of one QuickAlarm at a time.
  • QuickAlarm-dialog now has a textbox for custom messages. Use QuickAlarmText() to display it.
  • Added some basic Winamp support. AmpSongChanged() evaluation function can be used to show messages when song changes. AmpText() prints the currently playing song.

10 DECEMBER 1999 (Version 0.4 ß)

  • Fixed a bug with redrawing the clock's background.
  • The window position can be set with negative coordinates.
  • Added support for GetRevID-message, so Rainminder shows in the LS !About dialog.
  • Now uses static linking to MFC. A bit larger executable but reduces problems with MFC42.DLL.

23 SEPTEMBER 1999 (Version 0.3 ß)

  • Added Bang([BangCommand], [Args]) action function which executes a LS bang command.
  • Added Quickalarms (used with !RainminderQuickAlarm [MINS] and QuickAlarm()).
  • Fixed a bug in Date() evaluation
  • Fixed a bug with the wharf clock transparency
  • Added RMPixmapPath step.rc-command

9 SEPTEMBER 1999 (Version 0.2 ß)

  • Changed the message window to be opened as non-active, so that it won't popup over screensaver & games.
  • If there wouldn't be any text in the message window it is not displayed.
  • Added PlaySound([Filename]) and Execute([Filename]) Action Functions.
  • Doesn't have to be a wharf anymore. Can be loaded with LoadModule as well.
  • Added couple of Bang-commands: !EnableRainminder, !DisableRainminder, !ToggleRainminder and !ActivateRainminder.
  • Added RMTextLengthFactor step.rc-command.
  • Added ShowDuration([MinDuration], [TextFactor]) Action function.

31 JULY 1999 (Version 0.1 ß)

  • Initial Betarelease


Razrez.dll

---------------------------------------------------------------------------------

--------------------------------------------------------------------------------

Razrez 0.4

azathoth <mailto:azathoth@demented.org>

ilmcuts <mailto:ilmcuts@gmx.net>

Last Modified: 2002-04-06

--------------------------------------------------------------------------------

-----------

I. Overview

-----------

Razrez.dll is a Litestep loadmodule that provides a few methods to change the

screen resolution, color depth, and refresh rate.

----------------

II. Installation

----------------

Copy Razrez.dll to your module dir (e.g. $litestepdir$modules\), then add the

following line to your step.rc:

Loadmodule "$LiteStepDir$modules\Razrez.dll"

if you choose a different dir you have to adjust the path accordingly.

----------

III. Usage

----------

Note that you /should/ get an error when you try to set your resolution to a

mode that isn't supported by your screen, graphics card, OS or whatever. But

since nobody can test all (im)possible modes I can't guarantee it.

Probably the most useful option is to change your screen resolution at run-time

with the !bang commands Razrez provides:

!razrez <width> <height> <bpp> <freq>

- <bpp> and <freq> are optional, if you don't use them your color depth and

refresh rate will stay the same. Note that you need to specify <bpp> if you

want to change your refresh rate.

- Example: !razrez 1024 768 32 75

This will set your screen resolution to 1024x768 with 32bit colors and a

refresh rate of 75Hz.

!razrezbpp <bpp>

- With this !bang you can change your current color depth but keep your

current screen resolution.

- Example: !razrezbpp 16

This will change your color depth to 16 bit

Razrez also supports step.rc options, e.g. to change your resolution on startup:

*razrez <width> <height> <bpp> <freq>

- This will change your resolution on startup//!recycle/!refresh.

For usage information see !Razrez

*razrezout <width> <height> <bpp> <freq>

- Use this to change the resolution on quitting litestep. This enables you to

change the res on exit of LS allowing you to e.g. use different res' for LS

and other shells.

For usage information see !Razrez

----------------------

IV. History (azathoth)

----------------------

I was writing an app to hack the resolutions on the pc's at school (they're

locked out) when i got bored :)

This is the result. I just took the ole DEVMODE code and stuck it somewhere new.

btw. the name razrez comes from A Clockwork Orange by Anthony Burgess and means

"cut-up". It also derives from Az & Rez.

neways...

----------

V. Credits

----------

ilmcuts: full credits need to go to azathoth. all i did was swapping a few

lines in the sourcecode and duplicating a function that was already

there.

azathoth: thanks to no-one really... i did it all on my lonesome...

-------------------

VI. Version history

-------------------

- 0.4 / 2002-04-06 / ilmcuts

- it's now optional to define the color depth. if you don't, Razrez will just

change the resolution and use your old color depth and frequency.

- added !razrezbpp - this will only change the current bpp but not the res.

- added !refresh support... a bit pointless, I know. Thus *razrez now works on

!refresh too.

- revised the readme, using large parts of aza's original text.

- 0.3 / azathoth

We now have a frequency addition. This allows you to specify what frequency

you wish to run at. This was a requested feature by Don Diego.

Also, i forgot it last time but you can now change resolution on starting and

quitting litestep.

Aussi, misc code updates. Cleaned some stuff up. (Still working on getting

that char* running through a damn message tho).


Recycler.dll

---------------------------------------------------------------------------------

////////////////////

// RECYCLER 4.0.4 //

////////////////////

Copyright © 1999 Joachim Calvert. All rights reserved.

Contents

Introduction and history

Changes in this version

Features

Installation and requirements

Options

Future plans

Troubleshooting

Disclaimer/legal information

Credits

Contacting the author

Introduction and history

========================

First of all, thank you for your interest in this module. Together, we can make

it the best of it's kind.

I began working on this module in June, after searching in vain for a good

module that would allow me to use the recycle bin under LiteStep. Sure,

Incinerator is quite good, but it lacked certain features I wanted.

So, in the spirit of the project, I set out to create exactly the module I

wanted, and share it with the community. In the beginning it was rather

simplistic. For example, it couldn't yet empty the 'bin, and it was also

confined to the wharf (which wasn't a problem at the time).

In the months that followed, I made several changes to it, to satisfy the needs

of those who used it. What you have now is the latest incarnation of the module,

with full support for most of the features you'd expect from a module of this

kind.

Changes in this version

=======================

These are only the changes made in this version. For older changes, please refer

to the file 'changes.txt'.

4.0.4 991120 * Fixed an issue with content detection on systems running

Windows 2000.

Features

========

This is just a list of the supported features. For more details, consult the

Options section below.

Drag 'n' drop The module provides full support for drag 'n' drop

operations. There are a few issues involved though (see

the TS section).

Content aware It detects if there are files in the 'bin or not, and

automatically updates itself to reflect this.

Transparency There is full support for transparent images to allow

the module to seamlessly integrate into your theme.

Mixed Mode Can be loaded either as a wharf/dwarf tile, or stand-

alone as a Load Module.

Fully customizable When loaded stand alone, you can customize most aspects

of it, such as setting it's visible state and resizing

it to any size that suits your needs.

Animated When you delete files or empty the 'bin through the

module, it will play a specified animation.

Bang Commands There are several bang commands that gives you quick

access to most of it's features.

Installation and requirements

=============================

Before you install, you must ensure that you have a development build dated

after 1999-09-06 (Y-M-D). If you have an official release built after this date,

it should work as well. It is possible that the module works with earlier

builds, but I cannot guarantee it. The module will NOT work with the official

0.24.5 releases or earlier, due to a bug in one of the LSAPI functions.

Also note that it is generally a Good Idea to update your core modules to the

latest builds at least once every month, as there are usually important bug

fixes and other improvements. The dev builds are generally even more stable than

the official releases.

To install the module, unzip the DLL to a directory of your choice. The images

that you are going to use, whether those included or custom, should preferably

reside in your images folder.

Setup your step.rc to load the module, changing the paths accordingly.

LoadModule C:\LiteStep\Plugins\Recycler.dll

or, if you prefer the wharf configuration

*Wharf "Recycler" .none @C:\LiteStep\Plugins\Recycler.dll

To uninstall the module, simply remove the files and the settings from your LS

configuration files. There is no information stored in your registry or

otherwise.

Options

=======

From version 4, I have dropped the support for 'modules.ini'. This was done to

better support theming of the module. Another reason is that the community has

largely abandoned the ini file, as it doesn't support the more advanced features

of LiteStep. Sorry if this gives you a headache.

These options are set in your 'step.rc' or 'theme.rc'. Sorry for the confusion

in the last few revisions. I thought I had updated this info...

RecyclerDebugMode This setting will activate debug output from the legacy

routine used to empty the 'bin. Not to be used under

normal conditions.

RecyclerLegacyMode Allows the module to work properly even if the

notification system is inaccessible.

RecyclerHideMenuHide This will remove the 'Hide' entry from the modules popup

menu. It was requested, so here it is.

RecyclerNotAlwaysOnTop This will make the module stick to the background,

instead of floating above your other windows.

RecyclerStartHidden Will load the module in it's hidden state, useful if you

don't want it to be visible at all times. Also useful if

you only want access to the Bang Commands.

RecyclerBack .none These specify which images to be used by the module.

RecyclerEmpty Recycler… Currently, only 'RecyclerBack' accept the '.none'

RecyclerFull Recycler … setting, using it with any of the others will put the

module in it's failure state (not harmful).

RecyclerAnimation .none This is the image used for the animation. If it is

omitted, the module will not be animated. If set, the

module animates using the values set by

'RecyclerAniDelay' and 'RecyclerAniFrames'. Naturally

the animation uses the Great Pink for transparency.

If you want to use the supplied animation, you don't

have to set any of the other values.

RecyclerAniDelay 120 Sets the delay in milliseconds between the frames of the

animation.

RecyclerAniFrames 4 Sets the number of frames in the animation. The image

height is divided by this value into frames. If the

frames aren't of equal height, the animation will not

display correctly.

RecyclerAniLength 1200 Sets the length of the animation in milliseconds. Note

that the actual length depends on the 'AniDelay'

setting. The total number of frames that will be

displayed is RecyclerAniLength / RecyclerAniDelay,

rounded down.

RecyclerLeft -64 These are used to set the location of the module.

RecyclerTop -64 Negative coordinates are relative to the bottom right

RecyclerWidth 64 corner of the screen. If 'RecyclerLeft' and/or

RecyclerHeight 64 'RecyclerTop' is omitted, the module will set them

internally to keep it in the bottom right corner.

RecyclerCapOpen &Open Requested by Ésomagix, these options let you localize

RecyclerCapEmpty &Empt… the module to any language.

RecyclerCapHide &Hide

Most of these options are ignored if the module is loaded in a wharf tile, which

ones should be pretty evident.

The following Bang Commands become available when the module is loaded, please

note that calling !RecyclerVisible when the module is loaded in a wharf tile

won't have any effect.

!RecyclerEmpty As you'd expect, this empties the 'bin.

!RecyclerOpen Opens the 'bin in an exploder window.

!RecyclerVisible Calling this without parameters will hide the module if

it's visible and vice versa. To explicitly set the

visibility, you can specify 'true' or 'false' as params

(not including the quotes).

Future plans

============

OK, the animation system is in place, though it could probably be tweaked

somewhat. I have included a short test animation that you can use to test the

system. As you can see, I'm no graphics wizard, so I'd be extremely happy if

anyone wants to create a real animation for it. You will of course be duly

credited for it.

If you have any other suggestions, I'd be happy to code them if I consider them

beneficial to the project (no, I won't add support for making coffee).

If you are wondering why the module is so large, it is because Delphi includes

the runtime support in the DLL itself. I could bring the size down to about 20

kilobytes, but then you'd need the runtime library, and that is more than 1.6

megabytes!

Troubleshooting

===============

As I have no access to any system other than my own (W98/IE5), I haven't been

able to test the module as much as I'd want to. So don't be surprised if the

module doesn't behave as you expected. There are some issues that are quite

common though.

If the module displays a big red X instead of the image you have selected, this

is because it can't find one or more of them. Please verify that all the

specified images exist, and that you haven't quoted the name.

I've noted that on some systems, the module won't update to reflect whether

there are files in it or not. Though I don't know the cause, you can update the

module simply by clicking on it.

If you encounter problems with the module, feel free to contact me, but please

include information about your system when you do so.

The information I need is: Version of Windows, if 'Active Desktop' is installed,

and also the build date of your 'lsapi.dll' (can be found with the

'!About Detailed' command). It would also help if you sent me the relevant lines

from your 'step.rc' and 'modules.ini'.

Disclaimer / legal information

==============================

If you've read one, you've read them all, but I have to say this so you can't

sue me if anything goes wrong...

This program is free software; you can redistribute it and/or

modify it under the terms of the GNU General Public License

as published by the Free Software Foundation; either version 2

of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with this program; if not, write to the Free Software

Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

By installing the module, you agree to the above terms.

The source is available at my site.

Credits

=======

Without the aid of the following people and companies, this module wouldn't be

what it is today. I'm eternally grateful for their, sometimes unknowing,

assistance.

Francis Gastellu Without him, LiteStep would never have been born.

Fahim Farook Under his guidance, LS has evolved to heights it would

never have reached otherwise.

The Dev Team You have to admire these fellows, who just keep going,

and going, and going...

Earl F. Glynn For pointing at some code telling me how to empty the

recycle bin. It was just an API call unmentioned in my

docs.

Christian Leinen For opening my eyes on how to empty the recycle bin when

the API call is unavailable.

Ésomagix For translating these docs to French for the benefit of

the LS users in all French-speaking countries.

J. A. Portugal da Costa For the awsome animation, it was exactly what I wanted,

you can't begin to comprehend how happy I am for it!

Borland The company now called Inprise will in our hearts always

be remembered as Borland, the creators of the finest

development tools on the market. Latest news: Delphi and

C++Builder are being ported to Linux!

Contact

=======

Don't you just hate it when someone releases a program and doesn't tell where to

find the upgrades, or even his mail address?

For upgrades and other software please visit my site on

hem.passagen.se/jcalvert/software

If you have comments, suggestions, bug reports or just want to say hi, my

address is

jcalvert@hem.passagen.se

Before sending me bug reports, or questions about the operation of the module,

please ensure that you have read through the sections 'Installation and

requirements', 'Options' and 'Troubleshooting'. You wouldn't believe me if I

told you how many messages I receive with questions answered in those sections.

= EOF =


Remote.dll

---------------------------------------------------------------------------------

Remote Control (remote.dll) version 1.02

This file was created on 2000-01-11 by Asperon

******************************************************************************

1. Introduction

This is a general remote control module for litestep. By passing windows

messages to programs you can intreact with them through the litestep GUI

(like shortcuts, popupmenu or whatever that supports bang commands).

******************************************************************************

2. Installation

Unzip the remote.dll into your litestep dir. Add the line:

loadmodule c:\litestep\remote.dll

to your step.rc (change c:\litestep to point at your litestep dir)

after this you will have to add a *send command for each message you want

to be able to use.

the syntax is:

*send <command-name> <window/program> <message> [program to run]

where <command-name> is the name you want this message to have.

<window/program> is the name of the program/titel of the window

<message> is the message number to send (check the program

dokumentation for the right codes)

[program to run] optional, if the window isn't found, run this program

example:

*send IDNEXT CoolPlayer 40014, c:\program\coolplayer\coolplayer.exe

would send 40014 to the CoolPlayer window whenever litestep runs a !Send IDNEXT

and if that window isn't found it would run the coolplayer.exe.

This way you can control everything from mp3-players to webbrowser to windows

native functions.

******************************************************************************

3. Commands

Here are a couple of messagecodes for some programs, recived from the

latest graphite build (which contains the feature that this dll handles).

Settings for Windows Media Player:

*Send PLAY "Media Player 2" 3047

*Send STOP "Media Player 2" 3048

*Send PAUSE "Media Player 2" 3047

*Send OPEN "Media Player 2" 3009

*Send PREVIOUS "Media Player 2" 3049

*Send NEXT "Media Player 2" 3050

Settings for Coolplayer:

*Send PLAY "CoolPlayer" 40010

*Send STOP "CoolPlayer" 40011

*Send PAUSE "CoolPlayer" 40012

*Send OPEN "CoolPlayer" 40013

*Send PREVIOUS "CoolPlayer" 40015

*Send NEXT "CoolPlayer" 40014

Settings for WinAmp:

*Send PLAY "WinAmp v1.x" 40045

*Send STOP "WinAmp v1.x" 40047

*Send PAUSE "WinAmp v1.x" 40046

*Send OPEN "WinAmp v1.x" 40029

*Send PREVIOUS "WinAmp v1.x" 40044

*Send NEXT "WinAmp v1.x" 40048

Settings for K-Jöfol v0.51:

*Send PLAY "KjofolMainWindow" 8

*Send STOP "KjofolMainWindow" 4

*Send PAUSE "KjofolMainWindow" 12

*Send OPEN "KjofolMainWindow" 2

*Send PREVIOUS "KjofolMainWindow" 17

*Send NEXT "KjofolMainWindow" 18

Settings for K-Jöfol 2000 v1.0:

*Send PLAY "KjofolMainWindow" 5128

*Send STOP "KjofolMainWindow" 5124

*Send PAUSE "KjofolMainWindow" 5132

*Send OPEN "KjofolMainWindow" 5122

*Send PREVIOUS "KjofolMainWindow" 5137

*Send NEXT "KjofolMainWindow" 5128

******************************************************************************

4. Updates

1.02 - Added the ability to run a program if the window wasn't found, so

that you could start up the required program. Also added the commands

section to this file, so you could get started easier.

1.01 - Recompiled the module in a more aggressive manner, reducing its size

to 20% of the last release. Enjoy!

******************************************************************************

5. Contact

Any desired features, bug reports or just to show your gratitude, get in

contact with me.

You can contact me at:

asperon@home.se

The lastest updates for this program can be found at:

http://www.csd.uu.se/~s95cce

******************************************************************************


Rymshot.dll

---------------------------------------------------------------------------------

| |

__| | | __ `__ \ __| __ \ _ \ __|

| | | | | |\__ \ | | | ( | |

_| \__, |_| _| _|____/_| |_|\___/ \__|

____/

rymshot.dll screenshot module for litestep

http://litestep.waglo.com/modules/rymshot/

for updates, source code and more info

2002-03-31, v0.17: initial release

2002-03-31, v0.18: finished docs, little cleanups

2002-04-01, v0.19: ftp upload, disable unneeded bangs, enabled bmp support

2002-04-01, v0.21: a few bugfixes (resolution, ftp folder, etc.)

2002-04-02, v0.25: new bang: rymshotactive and associated setup options

2002-04-02, v0.26: now compiles with g++

2002-04-03, v0.27: text overlay options

2002-04-03, v0.32: fixed transparency issues on nt/w2k/xp (thanks, Vulpes!)

"implemented" file locks

(Vulpes saw a problem when running ACDSee 4.0)

2002-04-03, v0.33: new options: rymshotftpnocaption and rymshotftpnothumbnail

2002-04-03, v0.36: new image file format: png

2002-04-07, v0.39: fixed included headers to make building more cross-platform

removed couple extra functions

fixed recycling problems with old configs corrupting new

using strnxxx instead of strxxx

new ftp bang to set password, can't have empty password

2002-04-10, v0.49: new option: rymshotftpuselocal use local settings for ftp

bugfix: jpeg quality over ftp wasn't handled (thanks, Nick

bugfix: jpeg thumbnail didn't have a file extension (Young)

Setup

=====

If this is the first time you install rymshot, move these two files to a

directory on your path, your windows directory if you have nowhere better:

cygwin1.dll

cygjpeg6b.dll

Note that if you are using cygwin already, you probably don't have to do this

but make sure both files are in your path anyway. Don't worry if you are not

sure what cygwin is: it's a needed component of rymshot for now, but I hope to

let go of it soon.

Next, install rymshot.dll like you would any other module, moving it to your

litestep modules folder and inserting a line like the following in your

step.rc:

loadmodule "c:\litestep\modules\rymshot.dll"

or

loadmodule "c:\litestep\modules\rymshot.dll" threaded

I recommend the threaded option, since some rymshot bangs might take a little

while to finish.

Of course, you want to adapt the path to wherever you installed the module.

I've been running it threaded with no problems, but I don't know what the

repercussions might be. If you experience any problems running it threaded,

please let me know.

That's the minimum you need to be able to use this module. All other settings

are optional. Recycle, and you can start using rymshot right away with default

values, which are quite sane in my opinion. Don't just stand there, read on,

some options are very interresting :)

Options

=======

general options:

---------------- [default]

rymshotquality 50 0 (worst) to 100 (best) jpeg quality

rymshotformat jpg bmp, jpg, png and eventually pnm

rymshotfilename rymshot whole path and file name, no extension

thumbnail options:

------------------

rymshotthumbnail false use thumbnail?

rymshottnquality rymshotquality 0 (worst) to 100 (best) jpeg quality

rymshottnwidth 200 1 .. desktop width

rymshottnheight 150 1 .. desktop height

rymshottnformat rymshotformat bmp, jpg, png and eventually pnm

rymshottnfilename rymshotfilename + "-tn"

ftp options:

------------

rymshotftp false use ftp to upload screenshots?

rymshotftpuselocal false use local options such as filename for ftp

rymshotftpuser [empty] ftp username

rymshotftppassword [empty] ftp password

rymshotftpserver [empty] ftp server

rymshotftpfolder [empty] ftp folder

rymshotftpfile [empty] ftp filename

rymshotftperrortreshold 20 number of errors before we disable ftp

rymshotftpnothumbnail false don't use thumbnail for ftp

rymshotftpnocaption false don't use caption for ftp

active options:

---------------

rymshotactivequality rymshotquality 0 (worst) to 100 (best) jpeg quality

rymshotactiveformat rymshotformat bmp, jpg, png and eventually pnm

rymshotactivefilename rymshotfilename + "-active"

caption options:

---------------

rymshotcaption false enables the caption

rymshotcaptiondateformat varies text and a date format string, like strftime

rymshotcaptionx varies x coord of caption (top-left = 0, 0)

rymshotcaptiony varies y coord of caption (top-left = 0, 0)

rymshotcaptioncolor RGB color of caption, RGB in general

Note: currently, the only supported formats are

jpeg and bmp. When no path is given, the files

are saved in your litestep folder.

future release thumbnail options:

---------------------------------

rymshottnscale 0.25

rymshottnscalewidth 0.25

rymshottnscaleheight 0.25

Note: I'm not exactly sure how to handle processing

of the widht/height or scale values. mritche suggested

scaling factors too. If you have any suggestions,

now's a good time :)

Bangs

=====

!rymshot save screenshot to file and optionaly a thumbnail

!rymshotactive save active window to file [and optionaly a thumbnail]

!rymshottn save only a thumbnail if enabled

!rymshotnotn save whole screenshot only, no thumbnail

!rymshotftp upload screenshot thru ftp

!rymshotftppassword sets ftp password until next !recycle

!rymshotabout displays info about current setup

Eventually, you will be able to pick what you want to capture. Here's a sample

of the bangs to come:

!rymshotactive save screenshot of active window [done in v0.25]

!rymshotid id save screenshot of area #id

Advanced

========

This stuff is so advanced, seriously, you shouldn't consider trying it unless

you have 6 years of yoga under your belt. You'd need extreme patience to get

this feature to work like you indend. Trust me, it's really not worth it.

It's not only advance, it's also from the future! That's right!

It's another thing on my todo list, but I thought I'd give it a special

treatment, since it's a feature that could use a lot of input. That's if I

haven't scared everyone away yet...

"So what's this great feature I keep hearing about", you ask? It's about

time you ask!

You might have noticed in the bangs above:

!rymshotid id

The mysterious 'id' is defined following either of these formats:

*rymshot id,window class/name,filename,thumbnail

*rymshot id,x,y,width,height,filename,thumbnail

This is all beautiful, but like I said, it's NOT implemented yet.

I just thought I'd let you know what was coming, and hoped to get

some feedback as well.

Todo

====

implement ftp facility (wininet or better?) [done with v0.19]

make file format configurable [done with v0.19]

bells and whistles

select window/area to capture [done partly with v0.25]

what about multimonitors? [promised to mritche for v0.55]

explain the cygwin/mingw build procedure

port to mingw instead of cygwin {*1}

find other ways to save jpeg/png/pnm files {*1}

progress bar for ftp upload (repugnant)

sequential filenames (Vulpes)

save to clipboard

printscreen key {*2}

capture lsboxes (verbalshadow)

file locking [done with v0.32]

make pureLS compatible (TucknDar)

ftp password encryption or prompt {*3}

setup strftime man page for caption date/time format

skinnable area to show state (on or off...)

fix png implementation

ftp thread (repugnant)

note *1: see http://sourceforge.net/projects/mingwrep/

and http://www.colomsat.net.co/freehost/ngiraldo/cppcygwin.html

note *2: see http://www.mvps.org/vbnet/code/subclass/registerhotkey.htm

note *3: see http://php.net/crypt for DES 56

extra ideas: http://www.americansys.com/psd.htm

Remarks / Bugs

==============

I can't take a screenshot when the active window is ACDSee32 Classic 2.43,

anyone else had that problem with this or another application?

Also, see this picture of the Taskman for win95... why would it do that?

http://litestep.waglo.com/modules/rymshot/bug-00-active.jpg

I appears running ACDSee32 while taking a screenshot is not very good.

This is probably because litestep is opening the file for writing

and ACDSee32 maybe locks it while reading it... I'm not sure that I can

fix this for win95, any clues would be appreciated!

Conclusion

==========

I have one last question: should I keep on using "tn" as an abbreviation

for "thumbnail" in the bangs and settings, or should I use the whole word?

To contact me:

Robin Y. Millette, aka Lord D. Nattor, aka rym

millette@waglo.com

home page: http://rym.waglo.com

rymshot page: http://litestep.waglo.com/modules/rymshot/

rymmarks (my 27,000 bookmarks): http://rymmarks.waglo.com

If you are so inclined, you will find the source code in plain c to this

module at the rymshot homepage.

P.S.: things might not work if you don't stick to lowercase letters. I'll take

care of that eventually. If you notice anything else out of the ordinary, let

me know!


SciScript.dll

---------------------------------------------------------------------------------

SciScript.dll 0.1 SciScript.txt

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

General

¯¯¯¯¯¯¯

SciScript is a really simple Litestep scripting module. All you

can do as of now is to create bangs that execute anumber of

other bangs. Rather pointless really but there will be more to

it.

Bangs

¯¯¯¯¯

!ScriptStatus

Displays a list of all scripts

RC commands

¯¯¯¯¯¯¯¯¯¯¯

*ScriptFile <file>

Add one of these lines for each script file you want to load.

The filename must include the path. See the sample file

'script.txt' for syntax help.

Changes

¯¯¯¯¯¯¯

Date Ver Changes

30 sep 2001 0.1 First public release

To-do-list

¯¯¯¯¯¯¯¯¯¯

* Variables

* Function return values

* Some scripting functionality like if-statements and loops

If you've got any ideas, feel free send me a mail.

Feedback

¯¯¯¯¯¯¯¯

If you have a bug report, feature request, or any kind of

feedback, feel free to email it to me at erik@alfafish.com.

For more info and other LiteStep modules and programs, check

out www.alfafish.com

Sourcecode

¯¯¯¯¯¯¯¯¯¯

The sourcecode for this module is distributed under the GNU

Public License. If you didn't get the sourcecode with this

module, you can download it from www.alfafish.com

Sample Script

--------------------

// This is a comment

bang TestScript

{

// Show the about box

!About

// Call the PauseWinamp function below

PauseWinamp

}

func PauseWinamp

{

// Pause Winamp through Geekamp

!Amp_Pause

}

_______________________________________________________________

Erik Christiansson, aka Sci erik@alfafish.com


SMbangs.dll

---------------------------------------------------------------------------------

********** SMbangs.dll **********

SMbangs.dll is a simple set of bang commands that control the visibility of Sysmeter(all versions) and L-ement system load monitors.

To use SMbangs.dll, you must add it to your step.rc file in the LoadModule section.

Example: LoadModule C:\LiteStep\Modules\SMbangs.dll

Bang commands added by SMbangs.dll:

!SysmeterHide

!SysmeterShow

!SysmeterToggle

!L-ementHide

!L-ementShow

!L-ementToggle

!WinHide class or window name

!WinShow class or window name

!WinToggle class or window name

(NOTE: You only need to pass the class or window name to !WinHide/!WinShow, passing both will no work. Also, do NOT enclose them in "quotes", even if it has a space in it.)

Version History:

----------------

5/11/2000-SMbangs.dll r1

First release

5/14/2000-SMbangs.dll r2

Bug Fix - Sysmeter no longer gets moved when it is docked to the right edge.

Bug Fix - Sysmeter correctly shows itself if tray icon is clicked.

Added - 2 new bangs, !WinHide and !WinShow, will hide/show any window by passing it's class or window name.

10/3/2000-SMbangs.dll r3

Added - !SysmeterToggle, !L-ementToggle and !WinToggle to toggle their visiblity

Added - !SysmeterKill, !L-ementKill and !WinKill to safely close their window

Known Bugs:

-----------

None

Tom Crouson

aka: Two_toNe

email: 2tone@inreach.com


Switch.dll

---------------------------------------------------------------------------------

Switch.dll v1

idea by Shadowlin

code by limpid

http://www.v-active.com/litestep/

----------------------

***BACK UP YOUR CURRENT STEP.RC AND MODULES.INI***

Switch.dll is a loadmodule that will allow you to switch themes (and bg images) quickly and easily in

litestep using a !bang command.

be sure to load the module in your step.rc:

LoadModule c:\path\to\switch.dll

settings for the themes are stored in the switch configuration file - switch.rc, which

should be put in your litestep directory (wherever litestep.exe is). the theme definitions

work like this:

in switch.rc:

*theme <name> <steprc> <modulesini> [wallpaper]

heres an example:

*theme "gnome" "c:\litestep\themes\gnome\step.rc" "c:\litestep\themes\gnome\modules.ini" "c:\litestep\themes\gnome\imamges\bg.bmp"

(note that the last entry, the wallpaper image, is optional)

this will copy c:\litestep\themes\gnome\step.rc to your litestep directory, overwriting your current steprc(!)

make sure you have it all set up right and back up your step.rc and modules.ini just to be safe.

the switch.rc file can hold up to 32 theme definitions.

to switch to a theme, from litestep, call !Switch "themename" where themename matches the name of the theme

defined in the switch.rc file that would like to switch to.

so to switch to the example theme entry above, you would use !Switch "gnome"

im gonna add support for theme.rc and also an option to chose if you want your bg tiled or centered or stretched.


Syscolor.dll

---------------------------------------------------------------------------------

Syscolor 2.2

Syscolor 2.2

By Message

Description: Sets the system colors through step.rc commands, bang commands, or ini file.
Changes:
  • Changes since 2.1
    • Fixed problem with RGB and BGR colors being confused (thanx qwilk for pointing it out)
    • Added SCLoadSection
  • Changes since 2.0
    • Fixed bug in the read/write procedures that caused colors to be backwards.
  • Changes since 1.01
    • Rewrote most of the code to be oop, code conforms to lsd2 format
    • Added two new bang commands: !SCWriteColors and !SCReadColors
    • Added new step.rc command: SCIniFile
  • Changes since 1.0
    • Added SCGradientActiveCaption // Read description below
    • Added SCGradientInactiveCaption // Read description below
    • Added SCHotLight // Read description below
    • Added !SCReset // Read description below
!SCWriteColors <section> | Writes your color scheme to an ini file, if no section name is specified, defaults to "SYSCOLOR"
!SCReadColors <section> | Reads your color schem from an ini file, if no section name is specified, defaults to "SYSCOLOR"
!SCReset <section> | Will reset your system colors to the ones found in step.rc, just in case you muck them up
SCIniFile <file name> | Specifies the ini (has to be an ini file) for Syscolor to read/write color schemes to, if this is not set Syscolor defaults to modules.ini
SC3DDkShadow <color> | Dark shadow for three-dimensional display elements.
SC3DFace <color> | Face color for three-dimensional display elements and for dialog box backgrounds.
SCBtnFace <color> | Face color for three-dimensional display elements and for dialog box backgrounds.
SC3DHiLight <color> | Highlight color for three-dimensional display elements (for edges facing the light source.)
SC3DHighLight <color> | Highlight color for three-dimensional display elements (for edges facing the light source.)
SCBtnHiLight <color> | Highlight color for three-dimensional display elements (for edges facing the light source.)
SCBtnHighLight <color> | Highlight color for three-dimensional display elements (for edges facing the light source.)
SC3DLight <color> | Light color for three-dimensional display elements (for edges facing the light source.)
SC3DShadow <color> | Shadow color for three-dimensional display elements (for edges facing away from the light source).
SCBtnShadow <color> | Shadow color for three-dimensional display elements (for edges facing away from the light source).
SCActiveBorder <color> | Active window border.
SCActiveCaption <color> | Active window title bar. Windows 98, Windows 2000: Specifies the left side color in the color gradient of an active window's title bar if the gradient effect is enabled.
SCAppWorkSpace <color> | Background color of multiple document interface (MDI) applications.
SCBackground <color> | Desktop.
SCDesktop <color> | Desktop.
SCBtnText <color> | Text on push buttons.
SCCaptionText <color> | Text in caption, size box, and scroll bar arrow box.
SCGradientActiveCaption <color> | Windows 98, Windows 2000: Right side color in the color gradient of an active window's title bar. cActiveCaption specifies the left side color. Use SPI_GETGRADIENTCaptionS with the SystemParametersInfo function to determine whether the gradient effect is enabled.
SCGradientInactiveCaption <color> | Windows 98, Windows 2000: Right side color in the color gradient of an inactive window's title bar. cInactiveCaption specifies the left side color.
SCGrayText <color> | Grayed (disabled) text. This color is set to 0 if the current display driver does not support a solid gray color.
SCHighLight <color> | Item(s) selected in a control.
SCHighLightText <color> | Text of item(s) selected in a control.
SCHotLight <color> | Windows 98, Windows 2000: Color for a hot-tracked item. Single clicking a hot-tracked item executes the item.
SCInactiveBorder <color> | Inactive window border.
SCInactiveCaption <color> | Inactive window caption. Windows 98, Windows 2000: Specifies the left side color in the color gradient of an inactive window's title bar if the gradient effect is enabled.
SCInactiveCaptionText <color> | Color of text in an inactive caption.
SCInfoBk <color> | Background color for tooltip controls.
SCInfoText <color> | Text color for tooltip controls.
SCMenu <color> | Menu background.
SCMenuText <color> | Text in menus.
SCScrollBar <color> | Scroll bar gray area.
SCWindow <color> | Window background.
SCWindowFrame <color> | Window frame.
SCWindowText <color> | Text in windows.


Systray.dll

---------------------------------------------------------------------------------

system tray module for Litestep (systray.dll), 1.06

--

Systray.dll is a system tray replacement module for Litestep which provides

greater control over appearance, placement, and icon layout.

Release Notes: 1.0 final

Well, 1.0 has dragged on long enough (looking back at changes.txt, I

started this project in May!) and so I'm declaring this release to be

1.0 final. This means that the main features I wanted to implement

are there and the code is for the most part stable. Also, I recently

stumbled across some more stuff to add, but I want to wait for 2.0

and I figured I ought to release 1.0 before beginning work on 2.0.

Rest assured this isn't the last you'll hear of systray.dll. =)

Also, as promised, I'm releasing the current source code. The source

distribution is available as a seperate download from my web site:

http://maduin.dasoft.org/systray/source.zip

Installation

Systray.dll requires a recent development build of both desktop.dll

and lsapi.dll. If you have a devbuild from May 26 or later, or you have

the DLLs supplied with earlier betas of systray.dll, then you have the

necessary updates already. If you want just desktop.dll and lsapi.dll

without having to install the entire devbuild, you can download these

from my page at: http://maduin.dasoft.org/systray/desktop.zip.

Once you have the updated DLLs installed, add a LoadModule line

for systray.dll to your step.rc (assuming you want systray.dll to run

as a desktop module as opposed to a wharf module). Example:

LoadModule C:\Litestep\systray.dll

You will also need to add the line "NoSystray" to your step.rc in

order to disable the default LS system tray.

Included in the zip file is systray.rc, a sample configuration file for

systray.dll. It contains only systray.dll configuration options and

can be pasted directly into your step.rc (or theme.rc) to give you

a template to work from when configuring systray.dll.

As of beta 3, desktop.dll is no longer required to be loaded to load

systray.dll. But if desktop.dll is loaded, it must be the May 26 build

or later.

Dock to Wharf

If you want the systray in a wharf tile instead of on the desktop

then you can load systray.dll as wharf module instead of a load

module. Instead of the LoadModule line, use something like:

*Wharf "System Tray" .none @C:\Litestep\systray.dll

Functions such as always on top, dragging, and dynamic sizing are

not available while the tray is docked to the wharf.

Configuration

SystrayAlwaysOnTop

If this option is present, it causes the tray window to appear

on top of all other windows. By default the tray is anchored

to the desktop.

SystrayAutoSize "<horizontal> <vertical>"

Determines how the tray is automatically resized when icons are

added or removed. Horizontal can be left or right and vertical

can be up or down. Defaults are right and down. This option

controls how the tray window is resized, where SystrayDirection

controls how the icon are placed inside the tray. Note that

unlike SystrayDirection, you must specify the horizontal first

and vertical second: "left up", not "up left".

SystrayBitmap "<bitmap> <border-left> <border-top> <border-right> <border-bottom> <method>"

Sets the bitmap file and border widths used for skins. See the

discussion of skins below. By default the tray is transparent. If

the method parameter has a value of "tiled" then the dynamic

sections of the skin bitmap are tiled rather than stretched. It is

recommended that for tiled skins you make the tile reasonably

large in order to reduce flicker during painting.

SystrayBorderDrag

If this option is present, you will be able to drag the tray by

pressing and holding the left mouse button over the border or

any area not covered by an icon.

SystrayBorderX <n>

SystrayBorderY <n>

Specifies the amount of space (in pixels) between the border

and the icons, horizontal and vertical respectively. Default is 0.

SystrayDirection "<direction> <wrap-direction>"

Controls the icon layout. The direction can be one of: left, right,

up, down. The wrap-direction can be up or down if direction is

left or right (horizontal tray), or left or right if direction is up

or down (vertical tray). The default direction is right and the

default wrap-direction is up.

SystrayDockToShortcutGroup <n>

Docks the tray to shortcut group n. The tray will move when the

shortcut group is moved and will show/hide when the shortcut

group is shown/hidden. In order for this to work you must also

use Ender's EasyCuts 2.5+.

SystrayHidden

If this command is present the tray will be initially hidden. Use

!SystrayShow or !SystrayToggle to show it.

SystrayHideIfEmpty

Causes the tray to be hidden if there are no icons.

SystrayIconSize <n>

Tray icons are stretched (if necessary) to be n x n pixels in

size. The default is 16.

SystrayMinWidth <n>

SystrayMinHeight <n>

Ensures that the tray will always be at least n pixels in width

or height. The default is -1 (no minimum).

SystrayMaxWidth <n>

SystrayMaxHeight <n>

Ensures that the tray will never exceed n pixels in width or

height. The default is -1 (no maximum).

SystrayNoTransparency

If you're using a bitmapped background with no transparent areas

then you can add this command to enable flicker free painting.

SystrayX <n>

SystrayY <n>

Sets the x or y position (screen coordinates, pixels) of the

tray. Negative values are interpreted relative to the bottom

right corner of the screen. The default is -1 (screen width or

height).

SystraySnapDistance <n>

While dragging, if the tray is moved to a position less than

n pixels from a screen edge, it will be snapped to that edge.

If n is 0 then snap to edge is disabled. Default is 4.

SystraySpacingX <n>

SystraySpacingY <n>

Specifies the number of pixels of spacing between icons in

the tray, horizontal and vertical respectively. Default is 2.

SystrayWrapCount <n>

Specifies the maximum number of icons on a row (horizontal)

or column (vertical) before wrapping. The default is -1 (do not

wrap).

Bang Commands

!SystrayHide

Hides the tray window.

!SystrayMove <x> <y>

Moves the tray to screen position x, y (in pixels).

!SystrayShow

Shows the tray window after having been hidden.

!SystrayToggle

Toggle the visible state (show/hide) of the tray window.

Skins

Instead of a standard transparent system tray, systray.dll also

supports skins (bitmapped background and borders). The systray

uses 9 bitmaps: a bitmap for each corner, one for each side

and one for the icon area. For efficiency, all these bitmaps are

stored in a single .bmp file. The SystrayBitmap commands takes

this .bmp file along with four border widths as its parameters.

These border widths specify the widths (left and right borders)

and heights (top and bottom borders) of the borders. Corner

bitmaps are determined by the borders they join, ie, the top

left corner's bitmap has the width of the left border and the

height of the top border. The width of the top and bottom

borders, the height of the left and right borders, and both

the width and height of the center bitmap are calculated from

the border widths and the size of the entire bitmap.

As I found out, Enlightenment has a similar function called edge

scaling (actually, it's a function of Imlib). If you're familiar

with that, skins work the same way.

Note: Not all the borders have to be present. If you don't

want a border, use 0 as its width. It is also possible to have

no borders, just a single bitmap.

Pseudo-transparency is also available in skins. Areas which are

to be transparent should be pink (RGB 255, 0, 255). Corner bitmaps

always support transparency, and border and center bitmaps

support it when the drawing method is set to "tiled".

I've added a collection of sample configurations which take

advantage of skins. Check out the samples dir in the zip.

--

Maduin maduin@dasoft.org


sysVWM.dll

---------------------------------------------------------------------------------

--------------------

-= sysVWM version 6.3a =-

--------------------

Two_toNe - 06/07/2000

*********************

*Fixed the bug that made SysVwm only use the PixmapPath, now any path will work.

*Added !VWMMove X Y, to allow the vwm to be repositioned without scripting.

*Added VwmCenterImagesX & VwmCenterImagesY, to allow screen centering of the vwm window.

*********************

***************

*New addition by maduin: VWMonSwitchToN where N is the desk being

*switched to; executes a bang when switching to desk # N -TimewarpX

***************

---------------

I: Installation

---------------

Place sysvwm.dll in any directory you choose. Most people would put it in the litestep directory for simplicity.

Then edit your step.rc, removing or commenting out your old vwm.dll or lsvwm.dll line, and inserting the following line:

LoadModule c:\litestep\sysvwm.dll

Or, if you wish to run sysVWM inside your wharf, like the old lsvwm, then add this line (make sure you are still loading wharf.dll):

*Wharf "sysVWM" .none @sysvwm.dll

Recycle litestep, and you are good to go!

------------

II: Features

------------

This section lists and describes features for sysVWM.

---------------

Mouse functions

---------------

VWMMouseRight #

---------------

Allows you to define which functions your right mouse button do. Defaults to 1.

VWMMouseLeft #

--------------

Allows you to define which functions your left mouse button do. Defaults to 2.

VWMMouseMiddle #

----------------

Allows you to define which functions your middle mouse button do. Defaults to 0.

Valid entries for the above are: 0 - disables mouse button, 1 - button will switch to the vwm that you click on, 2 - button will drag the miniwindows and the vwm.

Drag and drop is also supported. You can drop a file on sysVWM, and the file will open inside the virtual desktop that you drop it on.

----------------------------

commands (step.rc and !bang)

----------------------------

In addition to the normal "undocked" mode, sysVWM can be loaded as a wharf module, allowing you to use the more advanced options even while docked inside the wharf. Some options are disabled when on the wharf, like the ability to specify your own height, width, and x,y positioning. Generally, if an option doesn't make sense to be available to a wharf module, then it has probably been disabled. Rollup is disabled, Reset does nothing, etc.

*Wharf "sysVWM" .none @sysvwm.dll

The module does not load anything out of the bitmap parameter, but it is still needed so that wharf.dll will load sysVWM. sysVWM will use its regular method for displaying bitmaps.

********** ADDED COMMANDS **********

VwmCenterImagesX &VwmCenterImagesY

----------------

Tells sysvwm to use the center of the screen as the 0 coordinate. Meaning, VWMX -20 would be set to 20 pixels to the left of the screen center. This makes it easier for themers to set it up for different screen resolutions.

************************************

VWMNoSwitchOnFocus

------------------

Prevents automatic virtual desktop switching when the system focus changes to a window that is outside the current desktop.

VWMFocusCenter

--------------

Sets your system focus to whatever window is in the center of the screen when you switch desktops.

VWMNoShow

---------

Sets initial mode for !VWMRollup to hidden. In other words, the vwm will be hidden when this option is used. !VWMRollup would be used to display the vwm.

VWMNoGathering

--------------

Prevents automatic "gathering" of all windows to the first virtual desktop upon a recycle of litestep.

VWMNoMove

------------

Disables the ability to drag the vwm around.

VWMShowIcons

------------

sysVWM will paint an icon inside each miniwindow. The icon associated with the task that the miniwindow represents will be used.

VWMIconSize #

-------------

Specifies the size that you prefer each icon to be drawn at. Default value is 16.

VWMAutohide

-----------

Enables autohide features. Autohide will work only when the vwm is docked against one of the sides of the screen. If you drag the vwm away from the side it is docked on, autohide will be turned off until the vwm is returned to the side of the screen again.

VWMAutohideDistance #

---------------------

When autohide features are enabled, this value is used to determine how close to the edge of the screen you must be to show the vwm. This value will default to 3 if not used.

VWMAutoSwitch

-------------

This feature will allow sysVWM to automatically switch desktops when your mouse cursor reaches the edge of the screen. For example, if you move your mouse to the right edge of your screen, then sysVWM will switch to the next desktop to the right.

VWMAutoSwitchDistance #

-----------------------

This value determines how far from the edges of the screen your cursor needs to be before VWMAutoSwitch kicks in and changes your desktop. This setting defaults to 1.

VWMAutoSwitchDelay #

--------------------

When VWMAutoSwitch is enabled, this value determines the approximate number of milliseconds to wait before switching vwm's when the mouse reaches the edge of the screen. Default is 50.

VWMTitlebars

------------

Enables the titlebars on the windows in the miniview.

VWMTitlebarMod #

----------------

sysVWM will use this modifier when calculating the height of the titlebars. sysVWM will divide the height of the desktop by this modifier, then display a titlebar at that ratio. So if you specified VWMTitlebarMod 2, then your titlebars would be half the height of each virtual window. This setting defaults to 16.

VWMBevel

--------

Enables the bevel on windows in the miniview. The bevel highlight will use the color specified in VWMForeColor, and the shadow will use VWMBorderColor. The windows will then be filled with the color specified in VWMWinColor.

VWMSnapWidth #

--------------

When dragging the vwm window around, it will snap to the edge of the screen when it comes within the number of pixels specified in #.

VWMAlwaysOnTop

--------------

Keeps the vwm window above all other windows. If this is not specified, sysVWM will be below all other windows.

*VWMSticky <text>

-----------------

Enables and defines sticky settings. When you switch desks, sysVWM will match the <text> against the window titles and classes in your current virtual desktop, and any windows that match will be carried to the new desktop.

VWMForeColor ######

-------------------

Sets the color of the "mini-windows" that represent an open window. Uses default litestep color format.

VWMBackColor ######

-------------------

Sets the color of the background for sysVWM. Uses default litestep color format.

VWMSelBackColor ######

----------------------

Sets the color of the shading that is applied to a selected desktop. Uses default litestep color format.

VWMBorderColor ######

---------------------

Used for the border of the "mini-windows", and the dividing lines between each desktop window. Uses default litestep color format.

VWMWinColor ######

-------------------

Sets the color of the background of the windows when VWMBevel is specified. Uses default litestep color format.

VWMDesksX #

-----------

Number of desktops you want to have on the X axis.

VWMDesksY #

-----------

Number of desktops you want to have on the Y axis.

VWMx #

------

Tells sysVWM how many pixels down from the top of the screen you want the vwm to be placed at. Negative numbers are also valid, and will make sysVWM use the bottom of the screen.

VWMy #

------

Tells sysVWM how many pixels across from the left side of the screen you want the vwm to be placed at. Negative numbers are also valid, and will make sysVWM use the right side of the screen.

VWMwidth #

----------

The width of the entire vwm.

VWMheight #

-----------

The height of the entire vwm.

VWMBackBmp <bitmap>

-------------------

sysVWM will use this bitmap instead of the color specified in VWMBackColor. VWMBackBmp .snapshot will take a snapshot of the desktop to use as the background here.

VWMSelBmp <bitmap>

------------------

Makes sysVWM ignore the VWMSelBackColor and use this bitmap to paint on the background of the selected virtual window.

VWMTitlebarBmp <bitmap>

-----------------------

Uses a bitmap for the titlebar representations in the miniviews. If a bitmap is not specified here, then VWMBorderColor will be used to fill the titlebars.

VWMWinBmp <bitmap>

------------------

This bitmap will be used for the tiny windows in the miniviews. VWMForeColor will be used if no bitmap is specified here.

********** ADDED BANG COMMANDS ***********

!VWMMove X Y

------------

Moves the vwm window to the X and Y coordinates. If home is set as the coordinates, it moves the vwm to the VWMX and VWMY coordinates.

******************************************

!VWMUp, !VWMDown, !VWMLeft, !VWMRight

-------------------------------------

Using these bang commands will change the active desktop, moving one desktop over in the direction specified.

!VWMDesk #

-------------------------------------

Changes the active desktop, moving your focus to the desktop specified with #.

!VWMRollup

----------

You can hide sysVWM by using the bang command !VWMRollup. This command will hide and show the vwm, acting as a toggle.

!VWMReset

---------

This will reload the step.rc settings for the vwm. Useful for when you drag the vwm to a place where you can't get at it anymore. Just hit !VWMReset, and it reloads the vwm at the coordinates you set in the step.rc.

!VWMGather

----------

Brings all open windows to your current desktop. This command functions independently of VWMNoGathering.

!VWMOpen <desk> <command> <parameters>

--------------------------------------

Opens the file or program specified in <command> with the given <parameters> within the virtual desktop specified in <desk>. For example, the command !VWMOpen 0 notepad will open notepad in the top left vwm.

!VWMMoveApp <direction>

-----------------------

This command will move the active window one virtual desktop over in the direction you specify for <direction>. Valid directions are Up, Down, Left, and Right.

!VWMHide

--------

Hides the vwm window.

!VWMShow

--------

Shows the vwm window.

------------

III: Contact

------------

Any comments, complaints, or suggestions are encouraged.

Killarny:

deborar@carr.org

http://www.carr.org/~deborar

If you interested in anything else I have done, check out my website - and thank you for your interest in sysVWM.


Tasks.dll

---------------------------------------------------------------------------------

===================================================

===================================================

=tasks.dll - it makes your coffee. Sorry no decaf!=

===================================================

===================================================

====== Written by: ================================

================== Chris Rempel (jugg) ============

===================================================

================== http://jugg.logicpd.com/ =======

================== jugg@dylern.com ================

===================================================

===================================================

====== Adapted from: ==============================

==================== [rdj]'s tasks.dll ============

==================== Remco de Jong ================

===================================================

==================== http://litestep.rdj.cg.nu/ ===

==================== rdj@telekabel.nl =============

===================================================

===================================================

= Version: 0.90 = Release Date: 00.08.26 ==========

===================================================

===================================================

-=ToC=-

I. Introduction

II. Installation

III. Information

A} Commands

B} Changes

C} Notes

IV. Tips & Tricks

V. Disclaimer

=====================

== I. Introduction ==

=====================

===================================================

Welcome, and thank you for trying out this small

efficient task manager for Win32 shells. Tasks runs

under LiteStep and other shells that support the

LiteStep module standard such as DarkStep. Tasks

displays by default, 32x32 tiles with 16x16 icons

representing the currently running applications.

Each tile has a popup system menu for the specific

Application it represents, from which you can

control the Application window.

Furthermore, Tasks is completely customizable,

supporting a wide range of functionality from a

static block of tiles, to a popup menu interface,

with hide-on-click and zOrder positioning options.

But that is only a small portion of the numerous

options to customize your Tasks tiles.

======================

== II. Installation ==

======================

===================================================

Extract "tasks.dll" to your shell directory

(c:\litestep\). Open up your step.rc (your shell

configuration file) and find the section where all

of your "LoadModule" lines are located. Now, add a

new line that looks like this:

LoadModule "c:\litestep\tasks.dll"

Of course, adjust the path as necessary. Save your

step.rc and issue the shell's Recycle command

(!Recycle).

======================

== III. Information ==

======================

===================================================

The following Commands section is broken up into

four parts. You have the "MAIN", "NORMAL",

"MINIMIZED", and "SELECTED" sections. Basically,

Tasks has three different "states" it can be in.

First you have your default "NORMAL" state where

the application is neither minimized nor active.

Secondly, there is the "MINIMIZED" state where the

application is minimized.

Finally, there is the "SELECTED" or "active" state

where the application is the one with the focus.

By default the second and third states are

disabled (minimized, selected), defaulting all

tiles to have the "normal" look. You can activate

the "minimized" and "selected" states by setting

the first command under those two sections shown

below.

The three "state" sections each have an identical

set of commands to the other. All Task display

settings default to the "NORMAL" state settings

unless overridden by the equivelant command from

the "MINIMIZED" or "SELECTED" state commands.

Besides the three different "state" sections, you

have a "main" section of commands, who's values are

not effected by the current state of the

application, plus several action (!bang) commands

and filters.

===============

= A} Commands =

===============

The default value for each command is shown

following the command, just as you would set a new

value in the shell configuration file.

===================================================

=========== (Begin) MAIN Command Section ==========

===================================================

TasksX 0

- Sets the horizontal (x coordinate) value to

start placing Tasks tiles, relevant to the

direction in which they are arranged.

- accepts any negative or positive integer.

- value is relative to the "DockWindow"

- defaults to: 0

TasksY 0

- Sets the vertical (y coordinate) value to

start placing Tasks tiles, relevant to the

direction in which they are arranged.

- accepts any negative or positive integer.

- value is relative to the "DockWindow"

- defaults to: 0

TasksHeight 32

- Sets the vertical size (height) value.

- accepts any positive integer greater then 1.

- defaults to: 32

TasksWidth 32

- Sets the horizontal size (width) value.

- accepts any positive integer greater then 1.

- defaults to: 32

TasksSpacingX 0

- Sets the horizontal seperation (spacing)

between tiles.

- accepts any positive or negative integer.

- defaults to: 0

TasksSpacingY 0

- Sets the vertical seperation (spacing)

between tiles.

- accepts any positive or negative integer.

- defaults to: 0

TasksDirection "right"

- Sets the directional postion new tiles are

added relevant to the values given in

[TasksX] and [TasksY].

- accepts one of the following: "up", "down",

"left", "right".

- when set to "up" or "left". If you set [TasksY]

or [TasksX] respectively to zero 0, the zero

acts like a negative zero.

- defaults to: "right"

TasksWrapDirection "down"

- Sets the directional postion tiles are wrapped

to relevant to the values given in [TasksX] and

[TasksY] when the [TasksWrapCount] limit has

been reached.

- accepts one of the following:

+ Either "up" or "down" if [TasksDirection] is

set to "left" or "right".

+ Either "left" or "right" if [TasksDirection]

is set to "up", or "down".

- when set to "up" or "left". If you set [TasksY]

or [TasksX] respectively to zero 0, the zero

acts like a negative zero.

- defaults to: "down"

TasksWrapCount 0

- Sets the maximum number of tiles that can be

displayed in one direction, before wrapping.

- accepts any positive integer or the following:

Set to 0 to disable.

Set to -1 to autowrap.

- defaults to: 0

TasksMaxTiles 0

- Sets the maximum number of tiles that can be

displayed.

- accepts any positive integer. Use 0 to disable.

When disabled, the maximum is limited by your

system memory.

- defaults to: 0

TasksDockWindow "DesktopBackgroundClass"

- Sets the window inside of which tiles will be

displayed.

- accepts a string in the format of:

"ClassName;WindowName" -Notice the semicolon.

Or just the "ClassName" by itself.

To force no DockWindow set to ".none".

See [TaskszOrder] for more information.

- defaults to: "DesktopBackgroundClass"

If a valid LiteStep desktop window does not

exist, then it will default to no DockWindow,

the same as setting ".none"

TasksDragDistance 4

- Sets the distance a tile must move before it is

registered as movement, rather then a mouse

click.

- accepts any positive integer.

- defaults to: 4

TasksSetTimer 250

- Sets the Update Timer refresh rate in

milliseconds. This is how often tasks checks to

see if any windows have changed, and updates

its display.

- accepts any value greater then or equal to 250.

- defaults to: 250

TasksIconSize 16

- Sets the size of the displayed Icon on the tile

- accepts any positive integer greater then 1.

- defaults to: 16

TasksDisplay all

- Sets what application "states" (min,sel,normal)

to create Tiles for.

- accepts any one or combination of:

normal, minimized, selected, all

all is equivelant to using the combination of

the three previous ones.

- defaults to: all

TaskszOrder floating

- Sets whether the Task Tiles are always on top or

floating.

- accepts "floating" or "ontop".

- NOTE: on bottom status is only obtained by

loading a valid LiteStep Desktop module

before tasks.dll, and leaving the Tasks

command "TasksDockWindow" to its default

setting.

- defaults to: floating

TasksTransparency fake

- Sets the transparency level of the Tasks Tiles

when and where the Pink (FF00FF, RGB 255,0,255)

color is found in the Tile.

- accepts "fake", "real", "none".

- defaults to: fake

TasksMButton1 !none

- Sets the command to be executed when the left

mouse button is clicked on a Tile.

- accepts any !Bang command or Executable. Or the

special Task command ".syspopup" which shows

the system menu for the relevant application.

Regardless of what this is set to, the left

button always acts as a normal click on the

tile as well.

- defaults to: !none

TasksMButton2 .syspopup

- Sets the command to be executed when the right

mouse button is clicked on a Tile.

- accepts any !Bang command or Executable. Or the

special Task command ".syspopup" which shows

the system menu for the relevant application.

- defaults to: .syspopup

TasksMButton3 !Popup

- Sets the command to be executed when the middle

mouse button is clicked on a Tile.

- accepts any !Bang command or Executable. Or the

special Task command ".syspopup" which shows

the system menu for the relevant application.

- defaults to: !Popup

TasksAutoArrange

- If set, Tasks tiles will be rearrange to close.

any gaps made if a single tile is dragged away

from the group. You do not need to set this if

you do not drag Tiles around.

- boolean value: true if set, otherwise false.

TasksHideMinAppBar

- If set, Tasks will hide all minimized

application bars from the viewable desktop area

- boolean value: true if set, otherwise false.

TasksMoveAll

- If set, when any tile is dragged and dropped on

the desktop, all Tasks tiles will be moved and

rearranged at that location.

- boolean value: true if set, otherwise false.

TasksNoMinimizeOnClick

- If set, when clicking on the tile of the active

application, the application will -not- be

minimized. Otherwise it would be.

- boolean value: true if set, otherwise false.

TasksNoMove

- If set, all dragging movement of the tiles are

disabled.

- boolean value: true if set, otherwise false.

TasksStartHidden

- If set, all Tasks tiles will be hidden on load/

recyle of the shell.

- boolean value: true if set, otherwise false.

TasksNoHints

- If set, no popup hints containing the

applications title will be displayed.

- boolean value: true if set, otherwise false.

TasksNoIcons

- If set, no icons will be displayed on the tiles

although, custom "pix" (bitmaps) will be.

- boolean value: true if set, otherwise false.

TasksUseWindowsSettings

- If set, all display of the Tasks tiles gets

handled by windows. This setting uses the

system color schemes, fonts, and icons. No

custom settings can be used from of the three

states commands, and only some of the Main set.

However if you use "TasksHighlightSelected"

the system will paint the active task tile the

foreground color.

- boolean value: true if set, otherwise false.

TasksTitles

- If set, turns on the display of application

titles on the Tasks tiles for -non- minimized

and -non- active applications.

- boolean value: true if set, otherwise false.

TasksTitleMinimized

- If set, turns on the display of application

titles on the Tasks tiles for minimized

applications only.

- boolean value: true if set, otherwise false.

TasksTitleSelected

- If set, turns on the display of application

titles on the Tasks tiles for the active

(selected) application only.

- boolean value: true if set, otherwise false.

=====!Bang Commands==============================

=================================================

!TasksGather

- parameters: none

- Issuing this command will re-position all

tiles back to their original position.

!TasksHide

- parameters: none

- Issuing this command will hide all tiles.

!TasksMove

- parameters: x,y

'x' is any positive or negative integer

representing the horizontal (x coordinate)

value to position the tiles at.

'y' is any positive or negative integer

representing the vertical (y coordinate)

value to position the tiles at.

- Issuing this command will position the tiles

at x,y values passed, or if no values were

specified, it will position the tiles at

the current mouse coordinates.

!TasksShow

- parameters: none

- Issuing this command will show all tiles.

!TasksSwitch

- parameters: "next" or "prev"

- Issuing this command will switch the active

application to either the "next" or

"previous" application in the Tasks list. If

no parameters are specified, the command is

ignored. This command only switches between

applications that are represented by Task

Tiles.

!TasksToggle

- parameters: none

- Issuing this command toggles the visibility

state of the tiles, by either hiding or

showing them, opposite of their current

visible state.

!TasksDisplay

- parameters: "normal" or "minimized" or

"selected" or "all" or any

combination first three options.

- Issuing this command will change what type

of Tiles Tasks.dll will display. See

"TasksDisplay" command for more information.

!TasksDockWindow

- parameters: "ClassName;WindowName"

'ClassName' is the Class of the Window you

want to dock the Task Tiles to.

'WindowName' is the Caption of the Window

you want to dock to.

or set to ".none" to not dock to any window.

- Issuing this command will set or remove the

Task Tiles DockWindow. If set to

"DesktopBackgroundClass", while using a valid

LiteStep Desktop window, the Task Tiles will

have an "always on bottom" zOrder style.

(This does not affect the TaskszOrder value

and vise-versa)

See "TasksDockWindow" for more information.

!TaskszOrder

- parameters: "ontop" or "floating"

- Issuing this command set the Task Tiles to

be ontop of other windows or not. This

command only has affect within the respect

of the TasksDockWindow value. Most users

will want to set "TasksDockWindow" to

".none" in order to have the expected result

while using this "!TaskszOrder". See the

command "TaskszOrder" for more information.

!TasksMinimize

- parameters: none

- Issuing this command will minimize all

windows that Tasks.dll displays a Tile for.

!TasksMaximize

- parameters: none

- Issuing this command will maximize all

windows that Tasks.dll displays a Tile for.

!TasksRestore

- parameters: none

- Issuing this command will restore all

windows that Tasks.dll displays a Tile for.

=====Task Filters================================

== All "text" fields are case sensitive! ========

=================================================

*TasksIcon

- parameters: "text", "filename", n

- Multiple settings of this command are

allowed and the maximum number is limited by

system memory.

- It is used to specify a custom icon for any

tile who's application's title or class

matches the text specified in the "text"

field. The "filename" is any icon resource

contianing a valid icon in the position

specified by the positive integer "n".

*TasksIgnore

- paramters: "text"

- Multiple settings of this command are

allowed and the maximum number is limited by

system memory.

- Removes all tiles for applications who's

class or title matches the string passed in

the "text" field.

*TasksAdd

- parameters: "text"

- Multiple settings of this command are

allowed and the maximum number is limited by

system memory.

- Adds a tile for any application who's class

or title matches the string passed in the

"text" field.

*TasksPix

- parameters: "text", "filename"

- Multiple settings of this command are

allowed and the maximum number is limited by

system memory.

- It is used to specify a custom bitmap for

any tile who's application's title or class

matches the text specified in the "text"

field. The "filename" is either the full

path and filename to a valid bitmap, or the

filename to a valid bitmap located in the

shell's image/theme directory.

===================================================

============ (End) MAIN Command Section ===========

===================================================

===================================================

========== (Begin) NORMAL Command Section =========

===================================================

TasksIconX -2

- Sets the horizontal (x coordinate) value to

place the Icon at inside of the tile.

- accepts any positive integer, -1,-2, or -3. See

the table at the end of the command section for

explanation of negative values.

- defaults to: -2

TasksIconY -2

- Sets the vertical (y coordinate) value to

place the Icon at inside of the tile.

- accepts any positive integer, -1,-2, or -3. See

the table at the end of the command section for

explanation of negative values.

- defaults to: -2

TasksPixX 1

- Sets the horizontal (x coordinate) value to

place the Custom bitmap at inside of the tile.

- accepts any positive or negative integer.

- defaults to: 1

TasksPixY 1

- Sets the vertical (y coordinate) value to

place the Custom bitmap at inside of the tile.

- accepts any positive or negative integer.

- defaults to: 1

TasksBgColor FF00FF

- Sets the BackGround color of the tile.

- accepts any color format the shell supports.

Usually in the form of RBG Hex. Use FF00FF or

RGB 255,0,255 (pink) for transparency.

- defaults to: FF00FF

TasksDarkColor FF00FF

- Sets the bottom/right border color of the tile.

- accepts any color format the shell supports.

Usually in the form of RBG Hex. Use FF00FF or

RGB 255,0,255 (pink) for transparency.

- defaults to: FF00FF

TasksLightColor FF00FF

- Sets the top/left border color of the tile.

- accepts any color format the shell supports.

Usually in the form of RBG Hex. Use FF00FF or

RGB 255,0,255 (pink) for transparency.

- defaults to: FF00FF

TasksBgImage ".none"

- Sets the BackGround image of the tile.

- accepts any image format supported by the shell

which is normally only BMP (bitmap).

Use ".none" for no image/ transparency. Any

portion of the image that contains the color

FF00FF Hex will be displayed as transparent.

- defaults to: ".none"

=====Title Commands==============================

== These are only available if "TasksTitles" ====

== has been set. ================================

=================================================

TasksTitleHeight 12

- Sets the vertical size (height) value of the

Title box.

- accepts any positive integer greater then 1.

- defaults to: 12

TasksTitleWidth 28

- Sets the horizontal size (width) value of

the Title box.

- accepts any positive integer greater then 1.

- defaults to: 28

TasksTitleX -2

- Sets the horizontal (x coordinate) value to

place the Title box at inside of the tile.

- accepts any positive integer, -1,-2, or -3.

See the table at the end of the command

section for explanation of negative values.

- defaults to: -2

TasksTitleY -3

- Sets the vertical (y coordinate) value to

place the Title box at inside of the tile.

- accepts any positive integer, -1,-2, or -3.

See the table at the end of the command

section for explanation of negative values.

- defaults to: -3

TasksTitleIconX -2

- Sets the horizontal (x coordinate) value to

place the Icon at inside of the tile when

titles are enabled, overriding [TasksIconX].

- accepts any positive integer, -1,-2, or -3.

See the table at the end of the command

section for explanation of negative values.

- defaults to: -2

TasksTitleIconY -1

- Sets the vertical (y coordinate) value to

place the Icon at inside of the tile when

titles are enabled, overriding [TasksIconY]

- accepts any positive integer, -1,-2, or -3.

See the table at the end of the command

section for explanation of negative values.

- defaults to: -1

TasksTitlePixX 1

- Sets the horizontal (x coordinate) value to

place the Custom bitmap at inside of the

tile when titles are enabled, overriding

[TasksPixX].

- accepts any positive or negative integer.

- defaults to: 1

TasksTitlePixY 1

- Sets the vertical (y coordinate) value to

place the Custom bitmap at inside of the

tile when titles are enabled, overriding

[TasksPixY].

- accepts any positive or negative integer.

- defaults to: 1

TasksTitleFontSize 10

- Sets the font size for the title text.

- accepts any positive integer greater then 1.

- defaults to: 10

TasksTitleFont "Arial"

- Sets the font name(face) for the title text.

- accepts any valid windows font name.

- defaults to: "Arial"

TasksTitleFontColor C0C0C0

- Sets the font color of the title text.

- accepts any color format the shell supports.

Usually in the form of RBG Hex. Use FF00FF

or RGB 255,0,255 (pink) for transparency.

- defaults to: C0C0C0 (a light grey)

TasksTitleItalicize

- If set, italicizes the title text.

- boolean value: true if set, otherwise false.

TasksTitleNoEllipsis

- If set, turns off the display of Ellipsis

"..." shown at the end of truncated titles.

- boolean value: true if set, otherwise false.

TasksTitleUnderline

- If set, underlines the title text.

- boolean value: true if set, otherwise false.

TasksTitleBgColor FF00FF

- Sets the BackGround color of the title box.

- accepts any color format the shell supports.

Usually in the form of RBG Hex. Use FF00FF

or RGB 255,0,255 (pink) for transparency.

- defaults to: FF00FF

TasksTitleDarkColor FF00FF

- Sets the bottom/right border color of the

title box.

- accepts any color format the shell supports.

Usually in the form of RBG Hex. Use FF00FF

or RGB 255,0,255 (pink) for transparency.

- defaults to: FF00FF

TasksTitleLightColor FF00FF

- Sets the top/left border color of the title

box.

- accepts any color format the shell supports.

Usually in the form of RBG Hex. Use FF00FF

or RGB 255,0,255 (pink) for transparency.

- defaults to: FF00FF

===================================================

=========== (End) NORMAL Command Section ==========

===================================================

For the next two sections, the descriptions of each

command is exactly the same as the previous section

commands, accept that these are for overiding the

settings for Minimized apps and the Active app. Be

sure to set the first command in each of the

following sections to enable the rest of the

commands in each section! Each command in the next

two sections are followed by a command in

[brackets]. This means it defaults to that command

if not set, or if set, it overides that command

for any application that is either minimized or

selected(active).

===================================================

========= (Begin) MINIMIZED Command Section =======

===================================================

TasksHighLightMinimized

- If set, enables the rest of the commands in the

MINIMIZED Command Section.

- boolean value: true if set, otherwise false.

TasksMinIconX [TasksIconX]

TasksMinIconY [TasksIconY]

TasksMinPixX [TasksPixX]

TasksMinPixY [TasksPixY]

TasksMinBgColor [TasksBgColor]

TasksMinDarkColor [TasksDarkColor]

TasksMinLightColor [TasksLightColor]

TasksMinBgImage "" [TasksBgImage]

- If using empty quotes "" it will default to

[TasksBgImage]. Use ".none" to disable/make

transparent.

=====Title Commands==============================

== These are only available if ==================

== "TasksTitleMinimized" has been set. ==========

=================================================

TasksTitleMinHeight [TasksTitleHeight]

TasksTitleMinWidth [TasksTitleWidth]

TasksTitleMinX [TasksTitleX]

TasksTitleMinY [TasksTitleY]

TasksTitleMinIconX [TasksTitleIconX]

TasksTitleMinIconY [TasksTitleIconY]

TasksTitleMinPixX [TasksTitlePixX]

TasksTitleMinPixY [TasksTitlePixY]

TasksTitleMinFontSize [TasksTitleFontSize]

TasksTitleMinFont [TasksTitleFont]

TasksTitleMinFontColor [TasksTitleFontColor]

TasksTitleMinItalicize

TasksTitleMinNoEllipsis

TasksTitleMinUnderline

TasksTitleMinBgColor [TasksTitleBgColor]

TasksTitleMinDarkColor [TasksTitleDarkColor]

TasksTitleMinLightColor [TasksTitleLightColor]

===================================================

========= (End) MINIMIZED Command Section =========

===================================================

===================================================

========= (Begin) SELECTED Command Section ========

===================================================

TasksHighLightSelected

- If set, enables the rest of the commands in the

SELECTED Command Section.

- boolean value: true if set, otherwise false.

TasksSelIconX [TasksIconX]

TasksSelIconY [TasksIconY]

TasksSelPixX [TasksPixX]

TasksSelPixY [TasksPixY]

TasksSelBgColor [TasksBgColor]

TasksSelDarkColor [TasksDarkColor]

TasksSelLightColor [TasksLightColor]

TasksSelBgImage "" [TasksBgImage]

- If using empty quotes "" it will default to

[TasksBgImage]. Use ".none" to disable/make

transparent.

=====Title Commands==============================

== These are only available if ==================

== "TasksTitleSelected" has been set. ===========

=================================================

TasksTitleSelHeight [TasksTitleHeight]

TasksTitleSelWidth [TasksTitleWidth]

TasksTitleSelX [TasksTitleX]

TasksTitleSelY [TasksTitleY]

TasksTitleSelIconX [TasksTitleIconX]

TasksTitleSelIconY [TasksTitleIconY]

TasksTitleSelPixX [TasksTitlePixX]

TasksTitleSelPixY [TasksTitlePixY]

TasksTitleSelFontSize [TasksTitleFontSize]

TasksTitleSelFont [TasksTitleFont]

TasksTitleSelFontColor [TasksTitleFontColor]

TasksTitleSelItalicize

TasksTitleSelNoEllipsis

TasksTitleSelUnderline

TasksTitleSelBgColor [TasksTitleBgColor]

TasksTitleSelDarkColor [TasksTitleDarkColor]

TasksTitleSelLightColor [TasksTitleLightColor]

===================================================

========== (End) SELECTED Command Section =========

===================================================

===Negative number Positioning code===

Imagine the following grid as the Task tile. So,

when you specify -2 for x and -2 for y, the item

will be centered in the tile. If you specify -3 for

x and -1 for y, then the item will be placed in the

top right corner of the tile.

| x, y | x, y | x, y |

|-----------------------|

| | | |

| -1,-1 | -2,-1 | -3,-1 |

| | | |

|-----------------------|

| | | |

| -1,-2 | -2,-2 | -3,-2 |

| | | |

|-----------------------|

| | | |

| -1,-3 | -2,-3 | -3,-3 |

| | | |

|-----------------------|

If that still seems confusing, perhaps a little

description will help: (for x: -1 = left etc...)

x|left, center, right

x| -1 -2 -3

y| top, middle, bottom

y| -1 -2 -3

===================================================

= B} Changes =

==============

- 0.90 -

--------

+ Added TasksSetTimer

! Fixed memory corruption when no task tiles

were displayed.

! Fixed resource leak when a Tile had both a

custom bitmap and icon defined for it.

! Fixed code from loading a custom icon when

a custom bitmap was already loaded for

the same Tile.

- 0.89 -

--------

+ Added TasksDisplay

+ Added TaskszOrder

+ Added TasksTransparency

+ Added TasksTitleItalicize

TasksTitleMinItalicize

TasksTitleSelItalicize

+ Added TasksMButton1

+ Added !TasksDisplay

!TasksDockWindow

!TaskszOrder

!TasksMinimize

!TasksMaximize

!TasksRestore

- Removed TasksOnlySelected

- Removed TasksOnlyMinimized

- Removed TasksHideMinimized

- Removed TasksNoTransparency

- Removed TasksEnableTrueTransparency

- Removed TasksHideOnClick

- Removed !TasksOnBottom

!TasksOnTop

! Fixed internal update timer.

! Fixed more tasklist problems.

! Fixed mouse-click interaction with Tiles.

! Fixed in its entirety the Focus bug.

! Fixed a bug in dragging code while using

"TasksMoveAll".

! Fixed "!TasksSwitch" from crashing.

! Fixed memory corruption potential in all

!bang commands, while using an old

build of LiteStep.

! Fixed resource leak on quit/recycle.

* Changed "TasksWrapCount" to accept "-1" to

enable Auto Wrap at screen edge.

Use "0" to disable all wrapping.

* Changed Tile drag to support Auto Wrap.

* Changed "!TasksMove" to support Auto Wrap.

* Changed all movement code to keep Tiles on

screen. Now Tiles will only go off

screen if manually set to do so.

^ Other misc cleanup. There is a lot of changes

in this build, and more underway. Please

read the "NOTES" section for more info.

- 0.84 -

--------

+ Added minimal Drag&Drop support.

+ Added "TasksNoTransparency"

+ Added "TasksMButton2" and "TasksMButton3"

+ Added "TasksDockWindow"

- Removed "TasksAlwaysOnTop".

- Removed "TasksInjTray" (meaningless to you).

- Removed "TasksTestTransFix"

! Fixed certain items from not showing in the

TaskList. All should be well now.

! Fixed system popup menu from disapearing.

! Fixed Transparency issues for tiles and icons

! Fixed misc code and optomized settings.

! Fixed defualt settings/documentation issues.

^ Please read the corresponding news update on

my website for important information

as well as the Tips&Tricks section.

- 0.83 -

--------

! Fixed GDI resource leak in Paint handler.

! Fixed crash bug when using TasksAutoArrange.

^ For devs, I changed several project settings,

but mainly just link/include paths.

^ To help fix some transparency issues I added

a command "TasksTestTransFix". Use it and let

me know if you still get transparency issues.

- 0.82 -

--------

+ Added true transparency. Use the boolean

TasksEnableTrueTransparency to enable.

! Fixed TasksHideMinAppBar... again!

Third time is a charm, hopefully.

! Fixed Tooltips not updating.

! Fixed several movement/ update problems.

! Fixed multiple flicker/refresh issues.

^ And just some general clean up work.

- 0.81 -

--------

+ Added "TasksOnlySelected" boolean.

- Removed obsolete Tooltip code.

* Changed code dealing with misc focus issues.

! Fixed misc Painting issues.

! Fixed problems with "TasksUseWindowsSettings"

! Fixed incorrect cursor after a recycle.

! Fixed a problem where I forgot to uncomment

code in the last release, that fixes

problems with minimized application

bars.

! Fixed r-click popup menu from disapearing

randomly when the application itself

was minimized.

! Fixed task list, so now apps using

"WS_EX_APPWINDOW" will show up in the

task list, if they are Visible and are

a top level window.

- 0.80 -

--------

+ Added filter "*TasksAdd"

+ Added !TasksMove

+ Added TasksHideOnClick

+ Added TasksMaxTiles

+ Added TasksUseWindowsSettings

+ Added TasksHideMinimized

+ Added a whole lot of new commands for the

Normal/Min/Sel state settings.

Read the command section to see them.

+ Added !TasksSwitch

+ Added negative zero support for TasksX/Y when

using "up" or "left" for a direction.

+ Added code to keep tiles in the visible

window when dragging them around.

- Removed double internal task list, decreasing

memory usage significantly.

* Changed all !bang commands so they start with

!Tasksxxxx.

* Changed !TasksBottom to !TasksOnBottom and

!TasksTop to !TasksOnTop

* Changed all memory management to all dynamic

allocation, instead of static.

Making a much smaller memory usage.

* Changed !TasksGather so now it resets tile

positions back to their default setup

! Fixed ScreenSaver from showing in task list.

! Fixed MDI bugs

! Fixed Focus bug

! Fixed misc task list issues

! Fixed case sensitivity in commands

! Fixed minappbars from not being hidden.

! Fixed TasksOnlyMinimized from showing a tile

even after the application wasn't min.

! Fixed system popup menus from refreshing.

! Fixed tiles from being destroyed from alt+f4

! Fixed movement bugs.

! Fixed serveral GDI resource leaks. thanks dde

And a lot more... but I forget :/

- old -

-------

Will move the old version changes over when I

have the time.

===================================================

= C} Notes =

============

Big thanks to the beta testers and users that

reported and help track down and fix lots of bugs

that had previously escaped my attention. Thanks

to Tory for getting me to implement most of the new

features that you see in this version. We wrote

quite a few emails getting things tested and going.

The new window management Bang commands are limited

right now. They affect -all- windows that tasks.dll

displays a Tile for. In the next version individual

window control will be available.

zOrder functionality is handled differently from

what one might expect. A little explanation: Under

LiteStep, "onbottom" functionality is obtained by

"docking" or setting the "parent" of the module to

the LiteStep Desktop window. So, if you were to

run without the Desktop Module, you will find every

other module is either now "always on top" or

"floating" like a normal windows application. So,

the way that tasks.dll is implements its zOrder, is

unless you specify a specific a "DockWindow" using

the "TasksDockWindow" command, tasks.dll by default

docks to the LiteStep Desktop window if it exists.

This makes tasks.dll Tiles "onbottom" by default.

If you want to have the Tiles either "floating" or

"ontop" you have to first set the "TasksDockWindow"

command to ".none" then set the "TaskszOrder"

command to "ontop". The reason I've had to sorta

'hack' the functionality instead of making it

transparent to the user, is because I want to have

the option of setting the "dock windows" (parent

window) of the Task Tiles.

There is a slight bug in the movement code when

using the AutoWrapping feature along with the

"TasksMoveAll" command, but nothing major.

The new "!TasksDisplay" and "TasksDisplay" commands

are very powerful (in their own context). This

allows you complete control over what Tiles are

displayed determined by their current "state" and

can be changed on the fly using the !bang version.

I decided not to implement "mouse over" display and

Wharf support in this version as I was getting into

a feature loop, where I kept coming up with new

things to add and so delay the release. Hopefully

those two things will see the light of day in the

next major release.

I know my version increments really make no sense,

but I'm trying to cram everything in feature wise

that I want tasks.dll to have before I hit 1.00.

We should hit full feature implementation in the

next few releases, and then everything will be bug

squashing until the 1.00 final release.

This documentation may contain inaccuracies when

compared to the actual functionality of tasks.dll.

If you find any please let me know so I can fix it.

=====================

= IV. Tips & Tricks =

=====================

===================================================

Use only the following commands for a quick and

easy setup to get a Task List popup menu.

TasksWidth 150

TasksHeight 20

TasksUseWindowsSettings

TasksDirection "down"

TasksNoMove

TasksMButton1 "!TasksHide"

TasksStartHidden

; Only include the following two lines if you want

; the menu to appear on top of all other windows.

TasksDockWindow ".none"

TaskszOrder "ontop"

Then using a desktop module, like jDesk or the

DarkStep desktop.dll, or the LiteStep Desktop2.dll,

bind the following command to the mouse down action:

!TasksHide

And to the mouse up action bind the following:

!TasksMove !TasksShow

Now, whenever you click on the Desktop up will pop

a fast clean and convenient menu containing all of

the running applications.

---------------------------------------------------

If you are using the "TasksUseWindowsSettings"

boolean, you can still use the boolean

"TasksHighlightSelected" and the active task tile

will be automatically updated with your default

windows "foreground" color.

---------------------------------------------------

Using the "TasksDockWindow" feature:

Whatever window you want Tasks to dock into -MUST-

be loaded before tasks.dll is loaded!

Docking the Task tiles into a shortcut is slighty

tricky right now. The following should be a

general guideline in getting it to work.

...

LoadModule shortcut.dll

LoadModule tasks.dll

...

; the shortcut you want to have tasks put into MUST

; be the FIRST one listed!!

; the shortcut MUST also be set to be ON TOP!!

*shortcut "TaskTray" .....

*shortcut "all other shortcuts listed now" ....

TasksDockWindow "ShortcutClass;LSShortCut"

...

---------------------------------------------------

To make Tasks to be "always ontop" use this:

TasksDockWindow ".none"

TaskszOrder "ontop"

---------------------------------------------------

Will add in more tips & tricks when I have time.

---------------------------------------------------

=Credits/Thanks:=

=================

-[rdj] for providing the original tasks.dll source

and for a great concept to work off of!

-The great coders who've worked with me on this.

limpid, killarny, maduin, nimue, fahim, others.

-Re5ources popup source code.

-dde for some GDI code, fixing resource leaks.

-Gustav Munkby for true transparency code.

-Those who email with suggestions/bug reports/etc.

=================

= V. Disclaimer =

=================

===================================================

Copyright (C) 1999, Chris Rempel

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY

OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT

LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NON-

INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES

OR OTHER LIABILITY, WHETHER IN AN ACTION OF

CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF

OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR

OTHER DEALINGS IN THE SOFTWARE.


Textedit2.dll

---------------------------------------------------------------------------------

Text Edit (v2.0) by WhiteShadow (changty@muohio.edu) on 09-30-00

*******************************************************************

This is a small module that can be used to edit text files. It

could be useful in allowing you to edit your step.rc file on the

fly. However, it could also be very dangerous if used on the wrong

file. NOTE: Textedit v2.0 is a complete rewrite of Textedit and

many features have been removed or changed.

Installation:

1. Copy textedit2.dll into your litestep folder

2. Add the line

LoadModule c:\litestep\textedit2.dll

to your step.rc (with the appropriate drive letter and

path)

3. Recycle Litestep

Usage:

Bang Commands

-------------

!textappend "filename" "text to be added"

Appends "text to be added" (minus the quotes) to filename.

Look below for various escape codes.

!textdel "filename" "regular expression"

This will delete every line in "filename" that matches

the regular expression in quotes. Regular expressions

are described below.

!textreplace "filename" "regular expression" "replace string"

Files the lines that match the regular expression and

replaces it with replace string. More explained below

in the regular expressions secion.

Step.rc Options

---------------

TextDebug

If you have this line in your step.rc, lots of message boxes

will popup and help you debug problems using the module.

Escape Codes

------------

They backslash (\) character is used as an escape code. The

following are valid escape sequences:

\\ Backslash

\" Double quote

\^ Replaces with a bang (!)

\# Replaces with a dollar sign ($) (Useful for evars.

for example \#litestepdir\# will become $litestepdir$)

\1 Ignored and used in !textreplace for () matches

(explained below)

Any other use of backslash will be ignored (and if TextDebug is

in your step.rc, you will get an error message).

Regular Expressions

-------------------

Ok, if you know what regular expressions are, you should still

read this because only a handful of regex features are

implemented. I'm using relib, a a slightly midified REGEXP

library by Henry Spencer to handle the regular expressions.

Read the included relib-readme.txt for more details.

The quick run down of supported features is the use of the

following special characters:

. ? * + [ ] $ ^ ( ) | \

Ok, now to explain what all these are and what regular

expressions are in general.

The simplest regular expression is just a string. For example,

"a" would match all strings with the character a in it, "abc"

would match all strings with abc in it.

Now, the first special character is a period. This is the wild

card character. So "a.b" would match any string that contained

an 'a' followed by any character followed by a 'b'. It would

match "abb", "a1b", "ajhdakjs a b aslkjf", "a b", "extra a_b

extra", and so forth.

The next special character is a ?. This means that the previous

character occurs zero or one time. So "a.?b" would match

everything that "a.b" matched and everything that "ab" would

match.

* means that the previous character is repeated zero or more

times. This is pretty much a catch all. So ".*" would match

any string.

+ matches the previous character one or more times.

[]'s are used to enclose a group of characters to match.

For example, "A[a-z]+Z" would match "AanczZ", "AaZ", or any set

of lowercase letters enclosed by an 'A' and a 'Z'. Note that

because a + is used, "AZ" would not match while "A[a-z]*Z]"

would match "AZ". You can also negate what is encosed in

brackets with the ^ character (so [^a-z] would mean not a

lower case letter).

$ and ^ are anchor characters. $ means that the match has to

occur at the end of the string and ^ means that the match has

to occur and the beginning of the string. For example, "test$"

would match "this is a test" but would not match "test is a

this".

()'s are used to enclose a group. For example, (AB)+ would

match "AB", "ABAB", "ABABAB", etc. This gives more flexibility

for patters.

The pipe is used as an "or" operator. So "A|B" would match

all strings with an upper case A or an upper case B. Combine

this with parenthesis and do things like "Z(A|B)+Z" to match

"ZABABABZ".

And finally the \ is used as an esacpe code so you can use

the special characters in your matches.

Ok, so if that didn't completely confuse you, try searching

for some regular expression tutorials online. Note that relib

doesn't support all the neat regex stuff that perl does.

TextReplace

-----------

Hmm, a couple notes about TextReplace. In the replace field,

you can use a couple special characters. For example, & is

replaced by the whole string. So

!textreplace "file" "find" "&-found"

would convert "find" to "find-found". Or better yet,

!textreplace "file" "^\*Shortcut" "; &"

would comment all *Shortcuts definied in file.

Also, \1 matches with the inner-most, left-most parenthesis,

\2 matches the second inner-most, left-most parenthesis, etc.

So

!textreplace "file" "(hello)(.*)(there)" "\3\2\1"

would convert "hello test there" to "there test hello".

Here's another example:

!textreplace "file" "; *(\*Shortcut.*)" "\1"

This would uncomment all shortcuts.

History:

v2.0 (09-30-00)

-complete rewite of TextEdit.

v1.41 (07-08-00)

-I'm an idiot. Fixed the error using ^" in textreplace.

v1.4 (07-03-00)

+Added !textcopyfile

+Added TextCalculate

v1.3 (04-30-00)

-Changed !textadd to !textappend

+Added !textinsert

+Added !textreplace

+Added !textcomment and !textsetcommentchar

+Added TextNotCaseSensitive

v1.2 (04-10-00)

+Added * at end of strings

+Added !textdelsingle

v1.1 (04-04-00)

+Added TextSubst

v1.0 (04-02-00)

-initial release

Anyway, that's all, enjoy!

Feel free to send me comments or bugs.

WhiteShadow


Timer.dll

---------------------------------------------------------------------------------

timer.dll 0.5 timer.txt

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

General

¯¯¯¯¯¯¯

Timer is a LiteStep module that gives you the ability to

execute commands after a certain amount of time has elapsed.

Kind of like an egg timer, just that it moves the eggs from the

cooker itself.

Installation

¯¯¯¯¯¯¯¯¯¯¯¯

Copy timer.dll to your Litestep directory and add a line like

the following to your step.rc file:

LoadModule $LitestepDir$timer.dll

After recycling Litestep you will have access to the timers.

Bangs

¯¯¯¯¯

!TimerStart name

Starts a timer

!TimerReset name

Restarts the timer, same effect as !TimerKill followed by

!TimerStart thereafter

!TimerStop name

Kills the timer and executes the command associated with it

!TimerKill name

Kills the timer without executing the command

!TimerStartGroup group

Starts all timers in group

!TimerResetGroup group

Restarts all timers in group

!TimerStopGroup group

Kills all timers in group and executes the commands associated

with them

!TimerKillGroup group

Kills all timers in group without executing the commands

!TimerStartAll

Starts all timers

!TimerResetAll

Restarts all timers

!TimerStopAll

Kills all timers and executes the commands associated with them

!TimerKillAll

Kills all timers without executing the commands

!TimerAdd name [group] timeout[unit] command

Dynamicly adds a timer, same syntax as the *Timer lines

!TimerUpdate name [group] timeout[unit] command

Updates a timer with new setting, anything but the name can be

changed

!TimerRemove name

Removes a timer

!TimerRemoveGroup group

Removes all timer in a group

!TimerRemoveAll

Removes all timers

!TimerStatus

Displays a list of all timers and their status

RC commands

¯¯¯¯¯¯¯¯¯¯¯

*Timer name [#flags] [group] timeout[unit] command

Name is anything you like, as long as it doesn't contain any

spaces.

Flags is a combination of s and/or l prepended with a #. If

the s flag is specified the timer will be started when the

module is loaded/refreshed. If the l flag is specified the

timer will automagicly restart after the command is executed.

It will continue in a loop until you kill/stop it.

Group is the name of the group, which this time will be a

part of. May be any string without spaces as long as the first

character isn't a digit (0-9). The group is optional.

Timeout is the time that the timer should wait before it

executes the command. The time is in milliseconds (1 second =

1000 ms). By adding a trailing s, m or h to the time you can

change the time unit. s is for seconds, m for minutes and h for

hours. The suffix should follow the time directly without any

space, like 5s or 2m.

Command is any valid LiteStep command, such as a bang or a

path.

Add a line like this one for each timer.

Changes

¯¯¯¯¯¯¯

Date Ver Changes

21 oct 2001 0.5 Added !Refresh support

Support for looping timers

Support for autostarting timers

Source code restructured and cleaned up

The source now comes in a separete zip file

22 sep 2001 0.4.1 Memory cleanup bug fixed

Revision ID bug fixed

18 sep 2001 0.4 Runtime addition/update/removal of timers

Timer status display

09 sep 2001 0.3 Dynamic allocation of memory

Unlimited number of timers supported

Added timer groups

14 jul 2001 0.2 Added !TimerXXXAll bangs

Added timeunit support

New version system

07 may 2001 1.0 First public release

To-do-list

¯¯¯¯¯¯¯¯¯¯

* Visual countdown display

* Ability to exec commands at a certain date/time

If you've got any ideas, feel free send me a mail.

Feedback

¯¯¯¯¯¯¯¯

If you have a bug report, feature request, or any kind of

feedback, feel free to email it to me at erik@alfafish.com.

For more info and other LiteStep modules and programs, check

out www.alfafish.com

Sourcecode

¯¯¯¯¯¯¯¯¯¯

The sourcecode for this module is distributed under the GNU

Public License. If you didn't get the sourcecode with this

module, you can download it from www.alfafish.com

_______________________________________________________________

Erik Christiansson, aka Sci erik@alfafish.com


TrayTasks.dll

---------------------------------------------------------------------------------

TrayTasks ver 1.7

-----------------

1. Introduction

This module will show you a currently-running-tasks in systray. Of course

it is useful when your taskbar is hidden (as mine) and you don't want to use

any task manager in wharf.

2. Installation

Extract traytasks.dll to your LiteStep directory

Add this line where your system modules are:

LoadModule c:\litestep\traytasks.dll

To avoid crashes on recycles in Win98 load TrayTasks BEFORE module which

provides system tray in your system.

That's all. Now all your tasks will be in systray.

Customize it as you want. See details in traytasks.rc.

3. Features

TrayTasks displays the currently running tasks.

The module provides standard behavior:

- A Click will bring the program on top.

- A Right-Click will pop up a program's system menu,

- A Right-Click in separating area shows !Popup menu.

- A Click on icon of foreground app minimizes it.

Also you can assign and use keys-mouse combinations for

- closing windows

- minimizing windos

- (un)maximizing windows

It is possible to have a visual separation between current task icons

and icons of trayed apps (TrayedRoom and SystraySize modes).

You can define any windows always visible/hidden by caption or class

name. Now you can see icon for apps usually not shown in taskbar

(e.g. control panel applets as me)

Foreground task icon is shown highlighted with system selection color.

4. Thanks

Matt Legowski (Googer) and Traver Allen Wall for unvalued help with

testing.

Rilindo B Foster, Matt Legowski (Googer), Lucificus Abbadon (Affectator),

Nax,Traver Allen Wall, Dana Browder, Jugg and all other users for bugs

reporting.

R. Pell, Carlos Foster, Rilindo B Foster, Traver Allen Wall,

Edward Kreis, Wouter Meijerink, Mike Brown, Quattro, Kryten,

Matt Legowski (Googer), Sergey V. Popov and all other users for

suggestions.

5. History

VERSION 1.0

* First release.

VERSION 1.1 (24.02.99)

* Fixed icon flashing for busy tasks

VERSION 1.2 (27.02.99)

* Fixed invisibility of "iconless" apps. Now winlogo icon is used

for representation of those type of apps.

VERSION 1.3 (21.06.99)

* Sysmenu handling standardized

* Icon changing for busy tasks fixed

* Auto reordering feature added

* Customizing of icon for iconless windows added

* Customizable key-mouse strokes for closing, minimizing and (un)maximizing

windows added. Now you can minimize app even if it have no minimize

button!

* Showing or hiding task's windows by caption or class name added

* Separating trayed and normal tasks added

* Version info added

VERSION 1.4 (18.07.99)

* Used code by Maduin that allows other modules to take over the

functionality of Systray in new LS builds. Now you can use Systray

and TrayTasks together! But for old LS builds you have to stay with

version 1.3 :(

* Sysmenu handling bug in Win98 fixed

* Version info shown in !About and !AboutDetails commands added

VERSION 1.5 (21.07.99)

* Foreground task icon highlighting added.

* Added TrayTasksSwitchAlways to force task switching in VWM

enviroment with NoSwitchOnFocus enabled.

* Added !TrayTaskToggle bang command to toggle visibility TrayTasks

and corresponding step.rc command TrayTasksStartHidden to start

the module in invisible state.

VERSION 1.51 (22.07.99)

* Fixed highlighted icon flickering.

VERSION 1.6 (25.07.99)

* Added new mode with fixed size of systray (TrayTasksSystraySize).

* TrayTasksLargeIcons .rc command added to use large icons of apps

instead small. It can be useful when your tray icon size

noticeably larger then 16x16.

* Fixed bug with icon highlighting.

VERSION 1.7 (05.09.99)

* Right click in separating area shows !Popup menu.

* Improved system menu handling.

* Improved icons counting stability in modes with separating.

* Fixed bug with crashes on recycles in Win98. BUT TrayTasks must be

loaded BEFORE module providing system tray (usually systray.dll).

* Added AutoMinimize feature - minimizing foreground apps by single

click (as in Explorer with ActiveDesktop installed). It can be set

off by 'TrayTaskNoAutoMinimize' command.

* Added minimized apps bar hiding feature (disabled by default).

It can be set on by 'TrayTasksHideMinAppBar' command.

* Minor bug fixes.

6. Contact

You can contact me at...

Email - s.trofimov@iname.com

WWW - http://www.tv4studios.com/st/litestep/modules.html

ICQ - UIN 5320409

I'm always waiting for your suggestions.

Enjoy,

Sergey Trofimov


VariousBangs.dll

---------------------------------------------------------------------------------

A few bang commands written from ideas at MindStorm.

!SetWallPaper <bitmap>

!ChangeRes <bitsperpixel> <width> <height>

!ToggleScreenSaver

Ps. these are ideas 11, 48 and 54.

Source is included.

Remco de Jong - [rDJ]


Weatherdesk.dll

---------------------------------------------------------------------------------

WeatherDesk 0

WeatherDesk 0.56

by Fizzie

Table of Contents

Introduction

History

Installation

Configuration Options

Display Options

Weather Format Options and Variables

Weather Condition Bitmaps

Popup Forecast Window Options

Bang Commands

Multiple City Support

Popup Forecast Window

Sample STEP.RC

Introduction

WeatherDesk is a LiteStep loadmodule which retrieves various kinds of weather information from the Internet, and displays it on the LiteStep desktop. It is highly configurable, supports transparency and conditions bitmaps, and supports multiple-city weather information displays.

Below are a couple of partial screenshots showing WeatherDesk in different modes.

WeatherDesk with a background bitmap and scrolling weather conditions | WeatherDesk transparent on desktop with cycling weather conditions

History

v0.50 - first public release

v0.51

added windchill and heat index variables

added ability to launch weather page from right-click menu

fixed bug causing Tampa's weather conditions to always be displayed on some computers

fixed bug causing a greater than symbol (>) to be displayed in front of the value for humidity

v0.52

improved behavior when not connected to internet

uses separate thread for updating weather, so that the process doesn't affect Litestep's responsiveness

implemented a feature allowing several lines of weather info to be cycled (see WeatherDeskCycleDelay for more info)

added conditions variable for use in WeatherDeskFormat (clear, mostly cloudy, etc)

added WeatherDeskUpdateString, so a custom update string can be used (defaults to "Retrieving weather conditions...")

added 3 new bang commands: !ShowLSDW, !HideLSDW, and !ToggleLSDW

v0.53

fixed bug causing long weather conditions (e.g., "Light Rain Showers") to be truncated

changed module name to "WeatherDesk" (thanks to Glenn Krutsinger for the idea)

changed all step.rc commands from "DesktopWeather..." to "WeatherDesk..."

changed bang command names to !ShowWD, HideWD, and !ToggleWD

implemented support for people behind proxies...if you're behind a proxy and still have problems, please let me know

added feature to overlay weather condition-specific graphic on top of WeatherDesk

included 18 bitmaps to work with the condition-specific graphic feature

added feature to optionally scroll text while cycling (see WeatherDeskScrollDuringCycle for more info)

added new bang command: !MoveWD x,y

WeatherDeskX and WeatherDeskY now accept negative parameters

added WeatherDeskStartHidden command

added metric unit support (see WeatherDeskFormat variables)

v0.54

added multiple city support

created HTML helpfile

added WeatherDeskAlwaysOnTop command

v0.55

implemented skinnable popup forecast window containing weather stats and 6-day forecast

fixed bug causing fog bitmap not to display sometimes

fixed transparency problem with background bitmaps

v0.56

added WeatherDeskPopupX and WeatherDeskPopupY step.rc variables to control the initial position of the popup

added WeatherDeskPopupAlwaysOnTop and WeatherDeskPopupAlwaysOnBottom step.rc commands

fixed bug causing a window class registration error on recycle

Installation

To install WeatherDesk, just add the following line to your step.rc, making adjustments for the path that WeatherDesk.dll is stored in, if necessary:

LoadModule WeatherDesk.dll

Configuration Options

The following tables list the various commands you can use in your step.rc to affect how WeatherDesk looks and behaves.

Display Options

Command

Description

Samples

WeatherDeskX [-]integer

Specifies, in screen coordinates, the left edge of the WeatherDesk window.

WeatherDeskX 100 //places the WeatherDesk window 100 pixels from the left edge of the screen

WeatherDeskX –100 //places the WeatherDesk window 100 pixels from the right edge of the screen

WeatherDeskY [-]integer

Specifies, in screen coordinates, the top edge of the WeatherDesk window.

WeatherDeskY 100 //places the WeatherDesk window 100 pixels from the top edge of the screen

WeatherDeskY –100 //places the WeatherDesk window 100 pixels from the bottom edge of the screen

WeatherDeskWidth integer

Specifies, in pixels, the width of the WeatherDesk window.

WeatherDeskWidth 300 //the WeatherDesk window is created with a width of 300 pixels

WeatherDeskHeight integer

Specifies, in pixels, the height of the WeatherDesk window.

WeatherDeskHeight 100 //the WeatherDesk window is created with a height of 100 pixels

WeatherDeskImage filename.bmp

Specifies the filename of a bitmap to be used as WeatherDesk’s background. If ommitted, WeatherDesk will draw weather conditions transparently on the desktop.

WeatherDeskImage weatherback.bmp //uses the file weatherback.bmp as the background for WeatherDesk

WeatherDeskImage “c:\images\weather.bmp” //uses the file c:\images\weather.bmp as the background image

WeatherDeskImage .none //draws weather conditions transparently on the desktop without a background image

WeatherDeskFont fontname

Specifies the font to be used to draw weather conditions.

WeatherDeskFont Arial //uses the font Arial to draw weather conditions

WeatherDeskFont “Times New Roman” //uses the font Times New Roman to draw weather conditions

WeatherDeskFontSize integer

Specifies the size of the font to be used to draw weather conditions

WeatherDeskFontSize 18 //specifies an 18-point font will be used to draw weather conditions

WeatherDeskFontColor color

Specifies the color of the font to be used to draw weather conditions

WeatherDeskFontColor 0000FF //specifies that a blue font will be used to draw weather conditions

WeatherDeskUpdateColor color

Specifies the color of the font to be used to draw the weather update text while WeatherDesk is retrieving updated weather conditions from the Internet.

WeatherDeskUpdateColor FF0000 //specifies that a red font will be used to draw the weather update text while WeatherDesk is retrieving updated weather conditions

WeatherDeskUpdateString string

Specifies the text to display while WeatherDesk is retrieving udpated weather conditions from the Internet. If not specified, defaults to “Retrieving weather conditions…”

WeatherDeskUpdateString “Connecting…” //specifies that the string Connecting… will be shown on the WeatherDesk window when WeatherDesk updates its weather conditions from the Internet

WeatherDeskStartHidden

If this command is present in your step.rc, WeatherDesk will start in a hidden state when it is loaded.

WeatherDeskAlwaysOnTop

If this is present in your step.rc, the WeatherDesk window will always be on the top of the Z-order.

WeatherDeskCycleDelay integer

If this command is present, WeatherDesk will cycle multiple lines of text sequentially, with a delay of integer seconds. If not present, WeatherDesk will attempt to display all lines simultaneously. This setting has no effect it multiple lines are not used.

WeatherDeskCycleDelay 5 //WeatherDesk will cycle multiple lines of text with a 5-second delay

WeatherDeskScrollDuringCycle

If present, this will cause WeatherDesk to scroll lines of text vertically as they cycle. Has no effect if cycling is not used.

WeatherDeskUpdate integer

Specifies, in minutes, how often WeatherDesk should update its weather conditions from the Internet

WeatherDeskUpdate 15 //WeatherDesk will update its weather conditions every 15 minutes

WeatherDeskPage /path/to/htmlfile

Specifies the location of the htmlfile on www.wunderground.com that WeatherDesk will use to retrieve weather conditions. See below for more information.

WeatherDeskPage “/US/CA/Walnut_Creek.html” //WeatherDesk will retrieve conditions for Walnut Creek, CA

WeatherDeskPage “/global/stations/94326.html” //WeatherDesk will retrieve conditions for Alice Springs, Australia

How to determine the htmlfile to use in the WeatherDeskPage command:

  1. Go to www.wunderground.com.
  2. In the text box with the label “Find the Weather for any City, State or Zipcode, or Country”, enter your location and click the “Fast Forecast” button.
  3. Navigate until you reach your city’s forecast.
  4. When your forecast is displayed, look at the URL your browser is currently displaying.
  5. Copy this entire URL (minus the leading http://www.wunderground.com part), and paste it as the parameter to WeatherDeskPage.

Weather Format Options

Command | Description | Samples
WeatherDeskFormat string | Specifies the format that WeatherDesk will use to display weather conditions. See following table for more info. |
WeatherDeskXOffset integer | Specifies, in pixels, the horizontal offset from WeatherDesk’s left edge that will be used to display weather conditions. Default = 0. | WeatherDeskXOffset 5 //WeatherDesk will display weather conditions beginning 5 pixels from the left edge of the WeatherDesk window
WeatherDeskYOffset integer | Specifies, in pixels, the vertical offset from WeatherDesk’s top edge that will be used to display weather conditions. Default = 0. | WeatherDeskYOffset 3 //WeatherDesk will display weather conditions beginning 3 pixels from the top edge of the WeatherDesk window

Weather Format Variables

Variable | Description | Example | Possibe Result
#g | Degree symbol |  |
#t | Temperature in Farhenheit | WeatherDeskFormat “Current temp is #t” | Current temp is 52
#T | Temperature in Celsius | WeatherDeskFormat “Current temp is #T#gC” | Current temp is 15°C
#d | Dewpoint in Fahrenheit | WeatherDeskFormat “Temp: #t, Dewpoint: #d” | Temp: 52, Dewpoint 47
#D | Dewpoint in Celsius | WeatherDeskFormat “Dewpoint: #D#g” | Dewpoint: 13°
#I | Heat Index in Fahrenheit. Displayed as “n/a” if heat index is not applicable to current conditions. | WeatherDeskFormat “Temp: #t, Heat Index #I” | Temp: 89, Heat Index 95 or Temp: 42, Heat Index n/a
#I | Heat Index in Celsius. Displayed as “n/a” if heat index is not applicable to current conditions. | WeatherDeskFormat “Temp #T, Heat Index #I” | Temp: 30, Heat Index 34 or Temp: 11, Heat Index n/a
#c | Windchill in Fahrenheit. Displayed as “n/a” if windchill is not applicable to current conditions. | WeatherDeskFormat “Windchill: #c#gF” | Windchill: -30°F or Windchill: n/a°F
#C | Windchill in Celsius. Displayed as “n/a” if windchill is not applicable to current conditions. | WeatherDeskFormat “Windchill: #C#gC” | Windchill: -32°C or Windchill: n/a°C
#w | Winds with speeds in mph. | WeatherDeskFormat “Wind: #w” | Wind: Calm or Wind: Variable at 6 or Wind: NNW at 35
#W | Winds with speeds in kph. | WeatherDeskFormat “Wind: #W” | Wind: Calm or Wind: Variable at 8 or Wind: NNW at 47
#p | Pressure in inches mercury | WeatherDeskFormat “Pressure: #p” | Pressure: 29.12
#P | Pressure in millibars | WeatherDeskFormat “Pressure: #P” | Pressure: 1012
#h | Humidity | WeatherDeskFormat “Humidity: #h” | Humidity: 52%
#s | Conditions | WeatherDeskFormat “#s” | Clear or Scattered Clouds or Heavy Blowing Snow
## | Pound sign |  |
#n | Carraige Return (if WeatherDeskCycleDelay is not defined) or Multiline line delimiter (if WeatherDeskCycleDelay is defined) | WeatherDeskFormat “Temp: #t#g#F#nWind: #w” | Temp: 52°F Wind: SE at 15 NOTE: If WeatherDeskCycleDelay is not defined, these lines of text will be displayed simultaneously, as shown above. If WeatherDeskCycleDelay is defined, the lines will be cycled sequentially.
#b(0|1|2|3|4) | Used with multiple city support, this tells WeatherDesk which city’s condition bitmap to display during a given line of text. | WeatherDeskPage0 “/US/CA/Los_Angeles.html” WeatherDeskPage1 “/US/WA/Seattle.html” WeatherDeskFormat “#b0LAX: #t0#g#n#b1SEA: #tt1#g” | This would display Los Angeles’ weather condition bitmap while displaying the text “LAX: 88°”, and would display Seattle’s weather condition bitmap while displaying the text “SEA: 66°”

Weather Condition Bitmaps

WeatherDesk allows you to display condition-specific bitmaps on top of its main display. These can be used in either of WeatherDesk’s display modes: transparently on the desktop, or with a background bitmap.

Command | Description | Samples
WeatherDeskPicXOffset integer | Specifies, in pixels, the horizontal offset from WeatherDesk’s left edge that will be used to display the weather condition bitmap. Default = 0. | WeatherDeskPicXOffset 5 //WeatherDesk will display the weather condition bitmap beginning 5 pixels from the left edge of the WeatherDesk window
WeatherDeskPicYOffset integer | Specifies, in pixels, the vertical offset from WeatherDesk’s top edge that will be used to display the weather condition bitmap. Default = 0. | WeatherDeskPicYOffset 3 //WeatherDesk will display the weather condition bitmap beginning 3 pixels from the top edge of the WeatherDesk window
WeatherDeskClearPic filename.bmp | This bitmap is displayed when the weather condition is “Clear”. | WeatherDeskClearPic “c:/images/wx-clear.bmp”
WeatherDeskHazePic filename.bmp | This bitmap is displayed when the weather condition is “Haze” or “Smoke”. | WeatherDeskHazePic “wx-haze.bmp”
WeatherDeskPCloudyPic filename.bmp | This bitmap is displayed when the conditions are “Partly Cloudy” or “Scattered Clouds”. | WeatherDeskPCloudyPic “wx-pcloudy.bmp”
WeatherDeskMCloudyPic filename.bmp | This bitmap is displayed when the conditions are “Mostly Cloudy”. | WeatherDeskMCloudyPic “wx-mcloudy.bmp”
WeatherDeskOvercastPic filename.bmp | This bitmap is displayed when the conditions are “Overcast”. | WeatherDeskOvercastPic “wx-overcast.bmp”
WeatherDeskDustPic filename.bmp | This bitmap is displayed for all “Dust” and “Sand” conditions. | WeatherDeskDustPic “wx-dust.bmp”
WeatherDeskFogPic filename.bmp | This bitmap is displayed for all “Fog” conditions, except “Freezing Fog” | WeatherDeskFogPic “wx-fog.bmp”
WeatherDeskLtRainPic filename.bmp | This bitmap is displayed for all “Light Rain” conditions. | WeatherDeskLtRainPic “wx-ltrain.bmp”
WeatherDeskRainPic filename.bmp | This bitmap is displayed for all “Rain” conditions. | WeatherDeskRainPic “wx-rain.bmp”
WeatherDeskHvyRainPic filename.bmp | This bitmap is displayed for all “Heavy Rain” conditions. | WeatherDeskHvyRainPic “wx-hvyrain.bmp”
WeatherDeskLtSnowPic filename.bmp | This bitmap is displayed for all “Light Snow” conditions. | WeatherDeskLtSnowPic “wx-ltsnow.bmp”
WeatherDeskSnowPic filename.bmp | This bitmap is displayed for all “Snow” conditions. | WeatherDeskSnowPic “wx-snow.bmp”
WeatherDeskHvySnowPic filename.bmp | This bitmap is displayed for all “Heavy Snow” conditions. | WeatherDeskHvySnowPic “wx-hvysnow.bmp”
WeatherDeskBlizzardPic filename.bmp | This bitmap is displayed for “Blizzard” and “Heavy Blowing Snow” and “Heavy Drifting Snow” conditions. | WeatherDeskBlizzardPic “wx-blizzard.bmp”
WeatherDeskDrizzlePic filename.bmp | This bitmap is displayed for all “Drizzle” and “Mist” conditions. | WeatherDeskDrizzlePic “wx-drizzle.bmp”
WeatherDeskIcePic filename.bmp | This bitmap is displayed for all “Freezing” weather conditions. | WeatherDeskIcePic “wx-ice.bmp”
WeatherDeskTStormPic filename.bmp | This bitmap is displayed for all “Thunder…” conditions. | WeatherDeskTStormPic “wx-tstorm.bmp”
WeatherDeskUnknownPic filename.bmp | This bitmap is displayed when a weather condition match is not found. | WeatherDeskUnknownPic “wx-unknown.bmp”

Popup Forecast Window Options

Command | Description | Samples
WeatherDeskPopupThemeFile path | Specifies the theme .ini file which WeatherDesk should use to display the popup forecast window. | WeatherDeskPopupThemeFile c:\litestep\weatherdesk\skins\globe\globe.ini
WeatherDeskShowPopupDegrees | Specifies that all temperatures should be displayed with the degree symbol. | WeatherDeskShowPopupDegrees
WeatherDeskShowPopupTempsInCelsius | Specifies that all temperatures should be displayed in Celsius, instead of Fahrenheit. | WeatherDeskShowPopupTempsInCelsius
WeatherDeskShowPopupPressureInMb | Specifies that all pressures should be displayed in millibars, instead of inches mercury. | WeatherDeskShowPopupPressureInMb
WeatherDeskShowPopupWindInKph | Specifies that all windows should be displayed in kilometers per hour, instead of miles per hour. | WeatherDeskShowPopupWindInKph
WeatherDeskShowPopupInMetric | Specifies that all measurements in the popup forecast window should be displayed in metric, instead of English units. | WeatherDeskShowPopupInMetric
WeatherDeskShowPopupUnits | Specifies that all measurements in the popup window will appear with their units. If this is not present, all measurements will appear without unit designations. | WeatherDeskShowPopupUnits
WeatherDeskPopupX integer | Specifies, in pixels, the x-coordinate for the popup window’s initial position. | WeatherDeskPopupX 300
WeatherDeskPopupY integer | Specifies, in pixels, the y-coordinate for the popup window’s initial position. | WeatherDeskPopupY 500
WeatherDeskPopupAlwaysOnTop | If present, this will cause the popup window to always be on top when it is visible. | WeatherDeskPopupAlwaysOnTop
WeatherDeskPopupAlwaysOnBottom | If present, this will cause the popup window to always be below other running applications. | WeatherDeskPopupAlwaysOnBottom

Bang Commands

Command | Description
!HideWD | Hides the WeatherDesk window.
!ShowWD | Displays the WeatherDesk window.
!ToggleWD | Hides the WeatherDesk window if it is currently visible; otherwise, shows the WeatherDesk window.
!MoveWD x,y | Moves the WeatherDesk window to the coordinates specified by x,y.
!ToggleWDPopup [integer] | Shows or hides the WeatherDesk popup forecast window, as long as a theme is defined. If WeatherDesk is being run in multiple-city mode, this bang command can be followed by an integer, which will tell WeatherDesk which city to display the forecast for.

Multiple City Support

WeatherDesk supports displaying weather conditions (and weather condition bitmaps) for multiple cities. To use this feature, do the following:

1. In your step.rc, rename the WeatherDeskPage command to WeatherDeskPage0.

  2. Add additional commands (up to 4) for additional cities. These are WeatherDeskPage1, WeatherDeskPage2, and so forth.
  3. Edit your WeatherDeskFormat command, and add the city number after each weather variable in the string.
  4. If you intend to use cycling, you can enter #b[0|1|2|3|4] variables into WeatherDeskFormat for specifying when to display each city’s condition bitmap.
  5. Recycle LiteStep.

The following is an example of step.rc before and after the multiple city feature was utilized.

Before

WeatherDeskPage “/US/WA/Seattle.html”

WeatherDeskFormat “Temp: #t#g, Wind #w”

[…other irrelevant WeatherDesk commands…]

displays:

After

WeatherDeskPage0 "/US/CA/Los_Angeles.html"

WeatherDeskPage1 "/US/WA/Seattle.html"

WeatherDeskPage2 "/US/AR/Little_Rock.html"

WeatherDeskFormat "#b0LAX: #t0#g, wind #w0#n#b1SEA: #t1#g, wind #w1#n#b2LIT: #t2#g, wind #w2"

WeatherDeskCycleDelay 2

[…other irrelevant WeatherDesk commands…]

displays:

Notes

You can also display information for multiple cities on the same line (without cycling) by using a WeatherDeskFormat string like

“LAX: #t0#g, SEA: #t1#g, LIT: #t2#g” (using data from the above example). This would display something like

“LAX: 88°, SEA: 55°, LIT: 66°”.

Popup Forecast Window

Beginning with version 0.55, WeatherDesk has a skinnable popup window which can display a 6-day forecast and various weather stats. There are two methods which can be used to display this window:

  1. Right-click on WeatherDesk, and select “Show Popup For”->”[City Name]”
  2. Execute the !ToggleWDPopup [integer] command, where the [integer] is an optional integer representing the city number, for people using multiple cities.

In order to enable support for the popup forecast window, you must do the following things:

  1. In your step.rc, add the line WeatherDeskPopupThemeFile path, where path is the location of a theme .INI file. Two themes are supplied with WeatherDesk 0.55, or you can create your own.
  2. Optionally add other Popup Forecast Window commands to your step.rc, to modify how WeatherDesk displays weather stats in the window.

Sample STEP.RC

Because WeatherDesk supports so many options, I have received much e-mail from people asking what step.rc options to use. Below is a basic configuration, which when added to your step.rc, will enable all of WeatherDesk’s basic features. The only things you’ll have to change are the WeatherDeskX and WeatherDeskY co-ordinates, and the WeatherDeskPage variable to match your own location. This configuration doesn’t use a background bitmap, but you can easily add one by supplying a WeatherDeskImage variable. Make sure that the WeatherDeskPic variables and the WeatherDeskThemeFile variable are set to locations appropriate for your system.

WeatherDeskX 0

WeatherDeskY 0

WeatherDeskCycleDelay 3

WeatherDeskFontColor FFFFFF

WeatherDeskHeight 40

WeatherDeskWidth 350

WeatherDeskFormat "#b0LAX: #t0#gF, Wind #w0 mph#n#b1TPA: #t1#gF, Wind #w1 mph#n#b2SEA: #t2#gF, Wind #w2 mph"

WeatherDeskXOffset 54

WeatherDeskYOffset 12

WeatherDeskFont "Century Gothic"

WeatherDeskFontSize 18

WeatherDeskUpdate 10

WeatherDeskUpdateColor FF0000

WeatherDeskPage0 "/US/CA/Los_Angeles.html"

WeatherDeskPage1 "/US/FL/Tampa.html"

WeatherDeskpage2 "/US/WA/Seattle.html"

WeatherDeskPicXOffset 8

WeatherDeskPicYOffset 6

WeatherDeskClearPic wx-clear.bmp

WeatherDeskDustPic wx-dust.bmp

WeatherDeskFogPic wx-fog.bmp

WeatherDeskLtRainPic wx-ltrain.bmp

WeatherDeskRainPic wx-rain.bmp

WeatherDeskHvyRainPic wx-hvrain.bmp

WeatherDeskDrizzlePic wx-drizzle.bmp

WeatherDeskHazePic wx-haze.bmp

WeatherDeskPCloudyPic wx-pcloudy.bmp

WeatherDeskMCloudyPic wx-mcloudy.bmp

WeatherDeskOvercastPic wx-overcast.bmp

WeatherDeskLtSnowPic wx-ltsnow.bmp

WeatherDeskSnowPic wx-snow.bmp

WeatherDeskHvySnowPic wx-hvsnow.bmp

WeatherDeskBlizzardPic wx-blizzard.bmp

WeatherDeskUnknownPic wx-unknown.bmp

WeatherDeskIcePic wx-ice.bmp

WeatherDeskTStormPic wx-tstorm.bmp

WeatherDeskScrollDuringCycle

WeatherDeskPopupThemeFile c:\litestep\weatherdesk\skins\globe.ini

WeatherDeskShowPopupDegrees

WeatherDeskShowPopupPressureInMb

WeatherDeskShowPopupUnits


WharfX.dll

---------------------------------------------------------------------------------

*****************************************

* WharfX b0.81 *

* *

* by Jeb Crouson (aka TrOgI) *

* crouson@inreach.com *

* http://desktopsource.mindjunction.com *

*****************************************

*********

* Intro *

*********

This is a modified wharf with many enhancements.

Use wharfx.dll in place of wharf.dll.

WharfX is backward compatible with most wharf.dll settings.

********************

* Step.rc Commands *

********************

WharfCloseOnSwitch

~~~~~~~~~~~~~~~~~~

This sets your wharfs to close their folders when they lose focus. Default: disabled

WharfNoAutoClose

~~~~~~~~~~~~~~~~

This sets your wharf folders to remain open until you close them by clicking the folder tile. Default: disabled

WharfNoHints

~~~~~~~~~~~~

This turns off the displaying of tooltip hints when the cursor is over a wharf tile. Default: disabled

WharfNoAnim

~~~~~~~~~~~

This turns off the animation of the opening and closing of your wharf folders. Default: disabled

WharfAnimStep #

~~~~~~~~~~~~~~~

This sets the size in pixels of the steps that wharf folders take when animated. Default: 32

WharfAnimDelay #

~~~~~~~~~~~~~~~~

This sets the time delay in milliseconds between the steps of wharf folder animation. Default: 10

WharfAllTitles

~~~~~~~~~~~~~~

This puts titles on all your wharf tiles using the tile's caption. Default: disabled

WharfTitleAlignment "Horizontal Vertical"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This sets the alignment of the title. Horizontal can be Center, Left, or Right.

Vertical can be Center, Top, or Bottom. Default: "Center Center"

WharfTitlePadding "Left# Top# Right# Bottom#"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This sets the padding of the title from the edges. Default: "0 0 0 0"

WharfTitleFore RRGGBB

~~~~~~~~~~~~~~~~~~~~~

This specifies the color of the font for the titles when using WharfAllTitles. Default: none

WharfTitleBack RRGGBB

~~~~~~~~~~~~~~~~~~~~~

This specifies the color of the background for the titles when using WharfAllTitles. Default: 802020

WharfTitleFont font

~~~~~~~~~~~~~~~~~~~

This specifies the font to use for the titles when using WharfAllTitles. Default: Arial

WharfTitleFontSize #

~~~~~~~~~~~~~~~~~~~~

This sets the size of the font for the titles when using WharfAllTitles. Default: 8

WharfTitleFontWeight #

~~~~~~~~~~~~~~~~~~~~~~

This sets the weight of the font for the titles when using WharfAllTitles. Default: 400

WharfBevelWidth #

~~~~~~~~~~~~~~~~~

This sets the width in pixels of the bevel around each wharf tile. Default: 1

WharfPressOffset #

~~~~~~~~~~~~~~~~~~

This sets the offset number for the pressing effect of wharf tiles. Default: 1

AutoHideWharf

~~~~~~~~~~~~~

This turns on the autohiding of the wharfs when at an edge of the screen. Default: disabled

AutoHideDelay #

~~~~~~~~~~~~~~~

This sets the time delay in milliseconds between inactivity and autohiding of wharfs. Default: 300

AutoShowDelay #

~~~~~~~~~~~~~~~

This sets the time delay in milliseconds for which wharfs will show when autohidden. Default: same as AutoHideDelay

WharfHiddenWidth #

~~~~~~~~~~~~~~~~~~

This sets the width in pixels of the autohide strip. Default: 1

SnapToWharf

~~~~~~~~~~~

This turns on the snap to edge of screen feature of the wharfs. Default: disabled

SnapToSensitivity #

~~~~~~~~~~~~~~~~~~~

This sets the distance in pixels from the edge of the screen that the wharfs will snap to the edge when moved within. Default: 16

WharfOpenSound sound.wav

~~~~~~~~~~~~~~~~~~~~~~~~

This specifies the sound to play when a wharf folder is opened. Default: none

WharfCloseSound sound.wav

~~~~~~~~~~~~~~~~~~~~~~~~

This specifies the sound to play when a wharf folder is closed. Default: none

WharfMinSound sound.wav

~~~~~~~~~~~~~~~~~~~~~~~~

This specifies the sound to play when a wharf is shaded. Default: none

WharfMaxSound sound.wav

~~~~~~~~~~~~~~~~~~~~~~~~

This specifies the sound to play when a wharf is unshaded. Default: none

************************

* Definition of Wharfs *

************************

Settings in brackets[] are optional (do not use the brackets).

Settings in braces {} are optional and the braces must be used.

Folders can be nested as far as you like.

You can create as many wharfs as you like.

Definition

~~~~~~~~~~

*Wharf !New x-coordinate y-coordinate capImage defaultTileImage folderImage [#flags]

*Wharf "name" normalImage{mouseOverImage}{mouseClickImage} action [parameters]

*Wharf "name" normalImage{mouseOverImage}{mouseClickImage} Folder [defaultFolderTileImage]

*Wharf "name" normalImage{mouseOverImage}{mouseClickImage} action [parameters]

*Wharf "name" normalImage{mouseoverImage}{mouseClickImage} Folder [defaultFolderTileImage]

..........and so on

*Wharf ~Folder

*Wharf ~Folder

*Wharf ~New

x-coordinate = x position of the wharf on the screen (accepts negative values)

y-coordinate = y position of the wharf on the screen (accepts negative values)

capImage = image to use for wharf cap (.none for no cap)

defaultTileImage = default image to use for wharf tiles (only the main tiles, not tiles in folders, .none for no image)

folderImage = image to use for tiles that have a folder (.none for no image)

flags = the first character after the # will be the wharf's group (can be any number or character)

T = make the wharf topmost (default is not topmost)

H = make the wharf hidden on startup

R = make the wharf horizontal (default is vertical)

F = make the wharf folders the same direction as the wharf (default is disabled)

name = the caption to use for the tile's tooltip hint

normalImage/mouseOverImage/mouseClickImage = one of four things:

1) .none for no image

2) a bitmap (.bmp)

3) ".extract=file.dll[,nS]" (n is the icon number, default is 0)(S means use small icon, default is large icon)

4) ".extract=file.exe[,nS]" (n is the icon number, default is 0)(S means use small icon, default is large icon)

When using the mouseover/mouseclick images make sure you put braces around it and leave no spaces between the images.

If not using a mouseover image but using a mouseclick image, use a {.none} for the mouseover.

A * placed in front of image tells the tile to not use the default image or folder image.

A + placed in front of image tells the tile to use fake transparency instead of real transparency.

(if both are used the * must be first, example: *+pic.bmp)

action = one of four things:

1) .none for no action

2) a program path/executable

3) @module (module being the wharf module to be loaded)

4) a Litestep !bang command

parameters = optional arguments that can be used by the action

defaultFolderTileImage = default image to use for this folders tiles

Example:

*Wharf !New 100 -200 cap.bmp default.bmp arrow.bmp #1TR

*Wharf "About" logo.bmp !About

*Wharf "Stuff" folder.bmp{.none}{folderopen.bmp} Folder default2.bmp

*Wharf "About" logo.bmp !About

*Wharf ~Folder

*Wharf ~Folder

*Wharf ~New

***************

* Wharf Usage *

***************

Right-click on wharf cap will shade/unshade the wharf.

Left-click and hold on wharf cap will allow you to drag the wharf around.

*****************

* Bang Commands *

*****************

# is the wharf group you want to use the bang command on

(use ALL to use on all wharfs or no # to use on just the first wharf created)

!WharfShow # ;shows the wharf group

!WharfHide # ;hides the wharf group

!WharfToggle # ;shows/hides the wharf group

!WharfMove x y # ;moves the wharf group x pixels horizontally and y pixels vertically (accepts negative numbers)

!WharfMoveTo x y # ;moves the wharf group to the coordinates (x,y)

**************

* Other Info *

**************

!WharfTasks is broken until I fix it.

***************

* Coming Soon *

***************

Wharf end cap?

Dynamic Wharfs?

Please send all bug reports to crouson@inreach.com

This is beta software. Use at your own risk.

Enjoy!

TrOgI


wimacPaper.dll

---------------------------------------------------------------------------------

wimacPaper.dll 0.0.3

a simple desktop wallpaper changing bang module foir litestep 0.24.6

by: wimac

wimac@netpass.com

copyright © 2002 William J. MacLeod All rights reserved

____________________________________________________________________

I wanted a simple wallpaper changing bang with out all the bells and whistles so I coded one up

I don't plan on adding anymore features would kinda defeate the porpose only one bang:

!wallpaper <wallpaper.bmp> (0=centered, 1=tiled, 2= stretched)


Winctrl.dll

---------------------------------------------------------------------------------

Window control module (winctrl.dll) version 1.3

17 September 2000

This module, winctrl.dll, is a LiteStep module that allows you to perform custom actions on the currently active window, as well as giving you the ability to further tweak the appearance and behaviour of application windows on your desktop. Hopefully you will find some of its features useful. The source code is included in the distribution.

Installation

Add the following to your step.rc

LoadModule C:\litestep\winctrl.dll

assuming C:\litestep is where your litestep directory is. Make sure you are also running desktop.dll that uses hook.dll. The recent dev builds or LS24.5 should have this.

Bang commands and variables

WinctrlHotkeyOnly

Restricts bang commands that work on active windows to hotkeys only.

This should make it work without the core desktop.

!WinHome < x y / centered >

!WinMove < x y / centered >

Move the active window to position x,y or centered on the current desktop.

If no arguments are supplied, a positioning cursor appears, as in Win M from the system menu.

!WinMaxHeight

Resize the active window to the maximum height of the desktop area.

!WinMaxWidth

Resize the active window to the maximum width of the desktop area.

!WinGrowDown

Resize the bottom of the active window to the bottom of the desktop area.

!WinDeltaX <dx>

Resize active window width by dx (default dx=1).

!WinDeltaY <dy>

Resize active window height by dy (default dy=1).

!WinFullDrag on/off

Turn on/off "show window contents while dragging" property.

!WinComboboxAnimate on/off

Turn on/off combo-box animation.

!WinMenuAnimate on/off

Turn on/off menu animation.

!WinActiveTracking on/off

Turn on/off active window tracking ala X.

!WinAutoRaise on/off

Turn on/off auto raising of window under cursor.

!WinShade <on/off>

Toggle between resizing the active window to the caption (on) or restore to normal size (off).

!WinUnshadeAll

Unshades all shaded windows.

!WinSendToBottom

Send the active window to the bottom of the stack of open windows.

!WinMaximize

!WinMinimize

!WinRestore

Mimics behaviour as with the system menu Win X, Win N and Win R, respectively.

!WinAlwaysOnTop <on/off>

Toggle between always on top window to normal.

In addition the following variables are also available for setting colors:

WinMDIBackgroundColor LSCOLOR

Set the background color of multiple document interface windows.

WinTooltipBackgroundColor LSCOLOR

Set the tooltip background color.

WinTooltipTextColor LSCOLOR

Set the tooltip text color.

LSCOLOR is in the standard ls color format (XXXXXX or nn nn nn) and can be set to any color except FFOOFF.

I have since discovered that the above can be set from the display control panel (duh!), so I won't be exploring the color options any further.

For auto-positioning of dialog windows:

WinDialogsPosition <x y or centered>

Move dialog windows to position x,y or centered on the current desktop.

Dialogs are positioned normally if variable is not in step.rc.

Known problems

1. !Winshade will crash WinVi.

2. !WinSendToBottom and !WinUnshadeAll, if invoked by a hotkey combination Win+Shift or Ctrl sometimes has no effect on a DOS box.

3. WinDialogPosition creates a flash of window at the default position.

4. Shaded WinZip windows will partially unshade when moved.

mirul (mirul_@hotmail.com)

18 April 2000.


XProp.dll

---------------------------------------------------------------------------------

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

XProp 1.25

Updated by repugnant

Originally by MrJukes

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

-- WHAT'S NEW ------------------------------------------------------------------

1.25 - Bitmaps aren't needed, now you can specify colors (as requested by

TucknDar. Added a slew of options to control the colors/beveling.

- XPropBg now defaults to ".none" instead of "xprop.bmp".

- Included a fixed lsapi.dll for PureLS ONLY (thanks jugg/Message).

1.24b - Fixed GDI bug which was causing errors in PureLS. (Thanks TucknDar!)

1.24 - Added !XPropCopyHexCode as per Blox' request. It copies the hexadecimal

color code to the clipboard. See the bangs section below for more info.

- Added XPropZoomTransparentWindows. Enabling this option allows XProp to

zoom in on transparent (layered) windows in Windows 2000/XP. This may

result in a performance hit, but shouldn't be too noticeable.

1.23 - Fixed the jumping-around-vwms bug the "normal" way. You don't need to

set XPropStartLocked in order for it to work correctly.

- Added the ability to copy the zoomed-in area to the clipboard. See

XPropEnableClipboard for more info. (EXPERIMENTAL)

- Removed extra code that was duplicating LS API functions.

1.22h - [l0d] hacked to make sure the window doesn't run like crazy around

virtual screens when you switch'em, provided the XPropStartLocked var is

set.

1.22 - Added fudging to inverted bitmap cursors. If the color is a medium gray

the crosshair becomes black.

- Added !XPropToggleOnTop.

1.21 - XPropCrosshairInvert now works for bitmap cursors.

- Added XPropInvertedColor to control which color of the crosshair bitmap

is inverted.

- Added the XPropColorBox?? options. These let you place a rectangular

box on the XProp window that will show the current color.

1.2 - ( Unreleased )

- Added support for bitmap crosshairs...

XPropCrosshairBitmap

XPropCrosshairW, XPropCrosshairH,

XPropCrosshairX, XPropCrosshairY

- Added XPropCrosshairInvert and !XPropToggleInversion to allow for an

inverted "basic" crosshair.

- Rewrote the readme.

1.x - Dunno, couldn't find a changelog with MrJukes' files (how unusual :O )

-- DESCRIPTION -----------------------------------------------------------------

XProp is a small window that sits on your desktop and magnifies the area below

your mouse cursor, as well as providing the mouse coordinates and colour

information.

-- INSTALLATION ----------------------------------------------------------------

Installation is pretty standard, just unzip xprop.dll into your module

directory. Add a LoadModule line to step.rc that looks like this:

LoadModule $litestepdir$xprop.dll

If you're using PureLS (older than 01-09-23) you will need to copy the included

lsapi_for_purels.dll into your PureLS folder and rename it to lsapi.dll

-- CONFIGURATION ---------------------------------------------------------------

; ==== Display Flags ==============================

XPropStartHidden false ; If this is true then XProp will be hidden when

; LiteStep is started.

XPropStartLocked false ; If set to true XProp will be locked in place at

; XPropX, XPropY (see below)

XPropNotAlwaysOnTop false ; If set to true XProp will NOT be always on top.

; Didn't see that coming, did you? :P

XPropCrosshairInvert false ; If set to true the crosshair color will be

; the opposite color of whatever it is over.

; (It will be black if over a white area,

; and white over a black area). This can be toggled

; with !XPropToggleInversion

; ==== Miscellaneous Options ======================

XPropEnableCliboard false ; Enables the !XPropCopyContents command. This is

; optional because there will be a (tiny) increase

; in resource usage (again, pretty negligible).

XPropZoomTransparentWindows ; When enabled XProp will be able to zoom in on

false ; transparent windows in Win2K/XP. Can result in a

; slight performance hit.

; ==== XProp (main) Window ========================

XPropX 0 ; Starting X position of the XProp window.

XPropY 0 ; Starting Y position of the XProp window.

XPropH 135 ; Height of window, only used if there's no bitmap.

XPropW 100 ; Width of window, only used if there's not bitmap.

XPropTimer 50 ; The frequency (in msecs.) that XProp updates.

XPropOffsetX 25 ; How far the window is from the cursor.

XPropOffsetY 25 ; How far the window is from the cursor.

XPropBg .none ; Bitmap to use as the background of the window

XPropBGColor 808080 ; Background color, only used if there's no bitmap.

XPropBevel false ; Enables beveling for the main maindow; only used

; if there's no bitmap.

XPropBevelLight C0C0C0 ; Light bevel color, only used if there's no bitmap

; and XPropBevel is true.

XPropBevelDark 505050 ; Dark bevel color, only used if there's not bitmap

; and XPropBevel is true;

; ==== Magnification Window =======================

XPropMagWindowX 6 ; X coordinate of the magnification window.

XPropMagWindowY 6 ; Y coordinate of the magnification window.

XPropMagWindowW 88 ; Width of magnification window.

XPropMagWindowH 88 ; Height of magnification window.

XPropMagWindowBevel false ; Enables beveling; only used if there's no bitmap.

XPropMagWindowBevelLight ; Same as XPropBevelLight above.

XPropMagWindowBevelDark ; Same as XPropBevelDark above.

; ==== Text Area===================================

XPropTextWindowX 7 ; X coordinate of the text area.

XPropTextWindowY 98 ; Y coordinate of the text area.

XPropTextWindowW 88 ; Width of text area.

XPropTextWindowH 31 ; Height of text area.

XPropTextWindowBevel ; Enables beveling, only used if there's no bitmap.

XPropTextWindowBevelLight ; Gee, I wonder?

XPropTextWindowBevelDark ; See above.

; ==== Font =======================================

XPropFontFace Arial ; Font face.

XPropFontSize 11 ; Font size.

XPropFontColor 000000 ; Font color.

; ==== Basic Crosshair ============================

XPropCrosshairSize 10 ; Size of crosshair

XPropCrosshairColor 000000 ; Color

; ==== Bitmap Crosshair ===========================

XPropCrosshairBitmap .none ; Bitmap to use for crosshair. If this is

; a valid bitmap then all the options for

; the basic crosshair (above) are ignored.

XPropCrosshairBitmapW 15 ; Width of the bitmap.

XPropCrosshairBitmapH 15 ; Height of the bitmap.

XPropCrosshairBitmapX ? ; The X coordinate of the bitmap. If not

; specified then XProp will try to guess

; the best position.

XPropCrosshairBitmapY ? ; The Y coordinate of the bitmap. If not

; specified then XProp will try to guess

; the best position.

XPropInvertedColor 000000 ; The color to invert. Normally if you set

; XPropCrosshairInvert to true the entire bitmap

; is inverted (except for the Magic Pink regions

; of course). If you set this option to FF00FF

; (Magic Pink) it will cause the normally

; transparent areas to be inverted. You must

; set XPropCrosshairInvert to true for this to

; have an affect.

; ==== Color Box ==================================

XPropColorBox false ; Set this to true to enable the color box.

XPropColorBoxX 0 ; The X coordinate of the color box.

XPropColorBoxY 0 ; The Y coordinate of the color box.

XPropColorBoxW 5 ; The width of the color box.

XPropColorBoxH 5 ; The height of the color box.

XPropColorBoxBevel ; Enables beveling; used only if there's no bitmap.

XPropColorBoxBevelLight ; self-explanator

XPropColorBoxBevelDark ; *sigh*

; ==== Information Format =========================

XPropFormat "X: %d Y: %d\nR: %d G: %d\nB: %d - #%06lx"

; Formats the information string. A few special

; characters can be used:

; \n = start a new line.

; \d = insert the value as a decimal number.

; \X = insert number as a hexadecimal number.

; \x = same as above, but lowercase.

; Note: the order cannot be changed, only the

; format.

-- BANGS -----------------------------------------------------------------------

!XPropZoomIn

Zooms in.

!XPropZoomOut

Zooms out (Can you believe it?)

!XPropShow

Show the XProp window.

!XPropHide

Hide the XProp window.

!XPropToggle

Toggles the XProp window.

!XPropSetOrigin

Set the origin to the current cursor position

!XPropResetOrigin

Reset the origin back to the top left corner of the screen (0,0).

!XPropLock

Toggles whether or not the XProp window follows your cursor.

!XPropFreeze

Toggles whether the contents of the XProp window are updated.

!XPropToggleInversion

Toggles whether the basic crosshair is inverted.

!XPropToggleOnTop

Toggles whether the (docked) XProp window is on top.

!XPropCopyContents

Copies the contents of the XProp window to the clipboard. You must

have XPropEnableClipboard defined to use this.

!XPropCopyHexCode

Copies the hexadecimal color value to the clipboard as text. You do *not*

have to define XPropEnableClipboard in order for this to work.

-- THANK YOU -------------------------------------------------------------------

Thank you's go out to Psynapse & demigod for testing XProp out. Thank you also

to l0d who told me about the jumping-around-vwms bug (and providing a hack for

everyone while I fixed it).

-- THE FUTURE ------------------------------------------------------------------

Eventually I'd like to add a completely customizable information string (a la

Label.dll). Other than that, if anyone has any suggestions feel free to email

me at repugnant2k@hotmail.com, or if you use ICQ my # is 1658289.

- repugnant

http://www.personal.psu.edu/jew208/


Zoomer.dll

---------------------------------------------------------------------------------

// Zoomer v1.0

// By: LvR

// Released: 9/6/98

// What is it ?

- It's a little wharf module that zoom everything under your mouse cursor !

- Very nice when you have some beautiful desktop

// Installation

1) Unzip Zoomer.app to litestep directory

2) Put *Wharf "Zoomer" .none @c:\litestep\Zoomer.app in your step.rc

3) Optional - You can put these options in your modules.ini

[Zoomer]

Rate=100 ; Refresh rate in ms (default : 100 ms)

Factor=2 ; Zoom factor (default 2x)

// What's next ?

- In future release, I will add a doubld buffer implementation, zoom factor will be float.

- Some bugs corrections ???

- If you have some bugs reports or some suggetions, write me !

And don't forget to have fun,

LvR - weblvr@caramail.com