SpaceMonger performs its work when it receives Actions, which are
short strings like open and zoom-in that tell it what
to do. Menus, push-buttons, key-presses, and even mouse clicks generate
Actions. You can set Actions for menus, push-buttons, and key-presses, but
the Action for each mouse button is hard-wired into the program.
There are five kinds of actions that SpaceMonger knows about. They are
Built-In, Program Launcher, Opener, Help, and
Composite.
There are lots of actions that instruct SpaceMonger to perform various
built-in tasks:
- abort
- Exit the program immediately, without waiting for any
currently-active tasks (like file copying) to complete.
- close
- Synonym for exit and quit.
Closes the program. Same as pressing the X-button in the corner.
- exec [(path)] program args...
- Run an external program. See full details below.
- exit
- Synonym for close and quit.
Closes the program. Same as pressing the X-button in the corner.
- help help-file-name
- Opens a file in the help window. See full details below.
- set-drive-bar drives|tree|recycle-bin
- Changes the current contents of the left-side drive bar. Same as
clicking on the drop-down menu above the drive bar.
- set-root path
- Changes the root-location to the selected path. Same as
typing a path in the root-location box and pressing Enter.
|
6b. Program Launcher Actions
| |
SpaceMonger has the ability to run other programs to perform various
tasks. A launching action looks like one of these lines:
|
exec (C:\Windows) Notepad.exe
exec (C:\Windows) Notepad.exe "Some File.txt"
exec C:\Windows\Explorer.exe
exec (C:\) "C:\Program Files\SpaceMonger.exe" C:\
|
In general, then, a launching action looks like this:
exec ( initial-path ) program-name [parameters]
exec program-name [parameters]
|
|
Launching actions are available in two forms; the first kind allows you
to specify an initial path for the program to start in; the second kind
simply assumes that the program should start in the root directory of whatever
disk or folder you're currently browsing in the program.
Let's look at the examples. The first example switches into the
C:\Windows directory and then runs Notepad.exe, searching
for it first in the C:\Windows directory and then trying the
various directories listed below.
The second example does the same as the first, but provides a parameter
to the program: "Some File.txt". Notepad knows that its first
parameter is a file to be opened. Other programs do different things with
their parameters; consult their documentation to find out what.
The third example launches the Windows Explorer in the root path of the
currently viewed disk or folder.
And the fourth example demonstrates that if you have a program to run that
contains spaces in its name, you will need to surround the name with quotation
marks to ensure that the system knows how to find it.
If a full pathname is not provided for a program, then it will
be searched for in the following order:
- The given initial path, if any
- SpaceMonger's installation directory (usually "C:\Program Files\SpaceMonger")
- The Windows system directory (usually "C:\Windows\System" or "C:\WinNT\System32")
- The Windows 16-bit system directory (usually "C:\Windows\System" or "C:\WinNT\System")
- The Windows directory (usually "C:\Windows" or "C:\WinNT")
- The directories listed in the PATH environment variable, if any
In some cases, you don't want to run a program in an action; you simply
want to open a specific file using whatever program may be attached, or you
may want to open a specific folder in a new Explorer window. This is the
purpose of opener actions.
Opener actions look like these examples:
|
open C:\Windows
open nethood
open "C:\My Documents\Report.doc"
|
In general, then, an opening action looks like this:
open file-or-folder-to-open
open special-folder-name
|
|
When you specify a file or folder, you should provide the full path
to the file or folder. If you specify any relative pathnames, they will
be measured relative to SpaceMonger's own installation folder (usually
"C:\Program Files\SpaceMonger").
In addition to opening specific files or folders, you can also open certain
special folders that have no specific path, such as the Control Panel, the Printers
folder, and the Network Neighborhood. Below is the list of special folders:
- admintools: (Windows 2000+) The folder storing administrative tools for an individual user.
- altstartup: The folder corresponding to the user's nonlocalized Startup program group.
- appdata: (Windows 98+) The folder serving as a common repository for application-specific data.
- bitbucket: The virtual folder containing the objects in the user's Recycle Bin.
- cdburn-area: (Windows XP+) The folder acting as a staging area for files waiting to be written to CD.
- common-admintools: (Windows 2000+) The folder containing administrative tools for all users of the computer.
- common-altstartup: (Windows NT+) The folder corresponding to the nonlocalized Startup program group for all users.
- common-appdata: (Windows 2000+) The folder containing application data for all users.
- common-desktopdirectory: (Windows NT+) The folder containing files and folders that appear on the desktop for all users.
- common-documents: (Windows 98+) The folder containing documents that are common to all users.
- common-favorites: (Windows NT+) The folder serving as a common repository for favorite items common to all users.
- common-music: (Windows XP+) The folder serving as a repository for music files common to all users.
- common-pictures: (Windows XP+) The folder serving as a repository for image files common to all users.
- common-programs: (Windows NT+) The folder containing the directories for the common program groups that appear on the Start menu for all users.
- common-startmenu: (Windows NT+) The folder containing the programs and folders that appear on the Start menu for all users.
- common-startup: (Windows NT+) The folder containing the programs that appear in the Startup folder for all users.
- common-templates: (Windows NT+) The folder containing the templates that are available to all users.
- common-video: (Windows XP+) The folder serving as a repository for video files common to all users.
- controls: The virtual folder containing icons for the Control Panel applications.
- cookies: The folder serving as a common repository for Internet cookies.
- desktop: The virtual folder representing the Windows desktop, the root of the namespace.
- desktopdirectory: The folder used to physically store file objects on the desktop (not to be confused with the desktop folder itself).
- drives: The virtual folder representing My Computer, containing everything on the local computer: storage devices, printers, and Control Panel. The folder may also contain mapped network drives.
- favorites: The folder serving as a common repository for the user's favorite items.
- fonts: A virtual folder containing fonts.
- history: The folder serving as a common repository for Internet history items.
- internet: A virtual folder representing the Internet.
- internet-cache: (Windows 98+) The folder serving as a common repository for temporary Internet files.
- local-appdata: (Windows 2000+) The folder serving as a data repository for local (nonroaming) applications.
- mydocuments: (Windows XP+) The virtual folder representing the My Documents desktop item.
- mymusic: The folder serving as a common repository for music files.
- mypictures: (Windows 2000+) The folder serving as a common repository for image files.
- myvideo: (Windows XP+) The folder serving as a common repository for video files.
- nethood: A file system directory containing the link objects that may exist in the My Network Places virtual folder. It is not the same as network, which represents the network namespace root.
- network: A virtual folder representing Network Neighborhood, the root of the network namespace hierarchy.
- personal: (Windows XP+) The virtual folder representing the My Documents desktop item. This is equivalent to mydocuments.
(Before Windows XP) The folder physically storing a user's common repository of documents.
- printers: The virtual folder containing installed printers.
- printhood: The folder containing the link objects that can exist in the Printers virtual folder.
- profile: (Windows 2000+) The user's profile folder.
- profiles: (Windows XP+) The folder containing user profile folders.
- program-files: (Windows 2000+) The Program Files folder.
- program-files-common: (Windows NT+) A folder for components that are shared across applications.
- programs: The folder containing the user's program groups (which are themselves file system directories).
- recent: The folder containing shortcuts to the user's most recently used documents.
- sendto: The folder containing Send To menu items.
- startmenu: The folder containing Start menu items.
- startup: The folder corresponding to the user's Startup program group.
- system: (Windows 2000+) The Windows System folder.
- templates: The folder serving as a common repository for document templates.
- windows: (Windows 2000+) The Windows directory or SYSROOT.
(Copyright note: This list is derived from the Microsoft web page that lists the CSIDL_*
values for Windows up through and including Windows Server 2003. It was originally found
at this address in a more extensive and detailed format:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp)
In some cases, you don't want to open a program or object; you simply want
to display the standard Windows "Properties" dialog for it. You can do that
using a properties action, which looks a lot like the corresponding
opener action.
Properties actions look like these examples:
|
properties C:\Windows
properties mycomputer
properties "C:\My Documents\Report.doc"
|
In general, then, a properties action looks like this:
properties file-or-folder-to-open
properties special-folder-name
|
|
When you specify a file or folder, you should provide the full path
to the file or folder. If you specify any relative pathnames, they will
be measured relative to SpaceMonger's own installation folder (usually
"C:\Program Files\SpaceMonger").
In addition to opening specific files or folders, you can also open certain
special folders that have no specific path, such as the Control Panel, the Printers
folder, and the Network Neighborhood (see the list above).
It is not uncommon to want to open help documents within a program.
SpaceMonger provides a built-in small, fast HTML renderer for displaying help
documents. You may be using it to read this document right now. The HTML
renderer is intentionally limited to make it small and fast; it can handle all
of HTML 4.01 except scripts, style sheets, forms tags, and embedded-object tags.
Help actions look like these examples:
|
help doc/fr/index.html
help doc/us/quickref.html#keystrokes
|
In general, then, a help action looks like this:
help help-file#section
help help-file
|
|
Help-file names are measured relative to SpaceMonger's installation
directory. If a section is not specified, the help file will be opened to its
default section or the top of its document, depending on what kind of
file it is. Only one help window may be open at a time; if you use a
help action and the help window is already open, it will switch to the
new document.
Links in the help window are handled specially. First, SpaceMonger
does recognize the <LINK> tag; you can use it to
identify the previous section, next section,
up section, and the table of contents.
Second, <A> tags are handled specially: if the
HREF attribute begins with sm:, then the
succeeding text will be treated as an Action. Relative
HREFs will automatically be opened in the same help
window; if SpaceMonger sees an absolute HREF, it
will open it in the user's default web browser.
Images are also handled specially. SpaceMonger's help window
can only display BMP and Targa images (optionally LZSS-compressed).
You cannot display GIF or JPEG images in the help window. However,
you can use Targa's alpha channel for true transparency.
SpaceMonger also recognizes one non-standard tag: <NO-SPACEMONGER>.
Anything between <NO-SPACEMONGER> and </NO-SPACEMONGER>
will be ignored by SpaceMonger's HTML renderer, but will be displayed by
other web browsers.
Sometimes a simple action just isn't enough by itself. For example, you
might want to have a menu item that opens all three of your favorite
spreadsheet program, word processor, and e-mail program at once. Or you
might want to have a keystroke that opens drive C and then zooms in on
the Windows\Temp directory. For these kinds of needs, there are
composite actions.
A composite action is an action that is composed of one or more other
actions. Think of it a little like a script or a macro, only simpler.
A composite action looks like this:
|
action1 ; action2 ; action3 ; action4 ...
|
Each of the individual actions may be any other action recognized by
SpaceMonger, including other composite actions. As shown, SpaceMonger
will perform action1, then action2, then action3, and so on until it runs
out of actions to perform.
There are a few special (and very interesting cases), however. If
you place an ampersand after an action, that will tell SpaceMonger that
you don't want it to wait for the action to complete. Here is an example
without the ampersands:
|
exec Notepad.exe ; exec Calc.exe
|
After opening Notepad in this example, SpaceMonger will sit stupidly waiting
for Notepad to exit before opening the Calculator. Worse, SpaceMonger will
assume that it should not do anything until both programs exit, and it
will disable its own window until then. You can make both programs open
simultaneously (and prevent SpaceMonger from waiting for them to exit) by
adding ampersands:
|
exec Notepad.exe & ; exec Calc.exe &
|
In this example, SpaceMonger will open Notepad but won't wait for it to exit.
As soon as Notepad has begun opening, SpaceMonger will immediately open the
Calculator, and it won't wait for that either. It will immediately return
to ready availability for whatever additional tasks you may have.
Note that the extra space characters in the above examples are not
required; you can leave them out if you want.
Note also that some actions, particularly the built-in ones, will ignore
the ampersand because it would make no sense --- for example, a zoom-in and
a zoom-out acting simultaneously would make no sense at all. So SpaceMonger
intelligently waits for the one to finish before starting the next.
|