1 | #!/usr/bin/env python |
---|
2 | # -*- coding: utf-8 -*- |
---|
3 | import pygtk |
---|
4 | import gtk |
---|
5 | import gtk.glade |
---|
6 | import urllib |
---|
7 | import urllib2 |
---|
8 | import threading |
---|
9 | import re |
---|
10 | import sys |
---|
11 | |
---|
12 | #class trans(threading.Thread): |
---|
13 | class trans(threading.Thread): |
---|
14 | |
---|
15 | def __init__(self): |
---|
16 | threading.Thread.__init__(self, name='trans') |
---|
17 | self.url='http://fanyi.cn.yahoo.com/translate_txt' |
---|
18 | self.text=None |
---|
19 | self.trans_in='' |
---|
20 | self.trans_out='' |
---|
21 | self.text_out=None |
---|
22 | self.text_in=None |
---|
23 | |
---|
24 | def getText(self,widget): |
---|
25 | buf=widget.get_buffer() |
---|
26 | b,e=buf.get_bounds() |
---|
27 | return buf.get_text(b,e) |
---|
28 | |
---|
29 | def setText(self,widget,text=''): |
---|
30 | buf=widget.get_buffer() |
---|
31 | buf.set_text(text) |
---|
32 | widget.set_buffer(buf) |
---|
33 | |
---|
34 | def run(self): |
---|
35 | self.setText(self.text_out,'正在翻译') |
---|
36 | |
---|
37 | values={'ei':'UTF-8',\ |
---|
38 | 'fr':'',\ |
---|
39 | 'lp':'%s_%s' %(self.trans_in,self.trans_out),\ |
---|
40 | 'trtext':'%s' %(self.getText(self.text_in).replace('\n','\r\n\r'),)} |
---|
41 | data=urllib.urlencode(values) |
---|
42 | request=urllib2.Request(self.url,data) |
---|
43 | conn=urllib2.urlopen(request) |
---|
44 | res=conn.read() |
---|
45 | res=re.findall('<div id="pd" class="pd"> (.{1,})</div>',res) |
---|
46 | res=res[0].replace('<br/>','\n') |
---|
47 | res=res.replace('<dnt> </dnt>','\n') |
---|
48 | self.setText(self.text_out,res) |
---|
49 | |
---|
50 | |
---|
51 | class yahooTrans(): |
---|
52 | |
---|
53 | def __init__(self): |
---|
54 | self.ui_file=sys.path[0]+'/ui.glade' |
---|
55 | self.widgetTree=gtk.glade.XML(self.ui_file,'window1') |
---|
56 | dic={"on_exit_clicked":gtk.main_quit,\ |
---|
57 | "on_window1_destroy":gtk.main_quit,\ |
---|
58 | "on_to_zh_clicked":self.toZh,\ |
---|
59 | "on_to_en_clicked":self.toZh} |
---|
60 | self.widgetTree.signal_autoconnect(dic) |
---|
61 | |
---|
62 | def toZh(self,widget): |
---|
63 | print widget.get_name() |
---|
64 | t=trans() |
---|
65 | t.text_in=self.widgetTree.get_widget('text_in') |
---|
66 | t.text_out=self.widgetTree.get_widget('text_out') |
---|
67 | if widget.get_name()=='to_zh': |
---|
68 | t.trans_in='en' |
---|
69 | t.trans_out='zh' |
---|
70 | else: |
---|
71 | t.trans_in='zh' |
---|
72 | t.trans_out='en' |
---|
73 | t.setDaemon(True) |
---|
74 | t.start() |
---|
75 | |
---|
76 | def main(self): |
---|
77 | gtk.main() |
---|
78 | |
---|
79 | if __name__=='__main__': |
---|
80 | gtk.gdk.threads_init() |
---|
81 | app=yahooTrans() |
---|
82 | app.main() |
---|