Epb PHOENIX 2.68

Programmation d'applications complexes
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb PHOENIX 2.68

Message par Zorro »

Merci :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb PHOENIX 2.68

Message par Zorro »

sorry , la derniere version de EPB est gravement buggé !!

elle ne reponds plus lorsqu'on clique sur un mots des listes de droites le "saut" ne se fait pas dans le code ...(procedure/constante/signets)*
je suis dessus ..... :roll: :roll:
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb PHOENIX 2.68

Message par Zorro »

je suis confronté a un bug tres tres bizarre !!

voyez plutot :

Image

tout se passe comme si mon gadget listview() n'existait plus !!

je click sur un mot, et un simple GetGadgetText(#listview_procedure) ne renvoit rien !!

j'ai ce probleme depuis que j'ai viré l'editeur de bas de page ....
c'est surement lié a une histoire avec les PanelGadget() et autres SplitterGadget() ....

je rame...je rame ... je rame ....

bon ça montre que coder en Purebasic ... ben c'est pas si simple :mrgreen:


[reedit] en Purbasic 5.42 et en purebasic 5.70 !! c'est pareil 8O
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Epb PHOENIX 2.68

Message par G-Rom »

Utilise les bindevent & cie au lieu de je suis sur d'une groooosse boucle qui gère tout les events possible. t'aura moins de bugs comme cela.
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Epb PHOENIX 2.68

Message par Marc56 »

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.

@Zorro
Il ne te manque pas quelque-chose ?
Pour revenir au panel il te faut SetActiveGadget( ET SetGadgetState( (numéro du panel)
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Epb PHOENIX 2.68

Message par G-Rom »

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.
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.
pour le 2 , non, PB doit surement utilisé le pattern observer , c'est la même chose qu'une boucle d'évent normale , sauf qu'ici c'est une "pile" d'événement qui est lié à un éventuel callback. ( chaque évent déclenche un callback à ceux qui on souscrit à l'évent , rf: le pattern observer ) , la pile dépasse rarement 2 events.
pour le 3 , oui ca évite d'avoir un gestionnaire des event de 1000 lignes et de ne plus pouvoirs les débugger car sans faire exprès et sans que le compilateur bronche , on utilise 2x la même variable pour des usages différents par ex... , la preuve , dorro et son bug , qui est surement dû à un cafouillage de sa part dans son code fossilisé et spaghétifié... ;)
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb PHOENIX 2.68

Message par Zorro »

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)

oui les bindevent, c'est a prendre comme des CallBack !

@Marc , le probleme avec SetGadgetState(#listview_procedure,numero de selection)
c'est que justement, il faut connaitre la selection...et chez moi depuis ce probleme , ça me renvoi 0 !!!


en fait tout fonctionne si lorsque je clique sur ma liste , sur un nom de procedure (ou de constante ou de signet)
je maintient longtemp le clik et que je bouge un poil la souris...
là l'event recupere bien le texte choisi avec .GetGadgetText(#listview_procedure)

c'est bien un probleme lié a la synchro , et effectivement, je vais peut etre devoir binder (ou mettre en CallBack)
ces gadgets ...


ce qui est bizarre c'est que je n'avais pas ce probleme avant... 8O
ce qui est bizarre c'est que lorsque je clique sur la liste des procedures par exemple, l'evenement a bien lieu
c'ets seulement le retour du contenu du gadget listview avec GetGadgetText(#listview_procedure)
qui me renvoi rien ... c'est un truc de dingue ....

je vais suivre la voie des callback histoire de voir ....

ps: lorsque je force une selection avec SetGadgetState(#listview_procedure,numero de selection)
là ça me renvoi bien le contenu du gadget listview , ce qui prouve qu'il y a bien quelque chose dedans

c'est seulement lorsque j'utilise la souris.. ça semble bloquer ... ..

bon je retourne a mes tests , je lacherai rien de toute façons :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb PHOENIX 2.68

Message par Zorro »

c'est bon j'ai trouvé le probleme :)

c'est que je mettais l'appel de ma procedure de mise a jours des listview
dans le clique souris gauche...
cela devait lui prendre trop de temps
et probablement effacer le numero de la selection qu'on venait de faire...


bon je prefere ça ... a moi de trouver une soluce maintenant

Merci a vous pour votre aide ;)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Epb PHOENIX 2.68

Message par Ollivier »

G-Rom a écrit :la pile dépasse rarement 2 events
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.

Donc, en fait, tout dépend de ce qu'on gère comme gadgets/fenêtres.
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Epb PHOENIX 2.68

Message par G-Rom »

Ollivier a écrit :
G-Rom a écrit :la pile dépasse rarement 2 events
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.

Donc, en fait, tout dépend de ce qu'on gère comme gadgets/fenêtres.
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 )

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
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Epb PHOENIX 2.68

Message par Ollivier »

Tout à fait, mais sans l'instance << doctor >>. Et puis c'était assorti d'une impression de feu de couilles, pendant 6 semaines. C'est plutôt l'instance PincementSciatique sans la sécu à 37.5°C : quand les impressions sont bien réelles, tandis qu'il s'agit d'une longue illusion...
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb PHOENIX 2.68

Message par Zorro »

RE ...

bon j'ai mis a jour mon EPB :)
toujours le meme lien de telechargement (remis le compteur a zero )
http://michel.dobro.free.fr/STLINE/down ... on/29-epb/


j'ai vu que le "Case" ne creait pas de décalage a la mise en forme du code (Ctrl+Tab)
voila qui est fait ...

pour info , la complétion des procedure/structures/constantes ne s'active que sur :
le bouton souris droit
Ctrl+Tab ou Shift+tab (respectivement tabulation du code ou détabulation du code)
comme c'est le processus qui prends le plus de temps,ce sera tout...

pour la mise a jour des listviews (procedures/constante/signets)
ça se fait avec :
la touche Return
les 2 touches Flechéés haut et Bas
le bouton droit de la souris (qui appel aussi le menu) ...

ça me parait bien fonctionnel comme ça :)

j'ai aussi amélioré la vitesse lorsqu'on passe d'un onglet de code a l'autre
les listviews ne sont plus Recrées a partir de zero , mais leur contenu est sauvegardé pour chaque onglet
ainsi lorsqu'on zappe d'un onglet a l'autre les listes sont juste rechargé avec leur anciens contenu ...
(avant je recreait tout en rescannant chaque code :lol: )

j'ai corrigé l'affichage des proceduredll dans le listview procedures qui affichait "Dll toto"

bon .. ça devrai etre bon maintenant .. merci pour votre patience (a Micoute pour son utilisation quotidienne) et aux Testeur
(Marc56) :)


allez pour le fun , une petite visite du code :

Image
Dernière modification par Zorro le jeu. 27/juin/2019 11:01, modifié 1 fois.
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Epb PHOENIX 2.68

Message par G-Rom »

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 :)
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Epb PHOENIX 2.68

Message par Zorro »

G-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 :)
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 autre
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" ! :lol:
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Epb PHOENIX 2.68

Message par G-Rom »

Zorro a écrit :
G-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 :)
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 autre
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" ! :lol:

J'essaye d'avoir une approche pro quand je code, des trucs bien séparé , je sépare le rendu de la logique ou des événements par exemple, je ne me vois pas faire cela d'un seul tenant.
mais sincèrement , je te tire mon chapeau , j'ai vu peu de gros projet , tenir dans un seul fichier , car EPB , même si ce n'est qu'un IDE, reste un gros projet pour un gars seul. J'aime cela car cela represente le type même du gars qui bricole chez lui, on sent que tu est le premier utilisateur de ton ide , on sent la passion qui y a eu à faire cela, je trouve cela inspirant quelque part , je vais pas faire mon kcc couplé avec ollivier , mais... , mes respects. ;)
Répondre