Re: Epb PHOENIX 2.68
Publié : dim. 23/juin/2019 11:38
Merci 

Pour le 1 , je ne savais pas, perso, quand j'utilise PB pour faire de l'UI rapidos, j'utilise un système perso qui est plus efficace que celui fourni.Marc56 a écrit :C'est pas sûr... Les Bindevents ont aussi 3 inconvénients:
1. Quand un gadget est supprimé, les événements liés ne sont pas relâchés
(Fred va voir ce qu'il peut faire)
https://www.purebasic.fr/english/viewto ... =4&t=73038
2. Les Bindevents se produisent en permanence indépendamment les uns des autres, un objet peut donc être modifié (presque) en même temps par deux procédures alors que dans une boucle normale d’événement, le système doit attendre la fin des actions avant de rendre la main.
3. Il faut écrire une procédure (donc aussi une éventuelle déclaration) pour chaque BinEvent, même si on n'a qu'une seule instructions dans la procédure (ex: End)
Cela dit, rien n'empêche de mettre les deux systèmes: BinEvent étant par exemple très bien pour afficher une pendule qui ainsi s'affiche toujours même en bougeant une fenêtre.
Marc56 a écrit : @Zorro
Il ne te manque pas quelque-chose ?
Pour revenir au panel il te faut SetActiveGadget( ET SetGadgetState( (numéro du panel)
Quand tout marche bien, oui. Sinon, ça se blinde. Pour le CanvasGadget, c'est une orgie d'events (enfin pour l'instant...) et tu as des variables tampons qu'il faut remettre à zéro que les Binds/Unbinds ne gèrent pas, du moins, le code devient incompréhensibles, alors que ça coule de source sans les Binds/Unbinds.G-Rom a écrit :la pile dépasse rarement 2 events
Non, pas dans le cadre d'un pattern observer. j'ai dit des connerie plus haut, il n'y a pas de pile dans le cadre d'un observer pattern ( les binds & cie )Ollivier a écrit :Quand tout marche bien, oui. Sinon, ça se blinde. Pour le CanvasGadget, c'est une orgie d'events (enfin pour l'instant...) et tu as des variables tampons qu'il faut remettre à zéro que les Binds/Unbinds ne gèrent pas, du moins, le code devient incompréhensibles, alors que ça coule de source sans les Binds/Unbinds.G-Rom a écrit :la pile dépasse rarement 2 events
Donc, en fait, tout dépend de ce qu'on gère comme gadgets/fenêtres.
Code : Tout sélectionner
Prototype notify(what.l, *data, size.l)
Structure sObserver
notify.notify
EndStructure
Structure sSubject
List *observer.sObserver()
EndStructure
Procedure Subject_NotifyObservers(*s.sSubject, what.l, *data, size.l)
ForEach *s\observer()
If *s\observer()\notify
*s\observer()\notify(what,*data,size)
EndIf
Next
EndProcedure
Procedure Subject_AttachObserver(*s.sSubject, *o.sObserver)
AddElement(*s\observer()) : *s\observer() = *o
EndProcedure
Procedure Subject_RemoveObserver(*s.sSubject, *o.sObserver)
ForEach *s\observer()
If *o = *s\observer()
DeleteElement(*s\observer())
EndIf
Next
EndProcedure
; EXEMPLE :
;
Structure SondeDeTemperature Extends sSubject
celcius.f
EndStructure
Procedure ControleTemperature(*sonde.SondeDeTemperature)
If *sonde\celcius > 37.5
Subject_NotifyObservers(*sonde,0,@*sonde\celcius,#Null)
EndIf
EndProcedure
Structure Doctor Extends sObserver
tempMax.f
EndStructure
Procedure Doctor_Notified(what.l, *data, size.l)
If what = 0
Debug "le doc a recu un event : " + Str(what)
Debug "Temperature : " + PeekF(*data)
End
EndIf
EndProcedure
dansleq.SondeDeTemperature
Doc1.Doctor
Doc1\notify = @Doctor_Notified()
Subject_AttachObserver(@dansleq, @Doc1)
Repeat
ControleTemperature(@dansleq)
dansleq\celcius + 0.5
Debug "Mesure de la temperature : "+StrF(dansleq\celcius)
ForEver
ben si ; tu aurai pu le faire aussi, car chacun fait sa propre tambouille , le plus difficile c'est de plonger dans le code d'un autreG-Rom a écrit :Ton IDE tiens dans un seul fichier ? chapeau l'artiste, surtout pouvoir y replonger quelques année après... je l'aurais pas fait... surtout avec un thème cyberpunk qui brûle n'importe quel rétine
Zorro a écrit :ben si ; tu aurai pu le faire aussi, car chacun fait sa propre tambouille , le plus difficile c'est de plonger dans le code d'un autreG-Rom a écrit :Ton IDE tiens dans un seul fichier ? chapeau l'artiste, surtout pouvoir y replonger quelques année après... je l'aurais pas fait... surtout avec un thème cyberpunk qui brûle n'importe quel rétine
mais dans le siens... on a tous nos petits trucs pour se repérer, puisque par définition, on se connais tres bien sois-meme![]()
de plus j'ai vachement commenté mon source donc...
oui l'editeur est d'un seul tenant, j'aime pas les "includes" a débugger , c'est 'horreur
par contre EPB est un seul programme, et il a ses satellites , qui sont aussi des exe a part entiere
par exemple le Greeting est un prg séparé , la partie Parametres c'est aussi séparé ...
je les lance par des RunProgramme()...
c'est un choix des le debut ... j'aime vraiment pas les includes... meme si je comprends ceux qui y ont recours..
ps: ça te prouve que si j'aime bien manger les spaghettis , en code, j'essaie d'eviter ... meme si j'ai encore recours au "GOTO" !