# Création manuelle de types de données

Un type de données peut être défini de deux façons:

- à l'aide de l'utilitaire Créer action. Pour plus de détails sur cet utilitaire, reportez-vous au SAG.dtCrA.mkr.1

- en créant manuellement la définition du type de données.

Pour créer manuellement un type de données, vous devez modifier un fichier de base de données.

Le présent chapitre décrit la procédure de création manuelle.

SAG.CrDT.mkr.2
SAG.CrDT.mkr.3
SAG.CrDT.mkr.4
SAG.CrDT.mkr.7
SAG.CrDT.mkr.11

## Informations connexes :

- Pour une présentation des types de données, reportez-vous au SAG.IntAc.mkr.1.

- Pour plus de détails sur les définitions de types de données, reportez-vous à la page de manuel `dtdtsfile(4)`.

## Pourquoi créer un type de données manuellement ?

La création manuelle d'un type de données permet de tirer parti des possibilités de la syntaxe des définitions de types de données.

Un type de données doit être créé manuellement si vous souhaitez bénéficier des fonctions suivantes:

- type de données associé au chemin

- possibilité d'indiquer les actions (autres qu'Ouvrir et Imprimer) associées au type de données

- multiplicité des critères de noms, modèles et contenus d'un même type de données, par exemple un type de données basé sur des fichiers `*.abc` ou `*.def`

- type de données basé sur des liens

## Critères et attributs d'une définition de type de données

La définition d'un type de données est constituée de deux définitions distinctes de base de données.

- Définition
  `DATA_ATTRIBUTES`

  Elle indique le nom du type de données, l'apparence et le comportement des fichiers de ce type.

- Définition `
  DATA_CRITERIA`

  Elle indique les critères du type de données. Chacune des définitions de critères indique la définition du paramètre `DATA_ATTRIBUTES` à laquelle les critères s'appliquent.

Il doit exister moins une définition de `
DATA_CRITERIA` pour chaque définition de `DATA_ATTRIBUTES`; une définition de `DATA_ATTRIBUTES` peut être associée à plusieurs paramètres `DATA_CRITERIA`.

Vous pouvez, par exemple, créer une définition d'attributs pour fichiers PostScript qui détermine la présentation et le comportement de ces fichiers dans le Gestionnaire de fichiers. Etablissez ensuite deux critères distincts pour le type de données PostScript, l'un basé sur le nom du fichier et l'autre basé sur son contenu.

Pour plus de détails, reportez-vous à la section SAG.CrDT.mkr.11.

## Procédure de création manuelle d'un type de données

La présente section décrit la procédure à suivre pour créer un fichier de configuration de type de données.

### Fichiers de configuration pour types de données

Les fichiers de configuration contenant des définitions de types de données doivent:

- respecter la convention d'appellation nom`.dt`

- figurer sur le chemin de recherche de la base de données qui est, par défaut:

  personnel | RépPersonnel`/.dt/types`
  système | `/etc/dt/appconfig/types/`langue
  intégré | `/usr/dt/appconfig/types/`langue. Il est préférable de ne pas utiliser ce répertoire.

Pour plus de détails sur la modification du chemin, reportez-vous à la section SAG.Datab.mkr.6.

### Définition d'un type de données

1. Ouvrez un fichier de base de données existant ou créez-en un nouveau.

   Pour plus de détails, reportez-vous à la section précédente sag.crdt.mkr.5.

2. Définissez les attributs du type de données à l'aide de la syntaxe:

       DATA_ATTRIBUTES nom_type_données
       {
          ICON         nom_image
          DESCRIPTION  chaîne
          zone_attribut
          zone_attribut
          …
       }

   Où:

   nom_type_données | Nom unique affecté à ce type de données.
   nom_image | Nom de fichier ou chemin d'un fichier d'icône. Utilisez le nom de base du fichier. Par exemple, pour les fichiers d'icônes `image.m.pm` et `image.t.pm`, utilisez `image`.
   zone_attribut | Zone définissant l'apparence ou le comportement d'un type de données.
   chaîne | Chaîne de caractères. Le contenu correspondra à l'aide sur le type de données.

   Reportez-vous à la section sag.crdt.mkr.7.

3. Définissez les critères du type de données à l'aide de la syntaxe:

       DATA_CRITERIA nom_critère
       {
          DATA_ATTRIBUTES_NAME  nom_type_données
          zone_critères
          zone_critères
          …
       }

   Où:

   nom_critères | Nom unique de la définition de ces critères.
   nom_type_données | Nom utilisé dans la définition du paramètre `DATA_ATTRIBUTES`.
   zone_critères | Zone utilisée pour définir les critères d'affectation d'un fichier à un type de données.

   Reportez-vous à la section sag.crdt.mkr.11.

4. Enregistrez le fichier de base de données.

5. Créez les icônes de ce type de données.

   Pour plus de détails, reportez-vous à la section sag.crdt.mkr.8.

6. Au besoin, créez les actions listées dans la zone `ACTIONS` de la définition des attributs.

7. Cliquez deux fois sur Recharger actions dans le groupe d'applications Outils_Bureau pour recharger la base de données.

### Exemple de création

Cet exemple suppose que le système contient une application `xgif`, permettant l'affichage d'images GIF. Ce programme est généralement lancé à l'aide de la commande:

`xgif` nom_fichier

Vous pouvez afficher des images GIF de différentes façons:

- en cliquant deux fois sur un fichier GIF

- en sélectionnant le fichier et l'application dans le menu Objets sélectionnés

  1. Ouvrez un nouveau fichier RépPersonnel`/.dt/types/GifViewer.dt` pour le modifier.

  2. Entrez les définitions des types de données :

         DATA_ATTRIBUTES Gif
         {
            DESCRIPTION           Fichier image Gif.
            ICON                  GifIcon
            ACTIONS               Visualiser
         }
         DATA_CRITERIA Gif_Criteria
         {
            DATA_ATTRIBUTES_NAME  Gif
            NAME_PATTERN          *.gif
         }

  3. Entrez la définition de l'action GifViewer:

         ACTION GifViewer
         {
            EXEC_STRING     xgif %(File)Arg_1"Fichier Gif à visualiser:"
            WINDOW_TYPE     NO_STDIO
            DESCRIPTION     Cliquez deux fois ou posez un fichier\
                            pour lancer l'application.
         }

     La définition ne comportant pas de zone `ICON`, l'action fera appel à l'icône par défaut du système.

  4. Entrez l'action de correspondance suivante pour associer l'action GifViewer à l'action Visualiser figurant dans la définition du type de données. Utilisez la zone `ARG_TYPE` pour limiter cette action aux fichiers de type Gif.

         ACTION Visualiser
         {
            ARG_TYPE    Gif
            TYPE        MAP
            MAP_ACTION  GifViewer
          }

  5. Enregistrez le fichier.

  6. Cliquez deux fois sur Recharger actions dans le groupe d'applications Outils_Bureau pour recharger la base de données.

## Définition des attributs d'un type de données

La définition de `DATA_ATTRIBUTES` indique l'apparence, le comportement et le nom du type de données et permet de préciser:

- l'icône du Gestionnaire de fichiers (zone `ICON`)

- le contenu du menu Sélectionné(s) et son comportement lors d'un double clic (zone `ACTIONS`)

- l'aide sur le type de données (zone `DESCRIPTION
  `)

### Indication de l'image de l'icône associée au type de données

Utilisez la zone `
ICON` pour indiquer l'icône utilisée dans le Gestionnaire de fichiers. Si vous ne l'indiquez pas, ce dernier affichera uniquement un libellé.

Il existe deux types de valeur pour la zone `
ICON`.

- Nom
  de base du fichier:

  Le nom de base du fichier est le nom du fichier contenant l'image de l'icône moins les suffixes de la taille (`l`, `m` et `t`) et du type d'image (`bm` et `pm`). Par exemple, si des fichiers s'appellent `IcôneJeu.m.pm` et `IcôneJeu.t.pm`, utilisez `IcôneJeu`.

  Si vous utilisez un nom de fichier de base, les fichiers d'icône doivent être copiés dans un répertoire figurant sur le chemin de recherche d'icône:

  - icônes personnelles: Rép_Personnel`/.dt/icons`

  - icônes appliquées au système: `/etc/dt/appconfig/icons/`langue

- Chemin de recherche absolu, comprenant le nom complet du fichier:

  Utilisez le chemin absolu uniquement si le fichier d'icône ne figure pas sur le chemin de recherche de l'icône. Par exemple, si le fichier `IcôneJeu.m.pm` se trouve dans le répertoire `/doc/projects`, qui ne figure pas sur le chemin de recherche, la valeur de la zone `ICON` sera `/doc/projects/IcôneJeu.m.pm`.

Le SAG.CrDT.mkr.9 répertorie les tailles d'icônes à créer et les noms de fichiers correspondants.

### Noms et tailles des icônes de types de données

`Taille en pixels` | `Nom du bitmap` | `Nom du pixmap`
48 x 48 | nom`.l.bm` | nom`.l.pm`
32 x 32 | nom`.m.bm` | nom`.m.pm`
16 x 16 | nom`.t.bm` | nom`.t.pm`

### Association de types de données
avec des actions

Les types de données peuvent être associés à des actions de deux manières:

- La zone `
  ACTIONS` figurant dans la définition du paramètre `DATA_ATTRIBUTES` répertorie les actions qui apparaîtront dans le menu Objets sélectionnés du Gestionnaire de fichiers. La première action de la liste est l'action par défaut (double clic).

- Il est possible de limiter les actions aux types de données indiqués à l'aide de la zone `
  ARG_TYPE` figurant dans la définition de l'action.

La définition suivante, par exemple, crée un type de données concernant les fichiers “readme créés par l'administrateur système à l'aide de la convention d'appellation `*.rm`.

    DATA_ATTRIBUTES FichierSysReadme
    {
       ICON                  SysReadMe
       ACTIONS               Ouvrir,Répondre
    }

    DATA_CRITERIA CritèresFichierSysReadme
    {
       NAME_PATTERN          *.rm
       DATA_ATTRIBUTES_NAME  FichierSysReadme
    }

Une action de réponse est définie ci-dessous pour le fichier. Elle permet d'ouvrir une copie modifiable du fichier dans l'Editeur de texte. Une fois le fichier sauvegardé et l'Editeur de texte fermé, le fichier est transmis à l'administrateur système (adresse `sysadmin@utd`).

    ACTION Répondre
    {
       ARG_TYPE     FichierSysReadme
       EXEC_STRING  /bin/sh -c 'cp %Arg_1% $HOME/readme.temp;\
                    chmod +w $HOME/readme.temp; \
                    dtpad $HOME/readme.temp; \
                    cat $HOME/readme.temp | \
                    /usr/bin/mailx sysadmin@utd; \
                    rm $HOME/readme.temp'
       WINDOW_TYPE  NO_STDIO
    }

### Masquage des fichiers en fonction du type de données

Si le type de données d'un fichier est invisible, ce dernier n'apparaît pas dans le Gestionnaire de fichiers.

Utilisez la zone `PROPERTIES` figurant dans la définition de `DATA_ATTRIBUTES` pour cacher les icônes de ce type:

    PROPERTIES invisible

### Comportement d'un fichier manipulé

Les zones `DATA_ATTRIBUTES` suivantes sont utilisées principalement par les programmeurs système. Elles indiquent le comportement des fichiers lorsque l'utilisateur exécute certaines tâches.

Pour plus de détails, reportez-vous au manuel Common Desktop Environment Programmer's Guide.

Zone | Description
`MOVE_TO_ACTION` | Concerne les conteneurs tels que les répertoires. Cette zone indique une action qui doit être exécutée lors du transfert d'un fichier vers un conteneur de ce type.
`C OPY_TO_ACTION` | Concerne les conteneurs tels que les répertoires. Cette zone indique une action qui doit être exécutée lors de la copie d'un fichier dans un conteneur de ce type.
`LINK_TO_ACTION` | Cette zone indique une action qui doit être exécutée lors de l'association d'un fichier à un autre fichier de ce type.
`IS_TEXT` | Indique que les fichiers de ce type contiennent du texte affichable dans une boîte de message.
`MEDIA` | Indique le type de support ToolTalk correspondant.
`MIME_TYPE` | Indique le type MIME correspondant.
`X400_TYPE` | Indique le type X400 correspondant.

## Définition des critères d'un type de données

La définition du paramètre `
DATA_CRITERIA` indique les critères utilisés pour affecter un type d'objet à un fichier ou à un répertoire.

Vous pouvez utiliser les critères ci-dessous pour indiquer les types d'objets.

Critères | Description
Nom de fichier | Il doit correspondre à un modèle donné. Utilisez la zone `NAME_PATTERN`.
Emplacement du fichier | Le chemin doit correspondre à un modèle donné. Utilisez la zone `PATH_PATTERN`.
Contenu du fichier | Une partie donnée du contenu du fichier doit correspondre à des données spécifiques. Utilisez la zone `CONTENT`.
Mode du fichier | Le fichier doit disposer des autorisations spécifiées (accès en lecture et écriture, exécutable et répertoire). Utilisez la zone `MODE`.
Liens symboliques | Le type est basé sur le fichier auquel l'objet est lié.

Un type de données accepte pusieurs critères. Il est cependant préférable de ne pas utiliser les critères `NAME_PATTERN` et `PATH_PATTERN` pour un même type.

### Types de données basés sur le nom

Utilisez la zone `NAME_PATTERN` pour indiquer les exigences de l'appellation. Les caractères génériques suivants sont acceptés:

? | Remplace tout caractère.
* | Remplace une séquence de caractères (pouvant être une chaîne nulle).
[cc…] | Remplace le(s) caractère(s) (c) entre crochets.
[c−c] | Remplace le(s) caractère(s) compris entre c et c.

#### Exemples

- La définition suivante crée un type de données basé sur le nom du fichier. Ce nom doit commencer par `QS` et se terminer par `.doc`.

      DATA_ATTRIBUTES Doc_QS
      {
         DESCRIPTION  Ce fichier contient un document pour le projet QS
         ICON         Word_Doc
         ACTIONS      Ouvrir
      }

      DATA_CRITERIA CritèresDoc_QS
      {
         NAME_PATTERN          QS*.doc
         DATA_ATTRIBUTES_NAME  Doc_QS }

- La définition suivante crée un type de données pour les répertoires portant le nom `Demo_`n où n correspond à un chiffre compris entre 0 et 9.

      DATA_ATTRIBUTES Répertoire_Demo
      {
         DESCRIPTION  Ceci est un répertoire. Cliquez deux fois\
                      dessus pour l'ouvrir.
         ICON         Demo
         ACTIONS      OpenInPlace,OpenNewView
      }
      DATA_CRITERIA Critères_répertoire_Demo
      {
         NAME_PATTERN          Demo_[0-9]
         MODE                  d
         DATA_ATTRIBUTES_NAME  Répertoire_Demo}

### Types de données basés sur l'emplacement

Utilisez la zone `
PATH_PATTERN` pour indiquer le chemin. Vous pouvez utiliser les mêmes caractères génériques que pour le critère `NAME_PATTERN`.

Par exemple, le type de données suivant fait appel à un critère basé sur le chemin.

    DATA_ATTRIBUTES Graphique_projet
    {
       DESCRIPTION   Fichier graphique pour le projet QS. Cliquez \
                     deux fois sur l'icône pour voir le graphique.
       ICON          QSgraphics
    }

    DATA_CRITERIA Critères_graphique_projet
    {
       DATA_ATTRIBUTES_NAME   Graphique_projet
       PATH_PATTERN           */projects/QS/graphics/*
    }

### Types de données basés sur le nom et l'emplacement

Pour créer un type de données basé à la fois sur le nom et sur l'emplacement, ajoutez le nom à la valeur `PATH_PATTERN`. Vous ne pouvez pas utiliser à la fois `NAME_PATTERN` et `PATH_PATTERN` pour le même critère de définition.

#### Exemples

- Le type de données QS_Source_Files défini ci-dessous s'applique à tous les fichiers `app` n`.c`, où n est un chiffre compris entre 1 et 9, situé dans des sous- répertoires de `*/projects/QS`.

      DATA_ATTRIBUTES Fichiers_source_QS
      {
         …
      }
      DATA_CRITERIA Critères_fichiers_source_QS
      {
         PATH_PATTERN          */projects/QS/*/app[1-9].c
         DATA_ATTRIBUTES_NAME  Fichiers_source_QS
      }

- Le type de données suivant s'applique à tous les fichiers du répertoire `/doc/project1` dont le nom est `ch` nn.xxx où n est un chiffre compris entre 0 et 9, et xxx est une extension à trois caractères.

      DATA_ATTRIBUTES Fichiers_chapitre
      {
         DESCRIPTION  Chapitre du projet.
         ICON         chapter
         ACTIONS      Editer,Imprimer
      }
      DATA_CRITERIA Critères_chapitre
      {
         PATH_PATTERN           /doc/project1/ch[0-9][0-9].???
         DATA_ATTRIBUTES_NAME   Fichiers_chapitre
      }

### Utilisation des modes de fichiers comme critères

Utilisez la zone `
MODE` pour indiquer les autorisations requises.

Les critères de mode sont généralement associés à un type de données basé sur le nom, l'emplacement ou le contenu des fichers. Ils permettent de limiter un type de données à un fichier ou à un répertoire, ou d'indiquer l'autorisation de lecture, d'écriture ou d'exécution requise.

La zone `MODE` peut comporter les caractères ou les opérateurs logiques suivants:

Opérateur | Description
! | Opérateur logique NOT
& | Opérateur logique AND
| | Opérateur logique OR

Caractère | Description
f | Type de données s'appliquant uniquement aux fichiers.
d | Type de données s'appliquant uniquement aux répertoires.
r | Fichier lisible par un utilisateur quelconque.
w | Fichier accessible en écriture par un utilisateur quelconque.
x | Le fichier est exécutable par un utilisateur quelconque.
l | Le fichier est un lien.
`u` | The file is set-uid
`g` | The file is set-gid

Par défaut, le mode n'est pas supporté.

#### Exemples

- Les zones suivantes limitent le type de données à la description correspondante:

  f&!w | Fichiers accessibles en mode Lecture seulement
  !w | Fichiers et répertoires accessibles en mode Lecture seulement
  f&x | Fichiers exécutables
  f&w&x | Fichiers accessibles en modes Lecture et Exécution
  x|!w | Fichiers exécutables ou accessibles en mode Lecture seulement

- La définition suivante crée un type de données pour les fichiers non-exécutables accessibles en lecture seule dont le nom respecte la convention d'appellation `*.doc`. Cette définition suppose qu'une action Visualiser a été définie pour ce type de données.

      DATA_ATTRIBUTES Document_lecture_seule
      {
         ICON         read_only
         DESCRIPTION  Ce document n'est pas modifiable. \
                      Cliquez deux fois pour ouvrir une \
                      copie accessible en lecture seule \
                      dans l'éditeur.
      ACTIONS         Visualiser
      }
      DATA_CRITERIA Critères_document_lecture_seule
      {
         NAME_PATTERN          *.doc
         MODE                  !d&!x&!w
         DATA_ATTRIBUTES_NAME  Document_lecture_seule
      }

### Type de données basé sur le contenu

Utilisez la zone `
CONTENT` pour indiquer un type de données basé sur le contenu du fichier. Un tel type de données peut être utilisé avec des types de données basés sur le nom ou sur l'emplacement.

Le type peut dépendre d'une chaîne ou de chiffres contenus dans le fichier. Le premier octet du fichier porte le numéro 0.

- Pour une chaîne, utilisez la syntax:

      CONTENT octet_début string chaîne

- Pour des chiffres, utilisez la syntaxe:

      CONTENT octet_début byte numéro
       CONTENT octet_début short numéro
       CONTENT octet_début long numéro

- Pour le contenu d'un répertoire, utilisez la syntaxe :

      CONTENT 0 filename “nom_fichier

  Utilisez la notation C standard pour la numérotation octale (0 de tête) et hexadécimale (0X de tête).

L'utilisation d'un type de données basé sur le contenu peut provoquer un ralentissement des performances du système. Utilisez de préférence un type basé sur le nom ou sur l'emplacement.

Par exemple, le type de données suivant, Wingz_modifiable, s'applique à tous les fichiers accessibles en écriture et contenant la chaîne `WNGZ` en début de fichier.

    DATA_ATTRIBUTES Wingz_modifiable
    {
       …
    }

    DATA_CRITERIA Critères_Wingz_modifiable
    {
       CONTENT               0 string WNGZ
       MODE                  w&!d
       DATA_ATTRIBUTES_NAME  Wingz_modifiable
    }

### Création d'un type de données à l'aide de plusieurs critères indépendants

Vous pouvez créer un type de données à l'aide de plusieurs critères indépendants, c'est-à-dire que le fichier est affecté à un type de données s'il répond à l'un des critères suivants (ou au deux).

1. Créez la définition du paramètre `DATA_ATTRIBUTES` du type de données.

2. Créez une définition de `
   DATA_CRITERIA` pour chaque critère.

   Utilisez la zone `DATA_ATTRIBUTES_NAME` pour associer chacun des critères à une définition de `DATA_ATTRIBUTES` unique.

Par exemple, les définitions suivantes permettent de créer le type de données Mif. Le type est basé sur le nom et le contenu.

    DATA_ATTRIBUTES Mif
    {
       ICON         Frame
       ACTION_LIST  Ouvrir,Imprimer
    }

    DATA_CRITERIA Critères_Nom_Mif
    {
       DATA_ATTRIBUTES_NAME  Mif
       NAME_PATTERN          *.mif
    }

    DATA_CRITERIA Critères_Contenu_Mif
    {
       DATA_ATTRIBUTES_NAME  Mif
       CONTENT               1 string MIFFile
    }

## Création de types de données adaptés au pays

Le chemin de recherche de types de données comporte des emplacements liés à la langue utilisée. Le Bureau utilise la valeur de
la variable LANG pour déterminer les emplacements des définitions de types de données.

### Emplacements des types de données adaptés au pays

Les définitions de ces types de données doivent figurer dans les répertoires correspondant à la langue, sur le chemin de recherche des actions.

Le chemin par défaut est:

- Actions personnelles: RépPersonnel`/.dt/types`

- Actions système: `/etc/dt/appconfig/types/`langue

- Actions intégrées: `/usr/dt/appconfig/types/`langue

### Adaptation d'un type de données

1. Créez un fichier dans le répertoire correspondant à la langue (par exemple, dans `/etc/dt/appconfig/types/japanese` ).

2. Copiez la définition du type de données dans le fichier de configuration lié à la langue.

3. Adaptez les zones de la définition de ce type de données.