Как я могу опубликовать «лист» Cocoa в окне другой программы?

StackOverflow https://stackoverflow.com/questions/65343

Вопрос

Как я могу опубликовать сообщение, используя инфраструктуру Apple OS X Cocoa? лист (модальный диалог вниз) в окне другого процесса?

Редактировать: Немного уточнил:

Мое приложение представляет собой расширение Finder для контроля версий Subversion (http://scplugin.tigris.org/).Часть моего приложения представляет собой плагин (пункт контекстного меню для Finder);Однако основная часть моего приложения находится в отдельном процессе демона.По нескольким причинам мы решили поместить практически весь код в демон;плагин определяет только само меню, а Apple-Events передается демону.

Иногда демону необходимо запросить у пользователя дополнительную информацию.Для этого он может выводить окно на экран, но это мешает (расположено в случайном порядке), и мне кажется, что рабочий процесс здесь законно модальный, например «выберите файл, выберите «фиксировать» в меню, предоставьте комментарии к фиксации. , сделай операцию».

Межпроцессное сотрудничество (например, передача какой-либо ссылки) приемлемо:оба процесса принадлежат мне, но я хочу избежать привязки кода листа к основному процессу.

Это было полезно?

Решение

На самом деле, похоже, что вы пытаетесь обеспечить межпроцессное взаимодействие на уровне представления, а Cocoa на самом деле не так работает.Все будет намного проще, если вы разделите слои немного сильнее.

Почему вы не хотите поместить код листа в другой процесс?Это код представления, а код представления по своей сути зависит от процесса.Правильным решением здесь, вероятно, будет добавить в код вашего плагина некую общую поддержку модальных листов и вызов IPC, который ваш демон может выполнить для вызова этого кода.Попытка отправить объекты просмотра в удаленный процесс будет кошмаром, если вы вообще сможете заставить его работать.

При таком подходе вы боретесь с фреймворками.

Другие советы

Вы не можете добавить лист в окно в другом процессе, поскольку у вас есть только самый ограниченный доступ к окнам в другом процессе.

Пожалуйста, не делай этого.Если это вообще возможно, сделайте взаимодействие немодальным.Гораздо приятнее иметь возможность просматривать файлы во время написания комментариев к коммиту, особенно в таких случаях, как коммит.

В OS X есть группы окон, но я не думаю, что они могут (легко) охватывать приложения.

Еще следует учитывать, что в OS X в одной папке можно открыть несколько окон Finder (в отличие от OS 9).Даже если ты делал иметь достаточные привилегии/API для добавления листа в окно Finder, модальность этого окна не помешает пользователю продолжить работу с файлами.

(Мое личное мнение, как давнего пользователя Mac, заключается в том, что такого рода взаимодействие свело бы меня с ума.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top