Example #1
0
    def connectionMade(self):
        TerminalProtocol.connectionMade(self)
        self.terminal.eraseDisplay()
        self.terminal.resetPrivateModes([privateModes.CURSOR_MODE])

        self.window = TopWindow(self._draw, self._schedule)
        vbox = VBox()

        self.logWidget = OutputWidget()
        vbox.addChild(self.logWidget)

        logHandler = logging.StreamHandler(OutputLogStream(self.logWidget))
        #make it use the default formatter
        logHandler.setFormatter(logging.Formatter(logging.BASIC_FORMAT))
        logging.getLogger().addHandler(logHandler)

        vbox.addChild(SeperatorWidget())

        #TODO: factory stuff
        self.manhole = Manhole()
        self.manholeView = TerminalProtocolWidget(self.manhole)
        #set the namespace directly so it's mutable
        if self.manholeNamespace is not None:
            self.manhole.interpreter.locals = self.manholeNamespace
        vbox.addChild(self.manholeView)

        self.window.addChild(vbox)
Example #2
0
    def _makeWindow(self):
        buttons = VBox()
        for button in self._appButtons():
            buttons.addChild(Border(button))
        buttons.addChild(Border(self._logoffButton()))

        from twisted.internet import reactor
        window = TopWindow(self._draw, lambda f: reactor.callLater(0, f))
        window.addChild(Border(buttons))
        return window
Example #3
0
    def _makeWindow(self):
        buttons = VBox()
        for button in self._appButtons():
            buttons.addChild(Border(button))
        buttons.addChild(Border(self._logoffButton()))

        from twisted.internet import reactor
        window = TopWindow(self._draw, lambda f: reactor.callLater(0, f))
        window.addChild(Border(buttons))
        return window
Example #4
0
 def mkWidgets(self):
     def _schedule(f):
         self.reactor.callLater(0, f)
     root = TopWindow(self._painter, _schedule)
     root.reactor = self.reactor
     vbox = VBox()
     vbox.addChild(OutputWidget())
     vbox.addChild(InputWidget(self.width - 2, self.parseInputLine))
     root.addChild(vbox)
     return root
Example #5
0
def createChatRootWidget(reactor, width, height, painter, statusModel, controller):
    def _schedule(f):
        reactor.callLater(0, f)
    root = TopWindow(painter, _schedule)
    root.reactor = reactor
    vbox = VBox()
    vbox.addChild(OutputWidget())
    vbox.addChild(StatusWidget(statusModel))
    vbox.addChild(LineInputWidget(width, controller))
    root.addChild(vbox)
    return root
    def test_paintScheduling(self):
        """
        Verify that L{TopWindow.repaint} schedules an actual paint to occur
        using the scheduling object passed to its initializer.
        """
        paints = []
        scheduled = []
        root = TopWindow(lambda: paints.append(None), scheduled.append)

        # Nothing should have happened yet.
        self.assertEqual(paints, [])
        self.assertEqual(scheduled, [])

        # Cause a paint to be scheduled.
        root.repaint()
        self.assertEqual(paints, [])
        self.assertEqual(len(scheduled), 1)

        # Do another one to verify nothing else happens as long as the previous
        # one is still pending.
        root.repaint()
        self.assertEqual(paints, [])
        self.assertEqual(len(scheduled), 1)

        # Run the actual paint call.
        scheduled.pop()()
        self.assertEqual(len(paints), 1)
        self.assertEqual(scheduled, [])

        # Do one more to verify that now that the previous one is finished
        # future paints will succeed.
        root.repaint()
        self.assertEqual(len(paints), 1)
        self.assertEqual(len(scheduled), 1)
Example #7
0
class BotInterface(TerminalProtocol):
    width = 80
    height = 24

    def __init__(self, manholeNamespace=None):
        self.manholeNamespace = manholeNamespace

    def _draw(self):
        self.window.draw(self.width, self.height, self.terminal)

    def _schedule(self, f):
        reactor.callLater(0, f)

    def connectionMade(self):
        TerminalProtocol.connectionMade(self)
        self.terminal.eraseDisplay()
        self.terminal.resetPrivateModes([privateModes.CURSOR_MODE])

        self.window = TopWindow(self._draw, self._schedule)
        vbox = VBox()

        self.logWidget = OutputWidget()
        vbox.addChild(self.logWidget)

        logHandler = logging.StreamHandler(OutputLogStream(self.logWidget))
        #make it use the default formatter
        logHandler.setFormatter(logging.Formatter(logging.BASIC_FORMAT))
        logging.getLogger().addHandler(logHandler)

        vbox.addChild(SeperatorWidget())

        #TODO: factory stuff
        self.manhole = Manhole()
        self.manholeView = TerminalProtocolWidget(self.manhole)
        #set the namespace directly so it's mutable
        if self.manholeNamespace is not None:
            self.manhole.interpreter.locals = self.manholeNamespace
        vbox.addChild(self.manholeView)

        self.window.addChild(vbox)

    def keystrokeReceived(self, keyID, modifier):
        self.window.keystrokeReceived(keyID, modifier)

    def terminalSize(self, width, height):
        self.width = width
        self.height = height
        self._draw()
Example #8
0
class BotInterface(TerminalProtocol):
    width = 80
    height = 24

    def __init__(self, manholeNamespace=None):
        self.manholeNamespace = manholeNamespace

    def _draw(self):
        self.window.draw(self.width, self.height, self.terminal)

    def _schedule(self, f):
        reactor.callLater(0, f)

    def connectionMade(self):
        TerminalProtocol.connectionMade(self)
        self.terminal.eraseDisplay()
        self.terminal.resetPrivateModes([privateModes.CURSOR_MODE])

        self.window = TopWindow(self._draw, self._schedule)
        vbox = VBox()

        self.logWidget = OutputWidget()
        vbox.addChild(self.logWidget)

        logHandler = logging.StreamHandler(OutputLogStream(self.logWidget))
        # make it use the default formatter
        logHandler.setFormatter(logging.Formatter(logging.BASIC_FORMAT))
        logging.getLogger().addHandler(logHandler)

        vbox.addChild(SeperatorWidget())

        # TODO: factory stuff
        self.manhole = Manhole()
        self.manholeView = TerminalProtocolWidget(self.manhole)
        # set the namespace directly so it's mutable
        if self.manholeNamespace is not None:
            self.manhole.interpreter.locals = self.manholeNamespace
        vbox.addChild(self.manholeView)

        self.window.addChild(vbox)

    def keystrokeReceived(self, keyID, modifier):
        self.window.keystrokeReceived(keyID, modifier)

    def terminalSize(self, width, height):
        self.width = width
        self.height = height
        self._draw()
Example #9
0
 def connectionMade(self):
     TerminalProtocol.connectionMade(self)
     self.terminal.eraseDisplay()
     self.terminal.resetPrivateModes([privateModes.CURSOR_MODE])
     
     self.window = TopWindow(self._draw, self._schedule)
     vbox = VBox()
     
     self.logWidget = OutputWidget()
     vbox.addChild(self.logWidget)
     
     logHandler = logging.StreamHandler(OutputLogStream(self.logWidget))
     #make it use the default formatter
     logHandler.setFormatter(logging.Formatter(logging.BASIC_FORMAT))
     logging.getLogger().addHandler(logHandler)
     
     vbox.addChild(SeperatorWidget())
     
     #TODO: factory stuff
     self.manhole = Manhole()
     self.manholeView = TerminalProtocolWidget(self.manhole)
     #set the namespace directly so it's mutable
     if self.manholeNamespace is not None:
         self.manhole.interpreter.locals = self.manholeNamespace
     vbox.addChild(self.manholeView)
     
     self.window.addChild(vbox)
Example #10
0
    def test_paintScheduling(self):
        """
        Verify that L{TopWindow.repaint} schedules an actual paint to occur
        using the scheduling object passed to its initializer.
        """
        paints = []
        scheduled = []
        root = TopWindow(lambda: paints.append(None), scheduled.append)

        # Nothing should have happened yet.
        self.assertEqual(paints, [])
        self.assertEqual(scheduled, [])

        # Cause a paint to be scheduled.
        root.repaint()
        self.assertEqual(paints, [])
        self.assertEqual(len(scheduled), 1)

        # Do another one to verify nothing else happens as long as the previous
        # one is still pending.
        root.repaint()
        self.assertEqual(paints, [])
        self.assertEqual(len(scheduled), 1)

        # Run the actual paint call.
        scheduled.pop()()
        self.assertEqual(len(paints), 1)
        self.assertEqual(scheduled, [])

        # Do one more to verify that now that the previous one is finished
        # future paints will succeed.
        root.repaint()
        self.assertEqual(len(paints), 1)
        self.assertEqual(len(scheduled), 1)