itok's Lab

昔の開発ネタを記録として残してます

2007-01-01から1ヶ月間の記事一覧

ドキュメントwindowをずらさないで表示

Document-Based アプリケーションを作っていると、新しく Window を開くたびに自動的に Window の位置がずらされて表示されますよね。ずらすかどうかは NSWindowController の↓のメソッドで制御できます。 -(void) setShouldCascadeWindows:(BOOL)flag; もち…

NSViewの座標系を回転

描画領域である NSView の座標系を丸ごと回転させる方法。メソッドとしては2種類あります。 -(void) setBoundsRotation:(float)angle; // angle は反時計回りの度数指定 -(void) setFrameRotation:(float)angle; もちろんのことながら、回転することによって…

動的なbinding

プログラム上で Cocoa binding を行うには bind:toObject:withKeyPath:options: を使います。こんな感じで。 // binding のオプション // (NSValueTransformer の指定とか、初期値の指定とかいろいろ) NSDictionary* options = [NSDictionary dictionaryWith…

CocoaでいわゆるURI encode

Cocoaといいつつ、実はCoreFoundationにしかメソッドがなかったりしますけれど、いわゆるところのURI encode/decode(%エスケープ)を行う方法。encode はこう。 // 通常文字列 → %エスケープ (encode) CFStringRef CFURLCreateStringByAddingPercentEscapes…

キーイベントを生成する

例えばリターンキーイベントを Window に送る場合はこんな感じ。 NSEvent* event = [NSEvent keyEventWithType:NSKeyDown // キーイベントの種類(1) location:NSZeroPoint // イベントの起きた場所(2) modifierFlags:0 // モディファイアキーフラグ(3) times…

「Finderで開く」を実現する

ダウンロードした時なんかによくある「Finderで開く」の実現。Finder.app を指定してファイルを開いたりするのかと思ったらちゃんとメソッドありました。 [[NSWorkspace sharedWorkspace] selectFile:path inFileViewerRootedAtPath:nil];

直近に起きたイベントを取得

直近で起きたイベントを知りたい場合、これは簡単これでOK。 NSEvent* event = [NApp currentEvent]; ちなみに NSWindow にも同名のメソッドがあるけれど、中身は同じ(NSApplication のメソッドを呼び出している)らしいです。

アプリ更新フレームワーク:Sparkle

アプリ更新をRSSに埋め込むというAppcastingに対応したCocoaのフレームワークにSparkleというものがあります。これを使っている有名なアプリ群というと、、、CyberduckとかAdiumとかiTermとか日ごろお世話になっているものばかり。MITライセンスですし早速試…

NSMatrixの動的生成

NSCell を行列表示してくれる NSMatrix を動的生成(要するにコードでプログラム)してみましょう。 まず、行列を生成する前に、matrix に含まれる NSCell がどの種類の cell かを指定しておきましょう。(既存の cell を登録するなら InterfaceBuilder でも…

NSTableViewの自動選択を解除する

NSArrayController をもちいて NSTableView の表示を行っている場合、データの一覧を表示させた時に、自動的に1番最初の行が選択された形になってしまいます。これをなんとかやめてもらえないか( NSTable の deselectAll: を呼んでもダメなのね)と思ったら…

段落スタイルの設定

文字列を描画したりする場合、NSRect を指定しての描画で「中央揃え」とかはみ出した文字を「...」で省略させたりとか、そういうことの設定には NSMutableParagraphStyle を使います。 まず、揃えに関してはこんな感じ。 -(void)setAlignment:(NSTextAlignme…

NSControlで -mouseDragged: をつかまえる

NSButton など NSControl のサブクラス(のサブクラス)を実装して、そこでマウスのドラッグを受け付けたい場合、 NSControl はもちろん NSResponder のサブクラスですから -(void)mouseDragged:(NSEvent*)event を上書きしてあげればよさそうです。が、うま…