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:

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to