Data-Reporter
view release on metacpan or search on metacpan
bin/VisRep.pl view on Meta::CPAN
$visrep->{MAIN_SEC}->generate(\*OUT);
#print default main
print OUT "\n#SECTION: DEFAULT_MAIN 0\n";
print OUT "#CODE AREA\n";
my $code="";
if ($visrep->{VBREAKS} > 0) {
$code .= "\tmy %rep_breaks = ();\n";
foreach my $key (keys %{$visrep->{BREAKS}}) {
$code .= "\t\$rep_breaks{$key} = $visrep->{BREAKS}->{$key};\n";
}
}
if ($visrep->{SOURCE} eq "Filesource") {
$code .= "\tmy \$source = new Data::Reporter::Filesource(File => ".
"\"$visrep->{SOURCEFILENAME}\");\n";
} else {
if ($visrep->{CONNECTION} eq "file") {
$code .= "\tmy \$source = new Data::Reporter::$visrep->{SOURCE}(File => ".
"\"$visrep->{CONNECTIONFILENAME}\",\n";
}elsif ($visrep->{CONNECTION} eq "arguments") {
$code .= "\tmy \$source = new Data::Reporter::$visrep->{SOURCE}(Arguments => ".
"\\\@ARGV,\n";
}
$code .= "\t\tQuery => '$visrep->{QUERY}');\n";
}
$code .= "\tmy \$report = new Data::Reporter();\n";
#print report configure"
$code .= "\t\$report->configure(\n";
$code .= "\t\tWidth\t=> $visrep->{VSIZEX},\n";
$code .= "\t\tHeight\t=> $visrep->{VSIZEY},\n";
if (defined($visrep->{FOOTER_SEC})) {
$code .= "\t\tSubFooter\t=> \\&FOOTER,\n";
my $size = $visrep->{FOOTER_SEC}->size();
$code .= "\t\tFooter_size\t=> $size,\n";
}
$code .= "\t\tSubFinal \t=> \\&FINAL,\n"
if (defined($visrep->{FINAL_SEC}));
$code .= "\t\tBreaks\t=> \\%rep_breaks,\n" if ($visrep->{VBREAKS} > 0);
$code .= "\t\tSubHeader\t=> \\&HEADER,\n";
$code .= "\t\tSubTitle\t=> \\&TITLE,\n";
$code .= "\t\tSubDetail\t=> \\&DETAIL,\n";
$code .= "\t\tSource\t=> \$source,\n";
$code .= "\t\tFile_name\t=> \"$visrep->{OUTPUTFILE}\"\n";
$code .= "\t);\n";
$code .= "\t\$report->generate();\n";
print OUT $code;
print OUT "#END\n";
#close output file
close OUT;
}
sub create_menu() {
my $topwin = $visrep->{TOPWIN};
my $menu_bar = $topwin->Frame()->pack(side => 'top',
fill => 'x');
#create file menu
my $file_menu = $menu_bar->Menubutton(text => 'File',
relief => 'raised',
borderwidth => 2,
)->pack(side => 'left',
padx => 2
);
#New option
$file_menu->command(-label => 'New',
accelerator => 'Meta+N',
underline => 0,
command => sub {delete_extrasections();
defaults();
update_textarea();
}
);
#Open option
$file_menu->command(-label => 'Open',
accelerator => 'Meta+O',
underline => 0,
command => sub { open_file();}
);
#Save option
$file_menu->command(-label => 'Save',
accelerator => 'Meta+S',
underline => 0,
command => sub { save();}
);
#Quit option
$file_menu->command(-label => 'Quit',
accelerator => 'Meta+Q',
underline => 0,
command => sub {exit(0)}
);
#create Section menu
my $section_menu = $menu_bar->Menubutton(text => 'Section',
relief => 'raised',
borderwidth => 2,
)->pack(side => 'left',
padx => 2
);
#Header option
$section_menu->command(-label => 'Header',
accelerator => 'Meta+H',
underline => 0,
command => sub { update_section();
load_section($visrep->{HEADER_SEC});
}
);
#Title option
$section_menu->command(-label => 'Title',
accelerator => 'Meta+T',
underline => 0,
command => sub { update_section();
load_section($visrep->{TITLE_SEC});
}
);
#Detail option
$section_menu->command(-label => 'Detail',
accelerator => 'Meta+D',
underline => 0,
command => sub { update_section();
load_section($visrep->{DETAIL_SEC});
}
);
#create the separator
$section_menu->separator();
$visrep->{SECTIONMENU} = $section_menu;
#create the areas menu
my $area_menu = $menu_bar->Menubutton(text => 'Areas',
relief => 'raised',
borderwidth => 2,
)->pack(side => 'left',
padx => 2
);
#Uses option
$area_menu->command(-label => 'Uses',
accelerator => 'Meta+U',
underline => 0,
command => sub { update_section();
load_section($visrep->{USES_SEC});
}
);
#functions option
$area_menu->command(-label => 'Functions',
accelerator => 'Meta+F',
underline => 0,
command => sub { update_section();
load_section($visrep->{FUNCTIONS_SEC});
}
);
#main option
$area_menu->command(-label => 'Main',
accelerator => 'Meta+M',
underline => 0,
command => sub { update_section();
load_section($visrep->{MAIN_SEC});
}
);
#create the insert menu
my $insert_menu = $menu_bar->Menubutton(text => 'Insert',
relief => 'raised',
borderwidth => 2,
)->pack(side => 'left',
padx => 2
);
#Break option
$insert_menu->command(-label => 'Break',
accelerator => 'Meta+B',
underline => 0,
command => sub {insert_sec("BREAK");}
);
#Footer option
$insert_menu->command(-label => 'Footer',
accelerator => 'Meta+F',
underline => 0,
command => sub {insert_sec("FOOTER");}
);
#Final option
$insert_menu->command(-label => 'Final',
accelerator => 'Meta+i',
underline => 1,
command => sub {insert_sec("FINAL");}
);
#create the source menu
my $source_menu = $menu_bar->Menubutton(text => 'Source',
relief => 'raised',
borderwidth => 2,
)->pack(side => 'left',
padx => 2
);
#File option
$source_menu->radiobutton(-label => 'Filesource',
value => 'Filesource',
variable => \$visrep->{SOURCE},
command => \&ask_sourcefile
);
#sources options
foreach my $type (keys %{$visrep->{SOURCES}}) {
$source_menu->radiobutton(-label => $type,
value => $type,
variable => \$visrep->{SOURCE},
command => \&ask_query
);
}
#create the connection menu
my $connection_menu = $menu_bar->Menubutton(text => 'Connection',
relief => 'raised',
borderwidth => 2,
)->pack(side => 'left',
padx => 2
);
#File option
$connection_menu->radiobutton(-label => 'File',
value => 'file',
variable => \$visrep->{CONNECTION},
command => \&ask_connectionfile
);
#Argument option
$connection_menu->radiobutton(-label => 'Arguments',
value => 'arguments',
variable => \$visrep->{CONNECTION}
);
}
sub delete_extrasections() {
my $menu = $visrep->{SECTIONMENU}->cget("-menu");
my $cont = $visrep->{VBREAKS};
$cont++ if (defined($visrep->{FOOTER_SEC}));
$cont++ if (defined($visrep->{FINAL_SEC}));
$menu->delete(5,4+$cont) if ($cont > 0);
}
sub open_file() {
my $FS = $visrep->{TOPWIN}->FileSelect(-directory => cwd());
my $filename = $FS->Show();
if ($filename ne "") {
delete_extrasections();
defaults();
$visrep->{PROGRAMNAME} = $filename;
parse_file();
load_section($visrep->{HEADER_SEC});
resize();
}
}
sub parse_file() {
my $error = 0;
open INPUTFILE, $visrep->{PROGRAMNAME} or $error=1;
if ($error) {
gen_error("Can´t open file $visrep->{PROGRAMNAME}!!!");
return;
}
my @data = <INPUTFILE>;
close INPUTFILE;
my $nlines = @data + 0;
my $laststage = 0;
my $actualstage=0;
my $index = 1;
my $line;
my $only_code = 1;
my $section="";
( run in 2.001 seconds using v1.01-cache-2.11-cpan-cdf2f3d4e48 )