From: Masahiro S. ()
<sa...@to...> - 2003-04-10 07:14:12
|
さかいです。 http://developer.gnome.org/doc/API/2.0/gobject/gobject-Signals.html#GSignalFlags によると、 Action signals are signals that may freely be emitted on alive objects from user code via g_signal_emit() and friends, without the need of being embedded into extra code that performs pre or post emission adjustments on the object. They can also be thought of as by third-party code generically callable object methods. だそうなので、自動的にメソッドとして定義するコードを試しに入れてみました。 --enable-experimentalで有効になります。 -- 酒井 政裕 / Masahiro Sakai |
From: Masao M. <mu...@hi...> - 2003-04-10 16:41:42
|
むとうです。 On Thu, 10 Apr 2003 16:17:10 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > さかいです。 > > http://developer.gnome.org/doc/API/2.0/gobject/gobject-Signals.html#GSignalFlags > によると、 > > Action signals are signals that may freely be emitted on alive > objects from user code via g_signal_emit() and friends, without > the need of being embedded into extra code that performs pre or > post emission adjustments on the object. They can also be thought > of as by third-party code generically callable object methods. > > だそうなので、自動的にメソッドとして定義するコードを試しに入れてみました。 > --enable-experimentalで有効になります。 ちと、疲れてて英語読む気になれません(-o-;)。 というわけで、サンプルコードプリーズ! -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2003-04-10 18:20:53
|
むとうです。 On Fri, 11 Apr 2003 02:17:47 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > さかいです。 > > 例えば、Gtk::MenuShellが持っているアクションシグナルは > move-current, activate-current, cancel, cycle-focus の4つなので、 > これらを呼び出す以下のようなメソッドがGtk::MenuShellに自動定義されます。 なるほど。 これのメリットって何でしょうか。 例えば、単純にsignal_emit("cancel")をする場合に比べ、 def cancel signal_emit("cancel") end が自動定義されるとうれしいことって何かありますか。 単にメソッドが増えるだけだとあまりうれしくないなぁと。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2003-04-11 15:34:45
|
むとうです。 On Fri, 11 Apr 2003 11:05:25 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > さかいです。 > > From: Masao Mutoh <mu...@hi...> > Subject: Re: [ruby-gnome2-devel-ja] Action signals > Date: Fri, 11 Apr 2003 03:20:50 +0900 > > > むとうです。 > > > これのメリットって何でしょうか。 > > 例えば、単純にsignal_emit("cancel")をする場合に比べ、 > > > > def cancel > > signal_emit("cancel") > > end > > > > が自動定義されるとうれしいことって何かありますか。 > > > > 単にメソッドが増えるだけだとあまりうれしくないなぁと。 > > "They can also be thought of as by third-party code generically > callable object methods."と書いてあるので、メソッドと考えられるものは > 実際にメソッドにしてしまったほうが分かりやすいと考えました。 なるほど...。 確かにわかりやすくなりますね。 ちと、普通のメソッド(やプロパティ)とメソッド名が重複しないか 心配ですが、とくに問題ないようでしたら、experimentalではなく 本採用ということでどうでしょうか。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2003-04-12 16:56:28
|
むとうです。 On Sat, 12 Apr 2003 22:50:26 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > さかいです。 > > From: Masao Mutoh <mu...@hi...> > Subject: Re: [ruby-gnome2-devel-ja] Action signals > Date: Sat, 12 Apr 2003 00:34:37 +0900 > > > むとうです。 > > > ちと、普通のメソッド(やプロパティ)とメソッド名が重複しないか > > 心配ですが、とくに問題ないようでしたら、experimentalではなく > > 本採用ということでどうでしょうか。 > > 通常のメソッドやプロパティの方が後から定義されるため、 > それらを上書きしてしまう事はないはずで、 > 名前の重複はそれほど気にする必要はないでしょう。 なるほど。 > そういえば、特異メソッドによるシグナルハンドラの定義を使っていると > 混乱しそうな気はしますが、このコードを有効にしなくても、 > シグナル名と同名のメソッドは既にたくさんあるんですよね... そうですね。Gtk::Buttonなんかもそうですし。 > 特異メソッドによるシグナルハンドラの定義って > 実際にはどれくらい使われてるんでしょう? ドキュメントがほとんど無い(Ruby/GTKのころの五十嵐さんのドキュメントに あったような記憶はありますが)ですし、使ってる例もほとんどないので、 存在そのものを知らない人が多い気はします(^^;)。 個人的には、このアプローチ(特異メソッドによるシグナルハンドラの定義) ってあまり好きではないんですよねぇ。 この際、無くしちゃうとか。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masahiro S. ()
<sa...@to...> - 2003-04-12 19:00:19
|
さかいです。 From: Masao Mutoh <mu...@hi...> Subject: Re: [ruby-gnome2-devel-ja] Action signals Date: Sun, 13 Apr 2003 01:56:23 +0900 > むとうです。 > > 特異メソッドによるシグナルハンドラの定義って > > 実際にはどれくらい使われてるんでしょう? > > ドキュメントがほとんど無い(Ruby/GTKのころの五十嵐さんのドキュメントに > あったような記憶はありますが)ですし、使ってる例もほとんどないので、 > 存在そのものを知らない人が多い気はします(^^;)。 > 個人的には、このアプローチ(特異メソッドによるシグナルハンドラの定義) > ってあまり好きではないんですよねぇ。 > この際、無くしちゃうとか。 私も無くしてしまって構わないと思います。 他の人はどうでしょうか? P.S ちなみにsignal_connectは obj.signal_connect(name, extra_args...){|obj, args..., extra_args...| ... } という形で使えるようになっていますが、 このextra_argsの部分もほとんどの人は存在を知らない気がします。 # これも個人的には無くしてしまいたい... -- 酒井 政裕 / Masahiro Sakai |
From: Masao M. <mu...@hi...> - 2003-04-13 02:16:18
|
むとうです。 On Sun, 13 Apr 2003 04:03:25 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > さかいです。 > > From: Masao Mutoh <mu...@hi...> > Subject: Re: [ruby-gnome2-devel-ja] Action signals > Date: Sun, 13 Apr 2003 01:56:23 +0900 > > > むとうです。 > > > > 特異メソッドによるシグナルハンドラの定義って > > > 実際にはどれくらい使われてるんでしょう? > > > > ドキュメントがほとんど無い(Ruby/GTKのころの五十嵐さんのドキュメントに > > あったような記憶はありますが)ですし、使ってる例もほとんどないので、 > > 存在そのものを知らない人が多い気はします(^^;)。 > > 個人的には、このアプローチ(特異メソッドによるシグナルハンドラの定義) > > ってあまり好きではないんですよねぇ。 > > この際、無くしちゃうとか。 > > 私も無くしてしまって構わないと思います。 > 他の人はどうでしょうか? > > P.S > ちなみにsignal_connectは > obj.signal_connect(name, extra_args...){|obj, args..., extra_args...| > ... > } > という形で使えるようになっていますが、 > このextra_argsの部分もほとんどの人は存在を知らない気がします。 う、知りませんでした(^^;)。 > # これも個人的には無くしてしまいたい... 私も無くしてしまって良いと思います。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masahiro S. ()
<sa...@to...> - 2003-04-12 13:47:39
|
さかいです。 From: Masao Mutoh <mu...@hi...> Subject: Re: [ruby-gnome2-devel-ja] Action signals Date: Sat, 12 Apr 2003 00:34:37 +0900 > むとうです。 > ちと、普通のメソッド(やプロパティ)とメソッド名が重複しないか > 心配ですが、とくに問題ないようでしたら、experimentalではなく > 本採用ということでどうでしょうか。 通常のメソッドやプロパティの方が後から定義されるため、 それらを上書きしてしまう事はないはずで、 名前の重複はそれほど気にする必要はないでしょう。 そういえば、特異メソッドによるシグナルハンドラの定義を使っていると 混乱しそうな気はしますが、このコードを有効にしなくても、 シグナル名と同名のメソッドは既にたくさんあるんですよね... 特異メソッドによるシグナルハンドラの定義って 実際にはどれくらい使われてるんでしょう? -- 酒井 政裕 / Masahiro Sakai |
From: Masahiro S. ()
<sa...@to...> - 2003-07-20 06:52:38
|
さかいです。 From: Masao Mutoh <mu...@hi...> Subject: Re: [ruby-gnome2-devel-ja] Action signals Date: Sat, 12 Apr 2003 00:34:37 +0900 > むとうです。 > > On Fri, 11 Apr 2003 11:05:25 +0900 (JST) > Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > > > さかいです。 > > > > From: Masao Mutoh <mu...@hi...> > > Subject: Re: [ruby-gnome2-devel-ja] Action signals > > Date: Fri, 11 Apr 2003 03:20:50 +0900 > > > > > むとうです。 > > > > > これのメリットって何でしょうか。 > > > 例えば、単純にsignal_emit("cancel")をする場合に比べ、 > > > > > > def cancel > > > signal_emit("cancel") > > > end > > > > > > が自動定義されるとうれしいことって何かありますか。 > > > > > > 単にメソッドが増えるだけだとあまりうれしくないなぁと。 > > > > "They can also be thought of as by third-party code generically > > callable object methods."と書いてあるので、メソッドと考えられるものは > > 実際にメソッドにしてしまったほうが分かりやすいと考えました。 > > なるほど...。 > > 確かにわかりやすくなりますね。 > > ちと、普通のメソッド(やプロパティ)とメソッド名が重複しないか > 心配ですが、とくに問題ないようでしたら、experimentalではなく > 本採用ということでどうでしょうか。 これもすっかり忘れてましたが、 デフォルトで有効にしておきました。 -- 酒井 政裕 / Masahiro Sakai |
From: Masao M. <mu...@hi...> - 2003-07-23 17:13:27
|
さかいさ〜ん! むとうです。 ちと、この件なんですが。 #もしかして試験中?だったらごめんなさい。 これ、やっぱり、まずくないですか? gtk_window_set_focus()を見ると、 なんかいろいろ設定とか ↓ g_signal_emitでset_focusイベントをemit って流れになってしまいます。 なので、単純にこのラッパを作ってしまうと gtk_window_set_focus()を呼べなくなってしまいます。 逆に、すでにメソッドが定義されている場合は このラッパではなく、元のメソッドを呼び出す ということも考えられますが、これだと一貫性 がなくなり、きっとわかりづらくなるのでやめ たいです。 On Sun, 20 Jul 2003 18:04:54 +0900 Masao Mutoh <mu...@hi...> wrote: > むとうです。 > > On Sun, 20 Jul 2003 15:54:56 +0900 (JST) > Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > > > さかいです。 > > > > > > これのメリットって何でしょうか。 > > > > > 例えば、単純にsignal_emit("cancel")をする場合に比べ、 > > > > > > > > > > def cancel > > > > > signal_emit("cancel") > > > > > end > > > > > > > > > > が自動定義されるとうれしいことって何かありますか。 > > > > > > > > > > 単にメソッドが増えるだけだとあまりうれしくないなぁと。 > > > > > > > > "They can also be thought of as by third-party code generically > > > > callable object methods."と書いてあるので、メソッドと考えられるものは > > > > 実際にメソッドにしてしまったほうが分かりやすいと考えました。 > > > > > > なるほど...。 > > > > > > 確かにわかりやすくなりますね。 > > > > > > ちと、普通のメソッド(やプロパティ)とメソッド名が重複しないか > > > 心配ですが、とくに問題ないようでしたら、experimentalではなく > > > 本採用ということでどうでしょうか。 > > > > これもすっかり忘れてましたが、 > > デフォルトで有効にしておきました。 > > 今、サンプルを作ろうとして気づいたのですが....。 > > Gtk::Window#set_focusというメソッドが元からあるのですが、 > set_focusシグナルもあります。 > > どちらも、引数はGtkWindow, GtkWidget(gpointerはRubyから使わないので無視) > なので、たまたま、このままでも問題ないですが、 > やはり重複すると都合の悪いパターンがありそうな気がしてきました。 > > どうでしょうか。 > > -- > .:% Masao Mutoh<mu...@hi...> > > > ------------------------------------------------------- > This SF.net email is sponsored by: VM Ware > With VMware you can run multiple operating systems on a single machine. > WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the > same time. Free trial click here: http://www.vmware.com/wl/offer/345/0 > _______________________________________________ > ruby-gnome2-devel-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-ja > -- .:% Masao Mutoh<mu...@hi...> |
From: Masahiro S. ()
<sa...@to...> - 2003-07-24 12:57:51
|
さかい%年金は難しいなぁ です。 From: Masao Mutoh <mu...@hi...> Subject: Re: [ruby-gnome2-devel-ja] Action signals Date: Thu, 24 Jul 2003 02:13:17 +0900 > さかいさ〜ん! > > むとうです。 > > ちと、この件なんですが。 > #もしかして試験中?だったらごめんなさい。 ようやく試験が終りました。 残るはレポートが2つと……(以下略) > これ、やっぱり、まずくないですか? > > gtk_window_set_focus()を見ると、 > > なんかいろいろ設定とか > ↓ > g_signal_emitでset_focusイベントをemit > > って流れになってしまいます。 > > なので、単純にこのラッパを作ってしまうと > gtk_window_set_focus()を呼べなくなってしまいます。 GtkWindowのset-focusシグナルはアクションシグナルではないので、 emitするメソッドを自動定義してはいないはずです。 Gtk::Window.signal("set-focus").action? #=> false また、自動定義されるメソッドはG_DEF_CLASSからリターンする前に定義され るので、その後に定義される通常のメソッドを上書きしたりはしないです。 > 逆に、すでにメソッドが定義されている場合は > このラッパではなく、元のメソッドを呼び出す > ということも考えられますが、これだと一貫性 > がなくなり、きっとわかりづらくなるのでやめ > たいです。 一貫性がないというのは否定しませんが、 プロパティへのアクセス用に自動生成されるメソッドも既にあるわけですし、 それらに比べて特別分かりづらいと言うこともないと思います。 -- 酒井 政裕 / Masahiro Sakai |
From: Masao M. <mu...@hi...> - 2003-07-24 14:42:35
|
むとうです。 On Thu, 24 Jul 2003 22:00:19 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > さかい%年金は難しいなぁ です。 > > From: Masao Mutoh <mu...@hi...> > Subject: Re: [ruby-gnome2-devel-ja] Action signals > Date: Thu, 24 Jul 2003 02:13:17 +0900 > > > さかいさ〜ん! > > > > むとうです。 > > > > ちと、この件なんですが。 > > #もしかして試験中?だったらごめんなさい。 > > ようやく試験が終りました。 > 残るはレポートが2つと……(以下略) お疲れさまです。すみませんね、お呼び出しして(^^;)。 > > これ、やっぱり、まずくないですか? > > > > gtk_window_set_focus()を見ると、 > > > > なんかいろいろ設定とか > > ↓ > > g_signal_emitでset_focusイベントをemit > > > > って流れになってしまいます。 > > > > なので、単純にこのラッパを作ってしまうと > > gtk_window_set_focus()を呼べなくなってしまいます。 > > GtkWindowのset-focusシグナルはアクションシグナルではないので、 > emitするメソッドを自動定義してはいないはずです。 なるほど。 アクションシグナルのみ自動定義するんですね。 #アクションシグナルという存在を知らなかった私(^^;)。 > > Gtk::Window.signal("set-focus").action? > #=> false > > また、自動定義されるメソッドはG_DEF_CLASSからリターンする前に定義され > るので、その後に定義される通常のメソッドを上書きしたりはしないです。 > > > 逆に、すでにメソッドが定義されている場合は > > このラッパではなく、元のメソッドを呼び出す > > ということも考えられますが、これだと一貫性 > > がなくなり、きっとわかりづらくなるのでやめ > > たいです。 > > 一貫性がないというのは否定しませんが、 > プロパティへのアクセス用に自動生成されるメソッドも既にあるわけですし、 > それらに比べて特別分かりづらいと言うこともないと思います。 なるほど。わかりました。私の杞憂のようです。 今のままで行きましょう。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2003-07-20 09:05:00
|
むとうです。 On Sun, 20 Jul 2003 15:54:56 +0900 (JST) Masahiro Sakai (酒井政裕) <sa...@to...> wrote: > さかいです。 > > > > これのメリットって何でしょうか。 > > > > 例えば、単純にsignal_emit("cancel")をする場合に比べ、 > > > > > > > > def cancel > > > > signal_emit("cancel") > > > > end > > > > > > > > が自動定義されるとうれしいことって何かありますか。 > > > > > > > > 単にメソッドが増えるだけだとあまりうれしくないなぁと。 > > > > > > "They can also be thought of as by third-party code generically > > > callable object methods."と書いてあるので、メソッドと考えられるものは > > > 実際にメソッドにしてしまったほうが分かりやすいと考えました。 > > > > なるほど...。 > > > > 確かにわかりやすくなりますね。 > > > > ちと、普通のメソッド(やプロパティ)とメソッド名が重複しないか > > 心配ですが、とくに問題ないようでしたら、experimentalではなく > > 本採用ということでどうでしょうか。 > > これもすっかり忘れてましたが、 > デフォルトで有効にしておきました。 今、サンプルを作ろうとして気づいたのですが....。 Gtk::Window#set_focusというメソッドが元からあるのですが、 set_focusシグナルもあります。 どちらも、引数はGtkWindow, GtkWidget(gpointerはRubyから使わないので無視) なので、たまたま、このままでも問題ないですが、 やはり重複すると都合の悪いパターンがありそうな気がしてきました。 どうでしょうか。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masahiro S. ()
<sa...@to...> - 2003-04-11 02:02:52
|
さかいです。 From: Masao Mutoh <mu...@hi...> Subject: Re: [ruby-gnome2-devel-ja] Action signals Date: Fri, 11 Apr 2003 03:20:50 +0900 > むとうです。 > これのメリットって何でしょうか。 > 例えば、単純にsignal_emit("cancel")をする場合に比べ、 > > def cancel > signal_emit("cancel") > end > > が自動定義されるとうれしいことって何かありますか。 > > 単にメソッドが増えるだけだとあまりうれしくないなぁと。 "They can also be thought of as by third-party code generically callable object methods."と書いてあるので、メソッドと考えられるものは 実際にメソッドにしてしまったほうが分かりやすいと考えました。 -- 酒井 政裕 / Masahiro Sakai |
From: Masahiro S. ()
<sa...@to...> - 2003-04-10 17:18:53
|
さかいです。 From: Masao Mutoh <mu...@hi...> Subject: Re: [ruby-gnome2-devel-ja] Action signals Date: Fri, 11 Apr 2003 01:41:37 +0900 > むとうです。 > ちと、疲れてて英語読む気になれません(-o-;)。 > > というわけで、サンプルコードプリーズ! 例えば、Gtk::MenuShellが持っているアクションシグナルは move-current, activate-current, cancel, cycle-focus の4つなので、 これらを呼び出す以下のようなメソッドがGtk::MenuShellに自動定義されます。 def move_current(x) signal_emit("move-current",x) end def activate_current(x) signal_emit("activate-current", x) end def cancel signal_emit("cancel") end def cycle_focus(x) signal_emit("cycle-focus", x) end -- 酒井 政裕 / Masahiro Sakai |