Notes du dév' : TODO pour la version 0.2 de QElectroTech

Commun / non attribué

  • [ok] Question à étudier : la licence des éléments : actuellement, ce doit être la GPL, par héritage implicite du logiciel ; mais pour autoriser la création de schémas non libres, ne faudrait-il pas les mettre sous une autre licence (LGPL, BSD, WTFPL, LAL, CC-BY…) ? ⇒ pour le moment, orientation vers la CC-BY modifiée : fichier ELEMENTS.LICENSE

Benoît

  • [ok] Ajout d'interrupteurs différentiels dans la collection d'éléments : 4 interrupteurs ajoutés.
  • [ok] Ajout de fichiers projets en guise d'exemples ; cf topic dédié sur le forum
  • [ok] Ajout d'éléments « Cellules HT » (Haute-Tension) dans la collection d'éléments (cf dépôt d'éléments).
  • [ok] Traitement des éléments sur le dépôt d'éléments

Youssef

Trem

  • [ok] Mandriva : Corrections et améliorations du paquet - les bugs signalés ont été corrigés
  • [ok] Tester le packaging de la branche 0.2, pour plus de sûreté lors des prochaines releases (effectué dans Cooker).

Xavier

Fonctionnalités restant à implémenter dans la 0.2

  • [ok] rendre l'interface pour gérer les catégories plus sympathique :
    • [ok] pour créer une catégorie : utiliser la catégorie sélectionnée dans le panel d'éléments comme catégorie parente
    • [ok] pour créer un élément : pré-selectionner la catégorie sélectionnée dans le panel d'éléments comme catégorie parente
    • [ok] pour les éléments et catégories : toujours permettre de spécifier le nom “fichier” mais le limiter à [0-9a-z_-.]
  • [ok] Gestion des éléments par drag'n drop :
    • [ok] copie
    • [ok] déplacement (interface à implémenter pour choisir entre la copie et le déplacement)
    • [ok] API et gestion des erreurs à fignoler
  • [ok] Ajout d'un moyen pour repérer rapidement les éléments embarqués non utilisés
  • [ok] Ajouter une action “Nettoyer le projet”
  • [ok] Gérer l'ordre des schémas dans le projet ; cet ordre est visible graphiquement au niveau des onglets et dans le panel d'éléments
    • [ok] donner un moyen à l'utilisateur de changer l'ordre des schémas : implémenter le déplacement d'onglets dans la classe QETTabBar
    • [ok] dans l'export XML du projet, ajouter un attribut, sans doute “order”
  • [ok] Nettoyage des chaînes de caractères dans le code (formes plurielles et utilisation de QString::arg(…) plutôt que des concaténations de chaînes traduites); cf :
  • [ok] Éditeur d'élément : Avertissement lorsque le cadre d'un élément n'englobe pas toutes les parties
  • [ok] Éditeur d'élément : Copier-coller
  • [ok] Éditeur d'élément : Forme “Rectangle”
  • [ok] Import automatique d'un élément lors de sa pose sur le schéma :
    • [ok] ajouter une méthode bool ElementDefinition::equals(const ElementDefinition &) pour comparer rapidement deux ElementDefinition
    • [ok] lors de l'intégration d'un élément, si celui-ci existe déjà dans le projet et est différent de celui à importer, poser la question à l'utilisateur
  • [ok] Éditeur d'élément : snap-to-grid.
  • [ok] Impression PDF (et PostScript tant qu'à faire) proposé sur X11 et sur Windows
  • [ok] Aperçu avant impression
    • [ok] Ajouter une liste déroulante avec les zooms les plus courants (25, 50, 75, 100, 200, 400, 800 …) ainsi que le zoom en cours
    • [ok] Régression : rétablir la possibilité de choisir les pages à imprimer ⇒ faut-il le réimplémenter sachant qu'il est déjà possible de choisir les schémas à imprimer et que l'impression d'un schéma sur plusieurs pages est implémentée mais rarement utilisée dans la pratique ? ⇒ on s'en tape.
  • [ok] Ajouter les propriétés par défaut des schémas (dimensions, types de conducteurs et cartouche) au niveau des projets.
  • [ok] Idée : À l'instar du cadre vide affiché par un navigateur lorsqu'une image est manquante sur une page, on pourrait imaginer un concept d'“élément fantôme” dans QElectroTech : il s'agirait d'un élément graphique simple (rectangle) qui reproduirait au mieux le comportement de l'élément manquant, notamment la présence d'un même nombre de bornes, aux mêmes positions. À l'enregistrement, son export XML serait identique à celui de l'élément manquant. On éviterait ainsi de défigurer un schéma simplement en l'ouvrant sur une machine ne possédant pas les bons éléments.
  • [ok] Icônes dignes de ce nom pour les fichiers .qet et .elmt
  • À ce stade, l'essentiel de la notion de projet est implémenté ; il faut alors adapter certaines fonctionnalités en conséquence :
    • [ok] générer automatiquement les numéros de folios des schémas (= dans leur cartouche) à partir de l'ordre des schémas
    • [ok] impression de projets : imprimer plusieurs schémas d'un projet à la fois
    • [ok] export de projets : exporter plusieurs schémas d'un projet à la fois
    • [ok] Correction du bug #2
    • [no] copier/coller entre projets : import automatique des éléments ?

Liste des petites conneries bien chiantes qu'il faudra implémenter / vérifier / améliorer / ...

  • [no] Implémenter la possibilité de recharger partiellement le panel d'éléments puis lier cette fonctionnalité à la suppression, la création, le déplacement et la copie d'items via le panel d'éléments. L'ajouter également dans le menu contextuel.
  • [no] Ergonomie : dans l'éditeur d'élément, l'utilisation des touches Ctrl (travail en coordonnées libres) et Shift (conservation de l'outil en cours) dans une moindre mesure n'est pas intuitive.
  • [ok] Tester le rendu sous Gnome (ou est-ce que CleanLooks suffit ?) pour détecter les problèmes de dimensions.
  • [ok] Peaufiner le comportement des éditeurs de parties dans l'éditeur d'élément, notamment lorsqu'on réduit leur taille ⇒ QScrollArea + QStackedWidget
  • [ok] Le panel d'éléments liste désormais les collections commune et personnelle mais aussi les projets ouverts ; actuellement, tous les projets ouverts par l'application sont listés. Or, il faudrait ne lister que les projets ouverts dans le QETDiagramEditor en cours. Cela éviterait des incohérences dans l'interface.
  • [ok] Problèmes connus au niveau de l'enregistrement sur disque des fichiers projets :
    • [ok] Faire “Enregistrer” dans un projet sans schéma retient le nom de fichier à utiliser mais il n'est pas écrit ; le fichier est écrit plus tard, lorsqu'on ajoute un élément par exemple.
    • [ok] Lorsqu'un fichier est ouvert en lecture seule, il ne peut être écrit lors de sa fermeture, ce qui empêche de quitter l'application sans la tuer + peaufinage du mode lecture seule en général : API et cohérence de l'interface.
  • [ok] Documenter le format des projets (.qet = 0.2)
  • [ok] Lors d'un drag'n drop dans le panel d'élément, il faudrait scroller lentement le panel lorsque le curseur est prêt des bords supérieur et inférieur.
  • [ok] Lors de la fermeture des projets :
    • [ok] Ne pas demander à l'utilisateur s'il souhaite sauvegarder un projet alors qu'il n'y a pas touché.
    • [ok] Demander un chemin à l'utilisateur si le projet n'a jamais été enregistré.
  • [ok] Bien gérer l'état “modifié” des schémas
  • [ok] Concernant l'API des ElementsCollectionItem :
    • [ok] Distinction ElementsCollection / ElementsCategory :
      • [ok] Ajouter une méthode ElementsCollectionItem::toPureCategory() ayant le même comportement que l'actuelle méthode toCategory()
      • [ok] Faire en sorte que ElementsCollection::toCategory() renvoie la catégorie racine d'une collection
      • [ok] Faire en sorte que ElementDefinition::toCategory() renvoie la catégorie parente de l'élément
      • [ok] Simplifier les morceaux de code faisant appel à cet API ; sont visés les endroits où les collections sont repérées à part, où on récupère leur catégorie racine, et où on y applique le même traitement que pour une catégorie normale.
    • [ok] Méthodes move/copy récursive : uniformiser l'API
      • [ok] bien qu'il n'y ait pas de sens à spécifier que la recopie d'un élément doit être récursive, cela permet d'utiliser les mêmes méthodes move(bool deep_copy = true) et copy(bool deep_copy = true) pour toutes les classes héritant de ElementsCollectionItem.
  • [ok] Empêcher la copie / le déplacement d'une catégorie vers elle-même ou une de ses sous-catégories (récursivement bien sûr)

Gestion des branches et versions

[ok] La branche 0.2 est destinée à être rapatriée par copie dans le trunk :

# Dans un checkout du trunk :
SVN_ROOT="svn+ssh://xavier@svn.tuxfamily.org/svnroot/qet/qet"
svn merge ${SVN_ROOT}/trunk ${SVN_ROOT}/branches/0.2 .

Release

Avant tout :

Tags prévus :

  • 0.2a (alpha)
  • 0.2b (beta)
  • 0.2rc1
  • 0.2

Pour chaque tag :

  • Modifier le displayedVersion et le splash screen
  • Générer la documentation du code
  • Prévenir les packageurs du tag à venir
  • Vérifier l'état des traductions
  • Tagger la version dans le dépôt Subversion
  • Générer le paquet src et l'uploader
  • News : qelectrotech.org, linuxfr.org pour la beta et la finale
  • Paquets pour Windows, Slackware, Debian, Fedora, Mandriva

0.2a (alpha)

  • [ok] Modifier le displayedVersion et le splash screen
  • [ok] Générer la documentation du code
  • [ok] Prévenir les packageurs du tag à venir (trem, scorpio, Remi)
  • [ok] Vérifier l'état des traductions : 98.4 % pour les éléments comme pour le logiciel
  • [ok] Tagger la version dans le dépôt Subversion :
    SVN_ROOT="svn+ssh://xavier@svn.tuxfamily.org/svnroot/qet/qet"
    svn cp ${SVN_ROOT}/trunk ${SVN_ROOT}/tags/0.2a -m "Tag de la version 0.2 alpha"
  • [ok] Générer le paquet src et l'uploader :
    SVN_ROOT="svn+ssh://xavier@svn.tuxfamily.org/svnroot/qet/qet"
    SSH_ACCESS="xavier@ssh.tuxfamily.org"
    SSH_TAGS_PATH="/home/qet/qet-repository/tags"
    SSH_DEBIANWATCH_PATH="/home/qet/qet-repository/debianwatch"
    QET_VERSION="0.2a"
     
    archive_name="qelectrotech-${QET_VERSION}-src"
    now_date="$(date "+%Y%m%d")"
    ssh_tags_dir="${SSH_TAGS_PATH}/${now_date}"
     
    cd /tmp
    svn export $SVN_ROOT/tags/${QET_VERSION} ${archive_name}
    tar czvf ${archive_name}.tar.gz ${archive_name}/
    chmod 664 ${archive_name}.tar.gz
    ssh ${SSH_ACCESS} "mkdir -p ${ssh_tags_dir} && chmod g+w ${ssh_tags_dir}"
     
    scp ${archive_name}.tar.gz ${SSH_ACCESS}:${ssh_tags_dir}/
    rm -rf ${archive_name} ${archive_name}.tar.gz
     
    ssh ${SSH_ACCESS} "cd ${SSH_DEBIANWATCH_PATH} && ln -s ../tags/${now_date}/${archive_name}.tar.gz ${archive_name}.tar.gz"
  • [ok] Ajouter un lien symbolique dans http://download.tuxfamily.org/qet/debianwatch/ (cf script ci-dessus)
  • [ok] Paquets pour Windows (ne pas oublier les .dll dans bin\) et Slackware ; paquets Debian et Fedora ok ; paquets Mandriva ⇒ en attente de trem (mais freeze, non ?)
  • [ok] Mises à jour :

0.2b (beta)

  • [ok] Prévenir les packageurs du tag à venir (trem, scorpio, Remi)
  • [ok] Préparer la dépêche pour linuxfr.org
  • [ok] Préparer la news pour qelectrotech.org
  • [ok] Vérifier l'état des traductions : Traduction de l'application complète en anglais, espagnol, russe et portugais.
  • [ok] Modifier le displayedVersion et le splash screen
  • [ok] Générer la documentation du code
  • [ok] Tagger la version dans le dépôt Subversion :
    SVN_ROOT="svn+ssh://xavier@svn.tuxfamily.org/svnroot/qet/qet"
    svn cp ${SVN_ROOT}/trunk ${SVN_ROOT}/tags/0.2b -m "Tag de la version 0.2 beta"
  • [ok] Générer le paquet src et l'uploader :
    SVN_ROOT="svn+ssh://xavier@svn.tuxfamily.org/svnroot/qet/qet"
    SSH_ACCESS="xavier@ssh.tuxfamily.org"
    SSH_TAGS_PATH="/home/qet/qet-repository/tags"
    SSH_DEBIANWATCH_PATH="/home/qet/qet-repository/debianwatch"
    QET_VERSION="0.2b"
     
    archive_name="qelectrotech-${QET_VERSION}-src"
    now_date="$(date "+%Y%m%d")"
    ssh_tags_dir="${SSH_TAGS_PATH}/${now_date}"
     
    cd /tmp
    umask 0022
    svn export $SVN_ROOT/tags/${QET_VERSION} ${archive_name}
    tar czvf ${archive_name}.tar.gz ${archive_name}/
    chmod 664 ${archive_name}.tar.gz
    ssh ${SSH_ACCESS} "mkdir -p ${ssh_tags_dir} && chmod g+w ${ssh_tags_dir}"
     
    scp ${archive_name}.tar.gz ${SSH_ACCESS}:${ssh_tags_dir}/
    rm -rf ${archive_name} ${archive_name}.tar.gz
     
    ssh ${SSH_ACCESS} "cd ${SSH_DEBIANWATCH_PATH} && ln -s ../tags/${now_date}/${archive_name}.tar.gz ${archive_name}.tar.gz"
  • [ok] Ajouter un lien symbolique dans http://download.tuxfamily.org/qet/debianwatch/ (cf script ci-dessus)
  • Paquets pour :
    • [ok] Windows (ne pas oublier les .dll dans bin\),
    • [ok] Slackware,
    • [ok] Debian,
    • [ok] Fedora,
    • [ok] MacOS,
    • [ok] et Mandriva
  • Mises à jour :

0.2 RC1

  • [ok] Prévenir les packageurs du tag à venir (trem, scorpio, Remi)
  • [ok] Préparer la news pour qelectrotech.org
  • [ok] Modifier le displayedVersion et le splash screen
  • [ok] Générer la documentation du code ; note : générée sans graphes.
  • [ok] Tagger la version dans le dépôt Subversion :
    SVN_ROOT="svn+ssh://xavier@svn.tuxfamily.org/svnroot/qet/qet"
    svn cp ${SVN_ROOT}/trunk ${SVN_ROOT}/tags/0.2rc1 -m "Tag de la version 0.2 RC1"
  • [ok] Générer le paquet src et l'uploader :
    SVN_ROOT="svn+ssh://xavier@svn.tuxfamily.org/svnroot/qet/qet"
    SSH_ACCESS="xavier@ssh.tuxfamily.org"
    SSH_TAGS_PATH="/home/qet/qet-repository/tags"
    SSH_DEBIANWATCH_PATH="/home/qet/qet-repository/debianwatch"
    QET_VERSION="0.2rc1"
     
    archive_name="qelectrotech-${QET_VERSION}-src"
    now_date="$(date "+%Y%m%d")"
    ssh_tags_dir="${SSH_TAGS_PATH}/${now_date}"
     
    cd /tmp
    umask 0022
    svn export $SVN_ROOT/tags/${QET_VERSION} ${archive_name}
    tar czvf ${archive_name}.tar.gz ${archive_name}/
    chmod 664 ${archive_name}.tar.gz
    ssh ${SSH_ACCESS} "mkdir -p ${ssh_tags_dir} && chmod g+w ${ssh_tags_dir}"
     
    scp ${archive_name}.tar.gz ${SSH_ACCESS}:${ssh_tags_dir}/
    rm -rf ${archive_name} ${archive_name}.tar.gz
     
    ssh ${SSH_ACCESS} "cd ${SSH_DEBIANWATCH_PATH} && ln -s ../tags/${now_date}/${archive_name}.tar.gz ${archive_name}.tar.gz"
  • [ok] Ajouter un lien symbolique dans http://download.tuxfamily.org/qet/debianwatch/ (cf script ci-dessus) et éditer le fichier releases.txt
  • Paquets pour :
    • [ok] Windows (ne pas oublier les .dll dans bin\),
    • [ok] Slackware,
    • [ok] Debian,
    • [ok] Fedora,
    • [no] MacOS,
    • [ok] et Mandriva
  • Mises à jour :

0.2 RC2

  • [ok] Prévenir les packageurs du tag à venir (trem, scorpio, Remi)
  • [ok] Préparer la news pour qelectrotech.org
  • [ok] Modifier le displayedVersion et le splash screen
  • [ok] Générer la documentation du code et mettre à jour la page documentation ; note : générée sans graphes.
  • [ok] Tagger la version dans le dépôt Subversion :
    SVN_ROOT="svn+ssh://xavier@svn.tuxfamily.org/svnroot/qet/qet"
    svn cp ${SVN_ROOT}/trunk ${SVN_ROOT}/tags/0.2rc2 -m "Tag de la version 0.2 RC2"
  • [ok] Générer le paquet src et l'uploader :
    SVN_ROOT="svn+ssh://xavier@svn.tuxfamily.org/svnroot/qet/qet"
    SSH_ACCESS="xavier@ssh.tuxfamily.org"
    SSH_TAGS_PATH="/home/qet/qet-repository/tags"
    SSH_DEBIANWATCH_PATH="/home/qet/qet-repository/debianwatch"
    QET_VERSION="0.2rc2"
     
    archive_name="qelectrotech-${QET_VERSION}-src"
    now_date="$(date "+%Y%m%d")"
    ssh_tags_dir="${SSH_TAGS_PATH}/${now_date}"
     
    cd /tmp
    umask 0022
    svn export $SVN_ROOT/tags/${QET_VERSION} ${archive_name}
    tar czvf ${archive_name}.tar.gz ${archive_name}/
    chmod 664 ${archive_name}.tar.gz
    ssh ${SSH_ACCESS} "mkdir -p ${ssh_tags_dir} && chmod g+w ${ssh_tags_dir}"
     
    scp ${archive_name}.tar.gz ${SSH_ACCESS}:${ssh_tags_dir}/
    rm -rf ${archive_name} ${archive_name}.tar.gz
     
    ssh ${SSH_ACCESS} "cd ${SSH_DEBIANWATCH_PATH} && ln -s ../tags/${now_date}/${archive_name}.tar.gz ${archive_name}.tar.gz"
  • [ok] Ajouter un lien symbolique dans http://download.tuxfamily.org/qet/debianwatch/ (cf script ci-dessus) et éditer le fichier releases.txt
  • Paquets pour :
    • [ok] Windows (ne pas oublier les .dll dans bin\),
    • [ok] Slackware,
    • [ok] Debian,
    • [ok] Fedora,
    • [ok] MacOS,
    • [ok] et Mandriva
  • Mises à jour :

0.2

  • [ok] Prévenir les packageurs du tag à venir (trem, scorpio, Remi)
  • [ok] Préparer la dépêche pour linuxfr.org
  • [ok] Préparer la news pour qelectrotech.org
  • [ok] Modifier le displayedVersion et le splash screen
  • [ok] Générer la documentation du code, l'uploader et mettre à jour la page documentation.
  • [ok] Tagger la version dans le dépôt Subversion :
    SVN_ROOT="svn+ssh://xavier@svn.tuxfamily.org/svnroot/qet/qet"
    svn cp ${SVN_ROOT}/trunk ${SVN_ROOT}/tags/0.2 -m "Tag de la version 0.2"
  • [ok] Générer le paquet src et l'uploader :
    SVN_ROOT="svn+ssh://xavier@svn.tuxfamily.org/svnroot/qet/qet"
    SSH_ACCESS="xavier@ssh.tuxfamily.org"
    SSH_TAGS_PATH="/home/qet/qet-repository/tags"
    SSH_DEBIANWATCH_PATH="/home/qet/qet-repository/debianwatch"
    QET_VERSION="0.2"
     
    archive_name="qelectrotech-${QET_VERSION}-src"
    now_date="$(date "+%Y%m%d")"
    ssh_tags_dir="${SSH_TAGS_PATH}/${now_date}"
     
    cd /tmp
    umask 0022
    svn export $SVN_ROOT/tags/${QET_VERSION} ${archive_name}
    tar czvf ${archive_name}.tar.gz ${archive_name}/
    chmod 664 ${archive_name}.tar.gz
    ssh ${SSH_ACCESS} "mkdir -p ${ssh_tags_dir} && chmod g+w ${ssh_tags_dir}"
     
    scp ${archive_name}.tar.gz ${SSH_ACCESS}:${ssh_tags_dir}/
    rm -rf ${archive_name} ${archive_name}.tar.gz
     
    ssh ${SSH_ACCESS} "cd ${SSH_DEBIANWATCH_PATH} && ln -s ../tags/${now_date}/${archive_name}.tar.gz ${archive_name}.tar.gz"
  • [ok] Ajouter un lien symbolique dans http://download.tuxfamily.org/qet/debianwatch/ (cf script ci-dessus) et mdifier releases.txt
  • Paquets pour :
    • [ok] Windows (ne pas oublier les .dll dans bin\),
    • [ok] Slackware,
    • [ok] Suite au mail de Yuriy: utiliser Qt 4.5.2 pour refaire le paquet Windows
    • [ok] Debian,
    • [ok] Fedora,
    • [ok] MacOS,
    • [ok] et Mandriva
  • [ok] Mises à jour :
Imprimer/exporter
Langages
Traductions de cette page: