DOCUMENTATION
SYNOPSIS
Perl package: param_flow_grey.pm
AUTHOR: Juan Lorenzo
DATE: Aug 3 2017
DESCRIPTION:
V 0.0.1 Aug 3 2017
V 0.0.2 July 23 2018
V 0.0.3 Oct 10 2018 allows numeric values = 0
V 0.0.4 April 2021 delete_selection can delete
'all' at once
USED FOR:
BASED ON:
param_flow_grey.pm
private hash_ref
w for widgets
sub _get_good_length4item
sub _get_names_aref
sub _get_values_aref
find reference for array of values
sub _set_good_labels4item
Oct 10. 2018 allow numbers=0
sub _set_good_values4item
Set good values privately for a single item (program name)
within a flow
only non-empty values will be used
sub clear
clear from memory any existing values in the namespace
= 31
sub clear_flow_items_version_aref
clear version array reference
sub delete_selection
delete parameter names and values
from one selected item at a time
as well as all at once
sub first_idx
first usable index is set to 0
sub get_check_buttons_settings
my ($i,$j, $length); my @on_off; my @values_aref;
@values_aref = @{@{$param_flow_grey->{_checkbuttons_aref2}}[$index]};
$length = scalar @values_aref;
print("param_flow_grey,get_check_buttons_settings: is @values_aref\n");
#for ($i=1,$j=0; $i < $length; $i=$i+2,$j++ ) {
for ($i=0; $i < $length; $i++ ) {
#$values[$j] = $values_aref[$i];
#print("param_flow_grey, get_check_buttons_settings :index $j values: $values[$j]\n");
if($values_aref[$i] eq $nu || ) {
$on_off[$i] = $off;
# print(" 1. param_flow_grey, get_check_buttons_settings,$on_off[$i]\n");
}
else {
$on_off[$i] = $on;
# print(" 2. param_flow_grey, get_check_buttons_settings,$on_off[$i]\n");
}
# print("param_flow_grey: get_check_buttons_settings :index $i setting $nu is: $on_off[$i]\n");
}
sub get_flow_index
get current program index
sub get_flow_prog_names_aref
extract sequential program names in flow
sub get_flow_items_version_aref
o/p is array ref of the version of each program name
sub get_good_labels_aref2
sub get_good_values_aref2
sub get_names_aref
sub get_num_good_labels_aref
sub get_num_good_values_aref
sub get_max_index
Number of programs in the flow +1
Should increment every time that add2flow is run
in a superflowstack_names_aref2
sub get_num_items
Number of programs in the flow
Should increment every time that add2flow is run
in a superflowstack_names_aref2
sub get_values_aref
Collect all the values, whether empty or not
sub insert_selection
delete parameter names and values
of on one selected item
sub length
last item number (not last index)
last item number is equivalent to length
because values and labels are stored in the same
array, the length is twice the number of values or
labels individually.
Hence we also have subroutines to extract and set
"half-lengths" with respect to the stored configuration
parameters.
sub set_check_buttons_settings
set check_buttons by user from outside
sub set_flow_items_version_aref
i/p is array ref of the version of each program name
sub set_insert_start
move paramter names and values
of one selected item into another
space
sub set_insert_end
move paramter names and values
of one selected item into another
space
sub set_flow_index
select an item from which to extract data
print("param_flow_grey, set flow_index, prog name is @{$param_flow_grey->{_prog_names_aref}}[$index]\n");
sub set_names_aref
sub set_param_index
set single index
sub set_good_labels
select names with values
sub set_good_values
find good values for ALL programs in flow
sub set_good_labels4item
sub set_good_values4item
work on finding good values for one item
sub set_param_value
Store single value
sub set_values_aref
Store values
sub stack_checkbuttons_aref2
array of arrays
One array if checkbuttons for each item
DB
#for (my $i=0; $i<=$index;$i++) {
#print("param_flow_grey,checkbuttons_aref,@{@{$param_flow_grey->{_checkbuttons_aref2}}[$i]} index $i\n");
#}
#print("param_flow_grey, checkbuttons_aref2, num_items4checkbuttons $param_flow_grey->{_num_items4checkbuttons}\n");
sub stack_flow_item
i/p is scalar ref to a program name
keep count and increment the number of items
encapsulate internal counters and array
from the array shared among the package subroutines
count items at start in case we don't return to the subroutine
later
print("param_flow_grey, stack_flow_item @{$param_flow_grey->{_prog_names_aref}}, num_items $param_flow_grey->{_num_items}\n");
print("param_flow_grey, stack_flow_item, index: $index\n");
sub stack_names_aref2
i/p array ref for values in a program
an array of arrays is created, one array for each item
DrBN
#print("param_flow_grey, names_aref2, num_items4names $param_flow_grey->{_num_items4names}\n");
#print("param_flow_grey,names_aref,$names[$index],item $index\n");
# print("param_flow_grey, stack_names_aref2, names in program# $index are @{$names[$index]}[0]\n");
for(my $i = 0; $i <=$index; $i++) {
print("param_flow_grey,stack_names_aref2, cumulative first names are: @{$names[$i]}[0], prog num =$i\n");
}
sub stack_values_aref2
i/p array ref for values in a program
an array of arrays is created, one array for each item
DB #for (my $i=0; $i<=$index;$i++) { # print("param_flow_grey,values_aref2,@{@{$param_flow_grey->{_values_aref2}}[$i]} index $i\n"); #} #print("param_flow_grey,values_aref2,num_items=$param_flow_grey->{_num_items}\n"); # print("param_flow_grey,values_aref2, index $index\n");
sub view_data
Data viewer for debugging
print("B4 delete: names are $param_flow_grey->{_names_aref2}\n"); # ref_Array
print("B4 delete: names are @{$param_flow_grey->{_names_aref2}}\n"); # [ref_array0 ref_array1 ....
print("B4 delete: names are @{$param_flow_grey->{_names_aref2}}[0]\n"); # ref_array0
print("B4 delete: names are @{$param_flow_grey->{_names_aref2}}[1]\n"); #ref_array1
print("B4 delete: names are @{@{$param_flow_grey->{_names_aref2}}[0]}\n"); # all names in ref_array 0
print("B4 delete: names are @{@{$param_flow_grey->{_names_aref2}}[1]}[0]\n"); # first name in ref_array
print("param_flow_grey,view_data: list for each item\n");