Changeset 63

Show
Ignore:
Timestamp:
02/12/04 21:25:12 (5 years ago)
Author:
ug
Message:

Encodings support in v.py

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 05/devel/kombilo.py

    r61 r63  
    572572        backup = copy(rootNode) 
    573573 
    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) 
    575581        if backup != newRootNode: 
    576582            c.updateRootNode(newRootNode, gameNumber) 
  • 05/devel/v.py

    r42 r63  
    4747 
    4848try: 
     49    print 'do not use sgfpars' 
     50    aaa 
    4951    from sgfpars import Node, Cursor, SGFError, SGFescape 
    5052except: 
     
    927929 
    928930        currentGame = cursor.currentGame 
    929  
     931         
    930932        try: 
    931933            node = cursor.getRootNode(currentGame) 
     
    933935         
    934936        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) 
    937940        else: t.append(' ?') 
    938         if node.has_key('WR'): 
     941 
     942        s1 = cursor.transcode('WR',node) 
     943        if s1: 
    939944            t.append(', ') 
    940             t.append(node['WR'][0]
     945            t.append(s1
    941946 
    942947        t.append(' - ') 
    943948 
    944         if node.has_key('PB'): t.append(node['PB'][0]) 
     949        s1 = cursor.transcode('PB',node) 
     950        if s1: t.append(s1) 
    945951        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 + ')') 
    951964 
    952965        t.append('\n') 
     
    956969        if node.has_key('DT'): t.append(node['DT'][0] + '\n') 
    957970 
    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) 
    966979 
    967980        self.gameinfo.config(state=NORMAL) 
     
    10351048 
    10361049 
     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 
    10371066    def updateTree(self, update=1): 
    10381067        self.SGFtreeCanv.canvas.delete('all') 
     
    10771106            s = '[' + `i` + '] ' 
    10781107 
     1108             
    10791109            d = n.getData() 
    1080             if d.has_key('PW'): s += d['PW'][0] 
     1110            s += self.transcode('PW',n) 
    10811111            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 + ')' 
    10841115 
    10851116            self.mster.dataWindow.gamelist.insert(END, s) 
     
    13531384        try: 
    13541385 
    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') 
    13591388            self.master.title(pw + ' - ' + pb) 
    13601389 
     
    18831912        self.comments.delete('1.0', END) 
    18841913        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', '')) 
    18861915 
    18871916        for type in ['CR', 'MA', 'SQ', 'TR']: 
     
    22732302        if not self.cursor: return 
    22742303 
    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') 
    22762312        changed = 0 
    22772313 
     
    24062442        if not f: return 
    24072443        try: 
    2408             sgf_out = self.cursor.output() 
     2444            sgf_out = self.cursor.output()  
    24092445            file = open(f, 'w') 
    24102446            file.write(sgf_out) 
     
    25322568            self.gameinfoDict[key] = [self.gameinfoVars[key].get()] 
    25332569           
    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))] 
    25362571 
    25372572        for key in keylist + ['GC']: 
     
    25412576        s = self.gameinfoOthersText.get('1.0', END) 
    25422577        try: 
    2543             d = Cursor(('(;' + s + ')').encode('utf-8', 'ignore'),1).getRootNode(0) 
     2578            d = Cursor(('(;' + s + ')'),1).getRootNode(0) 
    25442579            for k in d.keys(): 
    25452580                self.gameinfoDict[k] = d[k] 
     
    25522587            showwarning('SGF Error', "Parse error in 'Other SGF tags'") 
    25532588        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             
    25542600            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): 
    25582614        """ Open window with the game info of the current game.""" 
    25592615 
     2616        if encoding is None: encoding = self.cursor.encoding 
    25602617        if not data and not self.cursor: 
    25612618            return 
     
    25752632        self.gameinfoWindow = window 
    25762633        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' 
    25772644         
    25782645        keylist = ['GC', 'PB', 'BR', 'PW', 'WR', 'EV', 'RE', 'DT', 'KM'] 
     
    26222689        self.gameinfoOthersText.insert(END, self.gameinfoVars['others'].get()) 
    26232690         
    2624         Button(window, text='Cancel', command = window.destroy).pack(side=RIGHT) 
     2691        Button(window, text='Cancel', command = self.gameinfoCancel).pack(side=RIGHT) 
    26252692        Button(window, text="OK", command = self.gameinfoOK).pack(side=RIGHT) 
    26262693         
     
    26372704 
    26382705            d = self.gameinfoDict 
    2639             if d.has_key('PW'): s += d['PW'][0] 
     2706            s += self.cursor.transcode('PW',d) 
    26402707            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) + ')' 
    26432710 
    26442711            self.dataWindow.gamelist.delete(self.cursor.currentGame)