Example #1
0
    def move(self):
        # Determine head coords
        head = self.coords[-1][:]

        # Calc new head coords
        if self.direction == curses.KEY_UP:
            head[0]-=1
        elif self.direction == curses.KEY_DOWN:
            head[0]+=1
        elif self.direction == curses.KEY_RIGHT:
            head[1]+=1
        elif self.direction == curses.KEY_LEFT:
            head[1]-=1

        # Check field limit
        head = self._check_limit(head)

        del(self.coords[0])
        self.coords.append(head)
        self.field.snake_coords = self.coords

        if not self.is_alive():
            sys.exit()


        # check if snake eat an entity
        if self.field.is_snake_eat_entity():
            curses.beep()
            self.level_up()
            self.field.add_entity()
Example #2
0
 def get_and_use_mouse_event(self):
     mouse_event = curses.getmouse()
     wg = self.find_mouse_handler(mouse_event)
     if wg:
         self.set_editing(wg)
     else:
         curses.beep()
Example #3
0
 def _beep(self):
     if not self.active:
         return
     try:
         curses.beep()
     except curses.error:
         pass
Example #4
0
    def down(self, lines=1):
        max_highlight = self.content_length() - 1
        if self.highlight_line >= max_highlight:
            curses.beep()
            return

        self.highlight_line += lines
Example #5
0
 def h_set_filtered_to_selected(self, ch):
     # This is broken on multiline
     if len(self._filtered_values_cache) < 2:
         self.value = self._filtered_values_cache
     else:
         # There is an error - trying to select too many things.
         curses.beep()
Example #6
0
def beep():
    """
    Does an audible beep sound
    Reference: http://de3.aminet.net/dev/src/clr.py.txt
    """

    if sys.platform == 'linux2':
        for dev in ('/dev/audio', '/dev/oss', '/dev/dsp', '/dev/sound'):
            if os.path.exists(dev):
                try:
                    audio = file(dev, 'wb')

                    for i in xrange(250):
                        audio.write(chr(32) * 4)
                        audio.write(chr(0) * 4)

                    audio.close()
                    return
                except:
                    pass

        try:
            import curses
            curses.initscr()
            curses.beep()
            curses.flash()
            curses.endwin()
            return
        except:
            dataToStdout('\a', True)

    else:
        dataToStdout('\a', True)
Example #7
0
File: grope.py Project: dwf/grope
def get_selected_line(stdscr, lines):
    """Called by curses.wrapper, renders the interface and fetches the selected line."""
    init(stdscr)
    state = ProgramState(stdscr, lines)

    while True:
        c = stdscr.getch()

        if c == ord("q") or c == ord("Q"):
            # Quit
            break

        elif c == curses.KEY_DOWN:
            try:
                state.scroll_down()
            except curses.error:
                curses.beep()
                state.refresh()

        elif c == curses.KEY_UP:
            try:
                state.scroll_up()
            except curses.error:
                curses.beep()
                state.refresh()

        elif c == ord("\n"):
            # Enter
            break

    cleanup(stdscr)

    print state.text[state.selected_line]
Example #8
0
    def countdown(self, scr, inspection = 15.0):
        scr.clear()
        maxqy, maxqx = scr.getmaxyx()

        ret = 0
        start = time()
        c = -1
        while c < 0 or c == curses.KEY_RESIZE:
            scr.clear()
            delta = inspection + start - time()
            if delta > 0:
                s = '%.2f' % delta
            elif delta > -2:
                s = '+2'
                ret = 2
            else:
                s = 'DNF'
                ret = 'DNF'

            scr.addstr(maxqy//2 - 1, (maxqx - len(s))//2, s)
            scr.refresh()
            c = scr.getch()
            curses.napms(10)
        curses.beep()

        return ret
Example #9
0
def process_key(code):
    """Process a key press.

    `code` is ncurses key code or a single unicode character."""
    global default_handler
    if not is_key_unhandled((code,meta)):
        for i in (1, 2):
            for t in [t for t in keytables if t.active]:
                try:
                    return t.process_key(code,meta)
                except (KeyBindingNotFoundError, FunctionNotFoundError):
                    continue
            if code == curses.erasechar():
                # workaround for bad terminfo
                code = curses.KEY_BACKSPACE
            else:
                break
        unhandled_keys[code,meta]=True
    if default_handler:
        return default_handler(code,meta)
    else:
        try:
            logging.getLogger("cjc.ui.keytable").debug("Unhandled key: "+keycode_to_name(code,meta))
            curses.beep()
        except curses.error:
            pass
        return 0
Example #10
0
def file_func():
    # file menu for exiting, exiting, etc.
    fMenu = curses.newwin(6,20,2,1)
    fMenu.box()
    fMenu.addstr(1,2, "W", hotkey_attr)
    fMenu.addstr(1,3, "rite Something", menu_attr)
    fMenu.addstr(2,2, "C", hotkey_attr)
    fMenu.addstr(2,3, "lear", menu_attr)
    fMenu.refresh()
    set_menu = True
    while set_menu == True:
        c = fMenu.getch()
        if c in (ord('W'), ord('w')):
            screen.addstr(10,10, "Well Hot Damn")
            screen.move(1,23)
            fMenu.erase()
            screen.refresh()
            set_menu = False
        elif c in (ord('C'), ord('c')):
            screen.addstr(10,10, "             ")
            screen.move(1,23)
            fMenu.erase()
            screen.refresh()
            set_menu = False
        else:
            curses.beep()
    return CONTINUE
Example #11
0
def on_groupchat_direct_invitation(self, message):
    """
    Direct invitation received
    """
    room = safeJID(message['groupchat_invite']['jid'])
    if room.bare in self.pending_invites:
        return

    inviter = message['from']
    reason = message['groupchat_invite']['reason']
    password = message['groupchat_invite']['password']
    continue_ = message['groupchat_invite']['continue']
    msg = "You are invited to the room %s by %s" % (room, inviter.full)

    if password:
        msg += ' (password: "******")' % password
    if continue_:
        msg += '\nto continue the discussion'
    if reason:
        msg += "\nreason: %s" % reason

    self.information(msg, 'Info')
    if 'invite' in config.get('beep_on').split():
        curses.beep()

    self.pending_invites[room.bare] = inviter.full
    logger.log_roster_change(inviter.full, 'invited you to %s' % room.bare)
Example #12
0
 def exit_application(self):
     curses.beep()
     self.parentApp.setNextForm(None)
     self.editing = False
     self.parentApp.switchFormNow()
     if self.timer:
         self.timer.cancel()
Example #13
0
    def command(self, key):
        '''process commands'''

        if key == curses.KEY_UP and self.selected[0]:
            self.selected[0] -= 1
            self.__changed = True

        elif key == curses.KEY_DOWN and self.selected[0] + 1 < self.dim[0]:
            self.selected[0] += 1
            self.__changed = True

        elif key == curses.KEY_LEFT and self.selected[1]:
            self.selected[1] -= 1
            self.__changed = True

        elif key == curses.KEY_RIGHT and self.selected[1] + 1 < self.dim[1]:
            self.selected[1] += 1
            self.__changed = True

        elif key in (10,):

            curses.beep()
            if self.active != self.selected:
                self.active = self.selected[:]
                self.__changed = True

                if self.callback is not None:
                    r, c = self.active
                    self.callback({'active': self.__cells__[r][c]})

        return self.__changed
 def scrollUp(self):
     """Scrolls the window up one line"""
     if self.__firstShownLine > 0:
         self.__firstShownLine -= 1
         self.__refreshContent()
     else:
         curses.beep()
Example #15
0
def file_func(args):
    #s = curses.newwin(5,10,10,20)
    #s = screen.derwin(10, 10, 1, 2)
    s = curses.newwin(5,10,10,20)
    s.box()
    s.addstr(1,2, "I", hotkey_attr)
    s.addstr(1,3, "nput", menu_attr)
    s.addstr(2,2, "O", hotkey_attr)
    s.addstr(2,3, "utput", menu_attr)
    s.addstr(3,2, "T", hotkey_attr)
    s.addstr(3,3, "ype", menu_attr)
    s.addstr(1,2, "", hotkey_attr)
    s.refresh()
    c = s.getch()
    if c in (ord('I'), ord('i'), curses.KEY_ENTER, 10):
        curses.echo()
        s.erase()
        screen.addstr(5,33, " "*43, curses.A_UNDERLINE)
        cfg_dict['source'] = screen.getstr(5,33)
        curses.noecho()
    elif c in (ord('O'), ord('o')):
        curses.echo()
        s.erase()
        screen.addstr(8,33, " "*43, curses.A_UNDERLINE)
        cfg_dict['target'] = screen.getstr(8,33)
        curses.noecho()
    elif c in (ord('T'), ord('t')):
        s.addstr(3,7, "->", menu_attr)
        s.refresh()
        s2 = curses.newwin(8,15,4,10)
        s2.box()
        s2.addstr(1,2, "H", hotkey_attr)
        s2.addstr(1,3, "TML", menu_attr)
        s2.addstr(2,2, "P", hotkey_attr)
        s2.addstr(2,3, "ython", menu_attr)
        s2.addstr(3,2, "F", hotkey_attr)
        s2.addstr(3,3, "AQ", menu_attr)
        s2.addstr(4,2, "S", hotkey_attr)
        s2.addstr(4,3, "mart_ASCII", menu_attr)
        s2.addstr(5,2, "R", hotkey_attr)
        s2.addstr(5,3, "aw", menu_attr)
        s2.addstr(6,2, "I", hotkey_attr)
        s2.addstr(6,3, "nfer Type", menu_attr)
        s2.addstr(6,2, "", hotkey_attr)
        s2.refresh()
        c = s2.getch()
        if c in (ord('I'), ord('i'), curses.KEY_ENTER, 10):
            cfg_dict['type'] = 'INFER'
        elif c in (ord('H'), ord('h')): cfg_dict['type'] = 'HTML'
        elif c in (ord('P'), ord('p')): cfg_dict['type'] = 'PYTHON'
        elif c in (ord('F'), ord('f')): cfg_dict['type'] = 'FAQ'
        elif c in (ord('S'), ord('s')): cfg_dict['type'] = 'SMART_ASCII'
        elif c in (ord('R'), ord('r')): cfg_dict['type'] = 'RAW'
        else: curses.beep()
        s2.erase()
        s.erase()
    else:
        curses.beep()
        s.erase()
    return CONTINUE
    def receiveKey(self, key):
        """Reacts to a key pressed.

        You should explicitly call this method only if you didn't call
        the object's getch()."""
        if key == curses.KEY_UP:
            if self.__selectedRow > 0:
                self.__printRow(self.__selectedRow)
                self.__selectedRow -= 1
                if self.__selectedRow < self.__firstShownLine:
                    self.scrollUp()
                else:
                    self._window.attron(curses.A_BOLD)
                    self.__printRow(self.__selectedRow)
                    self._window.attroff(curses.A_BOLD)
            else:
                curses.beep()                
        elif key == curses.KEY_DOWN:
            if self.__selectedRow < len(self.__data) - 1:
                self.__printRow(self.__selectedRow)
                self.__selectedRow += 1
                if self.__selectedRow == \
                       self.__firstShownLine + self.height - 2:
                    self.scrollDown()
                else:
                    self._window.attron(curses.A_BOLD)
                    self.__printRow(self.__selectedRow)
                    self._window.attroff(curses.A_BOLD)
            else:
                curses.beep()
Example #17
0
 def run(self):
   """Run the editor main loop (read and execute command)"""
   try:
     screen = curses.initscr()
     curses.noecho()
     curses.raw()
     curses.meta(1)
     screen.keypad(1)
     height, width = screen.getmaxyx()
     self._width = width
     self._height = height
     self._window.set_size(width, height-1)
     self.redisplay(screen)
     while 1:
       cmd = self.read_command(screen)
       if cmd is None:
         curses.beep()
         self.message("No command on key '%s'" % self.last_key())
       else:
         self.message(None)
         cmd.run()
       self.redisplay(screen)
   finally:
     screen.keypad(0)
     curses.meta(0)
     curses.noraw()
     curses.endwin()
Example #18
0
	def delete(self, incr):
		'''Delete characters.
		A negative number means delete to the left.
		A positive number means delete to the right
		'''
		# consider these curses functions clrtoeol (delete to eol)
		# clrtobot (clear to bottom of window)
		# delch (delete char at y,x)
		# deleteln() 
		if incr < 0:
			direction = -1
			adj = -1
		else:
			direction = 1
			adj = 0
		dprint('del a ' + str(self.txt[self.line_ptr].get_point()))
		# how many chars remain after the deletion is made:
		remaining_chars = len(self.txt[self.line_ptr]) - self.txt[self.line_ptr].get_point()
		if remaining_chars < 0:
			curses.beep()
			incr += remaining_chars 
			self.txt[self.line_ptr].delete(self.txt[self.line_ptr].get_point() \
				+ incr, incr)# self.txt[self.line_ptr].get_point())
		else:
			self.txt[self.line_ptr].delete(self.txt[self.line_ptr].get_point(), \
				incr)#self.txt[self.line_ptr].get_point() + incr)
		dprint('del b ' + str(self.txt[self.line_ptr].get_point()))
		# self.pointasdf does not change for delete.
		#
		#self.display_line()
		for j in range(incr * direction):
			self.win_del_char(self.scrn, self.line_ptr, self.txt[self.line_ptr].get_point() + adj)
			if direction < 0:
				adj -= 1
		return(0)
Example #19
0
def key_in(t, w, c):
        if c == curses.KEY_F2:
            do_note(t, w)
        elif c == curses.KEY_F4:
            t.do_new_week()
        elif c == curses.KEY_F6:
            t.do_new_day()
        elif c == curses.KEY_F8:
            t.do_start_stop()
        elif c == curses.KEY_UP:
            t.cursor_up()
        elif c == curses.KEY_DOWN:
            t.cursor_down()
        elif c == curses.KEY_NPAGE:
            t.cursor_page_down()
        elif c == curses.KEY_PPAGE:
            t.cursor_page_up()
        elif c == curses.KEY_HOME:
            t.cursor_home()
        elif c == curses.KEY_END:
            t.cursor_end()
        elif (c < 256) and ( chr(c) in 'Mm' ) :
            do_topmenu(t, w)
        elif (c < 256) and ( chr(c) in 'Qq' ) :
            return True
        else:
            print "???"
            curses.beep()
            time.sleep(1)
        return False
Example #20
0
 def next_move(self, key):
     """Advance game one step, using key press"""
     state = self.get_state()
     if key == curses.KEY_LEFT:
         self.left_move()
     elif key == curses.KEY_RIGHT:
         self.right_move()
     elif key == curses.KEY_UP:
         self.up_move()
     elif key == curses.KEY_DOWN:
         self.down_move()
     self.refresh_all()
     if self.is_winner() and not self.won:
         self.won = True
         self.win_routine()
     if self.illegal_move(state):
         if self.is_loser():
             self.lose_routine()
             self.refresh_all()
             curses.beep()
             return
         else:
             curses.beep()
             return
     else:
         self.insert_random()
     self.refresh_all()
Example #21
0
	def insert_txt(self, mode):
		'''MainWindow.insert_txt()

		Insert text at the current cursor location.
		If mode = 'i', then insert text starting at the 
		cursor location.
		If mode = 'a' then insert after the current character.
		'''
		global g_my_codec

		(max_y, max_x) = self.scrn.getmaxyx()
		max_y -= YFUDGE
		vline_len = len(self.txt[self.line_ptr])
		if mode == 'a':
			# 'a' means insert text after the current character,
			# so increment the column if there is room to do so.
				self.incr_point(1)# Also adjusts cursor
		i = self.scrn.getch()
		b_mode = False
		#while i not in [27, 10, 13] and self.wincol_idx < max_x :
		while i not in [27] and self.wincol_idx < (max_x - 1) :
			# while ESC not pressed	
			#if i > 126 or i < 20:
			#	c = chr(i).encode(g_my_codec)
			#else:
			c = chr(i)
			self.status_message(ch=c)#show for debugging
			if i > 127:
				curses.beep()
				if i >> 6 == 3:
					# This is a two-byte unicode character
					i2 = self.scrn.getch()
					b = bytes([i, i2])
					c = b.decode(g_my_codec)
				if i >> 6 == 7:
					# three byte unicode character
					i2 = self.scrn.getch()
					i3 = self.scrn.getch()
					b = bytes([i, i2, i3])
					c = b.decode(g_my_codec)
					 	
			if (len(self.txt[self.line_ptr]) < (max_x - 1) \
			and len(self.txt) < (max_x - 1) and i >= 32) \
			or c == os.linesep:
				# Exclude control characters below 0x20 = 32decimal
				#self.txt[self.line_ptr].insert(self.txt[self.line_ptr].get_point(), c)	
				self.txt.insert(self.pointasdf, c, batch=b_mode)
				b_mode = True
				self.incr_point(1)# also adjusts cursor
				#self.display_line()
				self.win_ins_char(self.scrn, self.line_ptr, self.txt[self.line_ptr].get_point() - 1, c)
			else:
				# FOR THIS CRIPPLED VERSION, DON'T PROCESS EXTRA CHARACTERS
				self.menuscrn.leaveok(1) #set flag to leave cursor alone
				self.menuscrn.addstr(MENU_LINES - 1, 0, 'ERROR. LINES MUST FIT ON THE SCREEN.')
				self.menuscrn.refresh()
				self.menuscrn.leaveok(0)
			i = self.scrn.getch()
		return(0)
Example #22
0
 def remind(self, id=0):
     if not id in self.tasks:
         return
     self.api.information('Task %s: %s' % (id, self.tasks[id][1]), 'Info')
     if self.config.get('beep', '') == 'true':
         curses.beep()
     timed_event = timed_events.DelayedEvent(self.tasks[id][0], self.remind, id)
     self.api.add_timed_event(timed_event)
Example #23
0
 def use_mouse_event(self, mouse_event):
     wg = self.find_mouse_handler(mouse_event)
     if wg:
         self.set_editing(wg)
         if hasattr(wg, 'handle_mouse_event'):
             wg.handle_mouse_event(mouse_event)
     else:
         curses.beep()
 def scrollDown(self):
     """Scrolls the window down one line"""
     if self.__firstShownLine < len(self.__data) - 1:
         self.__firstShownLine += 1
         self.__refreshContent()
         self.__printRow(self.__firstShownLine + self.height - 2)
     else:
         curses.beep()
Example #25
0
File: otr.py Project: Perdu/poezio
def hl(tab):
    if tab.state != 'current':
        tab.state = 'private'

    conv_jid = safeJID(tab.name)
    if 'private' in config.get('beep_on', 'highlight private').split():
        if not config.get_by_tabname('disable_beep', conv_jid.bare, default=False):
            curses.beep()
Example #26
0
File: ui.py Project: jbq/appdeploy
 def error(self, msg):
     ew = self.createErrorWindow()
     ew.echo(str(msg))
     ew.repaint()
     curses.beep()
     time.sleep(2)
     self.errorWindow = None
     self.refresh()
Example #27
0
File: ui_cn.py Project: ahua/python
def drawMessage(title, msgs=[], waitKeyMsg=None, beep=False, flash=False):
    """ title: the title on the top like ' === TEXT === '
        msgs: [[str(message), int(color_pair)],[...]]
              You should keep len(msgs) <= 6 if you used 'waitKeyMsg'
              The maximum of the length is 7 (msgs[6]). If you didn't
              use 'waitKeyMsg', you can use msgs[6]
        waitKeyMsg: If it is None, this function will return immediately
                    after drawing, or it will print 'waitKeyMsg' and wait a key.
        beep: It will beep if it is True
        flash: The screen will flash if it is True
    """
    if g.lastInfo == (title, msgs, waitKeyMsg, beep, flash):
        return  # It needn't redraw.
    g.lastInfo = (title, msgs, waitKeyMsg, beep, flash)
    # Do some preparation
    (scry, scrx) = g.scr.getmaxyx()
    assert scrx >= 50  # Console should be big enough
    assert scry > 8  # Console should be big enough
    g.scr.clear()
    # Start to draw
    g.scr.addstr(0, 0, ' ' * scrx * 8)  # Draw background
    # At the first line, draw title in center, with color pair of 2,
    # like this:' === TEXT === '
    g.scr.addstr(0, 1, center2(' %s ' % title, scrx - 2, '='),
                 curses.color_pair(2))
    for i, msg in enumerate(msgs[:7]):
        msg[0] = msg[0].replace('\n', '_').replace('\r', '_')  # no CR/LF
        if i == 6:
            space = 1
        else:
            space = 2
        msg[0] = limitLen(
            msg[0],
            g.scr.getmaxyx()[1] -
            space * 2)  # Keep it in a line with 'space' spaces in 2 sides
        g.scr.addstr(1 + i, 1, ' ' * (scrx - 2),
                     curses.color_pair(msg[1]))  # Fill this line
        g.scr.addstr(1 + i, space, msg[0],
                     curses.color_pair(msg[1]))  # Draw a message
    if waitKeyMsg is not None:
        waitKeyMsg = limitLen(waitKeyMsg, g.scr.getmaxyx()[1] - 2)
        g.scr.addstr(7, 1, waitKeyMsg, curses.color_pair(1))
    copyright = threelize('(C) 克兰软件工作室, 2010.', g.cText, 'cjxgm (兰威举)',
                          scrx - 2)
    g.scr.addstr(8, 1, copyright, curses.color_pair(7))
    g.scr.refresh()
    # Some tricks
    if beep == True:
        curses.beep()
    if flash == True:
        for i in range(2):
            curses.flash()
            time.sleep(0.1)
    # Do interactivation
    if waitKeyMsg is not None:
        g.scr.nodelay(False)
        return g.scr.getch()
Example #28
0
def look_out(msecs):

    curses.napms(msecs)

    if stdscr.getch() != -1:

        curses.beep()

        sys.exit(0)
Example #29
0
 def show_brief_message(self, message):
     curses.beep()
     keep_for_a_moment = self.value
     self.value = message
     self.editing=False
     self.display()
     curses.napms(1200)
     self.editing=True
     self.value = keep_for_a_moment
Example #30
0
 def auto_complete(self, keycode):
     if not self.value:
         suggestions = self.commands.keys()
         self.value = suggestions[self.get_choice(suggestions)]
     if not self.value[-1].isalnum():
         curses.beep()
         return
     self.value = self.value + ' '
     self.cursor_position = len(self.value)
Example #31
0
async def explode(canvas, center_row, center_column):
    rows, columns = get_frame_size(EXPLOSION_FRAMES[0])
    corner_row = center_row - rows / 2
    corner_column = center_column - columns / 2

    curses.beep()
    for frame in EXPLOSION_FRAMES:

        draw_frame(canvas, corner_row, corner_column, frame)

        await asyncio.sleep(0)
        draw_frame(canvas, corner_row, corner_column, frame, negative=True)
        await asyncio.sleep(0)
Example #32
0
async def explode(canvas, center_row, center_column):
    rows, columns = get_frame_size(EXPLOSION_FRAMES[0])
    corner_row = center_row - rows / 2
    corner_column = center_column - columns / 2
    # Subtract 4 columns to get rid of tabs in explosion frames
    corner_column -= 4

    beep()
    for frame in EXPLOSION_FRAMES:
        draw_frame(canvas, corner_row, corner_column, frame)
        await asyncio.sleep(0)
        draw_frame(canvas, corner_row, corner_column, frame, negative=True)
        await asyncio.sleep(0)
Example #33
0
def affichage_aire_de_jeu(hauteur, largeur, titre):
    win = curses.newwin(hauteur, largeur, 0, 0)
    win.keypad(1)
    curses.noecho()
    curses.curs_set(0)
    win.nodelay(1)
    win.box()

    curses.init_pair(2, curses.COLOR_RED, curses.COLOR_WHITE)
    win.addstr(0, 27, titre, curses.color_pair(2))
    win.refresh()
    curses.beep()
    return win
Example #34
0
 def reveal(self):
     safe = self.minefield.reveal(self.minePointer)
     if not safe:
         self.minefield.revealMines()
         self.ui.drawEntireBoard()
         self.complete = True
         curses.beep()
         time.sleep(5)
     else:
         self.ui.drawEntireBoard()
         if self.minefield.spacesLeft == 0:
             curses.beep()
             self.complete = True
Example #35
0
    def auto_complete(self, input):
        self.value = os.path.expanduser(self.value)
        
        directory, fname = os.path.split(self.value)
        # Let's have absolute paths.
        directory = os.path.abspath(directory)
        
        if self.value == '': 
            self.value=directory
            
        
        try: 
            flist = os.listdir(directory)
        except Exception:
            self.show_brief_message("Can't read directory!")
            return False
            
        flist = [os.path.join(directory, x) for x in flist]
        possibilities = list(filter(
            (lambda x: os.path.split(x)[1].startswith(fname)), flist
            ))

        if len(possibilities) == 0:
            # can't complete
            curses.beep()
            self.cursor_position = len(self.value)

        elif len(possibilities) == 1:
            if self.value != possibilities[0]:
                self.value = possibilities[0]
                if os.path.isdir(self.value) \
                    and not self.value.endswith(os.sep):
                    self.value = self.value + os.sep
            self.cursor_position = len(self.value)
        
        elif len(possibilities) > 1:
            self.value = os.path.commonprefix(possibilities)
            self.cursor_position = len(self.value)
            curses.beep()
            
        if os.path.isdir(self.value) and len(possibilities) < 2:
            self.parent.wMain.change_dir(self.value)
            if os.path.isdir(self.value) \
                and not self.value.endswith(os.sep):
                self.value = self.value + os.sep
            self.cursor_position = len(self.value)
            
            #self.h_exit_up(None)
        else:
            self.parent.value = directory
            self.parent.update_grid()
Example #36
0
def cars_func():
    global race_cars
    car_id = ""
    owners_name = ""
    s = curses.newwin(6, 25, 2, 1)
    s.box()
    s.addstr(1, 2, "A", hotkey_attr)
    s.addstr(1, 3, "dd a Racer", menu_attr)
    s.addstr(2, 2, "L", hotkey_attr)
    s.addstr(2, 3, "ist Racers", menu_attr)
    s.addstr(3, 2, "G", hotkey_attr)
    s.addstr(3, 3, "et Cars From File", menu_attr)
    s.addstr(1, 2, "", hotkey_attr)  #Reset Cursor Locaton
    s.refresh()
    c = s.getch()
    if c in (ord('A'), ord('a')):
        s1 = curses.newwin(6, 35, 3, 3)
        s1.box()
        curses.echo()
        curses.curs_set(1)
        s1.addstr(1, 1, "Add New Race Car Owner:")
        correct = False
        while not correct:
            s1.addstr(2, 1, "     Car ID:" + " " * 20)
            s1.addstr(3, 1, "Owners Name:" + " " * 20)
            s1.addstr(4, 1, " " * 20)
            s1.refresh()
            car_id = byte_to_str(s1.getstr(2, 14, 3))
            owners_name = byte_to_str(s1.getstr(3, 14, 20))
            s1.addstr(4, 1, "OK (Y/N)")
            c = s1.getch()
            if c in (ord('N'), ord('n')):
                correct = False
            else:
                correct = True
        race_cars[car_id] = Awana_Car(car_id, owners_name)
        save_car_to_file(race_cars[car_id])
        curses.noecho()
        curses.curs_set(0)
        s1.erase()
    elif c in (ord('L'), ord('l')):
        list_the_cars()
    elif c in (ord('G'), ord('g')):
        if get_cars_from_file():
            list_the_cars()
    else:
        curses.beep()
        curses.flash()
    s.erase()

    return CONTINUE
Example #37
0
    def selection_traceback(self):
        if not self.selected_task:
            return curses.beep()
        task = self.state.tasks[self.selected_task]
        if task.state not in states.EXCEPTION_STATES:
            return curses.beep()

        def alert_callback(my, mx, xs):
            y = count(xs).next
            for line in task.traceback.split("\n"):
                self.win.addstr(y(), 3, line)

        return self.alert(alert_callback,
                "Task Exception Traceback for %s" % self.selected_task)
Example #38
0
File: fire.py Project: 0xck/devman
async def fire(canvas,
               obstacles,
               obstacles_collisions,
               start_row,
               start_column,
               rows_speed=-0.3,
               columns_speed=0):
    """Display animation of gun shot. Direction and speed can be specified."""

    row, column = start_row, start_column

    canvas.addstr(round(row), round(column), '.')
    await asyncio.sleep(0)

    canvas.addstr(round(row), round(column), '+')
    await asyncio.sleep(0)

    canvas.addstr(round(row), round(column), '*')
    await asyncio.sleep(0)

    canvas.addstr(round(row), round(column), ' ')

    row += rows_speed
    column += columns_speed

    symbol = '-' if columns_speed else '|'

    rows, columns = canvas.getmaxyx()
    max_row, max_column = rows - 1, columns - 1

    curses.beep()

    while 1 < row < max_row and 0 < column < max_column:

        canvas.addstr(round(row), round(column), symbol)

        await asyncio.sleep(0)

        canvas.addstr(round(row), round(column), ' ')

        row += rows_speed
        column += columns_speed

        collisions = set(
            filter(lambda o: o.has_collision(row, column), obstacles))

        if collisions:
            obstacles_collisions.update(collisions)

            return
Example #39
0
	def mange_pomme(self, win: curses, pommes: list) -> bool:
		miam = False
		for pomme in pommes:
			if self.tete() == pomme.get_xy():
				curses.beep()
				miam = True
				pomme.afficher()
				while pomme.get_xy() in self.snake:
					pomme.afficher()
		if not miam:
			win.addstr(self.snake[-1][0], self.snake[-1][1], ' ', curses.color_pair(1))
			win.refresh()
			self.snake.pop()
		return miam
Example #40
0
    def selection_traceback(self):
        if not self.selected_task:
            return curses.beep()
        task = self.state.tasks[self.selected_task]
        if task.state not in states.EXCEPTION_STATES:
            return curses.beep()

        def alert_callback(my, mx, xs):
            y = count(xs)
            for line in task.traceback.split('\n'):
                self.win.addstr(next(y), 3, line)

        return self.alert(alert_callback,
                'Task Exception Traceback for {0.selected_task}'.format(self))
Example #41
0
 def draw_exception(self, exception):
     """Draw exception and wait for keypress.
     :exception: exits the program if user presses 'Q'
     """
     curses.beep()
     message = str(exception) + " Press any key to continue"
     self.screen.addstr(self.height, 0, message, self.color_exception)
     try:
         self.screen.nodelay(False)
         ch = self.screen.getch()
         if ch != -1 and chr(ch) == 'q':
             exit()
     finally:
         self.screen.addstr(self.height, 0, message, self.color_clear)
Example #42
0
def mainloop(scr):
    curses.mousemask(curses.ALL_MOUSE_EVENTS
                     )  #curses.BUTTON1_PRESSED)#curses.ALL_MOUSE_EVENTS)
    while 1:
        scr.keypad(1)
        curses.halfdelay(1)
        ch = scr.getch()
        if ch == "-1": scr.addstr(2, 0, '-1')
        scr.addstr(2, 0, str(ch))
        if ch == curses.KEY_MOUSE:
            scr.addstr(4, 0, "%s" % ' '.join(str(curses.getmouse())))
            curses.beep()
        #return ch
        scr.refresh()
Example #43
0
File: app.py Project: l-n-s/toot
    def do_command(self, ch):
        if curses.ascii.isprint(ch) or ch == curses.ascii.LF:
            text_window_height, text_window_width = self.text_window.getmaxyx()
            y, x = size_as_drawn((self.get_content() + chr(ch)).split('\n'),
                                 text_window_width)
            if y < text_window_height - 1 and x < text_window_width:
                self.content.insert(self.cursor_pos, chr(ch))
                self.cursor_pos += 1
            else:
                curses.beep()

        elif ch == curses.KEY_BACKSPACE:
            if self.cursor_pos > 0:
                del self.content[self.cursor_pos - 1]
                self.cursor_pos -= 1
            else:
                curses.beep()

        elif ch == curses.KEY_DC:
            if self.cursor_pos >= 0 and self.cursor_pos < len(self.content):
                del self.content[self.cursor_pos]
            else:
                curses.beep()

        elif ch == curses.KEY_LEFT:
            if self.cursor_pos > 0:
                self.cursor_pos -= 1
            else:
                curses.beep()

        elif ch == curses.KEY_RIGHT:
            if self.cursor_pos + 1 <= len(self.content):
                self.cursor_pos += 1
            else:
                curses.beep()

        elif ch in (curses.ascii.EOT,
                    curses.ascii.RS):  # ^D or (for some terminals) Ctrl+Enter
            return False, False

        elif ch == curses.ascii.ESC:
            self.clear()
            return False, True

        elif ch == curses.KEY_RESIZE:
            self.on_resize()
            return True, False

        self.refresh_text()
        return True, False
Example #44
0
    def letsstart():

        if __name__ == '__main__':
            curses.initscr()
            curses.beep()
            curses.beep()
            window = curses.newwin(HEIGHT, WIDTH, 0, 0)
            window.timeout(Speed)
            window.keypad(1)
            curses.noecho()
            curses.curs_set(0)
            window.border(0)

            snake = Snake(SNAKE_X, SNAKE_Y, window)
            food = Food(window, "'")
            obstacl = obstacle(window, "#     #      #    #")

            while True:
                window.clear()
                window.border(0)
                snake.render()
                food.render()
                obstacl.render()

                window.addstr(0, 5, snake.score)
                event = window.getch()

                if event == 27:
                    break

                if event in [KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT]:
                    snake.change_direction(event)

                if snake.head.x == food.x and snake.head.y == food.y:
                    snake.eat_food(food)

                if event == 32:
                    key = -1
                    while key != 32:
                        key = window.getch()

                if snake.head.x == obstacl.x and snake.head.y == obstacl.y:
                    break

                snake.update()
                if snake.collided:
                    break

            curses.endwin()
 def GameOver(sefl, window):
     window.clear()
     window.border()
     msg = "Game Over!"
     centro = round((60 - len(msg)) / 2)
     window.addstr(10, centro, msg)
     window.timeout(-1)
     curses.beep()
     q = None
     while q not in (ord("\n"), ord("m"), ord("q")):
         q = window.getch()
         if q == ord("q"):
             option = "quit"
             break
     return option
Example #46
0
def main(stdscr):
    global STDSCR
    STDSCR = stdscr

    init()
    direction = RIGHT_KEY
    tail = []
    end = False
    while not end:
        last_direction = direction
        direction = get_direction(last_direction)
        tail, end = move(tail, last_direction, direction)

    curses.beep()
    time.sleep(3)
Example #47
0
def topbar_key_handler(key_assign=None, key_dict={}):
    screen.addstr(1, 40, "Lanes in Use: " + str(cars_in_the_race) + "  ")
    screen.refresh()
    if key_assign:
        key_dict[ord(key_assign[0])] = key_assign[1]
    else:
        screen.refresh()
        c = screen.getch()
        if c in (curses.KEY_END, ord('!')):
            return 0
        elif c not in key_dict.keys():
            curses.beep()
            return 1
        else:
            return eval(key_dict[c])
Example #48
0
async def explode(canvas: Window, center_row: int, center_column: int) -> None:
    """Boom animation."""
    rows: int
    columns: int

    rows, columns = get_frame_size(EXPLOSION_FRAMES[0])
    corner_row = int(center_row - rows / 2)
    corner_column = int(center_column - columns / 2)

    curses.beep()
    for frame in EXPLOSION_FRAMES:
        draw_frame(canvas, corner_row, corner_column, frame)
        await eventloop.sleep(1)
        draw_frame(canvas, corner_row, corner_column, frame, negative=True)
        await eventloop.sleep(1)
Example #49
0
    def print_snake(self, check_dead=True):
        maxes = self.screen.getmaxyx()
        self.screen.clear()
        self.screen.border()
        if self.display_scores:
            interval = int(maxes[1] / 4)
            if interval < 12:
                p_string = "P: "
                w_string = "W: "
                s_string = "S: "
                l_string = "L: "
            else:
                p_string = "Points: "
                w_string = "Walls: "
                s_string = "Speed: "
                l_string = "Level: "
            self.screen.addstr(0, 2, l_string + str(int(self.level)))
            self.screen.addstr(
                0, 2 + interval, p_string + str(int(self.points)) + ' of ' +
                str(int(self.start_points + self.level_up)))
            self.screen.addstr(0, 2 + (interval * 2),
                               w_string + str(self.walls))
            self.screen.addstr(0, 2 + (interval * 3),
                               s_string + str(round(self.speed, 2)))

        if len(self.snake.a) < self.min_apples:
            self.snake.apple(maxes)
        if self.snake.eat(self.growth):
            curses.beep()
            self.points = self.points + self.walls
        if self.snake.dead(maxes) and check_dead:
            raise SnakeDead
        for i in range(self.snake.l):
            if i == 0:
                char = DIRECTION[self.snake.d]
            else:
                char = '*'
            self.screen.addstr(self.snake.p[i].y, (self.snake.p[i].x * 2),
                               char)
        for i in range(len(self.snake.a)):
            self.screen.addstr(self.snake.a[i].y, (self.snake.a[i].x * 2),
                               self.apple_char,
                               curses.color_pair(2) | curses.A_BOLD)
        for i in range(len(self.snake.b)):
            self.screen.addstr(self.snake.b[i].y, (self.snake.b[i].x * 2),
                               self.blocking_char,
                               curses.color_pair(3) | curses.A_BOLD)
        self.screen.refresh()
Example #50
0
def jeu(win):
    '''
	Moteur du jeu
	paramètre :
	  win : fenètre en cours
	retour :
	  score à la fin du jeu
	'''

    # initialisation du jeu
    # Le serpent se dirige vers la droite au début du jeu.
    # C'est comme si le joueur avait utilisé la flèche droite au clavier
    key = KEY_RIGHT
    score = 0

    # Definition des coordonnées du serpent
    # Le serpent est une liste de d'anneaux composées de leurs coordonnées ligne, colonne
    # La tête du serpent est en 4,10, l'anneau 1 en 4,9, le 2 en 4,8
    snake = [[4, 10], [4, 9], [4, 8]]

    # La nouriture (pomme) se trouve en 10,20
    food = [10, 20]

    # Affichage la nouriture en vert sur fond noir dans la fenêtre
    curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_BLACK)
    win.addch(food[0], food[1], chr(211),
              curses.color_pair(2))  # Prints the food

    # Affichage du serpent en bleu sur fond jaune
    curses.init_pair(3, curses.COLOR_BLUE, curses.COLOR_YELLOW)
    # sur toute la longeur du serpent
    for i in range(len(snake)):
        # affichage de chaque anneau dans la fenêtre en ligne, colonne
        win.addstr(snake[i][0], snake[i][1], '*', curses.color_pair(3))

    # Emission d'un beep  au début du jeu
    curses.beep()

    end = False

    # Tant que le joueur n'a pas quitter le jeu
    while key != 27 and not end:

        key = controle(win, key)
        snake, score = deplacement(win, score, key, snake, food)
        end = perdu(win, snake)

    return score
Example #51
0
def move_snake(snake, key, snake_num, score):

    global win
    global food
    global move

    if snake_num == 1:
        snake.insert(0, [
            snake[0][0] + ((key == 115 or key == 83) and 1) +
            ((key == 119 or key == 87) and -1), snake[0][1] +
            ((key == 97 or key == 65) and -1) +
            ((key == 100 or key == 68) and 1)
        ])

    elif snake_num == 2:
        snake.insert(0, [
            snake[0][0] + (key == KEY_DOWN and 1) + (key == KEY_UP and -1),
            snake[0][1] + (key == KEY_LEFT and -1) + (key == KEY_RIGHT and 1)
        ])

    # If snake crosses the boundaries, make it enter from the other side
    if snake[0][0] == 0: snake[0][0] = 18
    if snake[0][1] == 0: snake[0][1] = 58
    if snake[0][0] == 19: snake[0][0] = 1
    if snake[0][1] == 59: snake[0][1] = 1

    # If snake runs over itself
    if snake[0] in snake[1:]:
        win.addstr(0, 27, 'You Lose')
        move = False

    if move:
        if snake[0] == food:
            curses.beep()
            food = []
            score += 1
            while food == []:
                food = [randint(1, 18), randint(1, 58)]
                if food in snake: food = []
            win.addch(food[0], food[1], '*')

        else:
            last = snake.pop()
            win.addch(last[0], last[1], ' ')

        win.addch(snake[0][0], snake[0][1], '#')

    return score
Example #52
0
    def _prev_search_match(self, times=1):
        if not self.search_term:
            curses.beep()
            return

        moved = False
        for n in range(0, times):
            possible_matches = self.content()[:self.highlight_line]
            for i, line in enumerate(reversed(possible_matches)):
                if self.search_term in line.line:
                    self.highlight_line -= i + 1
                    moved = True
                    break

        if not moved:
            curses.beep()
Example #53
0
def timer_thread_function():
    """A function meant to be ran in a thread that checks whether or not a timer should go off now."""
    while True:
        for i, timer in enumerate(superglobals.timer_list):
            if timer.seconds - time.perf_counter() <= 0 and timer.bits & 0b01:
                superglobals.timer_list[i].bits &= 0b10
                for _ in range(10):
                    curses.beep()
                    time.sleep(0.05)
        for i, countdown in enumerate(superglobals.countdown_list):
            if countdown.seconds - time.perf_counter() <= 0 and \
            countdown.bits & 0b01:
                superglobals.countdown_list[i].bits &= 0b00
                for _ in range(10):
                    curses.beep()
                    time.sleep(0.05)
    def selection_rate_limit(self):
        if not self.selected_task:
            return curses.beep()
        task = self.state.tasks[self.selected_task]
        if not task.name:
            return curses.beep()

        my, mx = self.win.getmaxyx()
        r = "New rate limit: "
        self.win.addstr(my - 2, 3, r, curses.A_BOLD | curses.A_UNDERLINE)
        self.win.addstr(my - 2, len(r) + 3, " " * (mx - len(r)))
        rlimit = self.readline(my - 2, 3 + len(r))

        if rlimit:
            reply = control.rate_limit(task.name, rlimit.strip(), reply=True)
            self.alert_remote_control_reply(reply)
Example #55
0
async def fire(canvas: Window,
               start_row: float,
               start_column: float,
               rows_speed: float = -0.3,
               columns_speed: int = 0) -> None:
    """Display animation of gun shot, direction and speed can be specified."""
    row: float
    column: float

    rows: int
    columns: int
    max_row: int
    max_column: int

    row, column = start_row, start_column

    canvas.addstr(round(row), round(column), '*')
    await eventloop.sleep(1)

    canvas.addstr(round(row), round(column), 'O')
    await eventloop.sleep(1)
    canvas.addstr(round(row), round(column), ' ')

    row += rows_speed
    column += columns_speed

    symbol: str = '-' if columns_speed else '|'

    rows, columns = getmaxyx_border(canvas)
    max_row, max_column = rows - 1, columns - 1

    curses.beep()

    while 1 < row < max_row and 1 < column < max_column:
        collision: bool = False
        for obstacle in obstacles:
            if obstacle.has_collision(row, column, 1, 1):
                collision = True
                obstacles_in_last_collisions.append(obstacle)
                break
        if collision:
            break
        canvas.addstr(round(row), round(column), symbol)
        await eventloop.sleep(1)
        canvas.addstr(round(row), round(column), ' ')
        row += rows_speed
        column += columns_speed
Example #56
0
    def challenge_word(self, word):
        """runs a typing challenge loop 
            and returns (word, attempts, seconds_elapsed)
        """
        prompt = "\n$ %s\n> " % (word)
        start_time = timeit.default_timer()
        started = True
        attempts = 1
        correct = False
        char_index = 0
        answer = ""

        while started or not correct:
            started = False

            self.prompt(word)
            c = self.win_panel.window().getch()

            # escape key
            if c == 27:
                sys.exit(0)

            answer = answer + chr(c)

            self.echo_bar(answer)

            if chr(c) == word[char_index]:

                char_index += 1
                if char_index == len(word):
                    correct = True
                    elapsed = timeit.default_timer() - start_time
                    self.echo_bar("")
                    #self.echo_bar("CORRECT! %s %s" % (attempts, elapsed))
                    return {
                        "word": word,
                        "attempts": attempts,
                        "time": elapsed
                    }
            else:
                attempts += 1
                correct = False
                char_index = 0
                answer = ""
                curses.beep()
                #self.win_panel.window().refresh()
                self.echo_bar("")
Example #57
0
async def fire(canvas,
               start_row,
               start_column,
               rows_speed=-0.3,
               columns_speed=0):
    """Display animation of gun shot, direction and speed can be specified."""
    row, column = start_row, start_column

    for symb in '*O ':
        await sleep(1)
        canvas.addstr(round(row), round(column), symb)

    row += rows_speed
    column += columns_speed

    symbol = '-' if columns_speed else '|'

    rows, columns = canvas.getmaxyx()
    max_row, max_column = rows - 1, columns - 1

    curses.beep()

    shot_obstacles = create_frame_obstacles(row,
                                            column,
                                            symbol,
                                            uid=uid_shot_name)

    while 0 < row < max_row and 0 < column < max_column:
        canvas.addstr(round(row), round(column), symbol)
        await sleep(1)
        canvas.addstr(round(row), round(column), ' ')
        row += rows_speed
        column += columns_speed
        shot_obstacles.row += rows_speed
        shot_obstacles.column += columns_speed

        for obstacle in OBSTACLES:
            if obstacle.uid == uid_garbage_name and \
                    obstacle.has_collision(obj_corner_row=shot_obstacles.row, obj_corner_column=shot_obstacles.column,
                                           obj_size_rows=shot_obstacles.rows_size,
                                           obj_size_columns=shot_obstacles.columns_size):
                OBSTACLES_IN_LAST_COLLISIONS.append(obstacle)
                OBSTACLES.remove(shot_obstacles)
                return None
    if shot_obstacles in OBSTACLES:
        OBSTACLES.remove(shot_obstacles)
        return None
Example #58
0
 def affichage_aire_de_jeu(self, titre: str) -> curses:
     curses.initscr()
     curses.start_color()
     curses.init_pair(2, curses.COLOR_RED, curses.COLOR_WHITE)
     curses.init_pair(3, curses.COLOR_BLUE, curses.COLOR_YELLOW)
     curses.init_pair(4, curses.COLOR_WHITE, curses.COLOR_RED)
     win = curses.newwin(self.hauteur, self.largeur, 0, 0)
     win.keypad(1)
     curses.noecho()
     curses.curs_set(0)
     win.nodelay(1)
     win.box()
     win.addstr(0, self.largeur // 2 - len(titre) // 2, titre,
                curses.color_pair(2))
     win.refresh()
     curses.beep()
     return win
Example #59
0
    def UpdateSearch(self):
        if not self.search:
            return

        if not self.search.done():
            return

        curses.flash()
        curses.beep()
        self.state['moveready'] = True
        idx = 0 if self.state['board'].turn else 1
        self.state['timer'][idx] += INCREMENT_MS
        self.state['movetimer'][1 - idx] = 0
        self.state['board'].push(self.search.result().bestmove)
        self.state['nextmove'] = ''
        self.search = None
        self.StartSearch()
Example #60
0
def mange_pomme(win, food, snake, score):
    '''
	Le serpent a-t-il mangé la pomme ?
	paramètres :
	  win : fenètre en cours
	  food : liste des coordonnées de la pomme
	  snake : liste des coordonnées des anneaux du serpent
	  score : score en cours
	retour :
	  Tuple constitué de :
	    - la liste des coordonnées actualisées de la pomme,
	    - la liste des coordonnées du serpent,
	    - la liste des coordonnées du dernier anneau à supprimer
	    - le score en cours
	'''
    # initialisation de la liste contenant les coordonnées du dernier anneau du serpent
    last = [0, 0]

    # Si le serpent a mangé la pomme
    if snake[0] == food:
        # Emettre un beep
        curses.beep()

        # incrémenter le score
        score += 1

        # Réactualiser les coordonnées de la pomme
        # On recommence tant que les coordonnées de la pomme sont dans le serpent
        while food in snake:

            # On actualise au hasard les coordonnées de la pomme
            # dans les limite de la fenêtre
            # voir la documentation de la fonction window.getmaxyx()
            food[0] = randint(1, win.getmaxyx()[0] - 2)
            food[1] = randint(1, win.getmaxyx()[1] - 2)

        # Affichage de la pomme aux nouvelles coordonnées en vert sur fond noir
        win.addch(food[0], food[1], chr(211), curses.color_pair(2))
        win.refresh()

    # Sinon
    else:
        # Suppression du dernier anneau du serpent
        last = snake.pop()

    return food, snake, last, score