Age : 54 Inscrit le : 19 Nov 2006 Messages : 2226 Planète : La planète Creuse Matos : Une paire de palourdes, une paire de power mac g4, un pc, une machine à écrire des années 40.
Sujet: Effacer et modifier les éléments du menu Services 6/1/2008, 12:41
Le menu Services accessible par le menu pomme permet d’utiliser des fonctions proposées par certaines applications dans d’autres applications. Par exemple TextEdit permet d’ouvrir un nouveau fichier texte contenant le texte sélectionné dans la fenêtre dans laquelle on travaille, même si cette fenêtre n’est pas TextEdit. Ces services sont accessibles depuis n’importe quelle application si le service proposé peut s’appliquer à la situation. Dans cet exemple, il faut que du texte soit sélectionné pour que le service soit proposé.
Accessible dans toutes les applications… Hum… pas tout à fait. Il faut que l’application soit cocoa. Aucun espoir dans FireFox ou NeoOffice, par exemple.
Beaucoup d’applications proposent des services et le menu finit par être terriblement encombré. Pour rendre ce menu facilement utilisable, on en vient souvent à souhaiter en retirer les éléments qu’on n’utilise jamais, à les regrouper en sous-menus ou à les traduire en français. L’envie de définir ou de redéfinir les raccourcis clavier associés aux services vient ensuite très rapidement parce qu’ils sont souvent malcommodes ou en conflit.
On peut faire toutes ses modifications de façon réversible et très facilement en utilisant Service Scrubber qui est un donationware fait pour ça. Par esprit sportif, on peut aussi préférer faire ces modifications à la main en étudiant la syntaxe xml relativement compréhensible du fichier info.plist contenu dans le paquet des applications.
Si vous éditez ce fichier à la main, souvenez-vous qu’il est contenu dans l’application elle-même et qu’à la prochaine mise à jour ou réinstallation, les modifications seront perdues ! Faites-vous une sauvegarde du fichier une fois mis au point.
On trouvera ce fichier en ouvrant le paquet de l’application par le menu contextuel du Finder Afficher le contenu du paquet : il se trouve directement dans Content/ au premier niveau.
Prenons un exemple avec Unicode Checker qui génère des services qui permettent de traiter une sélection de texte pour, par exemple, transformer les entités en caractères ou inversement dans du code HTML. Peu importe l’application, le principe et la syntaxe sont exactement les mêmes.
Je vous indique un exrait de la version telle que je l’ai modifiée, hors le fait que j’ai simplifié ici avec un seul service (et une ébauche d’un deuxième).
On commence par chercher la partie concernant la déclaration des services. Elle se trouve après <key>NSServices</key> et entre les balises <array> … </array> qui suivent :
<dict> <key>NSMenuItem</key> … service suivant de l’appli … </dict>
</array>
On voit que chaque entrée de menu y est alors défini à la place des … dans
Code:
<dict> <key>NSMenuItem</key> … </dict>
Pour supprimer un service il suffit donc d’effacer la partie qui lui correspond et qu’on identifie sans problème par son intitulé dans le menu, par exemple ici la partie qui contient :
Code:
<string> ◆ HTML ➞ Unicode</string>
On ne s’occupe pas ici des <key>NSPortName</key> qui définissent à qui le service doit s’adresser (ici UnicodeChecker est indiqué) ou autres <key>NSReturnTypes</key> qui définissent comment les données doivent être envoyées à l’appli et reçues en retour. Il ne faut évidemment rien modifier là-dedans. Par contre si on veut réorganiser ou traduire les entrées de menu, il suffit d’éditer le champ string :
Code:
<dict> <key>default</key> <string> ◆ HTML ➞ Unicode</string> </dict>
Comme j’ai désactivé la plupart des services, j’ai préféré placer ceux qui me restent au premier niveau du menu services. Comme les entrées sont classées par ordre alphabétique, pour que ceux qui sont fonctionnellement liés restent groupés dans la liste, j’utilise des caractères spéciaux comme ici ◆ (accessibles par la palette de caractères) et qui peuvent servir d’« icônes » pour être repérés plus facilement.
Si je voulais au contraire regrouper des services par sous-menus (même des services générés par des applis différentes, pourquoi pas) il suffirait que je fasse précéder le libellé par nom_de_sous-menu/. Par exemple j’ai trois services, l’un appartenant à WordService, l’autre à Mail et le troisième à TextEdit. Si je veux les grouper dans un sous-menu Texte, je modifie leur libellé en commençant par Texte/ :
Code:
Texte/Convertir en minuscules Texte/Envoyer en mail Texte/Ouvrir la sélection dans TextEdit
et c’est tout.
Modifier le raccourci clavier d’un service est tout aussi simple. Dans l’exemple plus haut, il n’y en a aucun de défini pour l’entrée du service. Un service comportant le raccourci clavier pomme / se présenterait comme ceci :
Dans le cas de / sur un clavier français, comme il faut obligatoirement appuyer sur majuscule pour taper /, le raccourci qui s’affichera dans le menu se présentera comme pomme+/ alors que pour M, il sera affiché majuscule+pomme+M. Et pour pomme+m, il suffirait de mettre <string>m</string>, mais ça ne fonctionne pas, puisque pomme+m est déjà pris pour le repli de la fenêtre dans le Dock. D’une façon générale, il faut éviter les pomme+lettre minuscule qui entrent en conflit avec les applis. On utilisera donc systématiquement des majuscules, mais il est possible que certaines applis les utilisent aussi. À voir à l’usage.
Les caractères peu ascii comme pomme+§ ne donnent rien, mais pomme+( sera pris en compte. Ce qui est lourd dans ces modifications faites à la main est qu’il faut sortir de la session pour tester. Encore une raison d’utiliser Service Scrubber qui sait rafraîchir les services à la sauvegarde des modifications et donc de tester immédiatement, même dans une application et un fichier ouverts. _________________ Ils éprouvaient une sorte d’humiliation à l’idée que leur individu contenait du phosphore comme les allumettes, de l’albumine comme les blancs d’œufs, du gaz hydrogène comme les réverbères.Bouvard et Pécuchet
Dernière édition par le 7/1/2008, 09:24, édité 4 fois
Doubleyou Enkysté
Age : 97 Inscrit le : 19 Nov 2006 Messages : 2449 Planète : de dingues Matos : un truc avec une pomme dessus et d'autres machins coûteux
Sujet: Re: Effacer et modifier les éléments du menu Services 7/1/2008, 02:25
HR =
Toutefois, une petite précision : Firefox et NeoOffice sont bien "natifs", le problème c'est l'emploi de Carbon, API native de Mac OS X.
Pour les services, il faut que l'application soit Cocoa (et encore, je me demande si ce n'est pas plutôt le laxisme des développeurs qui est à mettre en cause).
Une question : pour éditer ce genre de fichier, dans les "gratuits" autre que TextEdit, que me conseillerais-tu ?
W. _________________ iMac Early 2006 17" 1,83 Ghz CoreDuo 2 Go Ram Mac OS X.5.4 LEOPARD MacBook Pro Early 2008 15,4" 2,4 Ghz Core2Duo 2Go Ram Mac OS X.5.4 LEOPARD (What else ?) Pomme-I, c'est la plusse mieux, mais faut pas l'écrire. Hors : j'adore ! "Si vous trouvez que l'éducation coûte cher, essayez l'ignorance." Abraham Lincoln "Chiche !" Xavier Darcos
hr Enkysté
Age : 54 Inscrit le : 19 Nov 2006 Messages : 2226 Planète : La planète Creuse Matos : Une paire de palourdes, une paire de power mac g4, un pc, une machine à écrire des années 40.
Sujet: Re: Effacer et modifier les éléments du menu Services 7/1/2008, 09:05
Doubleyou a écrit:
Toutefois, une petite précision : Firefox et NeoOffice sont bien "natifs", le problème c'est l'emploi de Carbon, API native de Mac OS X. Pour les services, il faut que l'application soit Cocoa (et encore, je me demande si ce n'est pas plutôt le laxisme des développeurs qui est à mettre en cause).
Oui, c’est vrai, je confonds toujours ces deux notions. Je corrige dans mon message. J’en profite pour y ajouter une remarque sur la nécessité de sauvegarder le fichier modifié qui serait perdu à la première mise à jour de l’appli !
Doubleyou a écrit:
Une question : pour éditer ce genre de fichier, dans les "gratuits" autre que TextEdit, que me conseillerais-tu ?
Dans les gratuits :
TextWrangler (en anglais) mais OS 10.4 minimum. Du costaud, stable et bien fait. C’est la version allégée et gratuite de BBEdit.
Smultron (VF incluse) mais attention à la version en fonction de l’OS qu’on utilise : Version 3.3 pour OS 10.5 3.1.2 pour OS 10.4.9 2.2.7 pour OS 10.4.5 1.2.7 pour OS 10.3.9 Toutes ces versions sont disponibles sur le site. Les plus récentes sont très intéressantes pour travailler sur des projets composés d’un ensemble de fichiers.
À cause de sa fiabilité à toute épreuve, mon préféré reste TextWrangler, sauf sur mon propre mac où j’ai BBEdit…
Il y a sans doute d’autres bons éditeurs, mais je ne connais pas. _________________ Ils éprouvaient une sorte d’humiliation à l’idée que leur individu contenait du phosphore comme les allumettes, de l’albumine comme les blancs d’œufs, du gaz hydrogène comme les réverbères.Bouvard et Pécuchet
Effacer et modifier les éléments du menu Services
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum