Page 1 sur 5

PureBasic Code Form Helper

Publié : mar. 08/oct./2013 14:59
par falsam
PureBasic Code Form Helper.
Finaliser un seul gadget (le voir dans un inspecteur) ou finaliser la conception d'une fenêtre, c'est possible avec PureBasic Code Form Helper.

Installation.
Ajouter PureBasic Code Form Helper dans les outils de votre éditeur sans oublier de lui affecter une touche ou une combinaison de touches de raccourci pour le lancer depuis votre éditeur.

ImageImage

Comment ça fonctionne ?.
■ Avant de lancer PureBasic Code Form Helper, vous sélectionnez une portion de code contenant le ou les gadgets de votre fenêtre depuis l'éditeur officiel de Pure Basic. Vous n'êtes pas obligé de sélectionner la fenêtre contenant ces gadgets.

Image

■ Si vous codez depuis l'éditeur officiel de Pure Basic ou bien avec JaPBe V3 (Philippe Guntz a.k.a. gnozal), il est inutile de faire un copier (Ctrl + C) en mémoire. L'utilitaire s'en chargera.

■ Si vous codez depuis un éditeur tiers, copier votre sélection de code en mémoire (Ctrl + C).

■ Lancer PureBasic Code Form Helper depuis le menu Outils de votre IDE ou avec le racourci clavier que vous avez défini ou depuis le menu Outils.
Le code sélectionné sera analysé. Le ou les gadgets seront disponibles dans une liste déroulante. Les paramètres de chaque gadget sont affichés dans un inspecteur.

■ Quelques screenShots.

Une image globale avec la fenêtre en cours de mise au point. Le code est affiché à droite de l'inspecteur de gadget.

Image

Deux images montrant l'inspecteur de gadget sans l'affichage du code.
Image Image


Touches de raccourcis.
Vous pouvez mettre au point votre fenêtre soit en utilisant l'inspecteur de gadgets ou bien en utilisant les touches de raccourcis suivantes.

Changement de position (Haut/Bas/Gauche/Droit) d'un gadget.
Ctrl + Flèche Haut ou Ctrl + Flèche Bas Déplacer gadget vers le haut ou le bas.
Ctrl + Flèche Gauche ou Ctrl + Flèche Droite Déplacer un gadget vers la gauche ou la droite.

Changer la taille (Hauteur/largeur) d'un gadget.
Alt + Flèche Haut ou Ctrl + Flèche Bas Modifier la hauteur d'un gadget.
Alt + Flèche Gauche ou Alt + Flèche Droite Modifier la largeur d'un gadget.

Les modifications sont automatiquement mise à jour dans l'inspecteur mais aussi dans le code figurant à droite de l'inspecteur.

Il n'est pas possible de déplacer les gadgets avec la souris.

La touche Escape permet de fermer l'utilitaire.

Comment mettre à jour le code de votre éditeur Pure Basic?.
Une fois votre fenêtre finalisée, cliquer sur le bouton Copy pour copier le code en mémoire. Il est inutile de le sélectionner auparavant.

Fermez Code Form Helper et revenez à présent dans votre éditeur pour mettre à jour le code sélectionné (Ctrl + V).

:idea: NOUVEAUTÉ : Vous pouvez mettre à jour l'éditeur officiel en cliquant sur le bouton IDE Update comme vous le montre cette vidéo.
   https://www.youtube.com/watch?v=lRLL0UQku0c - ( < 30 secondes)

Téléchargement.

:arrow: Code Form Helper Versions 0.86.zip 216 ko

Re: Code Form Helper (Bientôt disponible)

Publié : mar. 08/oct./2013 16:23
par Backup
avec EPB , il suffira de mettre l'utilitaire dans le Dossier "Outils" de EPB .... pour le voir apparaitre dans le menu "outils" de EPB ;)
bonne idée ce code ..:)

Re: Code Form Helper (Bientôt disponible)

Publié : mar. 08/oct./2013 17:13
par Ar-S
C'est un pureform inversée quoi ?
Excellente idée.

Re: Code Form Helper (Bientôt disponible)

Publié : mar. 08/oct./2013 18:34
par Backup
Ar-S a écrit :Excellente idée.
l'idée a deja été mise en oeuvre par Gnozal , dans PureForme

mais le fait de disposer d'un petit outils, sur demande, est vraiment excellent :)

Re: Code Form Helper (Bientôt disponible)

Publié : mar. 08/oct./2013 19:41
par falsam
Dobro, Ar-S merci pour ces commentaires d'encouragement:)
Dobro a écrit :l'idée a deja été mise en oeuvre par Gnozal , dans PureForme
J'ai longtemps utilisé Pure Form et effectivement Pure Form pouvait analysé du code Pure Basic pour afficher une fenêtre de conception.

Re: Code Form Helper (Bientôt disponible)

Publié : mar. 08/oct./2013 19:44
par Backup
c'est surtout l'idée de pouvoir ne sélectionner qu'une portion de code , qui me plait ...

en fait, je m'en veux de ne pas y avoir pensé avant toi :mrgreen: :lol:

Re: Code Form Helper (Bientôt disponible)

Publié : mar. 08/oct./2013 19:50
par kernadec
bonsoir
@Dobro si tu y avais pense, tu aurais peut être pu l’appeler "Purelego" :mrgreen:

Cordialement

Re: Code Form Helper (Bientôt disponible)

Publié : mar. 08/oct./2013 19:52
par falsam
Dobro a écrit :en fait, je m'en veux de ne pas y avoir pensé avant toi :mrgreen: :lol:
YeahhHHHHHHHHH :mrgreen:

Re: Code Form Helper (Bientôt disponible)

Publié : mar. 08/oct./2013 21:40
par Ar-S
falsam a écrit :Dobro, Ar-S merci pour ces commentaires d'encouragement:)
Dobro a écrit :l'idée a deja été mise en oeuvre par Gnozal , dans PureForme
J'ai longtemps utilisé Pure Form et effectivement Pure Form pouvait analysé du code Pure Basic pour afficher une fenêtre de conception.
Je le sais bien, mais coupler un petit utile de se genre à l'ide de son choix ça me plait. et je te rejoins sur le coté "portion de code".
ça commence à faire un moment que je n'utilise plus de gestionnaire d'interface mais que je les fait à la main. Du coup ça va m'être utile pour peaufiner sans contraintes.

Re: Code Form Helper (Bientôt disponible)

Publié : mar. 08/oct./2013 22:21
par falsam
Ar-S a écrit :ça commence à faire un moment que je n'utilise plus de gestionnaire d'interface mais que je les fait à la main. Du coup ça va m'être utile pour peaufiner sans contraintes.
C'est aussi pour ça que je code cet utilitaire. Le positionnement manuel en modifiant juste le code est plutôt fastidieux quand il y a beaucoup de gadgets.

Re: Code Form Helper (Bientôt disponible)

Publié : mer. 09/oct./2013 8:36
par Kwai chang caine
Cool !!!
Au debut comme dab, je voyais pas l'interet (Le temps que le sang alimente le haut... :oops:)
Mais c'est vrai que c'est une bonne idée (Une fois tout alimenté :mrgreen: )

Il commence a y avoir tellement d'utilitaires d'IDE et même d'IDE qu'on va s'y perdre...
Linux c'est de la roupie de samsonet à coté :lol:
Je pense surtout au nouveau qui arrive....ça doit faire peur 8O

Re: Code Form Helper

Publié : jeu. 10/oct./2013 9:02
par Micoute
Bonjour falsam et merci beaucoup.

J'ai installé ton Code Form Helper et je ne tarit pas d'éloges à son sujet, c'est très pratique et surtout très ergonomique, c'est vraiment du wysiwyg.

Merci beaucoup pour le partage, je comprend ton émotion et je suis même sûr que tu vas encore l'améliorer, pourtant comme ça, ça me suffit.

Re: Code Form Helper

Publié : jeu. 10/oct./2013 9:28
par Backup
petit bug , ne prend pas en compte le scroll gadget :

test avec ce code

Code : Tout sélectionner

Enumeration
	#IMAGE_Content  ; stores the previous CanvasGadget content while the mouse is down
	#IMAGE_Color
EndEnumeration

Enumeration
	#GADGET_CanvasFond
	#GADGET_Canvas
	#GADGET_Box
	#GADGET_Clear
	#GADGET_Area
EndEnumeration

#win = 0
#statusbar = 0

Declare  DrawAction(x, y, EventType)
Declare  MyGadgetCallback()




Global CurrentColor, StartX, StartY

Procedure DrawAction(x, y, EventType)
	
	If StartDrawing(CanvasOutput(#GADGET_Canvas))
		
		DrawImage(ImageID(#IMAGE_Content), 0, 0)
		Box(StartX, StartY, x-StartX, y-StartY, CurrentColor)
		
		StopDrawing()
	EndIf
	
EndProcedure


CurrentColor = RGB(120,120,120)
CreateImage(#IMAGE_Color, 35, 35, 24)
CreateImage(#IMAGE_Content, 380, 380, 24)

If OpenWindow(#win, 0, 0, 800, 600, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	;SetWindowCallback(@MyWindowCallback())
	
	
	If ScrollAreaGadget(#GADGET_Area, 70, 70, WindowWidth(#win) - 90, WindowHeight(#win) - 90, WindowWidth(#win), WindowHeight(#win))
		CanvasGadget(#GADGET_Canvas, 110, 110, 380, 380, #PB_Canvas_Keyboard)
		BindGadgetEvent(#GADGET_Area, @MygadgetCallback())
		CloseGadgetList()
	EndIf
	
	ButtonGadget(#GADGET_Box,    10, 10, 50, 25, "Box",    #PB_Button_Toggle)
	ButtonGadget(#GADGET_Clear,  10, 40, 50, 25, "Clear")
	
	
	SetGadgetState(#GADGET_Box, 1)
	SetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Cursor, #PB_Cursor_Cross)
	SetActiveGadget(#GADGET_Canvas)
	
	CreateStatusBar(#statusbar,WindowID(#win))
	AddStatusBarField(200)
	AddStatusBarField(200)
	AddStatusBarField(200)
	
	Repeat
		Event = WaitWindowEvent(2)   
		EventGadget = EventGadget()
		
		If Event = #PB_Event_Gadget
			
			Select EventGadget()
				
				Case #GADGET_Canvas
				
				X = GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_MouseX)
				Y = GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_MouseY)
				
				If Start = 0
					If GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Buttons) & (#PB_Canvas_LeftButton|#GADGET_Area)
						Start =1             
						StartX = X
						StartY = Y
					EndIf
				EndIf
				
				If paint
					DrawAction(X, Y, EventType())
				EndIf
				StatusBarText(#statusbar, 1, "X : "+Str(x)+" / Y :"+Str(y))
				
				Type = EventType()
				
				Select EventType()
					
					Case #PB_EventType_LeftButtonDown
					paint = 1
					If StartDrawing(ImageOutput(#IMAGE_Content))
						DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
						StopDrawing()
					EndIf
					
					StartX = X
					StartY = Y
					DrawAction(X, Y, EventType())
					
					
					Case #PB_EventType_LeftButtonUp
					DrawAction(X, Y, EventType())                       
					paint = 0
					Start = 0
					
					Case #PB_EventType_MouseMove
					If GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Buttons) & (#PB_Canvas_LeftButton|#GADGET_Area)
						If paint = 0
							paint = 1
							If StartDrawing(ImageOutput(#IMAGE_Content))
								DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
								StopDrawing()
							EndIf
						EndIf
						DrawAction(X, Y, EventType())           
					EndIf
					
				EndSelect
				
				Case #GADGET_Clear
				If StartDrawing(CanvasOutput(#GADGET_Canvas))
					Box(0, 0, 380, 380, $FFFFFF)
					StopDrawing()
				EndIf
				SetActiveGadget(#GADGET_Canvas)
				
				
			EndSelect
			
		EndIf
		
	Until Event = #PB_Event_CloseWindow
	
EndIf
Procedure MygadgetCallback()
	Result = #PB_ProcessPureBasicEvents
debug EventGadget()
	Select EventGadget()
		
		Case #WM_LBUTTONUP         : Debug "mouse LMB up"
		DrawAction(X, Y, EventType())                       
		paint = 0
		Start = 0
		
		Case #WM_LBUTTONDOWN       : Debug "mouse LMB down"
		paint = 1
		If StartDrawing(ImageOutput(#IMAGE_Content))
			DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
			StopDrawing()
		EndIf
		
		StartX = X
		StartY = Y
		DrawAction(X, Y, EventType())
		
		
		Case #WM_MOUSEMOVE  :Debug "mouse move"
		paint = 1
		If StartDrawing(ImageOutput(#IMAGE_Content))
			DrawImage(GetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Image), 0, 0)
			StopDrawing()
StatusBarText(#statusbar, 1, "X : "+Str(x)+" / Y :"+Str(y))
		EndIf
		
		
	EndSelect  
	ProcedureReturn Result
EndProcedure
; EPB



Re: Code Form Helper

Publié : jeu. 10/oct./2013 12:02
par falsam
Houla que de lecture Dobro :)
Dobro a écrit :petit bug , ne prend pas en compte le scroll gadget :
Deux des paramétres sont des variables (WindowWidth(#win) et WindowWidth(#win)) dont je ne connais pas la valeur.

Code : Tout sélectionner

OpenWindow(#win, 0, 0, 800, 600, "CanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	;SetWindowCallback(@MyWindowCallback())
	
	
	If ScrollAreaGadget(#GADGET_Area, 70, 70, WindowWidth(#win) - 90, WindowHeight(#win) - 90, WindowWidth(#win), WindowHeight(#win))
		CanvasGadget(#GADGET_Canvas, 110, 110, 380, 380, #PB_Canvas_Keyboard)
		BindGadgetEvent(#GADGET_Area, @MygadgetCallback())
		CloseGadgetList()
	EndIf
	
	ButtonGadget(#GADGET_Box,    10, 10, 50, 25, "Box",    #PB_Button_Toggle)
	ButtonGadget(#GADGET_Clear,  10, 40, 50, 25, "Clear")
	
	
	SetGadgetState(#GADGET_Box, 1)
	SetGadgetAttribute(#GADGET_Canvas, #PB_Canvas_Cursor, #PB_Cursor_Cross)
	SetActiveGadget(#GADGET_Canvas)
	
	CreateStatusBar(#statusbar,WindowID(#win))
Encore que dans ce cas je pourrais pousser l'analyse un peu plus. Mais si ce sont des variables non liés à des gadgets alors dans ce cas c'est foutu.
Dobro a écrit :pourrai-je distribuer ton outils avec EPB ?
Bien sur et avec plaisir Dobro :)
Dobro a écrit :pourrai tu aussi le rendre compatible avec EPB 2.48 (bientot dispo )
Joli le code qui permet de dialoguer avec EPB. Je regarde comment ça fonctionne.

Re: Code Form Helper

Publié : jeu. 10/oct./2013 12:29
par Backup
falsam a écrit :Joli le code qui permet de dialoguer avec EPB. Je regarde comment ça fonctionne.
gaffe , c'est pour la Version 2.48 qui n'est pas encore en ligne

en fait j'ai surtout apporté des constantes , et changé un peut l'ordre des messages ...
si tu veux testé avec la Version 2.46 actuellement en ligne ,

ces constantes devrai marcher ,mais pas les suivantes

Code : Tout sélectionner


Enumeration 
	#epb_pos_curs ;pose au curseur
	#epb_rempl ;remplace ligne en cour
	#epb_insert ;insert une ligne
	#epb_saut_to_ligne ; saut a la ligne
	#epb_pos_curs_x ;position x du curseur
	#epb_selection ; creer une selection
	#epb_rempl_select ;remplace la selection
	#epb_line_to_clipboard ; la ligne en cours  vers le clipboard
..................................
sinon , attends un peu que je sorte la Version 2.48 :)