稲地です。

Ruby/Gnome の作業を開始しました。

今は、gnome_app_create_menus などで使う GnomeUIInfo 構造体の
処理に目処がついたところです。

そこで、その処理の中で Ruby/GTK のsignal_callback関数を
使いたいと思っています。できれば次のパッチのように static
をはずしてもらえないでしょうか。関数名の衝突が心配なようで
あれば適当な接頭辞をつけるようにしてもかまいません。

----ここから----
diff -uNr gtk19990803/src/rbgtk.c gtk/src/rbgtk.c
--- gtk19990803/src/rbgtk.c Tue Aug  3 00:29:21 1999
+++ gtk/src/rbgtk.c Tue Aug  3 19:21:40 1999
@@ -659,7 +659,7 @@
 /*
  * Object
  */
-static void
+void
 signal_callback(widget, data, nparams, params)
     GtkWidget *widget;
     VALUE data;
----ここまで----

このパッチを前提に gnome-hello-menus を動かせるところ
まで行っています。以下のようなコードです。来週ぐらいに
最初のバージョンを発表しようと思っています。

----ここから----
#!/usr/local/bin/ruby

require 'gtk'
require 'gnome'

class Hello1 < Gnome::App
    def initialize

        # Makes the main window and binds the delete event so you can close
        # the program from your WM

        super("hello", "Hello World Gnomified")
        realize
        signal_connect("delete_event") {
            Gtk::main_quit
        }

        # Now that we've the main window we'll make the menues

        file_menu = [ Gnome::uiinfo_item_stock("Exit",
                             nil, proc { Gtk::main_quit },
                             Gnome::STOCK_MENU_QUIT) ]
        help_menu = [ Gnome::uiinfo_item_stock("About Gnome Hello...",
                             nil, proc { about_cb },
                             Gnome::STOCK_MENU_ABOUT) ]
        main_menu = [ Gnome::uiinfo_subtree("File", file_menu),
                             Gnome::uiinfo_subtree("Help", help_menu) ]
        create_menus(main_menu)

        # We make a button, bind the 'clicked' signal to hello and setting
it
        # to be the content of the main window

        button = Gtk::Button.new("Hello GNOME")
        button.signal_connect("clicked") {
            puts("Hello GNOME")
            Gtk::main_quit
        }
        button.border_width = 60

        set_contents(button)

        # We now show the widgets, the order doesn't matter, but i suggests
        # showing the main window last so the whole window will popup at
        # once rather than seeing the window pop up, and then the button
form
        # inside of it. Although with such simple example, you'd never
notice.

        button.show
        show
    end

    private
    def about_cb
        about = Gnome::About.new(
                        "The Hello World Gnomified",
                        "0.01",
                        "(C) 1998 the Free Software Foundation",
                        [ "Minoru Inachi (inachi / earth.interq.or.jp)" ],
                        "GNOME is a civilized software system so we've a
\"hello world\" program")
        about.show
    end

end

app = Hello1.new
Gtk::main()

----ここまで----

---
稲地 稔 (e-mail: inachi / earth.interq.or.jp)