Les services

Pour faciliter l'utilisation du système, certains programmes offrent des services aux autres programmes.

Par exemple, vous êtes dans un programme, et vous avez sélectionné un texte avec la souris. Si vous voulez envoyer ce texte à quelqu'un. Normalement vous devez copier le texte, lancer Mail, créer un nouveau message, puis coller le texte dedans.

Avec NeXTSTEP il suffit, sans sortir du programme, de choisir dans le menu Services le choix "Mail/Sélection". Et le programme Mail est automatiquement lancé et un nouveau message est créé avec le texte sélectionné. Il ne reste plus qu'à compléter le message avant de l'envoyer :

Les services offerts sont de tous types et dépendent de ce qui est délectionné.

Pour du texte :

  • Si l'on veut le sauvegarder dans un fichier, on utilise "Edit/Enregistrer la sélection" (service fourni par Edit).
  • Si l'on veut remplacer ce qui est sélectionné par le contenu d'un fichier, on utilise "Edit/Remplacer la sélection" (service fourni par Edit).
  • Si c'est un mot, on peut rechercher sa définition dans le dictionnaire par "Define in Webster" (service fourni par Webster), ou dans l'aide en ligne par "Librarian/Search" (service fourni par Digital Librarian), ou dans les en-têtes Objective-C par "HeaderViewer/Find" (service fourni par HeaderViewer)...
  • Si le texte sélectionné est une URL, on peut l'ouvrir par "OmniWeb/Open URL" (service fourni par OmniWeb).
  • Si le texte sélectionné est le chemin d'accès d'un fichier, on peut l'ouvrir par "Ouvrir dans le Workspace", ce qui est équivalent à cliquer sur l'icône du fichier (service fourni par le Workspace Manager).
  • etc.

Pour un fichier :

  • Si l'on veut l'envoyer par email, on choisit "Mail/Fichier" (service fourni par Edit).
  • Si c'est un programme que l'on veut lancer avec les droits de super-utilisateur, on choisit "Open Sesame/Open as Root" (service fourni par Open Sesame).
  • Si c'est un fichier de son venant d'une autre plateforme et que l'on souhaite le convertir en un son au format snd, on utilise "Convert in GISO" (service fourni par le GISO).
  • Si on a choisit deux fichiers texte et que l'on souhaite les comparer pour trouver les différences, on utilise "Compare File" (service fourni par le File Merge).
  • etc.

En fait les données acceptées en entrée des services et en sortie sont tous les types classiques : texte, fichier, son, image... Les service fournis dépendent de tous les programmes qui ont été installés.

Par le programme Preferences il est possible de choisir dans tous les services proposés ceux que l'on souhaite activer ou désactiver :

Les filtres

Il existe des programmes qui ne font qu'offrir des services au système pour étendre des fonctionnalités déjà présentes. Ce sont généralement des filtres. Ils traitent des données en entrée et fournissent d'autres données en sortie. Ces programmes, comme les applications classiques sont des wrappers. Voici un exemple :

Certaines applications en plus d'être des programmes "normaux" peuvent aussi fournir des filtres.

Contrairement aux menu services, les filtres s'intègrent de façon transparente au système. Si l'on ne le sait pas, on ne peut deviner leurs présences.

Par exemple dans le menu Impression de chaque application, on a un bouton Enregistrer pour imprimer le code PostScript dans un fichier. Le service LighthouseDistiller ajoute un filtre pour imprimer au format PDF (Portable Document Format) :

Lorsque l'on choisit la nouvelle option ajoutée par le service, la sortie PostScript du programme, au lieu d'être directement stockée dans le fichier, est envoyée au filtre qui fait son traitement (conversion PS vers PDF), et le résultat est alors enregistrée.

Il existe de nombreux types de services possibles. Certains filtres peuvent convertir des images, des sons, des textes... D'autres ajoutent des formats d'impression, de nouveaux correcteurs orthographiques...

Un des services le plus utilisé est la conversion d'images. Par exemple, de base Edit ne sait gérer que les images TIFF et EPS, mais grâce à des filtres comme OmniImageFilter ou ToyViewer, il sait aussi lire et afficher les images JPEG, BMP... Et ceci y compris dans le glisse/déplacer pour ajouter une image dans un fichier RTF. Ceci a été appliqué avec une image JPEG dans l'exemple avec Edit: