[英]Objc scriptingbridge how open new Finder window in a specific folder
我想在特定位置打开一个特定大小的新Finder窗口,并显示一个特定文件夹。
在ScriptingBridge(XCode 6,Mavericks 9.4)中,我可以打开一个新的Finder窗口,并弄清楚了如何读取它打开的文件夹的URL。 但我真的在为如何将文件夹设置为其他内容而苦苦挣扎。
我试图给窗口分配一个用“ URL”属性初始化的“目标” SBObject。 但网址属性是只读的,尽管“目标”似乎不是。 我使用“ get”来确保有一个FinderFolder对象和FinderFinderWindow对象。
我尝试使用带有URL键的属性字典并创建一个“文件夹”。
FinderFolder *folder = [[[_finder classForScriptingClass:@"folder"] alloc]
initWithProperties:dict];
[[_finder folders] addObject:folder];
我已经阅读了Apple文档,并四处寻找示例,但是找不到分配文件夹路径的人的实例。
// open folder "Documents" of home folder
FinderFolder *theHomeFolder = [theFinder home];
NSLog(@"theHomeFolder: %@",theHomeFolder);
SBElementArray * theHomeFolderFolders = [theHomeFolder folders];
NSLog(@"theHomeFolderFolders: %@",theHomeFolderFolders);
FinderFolder *theDocsFolder = [theHomeFolderFolders objectWithName:@"Documents"];
NSLog(@"theDocsFolder: %@",theDocsFolder);
[theDocsFolder openUsing:nil withProperties:nil];
FinderFinderWindow * docsFolderWindow = (FinderFinderWindow*) [theDocsFolder containerWindow];
NSLog(@"docsFolderWindow: %@",docsFolderWindow);
docsFolderWindow = [docsFolderWindow get];
NSLog(@"docsFolderWindow: %@",docsFolderWindow);
// change its bounds
docsFolderWindow.bounds = NSMakeRect(64., 64., 800, 600.);
// other fun stuff…
[docsFolderWindow setCurrentView:FinderEcvwListView];
[[docsFolderWindow iconViewOptions] setArrangement:FinderEarrArrangedByName];
[docsFolderWindow cleanUpBy:@selector(name)];
docsFolderWindow.toolbarVisible = NO;
docsFolderWindow.statusbarVisible = NO;
docsFolderWindow.sidebarWidth = 0;
有几种不同的方法。 其他答案有效,或者您可以显式创建新的Finder窗口并设置其target
属性:
NSURL *u = [NSURL fileURLWithPath:@"/tmp"];
FinderFinderWindow *w = [[[theFinder classForScriptingClass:@"Finder window] alloc] init];
[[theFinder finderWindows] addObject:w];
[w setTarget:u];
您还可以将其设置为引用Finder项的theDocsFolder
,例如另一个答案中的theDocsFolder
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.