2013/12/09(月) [n年前の日記]
#2 [dxruby][game] DXRubyでファイル選択ダイアログやフォルダ選択ダイアログを開く
今日も DXRuby を使って何か書きますよ。
今回は、ちょっとゲームとは違う部分でも、DXRuby って使えたりもしますよ、みたいな話を。…まあ、この話、前にもこの日記でメモしてた記憶もあるんですけど。せっかくだから、この際もう一度紹介を、と。
Windows + Ruby で何か処理をする際、ユーザさんに、任意のファイル、もしくは、任意のフォルダを指定してもらいたい場面があるわけですが。
一般的には CUI で、
でも、プログラマーさんにお願いするならともかく、一般的なユーザさんに、「DOS窓開いて、こういう文字列を打ち込め」なんて、ちょっとお願いしにくいじゃないですか…。できれば、GUIで ―― ファイル選択ダイアログや、フォルダ選択ダイアログを開いて、ファイルやフォルダの指定をさせてあげたい…。
そんな時、DXRuby が役に立つかもしれません。
DXRuby の Windowクラスには、ファイル選択ダイアログを開くメソッドが用意されてまして。
さらに、DXRuby 1.5.3 dev 版以降に限定した話ですが、フォルダ選択ダイアログを開くこともできるのです。
そんなわけで、「Windows + Ruby + GUI で、ファイルやフォルダを選択させたいなあ。それも、サクッと、簡単に」と思った時は、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 のソレは…。
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ライブラリって、何故かそういう展開が多く…ゲフゲフゴフン。
[ ツッコむ ]
以上です。