Как я могу разместить "лист" Какао в окне другой программы?

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

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

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

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

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

К вашему сведению: пункты контекстного меню для Finder - это DOA в Snow Leopard. Вы должны их переписать как услуги. См. <developer.apple.com/mac/library/documentation/Cocoa/Concept‌ ual /…>

geowar 23.10.2009 20:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
946
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

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

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

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

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

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

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

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

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

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