summaryrefslogtreecommitdiff
path: root/ext/tk/lib/tk/menu.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ext/tk/lib/tk/menu.rb')
-rw-r--r--ext/tk/lib/tk/menu.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/ext/tk/lib/tk/menu.rb b/ext/tk/lib/tk/menu.rb
index 1972193e51..8a33b482c7 100644
--- a/ext/tk/lib/tk/menu.rb
+++ b/ext/tk/lib/tk/menu.rb
@@ -3,6 +3,7 @@
#
require 'tk'
require 'tk/itemconfig'
+require 'tk/menuspec'
module TkMenuEntryConfig
include TkItemConfigMethod
@@ -33,6 +34,7 @@ end
class TkMenu<TkWindow
include TkMenuEntryConfig
+ extend TkMenuSpec
TkCommandNames = ['menu'.freeze].freeze
WidgetClassName = 'Menu'.freeze
@@ -47,6 +49,24 @@ class TkMenu<TkWindow
#end
#private :create_self
+ def self.new_menuspec(menu_spec, parent = nil, tearoff = false, keys = nil)
+ if parent.kind_of?(Hash)
+ keys = _symbolkey2str(parent)
+ parent = keys.delete('parent')
+ tearoff = keys.delete('tearoff')
+ elsif tearoff.kind_of?(Hash)
+ keys = _symbolkey2str(tearoff)
+ tearoff = keys.delete('tearoff')
+ elsif keys
+ keys = _symbolkey2str(keys)
+ else
+ keys = {}
+ end
+
+ widgetname = keys.delete('widgetname')
+ _create_menu(parent, menu_spec, widgetname, tearoff, keys)
+ end
+
def tagid(id)
#id.to_s
_get_eval_string(id)
@@ -389,6 +409,7 @@ class TkMenubutton<TkLabel
end
private :create_self
end
+TkMenuButton = TkMenubutton
class TkOptionMenubutton<TkMenubutton
@@ -509,3 +530,4 @@ class TkOptionMenubutton<TkMenubutton
@menu.current_entryconfiginfo(index, key)
end
end
+TkOptionMenuButton = TkOptionMenubutton