Présentation
Documentation
L'équipe
Sérialisation
 
Programmes
Objets
Libs Utilitaires
Libs Internes
   
 
Editeur
Syntaxes
Windows
Versions
   

SCR/AL1 - TOME III. Les librairies utilitaires

12. Le groupe s_mmt

MMT signifie "Mini Multi-Text" : il s'agit d'un éditeur de texte basé sur les fonctions de MT - décrit par ailleurs -, mais qui offre la possibilité de s'intégrer dans une application SCR/AL1.

Un éditeur indépendant -mmt- est construit sur base de ce groupe de fonctions. Il a notamment l'avantage d'être de taille restreinte et d'exploiter la mémoire étendue éventuellement disponible via le groupe s_swap.

Les champs de type EDITOR des PAGES exploitent également les fonctions du groupe s_mmt.

Principe

Pour exploiter les fonctions décrites ci-dessous, il faut avant tout créer une structure MMT à l'aide de la fonction MMT_create(). Cette structure contient des informations comme la position de la fenêtre dans l'écran, sa taille, le type de BOX, le titre et bien-entendu le texte à éditer.

La fonction MMT_set_title() permet de modifier à tout moment le titre de la fenêtre.

Ce texte est géré en interne sous forme d'une liste de strings alloués en SWAP à l'aide des fonctions de la librairie s_lst. Il peut être changé à tout moment par l'une des fonctions MMT_set_lst() ou MMT_set_vec(). Cette dernière transmet un vecteur contenant les lignes et des NEWLINE comme séparateurs de lignes.

La valeur du texte courant (après édition éventuelle) est obtenue par une des fonctions MMT_get_lst() ou MMT_get_vec(). Dans ce dernier cas, un string est alloué en mémoire conventionnelle avec comme séparateur de lignes le caractère NEWLINE.

Une fois la structure MMT créée et le texte assigné, l'édition peut avoir lieu. Pour ce faire, la méthode la plus simple est d'utiliser la fonction MMT_edit_window(). Celle-ci peut être remplacée par un appel à SCR_save_image(), suivi de MMT_display(), de MMT_edit() et de SCR_display_image().

Enfin, des fonctions d'édition complètes sont intégrées dans la librairie : il s'agit de MMT_edit_line() et MMT_edit_file() qui édite respectivement un champ en limitant le nombre de lignes et de colonnes et un fichier, en permettant d'en charger d'autres en cours d'édition.

Fonctions d'édition

Les fonctions exploitables en cours d'édition sont celles de MT : les touches ALT-x remplissent la majorité des fonctions d'édition. L'utilisateur peut cependant décider d'ajouter ou de supprimer des touches-fonctions, ou encore de les déplacer en passant un paramètre à la fonction MMT_create().

Ce paramètre contient la définition des touches modifiées sous forme d'un tableau de structures à deux entrées MMTFN :

typedef struct _mmtfn_ {
int key; /* touche fonction */
int (*fn)(); /* fonction à exécuter ou pointeur nul */
} MMTFN;

Par exemple, pour l'édition d'un fichier, la fonction MMT_edit_file() utilise le tableau suivant :

MMTFN MMT_FILE_FNS[] = {
SCR_ESCAPE, 0L,
SCR_A_E, ED_quit,
SCR_F4, ED_quit,
SCR_A_W, ED_write_file,
SCR_A_Z, 0L,
0, 0
};

Celui-ci indique que la touche ESCAPE n'a pas d'effet, Alt_E et ALT_F4 quittent l'édition par l'appel à ED_quit(), ALT_W appelle la fonction ED_write_file() et ALT_Z n'a pas d'effet (normalement Zoom).

Le tableau de touches utilisateur doit se terminer par une structure nulle.

Une série de fonctions sont définies dans <s_mmt.h>. Elles peuvent être utilisée dans ce cadre. La syntaxe de ces fonctions est toujours identique :

    int     fn();

Si la fonction retourne 0, l'édition continue, sinon l'édition s'arrête. Ainsi, la fonction ED_quit() retourne toujours -1, ce qui quitte automatiquement l'édition.

Les fonctions et touches associées définies par défaut sont :

    TOUCHE          | FONCTION
----------------|---------------
SCR_CSR_LEFT | ED_left,
SCR_CSR_RIGHT | ED_right,
SCR_CSR_UP | ED_up,
SCR_CSR_DOWN | ED_down,
SCR_CSR_HOME | ED_home,
SCR_CSR_END | ED_end,
SCR_CSR_PG_UP | ED_pgup,
SCR_CSR_PG_DN | ED_pgdn,
SCR_C_CSR_HOME | ED_c_home,
SCR_C_CSR_END | ED_c_end,
SCR_TAB | ED_tab,
SCR_INSERT | ED_mode_insert,
SCR_DELETE | ED_delete_ch,
SCR_BACKSPACE | ED_backspace,
SCR_ENTER | ED_enter,
SCR_A_B | ED_mark_block,
SCR_A_C | ED_copy,
SCR_A_D | ED_delete,
SCR_A_E | ED_quit,
SCR_A_I | ED_insert,
SCR_A_J | ED_join,
SCR_A_K | ED_kill,
SCR_A_L | ED_mark_line,
SCR_A_M | ED_move,
SCR_A_N | ED_new,
SCR_A_O | ED_overlay,
SCR_A_Q | ED_quit,
SCR_A_T | ED_mark_text,
SCR_A_U | ED_unmark,
SCR_A_Z | ED_zoom,
SCR_C_D | ED_delete_ch,
SCR_C_K | ED_del_eol,
SCR_C_U | ED_del_bol,
SCR_A_Y | ED_buf_set,
SCR_A_P | ED_buf_paste

Liste de fonctions de la librairie s_mmt

12.1 MMT_create (file s_mmtcr.c:49)

12.2 MMT_set_title (file s_mmtcr.c:107)

12.3 MMT_free (file s_mmtcr.c:128)

12.4 MMT_set_lst (file s_mmtcr.c:151)

12.5 MMT_get_lst (file s_mmtcr.c:177)

12.6 MMT_set_vec (file s_mmtcr.c:192)

12.7 MMT_get_vec (file s_mmtcr.c:227)

12.8 MMT_display_vec (file s_mmtcr.c:209)

12.9 MMT_display (file s_mmtcr.c:237)

12.10 MMT_edit (file s_mmtcr.c:254)

12.11 MMT_edit_window (file s_mmtcr.c:269)

12.12 MMT_edit_line (file s_mmtcr.c:384)

12.13 MMT_edit_file (file s_mmtcr.c:571)

12.14 MMT_show_file (file s_mmtcr.c:589)

12.15 MMT_set_pos_attr (file s_mmtcr.c:660)

Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be