Changeset 63
- Timestamp:
- 02/12/04 21:25:12 (5 years ago)
- Files:
-
- 05/devel/kombilo.py (modified) (1 diff)
- 05/devel/v.py (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
05/devel/kombilo.py
r61 r63 572 572 backup = copy(rootNode) 573 573 574 newRootNode = self.mster.gameinfo(rootNode) 574 if c.encoding: 575 enc = c.encoding 576 elif self.DBlist[DBindex]['encoding']: 577 enc = self.DBlist[DBindex]['encoding'] 578 else: 579 enc = '' 580 newRootNode = self.mster.gameinfo(rootNode, enc) 575 581 if backup != newRootNode: 576 582 c.updateRootNode(newRootNode, gameNumber) 05/devel/v.py
r42 r63 47 47 48 48 try: 49 print 'do not use sgfpars' 50 aaa 49 51 from sgfpars import Node, Cursor, SGFError, SGFescape 50 52 except: … … 927 929 928 930 currentGame = cursor.currentGame 929 931 930 932 try: 931 933 node = cursor.getRootNode(currentGame) … … 933 935 934 936 t = [] 935 936 if node.has_key('PW'): t.append(node['PW'][0]) 937 938 s1 = cursor.transcode('PW',node) 939 if s1: t.append(s1) 937 940 else: t.append(' ?') 938 if node.has_key('WR'): 941 942 s1 = cursor.transcode('WR',node) 943 if s1: 939 944 t.append(', ') 940 t.append( node['WR'][0])945 t.append(s1) 941 946 942 947 t.append(' - ') 943 948 944 if node.has_key('PB'): t.append(node['PB'][0]) 949 s1 = cursor.transcode('PB',node) 950 if s1: t.append(s1) 945 951 else: t.append(' ?') 946 if node.has_key('BR'): t.append(', ' + node['BR'][0]) 947 948 if node.has_key('RE'): t.append(', ' + node['RE'][0]) 949 if node.has_key('KM'): t.append(' (Komi ' + node['KM'][0] + ')') 950 if node.has_key('HA'): t.append(' (Hcp ' + node['HA'][0] + ')') 952 953 s1 = cursor.transcode('BR',node) 954 if s1: 955 t.append(', ') 956 t.append(s1) 957 958 s1 = cursor.transcode('RE',node) 959 if s1: t.append(', ' + s1) 960 s1 = cursor.transcode('KM',node) 961 if s1: t.append(' (Komi ' + s1 + ')') 962 s1 = cursor.transcode('HA',node) 963 if s1: t.append(' (Hcp ' + s1 + ')') 951 964 952 965 t.append('\n') … … 956 969 if node.has_key('DT'): t.append(node['DT'][0] + '\n') 957 970 958 if node.has_key('GC'):959 gc = node['GC'][0]960 gc= replace(gc, '\n\r', ' ')961 gc= replace(gc, '\r\n', ' ')962 gc= replace(gc, '\r', ' ')963 gc= replace(gc, '\n', ' ')964 965 t.append(gc)971 s1 = cursor.transcode('GC',node) 972 if s1: 973 s1 = replace(gc, '\n\r', ' ') 974 s1 = replace(gc, '\r\n', ' ') 975 s1 = replace(gc, '\r', ' ') 976 s1 = replace(gc, '\n', ' ') 977 978 s1.append(gc) 966 979 967 980 self.gameinfo.config(state=NORMAL) … … 1035 1048 1036 1049 1050 def transcode(self, prop, node = None): 1051 if type(node) == type({}): 1052 d = node 1053 elif node: 1054 d = node.getData() 1055 else: d = self.currentNode() 1056 if not d.has_key(prop) or not d[prop]: return '' 1057 s = d[prop][0] 1058 if self.encoding: 1059 try: 1060 s = s.decode(self.encoding.lower()) # .encode('utf-8') 1061 except: 1062 pass 1063 return s 1064 1065 1037 1066 def updateTree(self, update=1): 1038 1067 self.SGFtreeCanv.canvas.delete('all') … … 1077 1106 s = '[' + `i` + '] ' 1078 1107 1108 1079 1109 d = n.getData() 1080 if d.has_key('PW'): s += d['PW'][0]1110 s += self.transcode('PW',n) 1081 1111 s += ' - ' 1082 if d.has_key('PB'): s += d['PB'][0] 1083 if d.has_key('RE'): s += ' (' + d['RE'][0] + ')' 1112 s += self.transcode('PB',n) 1113 s1 = self.transcode('RE',n) 1114 if s1: s += ' (' + s1 + ')' 1084 1115 1085 1116 self.mster.dataWindow.gamelist.insert(END, s) … … 1353 1384 try: 1354 1385 1355 if self.cursor.currentNode().has_key('PW'): pw = self.cursor.currentNode()['PW'][0] 1356 else: pw = '' 1357 if self.cursor.currentNode().has_key('PB'): pb = self.cursor.currentNode()['PB'][0] 1358 else: pb = '' 1386 pw = self.cursor.transcode('PW') 1387 pb = self.cursor.transcode('PB') 1359 1388 self.master.title(pw + ' - ' + pb) 1360 1389 … … 1883 1912 self.comments.delete('1.0', END) 1884 1913 if c.has_key('C'): 1885 self.comments.insert('1.0', replace( c['C'][0], '\r', ''))1914 self.comments.insert('1.0', replace(self.cursor.transcode('C',c), '\r', '')) 1886 1915 1887 1916 for type in ['CR', 'MA', 'SQ', 'TR']: … … 2273 2302 if not self.cursor: return 2274 2303 2275 s = strip(self.comments.get('1.0', END).encode('utf-8', 'ignore')) 2304 s = strip(self.comments.get('1.0', END)) 2305 if self.cursor.encoding: 2306 try: 2307 s = s.encode(self.cursor.encoding, 'ignore') 2308 except: 2309 pass 2310 else: 2311 s = s.encode('utf-8', 'ignore') 2276 2312 changed = 0 2277 2313 … … 2406 2442 if not f: return 2407 2443 try: 2408 sgf_out = self.cursor.output() 2444 sgf_out = self.cursor.output() 2409 2445 file = open(f, 'w') 2410 2446 file.write(sgf_out) … … 2532 2568 self.gameinfoDict[key] = [self.gameinfoVars[key].get()] 2533 2569 2534 self.gameinfoDict['GC'] = [strip(self.gameinfoGCText.get('1.0', END).encode('utf-8', 2535 'ignore'))] 2570 self.gameinfoDict['GC'] = [strip(self.gameinfoGCText.get('1.0', END))] 2536 2571 2537 2572 for key in keylist + ['GC']: … … 2541 2576 s = self.gameinfoOthersText.get('1.0', END) 2542 2577 try: 2543 d = Cursor(('(;' + s + ')') .encode('utf-8', 'ignore'),1).getRootNode(0)2578 d = Cursor(('(;' + s + ')'),1).getRootNode(0) 2544 2579 for k in d.keys(): 2545 2580 self.gameinfoDict[k] = d[k] … … 2552 2587 showwarning('SGF Error', "Parse error in 'Other SGF tags'") 2553 2588 else: 2589 2590 for k in self.gameinfoDict.keys(): 2591 try: 2592 self.gameinfoDict[k] = [ x.encode(self.gameinfoDictencoding)\ 2593 for x in self.gameinfoDict[k] ] 2594 except: 2595 pass 2596 2597 if not self.returnChanges: self.currentFileChanged() 2598 2599 2554 2600 self.gameinfoWindow.destroy() 2555 if not self.returnChanges: self.currentFileChanged() 2556 2557 def gameinfo(self, data=None): 2601 2602 2603 def gameinfoCancel(self): 2604 for k in self.gameinfoDict.keys(): 2605 try: 2606 self.gameinfoDict[k] = [ x.encode(self.gameinfoDictencoding)\ 2607 for x in self.gameinfoDict[k] ] 2608 except: 2609 pass 2610 self.gameinfoWindow.destroy() 2611 2612 2613 def gameinfo(self, data=None, encoding=None): 2558 2614 """ Open window with the game info of the current game.""" 2559 2615 2616 if encoding is None: encoding = self.cursor.encoding 2560 2617 if not data and not self.cursor: 2561 2618 return … … 2575 2632 self.gameinfoWindow = window 2576 2633 window.title('Game Info') 2634 2635 if encoding: 2636 self.gameinfoDictencoding = encoding 2637 for k in self.gameinfoDict.keys(): 2638 try: 2639 self.gameinfoDict[k] = [x.decode(encoding) for x in self.gameinfoDict[k]] 2640 except: 2641 pass 2642 else: 2643 self.gameinfoDictencoding = 'utf-8' 2577 2644 2578 2645 keylist = ['GC', 'PB', 'BR', 'PW', 'WR', 'EV', 'RE', 'DT', 'KM'] … … 2622 2689 self.gameinfoOthersText.insert(END, self.gameinfoVars['others'].get()) 2623 2690 2624 Button(window, text='Cancel', command = window.destroy).pack(side=RIGHT)2691 Button(window, text='Cancel', command = self.gameinfoCancel).pack(side=RIGHT) 2625 2692 Button(window, text="OK", command = self.gameinfoOK).pack(side=RIGHT) 2626 2693 … … 2637 2704 2638 2705 d = self.gameinfoDict 2639 if d.has_key('PW'): s += d['PW'][0]2706 s += self.cursor.transcode('PW',d) 2640 2707 s += ' - ' 2641 if d.has_key('PB'): s += d['PB'][0]2642 if d.has_key('RE'): s += ' (' + d['RE'][0]+ ')'2708 s += self.cursor.transcode('PB',d) 2709 if d.has_key('RE'): s += ' (' + self.cursor.transcode('RE',d) + ')' 2643 2710 2644 2711 self.dataWindow.gamelist.delete(self.cursor.currentGame)
