2008-09-15 4 views
2

Apple OS X Cocoa 프레임 워크를 사용하면 (슬라이드 다운 모달 대화 상자)을 다른 프로세스의 창에 게시 할 수 있습니까?다른 프로그램의 창에 코코아 "시트"를 게시하려면 어떻게해야합니까?

편집 :

내 응용 프로그램이 Subversion 버전 제어 (http://scplugin.tigris.org/를) 할 수있는 파인더 확장은 다음과 같습니다 조금 설명했습니다. 내 응용 프로그램의 일부는 플러그인 (Finder 용 컨텍스트 메뉴 항목)입니다. 그러나, 내 응용 프로그램의 대량, 별도의 데몬 proces에 있습니다. 몇 가지 이유로 우리는 사실상 모든 코드를 데몬에 넣기로 결정했습니다. 플러그인은 메뉴 자체와 Apple-Events를 데몬으로 정의합니다.

때로는 데몬이 사용자에게 추가 정보를 묻는 메시지가 필요합니다. 화면 상에 창을 던져 버릴 수도 있지만, 이는 무작위로 배치됩니다. 무작위로 배치되는 것은 혼란 스럽습니다. 여기에있는 작업 흐름은 합법적 인 모달입니다. 예를 들어 "파일 선택, 메뉴에서 '커밋'선택, 커밋 코멘트 제공 , 작업을 수행하십시오. "

프로세스 간 협력 (일종의 참조 전달과 같은)이 허용됩니다. 두 프로세스 모두 내 것이지만 시트의 코드를 기본 프로세스에 바인딩하는 것을 피하기를 원합니다.

+0

이 참고 : 파인더에 대한 컨텍스트 메뉴 항목은 스노우 레오파드 (Snow Leopard)에서 DOA 있습니다. 서비스로 다시 작성해야합니다. 을 참조하십시오. – geowar

답변

5

실제로 프로세스 수준의 통신이 뷰 수준에서 발생하는 것처럼 보이는데 실제로는 코코아가 일반적으로 작동하는 방식이 아닙니다. 레이어를 분리하는 것이 훨씬 쉽습니다.

왜 시트 코드를 다른 프로세스에 넣지 않으시겠습니까? 뷰 코드이고 뷰 코드는 본질적으로 프로세스에 따라 다릅니다. 여기서해야 할 일은 플러그인 코드에 다소 일반적인 모달 시트 지원과 데몬이 해당 코드를 호출 할 수있는 IPC 호출을 추가하는 것입니다. 뷰 객체를 원격 프로세스로 보내려고하면 전혀 작동시킬 수 있다면 악몽이 될 것입니다.

당신은이 접근법으로 프레임 워크와 싸우고 있습니다.

1

제발하지 마세요. 가능하다면 상호 작용을 비동 사적으로 만드십시오. 특히 커밋과 같은 것에서 커밋 코멘트를 쓰는 동안 파일을 둘러 볼 수있는 것이 훨씬 더 멋지다.

OS X에는 창 그룹이 있지만 응용 프로그램을 (쉽게) 확장 할 수 있다고는 생각하지 않습니다.

2

다른 프로세스의 창에 대한 액세스가 제한되어있어 다른 프로세스의 창에 시트를 추가 할 수 없습니다.

1

또 다른 고려 사항은 OS X에서 많은 Finder 윈도우를 동일한 폴더에서 열 수 있다는 것입니다 (OS 9과 달리). 에게 Finder 윈도우에 시트를 추가 할 수있는 충분한 권한/API를 가지고 있다고해도, 해당 윈도우의 양식이 사용자가 파일 작업을 계속할 수 없도록하는 것과는 다릅니다.

은 (오랜 맥 사용자로 내 개인적인 의견은 이러한 종류의 상호 작용은 바로 벽까지 저를 몰 것이다.)

관련 문제