思考整理(ロック)

今はリセットの際に「アイテムをリストにセットし文字列でしぼりこみ」という作業をやりなおしているわけだけど、これだと表示項目を自由に変更できるようにしたときに不便になる。

たとえば「タイトルでしぼりこんだ後ヘッダ*1を切り替えて、パスモードでしぼりこんだ後また戻して、さらにしぼりこみたい」といった要望があったときに困る。これの対策を考えた。

その一つの案が「ロック」という機能。

「しぼりこんだ状態をロックした」ように見せかけるワケなんですけど、結局のところ、残しておくアイテムがどれかを(HWND)を保持しておいてそれでしぼりこむというだけのもの。残す手段としてはスタックがいいんじゃないかなと思ってます(文字入力がない際にBSを押すと「アンロック」して、一つ前の状態に戻すので)。

アイテムをリストにセットしたあと、ヘッダが変わっていると、文字列でしぼりこみ直しても理想の結果にはならない。だったら文字列じゃなく、HWNDでしぼればいいじゃないカとそういうこと。HWNDならすべてのアイテムが保持しているし、一意に識別できる。これならヘッダの影響も受けない。

何も入力せず、ヘッダを複数回切り替えたときはどうしようかな。スタックでやると、何度も同じ結果を保存してアンロック時に思い通りに動かなくなる。前回ロックした時と変更がない場合はロックをしないほうがいいかな。

何回ロックしたかも分かったほうがいいかな。ロック回数をカウントして表示しようかな。ロックカウント。タイトルまわりもちょっと変わるな。

にしても、保持情報まわりの変更やら、設定ダイアログ部分の分離やらを一気にやったので、ソースの方が酷いことになってしまいました(コンパイル通らない状態)。次回公開は当分先になりそうです(本体部分だけできたところで一回出したほうがいいかな)

設定ファイルも半分くらい互換性なくなります。コマンドとキー登録部分は互換性を保つようにしますので、海鮮丼の方のようにたくさん登録してらっしゃる方は[Cmd][Key]以下をコピーアンドペーストで済ませるといいと思います。

*1:ベース名やタイトル、パスといったもの。表示はされていない