Changeset 116

Show
Ignore:
Timestamp:
03/22/04 21:15:31 (4 years ago)
Author:
ug
Message:

Various encodings fixes

Files:

Legend:

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

    r114 r116  
    44##   Copyright (C) 2001-4 Ulrich Goertz (u@g0ertz.de) 
    55 
    6 ##   Kombilo 0.5j is a go database program. 
     6##   Kombilo 0.5k is a go database program. 
    77 
    88##   This program is free software; you can redistribute it and/or modify 
     
    3737    t.pack() 
    3838 
    39     t.insert(END, 'Kombilo 0.5j\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, ' + \ 
    4040             'so you have to install it before you can use Kombilo. See the Kombilo tutorial at ' + \ 
    4141             'http://www.u-go.net/kombilo/tutorial#installation or the Pmw web site at ' + \ 
     
    597597            enc = '' 
    598598        newRootNode = self.mster.gameinfo(rootNode, enc) 
    599         if backup != newRootNode: 
     599        if (not newRootNode is None) and backup != newRootNode: 
    600600            c.updateRootNode(newRootNode, gameNumber) 
    601601            try: 
     
    40264026        self.statistics = {} 
    40274027 
    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') 
    40324032        frVar = self.frVar.get() 
    40334033        toVar = self.toVar.get() 
    4034         awVar = self.awVar.get() 
     4034        awVar = self.awVar.get().encode('utf-8') 
    40354035        refVar = self.referencedVar.get() 
    40364036 
     
    41324132                         
    41334133                        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 
    41344143                            sgf = lower(sgf) 
     4144                            if encoding != 'utf-8': 
     4145                                try: sgf = sgf.decode(encoding, 'ignore').encode('utf-8', 'ignore') 
     4146                                except: pass 
     4147                                 
    41354148                            if awVar and find(sgf, awVar) == -1: continue 
    41364149 
     
    41524165                                    showwarning('Error', 'SGF error in file ' + filename) 
    41534166                                    continue 
     4167                             
    41544168                            node = c.getRootNode(gameNumber) 
    41554169 
     4170                            encoding = c.encoding or db['encoding'] 
     4171                             
    41564172                            ok = 1 
    41574173                            for var,tag in [(evVar,'EV')]: 
     4174                                try: var = var.decode('utf-8', 'ignore').encode(encoding, 'ignore') 
     4175                                except: pass 
    41584176                                if var and not (node.has_key(tag) and find(lower(node[tag][0]), var) != -1): 
    41594177                                    ok = 0 
     
    41614179 
    41624180                            if awVar: 
     4181                                try: awVar = awVar.decode('utf-8', 'ignore').encode(encoding, 'ignore') 
     4182                                except: pass 
    41634183                                c.game(gameNumber) 
    41644184                                s = lower(c.outputVar(c.currentN)) 
     
    42044224                        if gameNumber == -1:    
    42054225 
     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 
    42064238                            if awVar and find(sgf, awVar) == -1: continue 
    42074239 
     
    42244256                                 
    42254257                            node = c.getRootNode(gameNumber) 
     4258 
     4259                            encoding = c.encoding or db['encoding'] 
    42264260                             
    42274261                            ok = 1 
    42284262                            for var,tag in [(evVar,'EV')]: 
     4263                                try: var = var.decode('utf-8', 'ignore').encode(encoding, 'ignore') 
     4264                                except: pass 
    42294265                                if var and not (node.has_key(tag) and find(node[tag][0], var) != -1): 
    42304266                                    ok = 0 
     
    42324268 
    42334269                            if awVar: 
     4270                                try: awVar = awVar.decode('utf-8', 'ignore').encode(encoding, 'ignore') 
     4271                                except: pass 
    42344272                                c.game(gameNumber) 
    42354273                                s = c.outputVar(c.currentN) 
     
    51275165 
    51285166 
    5129     def openViewer_external(self, filename, gameNumber, moveno): 
     5167    def openViewer_external(self, filename, gameNumber, moveno, encoding = ''): 
    51305168        if self.options.altViewerVar1.get(): 
    51315169                 
     
    51675205            window.protocol('WM_DELETE_WINDOW', viewer.quit) 
    51685206 
    5169             apply(viewer.openFile, os.path.split(filename)
     5207            apply(viewer.openFile, os.path.split(filename) + (encoding,)
    51705208            viewer.changeCurrentFile(None, 1) 
    51715209            viewer.delFile() 
     
    51965234 
    51975235    def openViewer_internal(self, filename, gameNumber, moveno, encoding): 
     5236 
    51985237        apply(self.openFile, os.path.split(filename) + (encoding,)) 
    51995238 
     
    52295268        encoding = self.getEncoding(no, label) 
    52305269        if not self.options.externalViewer.get(): 
    5231             self.openViewer_external(filename, gameNumber, moveno
     5270            self.openViewer_external(filename, gameNumber, moveno, encoding
    52325271        else: 
    52335272            self.openViewer_internal(filename, gameNumber, moveno, encoding) 
     
    52405279        encoding = self.getEncoding(no, label) 
    52415280        if self.options.externalViewer.get(): 
    5242             self.openViewer_external(filename, gameNumber, moveno)            
     5281            self.openViewer_external(filename, gameNumber, moveno, encoding)            
    52435282        else: # don't open external viewer 
    52445283            self.openViewer_internal(filename, gameNumber, moveno, encoding) 
     
    59616000        t = [] 
    59626001         
    5963         t.append('Kombilo 0.5j - written by Ulrich Goertz (u@g0ertz.de)\n\n') 
     6002        t.append('Kombilo 0.5k - written by Ulrich Goertz (u@g0ertz.de)\n\n') 
    59646003        t.append('Kombilo is a go database program.\n') 
    59656004        t.append('You can find more information on Kombilo and the newest ') 
  • 05/devel/v.py

    r114 r116  
    962962        t.append('\n') 
    963963 
    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') 
    967967 
    968968        s1 = cursor.transcode('GC',node) 
     
    25912591        keylist = ['PB', 'BR', 'PW', 'WR', 'EV', 'RE', 'DT', 'KM'] 
    25922592        for key in keylist: 
    2593             self.gameinfoDict[key] = [self.gameinfoVars[key].get()
     2593            self.gameinfoDict[key] = [self.gameinfoVars[key].get().encode(self.gameinfoDictencoding, 'ignore')
    25942594           
    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')
    25962596 
    25972597        for key in keylist + ['GC']: 
     
    25992599                del self.gameinfoDict[key] 
    26002600 
    2601         s = self.gameinfoOthersText.get('1.0', END) 
     2601        s = self.gameinfoOthersText.get('1.0', END).encode(self.gameinfoDictencoding, 'ignore') 
    26022602        try: 
    26032603            d = Cursor(('(;' + s + ')'),1).getRootNode(0) 
     
    26122612            showwarning('SGF Error', "Parse error in 'Other SGF tags'") 
    26132613        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()             
    26252615            self.gameinfoWindow.destroy() 
    26262616 
    26272617         
    26282618    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 
    26352620        self.gameinfoWindow.destroy() 
    26362621 
     
    26392624        """ Open window with the game info of the current game.""" 
    26402625 
    2641         if encoding == '': encoding = self.cursor.encoding 
    2642         # FIXME: sollte dies nicht sein: if self.cursor.encoding: encoding = self.cursor.encoding ? 
    2643          
    26442626        if not data and not self.cursor: 
    26452627            return 
     
    26502632                showwarning('Error', 'SGF Error') 
    26512633                return 
     2634            encoding = self.cursor.encoding 
    26522635            self.returnChanges = 0 
    26532636        else: 
     
    26652648            for k in self.gameinfoDict.keys(): 
    26662649                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]] 
    26682652                except: 
    26692653                    pass 
     
    27272711        if self.returnChanges: 
    27282712            return self.gameinfoDict 
    2729         else: 
     2713        elif not self.gameinfoDict is None: 
    27302714            self.cursor.updateRootNode(self.gameinfoDict, self.cursor.currentGame) 
    27312715            s = '[' + `self.cursor.currentGame` + '] '