1#!/usr/local/bin/perl -w 2# 3# VIT - Visual Interactive Taskwarrior 4# 5# %BUILD% 6# 7# Copyright 2012 - 2013, Steve Rader 8# Copyright 2013 - 2014, Scott Kostyshak 9 10use strict; 11use Curses; 12use Time::HiRes qw(usleep); 13 14our $commands_file = '%prefix%/etc/vit-commands'; 15our $task = '%TASK%'; 16our $clear = '%CLEAR%'; 17if ( $commands_file =~ /^%/ ) { $commands_file = "./commands"; } 18if ( $task =~ /^%/ ) { $task = '/usr/local/bin/task'; } 19if ( $clear =~ /^%/ ) { $clear = '/usr/bin/clear'; } 20 21our $cli_args = ''; 22our $audit = 0; 23our @colors2pair; 24our $convergence = ''; 25our $current_command = 'unknown'; 26our $cursor_position = 'unknown'; 27our $default_command = 'next'; 28our $display_start_idx = 0; 29our $error_delay = 500000; 30our $error_msg = ''; 31our $flash_convergence = 0; 32our $flash_delay = 80000; 33our $header_win; 34our $header_attrs; 35our $input_mode = 'cmd'; 36our $num_projects = 0; 37our $num_tasks = 0; 38our $feedback_msg = ''; 39our @parsed_tokens = (); 40our @parsed_colors_fg = (); 41our @parsed_colors_bg = (); 42our @parsed_attrs = (); 43our $prev_display_start_idx; 44our $prev_ch = ''; 45our $prev_command = 'next'; 46our $prev_convergence = ''; 47our $prev_task_selected_idx; 48our @project_types = (); 49our $prompt_win; 50our $refresh_needed = 0; 51our $reread_needed = 0; 52our $report_descr = 'unknown'; 53our $report_win; 54our @report_header_tokens = (); 55our @report_header_colors_fg = (); 56our @report_header_colors_bg = (); 57our @report_header_attrs = (); 58our @report_tokens = (); 59our @report_lines = (); 60our @report_types = (); 61our @report_colors_fg = (); 62our @report_colors_bg = (); 63our @report_attrs = (); 64our @report2taskid = (); 65our $search_direction = 1; 66our $search_pat = ''; 67our $selection_attrs = ''; 68our @taskid2report = (); 69our $tasks_completed = 0; 70our $tasks_pending = 0; 71our $task_selected_idx = 0; 72our $titlebar = 0; 73our $version = '%VERSION%'; 74our $REPORT_LINES; 75our $REPORT_COLS; 76 77our $COLOR_HEADER = 1; 78our $COLOR_REPORT_HEADER = 2; 79our $COLOR_SELECTION = 3; 80our $COLOR_EMPTY_LINE = 4; 81our $COLOR_ERRORS = 5; 82our $next_color_pair = 6; 83 84our %shortcuts; 85our $cur_pos; 86 87require 'args.pl'; 88require 'cmdline.pl'; 89require 'cmds.pl'; 90require 'color.pl'; 91require 'exec.pl'; 92require 'curses.pl'; 93require 'draw.pl'; 94require 'env.pl'; 95require 'getch.pl'; 96require 'misc.pl'; 97require 'prompt.pl'; 98require 'read.pl'; 99require 'screen.pl'; 100require 'search.pl'; 101 102################################################################### 103## main... 104 105&parse_args(); 106&parse_vitrc(); 107&init_shell_env(); 108&init_curses('init'); 109&init_task_env(); 110&read_report('init'); 111&draw_screen(); 112&getch_loop(); 113&clean_exit(); 114 115