akatronic — 2008-12-26 11:33:40

Je voudrais connaitre la valeur d'une série de toggle à l'aide de messages.
Comme on peut interroger un canvas avec get_pos, je fais bêtement 
|;
|montoggle_rcv get_value (

La console renvoie tgl: no method for 'get_value'

Connaissez-vous une solution?

D'une façon plus générale, existe-t-il un truc pour lister les methodes reconnues par les objets?

Merci

matohawk — 2008-12-26 14:04:53

oui
tu fais help sur l'objet toogle et après tu ouvre le sous-patch pd edit
et la tu auras tous les messages.

akatronic — 2008-12-26 16:48:18

?????!! Je sais faire clic-droit-help mais je ne vois pas ici de message qui pourrait faire ce dont j'ai besoin.

matohawk — 2008-12-26 17:15:14

entre dans le sous-patch pd edit

akatronic — 2008-12-27 10:36:38

Il n'y a rien dans edit qui permette de connaitre la valeur du toggle.
non-zero permette d'éditer la valeur du toggle mais pas de la lire. c'est un alias de |set(

La seule solution est d'envoyer un double bang au toggle. Ça devient ingérable car les bang déclencheront d'autres calculs.

solipse — 2008-12-28 14:08:53

Bonjour akatronic,

Pourrais-tu préciser quelle valeur tu veux récupérer?

Si c'est celle que tu donnes via le message non-zero,
il suffit d'un clic (ou bang) sur le [toggle] correspondant...

Si tu as un exemple de patch, cela nous permettrait de
te répondre (peut-être...) plus précisément.

solipse.

human.koala — 2008-12-28 21:13:07

tu peux checker le code source de toggle pour voir a quel message il repond mais sinon je crois que tu va etre obliger de creer un objet renvoyant la valeur ( genre un float et un send ) lors d'un bang et le placer juste apres le toggle.

HK

akatronic — 2008-12-29 08:19:04

Solipse, C'est bien la valeur nonzero que je voudrais récupérer. Celle qui s'affiche dans la boite propriétés dans la case "value".
J'essaie de faire un patch s'inspirant du monome et du tenori. Rien de précis pour l'instant, c'est un objet d'étude; mais cette valeur peut être intéressante pour mémoriser des motifs graphiques, des pondérations, etc. Je voudrais faire une fonction pour lire, et mémoriser dans des banques tout ou partie de la grille.

Comme dit  human.koala, on peut créer des objets derrière les toggles pour mémoriser. Ça revient à créer une image de l'interface dans une autre structure. C'est vraiment ballot.

human.koala, je n'ai pas encore jeté un oeil aux sources. L'envie ne manque pas mais j'ai peur de me perdre. Existe-t-il une documentation des sources?

human.koala — 2008-12-29 13:38:49

voila ce que j'ai trouvé dans g_toggle.c

void g_toggle_setup(void)
{
    toggle_class = class_new(gensym("tgl"), (t_newmethod)toggle_new,
                             (t_method)toggle_ff, sizeof(t_toggle), 0, A_GIMME, 0);
    class_addcreator((t_newmethod)toggle_new, gensym("toggle"), A_GIMME, 0);
    class_addbang(toggle_class, toggle_bang);
    class_addfloat(toggle_class, toggle_float);
    class_addmethod(toggle_class, (t_method)toggle_click, gensym("click"),
                    A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0);
    class_addmethod(toggle_class, (t_method)toggle_dialog, gensym("dialog"),
                    A_GIMME, 0);
    class_addmethod(toggle_class, (t_method)toggle_loadbang, gensym("loadbang"), 0);
    class_addmethod(toggle_class, (t_method)toggle_set, gensym("set"), A_FLOAT, 0);
    class_addmethod(toggle_class, (t_method)toggle_size, gensym("size"), A_GIMME, 0);
    class_addmethod(toggle_class, (t_method)toggle_delta, gensym("delta"), A_GIMME, 0);
    class_addmethod(toggle_class, (t_method)toggle_pos, gensym("pos"), A_GIMME, 0);
    class_addmethod(toggle_class, (t_method)toggle_color, gensym("color"), A_GIMME, 0);
    class_addmethod(toggle_class, (t_method)toggle_send, gensym("send"), A_DEFSYM, 0);
    class_addmethod(toggle_class, (t_method)toggle_receive, gensym("receive"), A_DEFSYM, 0);
    class_addmethod(toggle_class, (t_method)toggle_label, gensym("label"), A_DEFSYM, 0);
    class_addmethod(toggle_class, (t_method)toggle_label_pos, gensym("label_pos"), A_GIMME, 0);
    class_addmethod(toggle_class, (t_method)toggle_label_font, gensym("label_font"), A_GIMME, 0);
    class_addmethod(toggle_class, (t_method)toggle_init, gensym("init"), A_FLOAT, 0);
    class_addmethod(toggle_class, (t_method)toggle_nonzero, gensym("nonzero"), A_FLOAT, 0);
    toggle_widgetbehavior.w_getrectfn = toggle_getrect;
    toggle_widgetbehavior.w_displacefn = iemgui_displace;
    toggle_widgetbehavior.w_selectfn = iemgui_select;
    toggle_widgetbehavior.w_activatefn = NULL;
    toggle_widgetbehavior.w_deletefn = iemgui_delete;
    toggle_widgetbehavior.w_visfn = iemgui_vis;
    toggle_widgetbehavior.w_clickfn = toggle_newclick;
    class_setwidget(toggle_class, &toggle_widgetbehavior);
    class_sethelpsymbol(toggle_class, gensym("toggle"));
    class_setsavefn(toggle_class, toggle_save);
    class_setpropertiesfn(toggle_class, toggle_properties);
}

HK