DOCUMENTATION

SYNOPSIS

PROGRAM NAME: iBottomMute (interactive Bottom Mute) 
AUTHOR:  Juan Lorenzo

CHANGES and their DATES

DATE: April 2 2009 
      September 2015 :
         updated to oop
         introduced Tk widgets
         Made all event-driven
       July 27 2016 
       June 12 2017 adapted iTopMute and its programs 
       to create this iBottom Mute

NEW: 	read iBottom_Mute3.config text file
OLD:   import perl variables from 
            *.pm configuration file xi
           within a local libAll 
           subdirectory
   	binheader is used for everything serious
   	gather is to be used to texting
   	correct offset is essential for applying the mute

DESCRIPTION

Interactively pick muting parameters

USE

Examples

SEISMIC UNIX NOTES

STEPS

1.  use the local library of the user
1.1 bring is user variables from a local file
2.  create instances of the needed subroutines

NOTES

We are using Moose.
Moose already declares that you need debuggers turned on
so you don't need a line like the following:
use warnings;

 Parameters

base_file_name su file without "su" suffix

gather_type    used only to determine user messages,
				e.g., SP, CDP
				
binheader_type type of gathers used for muting,
				e.g., ep,cdp
				
offset_type    horizontal component, 
				e.g., tracr, offset

Instantiate classes:

Create a new version of the package 
with a unique name

Get configuration information

Declare variables

in local memory space

Check for old data
check to see if prior mute parameter files exist for this   project 

Create Main Window

Sstart event-driven loop
Interaction with user
initialize values
If picks are new, show
message on how to pick data

Display

data first time

Decide whether to

   PICK or move on to NEXT CDP
   Place window near the upper left corner
   of the screen
Changing geometry of the toplevel window
my $h = $mw->screenheight();
my $w = $mw->screenwidth();
print("width and height of screen are $w,$h\n\n");
print("geometry of screen is $geom\n\n");

Set the prompt

value according
to which button is pressed
then exit the MainLoop
destroy the main window after the prompt
is properly set

sub set_pick

callbacks

 send gather number to $iBM
 delete output of previous semblance
 plus more callbacks following...

Delete output

of previous muting

-replot 1st data 
-PICK X-T pairs
-Increment number of tries to make
   data display interact with user
   (number_of_tries = 1)

sub set_calc

-PRESS the CALC button
-Increment number of tries to make
    display and show old picks
   (if number_of_tries >1)

Delete

the previous display

Message

to halts flow
when number_of_tries >0

sub set_saveNcont

same as next

sub set_next

In this case the $variable is empty
1. increment gather
   Exit if beyond last gather 
2. reset prompt
3. Otherwise display the first semblance
4 ... see following callbacks

Delete output

of previous top mute

Display

update gather number in memory
first top mute
Show user message
Select the mute values

sub set_exit

saying goodbye 
clear old images
kill window
stop script