Pregunta

Usando el marco Apple OS X Cocoa, ¿cómo puedo publicar un hoja (diálogo modal deslizable) en la ventana de otro proceso?

Editar: Aclarado un poco:

Mi aplicación es una extensión de Finder para realizar el control de versiones de Subversion (http://scplugin.tigris.org/).Parte de mi aplicación es un complemento (un elemento del menú contextual para Finder);La mayor parte de mi aplicación, sin embargo, se encuentra en un proceso de demonio separado.Por varias razones, hemos elegido poner prácticamente todo el código en el demonio;el complemento solo define el menú en sí y Apple-Events pasa al Daemon.

A veces, el demonio necesita solicitar más información al usuario.Puede abrir una ventana en pantalla para esto, pero eso es disruptivo (ubicado aleatoriamente), y me parece que el flujo de trabajo aquí es legítimamente modal, por ejemplo "seleccione un archivo, elija 'confirmar' en el menú, proporcione comentarios de confirmación , haz la operación ".

La cooperación entre procesos (como pasar una referencia de algún tipo) es aceptable:Ambos procesos son míos, pero quiero evitar vincular el código de la hoja al proceso principal.

¿Fue útil?

Solución

Realmente, parece que estás intentando que la comunicación entre procesos se produzca en el nivel de vista, que en realidad no es como funciona Cocoa en general.Las cosas serán mucho más fáciles si separas las capas un poco más que eso.

¿Por qué no quieres poner el código de la hoja en el otro proceso?Es ver código, y el código de vista es inherentemente específico del proceso.Lo correcto aquí probablemente sea agregar soporte de hoja modal algo genérico al código de su complemento y una llamada IPC que su demonio pueda realizar para invocar ese código.Intentar enviar objetos de visualización al proceso remoto será una pesadilla si logras que funcione.

Estás luchando contra los marcos con este enfoque.

Otros consejos

No puede agregar una hoja a una ventana en otro proceso, porque como máximo solo tiene el acceso más restringido a las ventanas en el otro proceso.

Por favor no hagas esto.Haga que la interacción sea no modal si es posible.Especialmente en algo como una confirmación, es mucho mejor poder explorar tus archivos mientras escribes comentarios de confirmación.

OS X tiene grupos de ventanas, pero no creo que puedan abarcar (fácilmente) aplicaciones.

Otra cosa a considerar es que en OS X es posible tener muchas ventanas del Finder abiertas en la misma carpeta (a diferencia de OS 9).Incluso si tú hizo tiene suficientes privilegios/API para agregar una hoja a una ventana del Finder, no es que la modalidad de esa ventana impida que el usuario pueda continuar trabajando con los archivos.

(Mi opinión personal como usuario de Mac desde hace mucho tiempo es que este tipo de interacción me volvería loco).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top