ページ

ラベル Quick Look APIs の投稿を表示しています。 すべての投稿を表示
ラベル Quick Look APIs の投稿を表示しています。 すべての投稿を表示

2008年12月18日木曜日

QuickLookパネルにアプリ起動アイコン追加

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

今度はアプリ起動アイコンを追加。


アイコンを押すとプリファレンスで設定したアプリケーションが起動する。下はプレビューを起動させたところ。


- - - -
当初の思惑とは別にQuikLookパネルがキャプチャ後のハブとなりつつある。
オプションの扱いだったが、これを中心として操作の流れを見直した方が良さそう。

2008年12月17日水曜日

QuickLookパネルにリテイクアイコン追加

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

リテイク(撮り直し)アイコンを追加した。


このアイコンを押すと、直前のキャプチャ画像をゴミ箱へ移動した後、直前のキャプチャモードを再起動する。


- - - -
コーディングよりもアイコン作成に時間がかかった。。

2008年12月16日火曜日

QuickLookパネルに設定アイコン追加

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

こんな感じ。


歯車?のアイコンを押すと環境設定ウィンドウを開く。

- - - -
歯車の作り方は下記のページが参考になった。目から鱗。
Illustrator(イラストレーター)で歯車(ねじ)の作成

2008年11月24日月曜日

Quick Look APIs(その10)複数の画像

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

QuickLook パネルを表示する APIはNSURLを配列で受け取る。試しに複数の画像のNSURLを渡してみた。
コードはこんな感じ。

 NSMutableArray* list = [NSMutableArray array];
NSBundle* bundle = [NSBundle mainBundle];
[list addObject:[NSURL fileURLWithPath:[bundle pathForImageResource:@"image"]]];
[list addObject:[NSURL fileURLWithPath:[bundle pathForImageResource:@"buzz"]]];
[list addObject:[NSURL fileURLWithPath:[bundle pathForImageResource:@"081123-0009"]]];
[list addObject:[NSURL fileURLWithPath:[bundle pathForImageResource:@"pro"]]];

[[QLPreviewPanel sharedPreviewPanel] setURLs:list
currentIndex:0
preservingDisplayState:YES];


自動的にスライドショー用のアイコンが付く。左下はプログラムで付けたカスタムボタン。


インデックス表示も標準で動く。


サンプル:QuickLook-5.zip

2008年11月23日日曜日

直前のキャプチャ画像をゴミ箱へ捨てる

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

QuickLookパネルへアイコンを一つ追加する。表示しているキャプチャ画像を削除する目的で使うのでゴミ箱のアイコンを作ってみた。


ThinButtonBarクラスを使いこれを QuickLookパネルへ貼付ける。 こんな感じ。


次にボタンが押された時に表示中のキャプチャ画像ファイルをゴミ箱へ捨てる処理を実装する。

ファイルをゴミ箱へ捨てる(=移動する)操作は NSWorkspace#performFileOperation:source:destination:files:tag:を使う。

こんな感じ。

[[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation
source:dir
destination:@""
files:files
tag:nil];


source: にディレクトリパス、filesに移動対象のファイルリストを渡してやる。

- - - -
前から欲しかった機能がこれで1つ片付いた。

2008年11月22日土曜日

SimpleCapへQuickLookパネルを組み込む

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

さて QuickLookの検証が一通りできたので SimpleCapへ組み込むことにする。

新たに QuickLookController クラスを追加し、ここで QuickLookパネルや今後追加するカスタムボタンの処理をさせる。

QuickLookController.h

@interface QuickLookController : NSObject {

BOOL _is_available;
NSRect _start_frame;
}

+(QuickLookController*)sharedController;
-(void)showWithURLs:(NSArray*)urls;
-(void)showWithURL:(NSURL*)url startFrame:(NSRect)start_frame;
-(void)showWithURLs:(NSArray*)urls startFrame:(NSRect)start_frame;
-(BOOL)isAvailable;
-(void)close;

@end


このクラスのインスタンスを一つ作っておき(シングルトン)、#sharedController でこれを取得して利用する。SimpleCapでは全ての種類のキャプチャの制御を CaptureControllerで行っているので、この中のキャプチャ終了時のタイミングで QuickLookパネルを呼出すようにした。

これでキャプチャ終了時に QuickLookパネルが開く様になった。


また QuickLookパネルの利用の有無をプリファレンスで設定できるようにしておいた。


QuckLookパネルの呼出しは簡単にできたのだが、表示する時の拡大アニメーションに対応する為のキャプチャ位置を算出するのが少し手間がかかった。

- - - -
表示ができたので次はカスタムボタンを加えていく。まずはキャプチャ画像を削除(ゴミ箱へ移動)するボタンを加えてみよう。

2008年11月21日金曜日

Quick Look APIs(その9)非アクティブで表示

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

QuickLook パネル は NSPanel から派生しており、デフォルトではアプリケーションが非アクティブになると隠れてしまう。そこで試しに NSWindow#setHidesOnDeactive: を使ってみたところ、非アクティブになってもウィンドウを表示させることができた。

[[QLPreviewPanel sharedPreviewPanel] setHidesOnDeactivate:NO];


前回のサンプルへ上の1行を加えて実行し、ファインダ上の画像ファイルのQuickLookと同時に表示させてみた。



いろいろと触ってみたが簡易ビューアとして自分で作るよりは手っ取り早く利用できそうなのがわかった。SimpleCapで採用しよう。

2008年11月20日木曜日

Quick Look APIs(その8)カスタムボタン

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

SimpleCapで使っているボタンクラス ThinButtonBar を QuickLookパネルへ付けてみた。



問題なく動く。

標準のボタンを表示させないと下の黒いエリアの高さが縮まる。



サンプル:QuickLook-4.zip

2008年11月19日水曜日

Quick Look APIs(その7)カスタムボタン

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

試しに新規にビューを加えてみる。

まず赤色の矩形を描くビューを用意する。

@implementation View
- (void)drawRect:(NSRect)rect {
// Drawing code here.
NSLog(@"drawRect:%@", NSStringFromRect(rect));
[[NSColor redColor] set];
NSRectFill(rect);
}


これを QuickLookパネルのサブビューへ追加する。

NSView* content_view = [[QLPreviewPanel sharedPreviewPanel] contentView];
View* view = [[[View alloc] initWithFrame:NSMakeRect(10, 10, 100, 100)] autorelease];
[content_view addSubview:view];



できた。


おお意外と簡単。

2008年11月18日火曜日

Quick Look APIs(その6)カスタムボタン

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

QuickLookパネルは NSPanel から派生しているので、#sharedPreviewPanelで取得したインスタンスからいろいろと情報が取り出せる。先ずは Content View を取り出してみよう。

 NSView* content_view = [[QLPreviewPanel sharedPreviewPanel] contentView];
for(NSView* v in [content_view subviews]) {
NSLog(@"%@: %@", v, NSStringFromRect([v frame]));




上の画像を表示させた結果はこんな感じ。
2008-11-16 12:57:49.251 QuickLook[44826:10b] : {{0, 45}, {322, 427}}
2008-11-16 12:57:49.263 QuickLook[44826:10b] : {{0, 3}, {322, 39}}


Content View のサブビューは2つある。サイズからみて恐らくこんな感じだろう。


APIが見つからないので自分でこれらのビューをカスタイマイズするか、新たにビューを加えるかの方法を取る事になる。
どっちにしてもビューのインスタンスが手に入れば後は力任せ?で何でもできる。

サンプル:QuickLook-3.zip

2008年11月17日月曜日

Quick Look APIs(その5)カスタムボタン

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

QuickLookパネルにカスタムのボタンを付けたい。

標準のボタンはこんな感じ。


これらのいくつかはメソッドで制御できる。例えばフルスクリーンボタンの表示は下記メソッドが使える。

- (void)setShowsFullscreenButton:(BOOL)fp8;



QuickLookにカスタムボタンをつける情報はほとんどみつからなかった。公開APIではないので仕方はないが。
CocoaDevでほんの少しだけボタンについて触れた書き込みがあったぐらい。
CocoaDev: QuickLook (このページの一番下)。


さてどうするか。

2008年11月16日日曜日

Quick Look APIs(その4)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

Quick Look のメモ

・QuickLookのパネルはアプリケーションプロセス毎に1つ割当られている(シングルトン)。
・パネルはそのアプリケーションがアクティブな時だけ表示される。

つまり言い換えると MacOSX上で表示できる QuickLookパネルは常に1つだけということ。

例えばファインダである画像をQuickLookパネルで表示させる。


この状態で他の画像を選択すると画像が入れ替わる。新しいパネルは開かれない。


この状態で他のアプリケーションを選択するとパネルは消える。


あるいは別のアプリがQuickLookパネルを表示させていた場合はそちらのパネルが表示される。

2008年11月15日土曜日

Quick Look APIs(その3)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

引き続き QuickLook。
delegateメソッド #previewPanel:frameForURL:を実装すると、表示する時と閉じる時に拡大(縮小)のアニメーションがつく。こんな感じ。


このアニメーションを使うには最初にまず delegateを指定し、

[[[QLPreviewPanel sharedPreviewPanel] windowController] setDelegate:self];


#previewPanel:frameForURL:を実装する。
- (NSRect)previewPanel:(NSPanel*)panel frameForURL:(NSURL*)URL
{
return NSMakeRect(0,0,100,100);
}


戻り値の NSRect が最初の位置とサイズを決める。上の例の場合、起点が(0,0)で大きさが (100,100)の画像が拡大(縮小)アニメーションの初期状態となる。

サンプル:QuickLook-2.zip

2008年11月14日金曜日

Quick Look APIs(その2)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

前回紹介したページを参考にサンプルを作ってみる。簡単にできた。



QuickLookのパネルを表示するのに最低限必要なのは3つ。

(1) ライブラリのロード

[[NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/QuickLookUI.framework"] load];


(2) 表示対象のURLを設定
 [[QLPreviewPanel sharedPreviewPanel] setURLs:list
currentIndex:0
preservingDisplayState:YES];

setURLs に NSURLの配列(NSArray)を渡す。

(3) パネルの表示
[[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFrontWithEffect:2];


サンプルはこんな感じ。
#import "AppController.h"
#import "QuickLook.h"

#define QLPreviewPanel NSClassFromString(@"QLPreviewPanel")

@implementation AppController
- (void)awakeFromNib
{
[[NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/QuickLookUI.framework"] load];
}

- (IBAction)look:(id)sender
{
NSMutableArray* list = [NSMutableArray array];
NSBundle* bundle = [NSBundle mainBundle];
NSURL* url = [NSURL fileURLWithPath:[bundle pathForImageResource:@"image"]];
[list addObject:url];

[[QLPreviewPanel sharedPreviewPanel] setURLs:list
currentIndex:0
preservingDisplayState:YES];
[[QLPreviewPanel sharedPreviewPanel] makeKeyAndOrderFrontWithEffect:2];
}

@end



サンプル:QuickLook-1.zip

2008年11月13日木曜日

Quick Look APIs(その1)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

Quick Lookが SimpleCapでビューアとして利用できないかと考えている。
そこでまず調べてみた。どちらかというと(特に日本語情報は)利用よりもプラグインを使う情報が多い。
調べる内に目的の情報が載っているページが見つかった。

Ciaran Walsh's Blog
Quick Look APIs


このページには使い方の解説とサンプルのソースコードがついていてかなり参考になる。
試しにサンプルをビルドして実行してみた。



実行するとディレクトリツリーが現れる。画像などを選びスペースバーを押すと QuickLookのウィンドウ(パネル?)が現れる。


複数の画像も普通に扱える。