Projet

Général

Profil

Utilisation de AbulEduExerciceV0

Pour les développeurs, la documentation technique et le code source: https://redmine.ryxeo.com/embedded/leterrier-developpeu/main.html

Principe

Pour structurer nos applications nous avons créé une classe "AbulEduExerciceV0" dont les objectifs principaux sont
  • charger automatiquement le plugin de remontée des logs et paramètres
  • chercher si une mise à jour du logiciel existe
  • ... (à ajouter au fur et à mesure des besoins)

De ce fait nous devons télécharger les fichiers abuleduexercicev0.h et .cpp, et les ajouter à notre projet en cours. Adresse de téléchargement de l'archive contenant ces fichiers: https://redmine.ryxeo.com/projects/leterrier-developpeu/files, préférez le dépôt de code source qui doit être plus à jour que les archives de téléchargement.

Transformer une QMainWindow en AbulEduExerciceV0

Pensez à ajouter au projet les fichiers abuleduexercicev0.h et abuleduexercicev0.cpp (de préférence en les copiant dans un sous dossier lib/ de votre application)

Ensuite, le plus simple est de créer une application de type QMainWindow dans QT et ensuite de modifier les fichiers suivants:

  • mainwindow.h, dans l'entête du fichier ajouter la ligne
#include "lib/abuleduexercicev0.h" 
  • mainwindow.h ensuite, remplacer la ligne
class MainWindow : public QMainWindow
  • par
class MainWindow : public AbulEduExerciceV0
  • mainwindow.cpp ensuite, remplacer les lignes
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindowClass)
  • par (la seule modification est en fait AbulEduExerciceV0)
MainWindow::MainWindow(QWidget *parent)
    : AbulEduExerciceV0(parent), ui(new Ui::MainWindowClass)
  • pensez à ajouter le XML dans le fichier .pro de votre projet (abuleduexercicev0 utilise XML)
QT += xml

Utiliser les méthodes spéciales de AbulEduExerciceV0

Générales (dans la partie principale de l'application)

  • Affecter un nom à votre application (par exemple dans le main.cpp) avant la fonction main, il faut la définition du nom de l'application "humainement compréhensible":
extern const QString abeApplicationLongName=QObject::trUtf8("AbulÉdu LeTerrier -- Raconte-moi");
  • puis dans la fonction main du fichier main.cpp
    qApp->setApplicationName("leterrier-racont"); //Le code de l'application telle que définie par redmine
    qApp->setOrganizationDomain("abuledu.org"); //Le domaine (normalement abuledu.org)
    qApp->setOrganizationName("leterrier"); //Le nom de l'organisation, on converge tous vers leterrier :)
  • Affecter un numéro de version dans votre application (par exemple dans le main.cpp)
    qApp->setApplicationVersion("1.0.1"); //Version du logiciel

Au début d'un exercice

  • Indiquer le nom de l'exercice en cours (étiquette libre décidée par le développeur) (facultatif)
      setAbeExerciceName("addition");
  • Indiquer le niveau de l'exercice en cours (étiquette libre décidée par le développeur) (facultatif)
      setAbeLevel("niveau 1");
  • Indiquer le nombre de questions posées dans ce niveau (facultatif)
      setAbeNbTotalQuestions(10);
  • Indiquer la compétence "code interne leterrier" que cet exercice permet de valider (facultatif)
      setAbeSkill("table multiplication 2");

À chaque réponse d'une question posée

  • Ajouter une "ligne de log" dans notre structure locale (les deux premiers paramètres sont obligatoires mais pas les suivants):
      setAbeLineLog("Quel est l'âge du capitaine ?","99");
      //avec tous les parametres possibles
      setAbeLineLog(QString question,   QString answer,
                    int score=-1,        int nbPrintedQuestions=0, QString evaluation="",
                    QString expected="", QString answerTime="",     QString answerIntermediate="",
                    QString answerProposed="");
Description des différents paramètres:
  • question: la question qui a été posée (exemple "2+2")
  • answer: la réponse qui a été donnée par l'utilisateur (exemple "4")
  • score: le score (si il existe) (exemple 1)
  • nbPrintedQuestions: nombre de question déjà posées (permet de suivre une séquence de questions)
  • evaluation: code évaluation de la réponse, a,b,c,d ou z (exemple "a")
    • a: c'est bien
    • b: un peu moins bien
    • c: pas très bien
    • d: faux
    • z: pas de réponse
  • expected: la réponse attendue (exemple "4")
  • answerTime: durée de la réponse
  • answerIntermediate: s'il y a eu des réponses intermédiaires (exercices avec construction de la réponse)
  • answerProposed: s'il y avait des réponses proposées (exemple d'un texte à trou où on demande de choisir une réponse dans une série de propositions)

À la fin d'un exercice

  • Envoyer le log sur le serveur via le plugin, si le plugin n'est pas là, ça ne fait rien (au sens de "ça n'est pas grave")
      pushAbulEduLogs();

Vérification (serveur etc.)

Pour vérifier le bon fonctionnement du système vous pouvez vous connecter sur le serveur de tests https://secure.ryxeo.com/leterrier/view.php.

Redmine Appliance - Powered by TurnKey Linux