xref: /openbsd-src/gnu/llvm/lldb/utils/lui/sandbox.py (revision 061da546b983eb767bad15e67af1174fb0bcf31c)
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