From b736f6397f6b6615f48cb27f814ba2f1118b8a83 Mon Sep 17 00:00:00 2001 From: Jorgen Stenarson Date: Thu, 26 Jun 2008 19:24:56 +0200 Subject: [PATCH] added mockup for gui-use of pyreadline --- pyreadline/clipboard/no_clipboard.py | 18 +++++++ pyreadline/examples/tk_gui.py | 77 ++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 pyreadline/clipboard/no_clipboard.py create mode 100644 pyreadline/examples/tk_gui.py diff --git a/pyreadline/clipboard/no_clipboard.py b/pyreadline/clipboard/no_clipboard.py new file mode 100644 index 0000000..b1c4664 --- /dev/null +++ b/pyreadline/clipboard/no_clipboard.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +#***************************************************************************** +# Copyright (C) 2006 Jorgen Stenarson. +# +# Distributed under the terms of the BSD License. The full license is in +# the file COPYING, distributed as part of this software. +#***************************************************************************** + + +mybuffer="" + +def GetClipboardText(): + return mybuffer + +def SetClipboardText(text): + global mybuffer + mybuffer=text + diff --git a/pyreadline/examples/tk_gui.py b/pyreadline/examples/tk_gui.py new file mode 100644 index 0000000..f539814 --- /dev/null +++ b/pyreadline/examples/tk_gui.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- +#***************************************************************************** +# Copyright (C) 2006 Jorgen Stenarson. +# +# Distributed under the terms of the BSD License. The full license is in +# the file COPYING, distributed as part of this software. +#***************************************************************************** + +""" Mockup of gui-use of pyreadline + + +""" + +import Tkinter + +class KeyEvent(object): + def __init__(self, char, shift, control, meta, keyname): + self.char=char + self.shift=shift + self.control=control + self.meta=meta + self.keyname=keyname + + +class DumbReadLine(object): + def __init__(self): + self._text=[] + + + def ProcKeyEvent(self, event): + char=event.char + if event.keyname=="backspace": + self._text=self._text[:-1] + elif event.keyname=="return": + return True + elif len(event.char)==1: + self._text.append(event.char) + return False + + def get_line(self): + return "".join(self._text) + + def new_line(self): + self._text=[] + +class App: + def __init__(self, master): + self.lines=["Hello"] + self.RL=DumbReadLine() + self.textvar = Tkinter.StringVar() + self._update_line() + self.text=Tkinter.Label(master, textvariable=self.textvar,width=50,height=40,justify=Tkinter.LEFT,anchor=Tkinter.NW) + self.text.pack(side=Tkinter.LEFT) + master.bind("",self.handler) + + def handler(self, event): + if len(event.keysym)>1: + keysym=event.keysym.lower() + else: + keysym="" + keyevent=KeyEvent(event.char, False, False, False, keysym) + result=self.RL.ProcKeyEvent(keyevent) + if result: + self.lines.append(self.RL.get_line()) + self.RL.new_line() + self._update_line() + + + def _update_line(self): + self.textvar.set("\n".join(self.lines+[self.RL.get_line()])) + + + +root=Tkinter.Tk() + +display=App(root) +root.mainloop() \ No newline at end of file