1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Mon Jan 19 14:06:13 JST 1998

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@23 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 1998-01-19 05:08:25 +00:00
parent d556e58fc0
commit 5c47ddf9e7
14 changed files with 316 additions and 160 deletions

View file

@ -10,3 +10,4 @@
#socket
#tkutil
#tcltklib
gtk

View file

@ -196,19 +196,20 @@ static void
gobj_free(obj)
GtkObject *obj;
{
VALUE self = get_value_from_gobject(obj);
if (GTK_OBJECT_NEED_DESTROY(obj)) {
gtk_object_destroy(obj);
}
rb_ivar_set(self, id_relatives, Qnil);
/* just a type mark */
}
static void
delete_gobject(obj)
GtkObject *obj;
delete_gobject(gtkobj, obj)
GtkObject *gtkobj;
VALUE obj;
{
ary_delete(gtk_object_list, get_value_from_gobject(obj));
struct RData *data;
data = RDATA(rb_ivar_get(obj, id_gtkdata));
data->dfree = 0;
data->data = 0;
ary_delete(gtk_object_list, obj);
}
static VALUE
@ -223,7 +224,8 @@ make_gobject(klass, gtkobj)
gtk_object_set_user_data(gtkobj, (gpointer)obj);
rb_ivar_set(obj, id_gtkdata, data);
gtk_signal_connect(gtkobj, "destroy", (GtkSignalFunc)delete_gobject, 0);
gtk_signal_connect(gtkobj, "destroy",
(GtkSignalFunc)delete_gobject, (gpointer)obj);
ary_push(gtk_object_list, obj);
return obj;
}

View file

@ -21,10 +21,11 @@ button = []
end
0.upto(8) do |i|
button[i].signal_connect("clicked") do |w|
if button[i+1].visible?
button[i+1].hide
j = (i+1)%9
if button[j].visible?
button[j].hide
else
button[i+1].show
button[j].show
end
end
button[i].show

96
ext/gtk/testd.rb Normal file
View file

@ -0,0 +1,96 @@
require 'gtk'
def create_menu(depth)
return nil if depth < 1
menu = Gtk::Menu::new()
group = nil
submenu = nil
for i in 0..4
buf = sprintf("item %2d - %d", depth, i+1)
# menuitem = Gtk::MenuItem::new(buf)
menuitem = Gtk::RadioMenuItem.new(group, buf)
group = menuitem.group
if depth % 2
menuitem.set_show_toggle TRUE
end
menu.append menuitem
menuitem.show
if depth > 0
unless submenu
submenu = create_menu(depth - 1)
end
menuitem.set_submenu submenu
end
end
return menu
end
window = Gtk::Window::new(Gtk::WINDOW_TOPLEVEL)
window.signal_connect("destroy") do
exit
end
window.signal_connect("delete_event") do
exit
end
window.set_title("menus")
window.border_width(0)
box1 = Gtk::VBox::new(FALSE, 0)
window.add box1
box1.show
menubar = Gtk::MenuBar::new()
box1.pack_start menubar, FALSE, TRUE, 0
menubar.show
menu = create_menu(2)
menuitem = Gtk::MenuItem::new("test\nline2")
menuitem.set_submenu menu
menubar.append menuitem
menuitem.show
menuitem = Gtk::MenuItem::new("foo")
menuitem.set_submenu menu
menubar.append menuitem
menuitem.show
menuitem = Gtk::MenuItem::new("bar")
menuitem.set_submenu menu
menubar.append menuitem
menuitem.show
box2 = Gtk::VBox::new(FALSE, 10)
box2.border_width 10
box1.pack_start box2, TRUE, TRUE, 0
box2.show
optionmenu = Gtk::OptionMenu::new()
optionmenu.set_menu create_menu(1)
optionmenu.set_history 4
box2.pack_start optionmenu, TRUE, TRUE, 0
optionmenu.show
separator = Gtk::HSeparator::new()
box1.pack_start(separator, FALSE, TRUE, 0)
separator.show
box2 = Gtk::HBox::new(FALSE, 10)
box2.border_width(10)
box1.pack_start(box2, FALSE, TRUE, 0)
box2.show
button = Gtk::Button::new("close")
button.signal_connect("clicked") do
window.destroy
exit
end
box2.pack_start(button, TRUE, TRUE, 0)
button.set_flags(Gtk::CAN_DEFAULT);
button.grab_default
button.show
window.show
Gtk::main()