Form Designer interests?

BlitzPlus Forums/BlitzPlus Programming/Form Designer interests?

Jim Teeuwen(Posted 2003) [#1]
Hi ppl. I am myself not a B+ user, but I noticed some ppl are interested in a decent Visual Designer.

Now let coincidence have it that I need a new project/challenge, so I was thinking of creating a Visual Studio oriented Visual Designer that generates pure B+ code.

This will be quite an undertaking so I need to know of there is enough need for it.

Other point to note is, If im going to create it, I will write it in C#, that means it will use the Microsoft .NET framework. Sorry for the ppl who (for whatever reason) hate this, but I need C# training and this is just the way to get it.

Anyways, any ideas/comments/suggestions are welcome.


Orca(Posted 2003) [#2]
So the competition has arrived :P

Actually, this was a topic I should have made a while ago, before I got my hands all dirty. I've already started on my own visual form editor(built in b+). It seems to be coming along nicely :)

Anyways, I haven't been able to really gauge whether the masses see the need for this. I've talked to a few "old schoolers" thus far (yeah you know who you are :P) who seem to be perfectly fine hacking up gui's in code.

On the other hand, I have seen the couple odd posts inquiring about form editing solutions. I personally can't stand creating forms manually in code. Its very tedious. I like to see the layout of things as I work on them. I know there has to be more than a handful of us "visual" types out there.

So uhm yeah--- just as Defiance has said-- any ideas/comments/suggestions are very welcome :)


Jim Teeuwen(Posted 2003) [#3]
I was thinking I could go for a Protean IDE Plugin when Rob finishes the SDK for Protean. Creating an entirely new application is just another icon cloggin up the allready too small taskbar. In that respect, it's also a bit simpler because the entire application framework is allready built, working and fully tested. (Protean itself).


Tiger(Posted 2003) [#4]
Defiance:
Sound great to me.


Skitchy(Posted 2003) [#5]
Yes, I'd like one - and I REALLY like the look of Protean IDE as well so if the 2 could be combined... :)

I haven't bought Protean yet - but only because it requires a higher Windows version than I'm working with (but that's going to change soon). A plugin like this would sweeten what was already a good looking program.

Making it generate pure B+ code is a good idea, but it would also be nice to have a loader function for B+ that could read the editors OWN format and create all the gizmos accordingly. I say this because it can get a bit tedious having to hack out ALL the old B+ code and hack in ALL the new B+ code every time you make a change. Am I making sense?


Jim Teeuwen(Posted 2003) [#6]
A seperate fileformat sounds ok and I think I understand what you mean.. you're pointing at possible future changes in the produced code and only having to use a single function call to LoadBlitzForm( "somefile" ) (for instance) wich will never change will save you a lot of painfull code editing. In that respect your right. I'll put this in my planning and see what I can come up with.


Skitchy(Posted 2003) [#7]
Yep, that's what I was trying to say :)

You could use LoadBlitzForm() until you had a finalized form and then convert to pure B+ code for the finished version (if you felt like it). I'd probably stick with the proprietary format though, because NOTHING is ever 'finished' when it comes to programming ;)


Jim Teeuwen(Posted 2003) [#8]
true. I have been thinking about it for a bit, but found that creating a blitz header file with this function might proove difficult, since the form must consist of blitz code and cannot be properly created at runtime.

The proprietary format is still a good idea, but maybe for saving the form as an intermediate file, this makes loading/saving in the Designer easier, and allows you to edit the form as you want, then simply export it as blitzcode if you wanted to.. This eliminates the need for a blitz header file and offers maximum compatibility for the Plugin itself. What I mean by this is, the proprietary format can be used with any other language besides blitz. I will simply need to add an export routine for each language I want to support, starting with BlitzPlus


Example:
I create a new form and save it as someform.vbp. This is the workingfile wich contains the formdata in a format easy to handle by the designer. I am considering using an Open Standard for this. possibly XML. the when you finish designing your form, just hit the Export button and specify BlitzPlus as the output language, and it will generate a file called someform.bb wich you can simply include in your project. When the export function/dode generation might change at some point, all you need to do is reopen the workingfile and re-export it.

Ill have to look into the details of the actual implementation tho, but so far this seems like the best way to go, specially since I happen to know, Rob has some other plans for Protean besides BlitzBasic.


Nigel Brown(Posted 2003) [#9]
Im confused the resource editor I am writting does all this already? Do people really not bother to look at what else is around and what it already does before they start to think about writting their own??? Mine comes with an application called ResTest that you can test the resource files with once written ant that uses a library to load all the FORMS! and display them. Think I will just upload al the source code and you can play with it...


Nigel Brown(Posted 2003) [#10]
Here is the source of a skeleton app.

Include	"ResLib.bp"

Initalise()

;--------------------------------------------------
Repeat
;--------------------------------------------------

	Select	WaitEvent(1)
	
		Case EVNT_NONE

;			DebugLog	"EVNT_NONE"
;			DebugLog	EventSource()
;			DebugLog	EventData()


		Case EVNT_KEY_DOWN

			DebugLog	"EVNT_KEY_DOWN"
			DebugLog	EventSource()
			DebugLog	EventData()
		

		Case EVNT_KEY_UP

			DebugLog	"EVNT_KEY_UP"
			DebugLog	EventSource()
			DebugLog	EventData()


		Case EVNT_KEY_STROKE

			DebugLog	"EVNT_KEY_STROKE"
			DebugLog	EventSource()
			DebugLog	EventData()


		Case EVNT_MOUSE_DOWN

			DebugLog	"EVNT_MOUSE_DOWN"
			DebugLog	EventSource()
			DebugLog	EventData()

;			obj.objct = firstobj( lst ) : While obj <> Null
			
;				If obj\open = True
				
;					gdgt.gadget = firstgdgt(obj) : While gdgt <> Null
					
						
						
						
;					gdgt = nextgdgt(gdgt) : Wend
					
;				EndIf
				
;			obj = nextobj( obj ) : Wend			
						
			
		Case EVNT_MOUSE_UP

			DebugLog	"EVNT_MOUSE_UP"
			DebugLog	EventSource()
			DebugLog	EventData()

		Case EVNT_MOUSE_MOVE

			DebugLog	"EVNT_MOUSE_MOVE"
			DebugLog	EventSource()
			DebugLog	EventData()

		Case EVNT_MOUSE_WHEEL

			DebugLog	"EVNT_MOUSE_WHEEL"
			DebugLog	EventSource()
			DebugLog	EventData()
			

		Case EVNT_GADGET_ACTION

			DebugLog	"EVNT_GADGET_ACTION"
			DebugLog	EventSource()
			DebugLog	EventData()


		Case EVNT_WIN_MOVE

			DebugLog	"EVNT_WIN_MOVE"
			DebugLog	EventSource()
			DebugLog	EventData()


		Case EVNT_WIN_SIZE

			DebugLog	"EVNT_WIN_SIZE"
			DebugLog	EventSource()
			DebugLog	EventData()


		Case EVNT_WIN_CLOSE

			DebugLog	"EVNT_WIN_CLOSE"
			DebugLog	EventSource()
			DebugLog	EventData()

			End			
;			Finalise()


		Case EVNT_WIN_ACTIVATE

			DebugLog	"EVNT_WIN_ACTIVATE"
			DebugLog	EventSource()
			DebugLog	EventData()
			

		Case EVNT_MENU_SELECT

			DebugLog	"EVNT_MENU_SELECT"
			DebugLog	EventSource()
			DebugLog	EventData()


		Case EVNT_APP_SUSSPEND

			DebugLog	"EVNT_APP_SUSSPEND"
			DebugLog	EventSource()
			DebugLog	EventData()


		Case EVNT_APP_RESUME

			DebugLog	"EVNT_APP_RESUME"
			DebugLog	EventSource()
			DebugLog	EventData()


		Case EVNT_TIMER

			DebugLog	"EVNT_TIMER"
			DebugLog	EventSource()
			DebugLog	EventData()
		
	End Select

Forever

;--------------------------------------------------
Function	Initalise()
;--------------------------------------------------
	SetBuffer	DesktopBuffer()
	fnt = LoadFont("Tahoma", 13, False, False, False ) : SetFont(fnt)

	AppTitle "Resource Lib Test v0.01"
	
	ResourceInitalise( "resource.res" )
	
End Function



Jim Teeuwen(Posted 2003) [#11]
@Nigel Brown:
It's always nice to have a choice, besides, your version is a standalone application. Mine will be a plugin wich willlintegrate with an existing IDE.

I wouldn't be concerned with competition like this, since there are many blitzusers wich do not use Protean IDE, and consequently will not be able to use my Designer.

Having some other options around is nice. Also because every designer is different and every coder has his own preferences as far as the choice of tools is concerned.


Wiebo(Posted 2003) [#12]
Defiance: too bad (well for me anyway) cos i am not a protean user. And a lot of us aren't either so it will mean your audience will be smaller.
I wouldn't mind using a seperate app to create a gui...


Jim Teeuwen(Posted 2003) [#13]
The plugin is constructed in a very modular way, so it wouldnt be too hard to build a seperate app around it if needed, But I want to focus on the plugin first and get the actual designer fixed up properly.


RiK(Posted 2003) [#14]
Defiance :

As a big fan of Protean I would certainly welcome a form designer plug-in.

At present I'm using BlitzVision which is rather nice, but I would really love to see something integrated into Protean!


CS_TBL(Posted 2003) [#15]
Is it just me? I never had the need for a visual editor.. I'm quite happy with the usual defining in the code.. However, don't let that stop ppl who want to do an editor :)


Kanati(Posted 2004) [#16]
Defiiiiiiannnnnnncee.... how's the gui thing-a-ma-bob coming along? :)


Kanati(Posted 2004) [#17]
eh, I just went ahead and bought BlitzVision... Already owned PureVision so I got it sight unseen. Worth the 20 bux.