2012-12-31 26 views
0

我想创建一个非常基本的SIMBL插件 - 只需在Safari中添加一个新的菜单。 这是我已经试过: 我将此添加到我的plist:在Cocoa中创建SIMBL插件

<key>NSPrincipalClass</key> 
<string>MySamplePlugin</string> 
<key>SIMBLTargetApplications</key> 
<array> 
    <dict> 
     <key>BundleIdentifier</key> 
     <string>com.apple.Safari</string> 
     <key>MaxBundleVersion</key> 
     <string>*</string> 
     <key>MinBundleVersion</key> 
     <string>*</string> 
    </dict> 
</array> 

然后,我创建了MySamplePlugin类和Menu.xib。 (所有连接,这不可能是错误) 我的.h

-(IBAction)clickAbout:(id)sender; 
@property (assign) IBOutlet NSMenu *topMenu; 

和我。主要文件

- (id) init { 
self = [super init]; 
if (! self) 
    return nil; 

[NSBundle loadNibNamed: @"Menu.xib" owner: self]; 
return self; 
} 

- (IBAction) clickAbout: (id) sender { 
NSLog(@"do some stuff here"); 
} 



+ (void) load 
{ 
MySamplePlugin* plugin = [MySamplePlugin sharedInstance]; 
NSMenuItem* item; 

item = [[NSMenuItem alloc] init]; 
[item setSubmenu: [plugin topMenu]]; 

[[plugin topMenu] setTitle: @"George"]; 

[[NSApp mainMenu] addItem: item]; 

NSLog(@"MySamplePlugin installed"); 
} 

+ (MySamplePlugin*) sharedInstance 
{ 
static MySamplePlugin* plugin = nil; 

if (plugin == nil) 
    plugin = [[MySamplePlugin alloc] init]; 

return plugin; 
} 

任何想法,为什么我的插件不工作?它建立没有警告,我把它复制到〜/库/ Application Support/SIMBL /插件/

这是我console.app输出:http://cl.ly/LsH9

+0

有没有机会让你更具体?它在什么意义上不起作用? – Monolo

+0

它不显示任何东西。该菜单未显示。 – dehlen

+0

你已经做了什么来调试它(这是让人们避免你已经尝试过的建议)? – Monolo

回答

0

没关系我用这个小小的代码修改了它:

NSMenu* mainMenu = [NSApp mainMenu]; 

NSMenu* debugMenu = [[NSMenu alloc] initWithTitle:@"Menu"]; 
NSMenuItem* newItem = [[NSMenuItem alloc] initWithTitle:@"Item" action:nil keyEquivalent:@""]; 

[newItem setSubmenu:debugMenu]; 
[mainMenu addItem:newItem]; 
[debugMenu addItemWithTitle:@"Run Unit Tests" action:nil keyEquivalent:@""]; 
+2

那么,问题是什么,这个改变是如何解决它的? –