Worklog for ziggy

Worklog 1

Return to Worklogs

Alpha version of the PlugIn engine available(Posted 2006-08-29)
There's a first Alpha version of the PlugIn engine for BLIde. This alpha version is the BlitzMax version (there will also be a .net version as soon as I get time to finish it).
This version has 100% of all the functionalilty that will be available in the BETA version, but unicode suport is not yet finished. (this particular feature will require a BLIde major update, that will be done soon).

One of the first PlugIns we will begin to work in, will be a GUI designer for BlitzMax + GUI. It will require an additional module called ExtendedGui, taht will encapsulate all event-control in a secondary layer, making the creation of forms much more colser to Visual Studio .net (all forms will be classes derived from a GuiWindow class, each button in a form, will be a field in the class of type Guibutton, with its own events, etc.)

ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D

First plug in ended(Posted 2006-07-29)
A first Plug-In has been ended 100% with BlitzMax, here's the source code:

'
' This program was written with BLIde
' Application: Auto Tidy PlugIn for BLIde
' Author: Manel Ibáñez	
' License: GPL
'

SuperStrict
Import blide.plugins
Global PlugInEngine:BPPMainEngine = New BPPMainEngine
PlugInEngine.StartEngine("Auto Tidy",0,1,"Manel Ibanez")
PlugInEngine.SelectionActions.SelectAllText()
PlugInEngine.InOutActions.Trace("Getting code...")
PlugInEngine.GetSelectedText()
PlugInEngine.InOutActions.MsgBox("This PlugIn will arrange the TABs in your source code")
PlugInEngine.InOutActions.Trace("Calculating identation")

Local TabCounter:Int = 0
For Local i:blide.plugins.TCodeLine  = EachIn PlugInEngine.Code
	
	i.Contens = Trim(i.Contens)
	While Left(i.Contens,1) = Chr(9)
		i.Contens = Mid(i.Contens,2)
		i.Contens = Trim(i.Contens)
	Wend
	Local strip:String = i.Contens
	If begins(strip,"next ") = True or i.Contens.ToLower() = "next" Then tabcounter:-1
	If begins(strip,"wend ") = True or i.Contens.ToLower() = "wend" Then tabcounter:-1
	If begins(strip,"EndType ") = True or strip.ToLower() = "endtype" Then 	tabcounter:-1
	If begins(strip,"End Type ") = True or strip.ToLower() = "end type" Then tabcounter:-1
	If begins(strip,"EndSelect ") = True or strip.ToLower() = "endselect" Then 	tabcounter:-1
	If begins(strip,"End Select ") = True or strip.ToLower() = "end select" Then tabcounter:-1
	If begins(strip,"EndMethod ") = True or strip.ToLower() = "endmethod" Then 	tabcounter:-1
	If begins(strip,"End Method ") = True or strip.ToLower() = "end method" Then tabcounter:-1
	If begins(strip,"EndFunction ") = True or strip.ToLower() = "endfunction" Then 	tabcounter:-1
	If begins(strip,"End Function ") = True or strip.ToLower() = "end function" Then tabcounter:-1
	If tabcounter>0 Then
	For Local c:Int = 1 To tabcounter
		i.Contens = Chr(9) + i.Contens
	Next
	End If
	
	If begins(strip,"for ") = True or begins(strip,"Type ")Then	tabcounter:+1
	If begins(strip,"while ") = True or begins(strip,"Select ")Then	tabcounter:+1
	If begins(strip,"method ") = True or begins(strip,"function ")Then	tabcounter:+1
Next

PlugInEngine.SetSelectedText
PlugInEngine.InOutActions.MsgBox("Done!")

Function begins:Int(text:String, Begining:String)
	If Left(text.ToLower(),Len(begining.ToLower())) = begining.ToLower() Then
		Return True
	Else
		Return False
	End If
End Function


ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D

Fixing international support(Posted 2006-06-28)
Well, the beta testing of the SDK has revealed some or its powernes. There are just a couple of thinngs to solve, the multilanguage unicode support, and the send/receive data optimization.

I hope we will have a very usable SDK for the release of BLIde 0.8.0

ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D

New SDK primitives(Posted 2006-04-23)
The new PlugIn Engine, is working (until today 100% bug free) :D
So we're adding some additional primitives to de BPP Main engine:

BPPMainEngine.SelectAllText --> This forces the selection of the whole bmx fike

BPPMainEngine.SelectFullRow --> This forces the selection to have complete lines of code.

BPPMainEngine.Undo --> this forces editor to go back one step in its undo history

BPPMainEngine.ReDo --> This forces editor to go forward one step in its undo history

BPPMainEngine.Cut --> This cut's the selected text to clipboard

BPPMainEngine.Copy --> This copy the selected text to the clipboard

BPPMainEngine.Paste --> This paste the clipboard contens to the text selection

BPPMainEngine.RegisterShortcut(ShortcutID, ActionID, Description) --> This can let the PlugIn register one shortcut in BLIde, When that shortcut is pressed from within BLIde, BLIde will cal the PlugIn, sending to it the ActionID. (For example, a template creator, can register a shortCut, for every Template it has).

I'll keep on informing of any further change...
the release of the SDK is very very near...

ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D

Again working in the SDK(Posted 2006-03-18)
Well, after a lot of changes in the BLIde main engine, everything seems more much stable now. the compona syntax box control is revealing a very hig performance.
After a lot of testings, the first alpha release of the BLIde SDK was too slow for procesing very large files. that's the main reason that has forced us to start again from scratch the plug-in engine.
Now it's in a very advanced stage.

As you will see, it's even easier to make plug-ins with this new engine.

here you have a plug-in source code sample:

'First of all, we create and start the PlugIn engine:
Global PlugInEngine:BPPMainEngine = New BPPMainEngine 
PlugInEngine.StartEngine

'Now we inform in the BLIde console that the PlugIn has been initialized:
PlugInEngine.Trace("Plug In started") 

'Now we force the PlugIn engine to retrieve all currently selected text in the BLIde editor.
PlugInEngine.GetSelectedText()

For Local L:TCodeLine = EachIn PlugInEngine.Code  
	'We write the code line in the BLIde console
	PlugInEngine.Trace( l.Contens ) 
Next             

'We inform with the BLIde message box that the PlugIn has ended
PlugInEngine.MsgBox("Done!")

end



this Plug in just outputs in the console all the selected text in BLIde. not much useful, but it's the ABC of the PlugIn engine.

I'll post any progress here.

ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D

Just another delay(Posted 2005-08-01)
BLIde will change it's main engine to the Quantum Whale Editor control 1.2, wich is much more stable than the current one. This will take a long time, so the SDK won't be released until september


ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D

Plug-In engine (alpha) released(Posted 2005-06-20)
New version of BLIde (0.2.6) comes with the first release of the Plug-in engine, and a 'builded' sample Plug-in, wich is working 100%


ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D

BLIde Plus!(Posted 2005-06-17)
The Plug-in SDK is in a deeper development status. the BlitzMax SDK is working very stable and fully integrated with BLIde. The .NET version of the SDK will be finished soon and will be 100% compatible with the BlitzMax version.

All the SDK will be available in a add-on package for BLIde called BLIde Plus!, it will have also an application to add your own icons to the EXEs you create with BLIde, and a framework analizer, to help you creating your framework and module imports for your BLIde applications.


ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D

New changes to the Plug-in engine(Posted 2005-04-17)
The Plug In Engine SDK for BLIde, has been changed a lot.
there are two new TYPEs:

CodeManipulator
this type retrieves automaticaly all the source code that has to be pluginized, and sotores it. the source code is stored in a 'collection' of SourceLines

SourceLine
This is a type that contains a single source line of the code passed from BLIde to the PlugIn. This TYPE has very interesting methods, such as InCode (wich finds any string in the current SourceLine, but ignoring comments and literals enclosed in " ")...


This is a samle Plug-In source code, that works well.
This Plug-in changes all ++ and -- to :+1 and :-1

This is the source code:

'------------------------------------------------------------------------------------------------------------------
'Application: ++ and -- processor
'Author: Manel Ibáñez
'------------------------------------------------------------------------------------------------------------------

Strict

'-------------------------------------------------------------------------------------
'This is the framework declaration needed by this Plug-In
Framework brl.basic
'-------------------------------------------------------------------------------------
'Needed to use the BPP protocol from BlitzMax:
Import "BLIdeBPP.bmx"

'Well, we begin the process. All the Plug-In have to start the BPP engine.
'We start the BPP engine this way:
BPP.initialize()
BPP.Trace "Initializing Plug-in"  'We inform in the BLIde console that we're initializing the Plug-In.

'We create a CodeManipulator object. This object retrieves all the source code to pluinize when it's created.
local Code:CodeManipulator = new CodeManipulator
flushmem	'when getting all the source, some elements are stored in the garbage collector.

'PROCESS THE SOURCE
'Now we have all the source code to pluginize.
BPP.trace "Processing data..." 'We inform, in the BLIde console, we're processing the text.

'First of all, we go to the first line of code:
Code.MoveFirst()
'And after that, we check alllines:
While code.CurrentLine() <> Null	'CurrentLine gets NULL when it raises the end of the code.
	code.CurrentLine().ReplaceInCode("++",":+1")
	code.CurrentLine().ReplaceInCode("--",":-1")
	code.nextline 'We move to next line of code.
	flushmem
wend
bpp.trace "Returning processed data to BLIde"

code.ReturnText
flushmem
	

'We inform the user that the Plug-in has ended:
Bpp.Trace "Plug-in applied. All ++ and -- have been changed to :+1 and :-1"
'The program ENDs. There's no need to tell BLIde the plug-in has ended, BLIde will detect it automaticaly.
End




ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D

First Plug-in(Posted 2005-04-16)
I've developed the first Plug-in for BLIde 100% written in BlitzMax (No c or C++ code).
this plug-in just gets all the source code currently being edited in BLIde, and returns the same source to BLIde, so, in fact, this Plug-in does 'nothing' but it's working, integrated in BLIde, in a reasonable speed, ans throws some warnings using BLIde dialogs.

Finaly, the protocol will be called BPP (BLIde Plug-In Protocol). To use this protocol, you have to inport a file called BLIdeBPP.bmx in your main BMX file.

Sample code of the first Plug-in:

Strict

'-------------------------------------------------------------------------------------------------------------
'This is the framework declaration needed by the BPP (BLIde Plug-In protocol), and this Plug-In:
Framework brl.basic
Import brl.system
'-------------------------------------------------------------------------------------------------------------

'Needed to use the BPP protocol from BlitzMax:
Import "BLIdeBPP.bmx"

'Well, we begin the process. All the Plug-In have to start the BPP engine.
'We start the BPP engine this way:
BPP.initialize()

'first of all, we display a message informing
'that this is the first Plug-In developed with the BPP engine:
BPP.DisplayMessage("This is the First Plug-in developed in BlitzMax for BLIde")

'Now we ask the BLIde user, if he/she wants to apply the plug-in or not.
Local ProcessPlugIn:Int 
ProcessPlugIn = BPP.YesOrNot("Do you want to apply the Plugin?")


if ProcessPlugIn = true then
	'We read all the text that has to be "pluginized", and store it in a String Array.
	local GetArray:String[] = BPP.GetText()
	flushmem	'when getting all the source, some elements are stored in the garbage collector.


	'We have all the text stored in the array GetArray.
	'We inform the user of the number of lines to process:
	bpp.displaymessage("The number of lines to process is: " + len(getarray))

	'PROCESS THE SOURCE
	'PUT YOUR PROCESS CODE HERE


	'After processing the code, we return the result to BLIde:
	bpp.ReturnText(getarray)
	flushmem
	
	'We inform the user that the Plug-in has ended:
	BPP.DisplayMessage("Plugin applied")



else
	'If the user has selected NOT to process the Plug-in, 
	'we inform that the plug-in won't be appied:
	BPP.DisplayMessage("Plugin not applied")
endif

'The program ENDs. There's no need to tell BLIde the plug-in has ended, BLIde will detect it automaticaly.
End




ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D

Create Plug-Ins in BlitzMax(Posted 2005-04-14)
BLIde is a free IDE for BlitzMax I'm making. I've started a new thread in the worklog because now I'm also developing a Plug-in system that will allow users of BLIde create their own plug-ins with Blitz Max. The Plug-ins system is a simple communications protocol from a BlitzMax application to BLIde.

It will be very easy to create a BLIde plug-in using BlitzMax. you will have just yo import a file called BLIde-SDK1.bmx wich includes all functionality to comunicate with BLIde and manipulate source code.

The protocol let the plug-in programer use the same GUI objects used by BLIde. (any plug-in can have it's own GUI, or use the standar dialogs available in the SDK).

I think this can make BLIde grow a lot, allowing users create their own functionality for the editor.


ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D

BLIde(Posted 2004-02-14)
I'm developing a free IDE for BlitzMAX. for more information you can go here: http://www.onlinebubbles.com/blide
:D


ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
Manel Ibáñez ||| BLIde comunity ||| BLIde official Web Site ||| BLIde manual in PDF If you're using BLIde as your regular IDE for BlitzMax, please consider getting the BLIde Plus! version to support development. Visit my BLIde development Blog! and get the Open Source Sound3D module for minib3d

Dual 2 Core 2.8 (Windows 7) with ATI Mobility Radeon 4650 on a nice new Vaio :D