new after options; text.search; new image methods
diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py
index 3b52ae1..c9cb27b 100644
--- a/Lib/lib-tk/Tkinter.py
+++ b/Lib/lib-tk/Tkinter.py
@@ -177,6 +177,7 @@
 		return self._nametowidget(name)
 	def after(self, ms, func=None, *args):
 		if not func:
+			# I'd rather use time.sleep(ms*0.001)
 			self.tk.call('after', ms)
 		else:
 			# XXX Disgusting hack to clean up after calling func
@@ -188,7 +189,11 @@
 					tk.deletecommand(tmp[0])
 			name = self._register(callit)
 			tmp.append(name)
-			self.tk.call('after', ms, name)
+			return self.tk.call('after', ms, name)
+	def after_idle(self, func, *args):
+		return apply(self.after, ('idle', func) + args)
+	def after_cancel(self, id):
+		self.tk.call('after', 'cancel', id)
 	def bell(self, displayof=None):
 		if displayof:
 			self.tk.call('bell', '-displayof', displayof)
@@ -212,7 +217,7 @@
 	def lower(self, belowThis=None):
 		self.tk.call('lower', self._w, belowThis)
 	def option_add(self, pattern, value, priority = None):
-		self.tk.call('option', 'add', pattern, priority)
+		self.tk.call('option', 'add', pattern, value, priority)
 	def option_clear(self):
 		self.tk.call('option', 'clear')
 	def option_get(self, name, className):
@@ -1190,6 +1195,21 @@
 		self.tk.call(self._w, 'scan', 'mark', y)
 	def scan_dragto(self, y):
 		self.tk.call(self._w, 'scan', 'dragto', y)
+	def search(self, pattern, index, stopindex=None,
+		   forwards=None, backwards=None, exact=None,
+		   regexp=None, nocase=None, count=None):
+	    args = [self._w, 'search']
+	    if forwards: args.append('-forwards')
+	    if backwards: args.append('-backwards')
+	    if exact: args.append('-exact')
+	    if regexp: args.append('-regexp')
+	    if nocase: args.append('-nocase')
+	    if count: args.append('-count'); args.append(count)
+	    if pattern[0] == '-': args.append('--')
+	    args.append(pattern)
+	    args.append(index)
+	    if stopindex: args.append(stopindex)
+	    return apply(self.tk.call, tuple(args))
 	def tag_add(self, tagName, index1, index2=None):
 		self.tk.call(
 			self._w, 'tag', 'add', tagName, index1, index2)
@@ -1287,6 +1307,21 @@
 class PhotoImage(Image):
 	def __init__(self, name=None, cnf={}, **kw):
 		apply(Image.__init__, (self, 'photo', name, cnf), kw)
+	def blank(self):
+		self.tk.call(self.name, 'blank')
+	def cget(self):
+		return self.tk.call(self.name, 'cget')
+	# XXX config
+	# XXX copy
+	def get(self, x, y):
+		return self.tk.call(self.name, 'get', x, y)
+	def put(self, data, to=None):
+		args = (self.name, 'put', data)
+		if to:
+			args = args + to
+		apply(self.tk.call, args)
+	# XXX read
+	# XXX write
 
 class BitmapImage(Image):
 	def __init__(self, name=None, cnf={}, **kw):
diff --git a/Lib/tkinter/Tkinter.py b/Lib/tkinter/Tkinter.py
index 3b52ae1..c9cb27b 100755
--- a/Lib/tkinter/Tkinter.py
+++ b/Lib/tkinter/Tkinter.py
@@ -177,6 +177,7 @@
 		return self._nametowidget(name)
 	def after(self, ms, func=None, *args):
 		if not func:
+			# I'd rather use time.sleep(ms*0.001)
 			self.tk.call('after', ms)
 		else:
 			# XXX Disgusting hack to clean up after calling func
@@ -188,7 +189,11 @@
 					tk.deletecommand(tmp[0])
 			name = self._register(callit)
 			tmp.append(name)
-			self.tk.call('after', ms, name)
+			return self.tk.call('after', ms, name)
+	def after_idle(self, func, *args):
+		return apply(self.after, ('idle', func) + args)
+	def after_cancel(self, id):
+		self.tk.call('after', 'cancel', id)
 	def bell(self, displayof=None):
 		if displayof:
 			self.tk.call('bell', '-displayof', displayof)
@@ -212,7 +217,7 @@
 	def lower(self, belowThis=None):
 		self.tk.call('lower', self._w, belowThis)
 	def option_add(self, pattern, value, priority = None):
-		self.tk.call('option', 'add', pattern, priority)
+		self.tk.call('option', 'add', pattern, value, priority)
 	def option_clear(self):
 		self.tk.call('option', 'clear')
 	def option_get(self, name, className):
@@ -1190,6 +1195,21 @@
 		self.tk.call(self._w, 'scan', 'mark', y)
 	def scan_dragto(self, y):
 		self.tk.call(self._w, 'scan', 'dragto', y)
+	def search(self, pattern, index, stopindex=None,
+		   forwards=None, backwards=None, exact=None,
+		   regexp=None, nocase=None, count=None):
+	    args = [self._w, 'search']
+	    if forwards: args.append('-forwards')
+	    if backwards: args.append('-backwards')
+	    if exact: args.append('-exact')
+	    if regexp: args.append('-regexp')
+	    if nocase: args.append('-nocase')
+	    if count: args.append('-count'); args.append(count)
+	    if pattern[0] == '-': args.append('--')
+	    args.append(pattern)
+	    args.append(index)
+	    if stopindex: args.append(stopindex)
+	    return apply(self.tk.call, tuple(args))
 	def tag_add(self, tagName, index1, index2=None):
 		self.tk.call(
 			self._w, 'tag', 'add', tagName, index1, index2)
@@ -1287,6 +1307,21 @@
 class PhotoImage(Image):
 	def __init__(self, name=None, cnf={}, **kw):
 		apply(Image.__init__, (self, 'photo', name, cnf), kw)
+	def blank(self):
+		self.tk.call(self.name, 'blank')
+	def cget(self):
+		return self.tk.call(self.name, 'cget')
+	# XXX config
+	# XXX copy
+	def get(self, x, y):
+		return self.tk.call(self.name, 'get', x, y)
+	def put(self, data, to=None):
+		args = (self.name, 'put', data)
+		if to:
+			args = args + to
+		apply(self.tk.call, args)
+	# XXX read
+	# XXX write
 
 class BitmapImage(Image):
 	def __init__(self, name=None, cnf={}, **kw):