summaryrefslogtreecommitdiff
path: root/ext/tk
diff options
context:
space:
mode:
authornagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-06-24 03:29:24 +0000
committernagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-06-24 03:29:24 +0000
commit2e3404c1bb0a06aa7abb573eabdec98d1548751d (patch)
treebf0773a3820e1e9648ac27dac751d92e586108bf /ext/tk
parentfc114887e69a26f27a09faeb91ae3b18b620619e (diff)
* ext/tk/lib/tk.rb: fix typo on Tk.grid_propagate.
* ext/tk/lib/tk.rb: Tk.event_generate and TkWindow#event_generate accept TkEvent::Event object as context argument. * ext/tk/lib/tk/event.rb: add TkEvent::Event#valid_fields and valid_for_generate to get field parameters of event_generate. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8656 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk')
-rw-r--r--ext/tk/lib/tk.rb14
-rw-r--r--ext/tk/lib/tk/event.rb54
2 files changed, 51 insertions, 17 deletions
diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb
index c076b741a5..9daee2de54 100644
--- a/ext/tk/lib/tk.rb
+++ b/ext/tk/lib/tk.rb
@@ -1516,7 +1516,9 @@ module TkCore
def event_generate(win, context, keys=nil)
#win = win.path if win.kind_of?(TkObject)
- if keys
+ if context.kind_of?(TkEvent::Event)
+ context.generate(win, ((keys)? keys: {}))
+ elsif keys
tk_call_without_enc('event', 'generate', win,
"<#{tk_event_sequence(context)}>",
*hash_kv(keys, true))
@@ -3500,7 +3502,9 @@ class TkObject<TkKernel
=end
def event_generate(context, keys=nil)
- if keys
+ if context.kind_of?(TkEvent::Event)
+ context.generate(self, ((keys)? keys: {}))
+ elsif keys
#tk_call('event', 'generate', path,
# "<#{tk_event_sequence(context)}>", *hash_kv(keys))
tk_call_without_enc('event', 'generate', path,
@@ -3832,9 +3836,9 @@ class TkWindow<TkObject
# self
#end
if mode == None
- TkGrid.propagete(self)
+ TkGrid.propagate(self)
else
- TkGrid.propagete(self, mode)
+ TkGrid.propagate(self, mode)
self
end
end
@@ -4149,7 +4153,7 @@ end
#Tk.freeze
module Tk
- RELEASE_DATE = '2005-06-23'.freeze
+ RELEASE_DATE = '2005-06-24'.freeze
autoload :AUTO_PATH, 'tk/variable'
autoload :TCL_PACKAGE_PATH, 'tk/variable'
diff --git a/ext/tk/lib/tk/event.rb b/ext/tk/lib/tk/event.rb
index bb3c146333..b538bfd63d 100644
--- a/ext/tk/lib/tk/event.rb
+++ b/ext/tk/lib/tk/event.rb
@@ -212,29 +212,59 @@ module TkEvent
#-------------------------------------------
- def generate(win, modkeys={})
- klass = self.class
- type_id = self.type
-
- type_name = klass.type_name(type_id)
- group_flag = klass.group_flag(type_id)
-
- opts = {}
+ def valid_fields(group_flag=nil)
+ group_flag = self.class.group_flag(self.type) unless group_flag
+ fields = {}
FIELD_FLAG.each{|key, flag|
next if (flag & group_flag) == 0
-
begin
val = self.__send__(key)
- val = FIELD_OPERATION[key].call(val) if FIELD_OPERATION[key]
rescue
next
end
-
next if !val || val == '??'
- opts[key] = val
+ fields[key] = val
+ }
+
+ fields
+ end
+
+ def valid_for_generate(group_flag=nil)
+ fields = valid_fields(group_flag)
+
+ FIELD_OPERATION.each{|key, cmd|
+ next unless fields.has_key?(key)
+ val = FIELD_OPERATION[key].call(fields[key])
+ if val
+ fields[key] = val
+ else
+ fields.delete(key)
+ end
}
+ fields
+ end
+
+ def generate(win, modkeys={})
+ klass = self.class
+
+ if modkeys.has_key?(:type) || modkeys.has_key?('type')
+ modkeys = TkComm._symbolkey2str(modkeys)
+ type_id = modkeys.delete('type')
+ else
+ type_id = self.type
+ end
+
+ type_name = klass.type_name(type_id)
+ unless type_name
+ fail RuntimeError, "type_id #{type_id} is invalid"
+ end
+
+ group_flag = klass.group_flag(type_id)
+
+ opts = valid_for_generate(group_flag)
+
modkeys.each{|key, val|
if val
opts[key.to_s] = val