Page 1 of 1

Posted: Sun Feb 09, 2003 11:56 pm
by BackupUser
Restored from previous forum. Originally posted by ricardo.

Hi,

I want to add a GUI builder as an feature of the Editor, if some one is interested helping me to develop this feature contact me at: [url]mailto:ricardoarias@yahoo.com[/url]



Best Regards

Ricardo

Dont cry for me Argentina...

Posted: Mon Feb 10, 2003 12:16 am
by BackupUser
Restored from previous forum. Originally posted by TheBeck.

I think this is a great project, count me in. I have sent you an email Ricardo.

Nathan Beckstrand - Calling from the great Pacific Northwest -=USA=-

Posted: Mon Feb 10, 2003 1:50 am
by BackupUser
Restored from previous forum. Originally posted by ricardo.

Thanks the Beck, i reply your email.

The idea is to add to the editor itself a menu option that let the user open a gui builder.
This gui builder will show the gadgets of the actual code on the idea and let the user add/delete/resize/drag them
of course the user can start a new blank code designing first the gui.

I just have an example that resizes/drag a button but since the principle is almost the same for every gadget, we can codeit in a few days ( i hope). The idea of the example is just to show how a gadget can be easily draged/resized using PB code...

http://www.getafile.com/cgi-bin/merlot/ ... UILDER.zip

This is NOT any test or anything, is just asking other to join the project or give ideas.




Best Regards

Ricardo

Dont cry for me Argentina...

Posted: Mon Feb 10, 2003 4:14 pm
by BackupUser
Restored from previous forum. Originally posted by fred.

A visual designer written in PureBasic is actually in final stage of development and should be released with PB 3.60, so you could may be wait a bit to see if it fits your needs :).

Fred - AlphaSND

Posted: Mon Feb 10, 2003 4:25 pm
by BackupUser
Restored from previous forum. Originally posted by Berikco.

Whoohoo...cool, i can't wait to see it :)

Regards,

Berikco

http://www.benny.zeb.be/purebasic.htm

Posted: Mon Feb 10, 2003 6:23 pm
by BackupUser
Restored from previous forum. Originally posted by ricardo.
Originally posted by fred

A visual designer written in PureBasic is actually in final stage of development and should be released with PB 3.60, so you could may be wait a bit to see if it fits your needs :).

Fred - AlphaSND

WOWWWWWWWWWWW

A BIG NEWS TO THE PB COMMUNITY!!!

CONGRATULLATIONS FRED FOR DOING THAT.

Best Regards

Ricardo

Dont cry for me Argentina...

Posted: Mon Feb 10, 2003 6:57 pm
by BackupUser
Restored from previous forum. Originally posted by fred.

Better thanks Berikco, he does the most of the work (You still want to see it Berikco :) ?). Of course I check if it's well done, like a BIG BOSS :).

Fred - AlphaSND

Posted: Mon Feb 10, 2003 7:04 pm
by BackupUser
Restored from previous forum. Originally posted by Berikco.

:)

Posted: Tue Feb 11, 2003 12:10 am
by BackupUser
Restored from previous forum. Originally posted by ricardo.

Here is a little snippet that let resize and drag a button. I continue coding it just for fun and for learning purpouse...

;GUI DESIGNER - Ricardo Arias
;
;
;
;1.- Detects if ANY gadget receives a click (there are some flat gadgets that dont receive it directly have to work on it)
;2.- Paint the resize handles or points over the selected gadget
;3.- Drag every gadget (the same problem with flat gadgets)
;4.- Detect when a resize point has the mouse over
;5.- Properly calculate the new dimension of the gadget once its resized (now its buggy but only because im lazy)
;6.- Generate the PB code (its easy but not done yet!)
;
;It can handle many gadgets but have troubles with two kind of gadgets:
;a) flat gadgets
;b) Gadgets like tree, combo, etc.
;need to find a workaround this

#WindowStyle = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget

Global Painted.l ;We can know if some gadget has the points painted
Global Selected.l

Structure Objetos
x1.l
y1.l
x2.l
y2.l
x3.l
y3.l
x4.l
y4.l
num.l
EndStructure

Dim Object.Objetos(1)

Procedure Crea(num.l,posx.l,posy.l);This procedure pain the small points
Selected = 1
StartDrawing(WindowOutput())
Box(posx,posy,7,7,0)
StopDrawing()
Painted = 1
EndProcedure

Procedure Clear_screen()
b.RECT
b\right=WindowWidth()
b\bottom=WindowHeight()
InvalidateRect_(WindowID(),@b,1)
sendmessage_(WindowID(),#WM_PAINT,0,0)
Painted.l = 0
EndProcedure

Procedure ResizeBoxs(control.l)
Clear_screen()
x1.l = GadgetX(control)-5
y1.l = GadgetY(control)-5
Crea(control,x1,y1)
x2.l = (GadgetX(control) + GadgetWidth(control)-5)+5
y2.l = GadgetY(control)-5
Crea(control,x2,y2)
x3.l = GadgetX(control) -5
y3.l = (GadgetY(control) + GadgetHeight(control)-5)+5
Crea(control,x3,y3)
x4.l = (GadgetX(control) + GadgetWidth(control)-5 )+5
y4.l = (GadgetY(control) + GadgetHeight(control)-5)+5
Crea(control,x4,y4)
object(1)\x1 = x1
object(1)\y1 = y1
object(1)\x2 = x2
object(1)\y2 = y2
object(1)\x3 = x3
object(1)\y3 = y3
object(1)\x4 = x4
object(1)\y4 = y4
object(1)\num = control
EndProcedure



If OpenWindow(0,10,10,550,500,#WindowStyle,"VisualGUI - now we can resize and drag buttons")

CreateGadgetList(WindowID())
If CreatePopupMenu(0);-Menu
MenuItem(1, "ButtonGadget")
EndIf
MessageRequester("","RIGHT CLICK TO SELECT THE GADGET TO CREATE... NOW ONLY CREATE DRAG AND RESIZE BUTTONS... BUT THE PRINCIPLE IS THE SAME FOR EVERY GADGET",0)
Repeat
EventID=WaitWindowEvent()

Select EventID
Case #WM_RButtonDown
;Store where was the click to create a button
WinX = WindowMouseX()-5
WinY = WindowMouseY()-30
DisplayPopupMenu(0, WindowID())
Case #WM_LBUTTONDOWN
;We get the handle of the gadget that receives the click
GetCursorPos_(mouse.POINT)
Handle = 0
For i = 0 To Control
If WindowFromPoint_(mouse\x,mouse\y) = GadgetID(i)
Handle.l = GadgetID(i)
IDgadget.l = i ;The number of the Gadget
EndIf
Next i

If Handle = 0;If the click was on the window and not in any gadget
;then we deselect any selected gadget
Clear_screen()
EndIf


If Resizing = 0
Selected = 0 ;No points if no control selected
If Painted = 1;
Clear_screen()
Painted = 0
EndIf
Else
Which = Resizing;We know if some point will be resized
EndIf

Case #WM_MOUSEMOVE
;Lets move the gadget
If Handle
ReleaseCapture_()
SendMessage_(Handle, #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndIf


;**************** HACE RESIZE
;-HaceResize
If Which
If Painted = 1;Borra los puntitos
Clear_screen()
EndIf

Select Which;Aca sabe cual de los 4 puntitos es el que va a ser resizeado
Case 1
If OldHeight = 0
OldHeight = GadgetHeight(object(1)\num)
EndIf
If object(1)\y1 > (WindowMouseY()-30)
CalcHeight.l = (object(1)\y1 - (WindowMouseY()-30)) + OldHeight
Else
If ((WindowMouseY()-30) - object(1)\y1) > OldHeight - 5
Goto otro
Else
CalcHeight.l = OldHeight - ((WindowMouseY()-30) - object(1)\y1)
EndIf
EndIf

If OldWidth = 0
OldWidth = GadgetWidth(object(1)\num)
EndIf
If object(1)\x1 > (WindowMouseX()-5)
CalcWidth.l = (object(1)\x1 - (WindowMouseX()-5)) + OldWidth
Else
If ((WindowMouseX()-5) - object(1)\x1) > OldWidth - 5
Goto otro
Else
CalcWidth.l = OldWidth - ((WindowMouseX()-5) - object(1)\x1)
EndIf
EndIf
ResizeGadget(object(1)\num, WindowMouseX()-5, WindowMouseY()-30, CalcWidth, CalcHeight)
;Pinta(WindowMouseX()-5, WindowMouseY()-30, CalcWidth, CalcHeight)
Case 2
If OldHeight = 0
OldHeight = GadgetHeight(object(1)\num)
EndIf
If object(1)\y1 > (WindowMouseY()-30)
CalcHeight.l = (object(1)\y1 - (WindowMouseY()-30)) + OldHeight
Else
If ((WindowMouseY()-30) - object(1)\y1) > OldHeight - 5
Goto otro
Else
CalcHeight.l = OldHeight - ((WindowMouseY()-30) - object(1)\y1)
EndIf
EndIf
If (WindowMouseX()-5)-object(1)\x1 (WindowMouseX()-5)
CalcWidth.l = (object(1)\x1 - (WindowMouseX()-5)) + OldWidth
Else
If ((WindowMouseX()-5) - object(1)\x1) > OldWidth - 5
Goto otro
Else
CalcWidth.l = OldWidth - ((WindowMouseX()-5) - object(1)\x1)
EndIf
EndIf
If (WindowMouseY()-30)-object(1)\y1 = (object(1)\x1-5) And WindowMouseX()-5 = (object(1)\y1-5) And WindowMouseY()-30 = (object(1)\x2-5) And WindowMouseX()-5 = (object(1)\y2-5) And WindowMouseY()-30= (object(1)\x3-5) And WindowMouseX()-5=(object(1)\y3-5) And WindowMouseY()-30= (object(1)\x4-5) And WindowMouseX()-5=(object(1)\y4-5) And WindowMouseY()-30 0;When release the mouse the gadget is redimesioned and the point repainted
Cont = Cont + 1
Which = 0
Clear_screen()
ResizeBoxs(IDGadget)
EndIf
Resizing = 0
Case #PB_EventMenu
Select EventMenuID()


Case 1
Control = Control + 1; The number of the gadget
ButtonGadget(control, WinX, WinY, 90, 30, "Button " + Str(control))

EndSelect

Case #PB_EventGadget
;-Event from a Button
Select EventGadgetID()
Case 0
Default
ResizeBoxs(EventGadgetID())
EndSelect
EndSelect
Until EventID = #PB_EventCloseWindow

EndIf
End


Best Regards

Ricardo

Dont cry for me Argentina...

Posted: Fri Feb 14, 2003 11:26 am
by BackupUser
Restored from previous forum. Originally posted by TronDoc.

Many thanks "Little Boss" Berikco
and "BIG BOSS" Fred! I look forward
to this enhancement.

elecTRONics DOCtor
{registeredPB}P150 32Mb w98/DOS/Linux NO DirX NO IE :wink:

Posted: Fri Feb 14, 2003 2:34 pm
by BackupUser
Restored from previous forum. Originally posted by gnozal.

I found an interesting form editor on the german forum :
http://www.shadow-studios.net/phpBB/vie ... php?t=1526
It's name is V_Tool (author is t-master) and you can download it at :
http://www.ewetel.net/~doris.gilbers
I think it's one of the best freeware form designers so far !

Posted: Fri Feb 14, 2003 4:12 pm
by BackupUser
Restored from previous forum. Originally posted by ricardo.
Originally posted by gnozal

I found an interesting form editor on the german forum :
http://www.shadow-studios.net/phpBB/vie ... php?t=1526
It's name is V_Tool (author is t-master) and you can download it at :
http://www.ewetel.net/~doris.gilbers
I think it's one of the best freeware form designers so far !
Excelent!!!!!!!!!!!




Best Regards

Ricardo

Dont cry for me Argentina...

Posted: Tue Mar 04, 2003 9:13 am
by BackupUser
Restored from previous forum. Originally posted by gnozal.

Just for information :
A new version (0.29) of V_Tool is at http://www.ewetel.net/~doris.gilbers