예제 #1
0
def execute_command(command, task_manager, ui):

    if command == 'exit':
        ui.display('Bye!')
        sys.exit()
    elif command == 'help':
        ui.help()
    elif command == 'list':
        message = task_manager.get_items_as_table()
        ui.display(message)
    elif command.startswith('todo '):
        description = command.split(" ", 1)[1]
        message = task_manager.add_item(todo.ToDo(description, False))
        ui.display(message)
    elif command.startswith('deadline '):
        command_part = command.split(" ", 1)[1]
        description = remove_from_word(command_part, 'by:')
        dl = remove_to_word(command_part, 'by:')
        message = task_manager.add_item(
            deadline.Deadline(description, False, dl))
        ui.display(message)
    elif command.startswith('done '):
        message = task_manager.done_item(command)
        ui.display(message)
    elif command.startswith('pending '):
        message = task_manager.pending_item(command)
        ui.display(message)
    elif command.startswith('delete '):
        message = task_manager.delete_item(command)
        ui.display(message)
    else:
        ui.display('Invalid command')
예제 #2
0
    def __load_item_from_csv_line(self, row, items):
        """
        From the specified CSV, it will read the CSV row by row and create todo
        and deadline objects respectively.

        Parameters
        ----------
        row : Each line in CSV passed from csv_reader
            If CSV line starts with 'T', create ToDo instance, else
            if line starts with 'D', create Deadline instance.

        Raises
        ------
        IndexError
            Raises IndexError if unable to get indexes of row.

        Returns
        -------
        None.

        """
        try:
            if row[0] == 'T':
                items.append(
                    td.ToDo(row[1], True if row[2] == 'True' else False))
            elif row[0] == 'D':
                items.append(
                    dl.Deadline(row[1], True if row[2] == 'True' else False,
                                row[3]))
        except IndexError:
            raise IndexError
        return
예제 #3
0
 def load_data(self):
     data_file = open(self.storage)
     deliveries_reader = csv.reader(data_file)
     for row in deliveries_reader:
         if row[0] == 'T':
             items.append(
                 todo.ToDo(row[1], True if row[2] == 'done' else False))
         elif row[0] == 'D':
             items.append(
                 deadline.Deadline(row[1],
                                   True if row[2] == 'done' else False,
                                   row[3]))
     data_file.close()
예제 #4
0
파일: watchable.py 프로젝트: qilinkang/silk
    def watch(self, lambda_func, timeout = None, must_update = False):
        retval = None

        deadline = silk_deadline.Deadline(timeout)

        updated = not must_update

        self.__lock.acquire()

        while True:

            if updated:
                # First check to see if the value is what we want
                #
                retval = lambda_func(self.value)
                if retval:
                    break

            # Otherwise, add ourselves to the wait list
            watch_event = threading.Event()
            self.__watchers.append(watch_event)

            self.__lock.release()
            wait_result = watch_event.wait(deadline.get_remaining_seconds())
            updated = True
            self.__lock.acquire()

            self.__watchers.remove(watch_event)

            # Bail if we timed out
            if wait_result is not True:
                break

        self.__lock.release()

        return retval
예제 #5
0
 def fetch_deadlines(self, chat_id):
     stmt = """SELECT * FROM deadlines WHERE chat_id = (?) ORDER BY dl_time"""
     results = [(deadline_id, deadline.Deadline(t, c))
                for (deadline_id, c_id, t,
                     c) in self.conn.execute(stmt, (chat_id, ))]
     return results
예제 #6
0
def start_game(save=None):

    global game, main_menu, saves_menu
    game = True

    # Music
    pygame.mixer.Channel(4).set_volume(0.75)
    pygame.mixer.Channel(4).play(pygame.mixer.Sound(
        get_data_path('game_sound.ogg', 'music')),
                                 loops=-1)

    pygame.mixer.Channel(3).pause()
    surface.fill((0, 0, 0))

    # Level number
    LEVEL = 1
    # Maze parameters (X * Y)
    level_width = 15
    level_height = 15

    # FIRE
    fire_speed = 80
    fire_list_coords = None
    fire_delay = 227 + 1

    # PLAYER MOVEMENT
    player_mv = 1
    player_mv_extra = 2

    # Player
    gravity = False
    player_x = 32
    player_y = 96

    deadline_lvl = None

    # Loading save if it exists
    if save is not None:
        LEVEL = save['level_num']
        gravity = save['gravity']
        level_width = save['level_width']
        level_height = save['level_height']
        fire_speed = save['fire_speed']
        player_mv = save['player_mv']
        player_mv_extra = save['player_mv_extra']
        player_x = save['player_x']
        player_y = save['player_y']
        fire_list_coords = save['fire_coords']
        fire_delay = 0

    while game:

        player = Player(player_x,
                        player_y,
                        move_speed=player_mv,
                        mv_extra_multi=player_mv_extra,
                        gravity=gravity)

        if save is None:
            level = create_level(level_width, level_height, LEVEL)
        else:
            level = save['level']

        deadline_lvl = deadline.Deadline(level,
                                         player,
                                         g_width,
                                         g_height,
                                         fire_speed,
                                         theme=fd_theme,
                                         fire_list_coords=fire_list_coords,
                                         fire_delay=fire_delay)

        # After finishing loaded level need to set defult values for next
        # levels
        if save is not None:
            save = None
            player_x = 32
            player_y = 96
            fire_delay = 227 + 1

        result = deadline_lvl.run_game(False)

        if result == 1:
            game = False
        elif result == 3:
            LEVEL += 1
            if fire_speed != 30:
                fire_speed -= 5
            level_width += 3
            level_height += 3
            if player_mv < 3:
                player_mv += 0.11
            if player_mv_extra == 1:
                player_mv_extra -= 0.05
            game = True
        elif result == 2:
            game = False
            scores_menu.add_score(LEVEL * 100)

            # Stop soundtrack
        elif result == 7:
            game = False
            date = datetime.date.today()
            time = datetime.datetime.now().time()
            save = {
                # Time of saving
                f'date': f'{date}_{str(time)[:8]}',
                # Data to create level
                'level_num': LEVEL,
                'level_width': level_width,
                'level_height': level_height,
                'level': deadline_lvl.get_level(),
                'fire_coords': deadline_lvl.fire_list_coords,

                # Player information
                'gravity': gravity,
                'fire_speed': fire_speed,
                'player_mv': player_mv,
                'player_mv_extra': player_mv_extra,
                'player_x': player.rect.x,
                'player_y': player.rect.y
            }
            saves_menu.add_new_save(save)

        # Reseting menu if player want to clear it
        saves_menu.menu.full_reset()
        scores_menu.menu.full_reset()
        main_menu.full_reset()
        create_main_menu()

    del deadline_lvl
    del player
    if not game:
        pygame.mixer.Channel(4).stop()
        pygame.mixer.Channel(3).unpause()