ruby-****@lists*****
ruby-****@lists*****
2003年 7月 7日 (月) 17:05:05 JST
------------------------- REMOTE_ADDR = 61.204.181.66 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/?%A5%E9%A5%A4%A5%BB%A5%F3%A5%B9%BF%C7%C3%C7%A5%C4%A1%BC%A5%EB ------------------------- = ライセンス診断ツール ((<"RWikiのRuby/Tk版"|URL:http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=%A5%D5%A5%EA%A1%BC%A5%BD%A5%D5%A5%C8%A5%A6%A5%A7%A5%A2%A5%E9%A5%A4%A5%BB%A5%F3%A5%B9%BF%C7%C3%C7 >)), ((<nyasuさんのvruby版|URL:http://www.osk.3web.ne.jp/~nyasu/diary/200306.html#20030613_2>))。せっかくなのでRuby/GTK2版を作ってみよう。 #!/usr/bin/env ruby require "gtk2" QTITLE = "フリーソフトウェアライセンス診断" GONEXT = nil Gtk.init class Question < Gtk::MessageDialog def initialize(question, yes, no) super(nil, MODAL, QUESTION, BUTTONS_YES_NO, question) set_title(QTITLE) @yes, @no = yes, no end def run (super == RESPONSE_YES) ? @yes : @no end end QUESTIONS = [ Question.new( "あなたのコードを商用ソフトウェアに組み込まれて販売されてもかまわないか?", GONEXT, "GPL"), Question.new( "あなたはストールマンのフリーソフトウェア運動に心から賛同しているか?", "GPL", GONEXT), Question.new( "あなたはそのソフトウェアを将来Rubyの一部として配布したいか?", "Rubyライセンス","BSDライセンスまたはMITライセンス" ), ] QUESTIONS.each do |q| if (lic = q.run) dialog = Gtk::MessageDialog.new(nil, Gtk::Dialog::MODAL, Gtk::MessageDialog::INFO, Gtk::MessageDialog::BUTTONS_OK, lic + " がおすすめ") dialog.set_title(QTITLE + "結果").run exit end end QuestionクラスをGtk::MessageDialogのサブクラスにしてみた。 そうそう、Ruby/GTK2では文字列をUTF-8にしないといけないので、上記を保存した後、UTF-8に変換してから実行する必要があるのがちと面倒かな。 以下は上記のコードをjudge.rbとして保存した時の例。iconvを使ってる。 iconv -f euc-jp -t utf-8 judge.rb |ruby - 文字コードのお話は((<文字コードはUTF-8>))にて。 ------------------------- = ライセンス診断ツール ((<"RWikiのRuby/Tk版"|URL:http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=%A5%D5%A5%EA%A1%BC%A5%BD%A5%D5%A5%C8%A5%A6%A5%A7%A5%A2%A5%E9%A5%A4%A5%BB%A5%F3%A5%B9%BF%C7%C3%C7 >)), ((<nyasuさんのvruby版|URL:http://www.osk.3web.ne.jp/~nyasu/diary/200306.html#20030613_2>))。せっかくなのでRuby/GTK2版を作ってみよう。 #!/usr/bin/env ruby require "gtk2" QTITLE = "フリーソフトウェアライセンス診断" GONEXT = nil Gtk.init class Question < Gtk::MessageDialog def initialize(question, yes, no) super(nil, MODAL, QUESTION, BUTTONS_YES_NO, question) set_title(QTITLE) @yes, @no = yes, no end def run (super == RESPONSE_YES) ? @yes : @no end end QUESTIONS = [ Question.new( "あなたのコードを商用ソフトウェアに組み込まれて販売されてもかまわないか?", GONEXT, "GPL"), Question.new( "あなたはストールマンのフリーソフトウェア運動に心から賛同しているか?", "GPL", GONEXT), Question.new( "あなたはそのソフトウェアを将来Rubyの一部として配布したいか?", "Rubyライセンス","BSDライセンスまたはMITライセンス" ), ] QUESTIONS.each do |q| if (lic = q.run) dialog = Gtk::MessageDialog.new(nil, Gtk::Dialog::MODAL, Gtk::MessageDialog::INFO, Gtk::MessageDialog::BUTTONS_OK, lic + " がおすすめ") dialog.set_title(QTITLE + "結果").run exit end end QuestionクラスをGtk::MessageDialogのサブクラスにしてみた。 そうそう、Ruby/GTK2では文字列をUTF-8にしないといけないので、上記を保存した後、UTF-8に変換してから実行する必要があるのがちと面倒かな。 以下は上記のコードをjudge.rbとして保存した時の例。iconvを使ってる。 iconv -f euc-jp -t utf-8 judge.rb |ruby - 文字コードのお話は((<日本語の扱いと国際化|tips_i18n>))にて。