IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Téléchargez Pascal Discussion :

[Linux - Windows] MiniHTML : prépare une mise en forme HTML


Sujet :

Téléchargez Pascal

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 196
    Par défaut [Linux - Windows] MiniHTML : prépare une mise en forme HTML
    Beaucoup de forums (pas celui-ci, qui est évidemment génial !) ne permettent pas de formater les posts en appliquent des <i>italiques</i>, des <b>caractères gras</b>, <u>soulignés</u>, <strike>rayés</strike>, <del>supprimés</del>, <sup>exposant</sup>, <sub>indice</sub>. On rencontre aussi d'autres occasions où on s'entortille les doigts en devant taper sans aide des balises HTML…

    Les touches < > sont mal placées sur les claviers français, où des caractères récurrents en programmation sont reléguées dans des emplacements peu accessibles (la palme revient aux signes {}, indispensables en Pascal, en CSS etc., accessibles par ALT-gr, sans parler de @, qui sert pourtant à tout le monde, de ^ pour les pointeurs… Il faudrait un clavier avec une ligne de plus pour que les signes de programmation soient accessibles directement.

    Ce bloc-notes, fondé sur un autre que j'avais écrit en 2007 pour un autre usage, permet de marquer les italiques, gras, soulignés, barrés, exposant, indice avec des balises HTML, d'insérer de liens et des images Internet. Il y a une possibilité d'ouverture de fichier (encodage UTF-8 : je n'ai pas prévu l'import ANSI) ou de sauvegarde, éventuellement en HTML avec un minimum de balises de fichier, en cas de besoin. Un bouton marqué & permet de préparer la zone sélectionnée à être citée comme du code HTML dans une page en HTML. Le bouton avec un bloc-notes permet de copier le contenu de l'éditeur dans le presse-papier.

    La mise en œuvre de ces quelques fonctions demandait fort peu de peine. Mais la fiche supporte aussi le drag & drop : (on glisse l'icône du fichier à ouvrir sur la fenêtre du logiciel) et également l'envoi du nom de fichier en ligne de commande : MiniHTML nomdufichier.txt.

    Il y a aussi un menu déroulant proposant de couper / copier / coller / supprimer / tout sélectionner dans la zone d'édition (toutes choses qui ne se font pas automatiquement dans un Edit Lazarus : ce ne sont pas des propriétés héritées de Windows, mais des composants et un peu de code).

    <i>J'ai même laissé la possibilité de rechercher une chaîne dans le texte. Du fait de l'adaptation d'un (en fait plusieurs) projet(s) précédents, il peut rester des choses bizarres.</i>
    Il reste même aussi l'option d'imprimer le document (texte simple), qui n'est vraiment pas utile ; elle reste de l'ancien projet et m'avait quand même donné de la peine

    J'ai également inclus un embellissement de la typographie qui sort un peu du sujet : j'ai utilisé ce petit outil pour arranger plus facilement les commentaires des métadonnées des fichiers epub (dans Calibre) ou de leurs sources ODT : les apostrophes droites seront remplacées par des apostrophes courbes, les trois points par des points de suspension typographiques, des espaces insécables sont insérées conformément à la typographie française avant les signes de ponctuation doubles.

    Il ne faut pas appliquer cet embellissement si l'on a utilisé le bouton marqué & : il faudra l'utiliser seulement après.

    La justification des paragraphes m'est également utile pour mettre en forme le texte des commentaires de Calibre. Je l'ai donc ajoutée aussi.

    On pourrait aussi prévoir une prévisualisation avec LazRichView, mais le code pour convertir des textes à balises en RichView est en partie à écrire. Et en plus je me méfie du WYSIWYG.

    PS : Quelqu'un peut-il m'expliquer pourquoi quand j'écris (je reconnais que ce n'est pas joli-joli, mais enfin…) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    procedure TForm1.html(Sender: Tobject);
    begin
       if Sender = ita then Memo1.SelText:='<i>' + Memo1.SelText + '</i>' else
       if Sender = gras then Memo1.SelText:='<b>' + Memo1.SelText + '</b>' else
       if Sender = souli then Memo1.SelText:='<u>' + Memo1.SelText + '</u>' else
       if Sender =raye then Memo1.SelText:='<strike>' + Memo1.SelText + '</strike>' else
       if Sender =raye1 then Memo1.SelText:='<del>' + Memo1.SelText + '</del>' else
       if Sender =exp then Memo1.SelText:='<sup>' + Memo1.SelText + '</sup>'else
       if Sender = ind then Memo1.SelText:='<sub>' + Memo1.SelText + '</sub>';
       if Sender = gauche then Memo1.SelText:='<p align="left">' + Memo1.SelText + '</p>';
       if Sender = just then Memo1.SelText:='<p align="justify">' + Memo1.SelText + '</p>';
       if Sender = droit then Memo1.SelText:='<p align="right">' + Memo1.SelText + '</p>';
       if Sender = centre then Memo1.SelText:='<p align="center">' + Memo1.SelText + '</p>';
       Modified := true;
       //Place le curseur à la fin du texte
       Memo1.SelLength := 0;
       Memo1.SelStart:= Length(Memo1.TExt);
       if Sender = tout then Memo1.SelectAll
    end;
    Le bouton "Tout sélectionner" ne fonctionne pas sous Linux ? J'ai dû écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    procedure TForm1.html(Sender: Tobject);
    begin
       if Sender = ita then Memo1.SelText:='<i>' + Memo1.SelText + '</i>' else
       if Sender = gras then Memo1.SelText:='<b>' + Memo1.SelText + '</b>' else
       if Sender = souli then Memo1.SelText:='<u>' + Memo1.SelText + '</u>' else
       if Sender =raye then Memo1.SelText:='<strike>' + Memo1.SelText + '</strike>' else
       if Sender =raye1 then Memo1.SelText:='<del>' + Memo1.SelText + '</del>' else
       if Sender =exp then Memo1.SelText:='<sup>' + Memo1.SelText + '</sup>'else
       if Sender = ind then Memo1.SelText:='<sub>' + Memo1.SelText + '</sub>';
       if Sender = gauche then Memo1.SelText:='<p align="left">' + Memo1.SelText + '</p>';
       if Sender = just then Memo1.SelText:='<p align="justify">' + Memo1.SelText + '</p>';
       if Sender = droit then Memo1.SelText:='<p align="right">' + Memo1.SelText + '</p>';
       if Sender = centre then Memo1.SelText:='<p align="center">' + Memo1.SelText + '</p>';
       Modified := true;
       if Sender = tout then Memo1.SelectAll else
       begin
         //Place le curseur à la fin du texte
         Memo1.SelLength := 0;
         Memo1.SelStart:= Length(Memo1.TExt)
       end
    end;
    Qui est sans doute plus rigoureux, mais pourquoi la sélection ne s'effectue-t-elle pas après la désélection sous Linux ?
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/03/2012, 12h55
  2. [VBA EXCEL]: Savoir si une mise en forme conditionnelle est active
    Par ADONET dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/01/2007, 14h59
  3. Réponses: 6
    Dernier message: 07/08/2006, 11h26
  4. Réponses: 15
    Dernier message: 22/04/2006, 14h59
  5. Sauvegarder une mise en forme dans une RichTextBox
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 29/12/2005, 12h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo