~exarkun/python-tvi955/trunk

« back to all changes in this revision

Viewing changes to tvi955.py

  • Committer: Jean-Paul Calderone
  • Date: 2009-01-26 16:25:26 UTC
  • Revision ID: exarkun@divmod.com-20090126162526-2qyhiz3q4t7toooe
setCursorStyle, eraseToPageEnd, clearAllToNull

Show diffs side-by-side

added added

removed removed

Lines of Context:
491
491
 
492
492
    @ivar cursor: A three-tuple of the page, row, and column at which the
493
493
        cursor is currently positioned.
 
494
 
 
495
    @ivar modes: A dict mapping mode identifiers to their current setting.  See
 
496
        L{ITVI955Terminal.setMode} for details.
 
497
 
 
498
    @ivar replacementCharacter: The character which will be be used by any of
 
499
        the erase functions if the mode is L{REPLACEMENT}.
494
500
    """
495
501
    implements(ITVI955Terminal)
496
502
 
497
503
    def makeConnection(self, computer):
498
504
        self.computer = computer
499
505
        self.cursor = (0, 0, 0)
 
506
        self.modes = {}
 
507
        # XXX I can't figure out what the default replacement character is
 
508
        # supposed to be.
 
509
        self.replacementCharacter = ' '
 
510
        self._initializeCharacters()
 
511
 
 
512
 
 
513
    def _initializeCharacters(self):
500
514
        self._characters = [['\0'] * 80 for i in range(24)]
501
515
 
502
516
 
516
530
        self.cursor = (page, row, column)
517
531
 
518
532
 
 
533
    def setCursorStyle(self, style):
 
534
        self.cursorStyle = style
 
535
 
 
536
 
 
537
    def clearAllToNull(self):
 
538
        self.cursor = (0, 0, 0)
 
539
        self.modes[PROTECT_MODE] = False
 
540
        self.modes[WRITE_PROTECT_MODE] = False
 
541
        self._initializeCharacters()
 
542
 
 
543
 
519
544
    def eraseToLineEnd(self, mode):
520
545
        page, row, col = self.cursor
521
546
        if mode == REPLACEMENT:
522
547
            replacement = self.replacementCharacter * (80 - col)
523
548
            self._characters[row][col:] = replacement
524
549
 
 
550
 
 
551
    def eraseToPageEnd(self, mode):
 
552
        page, row, col = self.cursor
 
553
        self.eraseToLineEnd(mode)
 
554
        if mode == REPLACEMENT:
 
555
            replacement = self.replacementCharacter * 80
 
556
            for row in self._characters[row + 1:]:
 
557
                row[:] = replacement
 
558
 
 
559
 
525
560
    def blockGraphics(self, width, height):
526
561
        pass
527
562