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 )