require 'phi'
require 'dialogs'

def show_ok_msg(msg)
  Phi::message_dlg(msg, Phi::MT_INFORMATION, [Phi::MB_OK], 0)
end

form = Phi::Form.new(:form1, 'フォームです')
button = Phi::Button.new(form, :button1, 'hoge')
button.align = Phi::AL_CLIENT

button.on_click = proc do
  result = Phi::message_dlg( 'メッセージダイアログです。',
    Phi::MT_CONFIRMATION, [Phi::MB_OK, Phi::MB_YES, Phi::MB_NO,
     Phi::MB_CANCEL], 0)
  case result
  when Phi::MR_OK
    Phi::message_dlg('OKのボタンが押されました。', Phi::MT_INFORMATION,
      [Phi::MB_OK], 0)
    
  when Phi::MR_YES
    result2 = Phi::message_dlg('はいのボタンが押されました。',
      Phi::MT_ERROR, [Phi::MB_ALL, Phi::MB_ABORT, Phi::MB_RETRY,
      Phi::MB_IGNORE, Phi::MB_YES_TO_ALL, Phi::MB_NO_TO_ALL], 0)
    case result2
    when Phi::MR_ALL
      show_ok_msg('すべてのボタンが押されました。')
    when Phi::MR_ABORT
      show_ok_msg('中止のボタンが押されました。')
    when Phi::MR_RETRY
      show_ok_msg('再試行のボタンが押されました。')
    when Phi::MR_IGNORE
      show_ok_msg('無視のボタンが押されました。')
    when 9
      #when Phi::MR_NO_TO_ALL
      # Phi::MR_NO_TO_ALLはありません(result2には9が入ります)
      show_ok_msg('すべていいえのボタンが押されました。')
    when 10
      #when Phi::MR_YES_TO_ALL
      # Phi::MR_YES_TO_ALLはありません(result2には10が入ります)
      show_ok_msg('すべてはいのボタンが押されました。')
    end

  when Phi::MR_NO
    Phi::message_dlg('いいえのボタンが押されました。', Phi::MT_WARNING,
      [Phi::MB_OK], 0)

  when Phi::MR_CANCEL
    Phi::message_dlg('キャンセルのボタンが押されました。',
      Phi::MT_CUSTOM, [Phi::MB_OK], 0)
  end
end

form.show
Phi.mainloop
