Welcome to the MP3Car.com forums.
You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. Registering will also remove advertisements. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today!
If you have any problems with the registration process or your account login, please contact contact us.
|
09-23-2005, 01:30 AM
|
#1
|
|
Banned
Join Date: Nov 2004
Location: L.A.
Vehicle: 3000GT VR4
Posts: 1,944
|
[Release] SKINbedder V3 - Preview
EDIT: V3 - Preview #2 is out... get it here: http://www.mp3car.com/vbulletin/showthread.php?t=70438
Download: http://www.whipflash.com/vamr/SkinBedder_v3.zip
Screen-Shots: Below and in other threads ( http://www.mp3car.com/vbulletin/show...4&page=3&pp=15).
Note: This is not ready for in-car use until the iGuidance skin is completed. There are also problems with transparency (both in embedded windows and in PNG graphics). See the "Status" header in the 3rd post for details.
This release is mainly for people who want to start skinning other apps or want to help complete the iGuidance skin.
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.
Current Status
Last edited by RPM_VR4 : 08-15-2006 at 11:33 PM.
|
|
|
09-23-2005, 01:32 AM
|
#2
|
|
Banned
Join Date: Nov 2004
Location: L.A.
Vehicle: 3000GT VR4
Posts: 1,944
|
Code:
Commands:
--------
Close([WindowContainer])
- Closes a window container (should be done after window it was containing is closed).
Embed([WindowContainer]:[ms])
- Embeds a window. Will give up window not found within [ms] milliseconds.
Focus([WindowContainer])
- Sets windows focus to an embedded window (must use before using Send([Key])).
HideSkin([SkinLayer])
- Hides a skin layer.
Kill([filename])
- Will end-task any process.
LoadSkin([Folder]:[SkinLayer])
- Loads or unhides a skin layer. Layers are paired with the windows they control.
OnTop([True/False])
- Sets SKINbedder to always on top or not. WARNING: Changing this kills all embedded windows.
Play([filename])
- Plays a sound file using MMSystem in the windows API.
Run([filename])
- Will run the file. Filename can specify a complete path.
RunWait([filename])
- Will run the file and pause the SKINbedder until the process terminates.
Send([Key])
- This will simulate a key press (see below)
Wait([ms]), Delay([ms]), Sleep([ms]), or Pause([ms])
- This will pause the script for [ms] milliseconds.
Keys:
----
A - Z
0 - 9
F1 - F12
BKSP or BACKSPACE
ENTER or RETURN
ESC or ESCAPE or EXIT
SPC or SPACE or SPACEBAR
PLUS or +
MINUS or - or DASH
UP or UPARROW
DOWN or DNARROW or DOWNARROW
LEFT or LTARROW or LEFTARROW
RIGHT or RTARROW or RIGHTARROW
PGUP or PAGEUP
PGDN or PAGEDOWN
INS or INSERT
DEL or DELETE
HOME
END
TAB
CTRL-...
ALT-...
SHIFT-...
Last edited by RPM_VR4 : 09-23-2005 at 01:35 AM.
|
|
|
09-23-2005, 01:34 AM
|
#3
|
|
Banned
Join Date: Nov 2004
Location: L.A.
Vehicle: 3000GT VR4
Posts: 1,944
|
Code:
Status:
------
SKINbedder V3 is not complete. This preview release has the following
known bugs/limitations.
-Buttons disappear when map is updated. The current work-around is
repainting them on a timer. This causes any semi-transparent effect to fade
up. An alternate exe (SKINbedder_NOEX.exe) does not have this problem,
but the transparent part will not be updated when the window behind the
buttons updates itself.
-Transparent/Alpha-Blended windows will not refresh. You must close and
re-open them to have them update.
-The iGuidance SKIN is not complete. Many sub-windows will not embed
right or not exit right. The OSK does not work. This is not a usable release
until the skin is complete. If you have the desire to continue my SKINing
effort or make your own skin, you can make it usable. Please contact me
(RPM_VR4 on MP3Car.com) if you have successfully skinned additional iG sub-
windows.
-----------------------------------------------------------------------
SKINbedder was written by Ryan McCormick (RPM_VR4) and David Burban (0l33l).
Delphi source code available upon request.
Visit the SKINbedder forum on MP3Car:
http://www.mp3car.com/vbulletin/forumdisplay.php?f=109
Last edited by RPM_VR4 : 09-23-2005 at 02:06 AM.
|
|
|
09-23-2005, 02:00 AM
|
#4
|
|
Raw Wave
Join Date: Sep 2004
Location: NY
Vehicle: Chevy Van G20 and '06 Scion Xb
Posts: 1,802
|
wow looks great
how often does the route list refresh
__________________
.______
| '_ |__\___
[(o)|___(o)] XB
._________
| I__I I_I|_\__I
[(o)______(o)]b VanPimpin'
LostReceptions Apps D/L Here
GPSGasoline- Rewriting
Draw- SkribblePad for Touchscreens
iGQwerty-iG3.0 Qwerty Keyboard
CarPCNetwork
|
|
|
09-23-2005, 02:12 AM
|
#5
|
|
Banned
Join Date: Nov 2004
Location: L.A.
Vehicle: 3000GT VR4
Posts: 1,944
|
Well if you keep it transparent, it never refreshes unless you close it and re open it using one of the right-side menus.
If you edit the iGuidance\iGRoute\iGRoute.ini file, you can make it non-transparent and then it will be updated whenever iGuidance updates it.
Note: The "refresh bug" is just repainting the buttons to keep them visable. Also the SKINbedder_NOEX.exe does not have this problem (but it does not redraw the map in its transparent part). For any API programmers reading this, the _NOEX build does not use ExStyle = ExStyle || WS_EX_TRANSPARENT, where as the main build does.
|
|
|
09-23-2005, 03:33 AM
|
#6
|
|
Banned
Join Date: Nov 2004
Location: L.A.
Vehicle: 3000GT VR4
Posts: 1,944
|
Setup hints:
Open iGuidance\iGuidance.ini
Find the [Scripts] section
Find the Startup= variable.
Edit "Run(c:\progra~1\iNAV\iGuidance\iGuidance.exe) " to your path (no spaces).
If using it embedded in a front-end, add ",OnTop(True)" after the above.
Note: If you turn on Always-On-Top (using "OnTop(True)"), all sub-windows will have to be embedded or you will not see them. The iGuidance SKIN is not complete yet, so not all sub-windows are embedded.
Also Note: Using "OnTop(False)" seems to kill any embedded window for some reason??? 
Last edited by RPM_VR4 : 09-23-2005 at 02:29 PM.
|
|
|
09-23-2005, 05:19 AM
|
#7
|
|
Raw Wave
Join Date: Apr 2005
Vehicle: 2002 Honda CR-V
Posts: 2,699
|
Apparently you can only use the 8.3 DOS filename in the RUN portion of the script. Why won't this accept long gpath names? I cannot get it to run
Quote: Originally Posted by RPM_VR4
Setup hints:
Open iGuidance\iGuidance.ini
Find the [Scripts] section
Find the Startup= variable.
Edit "Run(c:\program files\iNAV\iGuidance\iGuidance.exe)" to your path.
If using it embedded in a front-end, add ",OnTop(True)" after the above.
Note: If you turn on Always-On-Top (using "OnTop(True)"), all sub-windows will have to be embedded or you will not see them. The iGuidance SKIN is not complete yet, so not all sub-windows are embedded.
Also Note: Using "OnTop(False)" seems to kill any embedded window for some reason??? 
|
|
|
09-23-2005, 07:17 AM
|
#8
|
|
Raw Wave
Join Date: Apr 2005
Vehicle: 2002 Honda CR-V
Posts: 2,699
|
Got it to work in my laptop...
I AM VERY IMPRESSED!!!!!!!
|
|
|
09-23-2005, 07:36 AM
|
#9
|
|
FLAC
Join Date: Jun 2005
Location: Anoka County, MN
Vehicle: 2008 Toyota Prius
Posts: 1,020
|
I was thinking over your blending bug the other day... am I correct to assume that the blending bug blends whatever its drawing over with the new image with some kind of function you write? If so, it may take some altering of the code but you could pull off a trick like igzoom v2:
-put all of your interface on a new window
-set the new window to layered transparency (with no borders or caption)
-use BitBlt to copy the contents of iguidances window into memory somehow so you have a fresh copy of the iguidance display every time you refresh
-Have the new window follow around the status changes (minimize, zorder changes, ect) of iguidance/skinbedder (with set parent or something) by making it a modal window
-Have the new window follow around the size/position of iguidance/skinbedder
And then you have buttons that appear to be in the window, and arent affected by iguidances redraw. Its alot of codeing though 
Last edited by PURDooM : 09-23-2005 at 11:05 AM.
|
|
|
09-23-2005, 10:23 AM
|
#10
|
|
Raw Wave
Join Date: Aug 2004
Location: Chicago area,IL
Vehicle: 01 Ford ZX3
Posts: 2,011
|
Looking at this preveiw...Very very nice, and its not done yet.
<--- Wants, can't wait...
Once again thanks guys. Keep it up...
|
|
|
09-23-2005, 02:29 PM
|
#11
|
|
Banned
Join Date: Nov 2004
Location: L.A.
Vehicle: 3000GT VR4
Posts: 1,944
|
JIT: Sorry... it does accept long path names, but it doesn't accept spaces. Therefore you have to use progra~1. I don't think I can fix that except by not using INI files. A future version may use XML.
|
|
|
09-23-2005, 02:40 PM
|
#12
|
|
Maximum Bitrate
Join Date: Jun 2005
Location: Oakland, CA
Vehicle: 2002 Lexus IS300
Posts: 530
|
I'm at work, so I can't test it right now, but what about using quotations marks? Would that work around the space issue? Like this: "C:\Program Files\iNav\iGuidance"
-psyrex
|
|
|
09-23-2005, 02:48 PM
|
#13
|
|
Banned
Join Date: Nov 2004
Location: L.A.
Vehicle: 3000GT VR4
Posts: 1,944
|
I don't think so. Maybe putting quotes around the entire Startup="Run(....),..." line, but I doubt that too. The problem is not how I am handling the RUN command, the problems is that I am reading a long comma-delimited list from an INI file, and if you have Startup=Run(c:\program files\iNav\..... then my INIFile.ReadString(Statup) function only returns "Run(c:\program".
|
|
|
09-23-2005, 03:34 PM
|
#14
|
|
Raw Wave
Join Date: Apr 2005
Vehicle: 2002 Honda CR-V
Posts: 2,699
|
I must be doing something wrong, because even with the 8.3 format (progra~1 etc) it is failing on me.
I use the command:
dir /x to list the 8.3 names... so I know I am using the right ones. Will try again tonite.
|
|
|
09-23-2005, 06:24 PM
|
#15
|
|
Raw Wave
Join Date: Apr 2005
Vehicle: 2002 Honda CR-V
Posts: 2,699
|
OK, I tried just now...
Path to my exe:
D:\General Programs\iNav\iGuidanceiGuidance.exe
this is what I am using:
StartUp=Run(D:\GENERA~1\INAV\IGUIDA~1>IGUIDA~1.EXE )
...and I get:
Run Error: D:\GENERA~1\INAV\IGUIDA~1>IGUIDA~1.EXE Not Found!
Any ideas?
|
|
|
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
|
|
|
| Thread Tools |
|
|
| Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -5. The time now is 10:00 PM.
|
|