Как я могу опубликовать лист какао в окне другой программы? - PullRequest
2 голосов
/ 15 сентября 2008

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

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

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

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

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

Ответы [ 4 ]

5 голосов
/ 15 сентября 2008

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

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

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

2 голосов
/ 16 сентября 2008

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

1 голос
/ 18 сентября 2008

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

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

1 голос
/ 16 сентября 2008

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

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

...