CarPal - Modular Cross-Platform Frontend
CarPal - Modular Skinnable open source frontend - Windows release
I've been working on an using this frontend for a while now, and had released a sort of tech preview a while back but looking back on it I realize it was completely pointless and useless at that time. I've completely revamped how the system operates and I feel that it is as of now a usable media frontend.
Right now CarPal has a few features built in.
1: Audio Player. CarPal is able to play .mp3 files from playlists.
2: Folder based Playlists. You set your music directory in music.conf (defaults to installedPath\Music\) and it will scan that folder for all mp3's and create playlists out of them on startup.
3: OBD2 gauges. While this part is purely in the alpha stages, it works at least on my car and is partially based off my GaugeDisplay program.
Skins are defined by XML files. Each file is its own window, and is set up similar to how RR does background images, where you have a background image and then a "button pressed" image. CarPal upon loading clips each "button " part of the image and displays it when you press a button. This I feel makes skinning a bit easier. The new XML based system also makes skins plugin-independant, as they require no plugins unlike the last system I had.
As you can see from the skin images shown below, I'm not much of an artist, but I'm hoping that this will generate enough interest that people will be willing to help out.
This program is completely 100% free and always will be. I am releasing this under GPLv2 licensing, and it is hosted at sourceforge if anyone wants to check out the source code.
1: A completely free and open frontend. This is my primary goal.
2: Speed. One of the more significant problems I see with most modern frontends is they just aren't that fast. This program was built to minimize load time and provide a "snappy" feel to the interface. This also means it is a bit of a memory hog but modern carpcs can generally handle it.
3: Expandability. CarPal is completely modular and plugin based. New functionality can be provided by simple to write (if you know c++) plugins. I am working on a .net interface to allow c#, vb.net and c++/.net users to write plugins for this as well.
4: Skinnability. The entire program is skinnable via .xml files. This means it's possible to change the entire feel of the program without requiring editing any code whatsoever.
Planned functionality in order of importance:
Ability to embed programs primarly for navigation purposes. - NOW INCLUDED
Fully working OBD2
Sync with home library
Wifi auto-connect and recording gps coordinates of found access point (netstumbler type functionality)
Edit: Please see the stickied post for the latest version.
The major change is the inclusion of an embedded application window. If you open "EmbedWindow.xml" in the skin\Default directory, you will see a few sample buttons. One such button has the function line which I will break down:
function cmd="EmbeddingEngine:window embed !iGuidance! !%currentwindowhandle%! !c:\program files\iGuidance\iGuidance\UMPC.exe! !0! !0! !800! !500!"
"EmbeddingEngine:window embed" is required by CarPal to know it is going to embed a program
"!iGuidance!" is the text in the title bar of the application. This is required as a backup incase it dosent embed properly, it tries two different methods.
"!%currentwindowhandle%!" is also required. This is replaced with the HWND to the current window. Pretty much it tells CarPal to embed the program into the current window (EmbedWindow)
"!c:\program files\iGuidance\iGuidance\UMPC.exe!" This is a path to the actual program
"!0! !0! !800! !500!" X Y Width and Height values, relative to CarPal itself. These values ensure that you can still see the "hide" and "close"buttons at the bottom.
1: Extract CarPalV*.**.zip to its own folder.
2: Update music.conf with either a relative or absolute path to your main music folder.
3: Update obd.conf with the COM port on which your OBD2 reader is attached if you have one. If not, ignore this step.
4: Run CarPal.exe