maj 14/02/02 

--------------------------------------------------------------------------------
## 08/03/2008


Crer des fontes au sens de Tk
 font create steadTextFont  TkFixedFont
steadMenuFont
steadHeadingFont

Refonte de la gestion des fontes

  font configure TkDefaultFont -family LucidaTypewriter
  font configure TkDefaultFont -family LucidaTypewriter -size 12 -weight bold
  
The following named fonts are supported on all systems, and default to values that match appropriate system defaults.

TkDefaultFont
    This font is the default for all GUI items not otherwise specified.
TkTextFont
    This font should be used for user text in entry widgets, listboxes etc.
TkFixedFont
    This font is the standard fixed-width font.
TkMenuFont
    This font is used for menu items.
TkHeadingFont
    This font should be used for column headings in lists and tables.
TkCaptionFont
    This font should be used for window and dialog caption bars.
TkSmallCaptionFont
    This font should be used for captions on contained windows or tool dialogs.
TkIconFont
    This font should be used for icon captions.
TkTooltipFont
    This font should be used for tooltip windows (transient information windows).

It is not advised to change these fonts, as they may be modified by Tk itself in response to system changes. Instead, make a copy of the font and modify that.



--------------------------------------------------------------------------------
## xx/xx/2007


JE CHERCHE UN RACCOURCI (emacs si possible) pour effectuer un wrapping 
les lignes trop longues :
- tait fait par <Meta-Equal>
- depuis que <Meta-Equal> est rserv  l'augmentation de la taille de fonte, 
  j'utilise <Meta-;> pour le wrapping,
  Mais a ne me plais pas !
--------------------------------------------------------------------------------
## 14/03/2007

Voir une mini doc avec des exemples d'utilisation des macros de haut niveau

    ra :  xtext_replaceAll $w
    rs :  xtext_replaceInSel $w
    aa :  xtext_applyToAll $w args
    as :  xtext_applyToSel $w args
    ta :  xtext_transcodeAll $w
    ts :  xtext_transcodeSel $w

Exemples :
    ta utf2iso
    ta iso2utf

------------------------------------------------------------------------
## 11/01/2007

- Dvelopper au maximum le mode ruby (comme Tcl et Latex runi)
- maintenir les modes principaux : Tcl, Latex=ConTeXt, Ruby et Make (car 
  simplicime, donc peut servir de proto)
- Rechechir  la refonte complte de stead en Ruby 
    - faire un diter simpliste en Ruby/Tk, mais organis pour tre tendu
    - Implmenter les fonctionnalits les plus importante pour un diteur
      basique
    - crer un classe TkXText hritant de TkText (version ruby du canvas Tk)
      (contenant l'quivalent de xtext.tcl et de xtext_proc.tcl)
    - rester mono-proces, (car hyper robuste) mais activer une communication
      via socket


------------------------------------------------------------------------
(Ce qui suit est vieux
## BUG Important URGENT

- BUG copie-coll en mode GVT :  
    - si caps-locks n'est pas enfonc, le coll inverse la casse du 
      presse-papier 
      Solutions possibles ?
        - ne modifier la casse que si inserion d'une seul caractere
        - prvoir option -switchcase 1|0  alias -sc pour inhiber
          cette fonctionnalit
      
  
- BUG recherche-remplacement 
    si recherche de caracteres spciaux en mode exact (alors que ca
    marche par la macro "ra" 
  
- BUG recherche-remplacement

    - tres lent pour un replaceAll sur un gros fichier : c'est pas
      normal (1.5 Moctet avec une modif pour chaque ligne) ! 

## BUG mineurs

- bug dans "inserer prefix apres indentation" (mise en commentaire)
  si une des lignes a une indentation plus court que la premiere :
  elle ne sera pas commente.
  
- bug lger (pour diam) : en mode mail, il y a incohrence entre le
  nombre de caracteres par ligne pour l'autobreak de ligne, et la valeur
  utiliser par le menu "Fill sel" 

## Amlioration faciles

- binding <Escape-x>   => ligne de commande TCL
- binding <Escape-X>   => shell TCL
  actuellement <Meta-t-t> et <Meta-t-y>, mais confilt avec le mode latex

- binding <Controle-c><...>   => gestion de la compilation latex

- binding <Control-u>  
  actuellement, permet de multipier par 4 la prochaine action
  Par exemple, 
    - pour insrer 64 caracteres "="
        <Control-u><Control-u><Control-u><equal>
    - pour copier 16 fois le presse-papier 
         <Control-u><Control-u><Control-u><Meta-v>

   A faire : 
    - si pas de slection : conserver le meme comportement
    - s'il y a une slection : dpend du caractere suivant
        si c'est un caractere de type parenthese, crochet accolade, 
        ou slash => encadrer la slection par 
            (...); [...], {...}, /*...*/
        et slectionner l'ensemble.
        Ceci permet de remplacer "important" par "***important***"
        ou "___important___"
        en :
            - slectionner de la mot important,
            - <Controle-u>*<Controle-u>*<Controle-u>*
            - touche<Right> pour se repositionner en fin de slection.
            

- ajouter une option -w au lancement de stead pour imposer la largeur
  du widget text :
        stead -w 132 monfichier.32.list          
        
   
------------------------------------------------------------------------
## Gros morceau  finir avant annonce officielle

- finir la reprise des homogeneisation des modes 
  en nettoyage les alias pour exploiter ma nouvelle syntaxe

- revoir le menu dynamique (gros nettoyage)

- rendre les modes auto-loadable => integrer un principe de 
  constructeur/destructeur par deux procdure "standard"

- vrifier entirement l'homognit des noms des proc...
  et finir le nettage des globales

- crer la gestion de preferences

- Creer les bindings pour la classe XEntry 
  (meme orientation que pour XText mais en plus simple : 
    - undo simplifi,
    - copi-coll.
    - duplication de la slection
    - essayer de rendre la slection NON exportable pour
      permettre qu'une zone de dialogue puisse prselectionner
      l'ancien contenu SANS dslectionner le contenu de stead
      
  S'inspirer de la classe XText pour l'organisation en 
  - crant un nouveau fichier xentry.tcl (dans rpertoire xtext)
  - crer un classe XEntry

## moins urgent

- crer le browser html en mergeant hview de Jean-Luc  on le basant
  sur le nouveau package de la tcllib
  
  Mettre  jour le readme et le squelette de la doc
  Mettre  jour page web


## ==> FIN DE LA MISE A JOUR POUR UNIX  

        => Faire install/annonce officielle :
        - A l'ENSTA
        - puis sur le groupe fr.comp.lang.tcl

    
------------------------------------------------------------------------
## MODIFICATION

- Crer xtext_apply ?-all | -sel?  cmdargs

    Fusionner les deux procedures xtext_applyToSel et xtext_applyToAll
     avec option -all ou -sel (-sel par dfaut)


- gnralisaer l'utilisation de xtext_applyToAll pour modifier
  le texte complet 
  
- Refaire les proc de conversion en se basant sur xtext_transcode
  (rajouter les options ncessaires)
  
- modif API :
    [xtext_getSel] $w  
        doit retourner {} si **plus** de slection
    [xtext_getSel $w -old]  
        retourne le buffer oldSel si **plus** de slection
    
- ne plus utiliser la prfrence EDITPREFS(savestate)
  En cas de besoin  l'avenir : on construira dynamiquement l'tat !

- Nettoyer les proc de manipulation de la selection rectangulaire
  et le renommer d'une maniere standard pour TOUTE manip
  sur le selection et le clipboard
  
- Gestion des fontes (et changement dynamique de la taille):
    - crr une pref fontSpec pour dfinir globalement toutes
      les fontes utilises dans l'diteur
          set EDITPREF(fontSpec) {
              text {-family ~lucidatypewriter  -size 12 -style norma}
              menubutton {....}
              menu {...}
              entry {...} 
          }
    - crer un proc stead:applyFontConfig {w} {...}
    - crer une proc stead:resizeFont {w scale}
        qui incrmente ou dcrmente globalement les fontes en cours 
        et qui modifie les pregference en RAM.
        Il est toujours possible d'utiliser le menu "Config/Save Config"
        pour mmoriser cette nouvelle valeur
    
- Gestion des couleurs : meme chose
    - dfinir une prfrence pour un jeu de couleur
          set EDITPREF(colorSpec) {
              textfg  {...}
              textbg  {...}
              textselbg  {...}
              textselfg  {...}
              textfoundfg  {...}
              textfoundbg  {...}
              texthighlightfg  {...}
              texthighlightbg  {...}
          }
          avec sel, fopund et highlite tant des tab prdfini
    - dfinir une proc pour faire plus ou moins fonc

------------------------------------------------------------------------
Renommage :
-----------

- Parsarg_fullSpec 

    - renommer  Parsarg_fullSpec  en pistarg ou parsarg ou .. ?
    

- renommer toutes les procdure de gestion du undo
    jedit:cmd:save_checkpoint en xtext_SaveState
    (ne pas confondre avec l'ancienne notion de state de jedit qu'il faut vire)

- package de style :
    A renommer sheet.tcl ??
    xtext_sheet $w define tcl {... styleSpec styleSpec ..}
    
    Modif stucture du tableau des style :
    
      xtext_style($w,allSheets)           {tcl html php}
      xtext_style($w,enabledSheets)       {html php}
      xtext_style($w,$sheet,styles)       {scope comment backSlashError ...}
      xtext_style($w,$sheet,$style,-pat)  {\B$}
    
    nom de variable :
    - remplacer styleSet par sheet ou thisSheet
    - remplacer styleName par style (plus tard) ou thisStyle
    
    transformer la fonction refresh en apply et supprimer l'ancienne reply


- remplacer les procedure jedit...hook en :
    - stead:tab
    - stead:tab_pre_hook
    - stead:tab_inside_hook
    - stead:tab_post_hook
  et crer un proc de genre :
    - stead:tryProcIfExists cmd  qui fasse catch 
      et retourne 1 si la proc a t trouve et excute.
    
########################################################################
## Autres modification

- __CONCEPTION__ recherche/remplacement  :

    creer REFONDRE xtext_replace pour remplacer xtext_replaceAll 
    et xtext_replaceInSel
    (bugs potentiels)

    il y a trop de couches : qui doit faire quoi dans ces proc ?? !
        stead:replaceAll => xtext_replaceAll => string_replace
    Ideme pour stead:replaceInSel
    
    Q : QUI doit grer toutes les options
    Ide de guidelines :
        stead:replaceAll indispensable car
            - grer le document courant (quand stead sera multi document)
            - gre l'tat courant de la boite de recherche

        string_replace indispensable car 
            - polyvalente et rutilisable

        xtext_replaceAll :  A REMPLACER PAR  /
        
        xtext_replace w ?-inscope <all | sel | rangeList | tag>
            - gre le undo et le comportement de la slection
            - l'intervale d'action (-range xxx  -sel  -all ...)
            - les modif du curseur
            - ...
            

########################################################################
## NOUVELLE FONCTIONNALITE NON URGENTE (a faire   l'occasion)-

- EXCELLENT ! : A FAIRE (nouvel fonctionnalit) pour viter les risques 
  lors de la  double dition du meme fichier MEMORISE L'INFO
  "stead(lastModifiedDate)" A (apres) chaque sauvegarde, et hurler
  avant la prochaine sauvegarde si celle-ci a changer! 

- A FAIRE : (nouvel fonctionnalit) (Soulignement)
  Rpertition de caractere :
  <Escape><key 5><key -> : insre 5 fois le caractere -
  <Escape><key s><key -> : SOULIGNE avec le caractere -
    i.e. s'arrete au derniere caractere superieur non blanc)

- NOUVELLE FONCTIONNALITE : reprendre l'ouverture d'url en utilisant
  les possibilit multiplateforme proposes par :
    http://mini.net/tcl/557.html
  
  puis :
    .t tag bind myurl <Enter> [list .t configure -cursor hand2]
    .t tag bind myurl <Leave> [list .t configure -cursor {}]
    
- commencer une(s :-)  procdure (et adapter celle qui existent dja):

      xtext_get w ?options...?  
      xtext_find w ?options...?
      
  retournant respectivement une liste de chaines ou d'indice 
  selon de nombreux critres
  

- BALANCE :
    - revoir les procdures de balance pour les rendre utilisables
      indpendament de la global xtext(balance_list)
    - Prvoir un moyen de modifier dynamiquement par l'utilisateur
      les parenthse
    - Crer une structure (liste paires) pour chaque parenthse avec :
            - un nom
            - la spcif :
                    - le type exact, regexp , ..
                    - leftString
                    - rightString
                    - autohighlight
    - implmenter cette stucture (non nouvelle fonctionnalit)
    - implmenter le type regexp
    
#./

