Top / Programming / Ruby / Ruby GUIライブラリ / Apollo / Apolloでメモ帳作成(3)メニューバーを表示する

Apolloでメモ帳作成(3)

Apolloでメモ帳を作成します。

Apolloチュートリアルを参考にしました。

メニューバーを表示する

メニューバーを表示する

メニューバーの表示にはPhi.new_menuを、メニューの項目には、Phi.new_itemを使用すると、簡単に作成できます。

Phi.new_menu(form, :menu1, [
  menu_file = Phi.new_item('ファイル(&F)', '', :mi_file).add(
    menu_new = Phi.new_item('新規(&N)', 'CTRL+N', :mi_new),
    menu_open = Phi.new_item('開く(&O)', 'CTRL+O', :mi_open),
    menu_save = Phi.new_item('保存(&S)', 'CTRL+S', :mi_save),
    menu_saveas = Phi.new_item('名前を付けて保存(&A)', '', :mi_save),
    Phi.new_line,
    menu_exit = Phi.new_item('終了(&X)', '', :mi_exit)
  ),
  menu_help = Phi.new_item('ヘルプ(&H)', '', :mi_help).add(
    menu_about = Phi.new_item('memoについて', '', :mi_about)
  )
])

メニュー選択時の処理

メニュー項目のクリックイベントに処理を割り当てます。

#メニュー[ファイル]-[閉じる]
menu_exit.on_click = proc do
  form.close
end

#メニュー[ヘルプ]-[memoについて]
require 'dialogs'
menu_about.on_click = proc do
  Phi.message_dlg('簡単なテキストエディタ', Phi::MT_INFORMATION, [Phi::MB_OK], 0)
end

ここまでのソースコード

#!ruby -Ks

require 'phi'
require 'dialogs' #Phi.message_dlg

form = Phi::Form.new(:form1, 'memo')
Phi.new_menu(form, :menu1, [
  menu_file = Phi.new_item('ファイル(&F)', '', :mi_file).add(
    menu_new = Phi.new_item('新規(&N)', 'CTRL+N', :mi_new),
    menu_open = Phi.new_item('開く(&O)', 'CTRL+O', :mi_open),
    menu_save = Phi.new_item('保存(&S)', 'CTRL+S', :mi_save),
    menu_saveas = Phi.new_item('名前を付けて保存(&A)', '', :mi_save),
    Phi.new_line,
    menu_exit = Phi.new_item('終了(&X)', '', :mi_exit)
  ),
  menu_help = Phi.new_item('ヘルプ(&H)', '', :mi_help).add(
    menu_about = Phi.new_item('memoについて', '', :mi_about)
  )
])

#メニュー[ファイル]-[閉じる]
menu_exit.on_click = proc do
  form.close
end
#メニュー[ヘルプ]-[memoについて]
menu_about.on_click = proc do
  Phi.message_dlg('簡単なテキストエディタ')
end

form.show
Phi.mainloop

Phi::Formのサブクラスを作成する

Phi::Formを継承したMemoFormを作成します。

#!ruby -Ks

require 'phi'
require 'dialogs' #Phi.message_dlg

class MemoForm < Phi::Form
  def initialize(*arg)
    super
    #メニュー
    Phi.new_menu(self, :menu1, [
      menu_file = Phi.new_item('ファイル(&F)', '', :mi_file).add(
        menu_new = Phi.new_item('新規(&N)', 'CTRL+N', :mi_new),
        menu_open = Phi.new_item('開く(&O)', 'CTRL+O', :mi_open),
        menu_save = Phi.new_item('保存(&S)', 'CTRL+S', :mi_save),
        menu_saveas = Phi.new_item('名前を付けて保存(&A)', '', :mi_save),
        Phi.new_line,
        menu_exit = Phi.new_item('終了(&X)', '', :mi_exit)
      ),
      menu_help = Phi.new_item('ヘルプ(&H)', '', :mi_help).add(
        menu_about = Phi.new_item('memoについて', '', :mi_about)
      )
    ])

    #メニュー[ファイル]-[閉じる]
    menu_exit.on_click = proc do
      self.close
    end
    #メニュー[ヘルプ]-[memoについて]
    menu_about.on_click = proc do
      Phi.message_dlg('簡単なテキストエディタ')
    end
  end
end

form = MemoForm.new(:form1, 'memo')
form.show
Phi.mainloop

メニューの表示

更新履歴