1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
#Boa:Dialog:TranslateDialog
import string
from wxPython.wx import *
from wxPython.lib.anchors import LayoutAnchors
from ExternalLib import babeliser
import Preferences, Utils
from Preferences import IS
def create(parent, phrase):
return TranslateDialog(parent, phrase)
[wxID_TRANSLATEDIALOG, wxID_TRANSLATEDIALOGCANCELBTN, wxID_TRANSLATEDIALOGCHOICE2, wxID_TRANSLATEDIALOGCHOICE3, wxID_TRANSLATEDIALOGOKBTN, wxID_TRANSLATEDIALOGSTATICBITMAP1, wxID_TRANSLATEDIALOGSTATICTEXT1, wxID_TRANSLATEDIALOGSTATICTEXT2, wxID_TRANSLATEDIALOGSTATICTEXT3, wxID_TRANSLATEDIALOGSTATICTEXT4, wxID_TRANSLATEDIALOGTEXTCTRL1] = map(lambda _init_ctrls: wxNewId(), range(11))
class TranslateDialog(wxDialog):
def _init_utils(self):
pass
def _init_ctrls(self, prnt):
wxDialog.__init__(self, id = wxID_TRANSLATEDIALOG, name = 'TranslateDialog', parent = prnt, pos = wxPoint(392, 231), size = wxSize(344, 166), style = wxDEFAULT_DIALOG_STYLE, title = 'Translate')
self._init_utils()
self.SetAutoLayout(true)
self.SetClientSize(wxSize(336, 139))
self.staticText3 = wxStaticText(id = wxID_TRANSLATEDIALOGSTATICTEXT3, label = 'To:', name = 'staticText3', parent = self, pos = wxPoint(8, 77), size = wxSize(16, 13), style = 0)
self.textCtrl1 = wxTextCtrl(id = wxID_TRANSLATEDIALOGTEXTCTRL1, name = 'textCtrl1', parent = self, pos = wxPoint(48, 8), size = wxSize(278, 21), style = 0, value = self.phrase)
self.textCtrl1.SetConstraints(LayoutAnchors(self.textCtrl1, true, true, true, false))
self.staticText1 = wxStaticText(id = wxID_TRANSLATEDIALOGSTATICTEXT1, label = 'Phrase:', name = 'staticText1', parent = self, pos = wxPoint(8, 13), size = wxSize(36, 13), style = 0)
self.staticText2 = wxStaticText(id = wxID_TRANSLATEDIALOGSTATICTEXT2, label = 'From:', name = 'staticText2', parent = self, pos = wxPoint(8, 45), size = wxSize(26, 13), style = 0)
self.choice2 = wxChoice(choices = self.languages, id = wxID_TRANSLATEDIALOGCHOICE2, name = 'choice2', parent = self, pos = wxPoint(48, 40), size = wxSize(278, 21), style = 0, validator = wxDefaultValidator)
self.choice2.SetSelection(0)
self.choice2.SetConstraints(LayoutAnchors(self.choice2, true, true, true, false))
self.choice3 = wxChoice(choices = self.languages, id = wxID_TRANSLATEDIALOGCHOICE3, name = 'choice3', parent = self, pos = wxPoint(48, 72), size = wxSize(278, 21), style = 0, validator = wxDefaultValidator)
self.choice3.SetSelection(0)
self.choice3.SetConstraints(LayoutAnchors(self.choice3, true, true, true, false))
self.okBtn = wxButton(id = wxID_TRANSLATEDIALOGOKBTN, label = 'OK', name = 'okBtn', parent = self, pos = wxPoint(171, 104), size = wxSize(75, 23), style = 0)
self.okBtn.SetConstraints(LayoutAnchors(self.okBtn, false, false, true, true))
EVT_BUTTON(self.okBtn, wxID_TRANSLATEDIALOGOKBTN, self.OnButton1Button)
self.cancelBtn = wxButton(id = wxID_TRANSLATEDIALOGCANCELBTN, label = 'Cancel', name = 'cancelBtn', parent = self, pos = wxPoint(251, 104), size = wxSize(75, 23), style = 0)
self.cancelBtn.SetConstraints(LayoutAnchors(self.cancelBtn, false, false, true, true))
EVT_BUTTON(self.cancelBtn, wxID_TRANSLATEDIALOGCANCELBTN, self.OnCancelbtnButton)
self.staticText4 = wxStaticText(id = wxID_TRANSLATEDIALOGSTATICTEXT4, label = 'Thanks to BabelFish and Jonathan Feinberg', name = 'staticText4', parent = self, pos = wxPoint(8, 104), size = wxSize(118, 27), style = wxST_NO_AUTORESIZE)
self.staticBitmap1 = wxStaticBitmap(bitmap = self.babelBmp, id = wxID_TRANSLATEDIALOGSTATICBITMAP1, name = 'staticBitmap1', parent = self, pos = wxPoint(136, 104), size = wxSize(28, 20), style = 0)
def __init__(self, parent, phrase, languages=babeliser.available_languages):
self.phrase = 'I love a reigning knight.'
self.phrase = phrase
self.languages = ['English', 'German', 'Etc']
self.languages = languages
self.babelBmp = IS.load('Images/Views/bfish.gif')
self._init_ctrls(parent)
self.translated = [phrase]
self.SetAcceleratorTable(
wxAcceleratorTable([ Utils.setupCloseWindowOnEscape(self) ]))
def OnButton1Button(self, event):
if self.okBtn.GetLabel() == 'OK':
self.SetTitle('Translating...')
wxBeginBusyCursor()
try:
try:
self.translated = babeliser.babelize(self.textCtrl1.GetValue(),
self.choice2.GetStringSelection(),
self.choice3.GetStringSelection())
if len(self.translated) > 1:
self.textCtrl1.SetValue(self.translated[1])
self.okBtn.SetLabel('Replace')
self.SetTitle('Translated')
except Exception, error:
self.SetTitle('Translation failed %s'%str(error))
finally:
wxEndBusyCursor()
else:
self.EndModal(wxOK)
def OnCancelbtnButton(self, event):
self.EndModal(wxCANCEL)
#---Spell checking (curtesy of David Adams' Speller)----------------------------
from ExternalLib import xmlrpclib
eolPlaceHolder = '|\||_'
def spellCheck(text):
svr = xmlrpclib.Server('http://www.stuffeddog.com/speller/speller-rpc.cgi')
text = string.replace(text, '\n', eolPlaceHolder)
mistakes = svr.speller.spellCheck(text)
insertOffset = 0
newText = text
for mistake in mistakes:
suggests = ' ['+string.join(mistake['suggestions'], '|')+']'
pivot = mistake['location']+len(mistake['word'])+insertOffset -1
newText = newText[:pivot] + suggests + newText[pivot:]
insertOffset = insertOffset + len(suggests)
return string.replace(newText, eolPlaceHolder, '\n')
if __name__ == '__main__':
if 1:
wxInitAllImageHandlers()
app = wxPySimpleApp()
dlg = create(None, 'Amo un cavaliere di regno.')
try:
if dlg.ShowModal() == wxOK and len(dlg.translated) > 1:
wxMessageBox(dlg.translated[1], 'Translation')
finally:
dlg.Destroy()
else:
print spellCheck('Boa is a fantastik \nintigrated envirooment')
|