--------------
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
----------------

  -LsBoxZOrder <ZOrder>
   Set it to either NORMAL, STAYONTOP ord HUGBOTTOM.
   (Default: NORMAL)

*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.

  -!LsBoxSetTransparency <0-255> (0-255)
   Sets the Transparency Level of a Box. the second option is optional.

  -!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 coordinates. 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 work, too.

  -*Module <Module to load>
   This Mode Will be phased out over the next couple of releases

------------
VII. History
------------
rel 2.9
    -{Bangs} !LsBoxSetTransparency now sets the inActive transpaency too (optional) 
    -{Bangs} "!LsBoxSetTranparency" is now "!LsBoxSetTransparency" :)
    -{Boxes} LsBoxAlwaysOnTop and LsBoxHugBottom Merged into LsBoxZOrder 
    -{Boxes} LsBoxDockToWindow works again.
    -{LsBox} NEW! now with *more* Messageboxes :)
    -{Boxes} New Effect settings - LEFT,RIGHT and UP,DOWN 
    -{LsBox} Changed all MessageBoxes to the prettier Style with the Exclamation Mark.
    -{Boxes} Fixed a Possible Resource Leak With GetDC.
    -{BoxAPI} Fixed a Possible Resource Leak With GetDC.
    -{Bangs} Removed a InvaliteRGN call in the MoveBox bang - tell me if any corruption 
             occurs after a !Movex bang.
    -{Modules} added additional checking to the Quitmodule and initmodule calls
    -{BoxAPI} Removed the optional Bitmap Tinting. (nobody used it anyway)
    -{LoadModule} InitModuleEx now gets called with the right ParentWND 
                  (but don't expect it to work with every module)

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 good 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

