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')
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
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()
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
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
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()