2 votes

Sous-menu pour les services

J'ai écrit une petite application et je veux permettre à d'autres applications de partager des données avec elle.

Ma première idée était de l'intégrer dans le menu de service. Cependant, j'ai besoin de sous-menus alimentés de manière dynamique et la page Apple dev pour Services système indique que "Il n'y a pas de sous-menus dans le menu Services" depuis la 10.6.

Existe-t-il des alternatives pour l'intégration dans le menu contextuel d'autres applications ? et avoir des sous-menus ?

1voto

Generic Error Points 2049

Un meilleur endroit pour demander est probablement le forum des programmeurs. https://stackoverflow.com/questions/tagged/osx

Mais à vue de nez, je pense que vous pouvez faire plusieurs variantes de votre .app chacun enregistrant l'action de ses propres services. Ces variantes pourraient ensuite lancer votre application "principale" pour qu'elle fasse le gros du travail.

Ces variantes pourraient être regroupées à l'intérieur de l'application principale, comme je vois quelques exemples ici :

/Applications/Adium.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/finish_installation.app
/Applications/Android File Transfer.app/Contents/Frameworks/Breakpad.framework/Versions/A/Resources/crash_report_sender.app
/Applications/Android File Transfer.app/Contents/Resources/Android File Transfer Agent.app
/Applications/Android File Transfer.app/Contents/Resources/Android File Transfer Agent.app/Contents/Frameworks/Breakpad.framework/Versions/A/Resources/crash_report_sender.app
/Applications/Google Chrome Canary.app/Contents/Versions/26.0.1400.0/Google Chrome Framework.framework/Resources/app_mode_loader.app
/Applications/Google Chrome Canary.app/Contents/Versions/26.0.1400.0/Google Chrome Framework.framework/Resources/crash_report_sender.app
/Applications/Google Chrome Canary.app/Contents/Versions/26.0.1400.0/Google Chrome Helper EH.app
/Applications/Google Chrome Canary.app/Contents/Versions/26.0.1400.0/Google Chrome Helper NP.app
/Applications/Google Chrome Canary.app/Contents/Versions/26.0.1400.0/Google Chrome Helper.app
/Applications/Quicksilver.app/Contents/Resources/QSDroplet.app
/Applications/Stainless.app/Contents/Helpers/StainlessClient.app
/Applications/Firefox.app/Contents/MacOS/crashreporter.app
/Applications/Firefox.app/Contents/MacOS/plugin-container.app
/Applications/Firefox.app/Contents/MacOS/updater.app
/Applications/TextMate.app/Contents/SharedSupport/Bundles/ActionScript.tmbundle/Support/bin/XTrace.app
/Applications/TextMate.app/Contents/SharedSupport/Support/bin/CocoaDialog.app
/Applications/TextMate.app/Contents/SharedSupport/Support/bin/CommitWindow.app
/Applications/Xcode.app/Contents/Applications/Accessibility Inspector.app
/Applications/Xcode.app/Contents/Applications/Application Loader.app
/Applications/Xcode.app/Contents/Applications/FileMerge.app
/Applications/Xcode.app/Contents/Applications/Instruments.app
/Applications/Xcode.app/Contents/Applications/OpenGL ES Performance Detective.app
…

0 votes

Je ne connaissais pas cette possibilité, grande découverte ! Mais il ne permet pas la population dynamique des sous-menus (désolé d'avoir ajouté cette exigence juste maintenant !)

1voto

Tyler Mumford Points 720

Une alternative pourrait être le menu AppleScript. Il présente tous les scripts dans le menu ~/Library/Scripts/ et préserve la hiérarchie des sous-dossiers.

Questions :

  • Vous devez intégrer le support AppleScript dans votre application.
  • Vous devriez créer un tas d'AppleScripts pour exposer votre fonctionnalité.
  • Le menu AppleScript est désactivé par défaut.
  • C'est un piratage maladroit.

0 votes

Bonne idée mais ne permet pas la population dynamique des sous-menus (désolé d'avoir ajouté cette exigence juste maintenant !).

1voto

Tyler Mumford Points 720

Une autre solution consisterait à n'exposer que les services de premier niveau, puis à confier à votre application la responsabilité d'afficher les choix du "sous-menu".

Cela présente l'avantage de vous permettre de contrôler les raccourcis clavier pour les choix secondaires. L'utilisateur bénéficie également d'une liste de services plus propre.

0 votes

C'est probablement la solution que je choisirai, car les autres solutions ne permettent pas non plus la création dynamique d'entrées.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X