OverView

Well, let's enumerate some main features:

  1. Multiple Syntax for unlimited different Popups (each popup can have it's unique look).
  2. QuicklaunchMode with only Icons and ToolTips.
  3. Shaded Popups
  4. Drop Features for easy adding Items to PopupFolders or Quicklaunch.
  5. MultiColumn Popups and/or MultiPart Popups.
  6. Continuous BG Picture (Popup can have ANY shape you wish)
  7. AlphaMap PopupMenus
  8. AlphaFading and AlphaTransparent Popups
  9. All Icons and Images can have different Saturation and Hueing
  10. All Text, Icon, Image, Gradient features you know from xLabel or xTaskbar
  11. Dynamic Info Entrys, which can provide ANY Info xLabel(Light) can serve (if loaded of course ;))
  12. General Module Hooking Support: You can hook LsxCommand in the Popup or the complete xTaskbar
  13. Compatible to *Popup settings in Compatibility Mode, so you don't have to change your settings in the Personal Folder. If you want to, you can load Popup2 and xPopup at the same time without problems.
If you combine all these things, you'll get even more possibilities.

But (There's always a "But"), some things are no longer supported! They will naturally be parsed out, they won't bother someone to remove them manually :)

Some Special abilities of Popup2 are obsolete due to "Dynamic Info Entrys" and "Module Hook Support", as there are:
!datetime, !remoteamp, !popupimage and !popuprun.

Also a special Popup Folder isn't implemented:
!PopupDesktops

Start Your Engines =)

Main Settings

xPopupCompatibilityMode BOOL
If this is set xPopup reads the *Popup lines instead of it's own *xPopup lines.
This should allow you to use your old *Popup Menu Definitions, if you should switch completely to xPopup!

xPopupCacheAllPopupsAtStartup BOOL
If set, ALL PopupMenus AND ALL SubPopupMenus are loaded at Startup!
Positive: You will never have to wait for the first creation.
Negative: All max needed Resources are always used.

One major addition to the Default *(x)Popup PopupMenu definitions is the ability to setup different PopupStyles (Settings) for each defined PopupMenu!
Currently you define a new PopupMenu with the following:
*(x)Popup "Caption/Title" !New !PopupBang

This makes PopupMenu based on xPopup... Settings (xPopupEntryImage entry.png and so on).
Now you can add another Option to make PopupMenu's which are based on QuickPopup... Settings for instance (QuickPopupEntryImage entry.png and so on).

Example:
*(x)Popup "Caption/Title" !New !PopupBang quickpopup

Not so hard to understand, or? As always the LS-Universe Forum is open for questions :)

Short Default Settings:

xpopupcompatibilitymode
xpopupusesolidcolors
xpopupuseentrysolidcolors
xpopupentryfontleftborder 20
xpopuptopborder 20

With these 5 Settings you have a simple, but useable xPopup to start with.

Settings

Popup Entry State Settings

Overview "Popup Entry Image Settings"


ActiveFolderUseFolderDefault
If set, the Default for "ActiveFolder" Settings are "Folder" Settings instead od "ActiveEntry" Settings.
This setting affects "ActiveFolder" Default for ALL specific settings (Texture, Font and Icon!)

The "(Entry Type)" in front of each setting means, that every setting can be:
Entry, ActiveEntry, Folder, ActiveFolder or Info
If you set a setting with "Entry", then, THIS becomes Default for all other States except "Info"! If you set a setting with "ActiveEntry" then, THIS becomes Default for "ActiveFolder", if you specify "xPopupActiveFolderUseFolderDefault", "Folder" is used as default for "ActiveFolder"!

Example:
xPopupEntrySaturationIntensity 70
All Popup Entry States have a SaturationIntensity of 70!
xPopupActiveEntrySaturationIntensity 70
Only Active Popup Entrys have a SaturationIntensity of 70!

"Separator" and "Arrow", "ActiveArrow" are special!
The "Separator" Prefix allows you to setup a Separator Image, which is painted at !separator lines.
The "Arrow" and "ActiveArrow" Prefixes are limited to (Entry Type)Image IMAGE and are for Custom Folder Indicators and are only painted on Folder Entry's ("Arrow" is Default for "ActiveArrow"!)
You can use Magic Pink in all Images!

Arrow Image Setup

Popup Entry Image Settings


Overview "Icon Settings"


ActiveFolderUseFolderDefault
If set, the Default for "ActiveFolder" Settings are "Folder" Settings instead od "ActiveEntry" Settings.
This setting affects "ActiveFolder" Default for ALL specific settings (Texture, Font and Icon!)

The "(Entry Type)" in front of each setting means that every setting can be:
Entry, ActiveEntry, Folder or ActiveFolder
If you set a setting with "Entry", then, THIS becomes Default for all other States! If you set a setting with "ActiveEntry" then, THIS becomes Default for "ActiveFolder", if you specify "xPopupActiveFolderUseFolderDefault", "Folder" is used as default for "ActiveFolder"!

Example:
xPopupEntryIconX 5
All Popup Entry States have a IconX Position of 5!
xPopupActiveEntryIconX 5
Active Popup Entrys have a IconX Position of 5!

Icon Settings


Overview "Font Settings"


ActiveFolderUseFolderDefault
If set, the Default for "ActiveFolder" Settings are "Folder" Settings instead od "ActiveEntry" Settings.
This setting affects "ActiveFolder" Default for ALL specific settings (Texture, Font and Icon!)

The "(Entry Type)" in front of each setting means that every setting can be:
Title, Info, Entry, ActiveEntry, Folder or ActiveFolder
If you set a setting with "Entry", then, THIS becomes Default for all other States except "Title" and "Info"! If you set a setting with "ActiveEntry" then, THIS becomes Default for "ActiveFolder", if you specify "xPopupActiveFolderUseFolderDefault", "Folder" is used as default for "ActiveFolder"!

Example:
xPopupEntryFontHeight 20
All Popup Entry States have a FontHeight of 20!
xPopupActiveEntryFontHeight 20
Active Popup Entrys have a Text FontHeight of 20!

"Arrow" and "ActiveArrow" are special!
The "Arrow" and "ActiveArrow" Prefixes are for Custom Folder Text Indicators and are only painted on Folder Entry's ("Arrow" is Default for "ActiveArrow"!)
You can setup the Arrow and ActiveArrow Font with all normal Font settings. Simply set at (Entrytype) the Prefixes "Arrow" and "ActiveArrow"!

Text Arrow Setup

Font Settings


Bang Commands And Events

Bangs


Events


Tips 'n' Tricks

Compatible Popup2 Settings


How a Popup Definition can look:

*(x)Popup ".: LITESTEP :." !new !popup
  *(x)Popup !info "[time('ii:nn:ss')]"
  *(x)Popup !separator
  *(x)Popup !hook:5:5:150:20 !commandboxhook %%!commandmove%%
  *(x)Popup !separator
  *(x)Popup "Games" "!xPopupDynamicFolder:$ShortcutsDir$Games"
  *(x)Popup "Graphics" "!xPopupDynamicFolder:$ShortcutsDir$Graphics"
  *(x)Popup "Music" "!xPopupDynamicFolder:$ShortcutsDir$Music"
  *(x)Popup "Internet" "!xPopupDynamicFolder:$ShortcutsDir$Internet"
  *(x)Popup "Burn" "!xPopupDynamicFolder:$ShortcutsDir$Burn"
  *(x)Popup "AntiVirus" "!xPopupDynamicFolder:$ShortcutsDir$Antivirus"
  *(x)Popup !separator
  *(x)Popup "Trashcan" explorer $bitbucket$
  *(x)Popup Menubreak
  *(x)Popup "Litestep" Folder
    *(x)Popup .icon="*.rc" "LSTM2" "$LiteStepDir$bin\lstm\lstm2.exe"
    *(x)Popup "popupcontrolpanel" !xpopupcontrolpanel
    *(x)Popup "popupmycomputer" !xpopupmycomputer
    *(x)Popup "popupnetwork" !xpopupnetwork
    *(x)Popup "popupprinters" !xpopupprinters
    *(x)Popup "popuprecentdocuments" !xpopuprecentdocuments
    *(x)Popup "popuprecyclebin" !xpopuprecyclebin
    *(x)Popup "changethemes" Folder
      *(x)Popup "installtheme" !execute ["$LiteStepDir$utilities\LSThemeInstaller.exe"]
      *(x)Popup "refreshlist" !execute ["$LiteStepDir$utilities\LSThemeInstaller.exe" "/refresh"]
    *(x)Popup ~Folder
    *(x)Popup .icon="$litestepdir$setup/icons/litestep.ico" "utilities" !xPopupFolder:"$LitestepDir$utilities\"
    *(x)Popup "edit config" Folder
      *(x)Popup "step.rc" !execute ["$TxtEditor$" "$LiteStepDir$step.rc"]
      *(x)Popup "theme.rc" !execute ["$TxtEditor$" "$ThemeDir$theme.rc"]
      *(x)Popup !Separator
      *(x)Popup "personal files" !xPopupFolder:"$PersonalDir$"
    *(x)Popup ~Folder
  *(x)Popup ~folder
  *(x)Popup .icon="$litestepdir$litestep.exe" "Recycle?" !recycle
  *(x)Popup "Suchen?" "$LiteStepDir$bin\find\pdfind.exe"
  *(x)Popup !separator
  *(x)Popup icon=".none" "Shutdown Menu?" !shutdown
*(x)Popup ~new

You can use the following Popup2 Special Settings in *(x)Popup lines!

Exported Variables


(Note that you will need to define dummy variables if you include these in scripts/rc files with standard $evar$ syntax, since when LiteStep reads these files xPopup has not yet added them, causing LS to think the variables are undefined.)

Only useful if used in HANDTYPED BANGS (LSXCommand) or if you use it in mzscripts or with "xLabels" special "!ParseEvars" Bang Command!
To use $evars$ in Bangs, which contain the "CURRENT" value, use the escape code %# and prefix the "!ParseEvars" Bang!
$mypopupcurrentwidth$ becomes %#mypopupcurrentwidth%# and so on ...

Only TopLevel Popups export now their Current Position and Size. If the Popup is called with !MyPopup then it's current Position and Size is exported with the Prefix "MyPopup".

Multiple Popup Columns


To create a new Column in a PopupMenu use
*(x)Popup Menubreak
After that entry the PopupMenu starts a new Column at the Top!

Or use the automatic method
xPopupAutoMenubreak
Which automatically makes new Columns, if required, instead of the MultiPart implementation.

Custom Sorting in PopupFolders


Custom Item Sorting via User Modified Filenames
You can add [xx] before the Filename to enable sorting based on the 2-digit number (xx), the "[xx]" before the Filename won't be displayed.
These Files will be displayed first sorted with growing numbers.

[00]IrfanView.lnk -> IrfanView.lnk
[02]ZOrdertest.lnk -> ZOrdertest.lnk
[20]AdAware.lnk -> AdAware.lnk
Another.lnk
BasicFiles.lnk
...

Popup Menu consisting of only one Folder


*(x)Popup "Caption/Title" !new !popupBANG "Syntax prefix to use"
*(x)Popup "Caption/Title" !(x)popupfolder:$Litestepdir$
*(x)Popup ~new

You can also use !(x)PopupTasks or the ShellFolders this way!

Or with the following Bang:
!(x)PopupDynamicFolder "Full Path" [x] [y] ["anchor"]
Explanation see Bangs!

Or you use this special Feature of xPopup:
!insertfolder as Extra Setup Feature
The Folder(s) Content is inserted directly at(after) this Line, NOT in a SubFolder! Piping and Wildcards are allowed.

Example:
*(x)popup !insertfolder:"$startmenu$"
This would add the complete $startmenu$ at(after) this line.

xLabel(Light) Info Entry


You can use and display all Info, which "xLabel(Light)" can display inside of a Popup Entry (Painted on Popup BG or on InfoBG, if specified). Just load xLabel(Light) and use the following "special" Syntax.

*(x)popup !info "xLabel(Light) Text Escape Sequence"

Example: To create a clock like with !datetime, make this entry
*(x)popup !info "[time('hh:nn:ss')]"

You can setup a EntryTexture with the "Info" Prefix like the other Entry Image Settings.
xPopupInfoImage info.png
xPopupInfoTrueTransparent ...

You can setup the Font with the "Info" Prefix like the other Fontsettings.
xPopupInfoFontHeight 20
xPopupInfoFontColor ff0000 ...

Module Hooking Support


You can hook every Module into your PopupMenu, but due to the circumstances the CFG is not as easy as above :P

*(x)popup !hook:LeftBorder:RightBorder:Width of the Module:Height of the Module !Modulebang Userdata_1 (... Userdata_N) %%BANG TO MOVE MODULE%%

Ok, that was hard, now the explanation:
LeftBorder: The number of Pixels from the LeftSide of the Popup, at which the Hooked Module should start.
RightBorder: The number of Pixels from the RightSide of the Popup, till the Hooked Module should end.
Width of the Module: The Width of the Hooked Module.
Height of the Module: The Height of the Hooked Module.

!Modulebang Userdata_1 (... Userdata_N): Same as with every Hooking Process (e.g. !labellsboxhook testlabel)

Now, the tricky point:
For the correct positioning (y-Coordinate) xpopup must know with which Bang it can move the Module! So, if there's such a Bang available just specify it here. Otherwise YOU must calculate the correct y-Coordinate in the module Settings!

%%!commandmove%%,for instance. It's important that you make the DOUBLE %% before and after %% the MoveBang!

If you set "!hook:0:0:0:0 !Modulebang Userdata_1 (... Userdata_N)" --> WITH 4 TIMES 0, the module will only be hooked and you can Size and Position it MANUALLY where you want it in the PopupMenu! It won't be condidered as an Entry that needs Place.

Shell Folder Support


ShellFolders work as in Popup2, as there are:

Tasks Folder Support


TaskFolders work as in Popup2, with additional Application ContextMenu on RightClick.

Special Features


Custom Icons for Entry's

You can set (or remove) Custom Icons for every Defined PopupEntry.

*(x)Popup .icon="..." "MyEntry" "Action"

Defines the custom icon. Supports plain .ico files and extraction:
c:\win2k\explorer.exe
c:\win2k\explorer.exe,2
Supports ".none".
Supports generic icon file associations. Syntax: *.extension

Shading Popups

To Toggle Shaded Popups, simply RightClick on the Title/Caption(/TopBorder). The ShadedMode only consists of the Title(TopBorder) of the Popup and the BottomBorder, simply all Entrys are removed.
This would be the best for Pinned Popups, but it works for normal Popups or SubPopups the same.
Shaded Popups stay shaded, till you "unshade" them!

Pin To Desktop from Startup

To make a PopupMenu stay on the Desktop from start, just do this.

*xPopupStartPinned !(PopupBang) x y ["anchor"]

x and y are the Position value and support standard positioning syntax as '-', '~' or 'c'.
Accepts now optional "AnchorPoint", where "anchor" can be:
topleft DEFAULT
topright
bottomleft
bottomright

Pin To Desktop

To Separate a PopupMenu and make it stay on the Desktop, just Press CTRL+SHIFT and Press Down-Arrow or, if it's a SubFolder, simply Drag it away from the Parent.
To Kill it: Hover over the Popup and press CTRL+SHIFT and Up-Arrow or make a LeftDoubleClick on the Popup BG (on the TopBorder or BottomBorder!).

Keyboard Navigation

You can navigate through the PopupMenus with the Keyboard. Simply use UP, DOWN, LEFT and RIGHT ArrowKeys to switch between Entry's and use RETURN to execute or ESCAPE to Close.
As alternative xPopup supports & "Ampersand" in Captions to define a "JumpKey" -> jumps to this entry if this key is pressed. If none is defined or you're navigating through SubMenus the first entry which Caption starts with that Key is selected.

If you have a Mouse with Additional MouseButtons, the 4th should work as the LEFT Key pressed and the 5th as the RIGHT Key pressed (or maybe vice versa) :)

"Chording" (only the first 2 chars!)
If you quickly press another Key after the first, the first both Keys matching Entry will be selected. So, of you have many Entrys with "A" and you want "Animation", simply press "A" and then quick "N".

Pressing F5 updates the Popup, if the automatic Update on subfolders doesn't work or if you want to update the RootPopup (for people who use !insertfolder).

Scroll through Entry's

You can scroll Up and Down through the Entry's either with your MouseWheel or by Pressing the MiddleButton or Keyboard (see above).
To "Scroll/Switch" between Complete Part use "PageUp" and PageDown" Keys or Press CTRL during MouseWheel Scroll.

To open a SubFolder after Scrolling through the Entrys simply perform a LeftClick on the current Folder!

Multi Part PopupMenu's

If you have set MaxHeight or the PopupMenu doesn't fit on the whole screen it will be divided in visible Parts. You can access "hidden" parts by scrolling with Keyboard (PageUp, PageDown, Up, Down), MouseWheel or MiddleClick Up or Down till the last visible Entry, after that the next part will be displayed in the PopupMenu.

Contact

Please report bugs, if there should be any, to:
andymon@ls-universe.info

Btw.: I'm native German, so everyone who's also German mustn't write me in English ;)

Homepage: Here you find News, Updates, and some more.
www.LS-Universe.info