Hi list,
i'm working on gui using ruby/tk.
Everything went fine (exept the poor documentation), but now i have a
problem with submenus. A small example-code to demonstrate the issue:
menu = TkMenu.new
menu.add_command('label' => 'Foo', 'command' => lambda { p "foo" })
sub = TkMenu.new
sub.add_command('label' => 'Bar', 'command' => lambda { p "bar" })
menu.add_cascade('label' => 'submenu', 'menu' => sub)
canvas = TkCanvas.new
canvas.bind('1') {|e| menu.popup e.x_root, e.y_root}
canvas.pack
Tk.mainloop
The code works nearly as expected, menu appears an has correct content.
If i click on "Foo", text "foo" is written to the console, but if i
click on
"Bar" nothing happens 
Any idea what's going wrong?
Ruby: ruby 1.8.5 (2006-08-25) [i486-linux]
Linux: Linux version 2.6.12 (root@louipaz) (gcc version 3.3.6 (Debian
1:3.3.6-13))
thanks a lot,
Matthias
matthias@kl-mailer.de wrote:
Hi list,
i'm working on gui using ruby/tk.
Any reason you aren't using Qt? I don't want to sound like a broken record
here, but Qt's documentation is much better than for Tk, the apps look
better, and so forth.
Everything went fine (exept the poor documentation), but now i have a
problem with submenus. A small example-code to demonstrate the issue:
menu = TkMenu.new
menu.add_command('label' => 'Foo', 'command' => lambda { p "foo" })
sub = TkMenu.new
sub.add_command('label' => 'Bar', 'command' => lambda { p "bar" })
menu.add_cascade('label' => 'submenu', 'menu' => sub)
canvas = TkCanvas.new
canvas.bind('1') {|e| menu.popup e.x_root, e.y_root}
canvas.pack
Tk.mainloop
How about a complete example, with headers, so we can test the code?
···
--
Paul Lutus
http://www.arachnoid.com
matthias@kl-mailer.de skrev:
Hi list,
i'm working on gui using ruby/tk.
Everything went fine (exept the poor documentation), but now i have a
problem with submenus. A small example-code to demonstrate the issue:
menu = TkMenu.new
menu.add_command('label' => 'Foo', 'command' => lambda { p "foo" })
sub = TkMenu.new
sub.add_command('label' => 'Bar', 'command' => lambda { p "bar" })
menu.add_cascade('label' => 'submenu', 'menu' => sub)
canvas = TkCanvas.new
canvas.bind('1') {|e| menu.popup e.x_root, e.y_root}
canvas.pack
Tk.mainloop
The code works nearly as expected, menu appears an has correct content.
If i click on "Foo", text "foo" is written to the console, but if i
click on
"Bar" nothing happens 
Any idea what's going wrong?
Ruby: ruby 1.8.5 (2006-08-25) [i486-linux]
Linux: Linux version 2.6.12 (root@louipaz) (gcc version 3.3.6 (Debian
1:3.3.6-13))
thanks a lot,
Matthias
Tested your code (just added require 'tk' as first line) with
Ruby 1.8.5 on WinXP and Active State Tcl 8.4.13.
No problem, works fine, both "foo" and "bar" printed as
they should. Maybe your Tcl needs updating?
No problem with your code on my box -- Mac OS X 10.4, ruby 1.8.2.
Regards, Morton
···
On Sep 26, 2006, at 3:12 AM, matthias@kl-mailer.de wrote:
Hi list,
i'm working on gui using ruby/tk.
Everything went fine (exept the poor documentation), but now i have a
problem with submenus. A small example-code to demonstrate the issue:
menu = TkMenu.new
menu.add_command('label' => 'Foo', 'command' => lambda { p "foo" })
sub = TkMenu.new
sub.add_command('label' => 'Bar', 'command' => lambda { p "bar" })
menu.add_cascade('label' => 'submenu', 'menu' => sub)
canvas = TkCanvas.new
canvas.bind('1') {|e| menu.popup e.x_root, e.y_root}
canvas.pack
Tk.mainloop
The code works nearly as expected, menu appears an has correct content.
If i click on "Foo", text "foo" is written to the console, but if i
click on
"Bar" nothing happens 
Any idea what's going wrong?
Ruby: ruby 1.8.5 (2006-08-25) [i486-linux]
Linux: Linux version 2.6.12 (root@louipaz) (gcc version 3.3.6 (Debian
1:3.3.6-13))
Message-ID: <20060926071227.1E4F5E30E005@vps1773.vps1773.my-v-server.de>
The code works nearly as expected, menu appears an has correct content.
If i click on "Foo", text "foo" is written to the console, but if i
click on
"Bar" nothing happens 
Any idea what's going wrong?
Ruby: ruby 1.8.5 (2006-08-25) [i486-linux]
Linux: Linux version 2.6.12 (root@louipaz) (gcc version 3.3.6 (Debian
1:3.3.6-13))
That is NOT a bug of Ruby/Tk. Tcl/Tk will give you a same result.
Probably, your trouble depends on the relationship between the
menu and the cascade menu.
Please try to make the cascade menu as a daughter of the menu
(e.g. "sub = TkMenu.new(menu)").
^^^^
···
From: matthias@kl-mailer.de
Subject: Problem with TkMenu::add_cascade
Date: Tue, 26 Sep 2006 16:12:32 +0900
--
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
That is NOT a bug of Ruby/Tk. Tcl/Tk will give you a same result. Probably, your trouble depends on the relationship between the menu and the cascade menu.
Please try to make the cascade menu as a daughter of the menu
(e.g. "sub = TkMenu.new(menu)"). ^^^^
That's it, thanks a lot!
One thing i noticed while testing:
it also depends on the windowmanager. On KDE (for example) the "bad" code works fine, on fluxbox it doesn't...
best regards,
Matthias