App-SeismicUnixGui

 view release on metacpan or  search on metacpan

lib/App/SeismicUnixGui/misc/file_dialog.pm  view on Meta::CPAN

}

=head2 _big_stream_Home

=cut

sub _big_stream_Home {

	my ($self) = @_;

	my $param_widgets = param_widgets4pre_built_streams->new();
	my $whereami      = whereami->new();

	my $default_param_specs = $L_SU_global_constants->param();
	my $first_idx           = $default_param_specs->{_first_entry_idx};
	my $length              = $default_param_specs->{_length};

	$gui_history->set_hash_ref($file_dialog);
	$gui_history->set4FileDialog_open_start();
	$gui_history->set4superflow_open_path_start();
	$file_dialog = $gui_history->get_hash_ref();

	# If an appropriate Entry widget is first selected,
	# Find out which entry button has been chosen (index)
	# Confirm that it IS the file button

# print("file_dialog,_big_stream_Home,_FileDialog_button pressed, \n");
# print("file_dialog, _big_stream_Home selected  _values_aref=@{$file_dialog->{_values_aref}}\n");
# print("file_dialog, _big_stream_Home selected  _values_aref=@{$file_dialog->{_names_aref}}\n");
# print("file_dialog  _big_stream_Home selected  parameter_values_frame = $file_dialog->{_parameter_values_frame} \n");

	my $widget_type =
	  $whereami->widget_type( $file_dialog->{_parameter_values_frame} );

# print("file_dialog  _big_stream_Home selected widget type is = $widget_type	\n");

	if ( $widget_type eq 'Entry' ) {

# print("1. file_dialog,_big_stream_Home, selected widget_type=$widget_type \n");

		my $selected_Entry_widget =
		  $file_dialog->{_parameter_values_frame}->focusCurrent;
		$param_widgets->set_entry_button_chosen_widget($selected_Entry_widget);

# Need to set the length and first_idx or, $param-widgets->set_length($file_dialog_length);
# print("file_dialog,_big_stream_Home,selection_Entry_widget HASH = $selected_Entry_widget\n");
# print("file_dialog,_big_stream_Home, parameter_value_index= $file_dialog->{_parameter_value_index}\n");

		$param_widgets->set_first_idx($first_idx);
		$param_widgets->set_length($length);

# print("2. file_dialog  _big_stream_Home, selected_Entry_widget: $selected_Entry_widget\n");

		$file_dialog->{_parameter_value_index} =
		  $param_widgets->get_entry_button_chosen_index();

# print("file_dialog,_big_stream_Home,selection_Entry_widget HASH = $selected_Entry_widget\n");
# print("file_dialog,_big_stream_Home, parameter_value_index= $file_dialog->{_parameter_value_index}\n");

		if ( $file_dialog->{_parameter_value_index} >= 0 )
		{    # for additional certainty; but is it needed?
			 # print("4. file_dialog,ig_stream_last_dir_in_path, parameter_value_index= $file_dialog->{_parameter_value_index}\n");
			$file_dialog->{_entry_button_label} =
			  $param_widgets->get_label4entry_button_chosen();

# print("5. file_dialog,_big_stream_Home,entry_button_label = $file_dialog->{_entry_button_label}\n");

# use iFileuse aliased 'determine the Path stored in the current configuration file
			$iFile->set_entry($file_dialog);          # selected entry label
			$iFile->set_flow_type_h($file_dialog);    # a pre-built superflow
			$iFile->set_parameter_value_index($file_dialog);  # e.g., 0
			$iFile->set_values_aref($file_dialog);            # e.g., /home/gom/
			$iFile->set_prog_name_sref($file_dialog);    # e.g., Project_config

			$file_dialog->{_path} = $iFile->get_Path();

#			print("1.file_dialog,_pre-built_superflow_path, PATH:  $file_dialog->{_path} \n");

# print("1.file_dialog,ig_stream_last_dir_in_path, _values_aref: @{$file_dialog->{_values_aref}}[0]\n");

			_FileDialog();    # open file dialog mega-widget

#			print("2.file_dialog,_pre-built_superflow_path, last_path_touched:  $file_dialog->{_last_path_touched} \n");

			_big_stream_Home_close();

# print("2.file_dialog,ig_stream_last_dir_in_path, _values_aref: @{$file_dialog->{_values_aref}}[0]\n");
# my $length= scalar @{$file_dialog->{_values_aref}};  # 61 values
# for (my $i=0; $i < $length; $i++) {
# 	print("3.file_dialog,ig_stream_last_dir_in_path, _values_aref: @{$file_dialog->{_values_aref}}[$i]\n");
# }
		}

	}
	elsif ( $widget_type eq 'MainWindow' ) {    # opening a random file

		#		print("file_dialog,_big_stream_Home widget type is 'MainWindow' \n");
		my $message = $file_dialog->{_message_w}->FileDialog_button(0);
		$file_dialog->{_message_w}->delete( "1.0", 'end' );
		$file_dialog->{_message_w}->insert( 'end', $message );

	}
	else {
		print(
"file_dialog,big_stream_last_dir_in_path, no widget type selected \n"
		);
	}

}

=head2  _big_stream_last_dir_in_path

=cut 

sub _big_stream_last_dir_in_path {

	my ($self) = @_;

	my $param_widgets = param_widgets4pre_built_streams->new();
	my $whereami      = whereami->new();

	my $default_param_specs = $L_SU_global_constants->param();
	my $first_idx           = $default_param_specs->{_first_entry_idx};
	my $length              = $default_param_specs->{_length};

	$gui_history->set_hash_ref($file_dialog);
	$gui_history->set4FileDialog_open_start();
	$gui_history->set4superflow_open_path_start();
	$file_dialog = $gui_history->get_hash_ref();

	# If an appropriate Entry widget is first selected,
	# Find out which entry button has been chosen (index)
	# Confirm that it IS the file button

# print("file_dialog,_big_stream_last_dir_in_path,_FileDialog_button pressed, \n");
# print("file_dialog, _big_stream_last_dir_in_path selected  _values_aref=@{$file_dialog->{_values_aref}}\n");
# print("file_dialog, _big_stream_last_dir_in_path selected  _values_aref=@{$file_dialog->{_names_aref}}\n");
# print("file_dialog  _big_stream_last_dir_in_path selected  parameter_values_frame = $file_dialog->{_parameter_values_frame} \n");

	my $widget_type =
	  $whereami->widget_type( $file_dialog->{_parameter_values_frame} );

# print("file_dialog  _big_stream_last_dir_in_path selected widget type is = $widget_type	\n");

	if ( $widget_type eq 'Entry' ) {

# print("1. file_dialog,_big_stream_last_dir_in_path, selected widget_type=$widget_type \n");

		my $selected_Entry_widget =
		  $file_dialog->{_parameter_values_frame}->focusCurrent;
		$param_widgets->set_entry_button_chosen_widget($selected_Entry_widget);

# Need to set the length and first_idx or, $param-widgets->set_length($file_dialog_length);
# print("file_dialog,_big_stream_last_dir_in_path,selection_Entry_widget HASH = $selected_Entry_widget\n");
# print("file_dialog,_big_stream_last_dir_in_path, parameter_value_index= $file_dialog->{_parameter_value_index}\n");

		$param_widgets->set_first_idx($first_idx);
		$param_widgets->set_length($length);

# print("2. file_dialog  _big_stream_last_dir_in_path, selected_Entry_widget: $selected_Entry_widget\n");

		$file_dialog->{_parameter_value_index} =
		  $param_widgets->get_entry_button_chosen_index();

# print("file_dialog,_big_stream_last_dir_in_path,selection_Entry_widget HASH = $selected_Entry_widget\n");
# print("file_dialog,_big_stream_last_dir_in_path, parameter_value_index= $file_dialog->{_parameter_value_index}\n");

		if ( $file_dialog->{_parameter_value_index} >= 0 )
		{    # for additional certainty; but is it needed?
			 # print("4. file_dialog,ig_stream_last_dir_in_path, parameter_value_index= $file_dialog->{_parameter_value_index}\n");
			$file_dialog->{_entry_button_label} =
			  $param_widgets->get_label4entry_button_chosen();

# print("5. file_dialog,_big_stream_last_dir_in_path,entry_button_label = $file_dialog->{_entry_button_label}\n");

# use iFileuse aliased 'determine the Path stored in the current configuration file
			$iFile->set_entry($file_dialog);          # selected entry label
			$iFile->set_flow_type_h($file_dialog);    # a pre-built superflow
			$iFile->set_parameter_value_index($file_dialog);  # e.g., 0
			$iFile->set_values_aref($file_dialog);            # e.g., /home/gom/
			$iFile->set_prog_name_sref($file_dialog);    # e.g., Project_config

			$file_dialog->{_path} = $iFile->get_Path();

#			print("1.file_dialog,_pre-built_superflow_path, PATH:  $file_dialog->{_path} \n");

# print("1.file_dialog,ig_stream_last_dir_in_path, _values_aref: @{$file_dialog->{_values_aref}}[0]\n");

			_FileDialog();    # open file dialog mega-widget

#			print("2.file_dialog,_pre-built_superflow_path, last_path_touched:  $file_dialog->{_last_path_touched} \n");

			_big_stream_last_dir_in_path_close();

# print("2.file_dialog,ig_stream_last_dir_in_path, _values_aref: @{$file_dialog->{_values_aref}}[0]\n");
# my $length= scalar @{$file_dialog->{_values_aref}};  # 61 values
# for (my $i=0; $i < $length; $i++) {
# 	print("3.file_dialog,ig_stream_last_dir_in_path, _values_aref: @{$file_dialog->{_values_aref}}[$i]\n");
# }
		}

	}
	elsif ( $widget_type eq 'MainWindow' ) {    # opening a random file

#		print("file_dialog,_big_stream_last_dir_in_path widget type is 'MainWindow' \n");
		my $message = $file_dialog->{_message_w}->FileDialog_button(0);
		$file_dialog->{_message_w}->delete( "1.0", 'end' );
		$file_dialog->{_message_w}->insert( 'end', $message );

	}
	else {
		print(
"file_dialog,big_stream_last_dir_in_path, no widget type selected \n"
		);
	}
}

=head2 sub _big_stream_Home_close

  re-organizing the display after a directory (path) is selected

    TODO: CASE of opening a pre-existing superflow configuration file
        or previously scripted flow by this GUI
        BEFORE or While the menubutton OR Frame are selected
        
 
=cut

sub _big_stream_Home_close {

lib/App/SeismicUnixGui/misc/file_dialog.pm  view on Meta::CPAN

    }
=cut 

sub _pre_built_superflow_open_data_file {

	my ($self) = @_;

	#	print("file_dialog, _pre_built_superflow_open_data_file\n ");

	my $param_widgets = param_widgets4pre_built_streams->new();
	my $whereami      = whereami->new();

	my $default_param_specs = $L_SU_global_constants->param();
	my $first_idx           = $default_param_specs->{_first_entry_idx};
	my $length              = $default_param_specs->{_length};

	# e.g., Data_Pl_SEISMIC, Data_SEISMIC_TXT, Data, Path, Open, Delete etc.
	my $topic = _get_dialog_type();

	$gui_history->set_hash_ref($file_dialog);
	$gui_history->set4FileDialog_open_start();
	$gui_history->set4superflow_open_data_file_start();
	$file_dialog = $gui_history->get_hash_ref();

# Tests follow:
# 1. if an appropriate entry widget is first selected, ie. Entry
# 2. get index of entry button pressed
# 3. find out which entry button has been chosen
# 4. confirm that it IS the file button
# TODO: determine the required file type and file path
# TODO: from the *_spec.pm file for the particular program in the flow.
# print("file_dialog,_pre_built_superflow_open_data_file,_FileDialog_button pressed, \n");
# print("file_dialog, _pre_built_superflow_open_data_file selected  _values_aref=@{$file_dialog->{_values_aref}}\n");
# print("file_dialog  _pre_built_superflow_open_data_file selected  parameter_values_frame = $file_dialog->{_parameter_values_frame} 	\n");
	my $widget_type =
	  $whereami->widget_type( $file_dialog->{_parameter_values_frame} );

# print("file_dialog  _pre_built_superflow_open_data_file selected widget type is = $widget_type	\n");

	if ( $widget_type eq 'Entry' ) {

# print("1. file_dialog,_pre_built_superflow_open_data_file, selected widget_type=$widget_type \n");

		my $selected_Entry_widget =
		  $file_dialog->{_parameter_values_frame}->focusCurrent;
		$param_widgets->set_entry_button_chosen_widget($selected_Entry_widget);

# Need to set the length and first_idx or, $param-widgets->set_length($file_dialog_length);
		$param_widgets->set_first_idx($first_idx);
		$param_widgets->set_length($length);

#	    print("2. file_dialog, _pre_built_superflow_open_data_file, selected_Entry_widget: $selected_Entry_widget\n");

		$file_dialog->{_parameter_value_index} =
		  $param_widgets->get_entry_button_chosen_index();

# print("file_dialog,_pre_built_superflow_open_data_file,selection_Entry_widget HASH = $selected_Entry_widget\n");
#		print("file_dialog,_pre_built_superflow_open_data_file, parameter_value_index= $file_dialog->{_parameter_value_index}\n");

		if ( $file_dialog->{_parameter_value_index} >= 0 )
		{    # for additional certainty; but is it needed?

		 # e.g. Data_Pl_SEISMIC, Data_SEISMIC_TXT, Data, Path, Open, Delete etc.
			my $topic = _get_dialog_type();

#			print(
#				"4. file_dialog,_pre_built_flow_open_data_file, parameter_value_index= $file_dialog->{_parameter_value_index}\n"
#			);
			$file_dialog->{_entry_button_label} =
			  $param_widgets->get_label4entry_button_chosen();

#			print(
#				"5. file_dialog,_pre_built_superflow_open_data_file,entry_button_label = $file_dialog->{_entry_button_label}\n"
#			 );

			# use iFile to determine the correct data path (directory)
			$iFile->set_entry($file_dialog)
			  ;    # first entry label should be base_file_name
			$iFile->set_flow_type_h($file_dialog)
			  ;    # pre-built superflow will determine the DIR to find data
			$iFile->set_values_aref($file_dialog)
			  ;    # may not be needed ( only for user-built_flows) TODO
			$iFile->set_prog_name_sref($file_dialog);
			$iFile->set_dialog_type($topic);
			$iFile->set_parameter_value_index($file_dialog);

			$file_dialog->{_path} = $iFile->get_Data_path();

#print("1.file_dialog,_pre-built_superflow_open_data_file, PATH:  $file_dialog->{_path} \n");
#print(
# 	"1.file_dialog,_pre-built_superflow_open_data_file, _values_aref: @{$file_dialog->{_values_aref}}[0]\n"
# );

			_FileDialog();

# print("2.file_dialog,_pre-built_superflow_open_data_file, _values_aref: @{$file_dialog->{_values_aref}}[0]\n");

			_pre_built_superflow_close_data_file();

# print("2.file_dialog,_pre-built_superflow_open_data_file, _values_aref: @{$file_dialog->{_values_aref}}[0]\n");
# my $length= scalar @{$file_dialog->{_values_aref}};  # 61 values
# for (my $i=0; $i < $length; $i++) {
# 	 print("3.file_dialog,_pre-built_superflow_open_data_file, _values_aref: @{$file_dialog->{_values_aref}}[$i]\n");
# }
		}
	}
	elsif ( $widget_type eq 'MainWindow' ) {    # opening a random file
		 # print("file_dialog,_pre_built_superflow_open_data_file widget type is 'MainWindow' \n");
		my $message = $file_dialog->{_message_w}->FileDialog_button(0);
		$file_dialog->{_message_w}->delete( "1.0", 'end' );
		$file_dialog->{_message_w}->insert( 'end', $message );

	}
	else {
		print(
"file_dialog,_pre-built_superflow_open_data_file no widget type selected \n"
		);
	}

	$gui_history->set4superflow_open_data_file_end();
	$gui_history->set4FileDialog_open_end();

lib/App/SeismicUnixGui/misc/file_dialog.pm  view on Meta::CPAN


	 	a directory path
=cut 

sub _pre_built_superflow_open_path {

	my ($self) = @_;

	# print ("file_dialog, _pre_built_superflow_open_path\n ");

	my $param_widgets = param_widgets4pre_built_streams->new();
	my $whereami      = whereami->new();

	my $default_param_specs = $L_SU_global_constants->param();
	my $first_idx           = $default_param_specs->{_first_entry_idx};
	my $length              = $default_param_specs->{_length};

	$gui_history->set_hash_ref($file_dialog);
	$gui_history->set4FileDialog_open_start();
	$gui_history->set4superflow_open_path_start();
	$file_dialog = $gui_history->get_hash_ref();    # gets 93

	# If an appropriate Entry widget is first selected,
	# Find out which entry button has been chosen (index)
	# Confirm that it IS the file button

# print("file_dialog,_pre_built_superflow_open_path,_FileDialog_button pressed, \n");
# print("file_dialog, _pre_built_superflow_open_path selected  _values_aref=@{$file_dialog->{_values_aref}}\n");
# print("file_dialog, _pre_built_superflow_open_path selected  _values_aref=@{$file_dialog->{_names_aref}}\n");
# print("file_dialog  _pre_built_superflow_open_path selected  parameter_values_frame = $file_dialog->{_parameter_values_frame} \n");

	my $widget_type =
	  $whereami->widget_type( $file_dialog->{_parameter_values_frame} );

# print("file_dialog  _pre_built_superflow_open_path selected widget type is = $widget_type	\n");

	if ( $widget_type eq 'Entry' ) {

# print("1. file_dialog,_pre_built_superflow_open_path, selected widget_type=$widget_type \n");

		my $selected_Entry_widget =
		  $file_dialog->{_parameter_values_frame}->focusCurrent;
		$param_widgets->set_entry_button_chosen_widget($selected_Entry_widget);

# Need to set the length and first_idx or, $param-widgets->set_length($file_dialog_length);
# print("file_dialog,_pre_built_superflow_open_path,selection_Entry_widget HASH = $selected_Entry_widget\n");
# print("file_dialog,_pre_built_superflow_open_path, parameter_value_index= $file_dialog->{_parameter_value_index}\n");

		$param_widgets->set_first_idx($first_idx);
		$param_widgets->set_length($length);

# print("2. file_dialog  _pre_built_superflow_open_path, selected_Entry_widget: $selected_Entry_widget\n");

		$file_dialog->{_parameter_value_index} =
		  $param_widgets->get_entry_button_chosen_index();

# print("file_dialog,_pre_built_superflow_open_path,selection_Entry_widget HASH = $selected_Entry_widget\n");
# print("file_dialog,_pre_built_superflow_open_path, parameter_value_index= $file_dialog->{_parameter_value_index}\n");

		if ( $file_dialog->{_parameter_value_index} >= 0 )
		{    # for additional certainty; but is it needed?
			 # print("4. file_dialog,_pre_built_flow_path, parameter_value_index= $file_dialog->{_parameter_value_index}\n");
			$file_dialog->{_entry_button_label} =
			  $param_widgets->get_label4entry_button_chosen();

# print("5. file_dialog,_pre_built_superflow_open_path,entry_button_label = $file_dialog->{_entry_button_label}\n");

	  # use iFile to determine the stored Path in the current configuration file
			$iFile->set_entry($file_dialog);          # selected entry label
			$iFile->set_flow_type_h($file_dialog);    # a pre-built superflow
			$iFile->set_parameter_value_index($file_dialog);  # e.g., 0
			$iFile->set_values_aref($file_dialog);            # e.g., /home/gom/
			$iFile->set_prog_name_sref($file_dialog);    # e.g., Project_config
			$file_dialog->{_path} = $iFile->get_Path();
			$control->set_path( $file_dialog->{_path} );
			$file_dialog->{_path} = $control->get_path_wo_last_slash();

# print("2.file_dialog,_pre-built_superflow_path, PATH:  $file_dialog->{_path} \n");
# print("1.file_dialog,_pre-built_superflow_path, _values_aref: @{$file_dialog->{_values_aref}}[0]\n");

			_FileDialog();    # open file dialog mega-widget

# print("2.file_dialog,_pre-built_superflow_path, last_path_touched:  $file_dialog->{_last_path_touched} \n");

			_pre_built_superflow_close_path();

# print("2.file_dialog,_pre-built_superflow_path, _values_aref: @{$file_dialog->{_values_aref}}[0]\n");
# my $length= scalar @{$file_dialog->{_values_aref}};  # 61 values
# for (my $i=0; $i < $length; $i++) {
# 	print("3.file_dialog,_pre-built_superflow_path, _values_aref: @{$file_dialog->{_values_aref}}[$i]\n");
# }
		}
	}
	elsif ( $widget_type eq 'MainWindow' ) {    # opening a random file

#		print("file_dialog,_pre_built_superflow_open_path widget type is 'MainWindow' \n");
		my $message = $file_dialog->{_message_w}->FileDialog_button(0);
		$file_dialog->{_message_w}->delete( "1.0", 'end' );
		$file_dialog->{_message_w}->insert( 'end', $message );

	}
	else {
		print(
			"file_dialog,_pre-built_superflow_path no widget type selected \n");
	}

	$gui_history->set4superflow_open_path_end();
	$gui_history->set4FileDialog_open_end();        # 2 set
	$file_dialog = $gui_history->get_hash_ref();    # retrieves 93
}

=head2  sub  _set_FileDialog2user_built_flow

   {_Data}  	...	open pre-existing data file
   {_Open} 		...	open pre-existing user-built flow
   {_SaveAs} 	...	save a new user-built flow
   {_Save} 	    ...	re-save a user-built flow 
   {_Delete} 	...	delete a user-built flow, but any file can be removed
   
=cut 

lib/App/SeismicUnixGui/misc/file_dialog.pm  view on Meta::CPAN

		#			);
			return ($false);
		}

	}
	else {
#		print("file_dialog,_user_built_flow_close_perl_file, flow_name_in: full path name missing\n");
		return ($empty_string);
	}
}

=head2 sub _user_built_flow_open_data_file 

	seen in the GUI as "File/Data"
	opens data sets for a user_built_flow
	aka Data
 	Select is for pre-existing Data Sets
 	Then updates the GUI param widgets
 	The updated param values should be saved the next time that the flow is selected
 	
 	TODO make sure that when a differently-colored flow is selected the updated widgets
 	are stored
 	
 			foreach my $key (sort keys %$file_dialog) {
           		print (" file_dialog,key is $key, value is $file_dialog->{$key}\n");
    		}
 	
=cut 

sub _user_built_flow_open_data_file {
	my ($self) = @_;

	my $param_widgets = param_widgets->new();
	my $whereami      = whereami->new();

	my $default_param_specs = $L_SU_global_constants->param();
	my $first_idx           = $default_param_specs->{_first_entry_idx};
	my $length              = $default_param_specs->{_length};

# print ("1. file_dialog,_user_built_flow_open_data_file, is_last_parameter_index_touched_color: $file_dialog->{_is_last_parameter_index_touched_color} \n");
# print ("1. file_dialog,_user_built_flow_open_data_file, is_last_flow_index_touched: $file_dialog->{_is_last_flow_index_touched} \n");
# print (" 2. file_dialog,_user_built_flow_open_data_file->{_is_parameter_listbox_grey_w}: $file_dialog->{_is_parameter_listbox_grey_w}\n");
# print (" 2. file_dialog,_user_built_flow_open_data_file->{_last_parameter_index_touched_color}: $file_dialog->{_last_parameter_index_touched_color}\n");

	$gui_history->set_hash_ref($file_dialog);
	$gui_history->set4FileDialog_open_start();

	$file_dialog = $gui_history->get_hash_ref();

	# if an appropriate entry widget is first selected, i.e., Entry
	# get index of entry button pressed
	# find out which entry button has been chosen
	# confirm that it IS the file button
	# TODO determine the required file type and file path
	# TODO from the *_spec.pm file for the particular program in the flow.

	$user_built_flow_open_data_widget_type =
	  $whereami->widget_type( $file_dialog->{_parameter_values_frame} );

	if ( $user_built_flow_open_data_widget_type eq 'Entry' )
	{    # for extra certainty

#		print("1. file_dialog,_user_built_flow_open_data_file, selected widget_type=$user_built_flow_open_data_widget_type \n");

		$user_built_flow_open_data_selected_Entry_widget =
		  $file_dialog->{_parameter_values_frame}->focusCurrent;
		$param_widgets->set_entry_button_chosen_widget(
			$user_built_flow_open_data_selected_Entry_widget);

		# Need to set the length and first_idx
		$param_widgets->set_first_idx($first_idx);
		$param_widgets->set_length($length);

#		print("2. file_dialog  _user_built_flow_open_data_file, selected_Entry_widget: $user_built_flow_open_data_selected_Entry_widget\n");
		$user_built_flow_open_data_parameter_value_index =
		  $param_widgets->get_entry_button_chosen_index();
		$file_dialog->{_parameter_value_index} =
		  $user_built_flow_open_data_parameter_value_index;
		my $index = $user_built_flow_open_data_parameter_value_index;

# print("file_dialog,_user_built_flow_open_data_file,selection_Entry_widget HASH = $selected_Entry_widget\n");
#		print("file_dialog,_user_built_flow_open_data_file, parameter_value_index= $file_dialog->{_parameter_value_index}\n");

		if ( $index >= 0 ) {    # also for additional certainty

			# e.g. Data_Pl_SEISMIC, Data, Path, Open, Delete, etc.
			my $topic = _get_dialog_type();

#			print(
#				"4. file_dialog,_user_built_flow_open_data_file, parameter_value_index= $index\n"
#			);

			$file_dialog->{_entry_button_label} =
			  $param_widgets->get_label4entry_button_chosen();

#			print("5. file_dialog,_user_built_flow_open_data_file,entry_button_label = $file_dialog->{_entry_button_label}\n");

			# use iFile to determine the correct data path (directory )
			$iFile->set_entry($file_dialog);
			$iFile->set_parameter_value_index($file_dialog);
			$iFile->set_flow_type_h($file_dialog);    # user_built
			$iFile->set_dialog_type($topic);
			$iFile->set_values_aref($file_dialog)
			  ;    # will determine the DIR based on type of data set
			$iFile->set_prog_name_sref($file_dialog);

			$file_dialog->{_path} = $iFile->get_Data_path();

#			print("5A. file_dialog,_user_built_flow_open_data_file $file_dialog->{_path}\n");

			# collects the name of the data file to be opened
			_FileDialog();
			_user_built_flow_close_data_file();

			#			print("6. file_dialog,_user_built_flow_open_data_file End\n");

		}
	}
	elsif ( $user_built_flow_open_data_widget_type eq 'MainWindow' )
	{    # opening a random file
		 # print("file_dialog,_user_built_flow_open_data_file widget type is 'MainWindow' \n");
		my $message = $file_dialog->{_message_w}->FileDialog_button(0);
		$file_dialog->{_message_w}->delete( "1.0", 'end' );
		$file_dialog->{_message_w}->insert( 'end', $message );

	}
	else {
		print(
"file_dialog,_user_built_flow_open_data_file no widget type selected \n"
		);
	}

	$gui_history->set4FileDialog_open_end();

}

=head2  sub _user_built_flow_open_path
find and get a directory path

=cut 

sub _user_built_flow_open_path {

	my ($self) = @_;

	my $param_widgets = param_widgets->new();
	my $whereami      = whereami->new();

	my $default_param_specs = $L_SU_global_constants->param();
	my $first_idx           = $default_param_specs->{_first_entry_idx};
	my $length              = $default_param_specs->{_length};

	$gui_history->set_hash_ref($file_dialog);
	$gui_history->set4FileDialog_open_start();

	# $gui_history->set4superflow_open_path_start();
	$file_dialog = $gui_history->get_hash_ref();    # gets 93

	# If an appropriate Entry widget is first selected,
	# Find out which entry button has been chosen (index)
	# Confirm that it IS the file button

# print("file_dialog,_user_built_flow_open_path,_FileDialog_button pressed, \n");
#	print("file_dialog, _user_built_flow_open_path selected  _values_aref=@{$file_dialog->{_values_aref}}\n");

# print("file_dialog, _user_built_flow_open_path selected  _values_aref=@{$file_dialog->{_names_aref}}\n");
# print("file_dialog  _user_built_flow_open_path selected  parameter_values_frame = $file_dialog->{_parameter_values_frame} \n");

	my $widget_type =
	  $whereami->widget_type( $file_dialog->{_parameter_values_frame} );

#	print("file_dialog  _user_built_flow_open_path selected widget type is = $widget_type	\n");

	if ( $widget_type eq 'Entry' ) {

#		print("1. file_dialog,_user_built_flow_open_path, selected widget_type=$widget_type \n");

		my $selected_Entry_widget =
		  $file_dialog->{_parameter_values_frame}->focusCurrent;
		$param_widgets->set_entry_button_chosen_widget($selected_Entry_widget);

# Need to set the length and first_idx or, $param-widgets->set_length($file_dialog_length);
# print("file_dialog,_user_built_flow_open_path,selection_Entry_widget HASH = $selected_Entry_widget\n");
# print("file_dialog,_user_built_flow_open_path, parameter_value_index= $file_dialog->{_parameter_value_index}\n");

		$param_widgets->set_first_idx($first_idx);
		$param_widgets->set_length($length);

#		print("2. file_dialog  _user_built_flow_open_path, selected_Entry_widget: $selected_Entry_widget\n");

		$file_dialog->{_parameter_value_index} =
		  $param_widgets->get_entry_button_chosen_index();

# print("file_dialog,_user_built_flow_open_path,selection_Entry_widget HASH = $selected_Entry_widget\n");
# print("file_dialog,_user_built_flow_open_path, parameter_value_index= $file_dialog->{_parameter_value_index}\n");

		if ( $file_dialog->{_parameter_value_index} >= 0 )
		{    # for additional certainty; but is it needed?

			# e.g. Data_Pl_SEISMIC, Data, Path, Open, Delete, etc.
			my $topic = _get_dialog_type();

#			print(
#				"4. file_dialog,_user_built_flow_open_path, parameter_value_index= $file_dialog->{_parameter_value_index}\n"
#			);
			$file_dialog->{_entry_button_label} =
			  $param_widgets->get_label4entry_button_chosen();

#			print(
#				"5. file_dialog,_user_built_flow_open_path,entry_button_label = $file_dialog->{_entry_button_label}\n");

	  # use iFile to determine the stored Path in the current configuration file
			$iFile->set_entry($file_dialog);          # selected entry label
			$iFile->set_flow_type_h($file_dialog);    # user_built

			$iFile->set_values_aref($file_dialog)
			  ; # will determine the DIR based on type of data set e.g., /home/gom/
			$iFile->set_prog_name_sref($file_dialog);    # e.g., Project_config
			$iFile->set_dialog_type($topic);    # e.g. Data_Pl_SEISMIC, _Data

			$file_dialog->{_path} = $iFile->get_Path();

#			print("1.file_dialog,_user_built_open_flow_path, PATH:  $file_dialog->{_path} \n");
#			print("1.file_dialog,_user_built_open_flow_path, _values_aref: @{$file_dialog->{_values_aref}}[0]\n");

			# open file dialog mega-widget
			_FileDialog();

			# updates the gui
			_user_built_flow_close_path();

		}
	}
	elsif ( $widget_type eq 'MainWindow' ) {    # opening a random file
												#
		 #		print("file_dialog,_user_built_flow_open_path widget type is 'MainWindow' \n");
		 #		my $message = $file_dialog->{_message_w}->FileDialog_button(0);
		 #		$file_dialog->{_message_w}->delete( "1.0", 'end' );
		 #		$file_dialog->{_message_w}->insert( 'end', $message );
		 #
	}
	else {
		print(
			"file_dialog,_pre-built_superflow_path no widget type selected \n");
	}

}

=head2 sub _user_built_flow_open_perl_file 
Open flows written in Perl
			
foreach my $key (sort keys %$file_dialog) {
print (" file_dialog,key is $key, value is $file_dialog->{$key}\n");
}		
			
=cut

sub _user_built_flow_open_perl_file {



( run in 0.803 second using v1.01-cache-2.11-cpan-437f7b0c052 )