App-SeismicUnixGui

 view release on metacpan or  search on metacpan

lib/App/SeismicUnixGui/big_streams/pre_built_big_stream.pm  view on Meta::CPAN


    my $message = $msg_director->null_button(0);
    $message_w->delete( "1.0", 'end' );
    $message_w->insert( 'end', $message );

    # Prepare GUI history
    gui_history->set_hash_ref($pre_built_big_stream_href);
    gui_history->set4start_of_superflow_select();
    $pre_built_big_stream_href = gui_history->get_hash_ref();

    # Update GUI position and configuration
    $whereami->set4superflow_select_button();
    $config_superflows->set_program_name($prog_name_sref);
    $config_superflows->set_prog_name_config($prog_name_sref);
    my $prog_name_config = $config_superflows->get_prog_name_config();

    # Handle Project.config or other streams
    if ( $prog_name_config eq $Project . '.config' ) {
        my $user_constants = L_SU_local_user_constants->new();

        if ( $user_constants->user_configuration_Project_config_exists() ) {
            # Valid configuration exists
        }
        elsif ( not $user_constants->user_configuration_Project_config_exists ) {
            my $message = $msg_director->superflow(0);
            $pre_built_big_stream_href->{_message_w}->delete( "1.0", 'end' );
            $pre_built_big_stream_href->{_message_w}->insert( 'end', $message );
        }
        else {
            print("pre_built_big_stream: invalid Project.config file name\n");
        }
    }
    else {
        $config_superflows->inbound();
        $config_superflows->check2read();
    }

    # Get parameter data
    $pre_built_big_stream_href->{_names_aref}                = $config_superflows->get_names();
    $pre_built_big_stream_href->{_values_aref}               = $config_superflows->get_values();
    $pre_built_big_stream_href->{_check_buttons_settings_aref} = $config_superflows->get_check_buttons_settings();
    $pre_built_big_stream_href->{_superflow_first_idx}       = $config_superflows->first_idx();
    $pre_built_big_stream_href->{_superflow_length}          = $config_superflows->length();

    # GUI refresh
    $param_widgets->gui_full_clear();
    $param_widgets->range($pre_built_big_stream_href);
    $param_widgets->set_labels( $pre_built_big_stream_href->{_names_aref} );
    $param_widgets->set_values( $pre_built_big_stream_href->{_values_aref} );
    $param_widgets->set_check_buttons( $pre_built_big_stream_href->{_check_buttons_settings_aref} );
    $param_widgets->set_current_program($prog_name_sref);

    $param_widgets->redisplay_labels();
    $param_widgets->redisplay_values();
    $param_widgets->redisplay_check_buttons();

    # Focus on first entry field (no highlighting)
    my @Entry_widget = @{ $param_widgets->get_values_w_aref() };
    $Entry_widget[0]->focus;

    # Bind callbacks and actions
    my $run_name = $internal_name;
    $binding->set_prog_name_sref( \$run_name );
    $binding->set_values_w_aref( $param_widgets->get_values_w_aref );
    $binding->setFileDialog_button_sub_ref($pre_built_big_stream_href_sub_ref);
    $binding->set();

    # Update reference data for export
    $values_aref                 = $pre_built_big_stream_href->{_values_aref};
    gui_history->set_hash_ref($pre_built_big_stream_href);
    gui_history->set4end_of_superflow_select();
    $pre_built_big_stream_href   = gui_history->get_hash_ref();

    $names_aref                  = $pre_built_big_stream_href->{_names_aref};
    $values_aref                 = $pre_built_big_stream_href->{_values_aref};
    $check_buttons_settings_aref = $pre_built_big_stream_href->{_check_buttons_settings_aref};

    return ();
}


=head2 sub set_hash_ref

Imports an external hash reference into local scope and updates widget references.

=cut

sub set_hash_ref {
    my ( $self, $hash_ref ) = @_;

    $gui_history->set_defaults($hash_ref);
    $pre_built_big_stream_href = $gui_history->get_defaults();

    $param_widgets->set_hash_ref($pre_built_big_stream_href);
    $message_w = $pre_built_big_stream_href->{_message_w};

    return ();
}


=head2 sub set_name_sref

Optionally assigns a program name reference.

=cut

sub set_name_sref {
    my ( $self, $prog_name_sref ) = @_;

    if ($prog_name_sref) {
        $pre_built_big_stream_href->{_prog_name_sref} = $prog_name_sref;
    }
    else {
        print("pre_built_big_stream: missing program name\n");
    }

    return ();
}


=head2 sub set_sub_ref



( run in 0.311 second using v1.01-cache-2.11-cpan-302cb4679cc )