Changeset 116
- Timestamp:
- 03/22/04 21:15:31 (4 years ago)
- Files:
-
- 05/devel/kombilo.py (modified) (16 diffs)
- 05/devel/v.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
05/devel/kombilo.py
r114 r116 4 4 ## Copyright (C) 2001-4 Ulrich Goertz (u@g0ertz.de) 5 5 6 ## Kombilo 0.5 jis a go database program.6 ## Kombilo 0.5k is a go database program. 7 7 8 8 ## This program is free software; you can redistribute it and/or modify … … 37 37 t.pack() 38 38 39 t.insert(END, 'Kombilo 0.5 j\n\n The Python Megawidgets (Pmw) library was not found. It is needed by Kombilo, ' + \39 t.insert(END, 'Kombilo 0.5k\n\n The Python Megawidgets (Pmw) library was not found. It is needed by Kombilo, ' + \ 40 40 'so you have to install it before you can use Kombilo. See the Kombilo tutorial at ' + \ 41 41 'http://www.u-go.net/kombilo/tutorial#installation or the Pmw web site at ' + \ … … 597 597 enc = '' 598 598 newRootNode = self.mster.gameinfo(rootNode, enc) 599 if backup != newRootNode:599 if (not newRootNode is None) and backup != newRootNode: 600 600 c.updateRootNode(newRootNode, gameNumber) 601 601 try: … … 4026 4026 self.statistics = {} 4027 4027 4028 pbVar = self.pbVar.get() 4029 pwVar = self.pwVar.get() 4030 pVar = self.pVar.get() 4031 evVar = self.evVar.get() 4028 pbVar = self.pbVar.get().encode('utf-8') 4029 pwVar = self.pwVar.get().encode('utf-8') 4030 pVar = self.pVar.get().encode('utf-8') 4031 evVar = self.evVar.get().encode('utf-8') 4032 4032 frVar = self.frVar.get() 4033 4033 toVar = self.toVar.get() 4034 awVar = self.awVar.get() 4034 awVar = self.awVar.get().encode('utf-8') 4035 4035 refVar = self.referencedVar.get() 4036 4036 … … 4132 4132 4133 4133 if gameNumber == -1: # no collection, so we get away without parsing the SGF file 4134 4135 # is there an encoding tag? 4136 4137 enc_begin = find(sgf, 'CA[') 4138 if enc_begin != -1: 4139 encoding = lower(strip(sgf[enc_begin+3: find(sgf, ']', enc_begin)])) 4140 else: 4141 encoding = db['encoding'] 4142 4134 4143 sgf = lower(sgf) 4144 if encoding != 'utf-8': 4145 try: sgf = sgf.decode(encoding, 'ignore').encode('utf-8', 'ignore') 4146 except: pass 4147 4135 4148 if awVar and find(sgf, awVar) == -1: continue 4136 4149 … … 4152 4165 showwarning('Error', 'SGF error in file ' + filename) 4153 4166 continue 4167 4154 4168 node = c.getRootNode(gameNumber) 4155 4169 4170 encoding = c.encoding or db['encoding'] 4171 4156 4172 ok = 1 4157 4173 for var,tag in [(evVar,'EV')]: 4174 try: var = var.decode('utf-8', 'ignore').encode(encoding, 'ignore') 4175 except: pass 4158 4176 if var and not (node.has_key(tag) and find(lower(node[tag][0]), var) != -1): 4159 4177 ok = 0 … … 4161 4179 4162 4180 if awVar: 4181 try: awVar = awVar.decode('utf-8', 'ignore').encode(encoding, 'ignore') 4182 except: pass 4163 4183 c.game(gameNumber) 4164 4184 s = lower(c.outputVar(c.currentN)) … … 4204 4224 if gameNumber == -1: 4205 4225 4226 # is there an encoding tag? 4227 4228 enc_begin = find(sgf, 'CA[') 4229 if enc_begin != -1: 4230 encoding = lower(strip(sgf[enc_begin+3: find(sgf, ']', enc_begin)])) 4231 else: 4232 encoding = db['encoding'] 4233 4234 if encoding != 'utf-8': 4235 try: sgf = sgf.decode(encoding, 'ignore').encode('utf-8', 'ignore') 4236 except: pass 4237 4206 4238 if awVar and find(sgf, awVar) == -1: continue 4207 4239 … … 4224 4256 4225 4257 node = c.getRootNode(gameNumber) 4258 4259 encoding = c.encoding or db['encoding'] 4226 4260 4227 4261 ok = 1 4228 4262 for var,tag in [(evVar,'EV')]: 4263 try: var = var.decode('utf-8', 'ignore').encode(encoding, 'ignore') 4264 except: pass 4229 4265 if var and not (node.has_key(tag) and find(node[tag][0], var) != -1): 4230 4266 ok = 0 … … 4232 4268 4233 4269 if awVar: 4270 try: awVar = awVar.decode('utf-8', 'ignore').encode(encoding, 'ignore') 4271 except: pass 4234 4272 c.game(gameNumber) 4235 4273 s = c.outputVar(c.currentN) … … 5127 5165 5128 5166 5129 def openViewer_external(self, filename, gameNumber, moveno ):5167 def openViewer_external(self, filename, gameNumber, moveno, encoding = ''): 5130 5168 if self.options.altViewerVar1.get(): 5131 5169 … … 5167 5205 window.protocol('WM_DELETE_WINDOW', viewer.quit) 5168 5206 5169 apply(viewer.openFile, os.path.split(filename) )5207 apply(viewer.openFile, os.path.split(filename) + (encoding,)) 5170 5208 viewer.changeCurrentFile(None, 1) 5171 5209 viewer.delFile() … … 5196 5234 5197 5235 def openViewer_internal(self, filename, gameNumber, moveno, encoding): 5236 5198 5237 apply(self.openFile, os.path.split(filename) + (encoding,)) 5199 5238 … … 5229 5268 encoding = self.getEncoding(no, label) 5230 5269 if not self.options.externalViewer.get(): 5231 self.openViewer_external(filename, gameNumber, moveno )5270 self.openViewer_external(filename, gameNumber, moveno, encoding) 5232 5271 else: 5233 5272 self.openViewer_internal(filename, gameNumber, moveno, encoding) … … 5240 5279 encoding = self.getEncoding(no, label) 5241 5280 if self.options.externalViewer.get(): 5242 self.openViewer_external(filename, gameNumber, moveno )5281 self.openViewer_external(filename, gameNumber, moveno, encoding) 5243 5282 else: # don't open external viewer 5244 5283 self.openViewer_internal(filename, gameNumber, moveno, encoding) … … 5961 6000 t = [] 5962 6001 5963 t.append('Kombilo 0.5 j- written by Ulrich Goertz (u@g0ertz.de)\n\n')6002 t.append('Kombilo 0.5k - written by Ulrich Goertz (u@g0ertz.de)\n\n') 5964 6003 t.append('Kombilo is a go database program.\n') 5965 6004 t.append('You can find more information on Kombilo and the newest ') 05/devel/v.py
r114 r116 962 962 t.append('\n') 963 963 964 if node.has_key('EV'): t.append( node['EV'][0]+ ', ')965 if node.has_key('RO'): t.append( node['RO'][0]+ ', ')966 if node.has_key('DT'): t.append( node['DT'][0]+ '\n')964 if node.has_key('EV'): t.append(cursor.transcode('EV', node) + ', ') 965 if node.has_key('RO'): t.append(cursor.transcode('RO', node) + ', ') 966 if node.has_key('DT'): t.append(cursor.transcode('DT', node) + '\n') 967 967 968 968 s1 = cursor.transcode('GC',node) … … 2591 2591 keylist = ['PB', 'BR', 'PW', 'WR', 'EV', 'RE', 'DT', 'KM'] 2592 2592 for key in keylist: 2593 self.gameinfoDict[key] = [self.gameinfoVars[key].get() ]2593 self.gameinfoDict[key] = [self.gameinfoVars[key].get().encode(self.gameinfoDictencoding, 'ignore')] 2594 2594 2595 self.gameinfoDict['GC'] = [strip(self.gameinfoGCText.get('1.0', END)) ]2595 self.gameinfoDict['GC'] = [strip(self.gameinfoGCText.get('1.0', END)).encode(self.gameinfoDictencoding, 'ignore')] 2596 2596 2597 2597 for key in keylist + ['GC']: … … 2599 2599 del self.gameinfoDict[key] 2600 2600 2601 s = self.gameinfoOthersText.get('1.0', END) 2601 s = self.gameinfoOthersText.get('1.0', END).encode(self.gameinfoDictencoding, 'ignore') 2602 2602 try: 2603 2603 d = Cursor(('(;' + s + ')'),1).getRootNode(0) … … 2612 2612 showwarning('SGF Error', "Parse error in 'Other SGF tags'") 2613 2613 else: 2614 2615 for k in self.gameinfoDict.keys(): 2616 try: 2617 self.gameinfoDict[k] = [ x.encode(self.gameinfoDictencoding, 'ignore')\ 2618 for x in self.gameinfoDict[k] ] 2619 except: 2620 pass 2621 2622 if not self.returnChanges: self.currentFileChanged() 2623 2624 2614 if not self.returnChanges: self.currentFileChanged() 2625 2615 self.gameinfoWindow.destroy() 2626 2616 2627 2617 2628 2618 def gameinfoCancel(self): 2629 for k in self.gameinfoDict.keys(): 2630 try: 2631 self.gameinfoDict[k] = [ x.encode(self.gameinfoDictencoding, 'ignore')\ 2632 for x in self.gameinfoDict[k] ] 2633 except: 2634 pass 2619 self.gameinfoDict = None 2635 2620 self.gameinfoWindow.destroy() 2636 2621 … … 2639 2624 """ Open window with the game info of the current game.""" 2640 2625 2641 if encoding == '': encoding = self.cursor.encoding2642 # FIXME: sollte dies nicht sein: if self.cursor.encoding: encoding = self.cursor.encoding ?2643 2644 2626 if not data and not self.cursor: 2645 2627 return … … 2650 2632 showwarning('Error', 'SGF Error') 2651 2633 return 2634 encoding = self.cursor.encoding 2652 2635 self.returnChanges = 0 2653 2636 else: … … 2665 2648 for k in self.gameinfoDict.keys(): 2666 2649 try: 2667 self.gameinfoDict[k] = [x.decode(encoding, 'ignore') for x in self.gameinfoDict[k]] 2650 self.gameinfoDict[k] = [x.decode(encoding, 'ignore').encode('utf-8', 'ignore') \ 2651 for x in self.gameinfoDict[k]] 2668 2652 except: 2669 2653 pass … … 2727 2711 if self.returnChanges: 2728 2712 return self.gameinfoDict 2729 el se:2713 elif not self.gameinfoDict is None: 2730 2714 self.cursor.updateRootNode(self.gameinfoDict, self.cursor.currentGame) 2731 2715 s = '[' + `self.cursor.currentGame` + '] '
