Raspberry Pi から IRKitを操作する。QuickIR Ver.1.0.7
コンテキストメニューが消えずに残ってしまうことがある不具合を修正しました
Raspberry Pi 3 Model B が発売になりましたね。ワタシもオーダーしてあるのですが、例によって品不足で現在入荷待ち状態です。
CPUが64bitになり、クロック周波数も1.2GHzへアップ。理論上 Raspberry Pi 2 より性能が50%以上高くなっているの筈ですが、OS (Raspbian) やソフトが32bitのままなので、性能向上はそれほど感じられないとの事です。それよりWi-Fi, Bluetooth が標準搭載された事の方が嬉しいですね。しかも価格は$35据え置き。
QuickIR Ver.1.0.7 は幾つかのバグ修正を行いました。特に Raspberry Pi で実行した場合のコンテキストメニューに関するバグ修正に難義しました。
現象は、ツリービューで右クリックしてコンテキストメニューを表示させた後、コンテキストメニューの項目を選ばず、他の操作に移った(つまりコンテキストメニュー操作を止めたい)場合に、コンテキストメニューが消えずに画面上に残ったままになるという不具合です。この現象は、MacOS Xや Windowsでは発生せず、Raspberry Piでだけ発生するようでした。
コンテキストメニューは、メニューWidgetを postメソッドを呼び出すことで表示されるのですが、Mac OS Xや Windowsではメニュー項目を選択するか、メニュー選択以外の操作をするまで postメソッドから復帰して来ないのですが、Raspberry Pi ではメニューを表示したら即復帰して来てしまうようです。どうも Raspberry Pi のメニューWidgetの postメソッドは、スレッドを生成し、その中でメニューのインスタンスを動かしているような感じがします。
postメソッドで表示したメニューを消すために unpostというメソッドがあるのですが、これをどこから呼び出すようにすれば良いか?で悩みました。本来なら postと対応するように unpostするのが筋が良いのでしょうが、結局 QuickIRの構成Widget(Frame, Menu, Treeview)のマウスボタンクリックやキー押下イベントにバインドする形で、アチコチに unpost呼び出しを入れることになってしまいました。仕様としては、コンテキストメニューを取り消したい場合には、コンテキストメニュー以外を左クリックするか、Escキーを押下するということになります。
今回もソースはローカルコピーと、アーカイブ(.zip, .tar.gz)ファイルへのリンクを張っておきます。
まだ色々バグがあるんだろうなぁ〜。正常系処理は何とか動いているけど、エラー事象のチェック、処理が弱いですね。エラー事象はテストケースを考えるのが難しいのでねぇ。
|