vrubyを使ったシンプルなダイアログライブラリ
Simple Dialogとは
VisualuRuby
VisualuRuby(以下vruby)とは、Ruby+Windows環境で使えるGUIライブラリです。Win32APIを直接扱ったライブラリのため、特殊なウィジェットやツールキットを必要としません。ActiveScriptRubyなんかでRubyをインストールした場合は最初から入ってると思います。
Simple Dialog
・ダウンロード: simple_dialog.zip
Simple Dialogは、vrubyで扱えるWindowsのダイアログ+αをラップしたライブラリです。(ライブラリと呼べる程大層なものではないかもしれません。)メッセージボックス/ファイル・フォルダ・etc選択ダイアログ/勝手に定義したダイアログを手軽に扱えるようにしただけのもので、拡張性もありません。Jw_cad外部変形のような、Rubyと何かアプリケーションを連携させた際の簡単なインターフェイスに使えると思い作成しました。
vrubyに合わせてShift_jisに対応させています。
リファレンス
ダイアログを出して戻り値を得るメソッド群をモジュールで固めたライブラリで、全てmodule_functionとして定義してあります。
require "simple_dialog"
puts SimpleDialog.msgbox("OKボタンのみのメッセージボックス")
#=> :ok
include SimpleDialogとすると、それ以下はレシーバなしでメソッドを呼べます。
require "simple_dialog"
include SimpleDialog
puts msgbox("[はい]、[いいえ]を選択するメッセージボックス", "title", :yesno)
#=> :yes
puts select_file
#=> C:\jww\Sample.jwf
メソッド一覧
- msgbox, message_box
- select_file
- save_file
- select_directory
- select_color
- select_rgb
- select_font
- input_box
- check_list
- radio_btns
- combo_boxes
- set_dialog_parent
msgbox(text, title = "", type = :ok, icon = nil)
メッセージボックスを表示させ、選択されたボタン毎にマッピングされたシンボルを返します。message_boxのエイリアスです。
text (引数1)
メッセージ欄に表示させる文字列です。
title (引数2)
メッセージボックスのタイトルバーに表示させる文字列です。
type (引数3)
メッセージボックスのタイプを表すシンボルを指定します。以下の括弧はWindowsAPIで扱う定数です。
- :ok (MB_OK)
- デフォルト値です。OKボタンのみ表示されます。
- :okcancel (MB_OKCANCEL)
- OKボタン、キャンセルボタンが表示されます。
- :abortretryignore (MB_ABORTRETRYIGNORE)
- 中止・再試行・無視ボタンが表示されます
- :yesnocancel (MB_YESNOCANCEL)
- はい・いいえ・キャンセルボタンが表示されます。
- :yesno (MB_YESNO)
- はい・いいえボタンが表示されます。
- :retrycancel (MB_RETRYCANCEL)
- 再試行・キャンセルボタンが表示されます。
- :canceltrycontinue (MB_CANCELTRYCONTINUE)
- キャンセル・再実行・続行ボタンが表示されます。
icon (引数4)
アイコンを表示させたい場合に、各アイコンを表すシンボルを指定します。
- :stop, :error, :hand (MB_ICONSTOP)
- 停止アイコン(×マーク)を表示させます。
- :question (MB_ICONQUESTION)
- 疑問符アイコン(?マーク)を表示させます。
- :exclamation, :warning (MB_ICONEXCLAMATION)
- 感嘆符アイコン(!マーク)を表示させます。
- :information, :asterisk (MB_ICONINFORMATION)
- 吹き出しに「i」のアイコンを表示させます。
戻り値
ボタンごとにシンボルを割り当てています。
- :ok
- :cancel
- :abort
- :retry
- :ignore
- :yes
- :no
- :tryagain
- :continue
select_file(title = "ファイル選択", filter = [])
ファイル選択ダイアログを開き、選択されたファイルのパスを返します。キャンセルされた場合はnilを返します。
filter
フィルタの説明とフィルタパターンの組(配列)の配列を渡します。説明は単なる文字列、フィルタパターンはワイルドカードと拡張子からなる文字列を指定します。
例:[["ビットマップファイル(*.bmp)", "*.bmp"], ["テキストファイル(*.txt)", "*.txt"]]
save_file(title = "ファイルに保存する", filter = [])
select_fileと同様に使えます。
select_directory(title = "ディレクトリ選択", initdir = nil)
ディレクトリ選択ダイアログを表示し、選択されたディレクトリのパスを返します。initdirでルートディレクトリを指定できます。
select_color
パレットを表示し、選択した色を表す数値を返します。
select_rgb
select_colorを実行し、結果をRGBの配列にして返します。
select_font
フォント選択ダイアログを表示し、フォントを表す配列を返します。
input_box(title, text, width = 300)
文字列の入力欄があるダイアログを表示します。OKなら入力した文字列、CANCELならfalseを返します。タイトルと説明文の他に、横幅を指定できます。
check_list(title, text, list, width = 300)
listに文字列の配列を渡し、その分だけチェックボックスを配置したダイアログを表示します。OKならチェックされた項目のインデックスの配列を返し、CANCELならfalseを返します。
require "simple_dialog"
include SimpleDialog
list = ["項目1: foo", "項目2: bar", "項目3: baz"]
a = check_list("test", "チェックリストダイアログのテスト", list)
#=> [0, 2]
puts list.values_at(*a) if a
#=> 項目1: foo
#=> 項目3: baz
radio_btns(title, text, list, width = 300)
check_listと同様の操作で、ラジオボタンを並べたダイアログを表示します。OKなら選択された項目のインデックス、CANCELならfalseを返します。
combo_boxes(title, text, list, width = 300)
コンボボックスを複数並べたダイアログを表示します。listには「文字列の配列」の配列を渡します。OKならそれぞれのコンボボックスの選択された項目のインデックスを配列にしたもの、CANCELならfalseを返します。
require "simple_dialog"
include SimpleDialog
list = [
["項目1-1", "項目1-2", "項目1-3"],
["項目2-1", "項目2-2", "項目2-3"]
]
a = combo_boxes("test", "コンボボックスのテスト", list)
#=> [1, 2]
a.each_with_index{|n, i|
puts list[i][n]
} if a
#=> 項目1-2
#=> 項目2-3
set_dialog_parent(parent)
他のvrubyアプリケーションと合わせて使う場合、このメソッドにフォームのインスタンスを渡すことで、Simple Dialogで表示するダイアログの親ウインドウを設定できます。設定した場合、それ以降のダイアログが全てそのフォームを親とすることに注意してください。親ウインドウを無くして初期設定にするにはset_dialog_parent(nil)とします。