MacNOMODO
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
MacNOMODO

Où on cause du Mac - A consommer sans modération

 
PortailPortailAccueilRechercherRechercherS'enregistrerConnexionDernières images
Le Deal du moment : -29%
PC portable – MEDION 15,6″ FHD Intel i7 ...
Voir le deal
499.99 €

 

 Effacer et modifier les éléments du menu Services

Aller en bas 
2 participants
AuteurMessage
hr
Légende vivante
Légende vivante
hr


Nombre de messages : 6919
Age : 70
Planète : Creuse
Matos : mac mini M2 2023 en Ventura - mac mini fin 2014 en Monterey - iMac alu 2008 en El Capitan - G4 en 10.5 - iPhone 6s
Date d'inscription : 19/11/2006

Effacer et modifier les éléments du menu Services Empty
MessageSujet: Effacer et modifier les éléments du menu Services   Effacer et modifier les éléments du menu Services Icon_minitime1/6/2008, 10: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 :
Code:

    <key>NSServices</key>
    <array>


        <dict>


            <key>NSMenuItem</key>
            <dict>
                <key>default</key>
                <string> ◆ HTML ➞ Unicode</string>
            </dict>
            <key>NSMessage</key>
            <string>convertHTMLToUnicodeService</string>
            <key>NSPortName</key>
            <string>UnicodeChecker</string>
            <key>NSReturnTypes</key>
            <array>
                <string>NSStringPboardType</string>
            </array>
            <key>NSSendTypes</key>
            <array>
                <string>NSStringPboardType</string>
            </array>
            <key>NSUserData</key>
            <string>HTMLEntity</string>


        </dict>



        <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 :
Code:

    <key>NSServices</key>
    <array>


        <dict>


            <key>NSKeyEquivalent</key>
            <dict>
                <key>default</key>
                <string>/</string>
            </dict>


            <key>NSMenuItem</key>
            <dict>
                <key>default</key>
                <string> ◆ HTML ➞ Unicode</string>
            </dict>
            <key>NSMessage</key>
            <string>convertHTMLToUnicodeService</string>
            <key>NSPortName</key>
            <string>UnicodeChecker</string>
            <key>NSReturnTypes</key>
            <array>
                <string>NSStringPboardType</string>
            </array>
            <key>NSSendTypes</key>
            <array>
                <string>NSStringPboardType</string>
            </array>
            <key>NSUserData</key>
            <string>HTMLEntity</string>


        </dict>


    </array>

On a tout simplement fait précéder sa définition par celle de son raccourci :
Code:

        <key>NSKeyEquivalent</key>
        <dict>
            <key>default</key>
            <string>/</string>
        </dict>


Autre exemple, pour attribuer majuscule+pomme+M à un service, on le fait précéder de :
Code:

        <dict>
            <key>default</key>
            <string>M</string>
        </dict>

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.

_______________
J’étais né pour rester jeune et j’ai eu l'avantage de m’en apercevoir le jour où j’ai cessé de l'être.
Épitaphe de Georges Moinaux, dit Courteline


Dernière édition par le 1/7/2008, 07:24, édité 4 fois
Revenir en haut Aller en bas
Doubleyou
Légende vivante
Légende vivante
Doubleyou


Nombre de messages : 6324
Age : 54
Planète : de dingues
Matos : un truc avec une pomme dessus et d'autres machins coûteux
Date d'inscription : 19/11/2006

Effacer et modifier les éléments du menu Services Empty
MessageSujet: Re: Effacer et modifier les éléments du menu Services   Effacer et modifier les éléments du menu Services Icon_minitime1/7/2008, 00:25

HR = La classe

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.

_______________
Art. 10. Nul ne doit être inquiété pour ses opinions, même religieuses, pourvu que leur manifestation ne trouble pas l'ordre public établi par la Loi.
Art. 11. La libre communication des pensées et des opinions est un des droits les plus précieux de l'Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l'abus de cette liberté dans les cas déterminés par la Loi.
Art. 12. La garantie des droits de l'Homme et du Citoyen nécessite une force publique : cette force est donc instituée pour l'avantage de tous, et non pour l'utilité particulière de ceux auxquels elle est confiée.
Revenir en haut Aller en bas
http://www.crawford-texas.org/
hr
Légende vivante
Légende vivante
hr


Nombre de messages : 6919
Age : 70
Planète : Creuse
Matos : mac mini M2 2023 en Ventura - mac mini fin 2014 en Monterey - iMac alu 2008 en El Capitan - G4 en 10.5 - iPhone 6s
Date d'inscription : 19/11/2006

Effacer et modifier les éléments du menu Services Empty
MessageSujet: Re: Effacer et modifier les éléments du menu Services   Effacer et modifier les éléments du menu Services Icon_minitime1/7/2008, 07: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.

_______________
J’étais né pour rester jeune et j’ai eu l'avantage de m’en apercevoir le jour où j’ai cessé de l'être.
Épitaphe de Georges Moinaux, dit Courteline
Revenir en haut Aller en bas
Contenu sponsorisé





Effacer et modifier les éléments du menu Services Empty
MessageSujet: Re: Effacer et modifier les éléments du menu Services   Effacer et modifier les éléments du menu Services Icon_minitime

Revenir en haut Aller en bas
 
Effacer et modifier les éléments du menu Services
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mises à jour Adobe Photoshop Elements 9 et Premiere Elements 9
» Secondbar : demandez le menu
» Photoshop éléments 4...
» Lancer l’action d’un menu par une icône
» Aperçu : rognons à la carte ou au menu

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
MacNOMODO :: A i d e  &  d é p a n n a g e :: Le labo (classé X)-
Sauter vers: