2011年3月15日火曜日

PDFkit(その2)

PDFkitについて調べながらコードを少し書く。

本日書いたのはこれだけ。

-(void)mouseDown:(NSEvent *)theEvent{
 
    PDFPage* page=[self currentPage];
    NSPoint point=[self convertPointFromBase:[theEvent locationInWindow]];
                   
    PDFSelection* sel=[page selectionForWordAtPoint:[self convertPoint:point toPage:page]];
    //NSLog(@"%@",[sel string]);
    NSPasteboard* pb=[NSPasteboard generalPasteboard];
    [pb setString:[sel string] forType:NSPasteboardTypeString];
    //NSLog(@"%@",[pb stringForType:NSPasteboardTypeString]);
    NSPerformService(@"Look Up in Dictionary" , pb);
}

カスタムPDFViewの中のmouseDown。
PDFSelection* sel=[page selectionForWordAtPoint:[self convertPoint:point toPage:page]];
こいつでマウスクリックした場所にある単語を拾うことはできる。しかしそれをPasteboardに書きこむことができないみたい。NSPasteboardの使い方がよくわからないや。明日以降勉強。

上記のコードで、一応辞書.appが起動するところまでは確認できた。ただし渡している単語はNSPasteboardTypeString、というかNSだけという不思議。しかも辞書.appはウィンドウを開いちゃうし。

PDFView、右クリックすると単語を選択してサービスメニューを開くところまで実装されているなあ。空白部分で右クリックすれば、PDF用のサービスメニューが開く。よくできているクラスだ。

追記:
[pb declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
をsetString前に書くと無事動作する。10.6以降でもやはり必要なのね。

0 件のコメント:

コメントを投稿