GuiBuilder
view release on metacpan or search on metacpan
lib/GuiBuilder.pm view on Meta::CPAN
sub main {
my \$main;
my \$row_num_1;
\$main = MainWindow->new;
\$main->configure(-title => '$title');
my \$pane = \$main->Scrolled('Pane', -scrollbars=>'osoe',-sticky=>'ewns',-width=>1000, -height=>500);
my \$sframe = \$pane->Frame();
EOF
;
print F_TMP "\n";
# Declaring the frames.
$max_frames = &get_max_frame();
for(my $idx = 1; $idx <= $max_frames; $idx++) {
my $frame_name = "\$frame_"."$idx";
print F_TMP " my $frame_name = \$sframe->Frame();\n";
$row_start_for_frame{$idx} = 1;
$num_row_in_frame{$idx} = 0;
}
print F_TMP "\n";
# Find maximum row number for each frame.
for(my $grid_cnt = 0; $grid_cnt < @grid_array; $grid_cnt++) {
my $grid_str = $grid_array[$grid_cnt];
my ($field_name, $frame, $row, $col) = &unpack_grid_data($grid_str);
if($DBG_ON) { print("num_row_in_frame{$frame} = $num_row_in_frame{$frame}, row = $row.\n"); }
if($num_row_in_frame{$frame} < $row) {
$num_row_in_frame{$frame} = $row;
}
if($DBG_ON) { print("num_row_in_frame{$frame} = $num_row_in_frame{$frame}.\n"); }
}
# Generating starting row number for each frame.
for(my $idx = 1; $idx <= $max_frames; $idx++) {
my $id_2;
for($id_2 = 1; $id_2 < $idx; $id_2++) {
$row_start_for_frame{$idx} += $num_row_in_frame{$id_2};
}
}
close(F_GI);
open(F_GI, "<$gui_file") or die("$!");
# Copying existing code from gui_file to tmp file.
my $line;
while($line = <F_GI>) {
print F_TMP $line;
}
close(F_TMP);
close(F_GI);
# Copying content from tmp file to gui_file.
open(F_GI, ">$gui_file") or die("$!");
open(F_TMP, "<$tmp_file_name") or die("$!");
while($line = <F_TMP>) {
print F_GI $line;
}
close(F_TMP);
# Adding new code at the end in gui file.
print F_GI " # Adding grids for different frames for different groups.\n";
print F_GI " \$pane -> grid(-row=>1,-column=>1,-columnspan=>1,-sticky=>'w');\n";
print F_GI " \$sframe -> grid(-row=>1,-column=>1,-columnspan=>1,-sticky=>'w');\n";
my $frame_name;
for(my $idx = 1; $idx <= $max_frames; $idx++) {
$frame_name = "\$frame_"."$idx";
my $row_var_name = "\$row_num_"."$idx";
print F_GI " my $row_var_name = $row_start_for_frame{$idx};\n";
print F_GI " $frame_name -> grid(-row=>$row_var_name,-column=>1,-columnspan=>1,-sticky=>'w');\n";
}
print F_GI " my \$developer = $frame_name->Label(-text => \"Developed By: Sandeep Vaniya, eInfochips Ltd.\", -border=>2, -relief=>'ridge');\n";
print F_GI "\n";
print F_GI " # Adding grids for different objects.\n";
for(my $grid_cnt = 0; $grid_cnt < @grid_array; $grid_cnt++) {
my $grid_str = $grid_array[$grid_cnt];
my ($field_name, $frame, $row, $col) = &unpack_grid_data($grid_str);
print F_GI " $field_name->grid(-row=>$row,-column=>$col,-padx=>$pad_x_all,-pady=>$pad_y_all,-sticky=>'w');\n";
}
my $row_num = $row_start_for_frame{$max_frames} + $num_row_in_frame{$max_frames} + 1;
print F_GI " \$developer->grid(-row=>$row_num,-column=>1,-padx=>$pad_x_all,-pady=>$pad_y_all,-sticky=>'w');\n";
print F_GI "\n";
print F_GI<<EOF
MainLoop;
} # main
EOF
;
}
#------------------------------------------------------------------------------
sub process_options_array {
my $option_str;
my @option_param_array;
for(my $opc_cnt = 0; $opc_cnt < @gui_options_array; $opc_cnt++) {
$option_str = $gui_options_array[$opc_cnt];
@option_param_array = split(/#/, $option_str);
if($option_param_array[$TYPE_IDX] =~ /^Checkbutton$/) {
process_check_button(@option_param_array);
}
elsif($option_param_array[$TYPE_IDX] =~ /^Button$/) {
process_button(@option_param_array);
}
elsif($option_param_array[$TYPE_IDX] =~ /^Text$/) {
process_text_box(@option_param_array);
}
elsif($option_param_array[$TYPE_IDX] =~ /^Radiobutton$/) {
process_radio_button(@option_param_array);
}
elsif($option_param_array[$TYPE_IDX] =~ /^Listbox$/) {
process_list_box(@option_param_array);
}
elsif($option_param_array[$TYPE_IDX] =~ /^Label$/) {
process_label(@option_param_array);
}
else {
print("ERROR: Illegal Options specified.\n");
}
}
if(@gui_options_array == 0) {
my $msg_box = $main->MsgBox(-title => "No Options Specified...", -icon=>'error', -type=>'ok', -message=>"No Options are specified...\n");
my $button = $msg_box->Show;
exit;
}
}
#------------------------------------------------------------------------------
lib/GuiBuilder.pm view on Meta::CPAN
my $enter_field_details_label = $frame_2->Label(-text => "Enter Field Details");
# logic for 'Name' Label.
my $name_label = $frame_2->Label(-text => "Name");
# logic for 'Name Text' Text box.
my $name_text_text_box = $frame_2->Text(-width => '29', -height => '1');
$field_ref_hash{name_text} = $name_text_text_box;
# logic for 'Frame Row Column Number Separated by Comma' Label.
my $frame_row_column_number_separated_by_comma_label = $frame_2->Label(-text => "Frame Row Column Number Separated by Comma");
# logic for 'Frame Row Column Number Text' Text box.
my $frame_row_column_number_text_text_box = $frame_2->Text(-width => '9', -height => '1');
$field_ref_hash{frame_row_column_number_text} = $frame_row_column_number_text_text_box;
# logic for 'List Elements for List Box' Label.
my $list_elements_for_list_box_label = $frame_2->Label(-text => "List Elements for List Box Separated by Comma");
# logic for 'List Element Text' Text box.
my $list_element_text_text_box = $frame_2->Text(-width => '29', -height => '1');
$field_ref_hash{list_element_text} = $list_element_text_text_box;
# logic for 'Group Name for Radio Button' Label.
my $group_name_for_radio_button_label = $frame_2->Label(-text => "Group Name for Radio Button");
# logic for 'Group Name for Radio Button Text' Text box.
my $group_name_for_radio_button_text_text_box = $frame_2->Text(-width => '29', -height => '1');
$field_ref_hash{group_name_for_radio_button_text} = $group_name_for_radio_button_text_text_box;
# logic for 'Select Field To be Removed' Label.
my $select_field_to_be_removed_label = $frame_3->Label(-text => "Select Field To be Removed");
# logic for 'List Box To Remove Field' Listbox.
my $list_box_to_remove_field_button = $frame_3->Scrolled("Listbox", -selectmode=>'single', -exportselection=>0, -width=>88, -height=>10);
$list_box_to_remove_field_button -> insert('end', "");
$list_box_to_remove_field_button -> activate(0);
$field_ref_hash{list_box_to_remove_field} = $list_box_to_remove_field_button;
# logic for 'Add Field' Button.
my $add_field_button = $frame_2->Button(-text => ' Add Field ', -command => sub{add_field_action($main, $list_box_to_remove_field_button);});
# logic for 'Delete Field' Button.
my $delete_field_button = $frame_3->Button(-text => ' Delete Field ', -command => sub{delete_field_action($list_box_to_remove_field_button);});
# logic for 'Save Data' Button.
my $save_data_button = $frame_3->Button(-text => ' Save Data ', -command => sub{save_data_action($main);});
# logic for 'Load Data' Button.
my $load_data_button = $frame_3->Button(-text => ' Load Data ', -command => sub{load_data_action($main, $list_box_to_remove_field_button);});
# logic for 'Generate Gui' Button.
my $generate_gui_button = $frame_4->Button(-text => ' Generate Gui ', -border=>5, -relief=>'raised', -command => sub{generate_gui_action();});
# logic for 'Quit' Button.
my $quit_button = $frame_4->Button(-text => ' Quit ', -border=>5, -relief=>'raised', -command => sub{quit_action();});
my $developer = $frame_4->Label(-text => "Developed By: Sandeep Vaniya, eInfochips Ltd.", -border=>2, -relief=>'ridge');
# Adding grids for different frames for different groups.
$pane -> grid(-row=>1,-column=>1,-columnspan=>1,-sticky=>'w');
$sframe -> grid(-row=>1,-column=>1,-columnspan=>1,-sticky=>'w');
my $row_num_1 = 1;
$frame_1 -> grid(-row=>$row_num_1,-column=>1,-columnspan=>1,-sticky=>'w');
my $row_num_2 = 3;
$frame_2 -> grid(-row=>$row_num_2,-column=>1,-columnspan=>1,-sticky=>'w');
my $row_num_3 = 8;
$frame_3 -> grid(-row=>$row_num_3,-column=>1,-columnspan=>1,-sticky=>'w');
my $row_num_4 = 9;
$frame_4 -> grid(-row=>$row_num_4,-column=>1,-columnspan=>1,-sticky=>'w');
# Adding grids for different objects.
$select_type_of_field_label->grid(-row=>1,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
$text_radio_button->grid(-row=>2,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
$label_radio_button->grid(-row=>2,-column=>2,-padx=>10,-pady=>10,-sticky=>'w');
$listbox_radio_button->grid(-row=>2,-column=>3,-padx=>10,-pady=>10,-sticky=>'w');
$button_radio_button->grid(-row=>2,-column=>4,-padx=>10,-pady=>10,-sticky=>'w');
$checkbutton_radio_button->grid(-row=>2,-column=>5,-padx=>10,-pady=>10,-sticky=>'w');
$radiobutton_radio_button->grid(-row=>2,-column=>6,-padx=>10,-pady=>10,-sticky=>'w');
$enter_field_details_label->grid(-row=>1,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
$name_label->grid(-row=>2,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
$name_text_text_box->grid(-row=>2,-column=>2,-padx=>10,-pady=>10,-sticky=>'w');
$frame_row_column_number_separated_by_comma_label->grid(-row=>3,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
$frame_row_column_number_text_text_box->grid(-row=>3,-column=>2,-padx=>10,-pady=>10,-sticky=>'w');
$list_elements_for_list_box_label->grid(-row=>4,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
$list_element_text_text_box->grid(-row=>4,-column=>2,-padx=>10,-pady=>10,-sticky=>'w');
$group_name_for_radio_button_label->grid(-row=>5,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
$group_name_for_radio_button_text_text_box->grid(-row=>5,-column=>2,-padx=>10,-pady=>10,-sticky=>'w');
$add_field_button->grid(-row=>3,-column=>3,-padx=>10,-pady=>10,-sticky=>'w');
$select_field_to_be_removed_label->grid(-row=>1,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
$list_box_to_remove_field_button->grid(-row=>2,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
$delete_field_button->grid(-row=>3,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
$save_data_button->grid(-row=>3,-column=>1,-padx=>100,-pady=>10,-sticky=>'w');
$load_data_button->grid(-row=>3,-column=>1,-padx=>180,-pady=>10,-sticky=>'w');
$generate_gui_button->grid(-row=>1,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
$quit_button->grid(-row=>1,-column=>2,-padx=>10,-pady=>10,-sticky=>'w');
$developer->grid(-row=>2,-column=>1,-padx=>10,-pady=>10,-sticky=>'w');
MainLoop;
} # main
#------------------------------------------------------------------------------
sub get_gui_options {
my $list_index;
my $list_box;
# Processing value for 'grp__Field_Select_Grp_1' Radiobutton.
my $grp__Field_Select_Grp_1_radio_button_var = ${$field_ref_hash{grp__Field_Select_Grp_1}};
# Processing value for 'name_text' Text.
my $name_text_text_var = $field_ref_hash{name_text}->Contents();
chomp($name_text_text_var);
# Processing value for 'frame_row_column_number_text' Text.
my $frame_row_column_number_text_text_var = $field_ref_hash{frame_row_column_number_text}->Contents();
chomp($frame_row_column_number_text_text_var);
# Processing value for 'list_element_text' Text.
my $list_element_text_text_var = $field_ref_hash{list_element_text}->Contents();
chomp($list_element_text_text_var);
# Processing value for 'group_name_for_radio_button_text' Text.
my $group_name_for_radio_button_text_text_var = $field_ref_hash{group_name_for_radio_button_text}->Contents();
chomp($group_name_for_radio_button_text_text_var);
# Processing value for 'list_box_to_remove_field' Listbox.
$list_box = $field_ref_hash{list_box_to_remove_field};
$list_index = $list_box->curselection();
if(!defined($list_index)) {
$list_index = 0;
}
( run in 0.615 second using v1.01-cache-2.11-cpan-2398b32b56e )