Subversion Repositories HomeAutomation

Rev

Blame | Last modification | View Log | SVN | RSS feed

  1. #!/usr/bin/python
  2.  
  3. import sys
  4. import os
  5. #import curses
  6.  
  7. class Terminal:
  8.     def __init__( self ):
  9.         self.buffer = ""
  10.         self.init()
  11.  
  12.     def init( self ):
  13.         pass
  14.  
  15.     def lines( self ):
  16.         lines = (self.buffer + self.read()).split("\n")
  17.         self.buffer = lines[-1]
  18.         return lines[:-1]
  19.  
  20.     def read( self ):
  21.         return ""
  22.  
  23.     def write( self, text, attr=0 ):
  24.         pass
  25.  
  26.     def prompt( self, text ):
  27.         pass
  28.  
  29.     def fileno_in( self ):
  30.         return 0
  31.     def fileno_out( self ):
  32.         return 1
  33.  
  34.     def close( self ):
  35.         pass
  36.  
  37.  
  38. class TerminalStd( Terminal ):
  39.     def init( self ):
  40.         self.stdin = sys.stdin.fileno()
  41.         self.stdout = sys.stdout.fileno()
  42.  
  43.     def read( self ):
  44.         return os.read( self.stdin, 8192 )
  45.  
  46.     def write( self, text, attr=0 ):
  47.         os.write( self.stdout, "%s\n" % (text,) )
  48.  
  49.     def prompt( self, text ):
  50.         os.write( self.stdout, text )
  51.  
  52.     def fileno_in( self ):
  53.         return self.stdin
  54.  
  55.     def fileno_out( self ):
  56.         return self.stdout
  57.  
  58. #class TerminalCurses( Terminal ):
  59. #    def init( self ):
  60. #        self.stdin = 0
  61. #        self.stdout = 1
  62. #
  63. #        self.linebuffer = [""]
  64. #
  65. #        self.stdscr = curses.initscr()
  66. #        self.height, self.width = self.stdscr.getmaxyx()
  67. #        self.input = self.stdscr.subwin( self.height-1, 0 )
  68. #        self.output = self.stdscr.subwin( self.height-1, self.width, 0, 0 )
  69. #
  70. #    def read( self ):
  71. #        return self.input.getstr()
  72. #
  73. #    def write( self, text, attr=0 ):
  74. #        self.linebuffer += [text]
  75. #        y=0
  76. #        lines = self.linebuffer[-self.height:]
  77. #        for line in lines:
  78. #            self.output.addstr( y, 0, line )
  79. #            y+=1
  80. #        self.output.refresh()
  81. #
  82. #    def fileno_io( self ):
  83. #        return self.stdin
  84. #
  85. #    def fileno_out( self ):
  86. #        return self.stdout
  87. #
  88. #    def close( self ):
  89. #        self.stdscr.keypad(0)
  90. #        curses.nocbreak()
  91. #        curses.echo()
  92. #        curses.endwin()
  93. #
  94. #    def prompt( self, text ):
  95. #        pass
  96.