from buffer import Buffer, ACT_NORM
from buffer.colors import ColorDataBuffer

# console is another singleton
console = None
class ConsoleBuffer(Buffer):
    btype       = 'console'
    #modename   = 'ipython'
    modename   = 'console'
    bannerlines = [
        '# Python Console\n',
        "# Evaluate python expressions in the editor's context (self)\n",
        '# Press Control-] to exit\n',
    ]
    banner = ''.join(bannerlines)
    def __new__(cls, *args, **kwargs):
        global console
        if console is None:
            b = object.__new__(ConsoleBuffer, *args, **kwargs)
            console = b
        return console
    def __init__(self):
        Buffer.__init__(self)
        self.set_data(self.banner, force=True)

    def clear(self): console.set_data(self.banner, force=True)
    def name(self): return '*Console*'
    def changed(self): return False
    def close(self): global console; console = None
    def readonly(self): return True