« 今日は飲み会 | トップページ | 久しぶりの弘法山 »

2009年4月17日 (金)

5800XM でappuifw2を使う (python)

2009-04-17(金)曇り、夕方小雨

  (appuifw2使用については続編があります。そちらも見て下さい。2009-04-23追記)
    5800XM でappuifw2を使う (python) その2(一応まとめ?)

 Pythonでいくつかスクリプトを書いてきたり、他の方のをいじったりしてきましたが、X02NK(キー有り) と 5800XM(キー無し、タッチスクリーン式) で、操作というか使い方の互換性を持たせるのは大変だと言うことが分かってきました。
C++とかでネイティブなアプリを作ればいいのでしょうが、できない辛さです。

大変な理由は、5800XMには「上下左右キー」がない、と言うことです。

(1)左右キーがないことでpyS60uiutilではフォルダ階層が上下に移動できず、結局 pyS60uiutilをいじったこともありました。(pyS60uiutil_mod_m)

   「Python スクリプト 雑記」のpyS60uiutil 参照

 弄っては見たものの、これはこれで問題というか、オリジナルと互換性のない部分があるということが分かって頭を悩ましているところです。

(2)上下キーが無いことで、スクロールが難しいことです。スクリーンを触って上下させることでスクロールはしますが、一寸した力の加減で途中のアイテムが選択されてしまい、舌打ちしながら最初からやり直し、、という事になるわけです。

 使ってみた記事は「Nokia 5800 XM、 テキストエディタ py60tex に手を加えて、、」あたりを参照。

 さて、上記(2)については 「appuifw2.Listbox」を使うという解がありそうだったのですが、5800XMでは途中でダウンしてしまうので、うまく使えていませんでした。appuifw2 のListboxは、pys60に内蔵されているappuifw.Listboxの代わりに使うもので、スクロールバーが表示できるものです。

 放ってあったのですが、最近またテストして何とか使えるようになりました。スクリプトの中にデバッグ用の行を山ほど埋め込んでトレースしました。
 もちろん、appuifw2のコードは読めませんしSymbianの中も分かりませんから、あくまで対症療法です。

対症療法 : 表示するリストを作成するごとに、appuifw2.Listbox のインスタンスを生成すると動く。 ← 如何にも対症療法です(汗)。

 本来、Listboxの使い方は「図1」のような使い方だと考えていました。(図はクリックすると拡大できます。)

Appuifw2a

 事実そのように読める解説もありましたし、appuifwでは問題なく動いていました。しかし、appuifw2ではダウンしてしまうのです。で、使えるようになったのは「図2」の使い方です。

Appuifw2b

 図2では図1と違って、下の方で、毎回appuifw2.Listbox のインスタンスを生成を行っています。(注2の部分)

 注1の部分でリストが再作成されたとき、注2のところのリストボックス処理を入れないと、次ぎにアイテム選択されたときにコールバック関数がコールされず、ダウンしてしまいます。
  (訂正:コールバック関数はコールされるが、その処理の中でset_listが実行されたときにダウンする事がある。詳細は先頭に書いてある続編参照下さい。 2009-04-23)

 さて、動くようになったとは言っても、この使い方が正しいかどうかは、これからの勉強ですが、とりあえずは5800XMで動くようになりました。忘れないためのメモ代わりに記述してみました。また、同じように穴に落ち込んでいる方の参考にでもなれば幸いです。

 なお、今使っているPythonは1.4.4 ですが、1.9.3 以降になればこんな悩みは無くなるのかな(タッチサポートとかいうので)と期待して見ています。

  

|

« 今日は飲み会 | トップページ | 久しぶりの弘法山 »

Python」カテゴリの記事

アプリケーション」カテゴリの記事

携帯電話」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/513620/44700887

この記事へのトラックバック一覧です: 5800XM でappuifw2を使う (python):

« 今日は飲み会 | トップページ | 久しぶりの弘法山 »