Centrafuse is the best frontend ever - because of the plugin interface - easy to program (i have looked inside the sdk.chtm just once) and powerful.
Centrafuse will also get stronger and better as there much more developers developing for it (they are able to do this -> plugin interface)...
So I have started coding something I hope you will have a look at it.
My main dislike (as plugin/developer) at all frontends (not only CF) is the crippeled "Windows Form Designer" and crippeled "Microsoft ActiveX concept" - this gives you (for example) codelogic for a buttons in the form itself.
So I reintroduced the ActiveX concept for CarFrontends - but this time skinnable !


You press a button - it draws itself "pressed" and raises an event for the form. The buttons itself is my own ActiveX Control as the Windows Command Button is not suitable for car usage (IMHO).
To be able to draw "round buttons" I am doing some "magic" stuff with transparency...
the skin-file (text-file) looks like that:
Code:
mySkin.SuspendLayout()
'
'CfButton1
'
mySkin.CfButton1.Image = New System.Drawing.Bitmap("plugins\CFRadio\rd-darkglass-6-u.gif")
mySkin.CfButton1.ImageDown = New System.Drawing.Bitmap("plugins\CFRadio\rd-darkglass-6-d.gif")
mySkin.CfButton1.Location = New System.Drawing.Point(8, 80)
mySkin.CfButton1.Name = "CfButton1"
mySkin.CfButton1.Size = New System.Drawing.Size(120, 43)
mySkin.CfButton1.TabIndex = 1
mySkin.CfButton1.Tekst = "Tune +"
'
'CfButton2
'
mySkin.CfButton2.Image = New System.Drawing.Bitmap("plugins\CFRadio\rd-darkglass-6-u.gif")
mySkin.CfButton2.ImageDown = New System.Drawing.Bitmap("plugins\CFRadio\rd-darkglass-6-d.gif")
mySkin.CfButton2.Location = New System.Drawing.Point(8, 136)
mySkin.CfButton2.Name = "CfButton2"
mySkin.CfButton2.Size = New System.Drawing.Size(120, 43)
mySkin.CfButton2.TabIndex = 1
mySkin.CfButton2.Tekst = "Tune -"
'
'Cflcd1
'
mySkin.Cflcd1.Image = New System.Drawing.Bitmap("plugins\CFRadio\Display_LCD.jpg")
mySkin.Cflcd1.Location = New System.Drawing.Point(136, 80)
mySkin.Cflcd1.Name = "Cflcd1"
mySkin.Cflcd1.Size = New System.Drawing.Size(528, 213)
mySkin.Cflcd1.TabIndex = 2
mySkin.Cflcd1.Tekst = Nothing
'
'CFRadio
'
mySkin.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
mySkin.BackgroundImage = New System.Drawing.Bitmap("plugins\CFRadio\blank.jpg")
mySkin.CF_pluginIsGUI = True
mySkin.CF_pluginName = "CFRADIO"
mySkin.ClientSize = New System.Drawing.Size(677, 310)
mySkin.Controls.Add(mySkin.Cflcd1)
mySkin.Controls.Add(mySkin.CfButton1)
mySkin.Controls.Add(mySkin.CfButton2)
mySkin.Name = "CFRadio"
mySkin.Controls.SetChildIndex(mySkin.CfButton2, 0)
mySkin.Controls.SetChildIndex(mySkin.clickShield, 0)
mySkin.Controls.SetChildIndex(mySkin.CfButton1, 0)
mySkin.Controls.SetChildIndex(mySkin.Cflcd1, 0)
mySkin.ResumeLayout(False)
You will notice that this is the InitializeComponent() from the Windows Form Designer - I am loading this file at runtime, compile and execute it (instead of the InitializeComponent() )
The "skinner" could certainly also replace the controls with his own versions ! Adding flash or animation or whatever.
My ActiveX controls are placed inside CF not-my own frontend - this shows again the power and flexibility of CF - only a black-painting of the Plugin-form-space in the OnPaint() Event disturbes this (please remove Veetid

)
I have designed a radio plugin because I want to implement a RDS text and want to show you my HAL (seperating driver from application (you are sooo faaaast Veetid - you have realized that in 1.6

)).
This also raises the question why i can't replace the Radiopart inside CF - so please be consistently and make *every* part of CF a plugin (with a different interface as it is much easier IMHO).
...and please document the interface of the radiomodules in 1.6 - i am sure that you can't buy every radiohardware to develop a driver for it.
And finally keep up the good work veetid (and you others) !
Grab my ideas here:
http://netsh88.hades.net-build.de/fm...dio_plugin.zip
http://netsh88.hades.net-build.de/fm...dio_source.zip