j’essaye de déverminer la vue Mixte, dans l’espoir de livrer quelque chose d’utilisable pour la 0.8 finale. J’aurais besoin de votre aide pour lister les problèmes rencontrés lors de l’utilisation de cette vue Mixte.
Voilà une copie de ma version de travail : kompozer-rev219.tar.gz (archive GNU/Linux)
[EDIT] la dernière version en date (rév.223) est la suivante :
- kompozer-rev223.zip archive Windows
- kompozer-rev223.dmg image MacOSX
- kompozer-rev223.tar.gz archive GNU/Linux
Après avoir longuement cogité la question, je crois qu’il faut bosser sur les deux aspects suivants pour stabiliser cette vue Mixte.
<1> Fermeture automatique de la vue Mixte
La vue Mixte pose un tas de soucis dus au fait que le dock Source ne contient pas nécessairement le code de l’élément courant. Pour y remédier, il faudrait que je mette à jour le dock Source au fur et à mesure de la frappe ; ça fonctionne assez bien sur mes propres pages, mais sur les pages de mon fiston (= interminables Pokédex sans le moindre paragraphe) ça revient à recalculer le code de <body> à chaque pression de touche, ce qui pose des problèmes de performance évidents.
Sur cette version de travail (rev 219), la vue Mixte se ferme automatiquement :
- quand on passe en vue Mixte (clic sur l’onglet Mixte, Alt+Enter), le curseur est placé dans cette vue — enfin, il devrait : pour l’instant ce n’est pas le cas, je me garde un peu de souplesse pour faire des tests
- dès que le curseur sort de cette vue (clic dans la fenêtre principale, Alt+Enter / Espace), on repasse en vue Conception
Ça permet encore d’inspecter le code du document en jouant avec l’explorateur DOM, et ça correspond parfaitement à l’usage que j’en ai (Alt+Entrée, modification rapide, Alt+Entrée) — mais qu’en est-il pour vous, est-ce que vous voyez des inconvénients majeurs à cette fermeture automatique ?
<2> Mieux appliquer les modifications apportées en vue Mixte
Modifier un élément en passant par la vue Mixte revient à sélectionner l’élément avec la barre d’état et utiliser « Insert > HTML… ». KompoZer utilise alors la méthode « insertHTML » de l’éditeur Mozilla pour remplacer la sélection par le code HTML passé en argument.
Or, je m’aperçois que cela ne fonctionne pas toujours correctement, loin s’en faut. J’ai notamment vu deux cas problématiques :
- impossible de modifier les attributs d’une cellule de tableau <td>, probablement parce que KompoZer ne peut supprimer que le contenu d’une cellule et non la cellule elle-même
- impossible de remplacer un élément de liste <li> par deux éléments de liste sans couper la liste en deux. Pareil pour les listes de définition (dt/dd)
- <2a> limiter la vue Mixte à l’édition de blocs
Quand l’utilisateur veut éditer un élément <li>, <td> ou autre dans le même cas, KompoZer lui proposerait automatiquement le bloc conteneur (i.e. respectivement <ul/ol>, <table>, etc.). - <2b> éditer le contenu de l’élément plutôt que l’élément lui-même
cela reviendrait à utiliser la propriété innerHTML, bien connue des adeptes de JavaScript. Ça aurait des conséquences assez lourdes sur l’interface.
État actuel (rév.219)
La fermeture automatique est partiellement implémentée. Ça devrait être suffisant pour se faire une idée, mais c’est encore loin d’être « béton » : on peut arriver assez facilement à garder le dock source ouvert sans qu’il ait le focus. Je peaufinerai ça par la suite, si personne ici ne trouve de problème rédhibitoire à cette option.
Pour l’application des modifications en vue Mixte, je suis parti sur l’option <2a> :
- je pense avoir trouvé un gros hack crado pour résoudre le problème des listes (<ol>, <ul>, <dl>), à confirmer.
- n’ayant pas pu corriger le problème pour les cellules de tableau, la vue Mixte refuse désormais d’éditer une cellule de tableau, et propose d’éditer tout le tableau. C’est très pénible à cause de l’absence d’indentation, je vais bosser sur la question.
Par ailleurs, on m’a rapporté que la vue Mixte pouvait générer des freezes (i.e. KompoZer ne plante pas mais il prend 100% de CPU et ne répond plus, il faut faire un killall). C’est pire qu’un crash, si quelqu’un pouvait trouver une procédure pour reproduire ce bug, ça serait un grand progrès. Un boulot pour Do-IT quoi. ^^
Désolé pour la grosse tartine, j’essaye d’être concis mais le problème est assez complexe et il me faut être précis pour que vos tests puissent être profitables au projet. Je publierais des binaires Linux dans ce fil de discussion au fur et à mesure de vos rapports de test.
Merci !