カテゴリー別アーカイブ: Mac

New iPalmMemo

以前ちょっと書いたんですが、新しい iPalmMemo を作成中です。3 ペインで Mail.app に似た感じになります。メモが少ない場合はカテゴリの下にタイトルでも良いと思うのですが、多い場合は見づらいと思われたので変更する事にしました。左にカテゴリ一覧、右上にはタイトル一覧、右下には内容、となります。
また、Mail.app のメモも別ウインドウでは無くカテゴリの1種類として表示し、タイトル一覧からメモを参照出来る様になります。

開発中の画面

こんな感じです。

最近作成するソフトがどれも同じ様な感じになるのは気のせいです。

プログラムで使用するテンポラリファイルの場所

いまさら知った事が有りました。プログラムで一時ファイルを使う必要が有って /tmp に書き込んだりしていたのですが。どうやら、間違っていた様です、場所が。Apple の File Management ドキュメントを眺めていると(決して読んでる訳では無い)一時ファイルの格納場所に /tmp は使わない様に、と書かれているように見えたのです。じゃぁ何処を使えば良いのかと言うと NSTemporaryDirectory() を使えば良いらしいです。でも、また 10.4 と 10.5 で違うのでは無いかと両バージョンで実行してみました。

違いは最後にスラッシュが付くか、付かないか、の違いが有りました。もう少しで、また痛い目を見る所でした。これは NSSTring の stringByAppendingPathComponent を使って両バージョンで同じコーディングが出来ます。

NSSplitView

え〜 MailUnreadStatusBar のバグ修正、iPalmMemo のバグ修正とリリースしました。MailUnreadStatusBar は自分が使っているメールサーバと違った結果を返すサーバが有ったりで、中々難産です。
iPalmMemo の方は Intel Mac でのバグでしたが、リリースしてから2人バグレポートが有りました。まぁ iPalmMemo のユーザが少ないのも有りますが、やはり Palm ユーザが減少しているんでしょうかねぇ。

で、NSSplitView をプログラム起動時、前回終了した大きさで分割する方法です。以前から旨く出来なくて、色々調べても自分でスプリットビューを作るか、誰かが作成したのを利用させて貰うしか無いような感じでした。そこで、いつものようにいい加減な対処方法を思いついたので書いてみます。
NSSplitView のサブビューのフレームが保存されているとして、NSSplitView を表示する時に

[self performSelector:@selector(resizeMailIndextableView:) withObject:nil afterDelay:0.01];

なんて書いてみます。これは後で(afterDelay)このメソッド(resizeMailIndextableView:)を呼んでね、と言うやつです。
で、resizeMailIndextableView メソッド内で NSSplitView 内のサブビューのフレームを設定します。

– (void)resizeMailIndextableView:(id)object
{
 NSRect tableRect = [mView1 frame];
 [mView1 setFrame:mTableViewRect];
 [mSplitView adjustSubviews];
 if(tableRect.size.height != mTableViewRect.size.height)
  [self performSelector:@selector(resizeMailIndextableView:) withObject:nil afterDelay:0.01];
}

このメソッドの中でフレームを設定して希望する値になるまで自分自身を呼び続けます。
これを実行すると指定した大きさに、にょろっと変化します。2分割だと出来ましたが、2以上だとどうなるのかは不明です、どなたか実験してみて下さい。旨くいけばもうけもんです。
上記ソースだと高さを調整してますが、多分幅でも、両方でも OK だと思います。数行で出来るので、私はこれで良いです。