Projet

Général

Profil

Étude de l'utilisation des Signaux et Slots dans le plugin

Objectif:
  • le simple ajout du plugin dans le répertoire plugins/ de l'application lui ajoute la capacité à travailler avec un serveur de logs et paramétrages
Nous avons plusieurs moyen pour utiliser le plugin depuis l'application:
  • 1. faire directement des appels à des fonctions du plugin
  • 2. utiliser les signaux et slots

Le problème du 1) c'est qu'il faut instancier l'objet "plugin" dans chaque classe où on en aurait besoin, ça demande donc une modification trop profonde du code pour que ça soit acceptable.

Le 2) est une solution plus élégante que nous avons mise en place le 08.10.2010 dans calcul-mental ... mais demande à ce que chaque objet soit connecté aux signaux/slots de son parent jusqu'à être "remonté" jusqu'au plugin ... ça demande donc aux développeurs de prévoir ça en amont.

Solution rêvée ou idéale

Dans l'idéal nous aimerions que chaque objet puisse se connecter sur des slots et émettre des signaux sur un "bus global" à toute l'application. Par exemple que n'importe quel objet puisse émettre un signal "Envoyer le log suivant: blablablablabla" et que ce signal soit capté par le plugin qui le traite et l'expédie au serveur.

QT propose de faire des connexions signaux/slots automatique pour peu qu'on respecte une certaine nomenclature mais je n'arrive pas à trouver le "truc" pour pouvoir la mettre en oeuvre dans notre cas particulier.

Notes et références:

Solution: les évènements

La solution est arrivée tardivement mais juste avant la réunion des développeurs du Terrier: les event sont globaux à l'application. L'application créé un event, le plugin le capte et se connecte sur une interface publique de l'application. Tout simplement. Ceci a donné naissance à une classe abuleduexercicev0 et à la disparition de l'interface du plugin qui n'en a plus besoin vu que c'est lui qui se connecte sur l'interface de l'application.

20101009-schema_abuledu_plugin_philippe-000b.jpg - Schéma des signaux/slots pour le plugin (309 ko) Eric Seigne, 10/10/2010 11:36

20101009-schema_abuledu_plugin_philippe-000b2.jpg (10,5 ko) Eric Seigne, 10/10/2010 11:38

Redmine Appliance - Powered by TurnKey Linux