1*061da546Spatrick#!/usr/bin/env python 2*061da546Spatrick##===-- sandbox.py -------------------------------------------*- Python -*-===## 3*061da546Spatrick## 4*061da546Spatrick# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5*061da546Spatrick# See https://llvm.org/LICENSE.txt for license information. 6*061da546Spatrick# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7*061da546Spatrick## 8*061da546Spatrick##===----------------------------------------------------------------------===## 9*061da546Spatrick 10*061da546Spatrick 11*061da546Spatrickimport curses 12*061da546Spatrick 13*061da546Spatrickimport os 14*061da546Spatrickimport signal 15*061da546Spatrickimport sys 16*061da546Spatrick 17*061da546Spatricktry: 18*061da546Spatrick import queue 19*061da546Spatrickexcept ImportError: 20*061da546Spatrick import Queue as queue 21*061da546Spatrick 22*061da546Spatrickimport cui 23*061da546Spatrick 24*061da546Spatrickevent_queue = None 25*061da546Spatrick 26*061da546Spatrick 27*061da546Spatrickclass SandboxUI(cui.CursesUI): 28*061da546Spatrick 29*061da546Spatrick def __init__(self, screen, event_queue): 30*061da546Spatrick super(SandboxUI, self).__init__(screen, event_queue) 31*061da546Spatrick 32*061da546Spatrick height, width = self.screen.getmaxyx() 33*061da546Spatrick w2 = width / 2 34*061da546Spatrick h2 = height / 2 35*061da546Spatrick 36*061da546Spatrick self.wins = [] 37*061da546Spatrick #self.wins.append(cui.TitledWin(w2, h2, w2, h2, "Test Window 4")) 38*061da546Spatrick list_win = cui.ListWin(w2, h2, w2, h2) 39*061da546Spatrick for i in range(0, 40): 40*061da546Spatrick list_win.addItem('Item %s' % i) 41*061da546Spatrick self.wins.append(list_win) 42*061da546Spatrick self.wins.append(cui.TitledWin(0, 0, w2, h2, "Test Window 1")) 43*061da546Spatrick self.wins.append(cui.TitledWin(w2, 0, w2, h2, "Test Window 2")) 44*061da546Spatrick self.wins.append(cui.TitledWin(0, h2, w2, h2, "Test Window 3")) 45*061da546Spatrick 46*061da546Spatrick # def callback(s, content): 47*061da546Spatrick # self.wins[0].win.scroll(1) 48*061da546Spatrick # self.wins[0].win.addstr(10, 0, '%s: %s' % (s, content)) 49*061da546Spatrick # self.wins[0].win.scroll(1) 50*061da546Spatrick # self.el.showPrompt(10, 0) 51*061da546Spatrick 52*061da546Spatrick # self.wins[0].win.scrollok(1) 53*061da546Spatrick # self.el = cui.CursesEditLine(self.wins[0].win, None, 54*061da546Spatrick # lambda c: callback('got', c), lambda c: callback('tab', c)) 55*061da546Spatrick #self.el.prompt = '>>> ' 56*061da546Spatrick #self.el.showPrompt(10, 0) 57*061da546Spatrick 58*061da546Spatrick def handleEvent(self, event): 59*061da546Spatrick if isinstance(event, int): 60*061da546Spatrick if event == ord('q'): 61*061da546Spatrick sys.exit(0) 62*061da546Spatrick # self.el.handleEvent(event) 63*061da546Spatrick super(SandboxUI, self).handleEvent(event) 64*061da546Spatrick 65*061da546Spatrick 66*061da546Spatrickdef main(screen): 67*061da546Spatrick global event_queue 68*061da546Spatrick event_queue = queue.Queue() 69*061da546Spatrick 70*061da546Spatrick sandbox = SandboxUI(screen, event_queue) 71*061da546Spatrick sandbox.eventLoop() 72*061da546Spatrick 73*061da546Spatrickif __name__ == "__main__": 74*061da546Spatrick try: 75*061da546Spatrick curses.wrapper(main) 76*061da546Spatrick except KeyboardInterrupt: 77*061da546Spatrick exit() 78