HandCoder : extension Nvu pour Tidy et PHP

Le premier forum francophone sur l'éditeur de pages Web multiplateforme (Linux, Mac OS X, Windows) qui monte… KompoZer, héritier de Nvu, permet de créer vos pages Web graphiquement (wysiwyg) sans aucune connaissance du langage HTML.

Modérateur : chinon37

Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Do-IT a écrit :Concernant l'edition interne à nvu. Pour le html tu parles d'une boite de dialogue avec ok/annuler. Pour le php tu parles de l'onglet source. Se serait pas mieux de tout faire dans une fenetre (ou fenetre 'docké') de maniere a maitriser entirement ce que tu veux y afficher/editer, et d'abandonner definitivement l'onglet source ?
A terme, je voudrais remplacer cet onglet "Source" par une boite de dialogue, essentiellement pour avoir les boutons OK / Annuler. Cette boite de dialogue contiendra le même éditeur "Source", peut-être un peu bricolé, voire bien bricolé pour intégrer ViewFormattedSource, voire même complètement remplacé par un composant Scintilla... mais c'est pour plus tard.

La fenêtre "dockée" marche suffisamment bien chez moi pour que je n'utilise plus l'onglet "Source". Elle pourrait même remplacer avantageusement l'affichage "Source" de Nvu (fut-il dans un onglet ou dans une boite de dialogue). Je l'utilise comme outil de débug, donc j'affine l'ergonomie au fur et à mesure...
Mais elle comporte un défaut rédhibitoire (le même que la boite Insertion > Code HTML) : si elle contient des commentaires ou des instructions PHP, elle les supprime (en fait elle ne les supprime pas vraiment, mais ils n'apparaissent plus dans Nvu, ce qui en revient à peu près au même). Clique sur <body>, tape un caractère dans ce dock, et tout le code PHP du document est perdu.
Par ailleurs, je ne suis pas sûr de pouvoir mettre ce dock sous licence libre, car son fonctionnement est très lié à d'autres choses que je développe sous licence propriétaire (cf. kzspro). L'idéal serait que je trouve un sponsor pour garder tous ces développements libres... faut que je fasse une version de démo pour partir chercher des sous.

En attendant, il faut bien que HandCoder dispose d'un autre moyen pour éditer le code HTML et PHP, sans qu'on soit obligé de recourir à un éditeur externe (c'est trop lourd pour la plupart des utilisateurs). La priorité étant le support PHP, je ne ferai pas de grosse modif de l'affichage "Source" pour la prochaine version ; et pour la version suivante, je me contenterai vraisemblablement de le remplacer par une boite de dialogue.

Pour abandonner totalement l'éditeur externe, il faudra que Nvu soit capable d'éditer du texte, ce qui n'est pas impossible, loin de là. On peut même envisager un explorateur de classes pour le PHP et le JavaScript...
Et pour finir d'embrouiller tout le monde : le dock pourrait également contenir... l'éditeur source de Nvu.
Bref, tout est possible, mais on va se contenter du minimum pour l'instant ! :P
Do-IT a écrit :Pour les extensions de fragments, dans ma pratique c'est .inc.php (surtout depuis que j'utilise handocder qui digerait pas mon php). J'ai jamais vu de .inc.html . Si on a un fragment c'est qu'il faut bien pouvoir l'inclure avec un script donc meme si le fragment contient que du html on peut quand meme lui mettre l'extension du language ? .inc.php .inc.asp etc... ?
Chez moi c'est *.tpl, puisque c'est utilisable par tous les langages de script (bien que je n'aie jamais rien utilisé d'autre que du PHP).
:?: Serait-ce un problème si HandCoder était incapable d'ouvrir des fragments portant l'extension *.html ? :?:
Do-IT a écrit :Le travail sur plusieurs documents simultanement, des fois ca passe, des fois j'ai des crashites aigues à répétition meme avec un seul document ouvert. Peut-etre que c'est du a l'ordre d'installation des extensions. La desinstallation de toutes les extensions suffit à resoudre ça ou faut-il supprimer le profil nvu ?
Nvu crashe beaucoup, certains utilisateurs ont écrit que ça crashe plus souvent avec plusieurs documents ouverts. Ses bindings (xbl pour ceux qui connaissent) génèrent quantité d'exceptions non gérées (= ce que l'homme de la rue appelle des gros bugs qui font ch***). Plus j'étudie le code de Nvu, moins je vois l'intérêt du rétro-portage vers le tronc Mozilla, dont le composant éditeur est limité mais plus fiable (j'ai jamais crashé ThunderBird en écrivant un message en HTML). Vieux débat.

Désinstaller toutes les extensions et supprimer le profil ne change rien.
C'est le répertoire Nvu dans Program Files qu'il faut supprimer ! :evil:
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

La première beta depuis longtemps : http://fabiwan.kenobi.free.fr/HandCoder ... 307-fr.xpi
J'ai réécrit une grande partie de l'extension, donc on peut s'attendre à une jolie collection de bugs.

La principale évolution, c'est qu'on peut désormais éditer les fragments HTML et les prologues des fichiers PHP directement dans l'affichage "Source" de Nvu. Attention, ces fichiers ne doivent pas porter l'extension *.html, sans quoi la détection de fichiers "spéciaux" est désactivée.
Si la page courante contient des pseudo-instructions PHP, et si elle ne contient pas de prologue, HandCoder en ajoutera un.
HandCoder ne crée plus qu'un seul fichier temporaire pour ces fichiers "spéciaux" ; ce fichier temporaire porte toujours l'extension *.html, afin de permettre son édition sous Ubuntu (pas encore testé).
La détection des fichiers "spéciaux" a été profondément modifiée, j'ai l'impression que maintenant ça fonctionne bien.

Attention : la boite de dialogue d'avertissement (qui apparaissait lors de l'ouverture d'un fichier "spécial") a été supprimée, et le support PHP est toujours activé (plus de préférence cachée). La prudence inciterait donc à faire une sauvegarde de vos fichiers *.php avant de les tester avec Nvu + HandCoder.

Il manque encore quelques détails, je les liste pour faire une mini-roadmap :
  • ré-implémenter le support ASP/JSP ;
  • ajouter une ligne "Relativiser les URLs locales" dans le nettoyeur de balises ;
  • faire une correction (ou un contournement) du bug du <tabeditor> ;
  • diverses bidouilles pour avoir une meilleure cohabitation avec NsmConText ;
  • désactiver certains items de menu lorsqu'on ouvre un fragment HTML (éditeur CSS, titre et propriétés de la page...) ;
  • une fenêtre pour lancer Tidy et changer d'encodage et/ou de DOCTYPE...
Vais-je avoir le temps de boire l'apéro avant que Do-IT ne découvre le premier bug ? :P
PS: à priori oui. Hips !
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

J'espere que tu as bien profité de ton apéro. J'ai terminé mon apéro tranquillement. Mais personne ne veut poster avant moi ?

1er fichier php ouvert

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <title>
      blabla.org
    </title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />
    <link rel="stylesheet" href="style/fo.css" type="text/css" />
  </head>
  <body>
    <div id="fo">
      <div id="fo_entete">
        <h1>
          <span class="fo_gros_titre">blabla.org</span> <span class="fo_sous_titre1">blabla</span> <span class="fo_sous_titre2">blabla</span>
        </h1><?php include("include/login.inc.php"); ?>
      </div>
      <div id="fo_menu">
        <?php include("include/menu.inc.php"); ?>
      </div>
      <div id="fo_pub">
        <p>
           
        </p>
      </div>
      <div id="fo_centre"> 
      ETC....
- Onglet source

Code : Tout sélectionner

<?php // Generated by Nvu + HandCoder ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
 xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"
 lang="fr"><head> </div>
<div id="fo_pub"> <p> &nbsp; </p> </div>
<div id="fo_centre">
ETC...
Y'a comme quelque chose qui a disparu. Avec plein de HandCoder: PHP prolog added. hcEditor: [object Object]. Avec Scite (bouton Editeur) le code a l'air d'être encore là.
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Nouveau document > Inserer code php > print "test";
Onglet source le document est OK
Enregistrement du document.
Onglet source

Code : Tout sélectionner

<?php // Generated by Nvu + HandCoder ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
<html
 lang="fr"><head></body></html>
Scite

Code : Tout sélectionner

<?php // Generated by Nvu + HandCoder ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
<html lang="fr"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>test</title></head><body><?php print "test";?><meta
 content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title></title><?php print "test";?></body></html>
Plein de hcEditor: [object Object],[object Object]
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

L'ouverture et l'edition d'un fragment html (extension php) à l'air de fonctionner. Plein de hcEditor: [object Object]
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Do-IT a écrit :J'espere que tu as bien profité de ton apéro. J'ai terminé mon apéro tranquillement. Mais personne ne veut poster avant moi ?
:roll: Visiblement, même en leur laissant deux heures d'avance...
Do-IT a écrit :L'ouverture et l'edition d'un fragment html (extension php) à l'air de fonctionner. Plein de hcEditor: [object Object]
Ca fera déjà un gros progrès par rapport aux versions précédentes. Note que normalement, on peut lancer Tidy sur un fragment. On va pouvoir simplifier le post-it d'Ymai !
Do-IT a écrit :Y'a comme quelque chose qui a disparu.
Vu. Il y avait un problème d'expression rationnelle :
  • /<head.*\?>/g :arrow: /<head[^\?]*\?[^\?]*\?>/gi
Correction "à l'arrache" : http://fabiwan.kenobi.free.fr/HandCoder ... 07b-fr.xpi
J'en ai profité pour supprimer les messages "hcEditor".

Nota (lapalissade ?) : tant qu'on ne sauvegarde pas, le code n'est pas modifié par Nvu.
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Tidy marche pas en interne ? Il demarre la version externe.

Rien a voir

Code : Tout sélectionner

Erreur : [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMRange.setEndAfter]"  nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)"  location: "JS frame :: chrome://handcoder/content/editorOverlay.js :: SetEditMode :: line 552"  data: no]
Fichier source : chrome://handcoder/content/editorOverlay.js
Ligne : 552
Je suis en admiration devant ceux qui comprennent quelque chose aux expressions régulière. J'aimerai bien terminer ma carrière sans avoir besoin d'y toucher.

Bon cette fois ci j'ai deux fois le contenu du body dans le body. Tout en double. L'entete c'est bon.
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Tidy sur un fragment html j'ai une fenetre d'alerte nvu avec comme message les options passées à tidy

Code : Tout sélectionner

--indent yes --wrap 120 --keep-time yes --tidy-mark no --char-encoding raw --fix-uri no --show-body-only yes --write-back yes
Mais ca fonctionne quand meme, on va dire que c'est un oublie de ta part.
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Do-IT a écrit :Tidy marche pas en interne ? Il demarre la version externe.
Oui, j'ai supprimé la version interne pour l'instant. Je la remplacerai par mon propre composant XPCOM, ça permettra de mieux conserver les indentations à l'intérieur des blocs <?php ?>.
Do-IT a écrit :Je suis en admiration devant ceux qui comprennent quelque chose aux expressions régulière.
+1
C'est ma bête noire avec les algorithmes récursifs...
Do-IT a écrit :Rien a voir

Code : Tout sélectionner

Erreur : [...] :: SetEditMode :: line 552"  data: no]
Fichier source : chrome://handcoder/content/editorOverlay.js
Ca, c'est une erreur qui indique que Nvu n'a pas pu conserver la sélection entre le mode "Normal" et le mode "Source".
Do-IT a écrit :Bon cette fois ci j'ai deux fois le contenu du body dans le body. Tout en double. L'entete c'est bon.
Guère mieux... :oops:
Je n'ai pas réussi à reproduire ce bug. C'est peut-être lié à l'erreur "SetEditMode" ? A moins que ton fichier PHP ne comporte d'autres surprises ?
Do-IT a écrit :Tidy sur un fragment html j'ai une fenetre d'alerte nvu avec comme message les options passées à tidy [...]
Mais ca fonctionne quand meme, on va dire que c'est un oublie de ta part.
Je confirme... :oops: :oops:
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Fragment php > un <br> c'est perdu en debut de 1ere ligne dans l'onglet source.
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Do-IT a écrit :Fragment php > un <br> c'est perdu en debut de 1ere ligne dans l'onglet source.
Pas reproduit non plus.
Peut-être que l'option "lancer le nettoyeur de code avant Tidy" était cochée ? Ca a pour effet de supprimer tous les <br> que Nvu considère inutiles...
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Kaze a écrit :A moins que ton fichier PHP ne comporte d'autres surprises ?
Je n'oses plus faire ce que je faisais avec dw. Avec nvu c'est quasi obligatoire de coder proprement.

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <title>
      Favoris
    </title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />
    <link rel="stylesheet" href="style/fo.css" type="text/css" />
  </head>
  <body>
    <div id="fo">
      <div id="fo_entete">
        <?php include("include/login.inc.php"); ?>
      </div>
      <div id="fo_menu">
        <?php include("include/menu.inc.php"); ?>
      </div>
    </div>
  </body>
</html>
donne ca dans l'onglet source

Code : Tout sélectionner

<?php // Generated by Nvu + HandCoder ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
 xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"
 lang="fr"><head>
<title>Favoris</title><meta http-equiv="Content-Type"
 content="text/html; charset=ISO-8859-15" /> <link
 rel="stylesheet" href="style/fo.css" type="text/css" />
<meta http-equiv="Content-Type"
 content="text/html; charset=ISO-8859-15" /><link
 rel="stylesheet" href="style/fo.css" type="text/css" /></head>
<body> <div id="fo"> <div id="fo_entete">
<?php include("include/login.inc.php"); ?> </div> <div
 id="fo_menu"><?php include("include/menu.inc.php"); ?> </div>
</div> <div id="fo"> <div id="fo_entete">
<?php include("include/login.inc.php"); ?> </div> <div
 id="fo_menu"><?php include("include/menu.inc.php"); ?> </div>
</div> </body></html>
Je t'ai dit que l'entete etait bon ? Ah ben non, ... :wink:
Dernière modification par Do-IT le 07 mars 2006, 23:46, modifié 1 fois.
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Kaze a écrit :Peut-être que l'option "lancer le nettoyeur de code avant Tidy" était cochée ?
Cocher aussi chez moi. Tidy sur demande. Mais j'ai toujours ce <br> en trop dans l'onglet source uniquement.
Un fichier qui contient uniquement sur une seule ligne

Code : Tout sélectionner

<?php print "test"; ?>
Me donne ca dans l'onglet source:

Code : Tout sélectionner

<br><?php print "test"; ?>
Kaze a écrit :Je la remplacerai par mon propre composant XPCOM, ça permettra de mieux conserver les indentations à l'intérieur des blocs <?php ?>.
Tu parles de l'intentation dans l'onglet source ? :twisted:
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Kazé
Varan
Messages : 1743
Inscription : 10 févr. 2005, 10:26

Message par Kazé »

Ayé je l'ai vu. Vraiment bizarre celui-là !
Si tu ajoutes un prologue dans ton fichier PHP avant de l'ouvrir avec Nvu, ça devrait retomber en marche. A corriger.
Do-IT a écrit :
Kaze a écrit :Peut-être que l'option "lancer le nettoyeur de code avant Tidy" était cochée ?
Cocher aussi chez moi. Tidy sur demande. Mais j'ai toujours ce <br> en trop dans l'onglet source uniquement.
Ayé je l'ai vu. Pas dramatique mais déroutant.
Je pense que Nvu ne sait pas ouvrir un document dont le <body> ne contient que des pseudo-instructions.
Do-IT a écrit :
Kaze a écrit :Je la remplacerai par mon propre composant XPCOM, ça permettra de mieux conserver les indentations à l'intérieur des blocs <?php ?>.
Et l'indentation dans l'onglet source ? :twisted:
Oui, c'est bien l'idée ;)
Il faudrait surtout que les numéros de ligne dans l'onglet source correspondent à ce que l'on voit dans l'éditeur texte (autre point qui déroute les débutants... et les autres). Il faudrait aussi améliorer la colorisation syntaxique, qui supporte mal les éléments qui occupent plusieurs lignes.
On pourrait même implémenter une vue façon "ViewFormattedSource", sans avoir à attendre 3 plombes que la mise en forme soit faite (le C++ c'est beaucoup plus rapide que le JavaScript).
Dernière modification par Kazé le 08 mars 2006, 00:13, modifié 1 fois.
KompoZer lead dev
Ubuntu 10.04 Lucid Lynx — « L'erreur est humaine, mais vraiment foutre la merde nécessite le mot de passe root. »
Do-IT
Iguane
Messages : 537
Inscription : 03 juil. 2005, 09:46

Message par Do-IT »

Moi tant qu'il n'y a pas de réponse je modifie mon dernier message. Ca nous donne des quote perimés. :wink: :lol: Bon j'ai plus qu'une aiguille sur mon horloge, .... :arrow:
Redhat, CentOs, Mandriva, Ubuntu au boulot. Ubuntu à la maison. Vista et Xp grâce à la vente liée.
Soutenir KompoZer
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités