def setUp(self): self.taskrc_path = "tests/test_data/.taskrc" self.task_dir_path = "tests/test_data/.task" self.assertEqual(os.path.isdir(self.taskrc_path), False) self.assertEqual(os.path.isdir(self.task_dir_path), False) # Create a sample .taskrc with open(self.taskrc_path, "w+") as file: file.write("# User Defined Attributes\n") file.write("uda.estimate.type=duration\n") file.write("uda.estimate.label=Est\n") file.write("# User Defined Attributes\n") file.write("uda.tb_estimate.type=numeric\n") file.write("uda.tb_estimate.label=Est\n") file.write("uda.tb_real.type=numeric\n") file.write("uda.tb_real.label=Real\n") # Create a sample empty .task directory os.makedirs(self.task_dir_path) self.screen = Screen( tw_data_dir=self.task_dir_path, taskrc_location=self.taskrc_path, scheduled="today", )
def main(self): """Initialize the screen and notifier, and start the main loop of the interface.""" if self.show_notifications: self.notifier = Notifier(self.backend) else: self.notifier = None self.screen = Screen( self.schedule, scheduled_after=self.scheduled_after, scheduled_before=self.scheduled_before, hide_empty=self.hide_empty, hide_projects=self.hide_projects, ) try: self.run() except TaskDirDoesNotExistError as err: print("Error: {}".format(err)) sys.exit(1) except TaskrcDoesNotExistError as err: print("Error: {}".format(err)) sys.exit(1) except KeyboardInterrupt: self.screen.close() except ValueError as err: self.screen.close() print("Error: {}".format(err)) sys.exit(1) except UDADoesNotExistError as err: self.screen.close() print("Error: {}".format(err)) sys.exit(1) except SoundDoesNotExistError as err: self.screen.close() print("Error: {}".format(err)) sys.exit(1) else: try: self.screen.close() except curses_error as err: print(err.with_traceback)
def main(argv): """Display a schedule report for taskwarrior.""" parser = argparse.ArgumentParser( description="""Display a schedule report for taskwarrior.""") parser.add_argument('-r', '--refresh', help="refresh every n seconds", type=int, default=1) parser.add_argument('--from', help="scheduled from date: ex. 'today', 'tomorrow'", type=str, dest='after') parser.add_argument('--until', help="scheduled until date: ex. 'today', 'tomorrow'", type=str, dest='before') parser.add_argument('-s', '--scheduled', help="""scheduled date: ex. 'today', 'tomorrow' (overrides --from and --until)""", type=str) parser.add_argument('-a', '--all', help="show all hours, even if empty", action='store_true', default=False) parser.add_argument('-c', '--completed', help="hide completed tasks", action='store_false', default=True) parser.add_argument('-p', '--project', help="hide project column", action='store_true', default=False) args = parser.parse_args(argv) hide_empty = not args.all if args.scheduled: if args.before or args.after: print('Error: The --scheduled option can not be used together ' 'with --until and/or --from.') sys.exit(1) else: if args.before and not args.after or not args.before and args.after: print('Error: Either both --until and --from or neither options ' 'must be used.') sys.exit(1) if not args.before and not args.after: args.scheduled = 'today' elif not args.before: args.before = 'tomorrow' elif not args.after: args.after = 'yesterday' screen = Screen(hide_empty=hide_empty, scheduled_before=args.before, scheduled_after=args.after, scheduled=args.scheduled, completed=args.completed, hide_projects=args.project) last_refresh_time = 0 try: while True: key = screen.stdscr.getch() if key == 113: break if (key == KEY_RESIZE or time.time() > last_refresh_time + args.refresh): last_refresh_time = time.time() screen.refresh_buffer() screen.draw() napms(50) except KeyboardInterrupt: pass finally: screen.close()
def screen(tw, schedule): screen = Screen(schedule, schedule.scheduled_after, schedule.scheduled_before) yield screen