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