Revision: 7217 Author: alexsh Date: 2009-09-06 15:52:15 +0000 (Sun, 06 Sep 2009)
Log Message: ----------- update current wxpython_interface.py fix and sync to pywikibot module
Modified Paths: -------------- branches/rewrite/pywikibot/userinterfaces/wxpython_interface.py trunk/pywikipedia/userinterfaces/wxpython_interface.py
Modified: branches/rewrite/pywikibot/userinterfaces/wxpython_interface.py =================================================================== --- branches/rewrite/pywikibot/userinterfaces/wxpython_interface.py 2009-09-06 15:45:27 UTC (rev 7216) +++ branches/rewrite/pywikibot/userinterfaces/wxpython_interface.py 2009-09-06 15:52:15 UTC (rev 7217) @@ -1,30 +1,18 @@ -# -*- coding: utf-8 -*- -# -# (C) Pywikipedia bot team, 2005-2008 -# -# Distributed under the terms of the MIT license. -# + __version__ = '$Id$'
import sys; sys.path.append('..')
-import config, re, sys -from wxPython.wx import * +import re +import terminal_interface +import wx
- +app = wx.App()
-class UI: +class UI(terminal_interface.UI): def __init__(self): pass - - def output(self, text, ): - """ - If a character can't be displayed, it will be replaced with a - question mark. - """ - # comma at the end means "don't print newline" - print text.encode(config.console_encoding, 'replace'), - + def input(self, question, password = False): """ Works like raw_input(), but returns a unicode string instead of ASCII. @@ -33,27 +21,44 @@ question. """ # TODO: hide input if password = True - answer = dialog = wxTextEntryDialog ( None, 'question', 'Title Here', '' ) + + self.output(question) + if password: + answer = wx.PasswordEntryDialog( None, question, '','') + else: + answer = wx.TextEntryDialog( None, question, '', '' ) + answer.ShowModal() + self.output(answer+'\n') + #tkSimpleDialog.askstring('title', question) + return answer.GetValue() or ''
-#tkSimpleDialog.askstring('title', question) - return answer or '' + def inputChoice(self, question, options, hotkeys, default = None): + for i in range(len(options)): + option = options[i] + hotkey = hotkeys[i] + m = re.search('[%s%s]' % (hotkey.lower(), hotkey.upper()), option) + if m: + pos = m.start() + options[i] = '%s[%s]%s' % (option[:pos], option[pos], option[pos+1:]) + else: + options[i] = '%s [%s]' % (option, hotkey) + + while True: + prompt = '%s\n(%s)' % (question, ', '.join(options)) + self.output('%s (%s)' % (question, ', '.join(options))) + answer = wx.TextEntryDialog(None, prompt, question, '') + answer.ShowModal() + answer = answer.GetValue() + self.output(answer+'\n') + + if answer.lower() in hotkeys or answer.upper() in hotkeys: + return answer + elif default and answer=='':# empty string entered + return default
- def inputChoice(self, question, options, hotkeys): - goodAnswer = False - while not goodAnswer: - for i in range(len(options)): - option = options[i] - hotkey = hotkeys[i] - m = re.search('[%s%s]' % (hotkey.lower(), hotkey.upper()), option) - if m: - pos = m.start() - options[i] = '%s[%s]%s' % (option[:pos], option[pos], option[pos+1:]) - else: - options[i] = '%s [%s]' % (option, hotkey) +if __name__ == '__main__': + ui = UI() + print ui.input('Test?')
- prompt = '%s (%s)' % (question, ', '.join(options)) - answer = self.input(prompt) - if answer.lower() in hotkeys or answer.upper() in hotkeys: - return answer -ui = UI() -print ui.input('Test?') +app.MainLoop() +
Modified: trunk/pywikipedia/userinterfaces/wxpython_interface.py =================================================================== --- trunk/pywikipedia/userinterfaces/wxpython_interface.py 2009-09-06 15:45:27 UTC (rev 7216) +++ trunk/pywikipedia/userinterfaces/wxpython_interface.py 2009-09-06 15:52:15 UTC (rev 7217) @@ -3,25 +3,16 @@
import sys; sys.path.append('..')
-import config, re, sys, terminal_interface +import re +import terminal_interface import wx
app = wx.App()
-class UI: +class UI(terminal_interface.UI): def __init__(self): pass
- def output(self, text, toStdout = False): - """ - If a character can't be displayed, it will be replaced with a - question mark. - """ - # comma at the end means "don't print newline" - #print text.encode(config.console_encoding, 'replace'), - terminal_interface.UI().output(text, toStdout) - - def input(self, question, password = False): """ Works like raw_input(), but returns a unicode string instead of ASCII. @@ -31,39 +22,43 @@ """ # TODO: hide input if password = True
+ self.output(question) if password: answer = wx.PasswordEntryDialog( None, question, '','') else: answer = wx.TextEntryDialog( None, question, '', '' ) answer.ShowModal() - print answer.GetValue() + self.output(answer+'\n') #tkSimpleDialog.askstring('title', question) return answer.GetValue() or ''
def inputChoice(self, question, options, hotkeys, default = None): - goodAnswer = False - while not goodAnswer: - for i in range(len(options)): - option = options[i] - hotkey = hotkeys[i] - m = re.search('[%s%s]' % (hotkey.lower(), hotkey.upper()), option) - if m: - pos = m.start() - options[i] = '%s[%s]%s' % (option[:pos], option[pos], option[pos+1:]) - else: - options[i] = '%s [%s]' % (option, hotkey) - - prompt = '%s (%s)' % (question, ', '.join(options)) + for i in range(len(options)): + option = options[i] + hotkey = hotkeys[i] + m = re.search('[%s%s]' % (hotkey.lower(), hotkey.upper()), option) + if m: + pos = m.start() + options[i] = '%s[%s]%s' % (option[:pos], option[pos], option[pos+1:]) + else: + options[i] = '%s [%s]' % (option, hotkey) + + while True: + prompt = '%s\n(%s)' % (question, ', '.join(options)) + self.output('%s (%s)' % (question, ', '.join(options))) answer = wx.TextEntryDialog(None, prompt, question, '') answer.ShowModal() answer = answer.GetValue() + self.output(answer+'\n')
if answer.lower() in hotkeys or answer.upper() in hotkeys: return answer + elif default and answer=='':# empty string entered + return default
- if __name__ == '__main__': ui = UI() print ui.input('Test?') + app.MainLoop()
pywikipedia-svn@lists.wikimedia.org