mieki256's diary



2013/12/09(月) [n年前の日記]

#2 [dxruby][game] DXRubyでファイル選択ダイアログやフォルダ選択ダイアログを開く

今日も DXRuby を使って何か書きますよ。

今回は、ちょっとゲームとは違う部分でも、DXRuby って使えたりもしますよ、みたいな話を。…まあ、この話、前にもこの日記でメモしてた記憶もあるんですけど。せっかくだから、この際もう一度紹介を、と。

Windows + Ruby で何か処理をする際、ユーザさんに、任意のファイル、もしくは、任意のフォルダを指定してもらいたい場面があるわけですが。

一般的には CUI で、
ruby hoge.rb 指定ファイル
と指定する方法がメジャー、ですかね?

でも、プログラマーさんにお願いするならともかく、一般的なユーザさんに、「DOS窓開いて、こういう文字列を打ち込め」なんて、ちょっとお願いしにくいじゃないですか…。できれば、GUIで ―― ファイル選択ダイアログや、フォルダ選択ダイアログを開いて、ファイルやフォルダの指定をさせてあげたい…。

そんな時、DXRuby が役に立つかもしれません。

DXRuby の Windowクラスには、ファイル選択ダイアログを開くメソッドが用意されてまして。
# DXRubyでファイル選択ダイアログを開く

require 'dxruby'

filters = [
           ["画像ファイル(*.jpg;*.bmp;*.png)", "*.jpg;*.bmp;*.png"],
           ["テキストファイル(*.txt)", "*.txt"],
           ["すべてのファイル(*.*)", "*.*"]
          ]

filepath = Window.openFilename(filters, "ファイルを選んでください")

if filepath
  puts filepath + " を選択しました"
else
  puts "キャンセルしました"
end
ファイル選択ダイアログ
>ruby fileselect.rb

C:\home\prg\ruby\test_dxruby\fileselect_sample\えっちなのはいけないと思います!.png を選択しました
ね、簡単でしょ? (ボブの口調で)

さらに、DXRuby 1.5.3 dev 版以降に限定した話ですが、フォルダ選択ダイアログを開くこともできるのです。
# DXRubyでフォルダ選択ダイアログを開く
# ※ DXRuby 1.5.* dev 版が必要

require 'dxruby'

folderpath = Window.folder_dialog("フォルダを選択してください")

if folderpath
  puts folderpath + " を選択しました"
else
  puts "キャンセルしました"
end
フォルダ選択ダイアログ
> ruby folderselect.rb

C:\home\prg\ruby\test_dxruby\fileselect_sample\不死鳥はもはや籠の中の小鳥よ!フォルダ を選択しました
ね、簡単でしょ? (ボブの口調で)

そんなわけで、「Windows + Ruby + GUI で、ファイルやフォルダを選択させたいなあ。それも、サクッと、簡単に」と思った時は、DXRuby を使っちゃう手もありますよ、という話でした。DXRubyの作者様、ありがとう…。この機能、ちょっとした場面で、地味に便利に使えてます…。

他にも色々方法はありますが。 :

む。「汝、 _Win32OLE を使え…」という電波が届いたような。たしかにソレも全然アリでございます。

Windows + Ruby で、ファイル/フォルダ選択ダイアログを開く手段は、他にも色々ありまして。例えば、以下のページが大変参考になるかと。ありがたや。勉強になります…。

_ruby 覚え書き

ただ、眺めてみると分かりますけど、自分のようなRuby初心者には、記述がちょっと難しくて…。「こっちはファイル選択したいだけなのに…」みたいな。もちろん、記述が難しい分、他にも色々なことができてしまうメリットはあるのですけど。

また、VisualuRuby のように、Ruby 1.8 までしか正式対応してないライブラリもあったりするので、「Ruby 2.0.0 が安定版」と宣伝されてる現在では、使えないやり方もチラホラ…。 *1

その点、DXRuby のソレは…。
  • やれることが決まってる分、記述は簡単。
  • DXRuby 開発版なら、Ruby 2.0.0 にも対応してるので、しばらくは安心して使える。
といったメリットがあるんじゃないかなと。まあ、複数ファイルを指定できない等のデメリットもあった気もしますが、高機能と簡便さはトレードオフじゃないのかなと。

*1: Rubyの配布パッケージによっては、Ruby 1.9上でも vruby が同梱されてたものもあったような…。でも、ググってみても見当たらず…。自分の偽記憶だったのかな…。何にせよ、Ruby 2.0.0 以降で vruby を動かせてる事例は全く見た記憶が無いので、どのみち、これからは使える見込みがないライブラリ、と思っておいた方がいいんじゃないかなあ…。Python と比べると、Ruby用のGUIライブラリって、何故かそういう展開が多く…ゲフゲフゴフン。

以上です。

過去ログ表示

Prev - 2013/12 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project