「Dictionary.app」の版間の差分
提供: MacWiki
(→Tips) |
|||
行13: | 行13: | ||
* [[コンテクストメニュー]]で「“<i>検索語</i>”を調べる」を選んでもいい | * [[コンテクストメニュー]]で「“<i>検索語</i>”を調べる」を選んでもいい | ||
* 適当なアプリケーションで検索語を選択し、[[サービスメニュー]]の「辞書で調べる」を選ぶと辞書.appが起動して調べられる | * 適当なアプリケーションで検索語を選択し、[[サービスメニュー]]の「辞書で調べる」を選ぶと辞書.appが起動して調べられる | ||
+ | * dict: や x-dictionary: という[[URIスキーム]]で辞書.appを起動できる。例えば [[Terminal.app|ターミナル.app]] で <tt>open dict://<i>検索語</i></tt> あるいは <tt>open x-dictionary:<i>検索語</i></tt> と入力すると辞書.appが起動して調べられる。 | ||
==プログラミング== | ==プログラミング== |
2013年5月12日 (日) 18:34時点における版
辞書.app とは?
Mac OS X 10.4(Tiger)以降にバンドルされている辞書アプリケーション
環境設定で辞書ソースを選択したり、順序をカスタマイズできる。
- New Oxford American Dictionary
- Oxford American Writer's Thesaurus
Tips
- Cocoaアプリケーションで、単語を選択あるいはポインタで指して ⌃⌘D (Ctrl+Command+D)とするとポップアップで意味が表示される
- コンテクストメニューで「“検索語”を調べる」を選んでもいい
- 適当なアプリケーションで検索語を選択し、サービスメニューの「辞書で調べる」を選ぶと辞書.appが起動して調べられる
- dict: や x-dictionary: というURIスキームで辞書.appを起動できる。例えば ターミナル.app で open dict://検索語 あるいは open x-dictionary:検索語 と入力すると辞書.appが起動して調べられる。
プログラミング
- Dictionary.app で指定単語を調べた結果を取得する。APIは、
CFStringRef DCSCopyTextDefinition ( DCSDictionaryRef dictionary, CFStringRef textString, CFRange range );
- 第一辞書(「環境設定...」内)ではない辞書を指定して調べる。参考情報:Using Dictionary.app’s thesaurus function programmatically on OSX (preferably via Ruby) プログラム例:
/* compile with: gcc -o dictionary -framework CoreServices -framework Foundation dictionary.m */ #import <Foundation/Foundation.h> #include <CoreServices/CoreServices.h> #include <string.h> int main(int argc, char *argv[]) { int i; char *dic=""; NSString *word; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; NSMutableDictionary *dictionaryPrefs = [[userDefaults persistentDomainForName:@"com.apple.DictionaryServices"] mutableCopy]; NSArray *activeDictionaries = [dictionaryPrefs objectForKey:@"DCSActiveDictionaries"]; NSString *dicpath = @"/Library/Dictionaries/"; NSString *dicname = @""; for (i=1;i<argc;i++) { if (!strcmp(argv[i],"-d")&&i+1<argc) { dic=argv[++i]; if (!strcmp(dic,"thesaurus")) dicname = @"Oxford American Writer's Thesaurus.dictionary"; else if (!strcmp(dic,"oxford")) dicname = @"New Oxford American Dictionary.dictionary"; } else word = [NSString stringWithUTF8String:argv[i]]; } NSArray *useDictionaries = activeDictionaries; if (![dicname isEqualToString:@""]) useDictionaries = [NSArray arrayWithObject:[dicpath stringByAppendingString:dicname]]; [dictionaryPrefs setObject:useDictionaries forKey:@"DCSActiveDictionaries"]; [userDefaults setPersistentDomain:dictionaryPrefs forName:@"com.apple.DictionaryServices"]; puts([(NSString *)DCSCopyTextDefinition(NULL, (CFStringRef)word, CFRangeMake(0, [word length])) UTF8String]); [dictionaryPrefs setObject:activeDictionaries forKey:@"DCSActiveDictionaries"]; [userDefaults setPersistentDomain:dictionaryPrefs forName:@"com.apple.DictionaryServices"]; return 0; }