LDプレーヤー

ついに登場。(今更、という説もありますが、そこは気にしない)
もちろんオークションで中古なんですが、これでようやく、なぜか持っているLDのソフトをみることが出来ます。(ああ、でも、中古レコード屋さんでLDという選択肢が増えてしまうというのは、物欲上危険ではあるなあ・・・)DVD化されていないものっていまだにたくさんありますからねえ。ちなみに、パイオニアのCLD-C5Gというやつです。
これでとりあえず、DVD, CD, MD, LD, LPは全部再生可能、ということで。(Tapeはさすがにもうないですが)

Cocoa備忘録 移設

Cocoa備忘録ページを創設しました。blogベースでは長文が続いて大変かなあ、と思いまして。[INFOs]以下に設置しておりますので。
blogベース以外の部分において、更新日やメニューの配置などできる限り自動化させるように日々努力しているところです。なんか、本も買わずにPHPをちょこちょことをいじっております。これでなんとかなってるから不思議ですが・・・

初DVDバックアップ

昨日の続きですが、DVDに写真をどどっとバックアップしてみました。今までなら、CD-R4枚に分割しなければならなかった2.5GB分の写真が一気にバックアップできて、大感激。(そもそも2.5Gの写真って。。。という気はしますけれども、それは気にしない)
最近はDVD-Rのメディア自体も1枚100円以下(オークションで50枚送料込みで4000円以下のもありました)で手に入るようですし、これからのバックアップの主流はDVDですね。

明示的にコンテクストメニューを表示

control + 左クリックや右クリック以外のアクションでコンテクストメニューを表示させる方法。(CloCalXのダブルクリックでコンテクストメニューを表示させているのはこれ)
NSViewのサブクラスに数行のコードを書けば出来てしまうみたい。その表示させたいアクションの中で、

NSMenu* menu = [self menuForEvent:theEvent];

として、すでに実装されている(これは、コードで書いていても、nib上でつないでいても同じ)本来のコンテクストメニューをとってくる。それから、

[NSMenu popUpContextMenu:menu withEvent:theEvent forView:self];

とすれば、取得したメニューがコンテクストメニューとしてちゃんと表示されるのです。簡単簡単。

I-O DATA DVR-UEP8

ある意味思わず買ってしまいました。DVD±RWドライブ。8倍速だし、FireWireとUSB2.0両対応だし、2万以下で入手できたし。。。これでもっともっとバックアップがやりやすくなりますね。iTunesとかiPhotoのデータが一気に焼けそう。
これはWindows用なんですが、中身のパイオニア製DVR-107Dが10.3.3ではちゃんと認識されるとの情報でしたし、Mac最強(?)のライティングソフトToast対応してますからね。(ToastはJamつきで持ってたりします)
とはいえ、最初につないだときは、システムプロフィールでもCD-RWとしか認識されず、DVDをいれてもマウントされなかったので、焦りましたけれど、電源を入れ直したらうまく行きました。ちゃんとDVD±RWになってました。(とはいえ、手元にDVD±RWのディスクがないので、ライティングのテストはまだ)明日にでも会社帰りにディスクを買って、早速バックアップしてみよう。

Cocoa覚書 : 使用可能なフォント一覧表示

というわけで、予告通り、Cocoa覚書を再開します。すべての情報に関して一切責任はおいません。まずは、旧ページのものを。。。


わざわざフォントパネルを開くほどのことじゃないけども、とにかくフォントの一覧をメニュー形式で表示して選択できるようにしたい、ということ。
基本的にはこういう感じです。

NSFontManager *fontManager = [NSFontManager sharedFontManager];
NSMutableArray *fontArr = 
    [NSMutableArray arrayWithArray:[fontManager availableFontFamilies]];

これで、まずはフォントファミリー(ここではフォントファミリーの取得だけに限ってます)の一覧がfontArrにNSArrayの形で入ります。Mutableなのはソートしやすく、のため。(といってももちろんNSArrayのままでもソートは可能)
英語名のままでよければ、これをソートして(しなくてもいいけど)なにかしらのメニューに登録すればいいだけ、になります。アウトレットに直接アクセスするもよし、Cocoa Bindingをつかうもよし、ですね。
で、問題なのが、日本語名へのローカライズ。これは、ようするに、

[NSFontManager localizedNameForFamily:aString face:aFace];

でいいらしい。aStringがフォントファミリーの英語名で、aFaceはその種類。ここではファミリーだけを考えているからaFace=nilで大丈夫。つまりfontArrの内容を、全部これで書き換えてあげればよいのです。面倒だから、もう一つfontArrJというNSMutableArrayを作って、

NSEnumerator *enume = [fontArr objectEnumerator];
id obj;
while (obj = [enume nextObject]) {
    [fontArrJ addObject:
        [fontManager localizedNameForFamily:obj face:nil]];
}

こんな感じでどうでしょう。これをメニューに登録すればおしまい。ちなみに、ソートはこういうふうにどうぞ。

[fontArr sortUsingSelector:@selector(caseInsensitiveCompare:)];