Custom Toolbar 생성
- Toolbar 이름 정의
override var toolbarItemName: String {
return "FinderSy"
}
FinderSy라는 타이틀을 가진 Toolbar을 생성해준다
- ToolBar 세부 내용 정의
override var toolbarItemToolTip: String {
return "FinderSy: Click the toolbar item for a menu."
}
Toolbar안에 어떤 세부적인 기능들이 있는지 명시해준다.
- Toolbar의 이미지 설정
override var toolbarItemImage: NSImage {
return NSImage(named: NSImage.cautionName)!
}
툴바의 이미지를 NSImage 타입으로 설정한다.
디렉토리 호출
- beginObservingDirectory
override func beginObservingDirectory(at url: URL) {
// The user is now seeing the container's contents.
// If they see it in more than one view at a time, we're only told once.
NSLog("beginObservingDirectoryAtURL: %@", url.path as NSString)
}
커스텀한 폴더안에 있는 들어가는 시점에 들어간 폴더의 url을 호출하는 함수이다. 폴더에 처음 들어갔을 때 실행하고 싶은 함수를 넣으면 호출이 된다. 현재 이 메서드는 그냥 해당 폴더의 url을 로그로 찍어준다.
- endObservingDirectory
override func endObservingDirectory(at url: URL) {
// The user is no longer seeing the container's contents.
NSLog("endObservingDirectoryAtURL: %@", url.path as NSString)
}
해당 폴더에서 다른 폴더에서 넘어가는 시점에 호출되는 함수이다.
AppDelegate.swift
AppDelegate에서 app이 실행되어서 켜지는 시점에 FinderExtension이 잘 켜졌는지 확인해야한다.
func applicationDidFinishLaunching(_ aNotification: Notification) {
DispatchQueue.main.async {
if FIFinderSyncController.isExtensionEnabled {
NSApplication.shared.terminate(self)
} else {
let alert = NSAlert()
alert.alertStyle = .warning
alert.informativeText = "ExtensionInformative"
alert.messageText = "ExtensionMessage"
alert.addButton(withTitle: "open")
alert.addButton(withTitle: "cancel")
if alert.runModal() == .alertFirstButtonReturn {
FIFinderSyncController.showExtensionManagementInterface()
NSApplication.shared.terminate(self)
}
}
}
}
FiFinderSyncController.isExtensionEnabled는 애플리케이션이 사용자가 확장을 활성화했는지 여부를 판단할 수 있다. 활성화가 되어있으면 NSApplication.shared.terminate(self)를 통해 애플리케이션을 완전히 종료시키고 활성화가 안되어있으면 환경설정에 FinderExtension창을 띄워준다.
여기에서 내가 만든 애플리케이션이 메뉴에 나타나는 것을 확인할 수 있고 해당 체크박스를 선택하면 우리가 커스텀한 파인더를 직접 실행이 가능하다.
Uploaded by Notion2Tistory v1.1.0