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:
parent
d556e58fc0
commit
5c47ddf9e7
14 changed files with 316 additions and 160 deletions
|
@ -10,3 +10,4 @@
|
|||
#socket
|
||||
#tkutil
|
||||
#tcltklib
|
||||
gtk
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
96
ext/gtk/testd.rb
Normal 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()
|
Loading…
Add table
Add a link
Reference in a new issue