Sorry, I updated my patch. The previous one works but not perfect.
--
PaulLiu(劉穎駿)
E-mail address: [EMAIL PROTECTED]
--- dict.py 2007-06-22 19:42:30.000000000 +0800
+++ ../dict.py 2007-06-22 19:31:22.000000000 +0800
@@ -1,70 +1,72 @@
#!/usr/bin/env /usr/bin/python
+# coding=big5
#-------------------------------------------------
# this is a program that utilize the library of xdict.
# Made by Daniel Gau <[EMAIL PROTECTED]>
#-------------------------------------------------
import pygtk
-pygtk.require('1.2')
+pygtk.require('2.0')
-from gtk import *
-from GDK import *
+import gtk
+from gtk.keysyms import *
from string import split,replace,strip,lstrip,find,lower
-import GtkExtra
+#import GtkExtra
import sys,os
prop = [" "," "," ","<<§Î®eµü>>","<<°Æµü>>","art. ","<<³s±µµü>>","int. ","<<¦Wµü>>"," "," ","num. ", "prep. "," ","pron. ","<<°Êµü>>","<<§U°Êµü>>","<<«D¤Îª«°Êµü>>","<<¤Îª«°Êµü>>","vbl. "," ","st. ", "pr. ","<<¹L¥h¤Àµü>>","<<½Æ¼Æ>>","ing. "," ","<<§Î®eµü>>","<<°Æµü>>","pla. ","pn. "," "]
-class HelpDialog(GtkDialog):
- def __init__(self,modal=TRUE,file=None):
- GtkDialog.__init__(self)
+class HelpDialog(gtk.Dialog):
+ def __init__(self,modal=True,file=None):
+ gtk.Dialog.__init__(self)
self.set_title("pyDict Help")
self.connect("destroy", self.quit)
self.connect("delete_event", self.quit)
if modal:
- grab_add(self)
- box = GtkVBox(spacing=10)
+ #grab_add(self)
+ pass
+ box = gtk.VBox(spacing=10)
box.set_border_width(10)
self.vbox.pack_start(box)
box.show()
- self.swin = GtkScrolledWindow()
+ self.swin = gtk.ScrolledWindow()
self.swin.set_usize(500,300)
box.pack_start(self.swin)
self.swin.show()
- self.text = GtkText()
+ self.text = gtk.TextView()
self.swin.add(self.text)
self.text.show()
- self.text.freeze()
+ self.text.set_editable(False)
# get red color
cmap = self.text.get_colormap()
- fg = cmap.alloc(65535,0,0)
+ # fg = cmap.alloc(65535,0,0)
# read file in
f = open(file,'r').readlines()
for x in range(len(f)):
# not pronunciation guide lines
if f[x][0:3] != ' ':
- self.text.insert_defaults(f[x])
+ self.text.get_buffer().insert_at_cursor(f[x].decode('big5').encode('utf-8'))
# pronunciation guide lines
else:
for y in range(len(f[x])):
if f[x][y] == '_' and y < len(f[x]) -3:
if f[x][y+2] == '_':
- self.text.insert_defaults(f[x][0:y])
- self.text.insert(None,fg,None,f[x][y+1])
- self.text.insert_defaults(f[x][y+3:])
+ self.text.get_buffer().insert_at_cursor(f[x][0:y])
+ self.text.get_buffer().insert_with_tags(self.text.get_buffer().get_end_iter(),f[x][y+1],self.text.get_buffer().create_tag(None,foreground="red"))
+ self.text.get_buffer().insert_at_cursor(f[x][y+3:])
elif f[x][y+3] == '_':
- self.text.insert_defaults(f[x][0:y])
- self.text.insert(None,fg,None,f[x][y+1:y+3])
- self.text.insert_defaults(f[x][y+4:])
- self.text.thaw()
+ self.text.get_buffer().insert_at_cursor(f[x][0:y])
+ self.text.get_buffer().insert_with_tags(self.text.get_buffer().get_end_iter(),f[x][y+1:y+3],self.text.get_buffer().create_tag(None,foreground="red"))
+ self.text.get_buffer().insert_at_cursor(f[x][y+4:])
+ #self.text.thaw()
self.text.grab_focus()
- button = GtkButton("OK")
+ button = gtk.Button("OK")
button.connect("clicked", self.click)
- button.set_flags(CAN_DEFAULT)
+ button.set_flags(gtk.CAN_DEFAULT)
self.action_area.pack_start(button)
button.show()
self.ret = None
@@ -76,9 +78,9 @@
self.quit()
-class App(GtkWindow):
+class App(gtk.Window):
def __init__(self):
- GtkWindow.__init__(self,WINDOW_TOPLEVEL)
+ gtk.Window.__init__(self,gtk.WINDOW_TOPLEVEL)
self.create_vars()
self.create_boxes()
self.create_widgets()
@@ -97,10 +99,10 @@
self.words = []
self.index = 0 # initialize clistbox index
def create_boxes(self):
- self.b_large = GtkVBox()
- self.b_small = GtkVBox()
+ self.b_large = gtk.VBox()
+ self.b_small = gtk.VBox()
self.add(self.b_large)
- self.small_win = GtkWindow(WINDOW_TOPLEVEL)
+ self.small_win = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.small_win.add(self.b_small)
self.b_small.show()
self.b_large.show()
@@ -109,84 +111,111 @@
#
# create menubar
#
- hdlbox = GtkHandleBox()
- self.b_large.pack_start(hdlbox, expand=FALSE)
+ hdlbox = gtk.HandleBox()
+ self.b_large.pack_start(hdlbox, expand=False)
hdlbox.show()
- mf = GtkExtra.MenuFactory()
- mf.add_entries([
- ('ÀÉ®×/Â÷¶}', '<control>Q', self.quit),
- ('½s¿è/§ïÅܤj¤p','<control>S',self.change_size),
- ('½s¿è/³]©w...', '<control>P', None),
- ('»¡©ú/»¡©ú...','<control>H',self.help_help),
- ('»¡©ú/Ãö©ó...','<control>A',self.help_about),
- ])
- self.add_accel_group(mf.accelerator)
+ mf = gtk.MenuBar()
+ mf_menu_item01 = gtk.MenuItem('ÀÉ®×'.decode('big5').encode('utf-8'))
+ mf_menu_item0101 = gtk.MenuItem('Â÷¶}'.decode('big5').encode('utf-8'))
+ mf_menu_item02 = gtk.MenuItem('½s¿è'.decode('big5').encode('utf-8'))
+ mf_menu_item0201 = gtk.MenuItem('§ïÅܤj¤p'.decode('big5').encode('utf-8'))
+ mf_menu_item0202 = gtk.MenuItem('³]©w...'.decode('big5').encode('utf-8'))
+ mf_menu_item03 = gtk.MenuItem('»¡©ú'.decode('big5').encode('utf-8'))
+ mf_menu_item0301 = gtk.MenuItem('»¡©ú...'.decode('big5').encode('utf-8'))
+ mf_menu_item0302 = gtk.MenuItem('Ãö©ó...'.decode('big5').encode('utf-8'))
+ mf_menu = gtk.Menu()
+ mf_menu.append(mf_menu_item0101)
+ mf_menu_item01.set_submenu(mf_menu)
+ mf_menu = gtk.Menu()
+ mf_menu.append(mf_menu_item0201)
+ mf_menu.append(mf_menu_item0202)
+ mf_menu_item02.set_submenu(mf_menu)
+ mf_menu = gtk.Menu()
+ mf_menu.append(mf_menu_item0301)
+ mf_menu.append(mf_menu_item0302)
+ mf_menu_item03.set_submenu(mf_menu)
+ mf.append(mf_menu_item01)
+ mf.append(mf_menu_item02)
+ mf.append(mf_menu_item03)
+ mf_menu_item0101.connect_object("activate",self.quit,None)
+ mf_menu_item0201.connect_object("activate",self.change_size,None)
+ mf_menu_item0301.connect_object("activate",self.help_help,None)
+ mf_menu_item0302.connect_object("activate",self.help_about,None)
+ mf_menu_item01.show()
+ mf_menu_item0101.show()
+ mf_menu_item02.show()
+ mf_menu_item0201.show()
+ mf_menu_item0202.show()
+ mf_menu_item03.show()
+ mf_menu_item0301.show()
+ mf_menu_item0302.show()
+ #self.add_accel_group(mf.accelerator)
hdlbox.add(mf)
mf.show()
#
# create entrybox
#
- hdlbox = GtkHandleBox()
- self.b_large.pack_start(hdlbox, expand=FALSE)
+ hdlbox = gtk.HandleBox()
+ self.b_large.pack_start(hdlbox, expand=False)
hdlbox.show()
- hbox = GtkHBox()
+ hbox = gtk.HBox()
hdlbox.add(hbox)
hbox.show()
# create entry
- self.entry = GtkEntry()
+ self.entry = gtk.Entry()
self.entry.connect("key_press_event",self.lookup)
- hbox.pack_start(self.entry,expand=FALSE)
+ hbox.pack_start(self.entry,expand=False)
self.entry.show()
# create commit button
- self.b_commit = GtkButton("Search")
+ self.b_commit = gtk.Button("Search")
self.b_commit.connect("clicked",self.lookup)
- hbox.pack_start(self.b_commit,expand=FALSE)
+ hbox.pack_start(self.b_commit,expand=False)
self.b_commit.show()
# create radiobutton
- self.rb_etoc = GtkRadioButton(None,"^½¤¤")
- hbox.pack_start(self.rb_etoc,expand=FALSE)
+ self.rb_etoc = gtk.RadioButton(None,"^½¤¤".decode('big5').encode('utf-8'))
+ hbox.pack_start(self.rb_etoc,expand=False)
self.rb_etoc.show()
- self.rb_ctoe = GtkRadioButton(self.rb_etoc,"¤¤Â½^")
- hbox.pack_start(self.rb_ctoe,expand=FALSE)
+ self.rb_ctoe = gtk.RadioButton(self.rb_etoc,"¤¤Â½^".decode('big5').encode('utf-8'))
+ hbox.pack_start(self.rb_ctoe,expand=False)
self.rb_ctoe.show()
# create smart toggle button
- self.tb_smart = GtkToggleButton("´¼¼z¼Ò¦¡")
+ self.tb_smart = gtk.ToggleButton("´¼¼z¼Ò¦¡".decode('big5').encode('utf-8'))
hbox.pack_start(self.tb_smart)
self.tb_smart.show()
# create scale button
- button = GtkButton("ÁY¤p")
+ button = gtk.Button("ÁY¤p".decode('big5').encode('utf-8'))
button.connect("clicked",self.change_size)
hbox.pack_start(button)
button.show()
#
# create listbox and explanation text
#
- hbox = GtkHBox()
+ hbox = gtk.HBox()
self.b_large.pack_start(hbox)
hbox.show()
# create scrolledwindow for listbox
- swin = GtkScrolledWindow()
- swin.set_policy(POLICY_AUTOMATIC,POLICY_AUTOMATIC)
+ swin = gtk.ScrolledWindow()
+ swin.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
swin.set_usize(200,400)
- hbox.pack_start(swin,expand=FALSE)
+ hbox.pack_start(swin,expand=False)
swin.show()
# create listbox
- self.clist= GtkCList(1)
+ self.clist= gtk.CList(1)
self.clist.set_column_width(0,180)
self.clist.connect('select_row',self.select_list_word)
self.clist.connect('key_press_event',self.move_list)
swin.add(self.clist)
self.clist.show()
#create explanation text
- self.text = GtkText()
+ self.text = gtk.TextView()
hbox.pack_start(self.text)
self.text.show()
#
# create a button for small hbox
#
- button = GtkButton("pyDict-0.2.5.1")
+ button = gtk.Button("pyDict-0.2.5.1")
button.connect("clicked",self.change_size)
- self.b_small.pack_start(button,expand=FALSE)
+ self.b_small.pack_start(button,expand=False)
button.show()
def change_size(self, *args):
@@ -204,43 +233,43 @@
# initialize font
style = self.text.get_style()
try:
- font = load_font("-urw-bookman-light-r-normal-*-*-140-*-*-p-*-iso8859-1")
+ font = gtk.load_font("-urw-bookman-light-r-normal-*-*-140-*-*-p-*-iso8859-1")
newfont = TRUE
except RuntimeError:
- newfont = FALSE
+ newfont = False
# initialize red color
cmap = self.text.get_colormap()
- fg = cmap.alloc(65535,0,0)
+ # fg = cmap.alloc(65535,0,0)
#
# freeze the text area
#
- self.text.freeze()
+ self.text.set_editable(False)
# clear the old one
- self.text.backward_delete(self.text.get_length())
+ self.text.get_buffer().set_text("")
# insert word
- self.text.insert_defaults(word['word']+'\n')
+ self.text.get_buffer().insert_at_cursor(word['word']+'\n')
# add mark if it exists
if word.has_key('mark'):
mark_string = '[' + word['mark'] + ']\n\n'
if newfont:
- self.text.insert(font,None,None,mark_string)
+ self.text.get_buffer().insert_with_tags(self.text.get_buffer().get_end_iter(),mark_string,self.text.get_buffer().create_tag(None,font="-urw-bookman-light-r-normal-*-*-140-*-*-p-*-iso8859-1"))
else:
- self.text.insert_defaults(mark_string)
+ self.text.get_buffer().insert_at_cursor(mark_string)
else:
- self.text.insert_defaults('\n')
+ self.text.get_buffer().insert_at_cursor('\n')
# show it in self.text
for x in range(len(word['mean'])):
index = find(word['mean'][x],'>>')
if index != -1:
# display red font
- self.text.insert(None,fg,None,word['mean'][x][:index+2])
- self.text.insert_defaults(word['mean'][x][index+2:]+'\n')
+ self.text.get_buffer().insert_with_tags(self.text.get_buffer().get_end_iter(),word['mean'][x][:index+2].decode('big5').encode('utf-8'),self.text.get_buffer().create_tag(None,foreground="red"))
+ self.text.get_buffer().insert_at_cursor(word['mean'][x][index+2:].decode('big5').encode('utf-8')+'\n')
else:
- self.text.insert_defaults(word['mean'][x]+ '\n')
+ self.text.get_buffer().insert_at_cursor(word['mean'][x].decode('big5').encode('utf-8')+ '\n')
#
# thaw the text area
#
- self.text.thaw()
+ # self.text.thaw()
def update_list(self):
# show words in self.listbox
@@ -267,14 +296,14 @@
self.update_list()
else:
# clear the old one
- self.text.backward_delete(self.text.get_length())
- self.text.insert_defaults(word + ' not found!!')
+ self.text.get_buffer().set_text("")
+ self.text.get_buffer().insert_at_cursor(word + ' not found!!')
def c_execute(self,word): # chinese to English
# move self.index to top
self.index = 0
pro_inp = ''
- inp = word
+ inp = word.decode('utf-8').encode('big5')
num = len(inp)
#esc_list = []
#for x in range(33,128):
@@ -300,8 +329,8 @@
self.update_list()
else:
# clear the old one
- self.text.backward_delete(self.text.get_length())
- self.text.insert_defaults(word + ' not found!!')
+ self.text.get_buffer().set_text("")
+ self.text.get_buffer().insert_at_cursor(word + ' not found!!')
def row_execute(self,word,up_down):
# roll_up or roll_down in clist
@@ -344,7 +373,7 @@
else:
self.clist.clear()
# clear the old one
- self.text.backward_delete(self.text.get_length())
+ self.text.get_buffer().set_text("")
# English to Chinese but no smart mode
elif self.rb_etoc.get_active() and (args[0] == self.b_commit or args[1].keyval in (KP_Enter,Return)):
word = strip(self.entry.get_text()) # trim white spaces
@@ -363,7 +392,8 @@
if args[1].keyval == F1:
self.help_help()
elif args[1].keyval <= 256 or args[1].keyval == BackSpace:
- self.entry.grab_focus()
+ #self.entry.grab_focus()
+ pass
def select_list_word(self,*args):
# args[0]: widget args[1]: row args[2]: column args[3]: event
word = self.clist.get_text(args[1],args[2])
@@ -408,15 +438,21 @@
self.select_list_word(None,self.index,0,None)
def quit(self,*args):
- mainquit()
+ gtk.main_quit()
def help_about(self,mi=None):
- GtkExtra.message_box("pyDict v0.2.5.1",
- """pyDict v0.2.5.1
- Made by Daniel Gau
- <[EMAIL PROTECTED]>
- for my lovely wife, Cecile Ho.
- """,("OK",),pixmap='/usr/share/pyDict/yaba.xpm')
+ GtkExtraMessageBox = gtk.AboutDialog()
+ GtkExtraMessageBox.set_name("pyDict v0.2.5.1")
+ GtkExtraMessageBox.set_comments(
+ """pyDict v0.2.5.1
+ Made by Daniel Gau
+ <[EMAIL PROTECTED]>
+ for my lovely wife, Cecile Ho.
+ """)
+ LogoIcon = gtk.Image()
+ LogoIcon.set_from_file("/usr/share/pyDict/yaba.xpm")
+ GtkExtraMessageBox.set_logo(LogoIcon.get_pixbuf())
+ GtkExtraMessageBox.show()
def help_help(self,mi=None):
hd = HelpDialog(file = "/usr/share/pyDict/HELP")
@@ -612,7 +648,7 @@
if os.environ.has_key('DISPLAY') and len(sys.argv) == 1:
app = App()
app.show()
- mainloop()
+ gtk.main()
# if there isn't, then check the variable
# the default is console English-Chinese mode.
elif len(sys.argv) == 1:
signature.asc
Description: OpenPGP digital signature

