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)
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 _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