hakeの日記

Windows環境でプログラミングの勉強をしています。

RubyQpeAppletを試す(その2)

RubyQpeAppletが0.4にアップしていたので試してみました。仕様が若干変更になっているので前回のテストスクリプトをそれに合わせて修正。
前回できなかったsystem()によるqcopを用いたアプリの起動、日本語表示(qs()を使用)ができるようになりました。また試した限りではreload時のQtopiaの再起動も発生しまていません。
今回からメソッドtoggle_show_hideのオーバーライドによってタスクバーアイコンのタップ時の処理も記述できるようになっていますね、これは応用の範囲が広がりそうです。下のスクリプトではタップでウィンドウを左右に移動させています(コメントアウトを外す)


このバージョンでかなり実用性が高まったのではないでしょうか。
と、ここで疑問が。RubyQpeAppletを用いて作成した別々のアプリを同時使用することってできるのでしょうか?

class Hello <Qpe::Applet::Base
  def user_interface
    setCaption(qs("てすと")) # 日本語はqs()で
    resize(150, 150)
    move(490,290)

    @v = QVBox.new(self)
    @v.setGeometry(0,0,150,150)
    @pb1 = QPushButton.new('button1', @v)
    @pb2 = QPushButton.new('button2', @v)
    @eb  = QMultiLineEdit.new( @v )

    connect(@pb1, QSIGNAL('clicked()'), self, 'test1')
    connect(@pb2, QSIGNAL('clicked()'), self, 'test2')
  end
  def test1
    begin
      cmd = "qcop QPE/System 'execute(QString,QString)' zeditor"
      system( cmd )
    rescue
      log_error($!)
    end
  end
  def test2
    begin
      @eb.insertLine(qs("ボタン"))
    rescue
      log_error($!)
    end
  end

##  タスクバーのアイコンクリック時の処理
##  アプレット表示位置移動
#  def toggle_show_hide
#    begin
#      self.hide
#      if pos.x == 0
#        move(490,290)
#        self.raise
#        self.show
#      else
#        move(0,290)
#        self.raise
#        self.show
#      end
#    rescue
#      log_error($!)
#    end
#  end

end