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 )