如何在OS X Finder中有条件地为文件和文件夹着色?

时间:2010-05-06 06:15:39

标签: objective-c cocoa macos

我想基于finder中的某些条件为徽章文件和文件夹着色,在Mac OS X 10.6中实现此目的的方法是什么

我已经检查了这个问题:这只是在finder中讨论上下文菜单 Finder Plugin in Snow Leopard

我甚至检查过:http://scplugin.tigris.org/即使他们没有在待处理任务的10.6中做颜色标记。

提前感谢您的帮助

5 个答案:

答案 0 :(得分:10)

您可以使用Mac OS X 10.6中引入的URL资源API。

NSURL* fileURL = [NSURL fileURLWithPath:@"/Path/to/file"];

id labelValue = nil;
NSError* error;
if([fileURL getResourceValue:&labelValue forKey:NSURLLabelNumberKey error:&error])
{
    NSLog(@"The label value is %@",labelValue);
}
else
{
    NSLog(@"An error occurred: %@",[error localizedDescription]);
}

您可以同时使用NSURLLabelNumberKey获取Finder指定标签的编号,或使用NSURLLabelColorKey获取实际颜色。

您可以使用相应的方法设置标签值:

- (BOOL)setResourceValue:(id)value forKey:(NSString *)key error:(NSError **)error

答案 1 :(得分:3)

对于任何仍需要答案的人,你可以去。

NSURL *fileURL = [NSURL fileURLWithPath:path_to_file];
NSError *error;
id labelColor = nil;

[fileURL setResourceValue:@2 forKey:NSURLLabelNumberKey error:&error]; //Set tag/label to green
[fileURL setResourceValue:@6 forKey:NSURLLabelNumberKey error:&error]; //Set tag/label to red

Garrett Hyde的订单正确。

//  0 none, 1 grey, 2 green, 3 purple, 4 blue, 5 yellow, 6 red, 7 orange

上述代码已使用Xcode 4.6.3和OSX 10.9.2 Mavericks进行测试。

答案 2 :(得分:1)

不幸的是,没有公共API。您需要在Finder中注入代码并对其进行修补。

在10.6之前,只需使用InputManager s就可以很容易地将代码注入Cocoa应用程序。这已不再适用,但您可以使用OSAX执行此操作,请参阅this blog postSIMBL会自动执行此操作。

但是你必须弄清楚Finder里面发生了什么,看看如何修补东西。 要探索Finder的内部,F-Script anywhere会对您有所帮助。

玩得开心,祝你好运!

答案 3 :(得分:1)

你需要AppleScript。因此,您可以使用脚本桥或NSApplescript在cocoa中编写Finder脚本。这是一个简单的AppleScript,展示了如何做到这一点。

set a to (choose file)
tell application "Finder"
    -- label colors
    -- 0 none, 1 orange, 2 red, 3 yellow, 4 blue, 5 purple, 6 green, 7 grey
    set label index of a to 6
end tell

答案 4 :(得分:0)

我认为NSURLLabelNumberKey值是:

//  0 none, 1 grey, 2 green, 3 purple, 4 blue, 5 yellow, 6 red, 7 orange