Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2013-05-12 19:05:34 ofxUI : quelques questions...

Marty
membre
Date d'inscription: 2012-04-27
Messages: 143

ofxUI : quelques questions...



Hello,

J'utilise (toujours !) l'addon ofxUI pour créer mon interface. Je suis un peu rouillé en C++ depuis le temps que je n'y ai pas touché mais je me débrouille et les choses avancent petit à petit...

Il y a cependant quelque petites choses que je n'arrive pas à faire ou qui font ce que je ne veux pas !

- J'ai besoin d'un champ de saisie pour récupérer une info saisie par l'utilisateur. Le problème : comment récupérer la valeur saisie ? J'utilise le widget ofxTextInput mais je ne trouve pas d'exemple ou d'info suffisante dans le code ofxUI pour comprendre comment ça fonctionne. Dans l'idéal je cherche (si c'est possible) à récupérer la donnée saisie à la validation par ENTER, il y a je crois un trigger qui semblerait donner cette possibilité. Mais sinon (et j'ai essayé aussi) je crée un bouton qui sert de déclencheur. J'ai bien vu qu'il y a une méthode getTextInput() mais ça ne donne rien...

- J'utilise également des boutons. Je n'ai pas vérifié sur tous les types de boutons, mais actuellement j'utilise un ofxLabelButton mais celui-ci déclenche l'action quand le bouton est enfoncé ET quand le bouton est relaché ! J'utilise ce bouton pour créer un canvas et du coup la il m'ne crée deux à chaque clic... c'est un bug ou peut on spécifier le déclenchement uniquement quand le bouton est enfoncé et/ou relaché ?

Merci pour votre aide.

Hors ligne

 

#2 2013-05-12 19:45:28 Re : ofxUI : quelques questions...

lilive
membre
Lieu: Toulouse
Date d'inscription: 2011-06-24
Messages: 52
Site web

Re: ofxUI : quelques questions...



Bonsoir Marty,
Je fais moi aussi petit à petit connaissance avec ofxUI.
Pour le textInput je n'ai jamais fait, mais j'en aurai besoin très bientôt moi aussi.
Pour les boutons je n'ai pas vu si on pouvait changer ce comportement, mais je sais que dans la fonction qui répond aux évènements, une fois que tu as casté le contrôle qui a émis l'évènement en ofxLabelButton *btn, tu peux consulter btn->getValue(). Cette valeur est vraie si le bouton est enfoncé, fausse s'il est relaché. Ça marche pareil pour les toggleButton.

Hors ligne

 

#3 2013-05-12 20:33:42 Re : ofxUI : quelques questions...

Marty
membre
Date d'inscription: 2012-04-27
Messages: 143

Re: ofxUI : quelques questions...



Salut lilive,

Merci pour ta réponse. Effectivement j'avais vu cette méthode getValue(). J'avais essayé et cela fonctionne. Mais j'aimerais savoir si c'est la bonne façon de faire. Je vais en effet peut être avoir besoin d'un bouton qui déclenche une action à la relache. Ceci dit je me demande si c'est pas un comportement "normal" pour un toggle. Mais la j'utilise un "bouton"...

Hors ligne

 

#4 2013-05-12 20:49:41 Re : ofxUI : quelques questions...

lilive
membre
Lieu: Toulouse
Date d'inscription: 2011-06-24
Messages: 52
Site web

Re: ofxUI : quelques questions...



Je viens de regarder de plus près pour trouver la réponse. Je te dis comment je fais :
J'ouvre ofxUILabelButton.h
Je regarde les méthodes. A part des constructeurs je ne vois pas grand chose. Mais je vois que la classe hérite de ofxUIButton:

class ofxUILabelButton : public ofxUIButton

J'ouvre donc ofxUIButton.h
Là il y a deux méthodes mousePressed et mouseReleased
Leur code est plutôt simple et j'y lis un appel à une fonction triggerEvent, qui est manifestement la fonction qui diffuse l'évènement. Ce triggerEvent n'est soumis à aucune condition particulière qui pourrait être du genre

if (triggerEventOnMouseReleased) triggerEvent(this);

où triggerEventOnMouseReleased serait une éventuelle variable qui permettrait de choisir quand on veut que l'évènement soit diffusé, au clic, au relaché, ou dans les deux cas.
J'en déduis donc qu'un bouton est conçu pour diffuser l'évènement au clic comme au relâché, et qu'il n'y a pas de moyen prévu de modifier ce comportement.

Donc si on veut un bouton qui ne diffuse l'évènement qu'au clic, il faut le coder soit-même. Ou alors bien sûr, quelque chose m'aurait échappé wink

Hors ligne

 

#5 2013-05-14 17:01:01 Re : ofxUI : quelques questions...

Marty
membre
Date d'inscription: 2012-04-27
Messages: 143

Re: ofxUI : quelques questions...



Hello,

ok donc pour le premier problème c'est réglé, un problème de typo dans l'id du textinput

pour le second, j'ai une réponse du développeur Rezaali :

citation :

its not a bug, buttons are supposed to tell you when you click on them and when you release, you can perform a simple check to see what the button's state is by button->getValue() and if the value is true then do something, the second button event is the UI telling you that the button was released.

Thus:

if(button->getValue())
{
//do something
}
else
{
//do something else.
}

Hors ligne

 

#6 2013-05-14 19:07:01 Re : ofxUI : quelques questions...

lilive
membre
Lieu: Toulouse
Date d'inscription: 2011-06-24
Messages: 52
Site web

Re: ofxUI : quelques questions...



Bien, ça confirme ce que je disais.
Pour ma part je viens de soumettre ma première proposition de modification de code d'un addon, via github. Je n'avais jamais fait pareille chose, je suis fier comme un paon ! J'en parle car on pourrait très bien proposer une variante de ofxfUI qui permettrait de choisir de recevoir l'évènement des boutons uniquement au clic, ou au relâché, ou aux deux.

Hors ligne

 

#7 2013-05-15 10:27:30 Re : ofxUI : quelques questions...

Marty
membre
Date d'inscription: 2012-04-27
Messages: 143

Re: ofxUI : quelques questions...



oui c'est une idée. Il faudrait peut être surcharger la méthode pour y inclure une variable supplémentaire par exemple. Un peu du genre utilisé pour la taille des polices ou l'alignement des widgets comme les boutons radio. Un truc du genre OFX_UI_ACTIVE_ONCLICK ou OFX_UI_ACTIVE_ONRELEASE ...

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024