Ejemplo n.º 1
0
Archivo: t.py Proyecto: int3l/explains
def c_main(stdscr: curses._CursesWindow) -> int:
    curses.mousemask(-1)
    curses.mouseinterval(0)

    pressed = False
    x, y = 0, 0

    stdscr.addstr('hello hello world')

    while True:
        stdscr.erase()
        stdscr.addstr('click anywhere!')
        if pressed:
            for y in range(y - 1, y + 2):
                stdscr.addstr(y, x - 1, 'XXX')

        c = stdscr.get_wch()
        if c == 'q':
            return 0
        elif c == curses.KEY_MOUSE:
            _, x, y, _, bstate = curses.getmouse()
            if bstate & curses.BUTTON1_PRESSED:
                pressed = True
            elif bstate & curses.BUTTON1_RELEASED:
                pressed = False
        else:
            raise AssertionError(c)
Ejemplo n.º 2
0
 def setup_mouse(self):
     # Mouse support
     curses.mouseinterval(10)
     if self.app.config["editor"]["use_mouse"]:
         curses.mousemask(-1) # All events
     else:
         curses.mousemask(0) # All events
Ejemplo n.º 3
0
 def setup_mouse(self):
     # Mouse support
     curses.mouseinterval(10)
     if self.app.config["editor"]["use_mouse"]:
         curses.mousemask(-1)  # All events
     else:
         curses.mousemask(0)  # All events
Ejemplo n.º 4
0
def _main():  # __main_
    """Program main function."""
    try:
        window = curses.initscr()       # Window object
        window.clear()                  # Erase and repaint on update
        availmask, oldmask = \
                curses.mousemask(curses.BUTTON1_PRESSED | 
                                 curses.BUTTON1_RELEASED)  # Record mouse evnts
        curses.mouseinterval(1)         # Max ms click interval
        curses.start_color()            # To use colors
        curses.use_default_colors()     # Default term colors eg transparency
        curses.meta(1)                  # 8b characters
        curses.noecho()                 # No auto echo keys to window
        curses.cbreak()                 # Don't wait for <Enter>
        window.keypad(1)                # Use special char values
        window.nodelay(1)               # Nonblocking getch/getstr
        window.timeout(0)               # Nonblocking gets, 0 in ms
        window.border()                 # Or box on edges
        window.leaveok(0)               # Virtual screen cursor after update
        curses.curs_set(0)              # Invisible curser
        window.scrollok(0)              # Cursor moves off page don't scroll
        window.bkgd(' ', 0)             # Set background char and attr
        example(window)
    finally:
        window.move(0, 0)
        curses.nocbreak()
        window.keypad(0)
        curses.echo()
        curses.endwin()
Ejemplo n.º 5
0
    def initialize(self):
        if Window.INSTANCE is not None:
            raise RuntimeError('Window already present.')

        Window.INSTANCE = self

        def init_color():
            for a in range(-1, 15):
                for b in range(-1, 15):
                    if a != -1 or b != -1:
                        _curses.init_pair(self._color(a, b), a, b)

        self._window = _curses.initscr()
        self._window.keypad(True)
        self._window.timeout(1000)
        _curses.noecho()
        _curses.cbreak()
        _curses.mouseinterval(1)
        _curses.mousemask(0 | _curses.BUTTON1_PRESSED
                          | _curses.BUTTON1_RELEASED)
        _curses.curs_set(0)

        try:
            _curses.start_color()
            _curses.use_default_colors()
            init_color()
        except _curses.error:
            pass
Ejemplo n.º 6
0
    def initcurse(self):
        
        # Check the terminal type.  If we fail, then assume that the
        # terminal has no capabilities.
        try: curses.setupterm()
        except: return
        
        #self.colors = cursescolors()
        
        self.cols = curses.tigetnum('cols')
        self.lines = curses.tigetnum('lines')
        self.wfilelines = self.lines-3

        self.w = curses.initscr()
        # fenetre                    hauteur          largeur    y             x
        self.wheader = curses.newwin(              1, self.cols,            0, 0)
        self.wfile   = curses.newwin(self.wfilelines, self.cols,            1, 0)
        self.wfooter = curses.newwin(              1, self.cols, self.lines-2, 0)
        self.wcmd    = curses.newwin(              1, self.cols, self.lines-1, 0)
        curses.noecho()
        curses.cbreak()
        curses.nonl() # permet d'activer la touche enter (code 13)
        curses.curs_set(0)
        curses.mousemask(0)
        curses.mouseinterval(0)
        self.w.keypad(1)
        self.w.nodelay(0)
        self.w.timeout(self.timeout)
        
        try:
            self.initcolors_1()
        except:
            self.initcolors_2()
Ejemplo n.º 7
0
Archivo: ui.py Proyecto: anmitsu/pyful
 def enable(cls, flag):
     if flag:
         attr = curses.BUTTON1_CLICKED | curses.BUTTON1_DOUBLE_CLICKED
         curses.mousemask(attr)
         curses.mouseinterval(200)
     else:
         curses.mousemask(0)
Ejemplo n.º 8
0
 def init(self):
     self.window = curses.initscr()
     self.initted = True
     self.ymax, self.xmax = self.window.getmaxyx()
     terminfo = curses.longname()
     assert '256' in terminfo  # your env TERM must be xterm-256color!
     assert curses.has_colors()
     curses.start_color()
     curses.use_default_colors()
     ctr = 1
     for fg in CLRS:
         for bg in CLRS:
             if ctr <= curses.COLORS-1 and fg != bg:
                 curses.init_pair(ctr, CLRS[fg], CLRS[bg])
                 pairs[(fg,bg)] = curses.color_pair(ctr)
                 ctr += 1
     curses.meta(1)
     curses.noecho()
     curses.cbreak()
     curses.curs_set(0)
     curses.delay_output(0)
     curses.mouseinterval(150)
     availmask,_ = curses.mousemask(curses.ALL_MOUSE_EVENTS)
     assert availmask != 0  # mouse must be available!
     self.window.leaveok(1)
     self.window.scrollok(0)
     self.window.keypad(1)
     if NONBLOCKING:
         self.window.nodelay(1)
         self.window.timeout(NONBLOCKING_TIMEOUT)
     else:
         self.window.nodelay(0)
         self.window.timeout(-1)
     self.window.refresh()
Ejemplo n.º 9
0
def main(window):
    curses.mousemask(curses.ALL_MOUSE_EVENTS)
    curses.mouseinterval(0)
    while True:
        char = window.getch()
        if char == curses.KEY_MOUSE:
            window.addstr(repr(curses.getmouse()) + SEPARATOR)
        else:
            window.addstr(str(char) + SEPARATOR)
Ejemplo n.º 10
0
def main(window):
    curses.mousemask(curses.ALL_MOUSE_EVENTS)
    curses.mouseinterval(0)
    while True:
        char = window.getch()
        if char == curses.KEY_MOUSE:
            window.addstr(repr(curses.getmouse()) + SEPARATOR)
        else:
            window.addstr(str(char) + SEPARATOR)
Ejemplo n.º 11
0
Archivo: hex.py Proyecto: quo/hex.py
			def wrapped(scr):
				curses.use_default_colors()
				curses.mousemask(curses.ALL_MOUSE_EVENTS)
				curses.mouseinterval(0)
				curses.curs_set(2) # solid block cursor
				scr.idlok(True)
				curses.def_prog_mode()
				i = HexInterface(scr)
				i.set_file(hf)
				i.main_loop()
Ejemplo n.º 12
0
def setupcolors(stdscr, f, *args):
    curses.raw()  # get control keys instead of signals
    curses.meta(1)  # allow "8-bit chars"
    curses.mousemask(-1)  # even more than curses.ALL_MOUSE_EVENTS
    curses.mouseinterval(0)  # very snappy but does not allow for [multi]click
    curses.mouseEvents = {}

    for k in dir(curses):
        if k.startswith('BUTTON') or k == 'REPORT_MOUSE_POSITION':
            curses.mouseEvents[getattr(curses, k)] = k

    return f(stdscr, *args)
Ejemplo n.º 13
0
 def setCurses(self):
     self.scr.refresh()
     curses.start_color()
     curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK)
     curses.init_pair(3, curses.COLOR_GREEN, curses.COLOR_BLACK)
     curses.init_pair(6, curses.COLOR_BLUE, curses.COLOR_BLACK)
     curses.init_pair(2, curses.COLOR_CYAN, curses.COLOR_BLACK)
     curses.init_pair(4, curses.COLOR_YELLOW, curses.COLOR_BLACK)
     curses.init_pair(5, curses.COLOR_MAGENTA, curses.COLOR_BLACK)
     curses.init_pair(7, curses.COLOR_RED, curses.COLOR_BLACK)
     curses.mousemask(-1)
     curses.mouseinterval(0)
     curses.curs_set(0)
Ejemplo n.º 14
0
def c_main(stdscr: curses._CursesWindow) -> int:
    curses.mousemask(-1)
    curses.mouseinterval(0)

    stdscr.addstr('hello hello world')

    while True:
        c = stdscr.get_wch()
        if c == 'q':
            return 0
        elif c == curses.KEY_MOUSE:
            stdscr.addstr(1, 0, 'mouse event')
        else:
            raise AssertionError(c)
Ejemplo n.º 15
0
def CuInit(screen):
    #screen = curses.initscr()
    #curses.noecho()
    curses.curs_set(0)
    screen.keypad(1)
    curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION)
    curses.mouseinterval(0)

    GLBL['maxY'], GLBL['maxX'] = screen.getmaxyx()
    #printf("\033[?1003h\n"); // Makes the terminal report mouse movement events
    #print('\033[?1000h')
    #print('\033[?1001h')
    #print('\033[?1002h')
    print('\033[?1003h')
Ejemplo n.º 16
0
def _setup_mouse(signal):
    if signal['value']:
        curses.mousemask(MOUSEMASK)
        curses.mouseinterval(0)

        ## this line solves this problem:
        ## If an action, following a mouse click, includes the
        ## suspension and re-initializion of the ui (e.g. running a
        ## file by clicking on its preview) and the next key is another
        ## mouse click, the bstate of this mouse event will be invalid.
        ## (atm, invalid bstates are recognized as scroll-down)
        curses.ungetmouse(0,0,0,0,0)
    else:
        curses.mousemask(0)
Ejemplo n.º 17
0
def _setup_mouse(signal):
    if signal['value']:
        curses.mousemask(MOUSEMASK)
        curses.mouseinterval(0)

        ## this line solves this problem:
        ## If a mouse click triggers an action that disables curses and
        ## starts curses again, (e.g. running a ## file by clicking on its
        ## preview) and the next key is another mouse click, the bstate of this
        ## mouse event will be invalid.  (atm, invalid bstates are recognized
        ## as scroll-down, so this avoids an errorneous scroll-down action)
        curses.ungetmouse(0, 0, 0, 0, 0)
    else:
        curses.mousemask(0)
Ejemplo n.º 18
0
def _setup_mouse(signal):
    if signal['value']:
        curses.mousemask(MOUSEMASK)
        curses.mouseinterval(0)

        # This line solves this problem:
        # If a mouse click triggers an action that disables curses and
        # starts curses again, (e.g. running a ## file by clicking on its
        # preview) and the next key is another mouse click, the bstate of this
        # mouse event will be invalid.  (atm, invalid bstates are recognized
        # as scroll-down, so this avoids an errorneous scroll-down action)
        curses.ungetmouse(0, 0, 0, 0, 0)
    else:
        curses.mousemask(0)
Ejemplo n.º 19
0
 def __init__(self, cursesScreen):
     self.debugMouseEvent = (0, 0, 0, 0, 0)
     self.exiting = False
     self.cursesScreen = cursesScreen
     self.ch = 0
     curses.mousemask(-1)
     curses.mouseinterval(0)
     # Enable mouse tracking in xterm.
     sys.stdout.write('\033[?1002;h')
     #sys.stdout.write('\033[?1005;h')
     curses.meta(1)
     # Access ^c before shell does.
     curses.raw()
     # Enable Bracketed Paste Mode.
     sys.stdout.write('\033[?2004;h')
     # Push the escape codes out to the terminal. (Whether this is needed seems
     # to vary by platform).
     sys.stdout.flush()
     try:
         curses.start_color()
         if not curses.has_colors():
             userMessage("This terminal does not support color.")
             self.quitNow()
         else:
             curses.use_default_colors()
     except curses.error as e:
         app.log.error(e)
     app.log.startup(u"curses.COLORS", curses.COLORS)
     if 0:
         assert curses.COLORS == 256
         assert curses.can_change_color() == 1
         assert curses.has_colors() == 1
         app.log.detail("color_content:")
         for i in range(0, curses.COLORS):
             app.log.detail("color", i, ": ", curses.color_content(i))
         for i in range(16, curses.COLORS):
             curses.init_color(i, 500, 500, i * 787 % 1000)
         app.log.detail("color_content, after:")
         for i in range(0, curses.COLORS):
             app.log.detail("color", i, ": ", curses.color_content(i))
     if 1:
         #rows, cols = self.cursesScreen.getmaxyx()
         cursesWindow = self.cursesScreen
         cursesWindow.leaveok(1)  # Don't update cursor position.
         cursesWindow.scrollok(0)
         cursesWindow.timeout(10)
         cursesWindow.keypad(1)
         app.window.mainCursesWindow = cursesWindow
     self.zOrder = []
Ejemplo n.º 20
0
 def __init__(self, cursesScreen):
     self.clicks = 0
     self.debugMouseEvent = (0, 0, 0, 0, 0)
     self.exiting = False
     self.modalUi = None
     self.modeStack = []
     self.priorClick = 0
     self.savedMouseButton1Down = False
     self.savedMouseWindow = None
     self.savedMouseX = -1
     self.savedMouseY = -1
     self.cursesScreen = cursesScreen
     self.ch = 0
     curses.mousemask(-1)
     curses.mouseinterval(0)
     # Enable mouse tracking in xterm.
     sys.stdout.write('\033[?1002;h\n')
     #sys.stdout.write('\033[?1005;h\n')
     curses.meta(1)
     # Access ^c before shell does.
     curses.raw()
     # Enable Bracketed Paste Mode.
     sys.stdout.write('\033[?2004;h\n')
     #curses.start_color()
     curses.use_default_colors()
     if 0:
         assert (curses.COLORS == 256)
         assert (curses.can_change_color() == 1)
         assert (curses.has_colors() == 1)
         app.log.detail("color_content:")
         for i in range(0, curses.COLORS):
             app.log.detail("color", i, ": ", curses.color_content(i))
         for i in range(16, curses.COLORS):
             curses.init_color(i, 500, 500, i * 787 % 1000)
         app.log.detail("color_content, after:")
         for i in range(0, curses.COLORS):
             app.log.detail("color", i, ": ", curses.color_content(i))
     self.setUpPalette()
     if 1:
         #rows, cols = self.cursesScreen.getmaxyx()
         cursesWindow = self.cursesScreen
         cursesWindow.leaveok(1)  # Don't update cursor position.
         cursesWindow.scrollok(0)
         cursesWindow.timeout(10)
         cursesWindow.keypad(1)
         self.top, self.left = cursesWindow.getyx()
         self.rows, self.cols = cursesWindow.getmaxyx()
         app.window.mainCursesWindow = cursesWindow
     self.zOrder = []
Ejemplo n.º 21
0
    def __CuInit__(screen):
        locale.setlocale(locale.LC_ALL, "")
        # curses.curs_set(False)
        # curses.curs_set(1)
        CuHelper.disableCursor()
        screen.keypad(1)
        curses.mousemask(curses.ALL_MOUSE_EVENTS
                         | curses.REPORT_MOUSE_POSITION)
        curses.mouseinterval(0)
        CuHelper.GLBL['screen'] = screen
        CuHelper.GLBL['maxY'], CuHelper.GLBL['maxX'] = screen.getmaxyx()
        CuTCore.cuDebug("SCREEN: W:" + str(CuHelper.GLBL['maxX']) + " H:" +
                        str(CuHelper.GLBL['maxY']))

        CuWrapper.initWrapper()
        CuWrapper.__CuInit__()
Ejemplo n.º 22
0
def curses_main(win):
    config = default_config()
    curses.curs_set(False)
    curses.start_color()
    curses.use_default_colors()
    config["style"] = config_implement_colors(config["style"])
    set_scene(UI0(config).render)
    curses.cbreak()
    curses.mousemask(-1)
    curses.mouseinterval(0)
    while True:
        with im.Frame(win):
            UI_RENDERER()
            if im.Key("q"):
                break
        while not (im.want_refresh or im.gather_input(win)):
            pass
Ejemplo n.º 23
0
    def read(self, prompt = '>>>'):
        if (self.tcs.conf.mouseScroll == True):
            curses.mousemask(curses.BUTTON_SHIFT | curses.BUTTON_CTRL | curses.BUTTON_ALT | curses.BUTTON4_PRESSED | curses.BUTTON4_RELEASED)
            curses.mouseinterval(5)
            self.addBindkey(curses.KEY_MOUSE, self.__mouse_event, [])


        self.prompt = prompt
        self.winReadLine.addstr(prompt)
        self.message = ''
        found = 0
        fxy = self.winReadLine.getyx()
        self.xy = [fxy[0], len(prompt)]
        self.lprompt = len(self.prompt)
        while 1:
            ch = self.winReadLine.getch()
            for key, f, args in self.bindkeys:
                if (key == ch):
                    f(self, args)
                    found = 1
                    break
            if (found == 1):
                found = 0
                continue
            if (ch == 10):
                if (self.tcs.currentBuddy != 'ns-sys'):
                    self.tcs.sendToLogin(self.tcs.currentBuddy, self.message)
                self.tcs.buddysWindow[self.tcs.currentBuddy].send(self.message)
                self.tcs.buddysWindow[self.tcs.currentBuddy].refresh()

                self.xy[1] = self.lprompt - 1
                self.winReadLine.move(self.xy[0], self.xy[1]+1)
                #self.winReadLine.addstr(self.prompt)
                self.winReadLine.clrtoeol()
                self.message = ''
            elif (ch <= 255 and ch >= 0):
                if (self.xy[1] - self.lprompt != len(self.message)):
                    self.message = self.message[:self.xy[1]-self.lprompt] + chr(ch) + self.message[self.xy[1]-self.lprompt:]
                else:
                    self.message += chr(ch)
            else:
                continue
            self.winReadLine.insch(ch)
            self.xy[1] += 1
            self.winReadLine.move(self.xy[0], self.xy[1])
Ejemplo n.º 24
0
Archivo: aesop.py Proyecto: sevra/aesop
   def setup(self):
      self.timeout = None
      self.player.defaults['default'] = 0

      curses.curs_set(False)
      curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION)
      curses.mouseinterval(0)

      curses.use_default_colors()
      curses.init_pair(1, curses.COLOR_BLUE, -1)
      curses.init_pair(2, curses.COLOR_CYAN, -1)
      curses.init_pair(3, curses.COLOR_BLACK, curses.COLOR_WHITE)
      curses.init_pair(4, curses.COLOR_YELLOW, -1)

      self.windows.add('help', 3, 0, self.windows.max.y-6, self.windows.max.x-1)
      self.handlers.help = HelpHandler(self.windows.help, self.player, self.windows)

      self.windows.add('state', 0, 0, 3, self.windows.max.x)
      self.handlers.state = StateHandler(self.windows.state, self.player)

      self.windows.add('progress', self.windows.max.y-3, 0)
      self.handlers.progress = ProgressHandler(self.windows.progress, self.player)

      exts = [ 'avi', 'wmv', 'mkv', 'mpg', ]
      self.windows.add('browser', 3, 0, self.windows.max.y-6, self.windows.max.x-1)
      self.handlers.browser = BrowserHandler(self.windows.browser, self.player, exts)

      self.windows.apply('keypad', 1) # turn keypad on for all windows

      self.active = self.handlers.browser
      active = cycle([self.handlers.help, self.handlers.browser])

      signal.signal(signal.SIGWINCH, lambda *args : self.handle('resize'))
      self.windows.root.keymap.add(
         Bind(None, ['KEY_RESIZE'], lambda : self.handle('resize')),
         Bind(None, ['KEY_MOUSE'], self.mouse),
         Bind('Close Aesop.', ['q'], self.quit),
         Bind('Toggle pause.', ['p'], self.player.pause),
         Bind('Stop play.', ['x'], self.player.stop),
         Bind('Seek forward 10 seconds', ['KEY_RIGHT', 's'], self.handlers.progress.seek, 10),
         Bind('Seek backward 10 seconds', ['KEY_LEFT', 'h'], self.handlers.progress.seek, -10),
         Bind('Cycle between help, browser and playlist windows.', ['\t'],  self.set_active, lambda : next(active)),
      )
Ejemplo n.º 25
0
    def __init__(self, win, paths, prefs):
        wwind.app =wcall.app= self
        self.win = win              # root window, needed for resizing
        self.prefs = prefs          # preferences
        self.maxh, self.maxw = self.win.getmaxyx()

        self.stdscr = curses.initscr()
        curses.cbreak()
        curses.raw()
        wwind.cursor_hide()

        curses.ACS_BTEE += CURSES_OFFSET 
        curses.ACS_CKBOARD += CURSES_OFFSET 
        curses.ACS_DARROW += CURSES_OFFSET 
        curses.ACS_HLINE += CURSES_OFFSET 
        curses.ACS_LLCORNER += CURSES_OFFSET 
        curses.ACS_LRCORNER += CURSES_OFFSET 
        curses.ACS_LTEE += CURSES_OFFSET 
        curses.ACS_DIAMOND += CURSES_OFFSET
        curses.ACS_RTEE += CURSES_OFFSET 
        curses.ACS_TTEE += CURSES_OFFSET 
        curses.ACS_UARROW += CURSES_OFFSET 
        curses.ACS_ULCORNER += CURSES_OFFSET 
        curses.ACS_URCORNER += CURSES_OFFSET 
        curses.ACS_VLINE += CURSES_OFFSET 

        if self.prefs.options['mouse_support']:
            curses.mousemask(curses.ALL_MOUSE_EVENTS)
            curses.mouseinterval(0)
        color.set_colors(self)

        self.statusbar= wwind.StatusBar(self.maxw,self.maxh,color.STATUS_BAR)
        self.tabbar = wwind.Bar(self.maxw, 1, color.NOCLR)
        if self.prefs.options['num_panes'] == 1:
            lmode, rmode = PANE_MODE_FULL, PANE_MODE_HIDDEN
        else:
            lmode, rmode = PANE_MODE_LEFT, PANE_MODE_RIGHT
        self.lpane = Pane(paths[0], lmode, self)
        self.rpane = Pane(paths[1], rmode , self)
        self.act_pane, self.noact_pane = self.lpane,  self.rpane

        self.click_tm = time.time()
        self.cmdruning = False
Ejemplo n.º 26
0
Archivo: aesop.py Proyecto: psev/aesop
    def setup(self):
        self.timeout = None
        self.player.defaults["default"] = 0

        curses.curs_set(False)
        curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION)
        curses.mouseinterval(0)

        curses.use_default_colors()
        curses.init_pair(1, curses.COLOR_BLUE, -1)
        curses.init_pair(2, curses.COLOR_CYAN, -1)
        curses.init_pair(3, curses.COLOR_BLACK, curses.COLOR_WHITE)
        curses.init_pair(4, curses.COLOR_YELLOW, -1)

        self.windows.add("help", 3, 0, self.windows.max.y - 6, self.windows.max.x - 1)
        self.handlers.help = HelpHandler(self.windows.help, self.player, self.windows)

        self.windows.add("state", 0, 0, 3, self.windows.max.x)
        self.handlers.state = StateHandler(self.windows.state, self.player)

        self.windows.add("progress", self.windows.max.y - 3, 0)
        self.handlers.progress = ProgressHandler(self.windows.progress, self.player)

        exts = ["avi", "wmv", "mkv", "mpg"]
        self.windows.add("browser", 3, 0, self.windows.max.y - 6, self.windows.max.x - 1)
        self.handlers.browser = BrowserHandler(self.windows.browser, self.player, exts)

        self.windows.apply("keypad", 1)  # turn keypad on for all windows

        self.active = self.handlers.browser
        active = cycle([self.handlers.help, self.handlers.browser])

        self.windows.root.keymap.add(
            Bind(None, ["KEY_RESIZE"], self.resize),
            Bind(None, ["KEY_MOUSE"], self.mouse),
            Bind("Close Aesop.", ["q"], self.quit),
            Bind("Toggle pause.", ["p"], self.player.pause),
            Bind("Stop play.", ["x"], self.player.stop),
            Bind("Seek forward 10 seconds", ["KEY_RIGHT", "s"], self.handlers.progress.seek, 10),
            Bind("Seek backward 10 seconds", ["KEY_LEFT", "h"], self.handlers.progress.seek, -10),
            Bind("Cycle between help, browser and playlist windows.", ["\t"], self.set_active, lambda: next(active)),
        )
Ejemplo n.º 27
0
    def init(self):
        if os.path.exists('terminal') == False:
            subprocess.call(['mkdir', 'terminal'])

        if os.path.exists('terminal/.alias') == True:
            try:
                file = open('terminal/.alias', 'rb')
                self.alias_tuples = pickle.load(file)
                file.close()
            except:
                print "read alias record failed"

        if os.path.exists('terminal/.cmd_history') == True:
            try:
                file = open('terminal/.cmd_history', 'rb')
                self.cmd_history = pickle.load(file)
                file.close()
            except:
                print "read command history failed"

        #initialize UI
        try:
            self.stdscr = curses.initscr()
            curses.noecho()
            curses.cbreak()
            curses.mousemask(-1)
            curses.mouseinterval(0)
            curses.start_color()
            curses.use_default_colors()
            curses.init_pair(0, curses.COLOR_BLACK, -1)
            curses.init_pair(1, curses.COLOR_RED, -1)
            curses.init_pair(2, curses.COLOR_GREEN, -1)
            curses.init_pair(3, curses.COLOR_YELLOW, -1)
            curses.init_pair(4, curses.COLOR_BLUE, -1)
            curses.init_pair(5, curses.COLOR_MAGENTA, -1)
            curses.init_pair(6, curses.COLOR_CYAN, -1)
            curses.init_pair(7, curses.COLOR_WHITE, -1)
            self.curseslock = threading.Lock()
            self.window_redraw()
            return "success"
        except:
            return "UI failed"
Ejemplo n.º 28
0
    def main(self, stdscr):
        self.stdscr = stdscr; self.scrollPosMax = int(-1)
        self.scrollPos = int(0); self.maxScroll = 100
        self.height, self.width = stdscr.getmaxyx()

        stdscr.clear()
        stdscr.refresh()

        curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_YELLOW)
        curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_BLUE)
        curses.init_pair(3, curses.COLOR_CYAN, curses.COLOR_BLACK)
        curses.init_pair(4, curses.COLOR_GREEN, curses.COLOR_BLACK)
        curses.init_pair(5, curses.COLOR_YELLOW, curses.COLOR_BLACK)
        curses.init_pair(6, curses.COLOR_MAGENTA, curses.COLOR_BLACK)
        curses.init_pair(7, curses.COLOR_RED, curses.COLOR_BLACK)
        curses.init_pair(8, curses.COLOR_BLUE, curses.COLOR_BLACK)

        global yellowBG, blueBG, cyanText, greenText, yellowText, magentaText, redText, blueText

        yellowBG = curses.color_pair(1)
        blueBG = curses.color_pair(2)
        cyanText = curses.color_pair(3)
        greenText = curses.color_pair(4)
        yellowText = curses.color_pair(5)
        magentaText = curses.color_pair(6)
        redText = curses.color_pair(7)
        blueText = curses.color_pair(8)

        curses.mouseinterval(0)
        curses.mousemask(curses.BUTTON4_PRESSED | curses.BUTTON2_PRESSED)
        
        self.scroll = curses.newpad(self.maxScroll, self.width)
        self.scroll.scrollok(True)
        self.scroll.idlok(True)
        self.scroll.keypad(True)

        self.topLine = stdscr.subwin(1, self.width, 0, 0)
        self.infoLine = stdscr.subwin(1, self.width, self.height - 2, 0)
        self.inputLine = stdscr.subwin(1, self.width, self.height - 1, 0)
        self.event.set()
        self.getInput()
Ejemplo n.º 29
0
def init_screen():
    screen = curses.initscr()  # Window object
    screen.clear()  # Erase and repaint on update
    availmask, oldmask = curses.mousemask(
            curses.BUTTON1_PRESSED | curses.BUTTON1_RELEASED | \
                    curses.BUTTON1_DOUBLE_CLICKED)  # Record mouse evnts
    curses.mouseinterval(0)  # Max ms click interval
    curses.start_color()  # To use colors
    curses.use_default_colors()  # Default term colors eg transparency
    curses.init_pair(COLOR_RED, curses.COLOR_RED, -1)
    curses.init_pair(COLOR_BLUE, curses.COLOR_BLUE, -1)
    curses.meta(1)  # 8b characters
    curses.noecho()  # No auto echo keys to window
    curses.cbreak()  # Don't wait for <Enter>
    screen.keypad(1)  # Use special char values
    screen.nodelay(1)  # Nonblocking getch/getstr
    screen.timeout(1)  # Nonblocking gets, 0 in ms
    screen.leaveok(0)  # Virtual screen cursor after update
    curses.curs_set(0)  # Invisible curser
    screen.scrollok(0)  # Cursor moves off page don't scroll
    return screen
Ejemplo n.º 30
0
def newwindow(scr):
    win = MainWindow(scr)
    win.rl.addBindkey(curses.KEY_RESIZE, winresize, [win])
    win.rl.addBindkey(9, changeBuddy, [win, 1])
    win.rl.addBindkey(curses.KEY_DOWN, changeBuddy, [win, 1])
    win.rl.addBindkey(curses.KEY_UP, changeBuddy, [win, 0])
    win.buddysWindow['ns-sys'].top()
    win.refreshWindow()
    win.start()
    
    try:
        win.rl.read()
    except KeyboardInterrupt:
        if (win.conf.mouseScroll == True):
            curses.mouseinterval(200)
        curses.endwin()
    except tcs.TcapsoulException as e:
        if (win.conf.mouseScroll == True):
            curses.mouseinterval(200)
        curses.endwin()
        print '\n\n\nVous avez fait quelque chose de mal : "%s"' % e.message
    except:
        if (win.conf.mouseScroll == True):
            curses.mouseinterval(200)
        curses.endwin()
        print "\033[31m !!!!!! OOOOOoops TCAPSOUL a plante !!!!!!\033[37m"
        #res = raw_input('Voulez vous voir pourquoi? (o/n)')
        #if (res[0:1] == 'o'):
        traceback.print_exc(file=sys.stdout)
    print '-----------------------TCAPSOUL BETA 1-----------------------------'
    print "Bye bye - n'oubliez pas d'enculer a sec branda_f si vous le voyez!"
    return (0)
Ejemplo n.º 31
0
 def __init__(self, cursesScreen):
     self.debugMouseEvent = (0, 0, 0, 0, 0)
     self.exiting = False
     self.modalUi = None
     self.modeStack = []
     self.priorClick = 0
     self.savedMouseWindow = None
     self.savedMouseX = -1
     self.savedMouseY = -1
     self.stdscr = cursesScreen
     self.ch = 0
     curses.mousemask(-1)
     curses.mouseinterval(0)
     # Enable mouse tracking in xterm.
     print '\033[?1002;h'
     #print '\033[?1005;h'
     curses.meta(1)
     # Access ^c before shell does.
     curses.raw()
     #curses.start_color()
     curses.use_default_colors()
     if 0:
         assert (curses.COLORS == 256)
         assert (curses.can_change_color() == 1)
         assert (curses.has_colors() == 1)
         app.log.detail("color_content:")
         for i in range(0, curses.COLORS):
             app.log.detail("color", i, ": ", curses.color_content(i))
         for i in range(16, curses.COLORS):
             curses.init_color(i, 500, 500, i * 787 % 1000)
         app.log.detail("color_content, after:")
         for i in range(0, curses.COLORS):
             app.log.detail("color", i, ": ", curses.color_content(i))
     self.showPalette = 0
     self.shiftPalette()
     self.zOrder = []
Ejemplo n.º 32
0
#
Ejemplo n.º 33
0
async def start_ui(window, loop):
    # Clear screen
    window.clear()
    window.refresh()
    curses.noecho()

    # Don't require enter to be pressed for inputs
    curses.cbreak()

    # Needed to enable mouse
    curses.mousemask(1)
    window.keypad(1)
    curses.mouseinterval(0)

    # Connect to the AppleTV
    atv, device = await connect_to_atv(window, loop)

    col_1, col_2, row_1, row_2 = draw_ui(window, atv, device)
    while True:
        try:
            c = window.getch()
            if c == curses.KEY_MOUSE:
                _, x, y, _, _ = curses.getmouse()

                # Get mouse position
                left = x < col_1
                right = x > col_2
                up = y < row_1
                down = y > row_2
                center = not up and not down
                middle = not left and not right

                # Click areas.
                if left and center:
                    await atv.remote_control.left()
                elif right and center:
                    await atv.remote_control.right()
                elif up and middle:
                    await atv.remote_control.up()
                elif down and middle:
                    await atv.remote_control.down()
                elif center and middle:
                    await atv.remote_control.select()
                elif left and up:
                    await atv.remote_control.menu()
                elif right and up:
                    await atv.remote_control.home()
                elif left and down:
                    await atv.remote_control.suspend()
                    break
                elif right and down:
                    await atv.remote_control.play_pause()

            elif c == ord('w'):
                await atv.remote_control.wakeup()
            elif c == ord('s'):
                await atv.remote_control.suspend()
                break
            elif c == ord('r'):
                col_1, col_2, row_1, row_2 = draw_ui(window, atv, device)
            elif c == ord('h'):
                await atv.remote_control.left()
            elif c == ord('j'):
                await atv.remote_control.down()
            elif c == ord('k'):
                await atv.remote_control.up()
            elif c == ord('l'):
                await atv.remote_control.right()
            elif c == ord('u'):
                await atv.remote_control.top_menu()
            elif c == ord('i'):
                await atv.remote_control.menu()
            elif c == ord('o'):
                await atv.remote_control.select()
            elif c == ord('p'):
                await atv.remote_control.play_pause()
            elif c == ord('z'):
                await atv.remote_control.volume_down()
            elif c == ord('x'):
                await atv.remote_control.volume_up()
            elif c == ord('q'):
                break  # Exit the while loop
        except Exception as err:
            window.addstr(row_1 + 9, col_1 + 1, '{}'.format(err))

    # Unhide cursor
    curses.curs_set(1)
    window.refresh()
    # Close connection to device
    result = atv.close()
    if result is not None:
        await result
Ejemplo n.º 34
0
#
Ejemplo n.º 35
0
.3.113........221.3.
"""

if use_unicode:
    symbols = ["0", "1", "2", "3", "4", " "]
    spins = ["◴ ", "◵ ", "◶ ", "◷ "]
else:
    symbols = [" 0", " 1", " 2", " 3", " 4", "  "]
    spins = ["|", "\\", "-", "/"]

try:
    screen = curses.initscr()
    screen.keypad(1)
    curses.curs_set(0)
    curses.mousemask(curses.ALL_MOUSE_EVENTS | curses.REPORT_MOUSE_POSITION)
    curses.mouseinterval(0)
    print("\033[?1002h\n")
    curses.flushinp()
    curses.noecho()
    screen.clear()

    curses.start_color()
    curses.use_default_colors()
    curses.init_pair(1, curses.COLOR_GREEN, curses.COLOR_BLACK)
    curses.init_pair(2, curses.COLOR_RED, curses.COLOR_BLUE)
    curses.init_pair(3, curses.COLOR_WHITE, curses.COLOR_CYAN)
    curses.init_pair(4, curses.COLOR_YELLOW, curses.COLOR_MAGENTA)
    screen.bkgd(" ", curses.color_pair(1))

    BUTTON_SCROLLUP = 0x0001_0000
    BUTTON_SCROLLDOWN = 0x0020_0000
Ejemplo n.º 36
0
def module_funcs(stdscr):
    "Test module-level functions"

    for func in [curses.baudrate, curses.beep, curses.can_change_color,
                 curses.cbreak, curses.def_prog_mode, curses.doupdate,
                 curses.filter, curses.flash, curses.flushinp,
                 curses.has_colors, curses.has_ic, curses.has_il,
                 curses.isendwin, curses.killchar, curses.longname,
                 curses.nocbreak, curses.noecho, curses.nonl,
                 curses.noqiflush, curses.noraw,
                 curses.reset_prog_mode, curses.termattrs,
                 curses.termname, curses.erasechar, curses.getsyx]:
        func()

    # Functions that actually need arguments
    if curses.tigetstr("cnorm"):
        curses.curs_set(1)
    curses.delay_output(1)
    curses.echo() ; curses.echo(1)

    f = tempfile.TemporaryFile()
    stdscr.putwin(f)
    f.seek(0)
    curses.getwin(f)
    f.close()

    curses.halfdelay(1)
    curses.intrflush(1)
    curses.meta(1)
    curses.napms(100)
    curses.newpad(50,50)
    win = curses.newwin(5,5)
    win = curses.newwin(5,5, 1,1)
    curses.nl() ; curses.nl(1)
    curses.putp('abc')
    curses.qiflush()
    curses.raw() ; curses.raw(1)
    curses.setsyx(5,5)
    curses.tigetflag('hc')
    curses.tigetnum('co')
    curses.tigetstr('cr')
    curses.tparm('cr')
    curses.typeahead(sys.__stdin__.fileno())
    curses.unctrl('a')
    curses.ungetch('a')
    curses.use_env(1)

    # Functions only available on a few platforms
    if curses.has_colors():
        curses.start_color()
        curses.init_pair(2, 1,1)
        curses.color_content(1)
        curses.color_pair(2)
        curses.pair_content(curses.COLOR_PAIRS - 1)
        curses.pair_number(0)

        if hasattr(curses, 'use_default_colors'):
            curses.use_default_colors()

    if hasattr(curses, 'keyname'):
        curses.keyname(13)

    if hasattr(curses, 'has_key'):
        curses.has_key(13)

    if hasattr(curses, 'getmouse'):
        (availmask, oldmask) = curses.mousemask(curses.BUTTON1_PRESSED)
        # availmask indicates that mouse stuff not available.
        if availmask != 0:
            curses.mouseinterval(10)
            # just verify these don't cause errors
            m = curses.getmouse()
            curses.ungetmouse(*m)
Ejemplo n.º 37
0
def play(stdscr):
    '''
    main game
    '''
    os.system('xset r rate 1')
    killer = GracefulKiller()

    k = 0
    score = 0

    #    curses.halfdelay(1)
    curses.mousemask(True)
    curses.mouseinterval(5)
    curses.curs_set(0)

    # Clear and refresh the screen for a blank canvas
    stdscr.nodelay(1)
    #    curses.halfdelay(3)

    stdscr.clear()
    stdscr.refresh()

    # Start colors in curses
    curses.start_color()
    curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK)
    curses.init_pair(2, curses.COLOR_RED, curses.COLOR_BLACK)
    curses.init_pair(3, curses.COLOR_BLUE, curses.COLOR_BLACK)
    curses.init_pair(4, curses.COLOR_GREEN, curses.COLOR_BLACK)
    curses.init_pair(5, curses.COLOR_YELLOW, curses.COLOR_BLACK)
    curses.init_pair(6, curses.COLOR_CYAN, curses.COLOR_BLACK)
    curses.init_pair(7, curses.COLOR_MAGENTA, curses.COLOR_BLACK)

    # this is the background color I guess
    curses.init_pair(8, curses.COLOR_BLACK, curses.COLOR_BLACK)

    # color dict
    global COLOURS

    inv_colors = {v: k for k, v in COLOURS.items()}

    # Initialization
    stdscr.clear()
    height, width = stdscr.getmaxyx()

    shots = []
    invaders = []
    animations = []
    invader_shots = []

    ship = Ship(path=SHIP_PATH, y=height - 4, speed=1, rof=0.5)
    w = curses.newwin(ship.Shape()[0], ship.Shape()[1] + 1, ship.y, ship.x)
    p = curses.panel.new_panel(w)
    for i in range(ship.Shape()[0]):
        w.addstr(i, 0, ship.lines[i], curses.color_pair(COLOURS[ship.color]))

    # Spawn invaders
    invaders = []
    n_rows = 4
    for row_i in range(n_rows):
        bottom = bool(row_i == n_rows - 1)
        y_row = 4 * row_i + 2
        row = []
        for col, x_inv in enumerate(range(0, width - 50, 7)):
            #    invaders.append(Invader(path=INVADER_PATH, x=50, y=5, speed=1, uprate=1))
            row.append(
                Invader(path=INVADER_PATH,
                        x=x_inv,
                        y=y_row,
                        speed=1,
                        uprate=0.1,
                        rof=1,
                        bottom=bottom,
                        color=inv_colors[(col) % 7 + 1]))
        invaders.append(row)
    for row in invaders:
        for inv in row:
            for i in range(inv.Shape()[0]):
                inv.win.addstr(i, 0, inv.lines[i],
                               curses.color_pair(COLOURS[inv.color]))

    # Loop where k is the last character pressed
    while k != ord('q'):
        if killer.kill_now:  # if user ctrl+c then reset keyboard rate and leave
            os.system('xset r rate 500')
            break
        if k == curses.KEY_DOWN:
            pass
        elif k == curses.KEY_UP:
            pass
        elif k == curses.KEY_RIGHT and ship.Moveable():
            if ship.x + ship.Shape()[1] + ship.speed < width:
                ship.MoveRight()
                if animations:
                    for a in animations:
                        a.panel.move(
                            a.y,
                            ship.x + ship.Shape()[1] // 2 - a.Shape()[1] // 2)
        elif k == curses.KEY_LEFT and ship.Moveable():
            if ship.x - ship.speed >= 0:
                ship.MoveLeft()
                if animations:
                    for a in animations:
                        a.panel.move(
                            a.y,
                            ship.x + ship.Shape()[1] // 2 - a.Shape()[1] // 2)

        # Declaration of strings
        statusbarstr = "Press 'q' to exit | Score : {} | Lifes : {}".format(
            score, ship.life)

        # Render status bar
        stdscr.attron(curses.color_pair(3))
        stdscr.addstr(height - 1, 0, statusbarstr)
        stdscr.addstr(height - 1, len(statusbarstr),
                      " " * (width - len(statusbarstr) - 1))
        stdscr.attroff(curses.color_pair(3))

        # Shooting logic
        if k == curses.KEY_MOUSE and ship.Shootable():
            ship.last_shot = time.time()
            #           _, mx, my, _, _ = curses.getmouse()
            #           if bstate == curses.BUTTON1_PRESSED:
            playsound(ship.shoot_sound)
            temp_proj = Projectile(ship.x + ship.Shape()[1] // 2,
                                   ship.y,
                                   direction='up',
                                   speed=1,
                                   uprate=0.2,
                                   path=PROJECTILE_PATH)

            temp_proj.x = ship.x + \
                ship.Shape()[1] // 2 - temp_proj.Shape()[1] // 2
            temp_proj.y = ship.y - temp_proj.Shape()[0]
            temp_proj.Draw()

            shots.append(temp_proj)
            animations.append(Animation(ship.x + 2, ship.y - 2,
                                        path=SHOT_PATH))

        shots = Shot_mvt(shots, height, zorder='top')
        invader_shots = Shot_mvt(invader_shots, height, zorder='bottom')

        for a in animations:
            if a.end:
                a.win.erase()
                a.panel.hide()
                animations.remove(a)
            else:
                if a.Drawable():
                    a.Draw()
                    a.panel.bottom()
                    for i in range(a.Shape()[0]):
                        a.win.addstr(i, 0, a.draw[i],
                                     curses.color_pair(COLOURS[a.color]))

        # Invader movement logic


#        for row in invaders: # take the most left or right invader
        k = -1
        while True not in [i.alive for i in invaders[k]
                           ]:  # find row with at least one invader alive
            k = k - 1
        row = invaders[k]
        if row[0].direction == 'right':
            inv = row[-1]
        if row[0].direction == 'left':
            inv = row[0]
        i_x, i_y = inv.Move(fake=True)  # get the coords of next step
        if inv.Moveable():  # if above the 10
            if i_x <= 0 or i_x + \
                    inv.Shape()[1] >= width:  # left & right side detection
                if i_x <= 0:
                    for row in invaders:
                        RowApply(row, lambda x: x.ChangeDirection('right'))
                elif i_x + inv.Shape()[1] >= width:
                    for row in invaders:
                        RowApply(row, lambda x: x.ChangeDirection('left'))
                if i_y < height - 10:
                    for row in invaders:
                        RowApply(row, lambda x: x.MoveDown())

                # update rate
                for row in invaders:
                    RowApply(row, lambda x: x.ChangeRate(0.05))
                stdscr.addstr(0, 0, str(inv.uprate))
                playsound(HIT_SOUND)
            else:  # otherwise just move
                for row in invaders:
                    RowApply(row, lambda x: x.Move())

        for row in invaders:  # draw on new position
            for inv in row:
                inv.panel.move(inv.y, inv.x)
                # invader shooting
                if inv.bottom and inv.Moveable() and inv.alive and inv.Shoot():
                    temp_proj = Projectile(0,
                                           0,
                                           direction='down',
                                           speed=1,
                                           uprate=0.2,
                                           path=PROJECTIL_INV_PATH,
                                           color=inv.color)
                    temp_proj.x = inv.x + \
                        inv.Shape()[1] // 2 - temp_proj.Shape()[1] // 2
                    temp_proj.y = inv.y + temp_proj.Shape()[0]
                    temp_proj.Draw()
                    invader_shots.append(temp_proj)
                    stdscr.addstr(10, 10, str(len(invader_shots)))
        # collision detection
        # improvement: checking collision on dead invaders: done !
        for row_i, row in enumerate(invaders):
            row_alive_invaders = [i for i in row if i.alive]
            if row_alive_invaders:
                collided = collision_detect(shots, row_alive_invaders)
                for element in collided:
                    if not element[1].alive:
                        continue
                    playsound(BOOM_SOUND)
                    element[1].win.erase()
                    element[1].panel.hide()
                    element[1].alive = False
                    score += 10
                    # this finds the new bottom invader
                    if element[1].bottom:
                        column = row.index(element[1])
                        for j, _ in enumerate(invaders):
                            if invaders[j][column].alive:
                                bottom_row = j
                        invaders[bottom_row][column].bottom = True
                        if column == 0:
                            stdscr.addstr(5, 0, str(bottom_row))
                    element[0].win.erase()
                    element[0].panel.hide()
                    shots.remove(element[0])
            else:
                invaders.remove(row)

        #Ship collision logic
        collided = collision_detect(invader_shots, [ship])
        for element in collided:
            element[1].life -= 1
            #here is trigger for death sequence
            element[0].win.erase()
            element[0].panel.hide()
            invader_shots.remove(element[0])

        p.move(ship.y, ship.x)
        curses.panel.update_panels()

        # Refresh the screen
        stdscr.refresh()
        # get next input
        k = stdscr.getch()
    return 'start'