You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
(47) |
Jul
(47) |
Aug
(75) |
Sep
(6) |
Oct
(5) |
Nov
|
Dec
(5) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(2) |
Feb
(5) |
Mar
(5) |
Apr
|
May
|
Jun
(1) |
Jul
(7) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
From: Seiya N. <se...@ku...> - 2002-07-04 01:33:40
|
西澤です。 > > たいへん初歩的な質問で申し訳ないのですが > > Gtk::DrawingArea > > で key_press_eventがとれません。 > これ、難しいですね。 > 私もよくわからなかったので調べてみました。 > で、結論からするとキーボードのイベントはフォーカスがあたる(CAN_FOCUS) > ウィジェットしか取得できないみたいです。 > デフォルトではGtk::Windowなどのトップレベルウィジェットがキーボード > のイベントを受け取れるようですが、トップレベルでないウィジェット > でキーボードのイベントを受け取りたい場合は、フォーカスを受け取れる > ことを明示的に指定し、さらにgrabしないとダメみたいです。 > > そこで、以下のようにコードを修正しました。 > Gtk::Widget#set_flagsとGtk::Widget#grab_focusがキモです。 > 特にGtk::Widget#grab_focusは親ウィジェットにaddされた後に呼ぶ必要が > あります。 > draw_area.set_flags(Gtk::Widget::CAN_FOCUS) > draw_area.grab_focus わざわざ調べていただいてありがとうございます。 なるほど納得致しました。 そのような仕様だったんですね。 勉強になりました。 ---------- Seiya Nishizawa se...@ku... |
From: Yasuhito T. <tak...@ma...> - 2002-07-03 22:50:52
|
高宮です むとうさん、丁寧な解説ありがとうございます。 なるほど、2行以上でないと寄せられないのですね。 HBox を使った例で意図したとおりのものができました。 しばらくはむとうさんの Web Page を参考に、調べてみることにします。 -- 高宮 > -----Original Message----- > From: rub...@li... [mailto:rub...@li...] On Behalf > Of Masao Mutoh > Sent: Wednesday, July 03, 2002 1:49 AM > To: rub...@li... > Subject: Re: [ruby-gnome-users-ja] Gtk::Label の alignment について > > むとうです。 > > はじめまして。 > > On Wed, 3 Jul 2002 00:09:14 +0900 > "Yasuhito TAKAMIYA" <tak...@ma...> wrote: > > > はじめまして、高宮と申します。 > > > > Gtk::Label で文字の左寄せをしようとしましたが、うまくいきませんでし た。 > > このメールの最後に添付しましたプログラムを実行しましたところ、 > > 私としてはlabel2 と label3 の文字列が左寄せされることを期待していた ので > > すが、 > > いずれも中央寄せで表示されました。 > > 実は私もはまりました。 > > 調べてみたところ、Gtk::Label#set_justify()は、そのラベルが2行以上ある 場合の > ラベルの寄せ方を定義するモノみたいですので、高宮さんの意図されたメソッ ドでは > なさそうです。 > > 手前味噌ですが以下を参照してみてください。 > http://home2.highway.ne.jp/mutoh/tips/label.html#5 > > #ちなみに改行する場合、文字列は'(シングルクオート)ではなく"(ダブルク オート)で > #括る必要があります。 > > では、どうするかというと、例えば、Gtk::HBoxなんかを使ってはいかがで しょうか。 > > window = Gtk::Window.new > window.border_width=10 > > label1 = Gtk::Label.new '111111111' > label2 = Gtk::Label.new '2222222' > label3 = Gtk::Label.new "333333333333" > label4 = Gtk::Label.new '444444' > > table = Gtk::Table.new 2, 2, false > table.attach label1, 0, 1, 0, 1 > table.attach label2, 0, 1, 1, 2 > table.attach label3, 1, 2, 0, 1 > table.attach Gtk::HBox.new.pack_start(label4, false, false), 1, 2, 1, 2 > > window.add table > window.show_all > > Gtk.main > > Gtk::Box周りは以下をどうぞ。 > http://home2.highway.ne.jp/mutoh/tips/gtk_box.html > > それでは。 > -- > .:% Masao Mutoh<mu...@hi...> > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > ruby-gnome-users-ja mailing list > rub...@li... > https://lists.sourceforge.net/lists/listinfo/ruby-gnome-users-ja |
From: Masao M. <mu...@hi...> - 2002-07-03 16:33:20
|
むとうです。 はじめまして。 On Wed, 3 Jul 2002 12:32:37 +0900 Seiya Nishizawa <se...@ku...> wrote: > 西澤ともうします。 > > たいへん初歩的な質問で申し訳ないのですが > Gtk::DrawingArea > で key_press_eventがとれません。 > > なにか勘違いをしているのでしょうか。 > すいませんがアドバイスをいただけたらうれしいのですが。 これ、難しいですね。 私もよくわからなかったので調べてみました。 で、結論からするとキーボードのイベントはフォーカスがあたる(CAN_FOCUS) ウィジェットしか取得できないみたいです。 デフォルトではGtk::Windowなどのトップレベルウィジェットがキーボード のイベントを受け取れるようですが、トップレベルでないウィジェット でキーボードのイベントを受け取りたい場合は、フォーカスを受け取れる ことを明示的に指定し、さらにgrabしないとダメみたいです。 そこで、以下のようにコードを修正しました。 Gtk::Widget#set_flagsとGtk::Widget#grab_focusがキモです。 特にGtk::Widget#grab_focusは親ウィジェットにaddされた後に呼ぶ必要が あります。 ------ require "gtk" draw_area = Gtk::DrawingArea.new draw_area.set_flags(Gtk::Widget::CAN_FOCUS) draw_area.set_events(Gdk::BUTTON_PRESS_MASK|Gdk::KEY_PRESS_MASK) draw_area.signal_connect("button_press_event"){|w,p| p w,p } draw_area.signal_connect("key_press_event"){|w,p| p w,p p Gdk::Keyval.to_name(p.keyval) } main_window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL) main_window.add(draw_area) draw_area.grab_focus main_window.show_all main_window.signal_connect("delete_event"){Gtk.main_quit} main_window.signal_connect("destroy"){Gtk.main_quit} Gtk.main -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2002-07-03 13:51:21
|
むとうです。 On Wed, 3 Jul 2002 12:21:31 +0900 WATANABE Hirofumi <eb...@os...> wrote: > わたなべです。 > :最近、cygwinのサイトにGTK+1.2.9ベースのパッケージがあったような > :気がするのですが、そちらは使われないモノなのでしょうか? > :#二者の関係がよくわかっていないもので...。 > > CygwinのほうはXがベースになってます。ですのでそれほど気にす > る必要はないはずです。Cygwinで直接WindowsのAPIを使った移植は > 存在しません。 なるほど。 > と思ったけど、-fnative-structはまずいんだった。 > #以前さかいさんに指摘された。 > > というわけで、CVSからの差分です。これでCygwin版Xベースの > glib 1.2.10, gtk+ 1.2.10でもokです。 ありがとうございます。助かります。 CVSの方に反映しときましたのでご確認ください。 -- .:% Masao Mutoh<mu...@hi...> |
From: Seiya N. <se...@ku...> - 2002-07-03 03:32:47
|
西澤ともうします。 たいへん初歩的な質問で申し訳ないのですが Gtk::DrawingArea で key_press_eventがとれません。 なにか勘違いをしているのでしょうか。 すいませんがアドバイスをいただけたらうれしいのですが。 require "gtk" draw_area = Gtk::DrawingArea.new draw_area.set_events(Gdk::BUTTON_PRESS_MASK|Gdk::KEY_PRESS_MASK) draw_area.signal_connect("button_press_event"){|w,p| p w,p } draw_area.signal_connect("key_press_event"){|w,p| p w,p } main_window = Gtk::Window.new(Gtk::WINDOW_TOPLEVEL) main_window.add(draw_area) main_window.show_all main_window.signal_connect("delete_event"){Gtk.main_quit} main_window.signal_connect("destroy"){Gtk.main_quit} Gtk.main ---------- Seiya Nishizawa se...@ku... |
From: WATANABE H. <eb...@os...> - 2002-07-03 03:21:39
|
わたなべです。 Masao Mutoh <mu...@hi...> writes: :以前からWindows版については不思議に思っていたのですが、 :gtk+1.3.xベースなんですよね。 そうですね。glibはなぜか2.0.3を使ってるようです。 :最近、cygwinのサイトにGTK+1.2.9ベースのパッケージがあったような :気がするのですが、そちらは使われないモノなのでしょうか? :#二者の関係がよくわかっていないもので...。 CygwinのほうはXがベースになってます。ですのでそれほど気にす る必要はないはずです。Cygwinで直接WindowsのAPIを使った移植は 存在しません。 と思ったけど、-fnative-structはまずいんだった。 #以前さかいさんに指摘された。 というわけで、CVSからの差分です。これでCygwin版Xベースの glib 1.2.10, gtk+ 1.2.10でもokです。 -- わたなべひろふみ Index: gtk/extconf.rb =================================================================== RCS file: /cvsroot/ruby-gnome/ruby-gnome/gtk/extconf.rb,v retrieving revision 1.8 diff -u -1 -r1.8 extconf.rb --- gtk/extconf.rb 16 Jun 2002 13:39:51 -0000 1.8 +++ gtk/extconf.rb 3 Jul 2002 03:14:18 -0000 @@ -44,2 +44,4 @@ +gdkx = have_header("gdk/gdkx.h") + # @@ -54,3 +56,3 @@ if /cygwin|mingw/ =~ PLATFORM - $CFLAGS += " -fnative-struct -DNATIVE_WIN32" + $CFLAGS += " -fnative-struct -DNATIVE_WIN32" unless gdkx elsif /mswin32/ !~ PLATFORM Index: gtk/src/rbgtk.h =================================================================== RCS file: /cvsroot/ruby-gnome/ruby-gnome/gtk/src/rbgtk.h,v retrieving revision 1.16 diff -u -1 -r1.16 rbgtk.h --- gtk/src/rbgtk.h 1 Jul 2002 17:15:50 -0000 1.16 +++ gtk/src/rbgtk.h 3 Jul 2002 03:14:18 -0000 @@ -19,15 +19,9 @@ #include <gtk/gtk.h> -#if defined __CYGWIN__ -#define HWND_DESKTOP 0 -#define GDK_ROOT_WINDOW() ((guint32) HWND_DESKTOP) -#elif defined _WIN32 -#include <gdk/win32/gdkwin32.h> /* for GDK_ROOT_WINDOW() */ -#else -#include <gdk/gdkx.h> /* for GDK_ROOT_WINDOW() */ -#endif -#include <signal.h> -#ifndef X_PROTOCOL -typedef unsinged long Atom; +#if defined HAVE_GDK_GDKX_H +# include <gdk/gdkx.h> /* for GDK_ROOT_WINDOW() */ +#elif defined G_OS_WIN32 +# define GDK_ROOT_WINDOW() ((guint32) HWND_DESKTOP) #endif +#include <signal.h> |
From: Masao M. <mu...@hi...> - 2002-07-02 16:54:58
|
むとうです。 On Tue, 2 Jul 2002 19:19:04 +0900 WATANABE Hirofumi <eb...@os...> wrote: > わたなべです。 > > WATANABE Hirofumi <eb...@os...> writes: > > :あ、しまった。 > : Message-Id: <200...@os...> > : で、無理矢理typedef unsinged long Atom;しても > :ってtypoだ。unsignedですよねえ。すみません。 あぁ。チェックもしないで....。こちらこそすみません。 > :いいわけなんですが、なんでこれをpatchに含めなかったかというと、 > :#if defined ... #endで囲んだのでなくてもいいからなんです。 > :他に使う予定があるなら別ですが、gtk/src/rbgtk.hから外してもいいです。 そうですね。外しましょう。 これ、私の方でGdkAtomと勘違いしてました(^^;)。Atomなんですよね。 > 一応パッチを。 > > それとは別に最新のGTK+ and GIMP for Windowsのバイナリ > http://www.gimp.org/~tml/gimp/win32/downloads.html > を使うとエラーになります。 <gdk/win32/gdkwin32.h> の位置が > <gdk/gdkwin32.h>になったからですが、これを修正しても今度は > <win32/gdkprivate-win32.h>がみつからないというエラーに。 > 調べてみると、入れ忘れたらしい。 > http://groups.yahoo.com/group/gimpwin-dev/message/2066 > 面倒なので必要な GDK_ROOT_WINDOW() だけを直接定義するように > してみました。 以前からWindows版については不思議に思っていたのですが、 gtk+1.3.xベースなんですよね。 最近、cygwinのサイトにGTK+1.2.9ベースのパッケージがあったような 気がするのですが、そちらは使われないモノなのでしょうか? #二者の関係がよくわかっていないもので...。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2002-07-02 16:48:50
|
むとうです。 はじめまして。 On Wed, 3 Jul 2002 00:09:14 +0900 "Yasuhito TAKAMIYA" <tak...@ma...> wrote: > はじめまして、高宮と申します。 > > Gtk::Label で文字の左寄せをしようとしましたが、うまくいきませんでした。 > このメールの最後に添付しましたプログラムを実行しましたところ、 > 私としてはlabel2 と label3 の文字列が左寄せされることを期待していたので > すが、 > いずれも中央寄せで表示されました。 実は私もはまりました。 調べてみたところ、Gtk::Label#set_justify()は、そのラベルが2行以上ある場合の ラベルの寄せ方を定義するモノみたいですので、高宮さんの意図されたメソッドでは なさそうです。 手前味噌ですが以下を参照してみてください。 http://home2.highway.ne.jp/mutoh/tips/label.html#5 #ちなみに改行する場合、文字列は'(シングルクオート)ではなく"(ダブルクオート)で #括る必要があります。 では、どうするかというと、例えば、Gtk::HBoxなんかを使ってはいかがでしょうか。 window = Gtk::Window.new window.border_width=10 label1 = Gtk::Label.new '111111111' label2 = Gtk::Label.new '2222222' label3 = Gtk::Label.new "333333333333" label4 = Gtk::Label.new '444444' table = Gtk::Table.new 2, 2, false table.attach label1, 0, 1, 0, 1 table.attach label2, 0, 1, 1, 2 table.attach label3, 1, 2, 0, 1 table.attach Gtk::HBox.new.pack_start(label4, false, false), 1, 2, 1, 2 window.add table window.show_all Gtk.main Gtk::Box周りは以下をどうぞ。 http://home2.highway.ne.jp/mutoh/tips/gtk_box.html それでは。 -- .:% Masao Mutoh<mu...@hi...> |
From: Yasuhito T. <tak...@ma...> - 2002-07-02 15:09:30
|
はじめまして、高宮と申します。 Gtk::Label で文字の左寄せをしようとしましたが、うまくいきませんでした。 このメールの最後に添付しましたプログラムを実行しましたところ、 私としてはlabel2 と label3 の文字列が左寄せされることを期待していたので すが、 いずれも中央寄せで表示されました。 私のプログラム自体がまずいのかもしれませんが、 もし原因がわかる方がいらっしゃいましたら、教えてください 私の環境は、 Debian GNU/Linux sid ruby 1.6.7-4 libgtk-ruby 0.28-2 libgtk1.2 1.2.10-12 です。 テストプログラム require 'gtk' window = Gtk::Window.new window.border_width=10 label1 = Gtk::Label.new '111111111' label2 = Gtk::Label.new '2222222' label2.set_justify Gtk::JUSTIFY_LEFT label3 = Gtk::Label.new '333333333333' label4 = Gtk::Label.new '444444' label4.set_justify Gtk::JUSTIFY_LEFT table = Gtk::Table.new 2, 2, false table.attach label1, 0, 1, 0, 1 table.attach label2, 0, 1, 1, 2 table.attach label3, 1, 2, 0, 1 table.attach label4, 1, 2, 1, 2 window.add table window.show_all Gtk.main -- 高宮 |
From: WATANABE H. <eb...@os...> - 2002-07-02 10:19:25
|
わたなべです。 WATANABE Hirofumi <eb...@os...> writes: :あ、しまった。 : Message-Id: <200...@os...> : で、無理矢理typedef unsinged long Atom;しても :ってtypoだ。unsignedですよねえ。すみません。 : :いいわけなんですが、なんでこれをpatchに含めなかったかというと、 :#if defined ... #endで囲んだのでなくてもいいからなんです。 :他に使う予定があるなら別ですが、gtk/src/rbgtk.hから外してもいいです。 一応パッチを。 それとは別に最新のGTK+ and GIMP for Windowsのバイナリ http://www.gimp.org/~tml/gimp/win32/downloads.html を使うとエラーになります。 <gdk/win32/gdkwin32.h> の位置が <gdk/gdkwin32.h>になったからですが、これを修正しても今度は <win32/gdkprivate-win32.h>がみつからないというエラーに。 調べてみると、入れ忘れたらしい。 http://groups.yahoo.com/group/gimpwin-dev/message/2066 面倒なので必要な GDK_ROOT_WINDOW() だけを直接定義するように してみました。 -- わたなべひろふみ Index: gtk/src/rbgtk.h =================================================================== RCS file: /cvsroot/ruby-gnome/ruby-gnome/gtk/src/rbgtk.h,v retrieving revision 1.16 diff -u -1 -r1.16 rbgtk.h --- gtk/src/rbgtk.h 1 Jul 2002 17:15:50 -0000 1.16 +++ gtk/src/rbgtk.h 2 Jul 2002 06:24:50 -0000 @@ -19,9 +19,7 @@ #include <gtk/gtk.h> -#if defined __CYGWIN__ -#define HWND_DESKTOP 0 -#define GDK_ROOT_WINDOW() ((guint32) HWND_DESKTOP) -#elif defined _WIN32 -#include <gdk/win32/gdkwin32.h> /* for GDK_ROOT_WINDOW() */ -#else -#include <gdk/gdkx.h> /* for GDK_ROOT_WINDOW() */ + +#if defined X_PROTOCOL +# include <gdk/gdkx.h> /* for GDK_ROOT_WINDOW() */ +#elif defined G_OS_WIN32 +# define GDK_ROOT_WINDOW() ((guint32) HWND_DESKTOP) #endif @@ -30,3 +28,3 @@ #ifndef X_PROTOCOL -typedef unsinged long Atom; +typedef unsigned long Atom; #endif |
From: WATANABE H. <eb...@os...> - 2002-07-02 04:22:00
|
わたなべです。 Masao Mutoh <mu...@hi...> writes: :わたなべさんのパッチをあてて、それから私の方でmake/get_gdkcolormapをmake/get_gdkcmap :に直して(あと、Atomもtypedefして)CVSにあげておきました。 : :今度は大丈夫でしょうか。 あ、しまった。 Message-Id: <200...@os...> で、無理矢理typedef unsinged long Atom;しても ってtypoだ。unsignedですよねえ。すみません。 いいわけなんですが、なんでこれをpatchに含めなかったかというと、 #if defined ... #endで囲んだのでなくてもいいからなんです。 他に使う予定があるなら別ですが、gtk/src/rbgtk.hから外してもいいです。 -- わたなべひろふみ |
From: Masao M. <mu...@hi...> - 2002-07-01 17:31:05
|
むとうです。 On Tue, 02 Jul 2002 00:44:28 +0900 WATANABE Hirofumi <eb...@os...> wrote: > わたなべです。 > > Masao Mutoh <mu...@hi...> writes: > > :Ruby-GNOME-0.29をリリースしました。 > :動作チェック等、よろしくお願いしますね。 > > Ruby/GTKですが、 > Atomは/usr/X11R6/include/X11/X.hでtypedefされてるので、 > Windowsではエラーになります。 > とりあえず、後述のように場合分けしてみましたが、 > rbgdkwindow.o(.text+0xf2b):rbgdkwindow.c: undefined reference to `make_gdkcolormap' > となります。Linux(GTK+ 1.2.10)で-Wl,-no-undefinedをつけてリンクしてみても > rbgdkwindow.o: In function `gdkwin_get_colormap': > rbgdkwindow.o(.text+0xfa6): undefined reference to `make_gdkcolormap' > rbgdkwindow.o: In function `gdkwin_prop_change': > rbgdkwindow.o(.text+0x14ef): undefined reference to `get_gdkcolormap' > なんですけど、これってひょっとしてGTK+ 2.0.x? わたなべさんのパッチをあてて、それから私の方でmake/get_gdkcolormapをmake/get_gdkcmap に直して(あと、Atomもtypedefして)CVSにあげておきました。 今度は大丈夫でしょうか。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2002-07-01 16:47:24
|
むとうです。 On Tue, 02 Jul 2002 00:44:28 +0900 WATANABE Hirofumi <eb...@os...> wrote: > わたなべです。 > > Masao Mutoh <mu...@hi...> writes: > > :Ruby-GNOME-0.29をリリースしました。 > :動作チェック等、よろしくお願いしますね。 > > Ruby/GTKですが、 > Atomは/usr/X11R6/include/X11/X.hでtypedefされてるので、 > Windowsではエラーになります。 なるほど。AtomはWindowsではないんですか....。そりゃそうか。 > rbgdkwindow.c: In function `gdkwin_prop_change': > rbgdkwindow.c:503: `Atom' undeclared (first use in this function) > rbgdkwindow.c:503: (Each undeclared identifier is reported only once > rbgdkwindow.c:503: for each function it appears in.) > で、無理矢理typedef unsinged long Atom;しても そうですね。ここは無理矢理上記typedefしてしまった方が良いですね。 > rbgdkwindow.c: In function `gdkwin_prop_change': > rbgdkwindow.c:511: `GdkPixmapPrivate' undeclared (first use in this function) > rbgdkwindow.c:511: (Each undeclared identifier is reported only once > rbgdkwindow.c:511: for each function it appears in.) > となります。Windowsは > gtk+/gdk/gdkprivate.h:/* typedef struct _GdkDrawablePrivate GdkPixmapPrivate; */ > とコメントアウトされてるから。 実はGdkPixmapPrivateはGTK+-2.0では無くなってるんですよね。どうしよう。 > とりあえず、後述のように場合分けしてみましたが、 > rbgdkwindow.o(.text+0xf2b):rbgdkwindow.c: undefined reference to `make_gdkcolormap' > となります。Linux(GTK+ 1.2.10)で-Wl,-no-undefinedをつけてリンクしてみても > rbgdkwindow.o: In function `gdkwin_get_colormap': > rbgdkwindow.o(.text+0xfa6): undefined reference to `make_gdkcolormap' > rbgdkwindow.o: In function `gdkwin_prop_change': > rbgdkwindow.o(.text+0x14ef): undefined reference to `get_gdkcolormap' > なんですけど、これってひょっとしてGTK+ 2.0.x? あ、いや、これ、間違ってます。それぞれmake_gdkcmap, get_gdkcmapが正しいですね。 またしてもリリース後に問題がでましたね。いかんなぁ < オレ。 -- .:% Masao Mutoh<mu...@hi...> |
From: WATANABE H. <eb...@os...> - 2002-07-01 15:45:56
|
わたなべです。 Masao Mutoh <mu...@hi...> writes: :Ruby-GNOME-0.29をリリースしました。 :動作チェック等、よろしくお願いしますね。 Ruby/GTKですが、 Atomは/usr/X11R6/include/X11/X.hでtypedefされてるので、 Windowsではエラーになります。 rbgdkwindow.c: In function `gdkwin_prop_change': rbgdkwindow.c:503: `Atom' undeclared (first use in this function) rbgdkwindow.c:503: (Each undeclared identifier is reported only once rbgdkwindow.c:503: for each function it appears in.) で、無理矢理typedef unsinged long Atom;しても rbgdkwindow.c: In function `gdkwin_prop_change': rbgdkwindow.c:511: `GdkPixmapPrivate' undeclared (first use in this function) rbgdkwindow.c:511: (Each undeclared identifier is reported only once rbgdkwindow.c:511: for each function it appears in.) となります。Windowsは gtk+/gdk/gdkprivate.h:/* typedef struct _GdkDrawablePrivate GdkPixmapPrivate; */ とコメントアウトされてるから。 とりあえず、後述のように場合分けしてみましたが、 rbgdkwindow.o(.text+0xf2b):rbgdkwindow.c: undefined reference to `make_gdkcolormap' となります。Linux(GTK+ 1.2.10)で-Wl,-no-undefinedをつけてリンクしてみても rbgdkwindow.o: In function `gdkwin_get_colormap': rbgdkwindow.o(.text+0xfa6): undefined reference to `make_gdkcolormap' rbgdkwindow.o: In function `gdkwin_prop_change': rbgdkwindow.o(.text+0x14ef): undefined reference to `get_gdkcolormap' なんですけど、これってひょっとしてGTK+ 2.0.x? --- src/rbgdkwindow.c.orig 2002-06-30 14:32:09.000000000 +0000 +++ src/rbgdkwindow.c 2002-07-01 15:20:42.000000000 +0000 @@ -499,3 +499,6 @@ - if(ntype == GDK_SELECTION_TYPE_ATOM){ + if (0) { + ; +#if defined X_PROTOCOL + } else if(ntype == GDK_SELECTION_TYPE_ATOM){ len = RARRAY(src)->len; @@ -519,2 +522,3 @@ +#endif } else if(ntype == GDK_SELECTION_TYPE_INTEGER){ @@ -525,2 +529,3 @@ +#if defined X_PROTOCOL } else if(ntype == GDK_SELECTION_TYPE_PIXMAP){ @@ -536,2 +541,3 @@ +#endif } else if(ntype == GDK_SELECTION_TYPE_STRING) { -- わたなべひろふみ |
From: Masao M. <mu...@hi...> - 2002-06-30 15:08:19
|
むとうです。 Ruby-GNOME-0.29をリリースしました。 動作チェック等、よろしくお願いしますね。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2002-06-22 03:46:20
|
むとうです。 Ruby-GNOME-0.28を出してから1ヶ月くらいたち、 それなりにバグフィクス等もできたので 来週末くらいに0.29をリリースしようと思います。 もし、実装しておきたい機能とか見つけたバグが ありましたら、お早めにどうぞ。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2002-06-15 14:41:14
|
むとうです。 On Sat, 15 Jun 2002 04:47:01 +0900 Hiroshi IGARASHI <ig...@ru...> wrote: > いがらしです。 > > 原因が分かりかけてきました。 > Ruby-GNOMEではなくruby1.7 mkmf.rbの問題のような気がしますが、 > とりあえずここで状況だけ説明しておきます。 > もしRuby-GNOME specificでなければ続きはruby-devで。 > install: > @$(MAKEDIRS) $(rubylibdir)$(target_prefix) > @$(INSTALL_DATA) ../src/lib/gnome.rb $(rubylibdir)$(target_prefix) > > site-install: > @$(MAKEDIRS) $(rubylibdir)$(target_prefix) > @$(INSTALL_DATA) ../src/lib/gnome.rb $(rubylibdir)$(target_prefix) > ^^^^^^^^^^ なるほど。 私はmake installしか試してなかったのでそういう現象に 遭わなかったわけですね。 ruby CVS版のext/配下のライブラリで試してみましたがやはり、rubylibdirになり ますね。 (nkfの例) site-install: @$(MAKEDIRS) $(rubylibdir)$(target_prefix) @$(INSTALL_DATA) $(srcdir)/lib/kconv.rb $(rubylibdir)$(target_prefix) 上記は、ext/nkfにcdして、その後、ruby extconf.rbした結果です。 #まぁ、標準添付されるツールはsite-installしないでしょうからこれで #問題ないんでしょうが(^^;)。 -- .:% Masao Mutoh<mu...@hi...> |
From: Hiroshi I. <ig...@ru...> - 2002-06-14 19:47:12
|
いがらしです。 原因が分かりかけてきました。 Ruby-GNOMEではなくruby1.7 mkmf.rbの問題のような気がしますが、 とりあえずここで状況だけ説明しておきます。 もしRuby-GNOME specificでなければ続きはruby-devで。 At Wed, 12 Jun 2002 03:04:52 +0900, Masao Mutoh <mu...@hi...> wrote: > > > ruby 1.7.2 (2002-06-10) [i686-linux] > > GNU Make version 3.79.1, by Richard Stallman and Roland McGrath. > > うーむ、私とほとんど条件変わらないですね。 > rubyのインストール先と、ライブラリのインストール先って > どちらになりますか? configure --prefix=/tmp/ruby でrubyをコンパイルしているので、 make install ---> /tmp/ruby/lib/ruby/1.7/ make site-install ---> /tmp/ruby/lib/ruby/site_ruby/1.7/ となりますが、make site-installでruby-gnomeをインストールしています。 > それと、いがらしさんの環境で作成したMakefileを送っていただけ > ませんか。 関係ありそうな部分だけ載せます。 install: $(archdir)$(target_prefix)/$(DLLIB) site-install: $(sitearchdir)$(target_prefix)/$(DLLIB) $(archdir)$(target_prefix)/$(DLLIB): $(DLLIB) @$(MAKEDIRS) $(rubylibdir) $(archdir)$(target_prefix) @$(INSTALL_PROG) $(DLLIB) $(archdir)$(target_prefix)/$(DLLIB) $(sitearchdir)$(target_prefix)/$(DLLIB): $(DLLIB) @$(MAKEDIRS) $(sitearchdir)$(target_prefix) @$(INSTALL_PROG) $(DLLIB) $(sitearchdir)$(target_prefix)/$(DLLIB) install: @$(MAKEDIRS) $(rubylibdir)$(target_prefix) @$(INSTALL_DATA) ../src/lib/gnome.rb $(rubylibdir)$(target_prefix) site-install: @$(MAKEDIRS) $(rubylibdir)$(target_prefix) @$(INSTALL_DATA) ../src/lib/gnome.rb $(rubylibdir)$(target_prefix) ^^^^^^^^^^ 先日は気づかなかったのですが、installとsite-installで *.rbなライブラリのインストール先が同じになっています。 そして「gnome.rbがインストールされなかった」と前に書いたのは 誤りで、make site-installによりインストールはされていましたが、 make installでインストールされる位置であると思われる /tmp/ruby/lib/ruby/1.7/ にインストールされていました。 確かにMakefileの通りではあります。 インストールされてしまったgnome.rbなどを削除し、改めて make site-installを実行すると、以下のようになります。 gnome.rbなどがインストールはされるものの、ライブラリパスの 順序のためにrequire 'gnome'ではgnome.rbを見つけてくれません。 # 先日はこの現象だけを見てgnome.rbはインストールされていないと # 判断してしまいました。 $ ruby -v -e 'p $:' ruby 1.7.2 (2002-06-14) [i686-linux] ["/tmp/ruby/lib/ruby/site_ruby/1.7", "/tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux", "/tmp/ruby/lib/ruby/site_ruby", "/tmp/ruby/lib/ruby/1.7", "/tmp/ruby/lib/ruby/1.7/i686-linux", "."] $ make site-install for subdir in panel-applet libglade gtk gnome gdkpixbuf gdkimlib; do \ (cd ${subdir} && make site-install); \ done; make[1]: Entering directory `/home/iga/ruby/ruby-gnome/panel-applet' panel_applet.so -> /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/panel_applet.so chmod 0555 /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/panel_applet.so .././panel-applet/lib/panel-applet.rb -> /tmp/ruby/lib/ruby/1.7/panel-applet.rbchmod 0644 /tmp/ruby/lib/ruby/1.7/panel-applet.rb make[1]: Leaving directory `/home/iga/ruby/ruby-gnome/panel-applet' make[1]: Entering directory `/home/iga/ruby/ruby-gnome/libglade' lglade.so -> /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/lglade.so chmod 0555 /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/lglade.so make[1]: Leaving directory `/home/iga/ruby/ruby-gnome/libglade' make[1]: Entering directory `/home/iga/ruby/ruby-gnome/gtk' make[2]: Entering directory `/home/iga/ruby/ruby-gnome/gtk/src' gtk.so -> /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/gtk.so chmod 0555 /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/gtk.so make[2]: Leaving directory `/home/iga/ruby/ruby-gnome/gtk/src' make[1]: Leaving directory `/home/iga/ruby/ruby-gnome/gtk' make[1]: Entering directory `/home/iga/ruby/ruby-gnome/gnome' make[2]: Entering directory `/home/iga/ruby/ruby-gnome/gnome/src' gnome.so -> /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/gnome.so chmod 0555 /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/gnome.so ../src/lib/gnome.rb -> /tmp/ruby/lib/ruby/1.7/gnome.rb chmod 0644 /tmp/ruby/lib/ruby/1.7/gnome.rb make[2]: Leaving directory `/home/iga/ruby/ruby-gnome/gnome/src' make[1]: Leaving directory `/home/iga/ruby/ruby-gnome/gnome' make[1]: Entering directory `/home/iga/ruby/ruby-gnome/gdkpixbuf' gdk_pixbuf.so -> /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/gdk_pixbuf.so chmod 0555 /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/gdk_pixbuf.so .././gdkpixbuf/lib/gdk_pixbuf.rb -> /tmp/ruby/lib/ruby/1.7/gdk_pixbuf.rb chmod 0644 /tmp/ruby/lib/ruby/1.7/gdk_pixbuf.rb make[1]: Leaving directory `/home/iga/ruby/ruby-gnome/gdkpixbuf' make[1]: Entering directory `/home/iga/ruby/ruby-gnome/gdkimlib' gdk_imlib.so -> /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/gdk_imlib.so chmod 0555 /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/gdk_imlib.so .././gdkimlib/lib/gdk_imlib.rb -> /tmp/ruby/lib/ruby/1.7/gdk_imlib.rb chmod 0644 /tmp/ruby/lib/ruby/1.7/gdk_imlib.rb make[1]: Leaving directory `/home/iga/ruby/ruby-gnome/gdkimlib' $ ruby -rgnome.rb -e '' $ ruby -rgnome -e '' 0: /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/gnome.so: undefined symbol: gBin - /tmp/ruby/lib/ruby/site_ruby/1.7/i686-linux/gnome.so (LoadError) -- 五十嵐 宏 (Hiroshi IGARASHI) |
From: Masao M. <mu...@hi...> - 2002-06-14 16:09:22
|
むとうです。 On Sat, 15 Jun 2002 00:50:46 +0900 Hiroshi Kuwagata <kg...@ko...> wrote: > 桑形です。 > > 下記の件について、遅れてしまいましたがサンプルコードに > ついてパッチを作成しましたので送付します。 > > 一応これで動いているようではあるのですが… ありがとうございます。CVSにあげておきました。 > #ちょっといじる箇所が少なかったので心配しているの > #ですが… ここは定数値の変更だけで良いと思います。 それでは。 -- .:% Masao Mutoh<mu...@hi...> |
From: Hiroshi K. <kg...@ko...> - 2002-06-14 15:50:53
|
桑形です。 下記の件について、遅れてしまいましたがサンプルコードに ついてパッチを作成しましたので送付します。 一応これで動いているようではあるのですが… #ちょっといじる箇所が少なかったので心配しているの #ですが… On <200...@yo...> wrote by Hiroshi Kuwagata <kg...@ko...>: >> 付箋/RubyでもDrag&Dropを使うつもりなので勉強がてらやって >> みます。 ζ ---- ^^y- くわがた@自宅 kg...@ko... − 年年歳歳花相似 歳歳年年人不同 − ---- ここから[patch] diff -u -r --exclude=CVS ruby-gnome/gtk/sample/dnd.rb ruby-gnome.new/gtk/sample/dnd.rb --- ruby-gnome/gtk/sample/dnd.rb Wed Mar 6 04:23:40 2002 +++ ruby-gnome.new/gtk/sample/dnd.rb Thu Jun 13 21:48:45 2002 @@ -56,7 +56,7 @@ data = @clist.get_text(@selected_row, 0) + "," + @clist.get_text(@selected_row, 1) - selectiondata.set(Gdk::Selection::TYPE_STRING, + selectiondata.set(Gdk::SELECTION_TYPE_STRING, 8, # 8 bits per character data) end @@ -64,7 +64,7 @@ |w, dc, x, y, selectiondata, info, time| dc.targets.each do |target| if target.name == DRAG_TEST || - selectiondata.type == Gdk::Selection::TYPE_STRING + selectiondata.type == Gdk::SELECTION_TYPE_STRING w.append(selectiondata.data.split(",")) end end ---- ここまで[patch] |
From: Masao M. <mu...@hi...> - 2002-06-12 14:32:54
|
むとうです。 On Wed, 12 Jun 2002 22:57:35 +0900 Hiroshi Kuwagata <kg...@ko...> wrote: > 付箋/RubyでもDrag&Dropを使うつもりなので勉強がてらやって > みます。 > で、まずサンプルコード以外の所が出来たのでこのメールにパッチを > つけておきます。 ありがとうございます。いろいろお手数おかけしました。 CVSにチェックインしましたのでご確認ください。 > #サンプルコードは明日ぐらいに対応します 了解です。お待ちしております。 それでは。 -- .:% Masao Mutoh<mu...@hi...> |
From: Hiroshi K. <kg...@ko...> - 2002-06-12 13:57:44
|
On <200...@hi...> wrote by Masao Mutoh <mu...@hi...>: >> むとうです。 桑形です。 >> そこだけ局所的に見るならばそうですね。 >> 本質的な部分での定数値に関する議論をruby-gnome2-devel-jaでしましょう。 了解です。 >> あくまでRuby-GNOMEでどうするかというところですが、確かにくわがたさんの >> 意見は正しいと思います。 >> そこで、Gdk::Selection::TYPE_*をGdk::SELECTION_TYPE_*に修正しましょうか。 >> Gdk::Selection::TYPE_*は削除しましょう。2つあるとまた混乱の元になるでしょうし。 >> #各定数値はGdk::Atomにしてくださるようにお願いします;->。 Gdk::Atomに置き換えた上で書き換えておきました。 なお、Gdk::Selection::PRIMARY,Gdk::Selection::SECONDARY, Gdk::Selection::TARGET_*もあったのでこっちも合わせて やっておきましたが良かったでしょうか? >> > #私がツール作りにRUby/GTKを使ってるのはそれが大きいです >> > ##rot( kgt)だったっていう噂もありますが :-) >> >> gt k (^^;) >> ^ (汗;) >> > >> あえて言えば、sample/dnd.rbが使ってます。 >> > >> > サンプルコードならそんなに問題は大きく無いのでは? >> > まだ、それを使って運用されてるアプリと言う訳でもないですし。 >> >> すでにリリースされて2ヶ月立ちますので、それを使って運用されている >> アプリがあるかないかというのは判断できません。 >> >> とはいえ、新しい機能を実装するようなアプリを作る人は、最新のRuby/GTK >> を追いかけてるでしょうから、特に問題ないでしょう。 >> >> というわけで、こちらも直していただけると助かります。 付箋/RubyでもDrag&Dropを使うつもりなので勉強がてらやって みます。 で、まずサンプルコード以外の所が出来たのでこのメールにパッチを つけておきます。 #サンプルコードは明日ぐらいに対応します 変更点はこんな感じです。 rbgdk.c Init_gtk_gdk()での初期化関数群の呼出し順序を変更。 Gdk::SELECTION_*,Gdk::SELECTION_TYPE_*,Gdk::SELECTION_TARGET_*を Gdk::Atom化するためにInit_gtk_gdk_const()を最後に呼び出すように。 rbgdkconst.c Gdk::SELECTION_*,Gdk::SELECTION_TYPE_*,Gdk::SELECTION_TARGET_* を追加。 rbgdkselection.c Gdk::Selection::PRIMARY,Gdk::Selection::SECONDARYを削除。 Gdk::SELECTION_TYPE_*を削除 Gdk::SELECTION_TARGET_*を削除 rbgdkatom.c gdkatom_eq()から整数評価を削除。 rbgdkwindow.c gdkwin_prop_change()でtypeにGDK_SELECTION_TYPE_ATOMが指定された 場合の整数処理の削除。 ζ ---- ^^y- くわがた@自宅 kg...@ko... − 年年歳歳花相似 歳歳年年人不同 − ---- ここから[patch] diff -r -u --exclude=CVS ruby-gnome/gtk/ChangeLog ruby-gnome.new/gtk/ChangeLog --- ruby-gnome/gtk/ChangeLog Tue Jun 11 00:17:18 2002 +++ ruby-gnome.new/gtk/ChangeLog Mon Jun 10 21:56:55 2002 @@ -1,7 +1,3 @@ -Tue Jun 11 00:17:22 2002 Masao Mutoh <mu...@hi...> - - * src/rbgdkwindow.c: code cleanup in gdkwin_prop_change(). - Sun Jun 09 22:59:40 2002 Hiroshi Kuwagata <kg...@ko...> * src/rbgdkatom.c,src/rbgdkconst.c,src/rbgdkevent.c,src/rbgdkwindow.c: diff -r -u --exclude=CVS ruby-gnome/gtk/src/rbgdk.c ruby-gnome.new/gtk/src/rbgdk.c --- ruby-gnome/gtk/src/rbgdk.c Wed Mar 6 04:25:46 2002 +++ ruby-gnome.new/gtk/src/rbgdk.c Wed Jun 12 21:39:11 2002 @@ -625,7 +625,6 @@ return gdk_events_pending() ? Qtrue : Qfalse; } -extern void Init_gtk_gdk_const(); extern void Init_gtk_gdk_color(); extern void Init_gtk_gdk_cursor(); extern void Init_gtk_gdk_visual(); @@ -647,6 +646,7 @@ extern void Init_gtk_gdk_dnd(); extern void Init_gtk_gdk_atom(); extern void Init_gtk_gdk_selection(); +extern void Init_gtk_gdk_const(); void Init_gtk_gdk() @@ -665,7 +665,6 @@ rb_define_singleton_method(mGdk, "flush", gdk_s_flush, 0); rb_define_singleton_method(mGdk, "events_pending", gdk_s_events_pending, 0); - Init_gtk_gdk_const(); Init_gtk_gdk_color(); Init_gtk_gdk_cursor(); Init_gtk_gdk_draw(); @@ -684,6 +683,7 @@ Init_gtk_gdkkeysyms(); Init_gtk_gdk_atom(); Init_gtk_gdk_selection(); + Init_gtk_gdk_const(); #ifdef USE_XIM /* Gdk::IM, Gdk::IC, Gdk::ICAttr */ diff -r -u --exclude=CVS ruby-gnome/gtk/src/rbgdkconst.c ruby-gnome.new/gtk/src/rbgdkconst.c --- ruby-gnome/gtk/src/rbgdkconst.c Sun Jun 9 23:28:13 2002 +++ ruby-gnome.new/gtk/src/rbgdkconst.c Wed Jun 12 21:37:05 2002 @@ -333,14 +333,25 @@ rb_define_const(mGdk, "RGB_DITHER_NORMAL", INT2FIX(GDK_RGB_DITHER_NORMAL)); rb_define_const(mGdk, "RGB_DITHER_MAX", INT2FIX(GDK_RGB_DITHER_MAX)); + /* GdkSelection */ + rb_define_const(mGdk, "SELECTION_PRIMARY", make_gdkatom(GDK_SELECTION_PRIMARY)); + rb_define_const(mGdk, "SELECTION_SECONDARY", make_gdkatom(GDK_SELECTION_SECONDARY)); + /* GdkSelectionType */ - rb_define_const(mGdk, "SELECTION_TYPE_ATOM", INT2FIX(GDK_SELECTION_TYPE_ATOM)); - rb_define_const(mGdk, "SELECTION_TYPE_BITMAP", INT2FIX(GDK_SELECTION_TYPE_BITMAP)); - rb_define_const(mGdk, "SELECTION_TYPE_COLORMAP", INT2FIX(GDK_SELECTION_TYPE_COLORMAP)); - rb_define_const(mGdk, "SELECTION_TYPE_DRAWABLE", INT2FIX(GDK_SELECTION_TYPE_DRAWABLE)); - rb_define_const(mGdk, "SELECTION_TYPE_INTEGER", INT2FIX(GDK_SELECTION_TYPE_INTEGER)); - rb_define_const(mGdk, "SELECTION_TYPE_PIXMAP", INT2FIX(GDK_SELECTION_TYPE_PIXMAP)); - rb_define_const(mGdk, "SELECTION_TYPE_WINDOW", INT2FIX(GDK_SELECTION_TYPE_WINDOW)); - rb_define_const(mGdk, "SELECTION_TYPE_STRING", INT2FIX(GDK_SELECTION_TYPE_STRING)); + rb_define_const(mGdk, "SELECTION_TYPE_ATOM", make_gdkatom(GDK_SELECTION_TYPE_ATOM)); + rb_define_const(mGdk, "SELECTION_TYPE_BITMAP", make_gdkatom(GDK_SELECTION_TYPE_BITMAP)); + rb_define_const(mGdk, "SELECTION_TYPE_COLORMAP", make_gdkatom(GDK_SELECTION_TYPE_COLORMAP)); + rb_define_const(mGdk, "SELECTION_TYPE_DRAWABLE", make_gdkatom(GDK_SELECTION_TYPE_DRAWABLE)); + rb_define_const(mGdk, "SELECTION_TYPE_INTEGER", make_gdkatom(GDK_SELECTION_TYPE_INTEGER)); + rb_define_const(mGdk, "SELECTION_TYPE_PIXMAP", make_gdkatom(GDK_SELECTION_TYPE_PIXMAP)); + rb_define_const(mGdk, "SELECTION_TYPE_WINDOW", make_gdkatom(GDK_SELECTION_TYPE_WINDOW)); + rb_define_const(mGdk, "SELECTION_TYPE_STRING", make_gdkatom(GDK_SELECTION_TYPE_STRING)); + + /* GdkTarget */ + rb_define_const(mGdk, "SELECTION_TARGET_BITMAP", make_gdkatom(GDK_TARGET_BITMAP)); + rb_define_const(mGdk, "SELECTION_TARGET_COLORMAP", make_gdkatom(GDK_TARGET_COLORMAP)); + rb_define_const(mGdk, "SELECTION_TARGET_DRAWABLE", make_gdkatom(GDK_TARGET_DRAWABLE)); + rb_define_const(mGdk, "SELECTION_TARGET_PIXMAP", make_gdkatom(GDK_TARGET_PIXMAP)); + rb_define_const(mGdk, "SELECTION_TARGET_STRING", make_gdkatom(GDK_TARGET_STRING)); } diff -r -u --exclude=CVS ruby-gnome/gtk/src/rbgdkselection.c ruby-gnome.new/gtk/src/rbgdkselection.c --- ruby-gnome/gtk/src/rbgdkselection.c Sun Mar 3 05:13:58 2002 +++ ruby-gnome.new/gtk/src/rbgdkselection.c Wed Jun 12 21:28:06 2002 @@ -58,9 +58,13 @@ gdkselection_send_notify(self, requestor, selection, target, property, time) VALUE self, requestor, selection, target, property, time; { - gdk_selection_send_notify(NUM2INT(requestor), get_gdkatom(selection), - get_gdkatom(target), get_gdkatom(property), - NUM2INT(time)); + if( property == Qnil){ + gdk_selection_send_notify(NUM2INT(requestor), get_gdkatom(selection), + get_gdkatom(target), GDK_NONE, NUM2INT(time)); + } else { + gdk_selection_send_notify(NUM2INT(requestor), get_gdkatom(selection), + get_gdkatom(target), get_gdkatom(property), NUM2INT(time)); + } return Qnil; } @@ -74,26 +78,5 @@ rb_define_module_function(mGdkSelection, "convert", gdkselection_convert, 4); rb_define_module_function(mGdkSelection, "property_get", gdkselection_property_get, 1); rb_define_module_function(mGdkSelection, "send_notify", gdkselection_send_notify, 5); - - /* GdkSelection */ - rb_define_const(mGdkSelection, "PRIMARY", make_gdkatom(GDK_SELECTION_PRIMARY)); - rb_define_const(mGdkSelection, "SECONDARY", make_gdkatom(GDK_SELECTION_SECONDARY)); - - /* GdkSelectionType */ - rb_define_const(mGdkSelection, "TYPE_ATOM", make_gdkatom(GDK_SELECTION_TYPE_ATOM)); - rb_define_const(mGdkSelection, "TYPE_BITMAP", make_gdkatom(GDK_SELECTION_TYPE_BITMAP)); - rb_define_const(mGdkSelection, "TYPE_COLORMAP", make_gdkatom(GDK_SELECTION_TYPE_COLORMAP)); - rb_define_const(mGdkSelection, "TYPE_DRAWABLE", make_gdkatom(GDK_SELECTION_TYPE_DRAWABLE)); - rb_define_const(mGdkSelection, "TYPE_INTEGER", make_gdkatom(GDK_SELECTION_TYPE_INTEGER)); - rb_define_const(mGdkSelection, "TYPE_PIXMAP", make_gdkatom(GDK_SELECTION_TYPE_PIXMAP)); - rb_define_const(mGdkSelection, "TYPE_WINDOW", make_gdkatom(GDK_SELECTION_TYPE_WINDOW)); - rb_define_const(mGdkSelection, "TYPE_STRING", make_gdkatom(GDK_SELECTION_TYPE_STRING)); - - /* GdkTarget */ - rb_define_const(mGdkSelection, "TARGET_BITMAP", make_gdkatom(GDK_TARGET_BITMAP)); - rb_define_const(mGdkSelection, "TARGET_COLORMAP", make_gdkatom(GDK_TARGET_COLORMAP)); - rb_define_const(mGdkSelection, "TARGET_DRAWABLE", make_gdkatom(GDK_TARGET_DRAWABLE)); - rb_define_const(mGdkSelection, "TARGET_PIXMAP", make_gdkatom(GDK_TARGET_PIXMAP)); - rb_define_const(mGdkSelection, "TARGET_STRING", make_gdkatom(GDK_TARGET_STRING)); } diff -r -u --exclude=CVS ruby-gnome/gtk/src/rbgdkwindow.c ruby-gnome.new/gtk/src/rbgdkwindow.c --- ruby-gnome/gtk/src/rbgdkwindow.c Tue Jun 11 00:17:19 2002 +++ ruby-gnome.new/gtk/src/rbgdkwindow.c Wed Jun 12 22:04:32 2002 @@ -4,7 +4,7 @@ rbgdkwindow.c - $Author: mutoh $ - $Date: 2002/06/10 15:17:19 $ + $Date: 2002/06/09 14:28:13 $ Copyright (C) 1998-2000 Yukihiro Matsumoto, Daisuke Kanda, @@ -300,52 +300,138 @@ gdkwin_prop_change(self, property, type, mode, src) VALUE self, property, type, mode, src; { - GdkWindow* w; - int f, l, x; - GdkAtom p, t; - void* d; - - w = get_gdkwindow(self); - - p = get_gdkatom(property); - t = get_gdkatom(type); - - if(t == GDK_SELECTION_TYPE_ATOM){ - x = (int)get_gdkatom(src); - d = &x; - f = 32; - l = 1; - } else if(t == GDK_SELECTION_TYPE_BITMAP){ - d = (void*)((GdkPixmapPrivate*)get_gdkbitmap(src))->xwindow; - f = 32; - l = 1; - } else if(t == GDK_SELECTION_TYPE_COLORMAP){ - d = (void*)((GdkColormapPrivate*)get_gdkcolormap(src))->xcolormap; - f = 32; - l = 1; - } else if(t == GDK_SELECTION_TYPE_INTEGER){ - x = NUM2INT(src); - d = (void*)&x; - f = 32; - l = 1; - } else if(t == GDK_SELECTION_TYPE_PIXMAP){ - d = (void*)((GdkPixmapPrivate*)get_gdkpixmap(src))->xwindow; - f = 32; - l = 1; - } else if(t == GDK_SELECTION_TYPE_WINDOW || t == GDK_SELECTION_TYPE_DRAWABLE){ - d = (void*)((GdkPixmapPrivate*)get_gdkwindow(src))->xwindow; - f = 32; - l = 1; - } else if(t == GDK_SELECTION_TYPE_STRING || - t == gdk_atom_intern("COMPOUND_TEXT", FALSE)){ - d = (void*)RSTRING(src)->ptr; - f = 8; - l = RSTRING(src)->len; + int fmt, len, i; + void* dat; + GdkAtom compound_text = gdk_atom_intern("COMPOUND_TEXT", FALSE); + GdkAtom otype, ntype; + + otype = ntype = get_gdkatom(type); + + if(ntype == GDK_SELECTION_TYPE_ATOM){ + len = RARRAY(src)->len; + + dat = (Atom*)ALLOC_N(Atom, len); + + for(i = 0; i < len; i++){ + ((Atom*)dat)[i] = get_gdkatom(rb_ary_entry(src, i)); + } + fmt = 32; + + } else if(ntype == GDK_SELECTION_TYPE_BITMAP){ + dat = (void*)&(((GdkPixmapPrivate*)get_gdkbitmap(src))->xwindow); + fmt = 32; + len = 1; + + } else if(ntype == GDK_SELECTION_TYPE_COLORMAP){ + dat = (void*)&(((GdkColormapPrivate*)get_gdkcolormap(src))->xcolormap); + fmt = 32; + len = 1; + + } else if(ntype == GDK_SELECTION_TYPE_INTEGER){ + i = NUM2INT(src); + dat = (void*)&i; + fmt = 32; + len = 1; + + } else if(ntype == GDK_SELECTION_TYPE_PIXMAP){ + dat = (void*)&(((GdkPixmapPrivate*)get_gdkpixmap(src))->xwindow); + fmt = 32; + len = 1; + + } else if(ntype == GDK_SELECTION_TYPE_WINDOW|| + ntype == GDK_SELECTION_TYPE_DRAWABLE){ + dat = (void*)&(((GdkPixmapPrivate*)get_gdkwindow(src))->xwindow); + fmt = 32; + len = 1; + + } else if(ntype == GDK_SELECTION_TYPE_STRING) { + dat = RSTRING(src)->ptr; + fmt = 8; + len = RSTRING(src)->len; + + } else if(ntype == gdk_atom_intern("COMPOUND_TEXT", FALSE)){ + gdk_string_to_compound_text(RSTRING(src)->ptr, + &ntype, &fmt, (guchar**)&dat, &len); + } else { rb_raise(rb_eArgError, "no supperted type."); } - gdk_property_change(w, p, t, f, NUM2INT(mode), d, l); + gdk_property_change(get_gdkwindow(self), + get_gdkatom(property), ntype, fmt, NUM2INT(mode), dat, len); + + if(otype == GDK_SELECTION_TYPE_ATOM) { + free(dat); + } else if(otype == gdk_atom_intern("COMPOUND_TEXT", FALSE)) { + gdk_free_compound_text(dat); + } + + return self; +} + +static VALUE +gdkwin_prop_get(self, property, type, offset, length, delete) + VALUE self, property, type, offset, length, delete; +{ + /* for argument processing */ + GdkWindow* w; + GdkAtom p, t; + gulong o, l; + gint d; + GdkAtom rtype; + gint rfmt, rlen; + void* rdat; + + /* for inner processing */ + int i; + VALUE ret; + + if(gdk_property_get( get_gdkwindow(self), get_gdkatom(property), + get_gdkatom(type), NUM2INT(offset), NUM2INT(length), + RTEST( delete), &rtype, &rfmt, &rlen, (guchar**)&rdat) == FALSE){ + return Qnil; + } + + switch( rfmt){ + case 8: + default: + ret = rb_str_new(rdat, rlen); + break; + + case 16: + ret = rb_ary_new(); + + for( i = 0; i < rlen; i++){ + rb_ary_push(ret, rb_Integer(((unsigned short*)rdat)[ i])); + } + break; + + case 32: + ret = rb_ary_new(); + + if( rtype != GDK_SELECTION_TYPE_ATOM){ + for(i = 0; i < rlen; i++){ + rb_ary_push(ret, INT2FIX(((unsigned long *)rdat)[ i])); + } + } else { + for( i = 0; i < rlen; i++){ + rb_ary_push(ret, make_gdkatom(((unsigned long *)rdat)[ i])); + } + } + break; + } + + return rb_ary_new3(3, make_gdkatom(rtype), ret, rb_Integer(rlen)); +} + +static VALUE +gdkwin_prop_delete(self, property) + VALUE self, property; +{ + + gdk_property_delete(get_gdkwindow(self), get_gdkatom(property)); + + return self; } VALUE gdkWindowAttr; ---- ここまで[patch] |
From: Masao M. <mu...@hi...> - 2002-06-11 18:04:59
|
むとうです。 On Tue, 11 Jun 2002 08:00:33 +0900 Hiroshi IGARASHI <ig...@ru...> wrote: > いがらしです。 > > At Mon, 10 Jun 2002 00:26:38 +0900, > Masao Mutoh <mu...@hi...> wrote: > > > > ruby 1.7の最新版を取得して試してみたらいがらしさんと > > 同様なMakefileを生成してしまいました(intall行が2行ある)。 > > > > ただ、インストールはそのまま問題なくできました。 > > (どちらのディレクトリでも) > > そうですか。こちらではやはり、どちらのディレクトリでも > gnome.rbがインストールされません。 > バージョンは以下の通りです > > ruby 1.7.2 (2002-06-10) [i686-linux] > GNU Make version 3.79.1, by Richard Stallman and Roland McGrath. うーむ、私とほとんど条件変わらないですね。 rubyのインストール先と、ライブラリのインストール先って どちらになりますか? それと、いがらしさんの環境で作成したMakefileを送っていただけ ませんか。 それでは。 -- .:% Masao Mutoh<mu...@hi...> |
From: Masao M. <mu...@hi...> - 2002-06-11 17:22:32
|
むとうです。 On Wed, 12 Jun 2002 01:20:59 +0900 Hiroshi Kuwagata <kg...@ko...> wrote: > >> 将来的にはそのようなドキュメントもあれば良いなと思います。 > >> が、それよりもまずはAPIリファレンスですよね....。それすら無い現状....。 > > で、(Ruby/GNOMEでの)現状をどうするかっていう話で > 下に関わっちゃうんですが、 > > >> > 『Gdk::Atomと整数』の件にも絡む問題ですが、名前空間の取り方 > >> > がオリジナルと特定の物だけ中途半端に変わるのは余計に混乱し > >> > そうなのですが…さっきも書いた通りそれでひっかかったクチでも > >> > あるので。 > >> > > >> > まだRuby/GNOME(1)では未整理ってことでGdkモジュールに全部押し > >> > 込んである方が良いような。 > >> > >> 逆にその変更を今からやるというのはちょっとどうかと。 > >> それにこのようなモノは本来ドキュメントを整備することで解決することであって > >> 実装で解決すべきモノではないと思います。 > > いえ、現状の場合、実装での統一性が重要だと思います。 > 特にRuby/GNOMEは、ドキュメントの整備もままなら無い状態で、 > ほぼ終了の段階に入る訳ですから。 えーと、それは私個人の問題で、誰かが積極的にやっていただけるのであれば、 終了しなくても良いと思うのですが。 #ドキュメントの整備もありがたいです。 > たとえば、今回の例で行くと > > tw.property_change( > ev.property, > Gdk::Selection::TYPE_INTEGER, > Gdk::PROP_MODE_REPLACE, data); > > と、微妙に異なる思想で定義された定数が同一の拡張ライブラ > リを使うソースコード中に並んでしまう訳です。 確かにこれは嫌ですね。 > コード的に(主観が過ぎるかも知れませんが)気持悪いし、既存 > コードの資料化(しばらくはこれしか望めませんし)と言う意味 > でも障害になり得ると考えますが? > > GdkSelectionTypeなのにGdk::Selection::...なのはオリジナルの > GTKとも*微妙に*異なる訳ですし。 > > #どうしてもというのなら、Gdk::SelectionはGdk::SelectionTypeにして > #Gdk::PROP_MODE_REPLACEも変更すべきと思うのは私の気のせいでしょうか? そこだけ局所的に見るならばそうですね。 本質的な部分での定数値に関する議論をruby-gnome2-devel-jaでしましょう。 --- あくまでRuby-GNOMEでどうするかというところですが、確かにくわがたさんの 意見は正しいと思います。 そこで、Gdk::Selection::TYPE_*をGdk::SELECTION_TYPE_*に修正しましょうか。 Gdk::Selection::TYPE_*は削除しましょう。2つあるとまた混乱の元になるでしょうし。 #各定数値はGdk::Atomにしてくださるようにお願いします;->。 > >> #つまり、GTK+関連のドキュメントを見なくてもコーディングできる・・・理想ですが。 > > 逆に私は、GTKバインドの一形態である以上、GTKの思想を引き > 継げる、その要素の一つである『GTKのドキュメントをある程度あ > てに出来る』ってのは重要ではないかと考えますが。 ある程度はあてにできると思いますよ。 Ruby/GDKを使うというのは相当レアなパターンじゃないかと。 大抵のGUIを使う分にはRuby/GTKレベルで済みますし。 > #私がツール作りにRUby/GTKを使ってるのはそれが大きいです > ##rot( kgt)だったっていう噂もありますが :-) gt k (^^;) ^ > > 『GTK+関連のドキュメントを見なくてもコーディングできる』を > 理想とするのなら、『GTKをベースにした別個のRubyでのToolKit』 > を目指すべき(特にGDKなんか見せないとか独自拡張などをバンバ > ンと言う意味においてもですが)だと思いますし。 > > #もしかしてRuby/GNOME2はそっち方向に走る? 「GTK+関連のドキュメントを見なくてもコーディングできる」 ように(ドキュメント等を揃えること)はしたいですが、 「独自拡張をばんばんやる」ということはあまり考えてません。 ただし、部分的にはGTK+と異なる部分が存在し、GTK+、ましてやXlib を使っている人にとって、混乱する部分が存在するようになるかもしれない ということは否定しませんし、人によっては「ばんばん独自拡張してる」 と感じるかもしれません。 > >> > #Gdk::Selection::TYPE_*を既に使ってるアプリがあるなら > >> > #仕方が無いと思いますが。 > >> > >> あえて言えば、sample/dnd.rbが使ってます。 > > サンプルコードならそんなに問題は大きく無いのでは? > まだ、それを使って運用されてるアプリと言う訳でもないですし。 すでにリリースされて2ヶ月立ちますので、それを使って運用されている アプリがあるかないかというのは判断できません。 とはいえ、新しい機能を実装するようなアプリを作る人は、最新のRuby/GTK を追いかけてるでしょうから、特に問題ないでしょう。 というわけで、こちらも直していただけると助かります。 -- .:% Masao Mutoh<mu...@hi...> |
From: Hiroshi K. <kg...@ko...> - 2002-06-11 16:21:05
|
On <200...@hi...> wrote by Masao Mutoh <mu...@hi...>: >> むとうです。 桑形です。 >> > 私の経験上微妙なとこですねぇ。 >> > GDKの使い方なんてGTKのソースを見るぐらいしか身近な >> > 資料が無いですし。 >> > >> > #GTKじゃモロ 32 なんて打ってある箇所がある(^^; >> > >> > どかかにRuby/GTKでのGDKアクセスのガイドなんかがあって >> > そこに『こういう経緯でRuby/GTKではこうしてる』ってのが >> > 明記してあれば良いとは思うのですが。 >> >> 将来的にはそのようなドキュメントもあれば良いなと思います。 >> が、それよりもまずはAPIリファレンスですよね....。それすら無い現状....。 で、(Ruby/GNOMEでの)現状をどうするかっていう話で 下に関わっちゃうんですが、 >> > 『Gdk::Atomと整数』の件にも絡む問題ですが、名前空間の取り方 >> > がオリジナルと特定の物だけ中途半端に変わるのは余計に混乱し >> > そうなのですが…さっきも書いた通りそれでひっかかったクチでも >> > あるので。 >> > >> > まだRuby/GNOME(1)では未整理ってことでGdkモジュールに全部押し >> > 込んである方が良いような。 >> >> 逆にその変更を今からやるというのはちょっとどうかと。 >> それにこのようなモノは本来ドキュメントを整備することで解決することであって >> 実装で解決すべきモノではないと思います。 いえ、現状の場合、実装での統一性が重要だと思います。 特にRuby/GNOMEは、ドキュメントの整備もままなら無い状態で、 ほぼ終了の段階に入る訳ですから。 たとえば、今回の例で行くと tw.property_change( ev.property, Gdk::Selection::TYPE_INTEGER, Gdk::PROP_MODE_REPLACE, data); と、微妙に異なる思想で定義された定数が同一の拡張ライブラ リを使うソースコード中に並んでしまう訳です。 #しかも同じ評価の行で :-) コード的に(主観が過ぎるかも知れませんが)気持悪いし、既存 コードの資料化(しばらくはこれしか望めませんし)と言う意味 でも障害になり得ると考えますが? GdkSelectionTypeなのにGdk::Selection::...なのはオリジナルの GTKとも*微妙に*異なる訳ですし。 #どうしてもというのなら、Gdk::SelectionはGdk::SelectionTypeにして #Gdk::PROP_MODE_REPLACEも変更すべきと思うのは私の気のせいでしょうか? >> #つまり、GTK+関連のドキュメントを見なくてもコーディングできる・・・理想ですが。 逆に私は、GTKバインドの一形態である以上、GTKの思想を引き 継げる、その要素の一つである『GTKのドキュメントをある程度あ てに出来る』ってのは重要ではないかと考えますが。 #私がツール作りにRUby/GTKを使ってるのはそれが大きいです ##rot( kgt)だったっていう噂もありますが :-) 『GTK+関連のドキュメントを見なくてもコーディングできる』を 理想とするのなら、『GTKをベースにした別個のRubyでのToolKit』 を目指すべき(特にGDKなんか見せないとか独自拡張などをバンバ ンと言う意味においてもですが)だと思いますし。 #もしかしてRuby/GNOME2はそっち方向に走る? >> > #Gdk::Selection::TYPE_*を既に使ってるアプリがあるなら >> > #仕方が無いと思いますが。 >> >> あえて言えば、sample/dnd.rbが使ってます。 サンプルコードならそんなに問題は大きく無いのでは? まだ、それを使って運用されてるアプリと言う訳でもないですし。 ζ ---- ^^y- くわがた@自宅 kg...@ko... − 年年歳歳花相似 歳歳年年人不同 − |