:::::::::::: Plan de modifs pour SOPHYA V 2.0 PI/piapp V 4.0 ::::::::::::

                    ----------------------------
                    |  Gestion du code (Mgr/ ) |
                    ----------------------------

 o Chemins/variables d'environnement 
   - Remplacer DPCDEVREP DPCBASEREP par SOPHYADEVREP et SOPHYABASEREP
   - Remplacer EROSCXX par SOPHYACXX (?)
 o Simplifier/rationaliser les makefiles 
   - Mettre les flags de compils pour chaque compilo-systeme dans un fichier au lieu 
     d'avoir tout Makefile.h 
     Exemple fichier Mgr/linux_g++.flags 
      CPPFLAGS = ...
      CXXFLAGS = ... 
      LIBS = ...

o Mettre un script pour chercher les lib externes (c-fitsio, FFTW, ...) et creer 
  eventuellement l'arborescence ExtLibs

o Inclure la definition des flags influant sur le code (comme -DOSF1/Linux/Darwin/IRIX64
 SO_BOUNDCHECKING a la fin du fichier machdefs.h que l'on fabriquera a partir de du machdef_mkmf.h )
  PB-> ce fichier deviendra alors dependant du systeme et de l'installation !
  Faut-il deplacer alors Include/ sous uname-$EROSCXX (Linux-g++) 
  ou carrement considerer que la separation pour differents systemes doit se faire au 
  niveau de SOPHYADEV/BASE/REP ?

o Abandonner (?) les regles de compilation par defaut 
  Inclure dans les Makefile la ligne de commande :
  $(OBJ)toto.o : toto.cc toto.h titi.h ...
        $(COMPILECXX) -$(CPPFLAGS) $(CXXFLAGS) -c -o $(OBJ)toto.o toto.cc

o Garder les Makefile simple (eviter trop de tests et syntaxe complique)


                    -----------------------------------
                    |   Code/Librairie SOPHYA (V2.0)  |
                    -----------------------------------

o Fichiers PPersist (BaseTools) :
  - Ajouter la possibilite d'ecrire des complex(r_4> complex<r_8>
    (actuellement c'est ecrit sous forme de 2*r_4 ou 2*r_8)
  - Ajouter des tag de positionnement qui pourrait servir au cas 
    ou on utiliserait le fichier PPF comme fichier de swap
    Ces tags ne peuvent pas etre les memes que les name-tag 
    existant actuellement. 
    Une utilisation annexe de ces tags peut etre alors un moyen 
    de verifier que le fichier n'est pas corrompu
    Ce tag se presente alors sous forme de 
    <tag (1 byte)><FilePosition (8 byte, long int)>
    On peut alors parcourir le fichier et verifier la coherence de
    ces tags.
  - Il faut aussi ajouter au niveau de POutPersist et PInPersist
    les services pour ecrire et lire une collection de tag de 
    positionnement, afin qu'un objet puisse utiliser une liste de
    tag pour se positionner

o BaseTools/ Voir autres remarques ds fichier Manual/sophya_afaire.txt
  concernant en particulier les NDataBlock<T> DataBlock<T> ...

o Les tableaux : TArray/ 
  - Ajouter une classe de base abstraite GenericMatrix<T>
    avec methode d'acces aux elements, nb de lignes, nb de colonnes,
    ...
  - Introduire les TinyMatrix  (TinyMatrix<T, int L, int C>)
    avec passage de/vers TMatrix<T> (et TinyVector<T, int N>) ?

  - Introduire des matrices creuses simples SpareMatrix<T>

  - Introduire les DiagonalMatrix<T> 

  Remarque: Les TMatrix TinyMatrix et  SparseMatrix heritent de GenericMatrix

o HiStats
  - Faire une classe SuperNTuple (!), facile a utiliser, sachant swaper sur les 
    PPF, avec des champs de differents type
 
o IFFTW/ 
  - Passage a FFTW 3.x  ?

o Voir autres remarques pour l'ensemble des modules ds Manual/sophya_afaire.txt


                    ---------------------------------
                    | Code/Librairie PI  (->V 4.0)  |
                    ---------------------------------

o Menu contextuel pour les Drawers
  - Ajouter a PIImage, PIScrDrawWdg(2D), PIDraw3DWdg(3D) un menu obtenu 
    sur <Shift><Bouton-1> par exemple, avec la liste de tous les Drawers
    permettant d'afficher la fenetre des options graphiques, ou le fenetre 
    des options ou la fenetre des options texte, activer deplacement/resize
    des drawers, suppression (delete) ou detach des drawers, et en fonction
    du widgets, la fenetre des axes ou de controle d'image

o Mettre l'option auto-scale (rapport entre axes X,Y,Z) pour les Drawers3D 
    verifer/debugger la definition de la boite 3D au niveau des Drawers3D

o Traceur d'histos, NTuples, ...
  Remplacer le trace des lignes par morceau fait par appel multiples
  a DrawLine a un seul appel a DrawPolygon (si les lignes sont connectes
  bien sur) --> Ca ameliore sensiblement l'aspect pour le trace en pointille

o Ajouter un traceur de Bar-chart 2D OU ApplePie (facile !)
  On donne une serie de nombres, serie de couleur, + serie de strings
  et on trace alors une sorte d'histo, avec des barres (rectangles) espaces
   Ou bien on trace un cercle divise en zones 

o Ajouter un traceur de Lego-Plot

o PIImageWindow (Une fenetre avec une PIImage, un Zoom et une vue globale)
  Assemblage

o (?) Une fonction pour faire facilement une fenetre d'alerte ou d'info (?)

                    ---------------------------------
                    |            piapp              |
                    ---------------------------------

o Verifier l'interpreteur et introduire le type de variable vecteur 
  qui peut etre detecte par exemple lors de l'initialisation par set 
  set a 'Bonjour CMV' # -> variable scalaire
  set va [ 12 14 hello ... ] # variable de type vecteur $va[]

o Voir comment on pourrait "joindre" deux objets ayant l'interface NTupleInterface
  pour pouvoir plotter des objets, l'un vs l'autre

o Separer la classe PIACmd en une classe de base (CShellLikeInterpreter) 
  (a mettre ds SysTools) et la classe PIACmd  a laisser ds PIext 

o (???) Introduire quelque chose du style 
  AddDialogue("Cmd", "dialogue-description) 
  qui pourrait fabriquer automatiquement une fenetre avec des champs a remplir 
  pour les commandes usuelles (???)

o Voir les autres commentaires ds Manual/spiapp_afaire.txt



