Page 3 sur 6

Re: TextEditorGadget(), et environnement CustomGadget

Publié : jeu. 11/août/2011 18:11
par graph100
Oh Mindphazer, plus rapide que moi ! j'avais même pas vu ;)

Alors, pour le topic :

Nouvelle mise à jour : 1.11.1400

ajout d'un nouveau gadget : le container, qui permet de mettre d'autre gadget en lui, et cela permet d'effectuer des redimensionnements automatiques, différent d'avec une fenetre, ou d'utiliser un splitter avec plusieurs gadgets.

correction de différents bug pour linux et windows
ajout de certaine constantes pour aller plus vite.

J'ai ajouté un code de démonstration simple avec des splitter et containers. :
ça donne ça ^^ :
Image


voir les 1ers post pour plus de renseignement ;)

Re: TextEditorGadget(), et environnement CustomGadget

Publié : mer. 17/août/2011 21:36
par graph100
Mise à jour : 1.12.1516

Nouveau gadget : l'OptionButton, une sorte de Panel, mais qui n'affiche que du texte, permettant de sélectionner un réglage d'un paramètre avec une petite explication (par exemple)
pour l'utiliser, il faut d'abord le créer, puis ajouter des onglets avec la commande : CG_AddgadgetItem()

correction de quelques problèmes, ajout de commande (voir le 3ème post pour plus de précision)

Re: TextEditorGadget(), et environnement CustomGadget

Publié : ven. 19/août/2011 23:12
par graph100
Nouvelle Maj : 1.13.1594

nouveau gadget : ImageSlide : permet d'afficher de petites vignettes défillantes avec la souris (roulette et click)

Re: TextEditorGadget(), et environnement CustomGadget

Publié : sam. 20/août/2011 11:24
par Anonyme2
Salut graph100,

sous Seven 64 bit pro PB 4.60 beta 3 les 3 exemples bug sur la ligne 2498 du fichier CustomGadget.pbi
InitializeStructure(*obj, ICG_Glyphe)

L'erreur c'est invalid memory acces (read error at adress 0), sur la même machine en 32 bit c'est Ok

Il y a peut être un rapport avec le bug de la fonction InitializeStructure avec les chaines voir ici
http://www.purebasic.fr/english/viewtop ... eStructure

Re: TextEditorGadget(), et environnement CustomGadget

Publié : sam. 20/août/2011 20:39
par graph100
ah, tu doit compiler avec la beta x64 alors, moi je suis en sur 7 x64 et j'utilise le PB x86 ;)

Effectivement, dans cette structure il y a une chaine de caractère (une chaine fixe en plus -_-

Code : Tout sélectionner

Structure ICG_Glyphe
	*Adresse_Font.ICG_Font
	FrontColor.l
	BackColor.l
	
	char.s{1}
	
	ImageId.i
	Image.i
	
	Largeur.w
	Hauteur.w
EndStructure
après être aller voir le post indiqué, il me semble qu'il s’agit d'une autre erreur, ou alors c'est juste que toutes les chaines bugs. Je vais faire 2 3 tests avec la 64b pour voir et peut etre poster le truc.

Merci Denis pour avoir testé ;)

[edit] J'ai posté un bug sur le fofo anglais, effectivement ce sont les chaines fixes qui font bugués le truc.

Code : Tout sélectionner

Structure test
	chaine.s{2}
EndStructure


*pointeur.test = AllocateMemory(SizeOf(test))


InitializeStructure(*pointeur, test)

Re: TextEditorGadget(), et environnement CustomGadget

Publié : ven. 26/août/2011 19:10
par graph100
nouvelle version : 1.13.1716

quelques corrections, ajout de la fonction copier / couper sur le TextEditorGadget

Et, passage à la version Pb4.60beta4, qui est Nécessaire pour exécuter le code !!
grace aux corrections de bug par l'equipe PB, ça fonctionne maintenant sur x64 ;)

Re: TextEditorGadget(), et environnement CustomGadget

Publié : dim. 11/sept./2011 10:38
par GeBonet
Salut,
Je viens de voir ça de "Toms" sur le forum Anglais... Peut-être utile pour toi ?
Hi, everybody.
Creating new Gadgets on the Canvas seems to be quite popular.
So here's my take on it.
I had something like this using quite a lot of Win-Api.
Now here it is without any Api.
It's a bigger, more touchscreen-friendly TrackbarGadget that looks like a progressbar.

Updated exampled with less flickering of the TextGadgets (thanks to netmaestro) below:

Todo: SetFaderGadgetState(value.i)
http://www.purebasic.fr/english/viewtop ... 12&t=46945

Sans te déplacer voilà le code :

Code : Tout sélectionner

;-
;- BEGIN INCLUDE
;- 
EnableExplicit 
;-Flags
#TG_Fader_Horizontal    = 1

Structure faderGadget
	id.i
	state.i
	colorF.i
	colorB.i
	height.i
	width.i
	min.i
	max.i
	horizontal.i
	image.i
EndStructure 
Global NewList FaderGadgets.faderGadget()

Macro RePaint(_INIT_)   
		
	Select FaderGadgets()\horizontal
		Case 0
			MouseY = GetGadgetAttribute(eventGadget, #PB_Canvas_MouseY )
			
			If _INIT_ = #True
				MouseY = FaderGadgets()\height
			EndIf
			
			StartDrawing(CanvasOutput(eventGadget))
  			Box(0, 0, FaderGadgets()\width, FaderGadgets()\height, FaderGadgets()\colorB)
  			
  			If  FaderGadgets()\image >= 0
  				ImagePos = MouseY
  				If ImagePos <0 : ImagePos = 0 : EndIf 
  				If  ImagePos >FaderGadgets()\height : ImagePos = FaderGadgets()\height : EndIf 
  				DrawImage(ImageID(FaderGadgets()\image), 0, ImagePos - ImageHeight(FaderGadgets()\image)/2)   
  			Else          
  				Box(0, MouseY, FaderGadgets()\width, FaderGadgets()\height-MouseY, FaderGadgets()\colorF)
  			EndIf 
  			
  			State=FaderGadgets()\height-MouseY
  			
  			If State<0 : State=0:EndIf
  			If State>FaderGadgets()\height:State=FaderGadgets()\height:EndIf
  									
  			FaderGadgets()\state = State
			StopDrawing()
					
		Case #True
			MouseX = GetGadgetAttribute(eventGadget, #PB_Canvas_MouseX )
			StartDrawing(CanvasOutput(eventGadget))
			
			  Box(0, 0, FaderGadgets()\width, FaderGadgets()\height, FaderGadgets()\colorB)
  			If  FaderGadgets()\image >= 0
  				ImagePos = MouseX
  				If ImagePos <0 : ImagePos = 0 : EndIf 
  				If  ImagePos >FaderGadgets()\width : ImagePos = FaderGadgets()\width : EndIf 
  				DrawImage(ImageID(FaderGadgets()\image), ImagePos - ImageWidth(FaderGadgets()\image)/2, 0)
  			Else 
  				Box(0, 0, MouseX, FaderGadgets()\height , FaderGadgets()\colorF)
  			EndIf 
  			State=FaderGadgets()\width-MouseX
  			If State<0 : State=0:EndIf 
  			If State>FaderGadgets()\width:State=FaderGadgets()\width:EndIf    
  			
  		StopDrawing()
	EndSelect 
	
	FaderGadgets()\state =    State
		
EndMacro 
Procedure FaderUpdate(eventGadget.i, eventType.i)
  
  Static  lDown.i    ;leftMouseDown
	Protected MouseX.i   ;
	Protected MouseY.i   ;
	Protected State.i   ;GadgetState
	Protected ImagePos.i   
	
	ForEach FaderGadgets()
			
		If FaderGadgets()\id = eventGadget
				
			Select eventType   
							
				Case #PB_Ignore
					Repaint(1)
						
				Case #PB_EventType_LeftButtonDown
					lDown = 1               
					RePaint(0)               
						
				Case #PB_EventType_LeftButtonUp
					lDown = 0
						
				Case #PB_EventType_MouseLeave
					lDown = 0
						
				Case #PB_EventType_MouseMove
						
					If lDown = 1
						Repaint(0)                  
					EndIf 
			EndSelect          
		EndIf 
	Next 
EndProcedure 
Procedure FaderGadget(id.i, x.i, y.i, width.i, height.i, min.i, max.i, FGColor.i, BGColor.i, CanvasFlags.i=0, flags=0, Image.i=-1)
		
	AddElement(FaderGadgets())
	With FaderGadgets()
		If id = #PB_Any
				\id = CanvasGadget(#PB_Any, x, y, width, height, CanvasFlags)
		Else 
				CanvasGadget(id, x, y, width, height, CanvasFlags)
				\id = id
		EndIf 
		
		StartDrawing(CanvasOutput(\id))
		Box(0, 0, width, height, BGColor)      
		StopDrawing()
  		\colorB = BGColor
  		\colorF = FGColor
  		\min    = min
  		\max    = max
  		\height = height
  		\width    = width
		If IsImage(image)
			\image    = image
		Else
			\image = -1
		EndIf 
		
		If flags & #TG_Fader_Horizontal
			\horizontal = #True
		EndIf 
		
		FaderUpdate(\id,#PB_Ignore)
		
		ProcedureReturn \id 
	EndWith 
	
EndProcedure 
Procedure GetFaderGadgetState(gadget.i, trueState=#False)
	Protected min.i, max.i   
	Protected state.i
	Protected height.i, width.i
	Protected scala.i   
	Protected position.f
	
	ForEach FaderGadgets()
		If FaderGadgets()\id = gadget
				
			If truestate = #True         
					ProcedureReturn FaderGadgets()\state
			Else
					
				min    = FaderGadgets()\min
				max    = FaderGadgets()\max
				state    = FaderGadgets()\state 
				height    = FaderGadgets()\height 
				width    = FaderGadgets()\width 
				Select FaderGadgets()\horizontal
					Case 1
						If width>0            
								position = state / width                     
						EndIf 
						scala = max-min
						ProcedureReturn max - (position * scala )
					Default 
						If height>0            
								position = state / height
						EndIf 
						scala = max-min
						ProcedureReturn position * scala + min
				EndSelect 
			EndIf 
		EndIf
	Next 
EndProcedure 

DisableExplicit 
;-
;- END INCLUDE
;- 
;- Example 
Define event.i
Define Any_Fader

Define OldValue_1.i 
Define OldValue_2.i 
Define OldValue_3.i 
Define OldValue_4.i 
Define OldValue_5.i 

Enumeration 4 ;{
	#Text_Static_1
	#Text_Value_1
	#Text_Static_2
	#Text_Value_2
	#Text_Static_3
	#Text_Value_3
	#Text_Static_4
	#Text_Value_4
	#Text_Static_5
	#Text_Value_5
EndEnumeration ;}

CreateImage(1, 90, 15)
  StartDrawing(ImageOutput(1))
  Box(0, 0, 90, 15, $0000FF)
  LineXY(0, 0, 90, 8, $00CC00)
  LineXY(0, 14, 90, 8, $00CC00)
  FillArea(0, 8, $00CC00, $00CC00)
  StopDrawing()


CreateImage(2, 15, 90)
  StartDrawing(ImageOutput(2))
  Box(0, 0, 15, 90, $0000FF)
  LineXY(0, 0, 8, 90, 0)
  LineXY(14, 0, 8, 90, 0)
  FillArea(8, 9, 0, 0)
  StopDrawing()
; -----------------------------------------------------------------------------------------------
OpenWindow(0, 0, 0, 705, 600, "FaderGadget", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  ;
          fadergadget(0     ,   5,   5,  90, 500,   0,  500, $0000FF, $000000)
          fadergadget(1     , 105,   5,  90, 500,1000,99999, $0000FF, $000022, 0, 1)
Any_Fader=fadergadget(#PB_Any,200,   5, 400,  90,   1,    2, $009900, $330000)
          fadergadget(2     , 200, 100, 400,  90, 100,    0, $0066cc, $003300, 0, #TG_Fader_Horizontal)
          fadergadget(3     , 200, 195, 400,  90, -10,   10, $0bb000, $033000, 0, #TG_Fader_Horizontal,5)
  ;
  TextGadget(#Text_Static_1,  5, 510, 40, 20, "Fader 1:")
  TextGadget(#Text_Value_1,  50, 510, 40, 20, Str(GetFaderGadgetState(0)))
  TextGadget(#Text_Static_2,105, 510, 40, 20, "Fader 2:")   
  TextGadget(#Text_Value_2, 155, 510, 40, 20, Str(GetFaderGadgetState(1)))
  TextGadget(#Text_Static_3,605,   5, 40, 20, "Fader 3:")      
  TextGadget(#Text_Value_3, 650,   5, 40, 20, Str(GetFaderGadgetState(Any_Fader)))
  TextGadget(#Text_Static_4,605, 105, 40, 20, "Fader 4:")   
  TextGadget(#Text_Value_4, 650, 105, 40, 20, Str(GetFaderGadgetState(2)))
  TextGadget(#Text_Static_5,605, 195, 40, 20, "Fader 5:")   
  TextGadget(#Text_Value_5, 650, 195, 40, 20, Str(GetFaderGadgetState(3)))

Repeat
	event = WaitWindowEvent(20)
	Select event
		Case #PB_Event_Gadget
			Select EventGadget()
				Case 0, 1, 2, 3, Any_Fader
					FaderUpdate(EventGadget(), EventType())
					
					If OldValue_1 <> GetFaderGadgetState(0)                  
						SetGadgetText(#Text_Value_1, Str(GetFaderGadgetState(0)))
						OldValue_1 = GetFaderGadgetState(0)   
					EndIf 
					
					If OldValue_2 <> GetFaderGadgetState(1)                  
						SetGadgetText(#Text_Value_2, Str(GetFaderGadgetState(1)))
						OldValue_2 = GetFaderGadgetState(1)   
					EndIf
					
					If OldValue_3 <> GetFaderGadgetState(Any_Fader)                  
						SetGadgetText(#Text_Value_3, Str(GetFaderGadgetState(Any_Fader)))
						OldValue_3 = GetFaderGadgetState(Any_Fader)   
					EndIf
					
					If OldValue_4 <> GetFaderGadgetState(2)                  
						SetGadgetText(#Text_Value_4, Str(GetFaderGadgetState(2)))
						OldValue_4 = GetFaderGadgetState(2)   
					EndIf
					
					If OldValue_5 <> GetFaderGadgetState(3)                  
						SetGadgetText(#Text_Value_5, Str(GetFaderGadgetState(3)))
						OldValue_5 = GetFaderGadgetState(3)   
					EndIf
			EndSelect 
	EndSelect 
Until event = #PB_Event_CloseWindow
End
Voilà, voilà... :D

Re: TextEditorGadget(), et environnement CustomGadget

Publié : dim. 11/sept./2011 15:09
par graph100
merci ;), je prend dans ma besace

Re: TextEditorGadget(), et environnement CustomGadget

Publié : lun. 05/mars/2012 0:12
par graph100
nouvelle version : 2.00.1800

CustomGadget :

Modification totale de la façon de gérer les gadgets,
On passe en une sorte de programmation objet qui permet de coder les gadget séparément
de la partie Gestion CustomGadget.

-> normalement il devrait être plus faciled d'ajouter des gadgets, sans se pencher sur
le code du projet entier


-> Ajout de 3 nouveaux Gadgets.
- ListViewEx (non exploitable encore)
- Graphic (à finir mais utilisable pour un affichage rapide de tableau simple)
- DMXSlider (à fignoler)

Comme d'habitude le code est disponible sur le 1er post.
Je vais maintenant m’atteler à compléter au possible les trucs déjà existants.

Re: TextEditorGadget(), et environnement CustomGadget

Publié : lun. 05/mars/2012 1:04
par GeBonet
Ben beau travaille... :lol:
Détails : Dans "CustomGadget.pbi"
Constantes à déplacer de 1202 vers le début avant procédure sinon... trouve pas !

Code : Tout sélectionner

;{ constantes
#ICG_DMXSlider_Color_01 = $8E6235
#ICG_DMXSlider_Color_02 = $E9D6C2
#ICG_DMXSlider_Color_03 = $D5B08C
#ICG_DMXSlider_Color_04 = $F9F3ED
#ICG_DMXSlider_Color_05 = $B88957
#ICG_DMXSlider_Color_06 = $DCBD9E
#ICG_DMXSlider_Color_07 = $E6D0B9
#ICG_DMXSlider_Color_08 = $E9D6C2

#CG_DMXSlider_Color_Default = -1

A part ça super... Bonne continuation.
Gerhard

Re: TextEditorGadget(), et environnement CustomGadget

Publié : lun. 05/mars/2012 10:51
par dayvid
Bon salut déjà pour commencer, ensuite...

P.... la vache comme c'est bien 8O

graph100 est mon dieu :lol:

C'est tout bonnement superbe :o

J'aurais bien des idées graph100, si ça t'intéresse :)

Félicitation :D

Continue !!!!!!!!!

Re: TextEditorGadget(), et environnement CustomGadget

Publié : lun. 05/mars/2012 11:14
par graph100
merci.

@GeBonet : ok, c'est noté. je maj ça de suite. (j'ai essayé de complétement séparé les partie gadgets de l'environnement, mais pour des raisons d'optimisation, j'ai intégré la base de couleur statique du DMXSlider dans l'environnement (pour pas la charger à chaque gadget))

(merci bcp pour le retour ^^)

Re: TextEditorGadget(), et environnement CustomGadget

Publié : lun. 05/mars/2012 13:31
par Ar-S
Du coup tu as mis à jour ou pas ?

Re: TextEditorGadget(), et environnement CustomGadget

Publié : lun. 05/mars/2012 17:57
par dayvid
Je peut te donner pleins d'idées si tu veux graph100 !

Re: TextEditorGadget(), et environnement CustomGadget

Publié : mar. 06/mars/2012 1:27
par graph100
@AR-S : yep c'est fait ;) (j'ai répondu un peu trop tot !)

@Dayvid : Écoute, comme je l'ai dis plus haut, je vais consacrer mon temps à venir à terminer mes chantiers actuels, et Fred sait si j'en ai quelques-uns ! Je veux pouvoir afficher que tout les gadgets actuels ont leurs fonctionnalités de croisière.
De plus j'ai déjà un dossier spécial avec des code de gadget récolté par-ci par-là, et j'ai ajouté ceux dont j'avais besoin pour mes autres projets immédiats (voir ScMangwa pour un aperçu)

Mon prochain truc immédiat, c'est de coder une trame vide pour des nouveaux gadgets. Car maintenant que y a des méthodes, il faut respecter une syntaxe et on peux faire un squelette vide pour toutes les futures additions.

Si tu veux tu peux mettre des idées, avec un code attenant c'est encore mieux ^^, mais par contre n'attend pas qu'elles soient concrétisées dans les mois à venir. Je suis encore étudiant, et en plein milieu d'un semestre assez lourd avec plein de boulot, dans une année importante pour la suite (je veux partir à l'étranger --> canada ;) ).

surtout ne prend pas mal ce que j'ai dis, toute participation est la bienvenue ! Surtout si y a du code clair, qui marche, ou bien des testeurs (encore merci Gebonet ;) )