Architecture application graphique

a marqué ce sujet comme résolu.

Bonjour,

Je sais que le problème que je vais décrire est classique mais je n’ai pas réussi à obtenir une réponse claire sur comment le résoudre (alors que je suis sûr qu’il a été traité de très nombreuses fois).

Je développe une grosse application à l’aide d’Ada et de GTK. Au vu de la taille de celle-ci j’essaye d’avoir un code le plus propre possible afin de m’y retrouver et donc je fais beaucoup d’héritage de composant GTK pour rajouter par dessus mes propres comportements.

Pour mon application, j’ai un menu Open recent file avec dedans une liste de fichiers récemment ouverts. Chaque éléments émets le signal "activate" lorsque l’utilisateur en sélectionne un avec deux callbacks possibles :

  • Une où je reçois en paramètre l’élément qui a émit le signal
  • Une autre où je peux transmettre n’importe quel objet GTK

C’est à dire que dans le premier cas je peux savoir quel fichier a été sélectionné par l’utilisateur, dans le second je peux accéder à ma fenêtre principale (où j’y ai ajouté une instance d’un type qui me permet de gérer l’état interne de mon application). Mais impossible en l’état d’avoir les deux en même temps.

Quelle est la façon habituelle de gérer ce cas ? Lever un signal personnalisé avec le nom du fichier dedans qui sera ensuite attrapé par la fenêtre principale ?

Merci.

Salut à toi.

D’abord je précise que je n’ai jamais utilisé GTK donc mon intervention peut paraître inadaptée.

La question que je me pose, c’est : as-tu besoin d’accéder à ta fenêtre principale à ce moment-là ?

Est-ce que tu pourrais nous montrer un bout de code qui décrit ton problème ou c’est trop perso ?

Salut,

Mes souvenirs avec GTK+ sont un peu lointain, mais il me semble que les fonctions de callback appelées lors de l’envoie d’un signal reçoivent toujours deux arguments : un pointeur vers l’objet qui a émis le signal et un argument variable, spécifié lors de l’appel à g_signal_connect().

Cela me semble répondre, a priori, à ton problème.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte