Code:
SKINbedder V3 - Preview Release
Readme File
Introduction
------------
SKINbedder V3 allows users to easily create a custom touchscreen-friendly
UI for any application or group of applications. With it you will be able to
auto-size, position, trim, and embed any group of windows to your own
custom layout. Hot-Spot graphics can then be overlaid allowing you to
control the windows through your own custom UI. Embedded windows can
be made transparent by "deleting" one color and/or semi-transparent by
alpha-blending the window. Graphics are PNG which supports transparency
and alpha-blending. Hot-Spot controls (as well as responses to open, close,
hibernate, and resume) are defined using a simple scripting language.
Installation:
------------
Extract the entire contents of the .zip distribution file to the
folder "c:\program files\SKINbedder". You can then run SKINbedder.exe or
SKINbedder_NOEX.exe from that folder (SKINbedder is distributed for use with
iGuidance. iGuidance must be installed in its default location
"c:\program files\iNAV\iGuidance").
Note: SKINbedder should run from any folder as long as it has the proper
sub-folders and INI files.
Configuration:
-------------
All configuration is done by editing INI files (and PNG graphics). These
INI files (and PNG graphics) are organized in subfolders of SKIN\Window.
Here are some examples of the type of settings you will find in the
configuration files on each level.
Skinbedder.ini - Sets the default "SKIN" to iGuidance and specifies re-draw refresh-rate.
iGuidance\iGuidance.ini - Sets SKINbedders size/position/window name/startup-script/etc.
iGuidance\iGMap\iGMap.ini - Sets the map size/position/nudging/etc.
iGuidance\iGMap\Bookmark_Left.ini - Sets the actions/positions of the 4 left buttons.
iGuidance\iGMap\BookmarkLeft_Down.png - The graphic of the 4 left buttons that you see.
...
Note: To change the location of iGuidance, you would edit the Run()
command in the [Scripts], Startup= section of iGuidance\iGuidance.ini.
Making a new "SKIN":
-------------------
Make a copy of the SKINbedder\iGuidance folder and rename it to the name
of your new SKIN. Edit SKINbedder.ini and change the "DefaultProgram" to
the name of your new SKIN. Go into your new folder and rename its
iGuidance.ini to the name of your new SKIN. Edit its INI file, change the top
section name to the name of your new SKIN. Change the Startup script in
the INI file to run your program, embed your main window sub-folder, and
load your skin-layer. Rename the iGMap sub-folder to the name of your main
window. Go into it, rename its iGMap.ini, rename the section at the top of that INI file. Edit the rest of the INI file to configure
sizing/positioning/nudging/transparency/etc. Rename BookMark_Left.ini to
the name of your Skin-Layer. Rename the section at the top of it and then
edit the rest of it to configure graphics/action hot-spots/button commands.
Folder Structure:
----------------
SKINbedder
\_ SKINbedder.ini Default SKIN Sub-Folder & Refresh-Rate.
\_ [SKIN] Sub-Folders (one per SKINbedder instance).
\_ SKIN.ini Startup/Shutdown/Hibernate Scripts & Form Settings.
\_ LoadingPIC Displays while SKINbedder is loading.
\_ [Window] Sub-Folders (one per window type to embed).
\_ Window.ini Window Size/Position/Trim/Transparent Settings.
\_ Layer.ini Layer Graphics/Position/Hot-Spots Settings
\_ Up.png Image with all Hot-Spot buttons "up".
\_ Down.png Image with all Hot-Spot buttons "down".
SKINs:
-----
SKINbedder V3 is designed so that you can use multiple instances of it to
embed multiple different applications. Each application layout is defined in
a "SKIN" sub-folder. SKINbedder V3 is distributed with an iGuidance SKIN.
To launch SKINbedder with a different SKIN than iGuidance, simply pass the
SKIN name as a parameter to SKINbedder.exe. You can also change the
default SKIN by editing SKINbedder.ini (used when double-clicking
SKINbedder.exe or launching it without a parameter). Through a SKINs INI
file, you can set a the SKINbedder window name/size/position and the
Startup/Shutdown/Hibernate/Resume scripts.
Window Containers:
-----------------
Anything you want to embed is contained in a TWindowContainer.
Through a window container INI file, you can set the windows class,
name, size, position, nudging, and transparency. You size/position the
window by specifying a Width, Height, TopBorder, BottomBorder, LeftBorder,
and/or RightBorder (usually only 2, 3, or 4 of the 6). Borders are the
distance between the edge of the main SKINbedder form, and the edge of
your embedded window. If you do not specify any borders, you must specify
width and height and your window will be centered. If you specify all 4
boarders are 0, you do not need to specify width and height and your
window will be stretched to fit the entire area of the main SKINbedder form.
Borders are respected even when the main SKINbedder form is resized.
See the table below for all possible combinations:
Horizontal: Width only: Center
Width+LeftBorder: Left edge is LeftBorder pixels from left edge of main form.
Width+RightBorder: Right edge is RightBorder pixels from right edge of form.
Width+LeftBorder+RightBorder: Same as Width+Left except width will shrink if needed to respect right border.
Vertical: Height only: Center
Height+TopBorder: Top edge is TopBorder pixels from top edge of main form.
Height+BottomBorder: Bottom edge is BottomBorder pixels from bottom edge of form.
Height+TopBorder+BottomBorder: Same as Width+Top except height will shrink if needed to respect bottom border.
The window title-bar and border are automatically removed when it is
embeded. To remove a button-bar, status-bar or to only view a specific
rectangle of the window, use the nudge settings.
Skin Layers:
-----------
Each set of graphics are contained in a TSkinLayer. Through a skin layer
INI file, you can set the all-buttons-up image, the all-buttons-down image,
the position of the skin layer, the coordinates for each button, and a
OnButtonDown and/or OnButtonUp Command. If you specify both commands,
the button will function as a toggle button (it will stay down after one press,
and run the OnButtonUp command on the second press). The layer is
positioned using Borders just like window containers are (but the width and
height are determined by the all-buttons-up image).
Scripts:
-------
SKINbedder works purely by executing its own scripting language.
In the main ini there is a startup script, shutdown script, hibernate script,
and resume script. Also in each skin ini, each button has a command script.
Scripts are a list of commands (see below) separated by commas. There can
be no spaces in the script.
Bookmarks