mirror of
https://github.com/ZeroTier/ZeroTierOne
synced 2025-08-20 13:24:09 -07:00
Pass authtoken in from user, and add a wrapper for web UI on Mac.
This commit is contained in:
parent
e58047eaa0
commit
5b54612d91
68 changed files with 7537 additions and 1 deletions
150
ext/mac-ui-macgap1-wrapper/MacGap/Classes/Commands/MenuItemProxy.m
Executable file
150
ext/mac-ui-macgap1-wrapper/MacGap/Classes/Commands/MenuItemProxy.m
Executable file
|
@ -0,0 +1,150 @@
|
|||
//
|
||||
// MenuItemProxy.m
|
||||
// MacGap
|
||||
//
|
||||
// Created by Joe Hildebrand on 1/15/12.
|
||||
// Copyright (c) 2012 Twitter. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MenuItemProxy.h"
|
||||
#import "MenuProxy.h"
|
||||
|
||||
@implementation MenuItemProxy
|
||||
|
||||
- (id) initWithContext:(JSContextRef)aContext andMenuItem:(NSMenuItem*)anItem
|
||||
{
|
||||
NSAssert(anItem, @"anItem required");
|
||||
self = [super initWithContext:aContext];
|
||||
if (!self)
|
||||
return nil;
|
||||
item = anItem;
|
||||
item.representedObject = self;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
+ (MenuItemProxy*) proxyWithContext:(JSContextRef)aContext andMenuItem:(NSMenuItem*)anItem
|
||||
{
|
||||
MenuItemProxy *proxy = [anItem representedObject];
|
||||
if (proxy)
|
||||
{
|
||||
NSLog(@"MIP Cache hit");
|
||||
NSAssert([proxy class] == [MenuItemProxy class], @"Bad proxy");
|
||||
return proxy;
|
||||
}
|
||||
return [[MenuItemProxy alloc] initWithContext:aContext andMenuItem:anItem];
|
||||
}
|
||||
|
||||
- (NSString*) description
|
||||
{
|
||||
return [item description];
|
||||
}
|
||||
|
||||
- (MenuProxy*)addSubmenu
|
||||
{
|
||||
NSMenu *s = [item submenu];
|
||||
if (!s)
|
||||
{
|
||||
s = [[NSMenu alloc] initWithTitle:@"FFFFFFOOOOO"];
|
||||
[item setSubmenu:s];
|
||||
}
|
||||
return [MenuProxy proxyWithContext:context andMenu:s];
|
||||
}
|
||||
|
||||
- (void) remove
|
||||
{
|
||||
NSMenu *menu = [item menu];
|
||||
[menu removeItem:item];
|
||||
}
|
||||
|
||||
- (void)callCallback:(id)sender
|
||||
{
|
||||
[callback callWithParams:[sender title], nil];
|
||||
}
|
||||
|
||||
- (void) setCallback:(WebScriptObject*)aCallback
|
||||
{
|
||||
NSAssert(item, @"item required");
|
||||
callback = [[CallbackDelegate alloc] initWithContext:context forCallback:aCallback];
|
||||
[item setAction:@selector(callCallback:)];
|
||||
[item setTarget:self];
|
||||
}
|
||||
|
||||
- (void)setKey:(NSString*)keyCommand
|
||||
{
|
||||
NSString *aKey = [MenuProxy getKeyFromString:keyCommand];
|
||||
[item setKeyEquivalent:aKey];
|
||||
|
||||
NSUInteger modifiers = [MenuProxy getModifiersFromString:keyCommand];
|
||||
[item setKeyEquivalentModifierMask:modifiers];
|
||||
}
|
||||
|
||||
- (void) setTitle:(NSString*)title
|
||||
{
|
||||
[item setTitle:title];
|
||||
}
|
||||
|
||||
- (MenuProxy*)submenu;
|
||||
{
|
||||
// TODO: make this work as a property
|
||||
NSMenu *s = [item submenu];
|
||||
if (!s)
|
||||
return nil;
|
||||
return [MenuProxy proxyWithContext:context andMenu:s];
|
||||
}
|
||||
|
||||
- (void) enable
|
||||
{
|
||||
[item setEnabled:YES];
|
||||
}
|
||||
|
||||
- (void) disable
|
||||
{
|
||||
[item setEnabled:NO];
|
||||
}
|
||||
|
||||
#pragma mark WebScripting protocol
|
||||
|
||||
+ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector
|
||||
{
|
||||
return [self webScriptNameForSelector:selector] == nil;
|
||||
}
|
||||
|
||||
+ (BOOL) isKeyExcludedFromWebScript:(const char*)name
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
|
||||
+ (NSString*) webScriptNameForSelector:(SEL)selector
|
||||
{
|
||||
id result = nil;
|
||||
|
||||
if (selector == @selector(addSubmenu)) {
|
||||
result = @"addSubmenu";
|
||||
}
|
||||
else if (selector == @selector(remove)) {
|
||||
result = @"remove";
|
||||
}
|
||||
else if (selector == @selector(setCallback:)) {
|
||||
result = @"setCallback";
|
||||
}
|
||||
else if (selector == @selector(setKey:)) {
|
||||
result = @"setKey";
|
||||
}
|
||||
else if (selector == @selector(setTitle:)) {
|
||||
result = @"setTitle";
|
||||
}
|
||||
else if (selector == @selector(submenu)) {
|
||||
result = @"submenu";
|
||||
}
|
||||
else if (selector == @selector(enable)) {
|
||||
result = @"enable";
|
||||
}
|
||||
else if (selector == @selector(disable)) {
|
||||
result = @"disable";
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@end
|
Loading…
Add table
Add a link
Reference in a new issue