#!/bin/csh
# This is a program to use in conjunction with the example tooling forms.
# This program is designed to check to see if a job exists, create it if it does not, (and open
# it if it does). It will then check for the forms and load copy them in if they do not exist.
# Then it will update the form information if required, and then open the current form.
# As implied by the name, it is designed to be called from the "F4" button (as dictated by the
# example script binding file).
#
# Written by Ian Ticehurst (Autom8 Ltd.)
# Version 1A. Date: 11.09.00 - Initial design and development.
# Version 1B. Date: 08.12.00 - Allow for form configuration at different sites.
# Version 1C. Date: 11.12.00 - Modification to gui windows and fonts used.
# Version 1D. Date: 11.12.00 - Add font and colour information to source file.
# Version 1E. Date: 06.01.01 - Add additional information to source file (company, types and layers).
# Version 1F. Date: 05.02.01 - Add job path to forms.
#                            - Allow user to select job from list.
# Version 1G. Date: 09.02.01 - Allow user to select to keep / delete tmp. step.
#                            - Modify the setting and useage of $TMP.
# Version 1H. Date: 14.03.01 - Check how "$GENESIS_EDIR" is set to ensure paths are set correctly.
#                            - Modify check to see if job already exists (to avoid c-shell limitation).
#                            - Set variable to point to "genesislib" location (in case not in standard place).
# Version 1I. Date: 02.04.01 - Fix problem with "JOB1" variable undefined.
######################################################################### 
# Define correct temp. dir. depending on env. vars.
if ($?GENESIS_TMP) then
	set TMP = $GENESIS_TMP
else if ($?GENESIS_DIR) then
	set TMP = $GENESIS_DIR/tmp
else
	set TMP = /genesis/tmp
endif

# Set the INFO alias and the tmp INFO file.
set INFO = $TMP/info
alias DO_INFO 'COM info,out_file=$INFO,write_mode=replace,args=\!:*;source $INFO; rm $INFO'

# Set up gui data and response files.
set GUI_DATA = $TMP/gui_data.$$
set GUI_RESP = $TMP/gui_resp.$$

# Check to see if $GENESIS_EDIR is local path or absolute. Set "EDIR_PATH" accordingly).
if ($GENESIS_EDIR =~ /* || $GENESIS_EDIR =~ ?:*) then
	set EDIR_PATH = ($GENESIS_EDIR)
else
	set EDIR_PATH = ($GENESIS_DIR/$GENESIS_EDIR)
endif 

# Set up path for "genesislib" job (form library).
set LIB_PATH = `$EDIR_PATH/misc/dbutil path jobs genesislib`

# Set up font sizes and colours to use in gui's.
set TITLE_FNT = `echo "hbr18"`
set NORM_FNT = `echo "hbr14"`
set HINT_FNT = `echo "hbi14"`
set TITLE_COL = `echo "772288"`
set NORM_COL = `echo "222299"`
set LSTBG_COL = `echo "222260"`
set WARN_COL = `echo "992222"`
set HINT_COL = `echo "886666"`

# Detect current operating system.
set CURR_OS = `uname -s`

# If current operating system is NT, set alias to call awk95 as "awk".
if ($CURR_OS == "WINDOWS_NT") then
	alias awk '$EDIR_PATH/nt/bin/awk95'
endif

# Test to see if "$JOB" is defined.
if (! $?JOB) then
	# Initial pop-up window. Ask user to enter job name, customer name, and other general details.
	echo "WIN 200 200" >> $GUI_DATA
	echo "FONT $TITLE_FNT" >> $GUI_DATA
	echo "BG $TITLE_COL" >> $GUI_DATA
	echo "FG 999999" >> $GUI_DATA
	echo "BW 1" >> $GUI_DATA
	echo "LABEL Genesis Automated Tooling." >> $GUI_DATA
	echo "FONT $NORM_FNT" >> $GUI_DATA
	echo "BG $NORM_COL" >> $GUI_DATA
	echo "BW 0" >> $GUI_DATA
	echo "LABEL Job Selection Pop-up." >> $GUI_DATA
	echo "LABEL Select job required" >> $GUI_DATA
	echo "LIST JOB1 15 S" >> $GUI_DATA
	$EDIR_PATH/misc/dbutil list jobs | awk -F' ' '{print $1}' >> $GUI_DATA
	echo "END" >> $GUI_DATA
	echo "TEXT JOB2 Job:" >> $GUI_DATA
	echo "END" >> $GUI_DATA

	gui $GUI_DATA > $GUI_RESP
	source $GUI_RESP; \rm $GUI_RESP; \rm $GUI_DATA

	if ($JOB2 == "") then
		set JOBNAME = `echo "$JOB1"`
	else
		set JOBNAME = `echo "$JOB2"`
	endif
else
	set JOBNAME = `echo "$JOB"`
endif

# Test to see if job already exists.
DO_INFO -t job -e $JOBNAME -d exists
if ($gEXISTS == "yes") then
	set JOB_EXIST = 1
else
	set JOB_EXIST = 0
endif

# If job does not exist, create it.
if ($JOB_EXIST == 0) then
	echo "WIN 200 200" >> $GUI_DATA
	echo "FONT $TITLE_FNT" >> $GUI_DATA
	echo "BG $TITLE_COL" >> $GUI_DATA
	echo "FG 999999" >> $GUI_DATA
	echo "BW 1" >> $GUI_DATA
	echo "LABEL Genesis Automated Tooling." >> $GUI_DATA
	echo "FONT $NORM_FNT" >> $GUI_DATA
	echo "BG $NORM_COL" >> $GUI_DATA
	echo "BW 0" >> $GUI_DATA
	echo "LABEL Job Details Pop-up." >> $GUI_DATA
	echo "LABEL $JOBNAME does not exist and will be created" >> $GUI_DATA
	echo "LABEL Enter job details:-" >> $GUI_DATA
	echo "TEXT MANUF 10 Manufacturing Number:" >> $GUI_DATA
	echo "DTEXT MANUF $JOBNAME" >> $GUI_DATA
	echo "TEXT DUE_D 10 Dispatch Date:" >> $GUI_DATA
	echo "TEXT TDUE_D 10 Tooling Avail. Date:" >> $GUI_DATA
	echo "TEXT CUST 10 Customer Name:" >> $GUI_DATA
	echo "TEXT BDR 10 Customer Ref. Number:" >> $GUI_DATA
	echo "END" >> $GUI_DATA

	gui $GUI_DATA > $GUI_RESP
	source $GUI_RESP; \rm $GUI_RESP; \rm $GUI_DATA

	# Check for available databases, ask user to confirm job creation.
	set DBS_LIST = `$EDIR_PATH/misc/dbutil list dbs * | awk -F' ' '{print $1}'`

	echo "WIN 200 200" >> $GUI_DATA
	echo "FONT $TITLE_FNT" >> $GUI_DATA
	echo "BG $TITLE_COL" >> $GUI_DATA
	echo "FG 999999" >> $GUI_DATA
	echo "BW 1" >> $GUI_DATA
	echo "LABEL Genesis Automated Tooling." >> $GUI_DATA
	echo "FONT $NORM_FNT" >> $GUI_DATA
	echo "BG $NORM_COL" >> $GUI_DATA
	echo "BW 0" >> $GUI_DATA
	echo "LABEL Job Creation Pop-up." >> $GUI_DATA
	if ($#DBS_LIST == 1) then
		echo "LABEL $JOBNAME will be created in database $DBS_LIST" >> $GUI_DATA
		set DBS = `echo "$DBS_LIST"`
	else
		echo "LABEL $JOBNAME will be created" >> $GUI_DATA
		echo "LABEL Select database to use" >> $GUI_DATA
		echo "BG $LSTBG_COL" >> $GUI_DATA
		echo "LIST DBS 3 S" >> $GUI_DATA
		foreach DBS ($DBS_LIST)
			echo "$DBS" >> $GUI_DATA
		end
		echo "END" >> $GUI_DATA
		echo "BG $NORM_COL" >> $GUI_DATA
	endif
	echo "LABEL Is it OK to continue?" >> $GUI_DATA
	echo "RADIO CONT Options: V 1 992222" >> $GUI_DATA
	echo "Yes, create job" >> $GUI_DATA
	echo "No, abort program" >> $GUI_DATA
	echo "END" >> $GUI_DATA

	gui $GUI_DATA > $GUI_RESP
	source $GUI_RESP; \rm $GUI_RESP; \rm $GUI_DATA

	if ($CONT == 2) then
		goto abort
	endif

	# Create job and step.
	COM create_entity,job=,is_fw=no,type=job,name=$JOBNAME,db=$DBS,fw_type=form
	COM set_attribute,type=job,job=$JOBNAME,name1=,name2=,name3=,attribute=.customer,value=$CUST
	COM create_entity,job=$JOBNAME,is_fw=no,type=step,name=pcb,db=$DBS,fw_type=form
endif

# Open job.
COM open_job,job=$JOBNAME

# Get full path of job.
set JOB_PATH = `$EDIR_PATH/misc/dbutil path jobs $JOBNAME`

# If job has just been created, initialise the info.source file.
if ($JOB_EXIST == 0) then
	# Initialise info.source file with default values (panelise=no, and netlist=fail).
	echo "set PAN = 0" >> $JOB_PATH/user/info.source
	echo "set NET = 0" >> $JOB_PATH/user/info.source
endif

# Check to see if library forms have been initialised.
if (! -e $LIB_PATH/forms/genform1/def/form_info.source) then
	# Inform user that this is the first time these forms have been run and configuration information is required.
	echo "WIN 200 200" >> $GUI_DATA
	echo "FONT $TITLE_FNT" >> $GUI_DATA
	echo "BG $TITLE_COL" >> $GUI_DATA
	echo "FG 999999" >> $GUI_DATA
	echo "BW 1" >> $GUI_DATA
	echo "LABEL Genesis Automated Tooling." >> $GUI_DATA
	echo "FONT $NORM_FNT" >> $GUI_DATA
	echo "BG $NORM_COL" >> $GUI_DATA
	echo "BW 0" >> $GUI_DATA
	echo "LABEL Form Information Pop-up." >> $GUI_DATA
	echo "LABEL The system has detected that these forms have not been used before." >> $GUI_DATA
	echo "LABEL In order to customise these forms some input is required." >> $GUI_DATA
	echo "LABEL The following pop-ups will request information on:-" >> $GUI_DATA
	echo "LABEL Company name" >> $GUI_DATA
	echo "LABEL Board type terminology" >> $GUI_DATA
	echo "LABEL Board finishes used" >> $GUI_DATA
	echo "LABEL Copper weights used" >> $GUI_DATA
	echo "FONT $HINT_FNT" >> $GUI_DATA
	echo "BG $HINT_COL" >> $GUI_DATA
	echo "LABEL Hint - In order to re-run this configuration remove the file" >> $GUI_DATA
	echo "LABEL form_info.source from $LIB_PATH/forms/genform1/def" >> $GUI_DATA
	echo "LABEL Form re-configuration is also available from buttons on the forms" >> $GUI_DATA
	echo "BG $NORM_COL" >> $GUI_DATA
	echo "END" >> $GUI_DATA

	gui $GUI_DATA > $GUI_RESP
	source $GUI_RESP; \rm $GUI_RESP; \rm $GUI_DATA

	# Form is not initialised. Offer user configuration options.
	echo "WIN 200 200" >> $GUI_DATA
	echo "FONT $TITLE_FNT" >> $GUI_DATA
	echo "BG $TITLE_COL" >> $GUI_DATA
	echo "FG 999999" >> $GUI_DATA
	echo "BW 1" >> $GUI_DATA
	echo "LABEL Genesis Automated Tooling." >> $GUI_DATA
	echo "FONT $NORM_FNT" >> $GUI_DATA
	echo "BG $NORM_COL" >> $GUI_DATA
	echo "BW 0" >> $GUI_DATA
	echo "LABEL Form Initialisation Pop-up (1 of 3)." >> $GUI_DATA
	echo "LABEL Enter details for forms:-" >> $GUI_DATA
	echo "TEXT COMP 10 Company Name (for form label):" >> $GUI_DATA
	echo "DTEXT COMP Autom8 Ltd." >> $GUI_DATA
	echo "TEXT KEEP_ORG 4 Keep Pre-Engineering Data:" >> $GUI_DATA
	echo "DTEXT KEEP_ORG yes" >> $GUI_DATA
	echo "TEXT MAX_LYR 3 Maximum Layer Count:" >> $GUI_DATA
	echo "DTEXT MAX_LYR 20" >> $GUI_DATA
	echo "LABEL Form Labels For Different Board Types:" >> $GUI_DATA
	echo "TEXT SS_BD 20 Single Sided Board:" >> $GUI_DATA
	echo "TEXT DS_BD 20 Double Sided Board:" >> $GUI_DATA
	echo "TEXT ML_BD 30 Multilayer Board:" >> $GUI_DATA
	echo "DTEXT SS_BD Single Sided" >> $GUI_DATA
	echo "DTEXT DS_BD Double Sided" >> $GUI_DATA
	echo "DTEXT ML_BD Multi-Layer" >> $GUI_DATA
	echo "END" >> $GUI_DATA

	gui $GUI_DATA > $GUI_RESP
	source $GUI_RESP; \rm $GUI_RESP; \rm $GUI_DATA

	# Board finish parameters.
	echo "WIN 200 200" >> $GUI_DATA
	echo "FONT $TITLE_FNT" >> $GUI_DATA
	echo "BG $TITLE_COL" >> $GUI_DATA
	echo "FG 999999" >> $GUI_DATA
	echo "BW 1" >> $GUI_DATA
	echo "LABEL Genesis Automated Tooling." >> $GUI_DATA
	echo "FONT $NORM_FNT" >> $GUI_DATA
	echo "BG $NORM_COL" >> $GUI_DATA
	echo "BW 0" >> $GUI_DATA
	echo "LABEL Form Initialisation Pop-up (2 of 3)." >> $GUI_DATA
	echo "LABEL Enter all possible finish types:-" >> $GUI_DATA
	echo "TEXT FIN1 15 Finish Type:" >> $GUI_DATA
	echo "TEXT FIN2 15 Finish Type:" >> $GUI_DATA
	echo "TEXT FIN3 15 Finish Type:" >> $GUI_DATA
	echo "TEXT FIN4 15 Finish Type:" >> $GUI_DATA
	echo "TEXT FIN5 15 Finish Type:" >> $GUI_DATA
	echo "TEXT FIN6 15 Finish Type:" >> $GUI_DATA
	echo "TEXT FIN7 15 Finish Type:" >> $GUI_DATA
	echo "TEXT FIN8 15 Finish Type:" >> $GUI_DATA
	echo "TEXT FIN9 15 Finish Type:" >> $GUI_DATA
	echo "TEXT FIN10 15 Finish Type:" >> $GUI_DATA
	echo "DTEXT FIN1 H.A.S.L." >> $GUI_DATA
	echo "DTEXT FIN2 Immersion Gold" >> $GUI_DATA
	echo "END" >> $GUI_DATA

	gui $GUI_DATA > $GUI_RESP
	source $GUI_RESP; \rm $GUI_RESP; \rm $GUI_DATA

	# Copper weight parameters.
	echo "WIN 200 200" >> $GUI_DATA
	echo "FONT $TITLE_FNT" >> $GUI_DATA
	echo "BG $TITLE_COL" >> $GUI_DATA
	echo "FG 999999" >> $GUI_DATA
	echo "BW 1" >> $GUI_DATA
	echo "LABEL Genesis Automated Tooling." >> $GUI_DATA
	echo "FONT $NORM_FNT" >> $GUI_DATA
	echo "BG $NORM_COL" >> $GUI_DATA
	echo "BW 0" >> $GUI_DATA
	echo "LABEL Form Initialisation Pop-up (3 of 3)." >> $GUI_DATA
	echo "LABEL Enter all possible copper weights:-" >> $GUI_DATA
	echo "TEXT CU1 15 Copper Weight:" >> $GUI_DATA
	echo "TEXT CU2 15 Copper Weight:" >> $GUI_DATA
	echo "TEXT CU3 15 Copper Weight:" >> $GUI_DATA
	echo "TEXT CU4 15 Copper Weight:" >> $GUI_DATA
	echo "TEXT CU5 15 Copper Weight:" >> $GUI_DATA
	echo "TEXT CU6 15 Copper Weight:" >> $GUI_DATA
	echo "TEXT CU7 15 Copper Weight:" >> $GUI_DATA
	echo "TEXT CU8 15 Copper Weight:" >> $GUI_DATA
	echo "FONT $HINT_FNT" >> $GUI_DATA
	echo "BG $HINT_COL" >> $GUI_DATA
	echo "LABEL Hint - Ensure that copper weights are entered in ascending order" >> $GUI_DATA
	echo "LABEL with the lightest copper weight in the top position." >> $GUI_DATA
	echo "BG $NORM_COL" >> $GUI_DATA
	echo "END" >> $GUI_DATA

	gui $GUI_DATA > $GUI_RESP
	source $GUI_RESP; \rm $GUI_RESP; \rm $GUI_DATA

	# Create information source file.
	cd $LIB_PATH/forms/genform1/def
	touch form_info.source
	echo "set TITLE_FNT = ('$TITLE_FNT')" > form_info.source
	echo "set NORM_FNT = ('$NORM_FNT')" >> form_info.source
	echo "set HINT_FNT = ('$HINT_FNT')" >> form_info.source
	echo "set TITLE_COL = ('$TITLE_COL')" >> form_info.source
	echo "set NORM_COL = ('$NORM_COL')" >> form_info.source
	echo "set LSTBG_COL = ('$LSTBG_COL')" >> form_info.source
	echo "set WARN_COL = ('$WARN_COL')" >> form_info.source
	echo "set HINT_COL = ('$HINT_COL')" >> form_info.source
	echo "set COMP = ('$COMP')" >> form_info.source
	echo "set KEEP_ORG = ('$KEEP_ORG')" >> form_info.source
	echo "set MAX_LYR = ('$MAX_LYR')" >> form_info.source
	echo "set BD_TYPE = ('$SS_BD' '$DS_BD' '$ML_BD')" >> form_info.source
	echo "set FINISH_TYPE = ('$FIN1' '$FIN2' '$FIN3' '$FIN4' '$FIN5' '$FIN6' '$FIN7' '$FIN8' '$FIN9' '$FIN10')" >> form_info.source
	echo "set CU_WGHTS = ('$CU1' '$CU2' '$CU3' '$CU4' '$CU5' '$CU6' '$CU7' '$CU8')" >> form_info.source

	# Modify library forms header files.
	cd $LIB_PATH/forms/genform1/def
	sed "s/NOT INITIALISED/$COMP/" hdr.orig > hdr.tmp1
	sed "s/TBC-SS/$SS_BD/" hdr.tmp1 > hdr.tmp2
	sed "s/TBC-DS/$DS_BD/" hdr.tmp2 > hdr.tmp3
	sed "s/TBC-ML/$ML_BD/" hdr.tmp3 > hdr.tmp4
	sed "s/MAX=20/MAX=$MAX_LYR/" hdr.tmp4 > hdr.tmp5	
	sed "s/HASL Finish/$FIN1/" hdr.tmp5 > hdr.tmp6
	sed "s/Immersion Gold Finish/$FIN2/" hdr.tmp6 > hdr.tmp7
	sed "s/#ADDITIONAL FINISH/$FIN3|$FIN4|$FIN5|$FIN6|$FIN7|$FIN8|$FIN9|$FIN10/" hdr.tmp7  | tr '|' '\012' > hdr.tmp8
	sed "s/0.5oz/$CU1|$CU2|$CU3|$CU4|$CU5|$CU6|$CU7|$CU8/" hdr.tmp8  | tr '|' '\012' > hdr
	\rm hdr.tmp*

	cd $LIB_PATH/forms/genform2/def
	sed "s/NOT INITIALISED/$COMP/" hdr.orig > hdr.tmp1
	sed "s/TBC-SS/$SS_BD/" hdr.tmp1 > hdr.tmp2
	sed "s/TBC-DS/$DS_BD/" hdr.tmp2 > hdr.tmp3
	sed "s/TBC-ML/$ML_BD/" hdr.tmp3 > hdr.tmp4
	sed "s/MAX=20/MAX=$MAX_LYR/" hdr.tmp4 > hdr.tmp5	
	sed "s/HASL Finish/$FIN1/" hdr.tmp5 > hdr.tmp6
	sed "s/Immersion Gold Finish/$FIN2/" hdr.tmp6 > hdr.tmp7
	sed "s/#ADDITIONAL FINISH/$FIN3|$FIN4|$FIN5|$FIN6|$FIN7|$FIN8|$FIN9|$FIN10/" hdr.tmp7  | tr '|' '\012' > hdr.tmp8
	sed "s/0.5oz/$CU1|$CU2|$CU3|$CU4|$CU5|$CU6|$CU7|$CU8/" hdr.tmp8  | tr '|' '\012' > hdr
	\rm hdr.tmp*
endif

# Check job to see if forms exist. If they do not copy them to job.
if (! -e $JOB_PATH/forms/genform1) then
	COM copy_form,src_job=genesislib,src_form=genform1,dst_job=$JOBNAME,dst_form=genform1
	# Initialise the form.
	COM edit_form,job=$JOBNAME,form=genform1,elem=job_no,value=$JOBNAME
	COM edit_form,job=$JOBNAME,form=genform1,elem=manu_no,value=$MANUF
	COM edit_form,job=$JOBNAME,form=genform1,elem=due_date,value=$DUE_D
	COM edit_form,job=$JOBNAME,form=genform1,elem=tdue_date,value=$TDUE_D
	COM edit_form,job=$JOBNAME,form=genform1,elem=bdr,value=$BDR
	COM edit_form,job=$JOBNAME,form=genform1,elem=cust,value=$CUST
	COM edit_form,job=$JOBNAME,form=genform1,elem=job_path,value=$JOB_PATH
endif
if (! -e $JOB_PATH/forms/genform2) then
	COM copy_form,src_job=genesislib,src_form=genform2,dst_job=$JOBNAME,dst_form=genform2
	# Initialise the form.
	COM edit_form,job=$JOBNAME,form=genform2,elem=job_no,value=$JOBNAME
	COM edit_form,job=$JOBNAME,form=genform2,elem=manu_no,value=$MANUF
	COM edit_form,job=$JOBNAME,form=genform2,elem=due_date,value=$DUE_D
	COM edit_form,job=$JOBNAME,form=genform2,elem=tdue_date,value=$TDUE_D
	COM edit_form,job=$JOBNAME,form=genform2,elem=bdr,value=$BDR
	COM edit_form,job=$JOBNAME,form=genform2,elem=cust,value=$CUST
endif

# Check the log file to see which form is in progress.
set CURR_FORM = `echo "genform1"`
if (-e $JOB_PATH/user/control_log) then
	set CURR_FORM = `tail -1 $JOB_PATH/user/control_log | awk -F' ' '{print $3}'`
endif

# Open the correct form.
if ($CURR_FORM == "genform2") then
	COM show_form,job=$JOBNAME,form=genform2,updonly=No,updelem=
else
	COM show_form,job=$JOBNAME,form=genform1,updonly=No,updelem=
endif

abort:

exit
