2010-05-06 65 views
3

我想要的颜色的徽章文件,并根据取景器中的某些条件的文件夹,什么是在Mac OS X实现这一目标的方法10.6如何在OS X Finder中有条件地着色文件和文件夹?

我已经检查了这个问题:在取景器 这只是说说上下文菜单Finder Plugin in Snow Leopard

我甚至检查过:http://scplugin.tigris.org/即使他们没有在10.6中做彩色徽章,这是未决任务。

在此先感谢您的帮助

+0

对于投票结束的人,我相信用户正在尝试以编程方式执行此操作,所以这不是真正的superuser.com问题。问题不明确,但它被标记为“可可”。 – 2010-05-06 23:35:56

+0

我使用图标服务得到了一个解决方案。将颜色作为图标和徽章图标加载到相应的文件或文件夹。 感谢您的帮助。 – 2010-07-14 13:16:31

回答

1

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

在10.6之前,通过仅使用InputManager s就可以很容易地将代码注入Cocoa应用程序。这不再是事实,但您可以使用OSAX来实现,请参阅this blog postSIMBL自动执行此操作。

但你必须弄清楚Finder里面发生了什么,看看如何修补东西。 要探索Finder里面,F-Script anywhere将帮助你。

玩得开心,祝你好运!

+0

10.6及更高版本中有一个公共API,请参阅我的答案。使用AppleScript是早期操作系统版本的解决方案。 – 2010-05-07 00:54:11

+1

Rob Keniger:有一个公共API来设置来自另一个应用程序的标签颜色,但如果目标是让Finder自己完成工作,则需要SIMBL或mach_inject将代码注入Finder进程。 – 2010-05-07 00:58:15

+0

感谢罗布,学习新的API总是很高兴。我想我需要更仔细地阅读API变化... – Yuji 2010-05-07 01:22:41

1

你需要applescript。因此,您可以使用脚本桥或NSApplescript在可可中编写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 
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 
+0

这不适用于10.9中引入的新标签,但是,是吗?我的意思是添加或删除任何数量的新自定义标签,因为它可能在Finder中。毕竟,LabelValue只是旧FinderLabel的索引。 – 2015-01-20 18:36:14

+3

@ThomasTempelmann你可以使用'NSURLTagNamesKey'键。 – 2015-01-21 01:06:43

0

我觉得NSURLLabelNumberKey值:

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

任何人尚需一个答案在这里你去。

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 

盖瑞特海德有正确的顺序。

// 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进行了测试。

相关问题