-*-outline-*-

**************************************************
ToutDoux : Chtit gestionnaire de projet - A littl' project manager
Copyright (c) 2000-2001 Philippe Roy
Auteur - Author : Philippe Roy <ph_roy@toutdoux.org>
**************************************************


* 1-fr. Convention des noms
** 1. Rpertoires
** 2. Fichiers standards des greffons
** 3. Types - Objets - Macros - Variables
** 4. Fonctions 
* 2-fr. Paramtrage
** 1. Schma
** 2. Modules
** 3. Symboles
* 4-fr. Protocoles
** 1. Drag'n'Drop en mode Xdnd
* 5-fr. Limites
* 6-fr. Rservations
** 1. mots rservs
** 2. MOD_CORE[i] : module noyaux chargs au dmarrage
* 7-fr. Environnement
** 1. Commandes externes requises
** 2. Commandes externes optionnelles
** 3. Variables 
* 8-fr. Modules inexpoitable


* 1-fr. Convention des noms
 
** 1. Rpertoires

  	- lib				: fonctions communes aux greffons utilisant des donnes communes
  	- app				: application
  	- core-plugins			: greffons noyaux
  	- data-plugins			: greffons pouvant traiter les fichiers
  	- backends			: dorsaux
  	- scripts			: scripts (Shell, Perl, ...)
  	- pixmaps			: images (xpm, xbm)
  	- doc				: documentation (SGML)

** 2. Fichiers standards des greffons

  	- main.c			: donnes et fonctions de base
  	- main.h			: donnes et fonctions de base
  	- icons.h			: icnes
  	- icon_*.xpm			: icne du greffon
  	- share/tables.xml		: schma et paramtrage
  	- share/symbols.xml		: symbles du cavenas
  	- share/en/customize.xml	: personnalisation
  	- share/en/presto.xml		: documentation
  	- share/en/faq.xml		: foire aux questions

** 3. Types - Objets - Macros - Variables
      
	- Td_*				: types : ex. Td_about
	- Td*				: types et objets : ex. TdAbout
	- TD_*(majuscule)		: macros d'objet : ex. TD_ABOUT(...)
	- *(majuscule)			: valeurs communes (lib) : ex. FLAG_DRAG_ROW_OLD

	- TD_CURRENT (champs)		: commandes interne SQL bas sur CURRENT_ROW

** 4. Fonctions 

	- gtdk_*			: fonctions complmentaires aux widgets standards
	- td_*				: fonctions communes sur les objects

	- plugins_about_def		: definition du  propos du greffon
	- plugins_mod_def		: definition gnrale du greffon
	- plugins_init			: initialisation du greffon
	- plugins_destroy		: dtruction du greffon

* 2-fr. Paramtrage

** 1. Schma

	- base de donnes (nom, commentaire)
	- table (nom, commentaire)
	 	- champs (nom, commentaire)
		* td_id : identificateur
		* td_obso : donne obsolte (champs en prvision)
		         - proprites (nom, valeur)
			 * type
			          * bool
				  * int2
				  * int4
				  * int8
				  * numeric(p,s) (TODO)
				  * serial
				  * float4
				  * float8
				  * decimal(p,s) (TODO)
				  * char
				  * char(n)
				  * varchar(n)
				  * text (TODO)
				  * blob (TODO)
				  * enum() (TODO)
				  * set()
				  * time (TODO)
				  * timez (TODO)
				  * date
				  * timestamp (TODO)
				  * timestampz (TODO)
				  * interval
			* type option
				  * unsigned
				  * zero fill
				  * binary
			* constraint
				  * not null
				  * unique
				  * primary key
			* default


** 2. Modules

	- module (nom, nom de paramtrage, commentaire, icone)
		- table (nom, table)
			- champs (nom, champs de la table)
				  - proprites (nom, valeur)
				  * column name
				  * column size
				           * automatic
					   * hidden
				  * column editpropmenu
		- palette
			- proprites (nom, valeur)
			* palette name
			* palette icon
		- tabli
			- proprites (nom, valeur)
			* editprop name
			* editprop visibility
				  * hidden
				  * uneditable
			* editprop list item
			* editprop list query
			* editprop list static query
			* editprop editor
				  * hidden
		- menu

** 3. Symboles (TODO)

	- symbole (nom, requete de visibilit)
		- primitive de dessin (nom, type)
		         - proprites (nom, type, valeur)
		* color
			 * foreground
			 * background
		* pencil
			 * line width
			 * line style
			 * line cap
			 * line join
		* font
			 * font
		* text
			 * text
			 * x
			 * y
		* point
			 * x
			 * y
		* points
			 * x
			 * y
		* line
			 * x
			 * y
			 * x
			 * y
		* lines
			 * x
			 * y
			 * x
			 * y
		* segments
			 * x
			 * y
			 * x
			 * y
		* rectangle
			 * filled
			 * x
			 * y
			 * width
			 * height
		* polygon
			 * filled
			 * x
			 * y
		* arc
			 * filled
			 * x
			 * y
			 * width
			 * height
			 * angle1
			 * angle2

	Les proprits peuvent tre
	      - statique: static
	      - dynamique par requete SQL: query
	      - paramtre: param


* 4-fr. Protocoles

** 1. Drag'n'Drop en mode Xdnd
   
	La donne tampon est une chane de caractre.

		- '\\' spare les lignes
		- la dernire valeur de la ligne reprsente le niveau de la node dans l'arbre 

* 5-fr. Limites

	- champs
	        - 50 champs maxi par table

	- greffons
		- rpertoire : 1 (situation temporaire)
		- chargs : 50

	- dictionnaire des greffons
		- langues : 50
		- mots : 50

	- drag'n'drop en mode Xdnd
		- donnes : 6000

	- menu
	        - fichiers rcents : 10
	        - greffons statiques : 50

	- fichier support XML
	        - 4 niveaux en mode normal (branch, petal, foliole et stomate)
		- pour le momment l'association de "mode_one_column" et de "mode_level" n'existe pas

	- fichier csv
	        - 100 000 caractres maxi par lignes

* 6-fr. Rservations

** 1. mots rservs

	- '(null)'				: valeur nulle
	- '(bud)'				: valeur indfinis
	- '(ok)'				: valeur anonyme
	- '(separator)'				: separateur de menu
	- 'TD_CURRENT [...];'			: commandes interne SQL
	- 'TD_CURRENT (*);'			: commandes interne SQL
	- 'TD_CURRENT (null);'			: commandes interne SQL
	- 'TD_CURRENT [...] WHERE [...];'	: commandes interne SQL
	- 'TD_CURRENT [...] WHERE NOT [...];'	: commandes interne SQL

** 2. MOD_CORE[i] : module noyaux chargs au dmarrage

        -  0 : dialog_messages
        -  1 : communication_url
        -  2 : communication_db
        -  3 : help_customize
        -  4 : help_doc

* 7-fr. Environnement

** 1. Commandes externes requises

  	- 'cp' : copie de fichier
  	- 'sed' : diteur shell

** 2. Commandes externes optionnelles

  	- 'wget' : recuprateur HTTP ou FTP
  	- 'hopla' : lien XML/SQL
  	- 'emacs' : diteur GNU Emacs
  	- 'emacsclient' : diteur GNU Emacs en mode serveur
  	- 'xwininfo' : descripteur de fentres x
  	- 'createdb' : cration de base de donnes PostgreSQL
  	- 'dropdb' : destruction de base de donnes PostgreSQL

** 3. Variables 

  	- 'HOSTNAME' : hte

* 8-fr. Modules inexpoitables

  	- dorsal et frontal 'hupli' : charge plus longue que prvu initialement -> +tards
  	- dorsal et frontal 'hopla' : modification importante du contexte -> +tards
  	- frontal 'emacs': charge plus longue que prvu initialement -> +tards
  	- greffon 'old_file_x' : modification importante du contexte -> +tards
  	- greffon 'rigopo' : module juste initialis
  	- greffon 'tree' : modification importante du contexte -> +tards
  	- greffon 'mindmap' : module juste initialis
