2 votos

Submenú de servicios

He escrito una pequeña aplicación y quiero permitir que otras aplicaciones compartan datos con ella.

Mi primera idea fue integrarlo en el menú de servicio. Sin embargo, necesito submenús poblados dinámicamente y la página dev de Apple para Servicios del sistema afirma que "No hay submenús en el menú Servicios" desde 10.6.

¿Existen alternativas para la integración en el menú contextual de otras aplicaciones? y ¿tener submenús?

1voto

Generic Error Puntos 2049

Un mejor lugar para preguntar es probablemente el foro de programadores https://stackoverflow.com/questions/tagged/osx

Pero de antemano creo que se pueden hacer algunas variantes diferentes de su .app cada uno registrando su propia acción de Servicios. Esas variantes podrían lanzar tu aplicación "principal" para hacer el trabajo pesado.

Estas variantes podrían agruparse en la aplicación principal, como veo algunos ejemplos aquí:

/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 votos

No conocía esta posibilidad, ¡gran hallazgo! Pero no permite el poblamiento dinámico de los submenús (¡perdón por añadir este requisito justo ahora!)

1voto

Tyler Wayne Puntos 562

Una alternativa podría ser el menú AppleScript. Presenta todos los scripts en el menú ~/Library/Scripts/ y conserva la jerarquía de las subcarpetas.

Problemas:

  • Tendrías que integrar AppleScript en tu aplicación.
  • Tendrías que construir un montón de AppleScripts para exponer tu funcionalidad.
  • El menú AppleScript está desactivado por defecto.
  • Es una chapuza.

0 votos

Buena idea, pero no permite la población dinámica de submenús (¡perdón por añadir este requisito justo ahora!).

1voto

Tyler Wayne Puntos 562

Otra alternativa sería exponer sólo los servicios de nivel superior, y luego hacer que sea responsabilidad de tu aplicación mostrar las opciones del "submenú".

Esto tiene la ventaja de permitirle controlar los atajos de teclado para las opciones secundarias. El usuario también obtiene una lista más limpia de servicios.

0 votos

Probablemente siga este camino, ya que las otras soluciones tampoco permiten la creación dinámica de entradas.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X