From: mshio Date: Sun, 13 Feb 2011 08:07:08 +0000 (+0000) Subject: add alert and openFile JavaScript function X-Git-Tag: v.20200415~158 X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=7ba746e4a98f293e8894b0dad7c3cf4b61ea8076;p=sawarabi-fonts%2Fsawarabi-fonts.git add alert and openFile JavaScript function git-svn-id: svn+ssh://svn.osdn.net/svnroot/sawarabi-fonts/trunk@18 54a90f34-5e62-402c-8eae-46c47f0b2e07 --- diff --git a/chartool/objective-c/Controller.h b/chartool/objective-c/Controller.h index 9ec4ff99..9422ec24 100644 --- a/chartool/objective-c/Controller.h +++ b/chartool/objective-c/Controller.h @@ -14,6 +14,7 @@ IBOutlet NSTextField* searchField; IBOutlet NSImageView* glyphView; IBOutlet NSTextField* codeField; + IBOutlet NSTextField* nameField; IBOutlet NSMenu* glyphViewMenu; NSString* currentCharacter; diff --git a/chartool/objective-c/Controller.m b/chartool/objective-c/Controller.m index 9932bdd0..7bc2b29f 100644 --- a/chartool/objective-c/Controller.m +++ b/chartool/objective-c/Controller.m @@ -116,6 +116,12 @@ } - (IBAction) clickScriptButton: (id) sender { + int tag = [sender tag]; + NSString* str = tag == 0 ? [codeField stringValue] : [nameField stringValue]; + NSUInteger m = [NSEvent modifierFlags]; + NSString* script = [NSString stringWithFormat: + @"script[%d]('%@', %d);", tag, str, m]; + [engine evaluate: script]; } - (IBAction) copyGlyphCharacter: (id) sender { diff --git a/chartool/objective-c/English.lproj/MainMenu.xib b/chartool/objective-c/English.lproj/MainMenu.xib index 1b93e5cf..da02e284 100644 --- a/chartool/objective-c/English.lproj/MainMenu.xib +++ b/chartool/objective-c/English.lproj/MainMenu.xib @@ -1,11 +1,15 @@ - + 1050 10J567 - 680 + 823 1038.35 462.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 823 + YES @@ -14,17 +18,11 @@ YES - com.apple.InterfaceBuilderKit com.apple.InterfaceBuilder.CocoaPlugin - YES - - YES - - - YES - + PluginDependencyRecalculationVersion + YES @@ -81,7 +79,7 @@ - UHJlZmVyZW5jZXPigKY + Preferences… , 1048576 2147483647 @@ -202,7 +200,7 @@ - T3BlbuKApg + Open… o 1048576 2147483647 @@ -266,7 +264,7 @@ - U2F2ZSBBc+KApg + Save As… S 1179648 2147483647 @@ -304,7 +302,7 @@ - UHJpbnTigKY + Print… p 1048576 2147483647 @@ -427,7 +425,7 @@ YES - RmluZOKApg + Find… f 1048576 2147483647 @@ -492,7 +490,7 @@ YES - U2hvdyBTcGVsbGluZ+KApg + Show Spelling… : 1048576 2147483647 @@ -1019,7 +1017,7 @@ - Q3VzdG9taXplIFRvb2xiYXLigKY + Customize Toolbar… 1048576 2147483647 @@ -1170,7 +1168,7 @@ Code: LucidaGrande - 1.300000e+01 + 13 1044 @@ -1277,6 +1275,7 @@ 265 {{298, 20}, {23, 23}} + 1 YES -2080244224 @@ -1981,13 +1980,39 @@ 516 + + + clickScriptButton: + + + + 521 + + + + clickScriptButton: + + + + 522 + + + + nameField + + + + 523 + YES 0 - + + YES + @@ -1995,7 +2020,7 @@ -2 - RmlsZSdzIE93bmVyA + File's Owner -1 @@ -3062,8 +3087,6 @@ YES YES - -1.IBPluginDependency - -2.IBPluginDependency -3.IBPluginDependency 103.IBPluginDependency 103.ImportedFromIB2 @@ -3241,8 +3264,8 @@ 417.IBPluginDependency 418.IBPluginDependency 419.IBPluginDependency - 420.IBPluginDependency 470.IBEditorWindowLastContentRect + 470.IBPluginDependency 470.IBWindowTemplateEditedContentRect 470.NSWindowTemplate.visibleAtLaunch 470.windowTemplate.hasMinSize @@ -3264,7 +3287,6 @@ 489.IBPluginDependency 490.IBPluginDependency 491.IBPluginDependency - 493.IBPluginDependency 5.IBPluginDependency 5.ImportedFromIB2 503.IBPluginDependency @@ -3313,117 +3335,115 @@ YES com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilderKit - com.apple.InterfaceBuilderKit com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{596, 852}, {216, 23}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{522, 812}, {146, 23}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{436, 809}, {64, 6}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{608, 612}, {275, 83}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{187, 434}, {243, 243}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{608, 612}, {167, 43}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{608, 612}, {241, 103}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{525, 802}, {197, 73}} {{170, 285}, {478, 20}} com.apple.InterfaceBuilder.CocoaPlugin - + {74, 862} {{6, 978}, {478, 20}} com.apple.InterfaceBuilder.CocoaPlugin @@ -3432,18 +3452,18 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{608, 612}, {215, 63}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin {{437, 242}, {86, 43}} com.apple.InterfaceBuilder.CocoaPlugin @@ -3491,11 +3511,11 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin {{18, 855}, {341, 122}} + com.apple.InterfaceBuilder.CocoaPlugin {{18, 855}, {341, 122}} - - + + {341, 122} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3515,11 +3535,10 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{0, 926}, {93, 43}} + {{0, 926}, {90, 43}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3527,38 +3546,38 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - {{182, 102}, {245, 183}} + + {{182, 102}, {242, 183}} com.apple.InterfaceBuilder.CocoaPlugin - + {{23, 794}, {245, 183}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + {{145, 474}, {199, 203}} com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin - + @@ -3577,7 +3596,7 @@ - 519 + 523 @@ -3589,6 +3608,7 @@ YES YES + clickScriptButton: copyGlyphCharacter: search: @@ -3596,6 +3616,31 @@ YES id id + id + + + + YES + + YES + clickScriptButton: + copyGlyphCharacter: + search: + + + YES + + clickScriptButton: + id + + + copyGlyphCharacter: + id + + + search: + id + @@ -3605,6 +3650,7 @@ codeField glyphView glyphViewMenu + nameField searchField @@ -3613,6 +3659,41 @@ NSImageView NSMenu NSTextField + NSTextField + + + + YES + + YES + codeField + glyphView + glyphViewMenu + nameField + searchField + + + YES + + codeField + NSTextField + + + glyphView + NSImageView + + + glyphViewMenu + NSMenu + + + nameField + NSTextField + + + searchField + NSTextField + @@ -3621,9 +3702,669 @@ + + YES + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSBrowser + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSBrowser.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSDocument + NSObject + + YES + + YES + printDocument: + revertDocumentToSaved: + runPageLayout: + saveDocument: + saveDocumentAs: + saveDocumentTo: + + + YES + id + id + id + id + id + id + + + + YES + + YES + printDocument: + revertDocumentToSaved: + runPageLayout: + saveDocument: + saveDocumentAs: + saveDocumentTo: + + + YES + + printDocument: + id + + + revertDocumentToSaved: + id + + + runPageLayout: + id + + + saveDocument: + id + + + saveDocumentAs: + id + + + saveDocumentTo: + id + + + + + IBFrameworkSource + AppKit.framework/Headers/NSDocument.h + + + + NSDocument + + IBFrameworkSource + AppKit.framework/Headers/NSDocumentScripting.h + + + + NSDocumentController + NSObject + + YES + + YES + clearRecentDocuments: + newDocument: + openDocument: + saveAllDocuments: + + + YES + id + id + id + id + + + + YES + + YES + clearRecentDocuments: + newDocument: + openDocument: + saveAllDocuments: + + + YES + + clearRecentDocuments: + id + + + newDocument: + id + + + openDocument: + id + + + saveAllDocuments: + id + + + + + IBFrameworkSource + AppKit.framework/Headers/NSDocumentController.h + + + + NSFontManager + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSImageCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSImageCell.h + + + + NSImageView + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSImageView.h + + + + NSMatrix + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSMatrix.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSMovieView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMovieView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSPanel + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSPanel.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSTableView + NSControl + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextField + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTextField.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES ../chartool.xcodeproj 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {9, 8} + {7, 2} + + diff --git a/chartool/objective-c/JavaScriptEngine.m b/chartool/objective-c/JavaScriptEngine.m index 2797d7dd..fc2e24ea 100644 --- a/chartool/objective-c/JavaScriptEngine.m +++ b/chartool/objective-c/JavaScriptEngine.m @@ -6,8 +6,53 @@ // Copyright 2011 mshio. All rights reserved. // +#include #import "JavaScriptEngine.h" +NSString* getNSStringFromParameter(JSContextRef ctx, + JSObjectRef arg, + JSValueRef* jobjExp) { + JSStringRef s = JSValueToStringCopy(ctx, arg, jobjExp); + size_t bufferSize = JSStringGetMaximumUTF8CStringSize(s); + char* buffer = (char*) malloc(bufferSize); + JSStringGetUTF8CString(s, buffer, bufferSize); + NSString* ret = [[NSString alloc] initWithUTF8String: buffer]; + + return ret; +} + +static JSValueRef jsAlert(JSContextRef ctx, + JSObjectRef jobj, + JSObjectRef jobjThis, + size_t argLen, + const JSObjectRef args[], + JSValueRef* jobjExp) { + if (argLen) { + NSString* str = getNSStringFromParameter(ctx, args[0], jobjExp); + + NSAlert * alert = [[NSAlert alloc] init]; + [alert setMessageText: str]; + [alert runModal]; + } + return JSValueMakeUndefined(ctx); +} + +static JSValueRef jsOpenFile(JSContextRef ctx, + JSObjectRef jobj, + JSObjectRef jobjThis, + size_t argLen, + const JSObjectRef args[], + JSValueRef* jobjExp) { + BOOL ret = NO; + if (argLen) { + NSString* str = getNSStringFromParameter(ctx, args[0], jobjExp); + + ret = [[NSWorkspace sharedWorkspace] openFile: str]; + } + return JSValueMakeBoolean(ctx, ret); +} + + @implementation JavaScriptEngine - (void) setContext: (JSGlobalContextRef) ctx { @@ -22,6 +67,19 @@ return result; } +- (void) setFunction: (JSObjectCallAsFunctionCallback) cfunc withName: (const char*) name { + JSObjectRef object = JSContextGetGlobalObject(context); + JSStringRef nm = JSStringCreateWithUTF8CString(name); + JSObjectRef func = JSObjectMakeFunctionWithCallback(context, nm, cfunc); + JSObjectSetProperty(context, object, nm, func, kJSPropertyAttributeNone, NULL); + JSStringRelease(nm); +} + +- (void) setFunctions { + [self setFunction:(JSObjectCallAsFunctionCallback) jsAlert withName: "alert"]; + [self setFunction:(JSObjectCallAsFunctionCallback) jsOpenFile withName: "openFile"]; +} + - (void) loadScript { NSString* script; NSString* path = @"./js/charpalette.js"; @@ -30,6 +88,7 @@ script = [NSString stringWithContentsOfFile: path encoding: NSUTF8StringEncoding error: &error]; if (script) { [self evaluateScript: script]; + [self setFunctions]; } else { NSLog(@"the js file is not found"); }