0.6 のころ (更新履歴)
March 21, 2008:
pKizzy 0.6.10 (built on Tiger/compatible with Leopard バージョン) 公開です。
- 主な変更は,待望 の日本語リソース追加。
どうして作者 が日本人なのに,今まで日本語リソースを用意してこなかったかというと,バージョンアップする度に2言語分のリソースをメンテしていく手間が面倒だったから。
どれか1つ選ぶとすれば,英語がいいかなぁ,と。
なので,日本語リソースを追加したということは,いわば,開発終了宣言と言えなくもない。
不具合などあれば修正はしていくつもり 。
- その後,Leopard に固有の不具合をいくつか確認した。
- インクリメンタル・サーチしたときの絞り込み条件を設定するボタンの表示がおかしい。
ON 状態のボタンは本来,押し込まれたような表示 (黒っぽくなる) になるはずなんだけど,そうならない。
カーソルが通過するときは反応する。
この recessed bezel style のボタンは,Tiger ではコードで指定するしかなくて,Tiger 上ではちゃんと動作するんだけど,Leopard ではおかしくなる。
Leopard 用にビルドする場合は, IB 上で設定できて,当然 Leopard 上でちゃんと動く。
recessed button の仕様が変わってしまったのかも。
Leopard 上で正しく動作するように,Tiger 上でコードでどう書けばいいのか,方法はあるかも知れないんだけど,よく分からん。
ま,状態が把握しづらいだけで,実害はないでしょう。
- NSTokenField も挙動が変わった。
トークンの内容をメニューで変更しても,表示がすぐに更新されない。
内容がちゃんと変更されているのは,プレビューを見ていれば分かる。
あと,選択範囲 (カーソル位置) の定義も変わったんだろうか。
編集中におかしな挙動になる時がある。
こちらは Leopard でビルドしても同様。
- その他もちょこちょこバグ・フィックスしたはずだけど,詳細は忘れた (^^;
今回は,こんなところで。
December 11, 2007:
pKizzy 0.6.9 (built on Tiger/compatible with Leopard バージョン) 公開です。
ようやく Leopard を入手して,動かしてみるとやっぱり不具合が見つかった (^^;
とりあえず認識した不具合の修正バージョンです。
ビルドは Tiger でやってるので,Tiger でも変わらず動くはず。
- 情報パネルの (ファイル名) "Edit..." ボタンの位置がずれることがあった不具合の修正。(Tiger/Leopard)
- ドラッグしたアーティクルをドロップできない不具合の修正。(Leopard)
環境によっては Tiger でも起きてたかも。
- それ以外は,今のところ,だいたいちゃんと機能はしているっぽい。
特に,グループ操作まわりなんか,Tiger よりお行儀よく動いているようだ。
outline view 関係では,Leopard で NSTreeNode というクラスが追加されてたりしてる。
要するに必要なパーツが Tiger では欠けてたということ。
tree controller まわりではけっこう苦労したわけだけど・・・やっぱりお前かっ! という感じ。
- ちなみに,hpDrafter の方は,今のところ問題なさそうなのでアップデートも保留。
今回はこんなところで。
Leopard 専用版は,ぼちぼち試していく予定。
November 25, 2007:
pKizzy 0.6.8 unLeoparded 公開です。
- メモリ・リークのバグを発見したので修正。
0.6.7 で導入されたバグではなく,ずっと抱えていたらしい。
アクティビティ・モニタでチェックしてみたところ,2∼3 MB ぐらいは違いそうなので,修正版を公開することにした。
- Bibliographer で作成したリストをエクスポートする際, HTML タイプの bibliographer の場合に RTF 形式のファイルをエクスポートするよう変更。
- Bibliographer の編集で,オブジェクト挿入後の選択範囲の不具合を修正。
- Source Titles Manager の不具合をいくつか修正。
以下,ひとりごと。
- プレーン・テキストをファイル出力するときには NSString の writeToFile: atomically: メソッドを使えばいい。
それに対して,アトリビューテッド・テキストを RTF 形式で出力するメソッドは NSString にも NSAttributedString にもなくて,できないと思ってた。
しかし,NSText に writeRTFDToFile: atomically: メソッドを発見。
これでできる・・・かと思ったら,これがとんでもない・・・。
このメソッドを使うときには,filename (パス) を指定するわけだけど,そのファイル名のファイルが作られるわけではない。
filename を名前にしたフォルダが作られ,その中に RTF ファイルが作られる。
filename のファイルやフォルダが存在した場合は,容赦なく上書き。
フォルダ内のファイルはすべて消去。
そんなこんなをテストしてる間に,約3年間蓄積してきた PDF やら構築したデータベースが,一瞬で葬り去られてしまった・・・ (T T
・・・Leopard 買お・・・。
で,本当は,NSAttributedString メソッドの Application Kit Additions にある RTFFromRange: documentAttributes: を使って作った NSData から writeToFile: atomically: すればよかったらしい。
今回はこんなところで。
October 25, 2007:
ひさびさの更新。pKizzy 0.6.7 公開です。
いよいよ Leopard 発売日も迫ってきたことだし,これが Leopard 前最後の更新となるか?
ちなみに,開発者向け Leopard なぞは触ってないので,Leopard 完全未対応 !!
・・・ま,未対応とは言っても,動かないことはないとは思います。
「グループを追加」「スマート・グループを追加」ボタンのアイコンを変更してみた。
- あちこちのボタンを NSSegmentedControl に。
単一ボタンも変更して,外見を統一。

情報パネルの "edit..." ボタンを押すと

ファイル名編集モードに
filename 編集機能を追加。
基本的に pKizzy では「ファイルの存在は忘れてしまえ」が基本コンセプトなので,ファイル名もいじれなくしてた。
でも,どうしてもファイル自体を扱う必要も出てくるし,ファイル名まで管理したい人もいるかな,とは思ってた。
そんなわけで,編集可能に。
編集は,アーティクルの情報パネル上でのみ可。
Filename 欄の横の "edit..." ボタンを押すと編集モードに入ります。
編集終了まで,その他の GUI はロックされ,操作できなくなります。
あくまで例外処理と思ってるので,制限はきつめにしてあります。
このロックのため,bool 変数を用意して,情報パネル上のオブジェクト の enabled を binding することで一括で disable してる。
しかし,combo box にはこの binding が効かない。
というわけで,combo box だけコードで明示的に enabled 制御して解決。
- グループ削除時の不具合を修正。
- グループのドラッグ&ドロップの挙動の修正や最適化なんかも試みてた。
しかし,どうも様子がおかしい。
いろいろいじった挙げ句に,とりあえず,ちゃんと動く状態に戻したつもりではいるけど,不具合が残ってるかも。
- 複数ファイルオープン後に NSApplication の replyToOpenOrPrint: メソッドを呼ぶように変更。
効果は不明。
以下,ひとりごと。
- segmented control は,ぱっと見,I.B. の GUI や binding でできそうな設定でも,いろいろコードで書く必要がある。
具体的には,
- enabled の 制御 (setEnabled: forSegment:)
- アイコン使用時のラベル消し (setLabel:nil forSegment:)
- クリック時のアクション ([sender selectedSegment])
- メニューへの接続 (setMenu: forSegment:)
など。
とにかく,I.B. が各 segment の設定に対応していないせいか?
Leopard では bindable になってたらいいなぁ・・・。
- グループのドラッグ&ドロップでの並べ替えなんかを最適化しようとしてたら,訳の分からんエラーに出くわすことが多い。
たとえば,
- NSTreeController の removeObjectAtArrangedObjectIndexPath: メソッドを呼んだとき,
*** -[NSCFString setString:]: nil argument
Exception raised during posting of notification. Ignored. exception: *** -[NSCFString setString:]: nil
とエラーが出る。
引数には NSIndexPath オブジェクトを渡しているだけで,string なんて知らんがな。
-
*** -[_NSStateMarker boolValue]: selector not recognized [self = 0x308410]
Exception raised during posting of notification. Ignored. exception: *** -[_NSStateMarker boolValue]: selector not recognized [self = 0x308410]
なんていうエラーもよく見るような気が。
NSStateMarker なんて,リファレンスやドキュメントにも載ってないし,使った覚えはない。
この辺って,NSTreeController のバグだと思うんだけど。
これも Leopard では直ってたらいいなぁ・・・。
今回は,こんなところで。
March 27, 2007:
pKizzy 0.6.6 公開。
さらに不具合が見つかったため,修正バージョンのリリースです。
- ルート・レベルにグループ (スマートグループ) を追加したときに正常に動作しない場合があった不具合の修正。
- スマート検索結果をグループに変換した時,新しいグループが正しく挿入されていなかった不具合の修正。
- スマート検索ウィンドウで Do It ボタンが押せない場合があった不具合の修正。
- 同梱のプラグインが PowerPC 用だったので,universal binary のものと入れ替えた。
pAMEx pack のエクストラクタは UB だったので,そっちからダウンロードしてもらえていれば問題なかったはず。
- スクリーンショット のページを作ってみた。
マニュアル作りをサボってるもんで,簡易マニュアル代わりに見てもらってもいいかなぁ,とも思います。
ぼちぼちと充実させていくつもり・・・
今回は,こんなところで。
February 12, 2007:
恒例の前言撤回。
pKizzy 0.6.5 公開です。
先日の 0.6.4 で不具合が見つかったため,修正版のリリースです。
- 前回実装した,Apple Script を利用した「ファイルをゴミ箱へ移動」機能の,PowerPC 機で起きる不具合を修正。
Power PC 機ではアプリ起動後に1ファイルしか削除が実行されませんでした。
Intel Mac では大丈夫だった模様。
- アーティクル-ファイル対応関係チェッカの表示まわりを変更。
具体的には,
- コラムのヘッダを表示
- 横線をやめて交互に色付きの背景色に
- アーティクルの filename 表示
- null placeholder を設定
- テーブル内のアーティクル/ファイルを不選択時にボタンを非アクティブ化
といったところ。
アーティクルに関しては表示されている情報が少ないので,どのアーティクルか特定が難しいかもしれませんが,アーカイブ/ゴミ箱内に表示させるボタンがあるので,その辺を活用してみてください。
今回の変更は,こんなところで。
以下,ひとりごと・・・。
- 前回書いた,HFS 形式へのパス変換だけど,どうも動作がおかしいので調べてみた。
関連するのは以下の部分。
FSCatalogInfo catalogInfo;
for( n = 0 ; (err == noErr) && (catalogInfo.nodeID != fsRtDirID) && (n < 100) ; n++ ){
err = FSGetCatalogInfo( &fsRef, kFSCatInfoNodeID, &catalogInfo, &names[n], nil, &fsRef );
}
ここでは,指定したファイルからはじまって,階層を1つずつ遡りながら,各階層のディレクトリ (ファイル) 名を names 配列に記録していく。
で,ルート・ディレクトリに達したことを青字部分で判定してループを抜ける。
ここで問題は,PowerPC の場合,catalogInfo に前回にこのパス変換関数が呼ばれたときのポインタ値が残っているらしいこと。
つまり,2回目以降にこの関数が呼ばれた時には,catalogInfo はルート・ディレクトリの情報を持っているため,いきなりループを抜けることになる。
Intel Mac の場合は,期待通りに動いてくれるみたい。
暗黙に,関数が呼ばれるたびに初期化されているのかな。
というわけで,上の部分を下のように書き直して,直ったみたい。
FSCatalogInfo catalogInfo;
n = 0;
do{
err = FSGetCatalogInfo( &fsRef, kFSCatInfoNodeID, &catalogInfo, &names[n++], nil, &fsRef );
}while( (err == noErr) && (catalogInfo.nodeID != fsRtDirID) && (n < 100) ) ;
しかし,Apple のサイトのサンプル・コードのままだと不具合が出るっていうのは,なんだかなぁ・・・。
ちなみに,Apple Script のコマンドに文字数制限はなさそう。
100 個以上のファイルを同時に削除しても,期待通りに動いてくれた。
February 6, 2007:
pKizzy 0.6.4 公開です。
ゴミ箱から削除したアーティクルに対応する PDF ファイルを,ライブラリ・フォルダから削除するタイミングを変更。
これまでは,ゴミ箱からアーティクルを削除した瞬間に削除を実行してましたが,アプリ終了時にまとめて実行するようになりました。
ファイル削除を実行するか,する場合に (Finder の) ゴミ箱に移動するのか直ちに削除するのか,を設定できるようにプリファレンス・パネルも修正。
なんでこんな変更をしたかというと,Core Data の機能のおかげで,ゴミ箱から削除したアーティクルも Undo で復活できるから。
それを許すとなるとファイルも復活しないといけなくなるんだけど,ファイル名が変わってしまっている可能性もあるし,ファイル自体なくなってる可能性もある。
それらに対応するのは大変そうだ・・・。
というわけで,アプリ終了時,アーティクルの削除が確定する段階でまとめてファイル移動 (削除) することにしました。
ついでに,ゴミ箱へ移動の処理を,NSFileManager を使った自前のコードから,Apple Script を使う方式に変更。
そのため,すでにゴミ箱内に同名のファイルが存在する場合のリネームのスキームが変わります。

PDF ファイルの1つをリネームして チェッカを実行した例 |
アーティクル-ファイル対応関係チェッカを搭載。
プリファレンス・パネル → Utility タブ → Check Article-File Correspondence ボタン
で実行可能。
実行すると pKizzy に登録されたアーティクルと "pKizzy Articles" フォルダ内のファイルをすべて調べ,
- 対応するファイルが存在しないアーカイブ内のアーティクル
- 対応するファイルが存在しないゴミ箱内のアーティクル
- 対応するアーティクルが登録されていないファイル
をリストアップします。
PDFless アーティクルは無視されます。
検出されたアーティクルやファイルに対しては,それぞれ3つのボタンでいろいろ対処が可能。
不整合が生じるパターンとしては,たとえば,
- 上で書いてるように,ファイルを削除してからアーティクルだけ Undo で復活させた場合
- ファイルをインポートした時,ファイルは移動されたけどアーティクルの登録は完了しない段階でアプリが落ちた場合
などが考えられる。
このチェッカがあれば,インポートに失敗したときでも,せめてファイルを簡単に見つけることはできるはず。
- メイン・ウィンドウの PDF プレビューは,フレームがリサイズされたとき自動的に拡大率を変えるモードがある (fit width と fit page)。
拡大率を直接入力したときやポップ・アップ・メニューから変更したときはこのモードも正しく更新されてたんだけど,「+」「−」ボタンで変更した後では正しく更新されてなかった。
その不具合を修正。
- 情報パネルを開いたままアプリを切り替えたとき,タイトル・フィールドにフォーカスが移動する不具合の修正。
情報パネルを開いたときにタイトル・フィールドにフォーカスさせるため,windowDidBecomeKey: メソッド中でフォーカスを移動させてたんだけど,これがアプリ切り替え時にも反応してしまっていたため。
- 情報パネル上でアーティクルを切り替えるキーボード・ショートカットを cmd + ","/"." から cmd + "["/"]" に変更。
- プリファレンス・パネルの英語表記をいつくか修正。
今回の変更は,こんなところ。
以下,ひとりごと・・・。
- 今回はじめて,Apple Script を使って Finder にアクセスすることにチャレンジ。
上にも書いたようにファイル削除に使ったのと,不整合チェッカで選択したファイルを表示するのにも使った。
Apple Script を実行するには,ざっくりとこんな感じのコードで OK っぽい。
NSString *asSource = [NSMutableString stringWithString:@"....."];
NSAppleScript *as = [[[NSAppleScript alloc] initWithSource:asSource] autorelease];
NSDictionary *err = nil;
[as executeAndReturnError:&err];
もちろん asSource には @"....." の代わりにちゃんと Apple Script のテキストを設定しないといけません。
ここで大問題なのが,Apple Script は UNIX 風のスラッシュ区切りパス表記を受け付けてくれないこと。
たとえば
フォルダを指定しようとすると,
folder "pKizzy Articles" of folder "pKizzy" of folder "Application Support"
of folder "Library" of folder "kokam" of folder "Users"
of startup disk of application "Finder"
とやらないといけない。
もしくは HFS 風にコロン区切りで
という感じでもいいらしい。
ただし,HFS 形式のパスを得るのはCocoa だけでは難しいみたい。
このあたり (http://developer.apple.com/jp/technotes/tn2078.html) を参考にすると,エイリアス解決のときのように URL から変換した FSRef 形式のファイル参照を使って,次のようにできるらしい。
FSRef fsRef; ← FSRef は正しく得られているものとする。
CFMutableStringRef hfsPath = CFStringCreateMutable(NULL, 0);
UniChar inSepChar = ':';
FSCatalogInfo catalogInfo;
int i, n;
HFSUniStr255 names[100]; ← パス文字列の長さ パス階層の最大深さはあらかじめ指定
OSStatus err = noErr;
for( n = 0 ; (err == noErr) && (catalogInfo.nodeID != fsRtDirID) && (n < 100) ; n++ ){
err = FSGetCatalogInfo( &fsRef, kFSCatInfoNodeID, &catalogInfo, &names[n], nil, &fsRef );
}
for( i = n - 1; i >= 0 ; --i ){
CFStringAppendCharacters( hfsPath, names[i].unicode, names[i].length );
if ( i > 0 )
CFStringAppendCharacters( hfsPath, &inSepChar, 1 );
}
これで得られる hfsPath は CFString なので NSString に toll free でキャストして使えます。
Apple Script に渡す文字列に文字数制限はあるんだろうかとか,HFS 以外のフォーマットのボリュームでも有効なんだろうかとか,未検証の部分もありますが・・・ま,いいか (^^;
- といったところで,次の更新は Leopard 後ぐらいかな?
まだときどき落ちることがあるので,garbage collection 導入で安定化・・・できたりするといいなぁ・・・ 。
ただ,こないだの MacWorld では Leopard にはまったく触れられなかったみたい。
当面買えない,買っても使えない iPhone より,当面買うつもりのない AppleTV より,Leopard の話が聞きたかったのに・・・残念。
October 19, 2006:
pKizzy 0.6.3 公開です。
- Source Titles Manager で,permanent 設定の情報を保存できていなかった (厳密には,アプリ起動時に読み込めていなかった) 不具合の修正。
Bibliographer で,source プロパティの省略形 ↔ 非省略形変換が正しく機能していなかった不具合の修正。
ただし,アプリ起動後に一度でも Source Titles Manager ウィンドウを開けば,その後は機能していたはず。
- Bibliographer Manager でプロパティ・タグの挿入操作をポップ・アップ・ボタン方式に変更。
これで,プロパティをダイレクトに選択しつつ挿入することが可能になりました。
- 5月に買ったばかりの MacBook のハードディスクがクラッシュ・・・ (T T
しかも修理に出したら3週間以上かかってしまった。
作業報告書を見ると,ハードディスク交換の他にも,以下3カ所のパーツ交換があった模様。
- トップケース (パームレストが汚れる現象があったため )
- ディスプレイベゼル (液晶パネル固定枠の,パームレストにあたる部分。トップケース交換とセット?)
- CPU ヒートシンク (発熱異常による電源遮断が発生することがある)
このせいで時間がかかったらしい。
同時期に買った MacBook には同じ問題があるのかも。
ま,本業用の Mac ではなかったし,以前の iBook から移行アシスタントでデータを移せたから,不幸中の幸いとは言えたかも。
バックアップしとかないといけないのは分かってるんだけど・・・。
ちなみに,トップケース交換で,クリックボタンとカーソルキーの接触が悪かったのも直ったみたい。
今回は,こんなところで・・・。
August 20, 2006:
pKizzy 0.6.2 公開です。
- アーティクル・テーブル・ビューやグループ・アウトライン・ビューで,デリート・キーだけで項目を削除できるように変更。
- グループを削除した場合に,アーティクル・テーブル・ビューの表示がおかしくなっていた不具合の修正。
- スマートグループを子 (またはその下の子孫) に含むグループを削除した後でクラッシュする (可能性があった) 不具合の修正。
- グループのドラッグ&ドロップ処理の不具合を修正。
修正点としては,
- ゴミ箱にドラッグ&ドロップしても削除できていなかった不具合の修正。
- ドラッグ&ドロップ移動の内部処理を修正。
- アーカイブ・グループとゴミ箱をドラッグできないように変更。
といったところ。
- article なし articleIndex オブジェクトが作られていることがあった ので,アプリ起動時に削除するようにした。
いつどこで作られたか特定できていないんだけど,いずれそっちも見つけて修正しないといけないかも。
今回は,こんなところで。
June 27, 2006:
pKizzy 0.6.1 公開です。
- File > Empty Trash メニューからゴミ箱を空にしようとするとクラッシュするバグの修正。
- インクリメンタル・サーチの Spotlight スイッチを,オフの状態をデフォルトに変更。
今回は,そんなところで。
May 25, 2006:
pKizzy 0.6.0 公開です。
- いよいよ待望 の,Universal Binary バージョンです。
- pAMEx プラグインも,すべて Universal Binary にバージョン・アップ。
ちなみに,中身はまったく変わってませんが,intel Mac で Universal 版の pKizzy を使ってる場合は,プラグインも Universal じゃないと動きません。
|
Project "pKizzy" のページ
Project "pKizzy" トップページ
ご紹介
Download
0.1 のころ
0.2 のころ
0.3 のころ
0.4 のころ
0.5 のころ
0.6 のころ
0.7 のころ
0.8 のいま
権利等
pKizzy に関するすべての権利は作者である kokam (以下,作者) が保持します。
pKizzy の実行ファイル,ソース・ファイルは自由にダウンロードおよび使用していただいてかまいません。
しかし,使用によって生じたいかなる損害に関しても作者は責任を負いかねます。
あくまで素人が趣味で作っただけのソフトであることを了解した上で,自己責任で使ってください。
個人利用での改変はご自由にどうぞ。
再配布に関しては,ダウンロードしたそのままの .dmg ファイル,つまり未改変のファイルについてのみ認めます。
Workshop Cocam, 2004-2011
|