Changeset 8090

Show
Ignore:
Timestamp:
03/18/08 21:05:43 (5 years ago)
Author:
nishio
Message:

Mac対応。Growlがあれば使う

Location:
lang/python/coda/trunk/coda
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/python/coda/trunk/coda/_output.py

    r1485 r8090  
    99        print exc 
    1010 
    11 _default_printer = DefaultPrinter() 
    1211 
    1312class DefaultRecursivePrinter(DefaultPrinter): 
     
    3231 
    3332class VoicePrinter(DefaultRecursivePrinter): 
    34     "output errors with voice" 
     33    "output errors with voice. Windows only" 
    3534    def __init__(self): 
    3635        DefaultRecursivePrinter.__init__(self) 
     
    9089            winsound.PlaySound(*args) 
    9190             
    92              
     91class GrowlPrinter(DefaultRecursivePrinter): 
     92    """Using Growl. Mac only. 
     93    You need to install Grawl Python Bindings from Grawl SDK. 
     94    """ 
    9395 
    94      
     96    def __init__(self): 
     97        DefaultRecursivePrinter.__init__(self) 
     98        import Growl 
     99        g = Growl.GrowlNotifier( 
     100            applicationName='FindNameError',  
     101            notifications=['FindNameError', 'NameError']) 
     102        g.register() 
     103        self.notify = lambda noteType, desc: g.notify(noteType, noteType, desc) 
     104 
     105    def start_file(self): 
     106        self.errors = [] 
     107         
     108    def end_file(self): 
     109        if self.errors: # is not empty 
     110            for e in self.errors: 
     111                self.notify("NameError", "line %s: %s" % e) 
     112 
     113    def __call__(self, line_no, argstr): 
     114        import os 
     115        DefaultRecursivePrinter.__call__(self, line_no, argstr) 
     116        self.errors.append((line_no, argstr)) 
     117 
     118 
     119import os 
     120if os.name == "nt": 
     121    default_printer = SoundPrinter() 
     122else: 
     123    try: 
     124        default_printer = GrowlPrinter() 
     125        print "growl" 
     126    except: 
     127        default_printer = DefaultRecursivePrinter() 
  • lang/python/coda/trunk/coda/find_name_error.py

    r1485 r8090  
     1#!/usr/bin/python 
     2 
    13import types 
    24 
     
    911_default_stored.add(None) # special value for class definition 
    1012 
    11 from _output import _default_printer 
     13from _output import DefaultPrinter 
    1214 
    13 def find_name_error(o, stored=_default_stored, printer=_default_printer): 
     15def find_name_error(o, stored=_default_stored, printer=DefaultPrinter()): 
    1416    """Find possibility of NameError 
    1517 
     
    4749 
    4850    except Exception, e: 
     51#        raise e 
    4952        printer.handle_exception(e) 
     53def foo(): 
     54    a 
     55    b 
     56    c 
     57 
    5058 
    5159def recursive(dirname): 
    5260    import os 
    53     from _output import SoundPrinter 
    54     p = SoundPrinter() 
     61    from _output import default_printer as p 
    5562     
    5663    for (dp, dn, fns) in os.walk(dirname): 
     
    6875def watch(targets): 
    6976    import os, time 
    70     from _output import SoundPrinter 
    71     p = SoundPrinter() 
     77    from _output import default_printer as p 
    7278    def get_mtime(filename): 
    7379        return os.stat(filename).st_mtime