Like the glib and qt3 connectors, but for python's built in Tkinter GUI. --- src/clients/lib/python/xmmsclient/tk.py | 78 +++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/clients/lib/python/xmmsclient/tk.py
diff --git a/src/clients/lib/python/xmmsclient/tk.py b/src/clients/lib/python/xmmsclient/tk.py new file mode 100644 index 0000000..cd07b5b --- /dev/null +++ b/src/clients/lib/python/xmmsclient/tk.py @@ -0,0 +1,78 @@ +# Copyright (c) 2014 Graham Gower <graham.go...@gmail.com> +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +try: + # python 3.x + from tkinter import READABLE, WRITABLE +except ImportError: + # python 2.x + from Tkinter import READABLE, WRITABLE + +class TkConnector: + """XMMS2 event handling connector for Tk.""" + + def __init__(self, tk, xmms): + self.tk = tk + self.xmms = xmms + self.fd = xmms.get_fd() + + self.xmms.set_need_out_fun(self.need_out) + self.tk.createfilehandler(self.fd, READABLE, self.handler) + + + def need_out(self, unused): + if self.xmms.want_ioout(): + self.tk.createfilehandler(self.fd, READABLE|WRITABLE, self.handler) + else: + self.tk.createfilehandler(self.fd, READABLE, self.handler) + + def handler(self, fd, rd_wr): + if rd_wr&READABLE: + return self.xmms.ioin() + + if rd_wr&WRITABLE: + self.xmms.ioout() + + def __enter__(self): + return self + + def __exit__(self, type, value, traceback): + self.tk.deletefilehandler(self.fd) + + +if __name__ == "__main__": + import os + import sys + import xmmsclient + try: + import tkinter + except ImportError: + import Tkinter as tkinter + + xmms = xmmsclient.XMMS("TkConnector") + try: + xmms.connect(os.getenv("XMMS_PATH")) + except IOerror as err: + print("Connection failed:", err) + sys.exit(1) + + root = tkinter.Tk() + + def print_mid(res): + print("mid =", res.value()) + root.quit() + + TkConnector(root, xmms) + xmms.playback_current_id(print_mid) + root.mainloop() -- 2.4.6 -- _______________________________________________ Xmms2-devel mailing list Xmms2-devel@lists.xmms2.org http://lists.xmms2.org/cgi-bin/mailman/listinfo/xmms2-devel