aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/Twisted/py2/twisted/internet/tksupport.py
diff options
context:
space:
mode:
authorshmel1k <shmel1k@ydb.tech>2023-11-26 18:16:14 +0300
committershmel1k <shmel1k@ydb.tech>2023-11-26 18:43:30 +0300
commitb8cf9e88f4c5c64d9406af533d8948deb050d695 (patch)
tree218eb61fb3c3b96ec08b4d8cdfef383104a87d63 /contrib/python/Twisted/py2/twisted/internet/tksupport.py
parent523f645a83a0ec97a0332dbc3863bb354c92a328 (diff)
downloadydb-b8cf9e88f4c5c64d9406af533d8948deb050d695.tar.gz
add kikimr_configure
Diffstat (limited to 'contrib/python/Twisted/py2/twisted/internet/tksupport.py')
-rw-r--r--contrib/python/Twisted/py2/twisted/internet/tksupport.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/contrib/python/Twisted/py2/twisted/internet/tksupport.py b/contrib/python/Twisted/py2/twisted/internet/tksupport.py
new file mode 100644
index 0000000000..846cff0f74
--- /dev/null
+++ b/contrib/python/Twisted/py2/twisted/internet/tksupport.py
@@ -0,0 +1,78 @@
+# Copyright (c) Twisted Matrix Laboratories.
+# See LICENSE for details.
+
+
+"""
+This module integrates Tkinter with twisted.internet's mainloop.
+
+Maintainer: Itamar Shtull-Trauring
+
+To use, do::
+
+ | tksupport.install(rootWidget)
+
+and then run your reactor as usual - do *not* call Tk's mainloop(),
+use Twisted's regular mechanism for running the event loop.
+
+Likewise, to stop your program you will need to stop Twisted's
+event loop. For example, if you want closing your root widget to
+stop Twisted::
+
+ | root.protocol('WM_DELETE_WINDOW', reactor.stop)
+
+When using Aqua Tcl/Tk on macOS the standard Quit menu item in
+your application might become unresponsive without the additional
+fix::
+
+ | root.createcommand("::tk::mac::Quit", reactor.stop)
+
+@see: U{Tcl/TkAqua FAQ for more info<http://wiki.tcl.tk/12987>}
+"""
+
+from twisted.internet import task
+from twisted.python.compat import _PY3
+
+if _PY3:
+ import tkinter.simpledialog as tkSimpleDialog
+ import tkinter.messagebox as tkMessageBox
+else:
+ import tkSimpleDialog, tkMessageBox
+
+
+
+_task = None
+
+def install(widget, ms=10, reactor=None):
+ """Install a Tkinter.Tk() object into the reactor."""
+ installTkFunctions()
+ global _task
+ _task = task.LoopingCall(widget.update)
+ _task.start(ms / 1000.0, False)
+
+def uninstall():
+ """Remove the root Tk widget from the reactor.
+
+ Call this before destroy()ing the root widget.
+ """
+ global _task
+ _task.stop()
+ _task = None
+
+
+def installTkFunctions():
+ import twisted.python.util
+ twisted.python.util.getPassword = getPassword
+
+
+def getPassword(prompt = '', confirm = 0):
+ while 1:
+ try1 = tkSimpleDialog.askstring('Password Dialog', prompt, show='*')
+ if not confirm:
+ return try1
+ try2 = tkSimpleDialog.askstring('Password Dialog', 'Confirm Password', show='*')
+ if try1 == try2:
+ return try1
+ else:
+ tkMessageBox.showerror('Password Mismatch', 'Passwords did not match, starting over')
+
+__all__ = ["install", "uninstall"]