Règles du forum

Le langage Ada uniquement, pas les compilateurs. Les questions de sémantique et de langage et les questions techniques liées à une application en particulier, son deux choses différentes. Si nécessaire, un forum sur GNAT et les autres compilateurs, tel JanusAda, sera ouvert.

Auteur Message
Beau Parleur
Avatar de l’utilisateur
Bonjour,

Das une application Ada avec GtkAda, j'ai instancié deux fois le paquetage generic_uri_hook pour connecter deux fonctions différentes.

Le problème est que quelque soit l'objet clické, c'est toujours la même fonction qui est appelé, soit la dernière connectée.

Je cherche un moyen d'y parvenir quand même.

En gros et encode....

Source ada : 

package Edit_Uri_Hook is new Generic_Uri_Hook (Integer);
package View_Uri_Hook is new Generic_Uri_Hook (Integer);


Après j'ai ça pour un link_button

Source ada : 

Edit_Uri_Hook.Set_Uri_Hook
(Handler => On_Link_Button_Clicked'Access,
User_Data => 0,
Destroy => null);

Et ça pour un autre.

Source ada : 

View_Uri_Hook.Set_Uri_Hook
(Handler => Lib_On_Link_Button_Clicked'Access,
User_Data => 0,
Destroy => null);


Mais Lib_On_Link_Button_Clicked est appelée dans les deux cas.


Le projet complet est disponible à http://88.189.147.62/Private/fastoncomputer-0.0.2a.tgz

Merci pour votre aide.
Profil
Beau Parleur
Avatar de l’utilisateur
Bonjour,

Comme Generic_Uri_Hook n'existe pas sur GtkAda version Windows je crois que je dois précisé que je suis sur GNU/Linux (Debian).

A part ça, j'ai tout essayé avec les paramètres.
Rien n'y fait.
Je pige pas.
Profil
Administrateur
Avatar de l’utilisateur
D’après la documentation de GTKAda : Package: Generic_Uri_Hook (generic) (univ-orleans.fr).

Documentation a écrit : 
Sets Handler as the subprogram that should be invoked every time a user clicks a Gtk_Link_Button. This subprogram is called before every callback registered for the "clicked" signal.

If no uri hook has been set, GTK+ defaults to calling gtk_show_uri()


Ce que je comprends, c’est que Set_Uri_Hook ne sert pas à enregistrer un gestionnaire d’événement, mais à enregistrer un “daemon before” (dans les termes d’un ancien langage dont j’ai oublié le nom) global.

On peut aussi conclure que ce paquet générique est dans les faits, un singleton.

Pour faire ce que tu veux (si je le comprends bien), il faut attacher un gestionnaire à l’événement clicked des boutons.
Profil
Beau Parleur
Avatar de l’utilisateur
Ah ! Dommage.

J'ai connecté le mes bouton au dit événement !
Ca marche !

J'ai quand même un warning de la part de Gtk :

En cliquant le premier lien...
Citation : 
(fastoncomputer:7968): Gtk-WARNING **: Unable to show './fastoncomputer/fastoncomputer/src/fastoncomputer.adb': Opération non prise en charge


Mais merci beaucoup Hibou, j'ai appris un truc de bon matin.
Désolé pour le dérangement.
Profil
Beau Parleur
Avatar de l’utilisateur
La dernière version de ce programme est disponible sur Sourceforge. net à : https://sourceforge.net/projects/fastoncomputer/?source=directory

Merci pour ton Aide Hibou, j'"avais même buter sur le fait que j'aurais pu le faire.
Profil