#! /usr/dt/bin/dtksh ##################################################################### ### ### (c) Copyright 1994, 1995 TriTeal Corporation ### (c) Copyright 1993, 1994, 1995 Hewlett-Packard Company ### (c) Copyright 1993, 1994, 1995 International Business Machines Corp. ### (c) Copyright 1993, 1994, 1995 Sun Microsystems, Inc. ### (c) Copyright 1993, 1994, 1995 Novell, Inc. ### ##################################################################### ### File: dtlp ### ### Default Location: /usr/dt/bin/dtlp ### ### Purpose: Set up print spooler options and print. ### ### Description: This shell script provides a graphical interface ### for a print spooler dialog by default. If ### DTPRINTSILENT is "true", however, then it processes ### the file and directly invokes "lp". ### ### Invoked by: The default Print action or custom print actions. ### ### Product: @(#)TED 4.2 15-4200, dtlp 1.00 ### (c) Copyright 1994 TriTeal Corporation ### ### Note: Please do not modify this file. ### Later product updates will overwrite this file. ### ### Revision: $XConsortium: dtlp.src /main/cde1_maint/3 1995/10/06 08:56:52 lehors $ ### ##################################################################### ##################################################################### # BUGFIX: Porting of this script did not take into consideration # the differences of 'lp' and 'lpr' options. Linux uses # 'lpr' and functionality of this script has had the # changes made to fix this problem. # # FIXED: August 20th 1997, Lefteris Tsintjeli left@csd.hol.gr # # TESTED: Red Hat confirmed fix on August 25, 1997 # mike@redhat.com ##################################################################### set -u ################################################################## # # Following are the environmental options we support # ################################################################## # LPDEST # DTPRINTCWD # DTPRINTFILEREMOVE # DTPRINTSILENT # DTPRINTTESTOUTPUT # DTPRINTUSERFILENAME ################################################################## ### Internal Globals ### ### Actually, most variables in this script are global. ### ### Most are defined in the Initialize() routine. ### ################################################################## COMMAND_NAME=dtlp PATH=/bin:/usr/bin export PATH # # Add /usr/dt/lib/nls/msg/%L/%N.cat to NLSPATH # NLSPATH=/usr/dt/lib/nls/msg/%L/%N.cat:$NLSPATH export NLSPATH # # Exit/Return codes # CANCEL_EXIT=-1 SUCCESS=0 NO_PRINT_MESSAGE=1 USAGE_EXIT=2 NO_FILE_ERR=3 NO_INIT_FILE_ERR=4 NO_REGULAR_FILE_ERR=5 NO_READ_FILE_ERR=6 failure_flag=$SUCCESS # # For string processing # DOUBLE_QUOTE=\" SINGLE_QUOTE=\' MINUS_T="-T" ################################################################## ### Initialize() ### ### Set a number of key variables to their defaults. ### ### Examples ### ---------------------- ### File to print: Stdin ### Formatted printing: True ### Number of copies: 1 ### ################################################################## Initialize() { typeset -u Uppercase_string LPOPTIONS="" format_flag=0 print_page_allowed=1 # # Assume print file is stdin, unless told otherwise... # print_file="-" print_file_flag=1 simple_file_name="" print_man="" print_man_flag=0 print_cwd="" print_cwd_flag=0 print_raw_flag=0 silent_flag=0 remove_flag=0 verbose_flag=0 lpdest_flag=0 lpdest="" banner_title_flag=0 banner_title="" other_options_flag=0 other_options="" print_command_flag=0 print_command=lpr copy_count_flag=0 copy_count="1" test_flag=0 test_output_file="" user_filename_flag=0 user_filename="" Uppercase_string="" copy_count_flag=0 copy_count="1" CAT_MESG_STRING="" catopen CAT_ID $COMMAND_NAME SetPreEnvironment } ################################################################## ### ReconcileOptions() ### ### Arbitrate when there are two or more conflicting ### print options. ### ################################################################## ReconcileOptions() { # # The RAW option takes precedence over all others. # if (( $print_raw_flag )) then format_flag=0 print_man_flag=0 print_page_allowed=0 # # Next, this MAN option comes into play # elif (( $print_man_flag )) then format_flag=0 print_page_allowed=0 fi } ################################################################## ### DoParameterCollectionSilent() ### ### Collect the silent lp options, mimicking the GUI ### collection process. ### ################################################################## DoParameterCollectionSilent() { if (( $lpdest_flag )) then LPOPTIONS=-P${lpdest}" " fi if (( $banner_title_flag )) then LPOPTIONS=${LPOPTIONS}${MINUS_T}${SINGLE_QUOTE}${banner_title}${SINGLE_QUOTE}" " fi if (( $copy_count_flag )) then LPOPTIONS=${LPOPTIONS}"-#${copy_count} " fi if (( $other_options_flag )) then LPOPTIONS=${LPOPTIONS}"${other_options} " fi if (( $verbose_flag )) then echo Options are $LPOPTIONS fi } ################################################################## ### EchoTestOptions() ### ### Echo all the command settings. ### If dtlp is run stand-alone, the invoker may redirect ### the test output to a log file. Under the test harness ### this is done automatically by the "record" function. ### ################################################################## EchoLpSetupOptions() { if (( $remove_flag )) then echo Remove file flag is SET. fi if (( $print_man_flag )) then echo Manpage flag is SET. fi if (( $print_raw_flag )) then echo Raw print flag is SET. fi if (( $print_cwd_flag )) then echo Print working directory is $print_cwd. fi if (( $print_page_allowed )) then echo Page printing is allowed. else echo Page printing is NOT allowed. fi if (( $format_flag )) then echo Format flag is SET. fi if (( $silent_flag )) then echo Silent flag is SET. fi if (( $user_filename_flag )) then echo User-visible filename is \"$user_filename\". fi if (( $verbose_flag )) then echo Verbose flag is SET. fi if (( $other_options_flag )) then echo Other options include \"$other_options\". fi } ################################################################## ### PostErrorDialog() ### ### Bring up an error dialog, using the first argument ### to the function as the error message. ### ################################################################## PostErrorDialog() { catgets CAT_MESG_STRING $CAT_ID 1 150 "Print Error" DtDisplayErrorDialog "$CAT_MESG_STRING" "$1" DIALOG_PRIMARY_APPLICATION_MODAL XtMainLoop } ################################################################## ### PrintIt() ### ### Do the actual spooling, based on the value of LPOPTIONS. ### ### If possible, log the results. ################################################################## PrintIt() { if (( $banner_title_flag )) then PAGEHEADER="$banner_title" elif (( $user_filename_flag )) then PAGEHEADER="$user_filename" else PAGEHEADER=$print_file fi if (( $print_cwd_flag )) && [[ (-d $print_cwd) && (-x $print_cwd) ]] then cd $print_cwd fi if (( $test_flag )) then # then don't do any printing--instead log the results EchoLpSetupOptions echo "" echo "Command that will be invoked is..." INVOKER='echo' else INVOKER='sh -c' fi if (( $print_raw_flag )) then # Nothing special is required for raw mode on this platform. LPOPTIONS="${LPOPTIONS}" fi if (( $format_flag )) then $INVOKER "cat $print_file | pr -f -h ${PAGEHEADER} | ${print_command} ${LPOPTIONS}" elif (( $print_man_flag )) then $INVOKER "cat $print_file | tbl | nroff -man | col | ${print_command} ${LPOPTIONS}" else if [ $print_file = "-" ] then $INVOKER "cat $print_file | ${print_command} ${LPOPTIONS}" else $INVOKER "${print_command} ${LPOPTIONS} $print_file" fi # # Check status of the print command. Show error dialog on failure # if [ $? -ne 0 ] then catgets TEMP_MESG_STRING $CAT_ID 1 140 "Print failed, please check input parameters and printer status" PostErrorDialog "$TEMP_MESG_STRING" fi fi } ################################################################## ### Cleanup() ### ### End the show ################################################################## Cleanup() { if [ $remove_flag -eq 1 -a $print_file != "-" ] then rm -f $print_file fi if (( $verbose_flag )) then PrintEndLog fi } ################################################################## ### CheckOptions() ### ### Ensure that the necessary minimum parameters are ### supplied. ### ################################################################## CheckOptions() { if (( $print_file_flag == 0 )) then failure_flag=1 echo Sorry--missing a file name to print. fi if (( $failure_flag )) then if (( $verbose_flag )) then PrintEndLog fi Exit $NO_FILE_ERR fi } ################################################################## ### CheckValidFile() ### ### Ensure that the supplied file name references a ### valid file. ### ### Returns true or false. ################################################################## CheckValidFile() { if [[ $1 == "-" ]] then return $SUCCESS fi if [[ ! -f $1 ]] then return $NO_REGULAR_FILE_ERR fi if [[ ! -r $1 ]] then return $NO_READ_FILE_ERR fi return $SUCCESS } ################################################################## ### PrintStartLog() ### ### Print the start of the log ### ################################################################## PrintStartLog() { print "$COMMAND_NAME..." print "" } ################################################################## ### PrintEndLog() ### ### Print the values of the variables. ### ################################################################## PrintEndLog() { print "" if (( $failure_flag ==0 )) then print "...successfully completed." else print "...completed unsuccessfully." fi print "" } ################################################################## ### PrintUsage() ### ### Print a usage message. ### ################################################################## PrintUsage() { print "" print "Usage: $COMMAND_NAME [-b ] [-d ]" print " [-m ] [-n ]" print " [-o ] [-u ]" print " [-a] [-e] [-h] [-r] [-s] [-v] [-w]" print " " print " where:" print "" print " " print " Specifies the title to put on the banner page." print "" print " " print " Specifies the printer name as known to the lp spooler." print "" print " " print " Specifies the command with which to invoke the printer." print "" print " " print " Specifies the number of copies to print." print "" print " " print " Specifies the other print options." print "" print " " print " Specifies the title of the file to display to the user." print "" print " -a" print " Formats the file with "man" before printing." print "" print " -e" print " Removes the file after printing." print "" print " -h" print " Displays this help message." print "" print " -r" print " Formats the file with "pr -f" before printing." print "" print " -s" print " Prints silently (no dialog box)." print "" print " -v" print " Directs verbose messages to standard output." print "" print " -w" print " Prints the data raw (uninterpreted)." print "" print " " print " Specifies the file name to print." } ################################################################## ### Exit() ### ### All exits should go through this routine. ### ################################################################## Exit() { exit $1 } ################## GUI Callbacks #################### # # This is the 'Help' callback; it will post a help dialog # DoHelp() { DtkshDisplayQuickHelpDialog "dtlp_help" HELP_TYPE_TOPIC "Printmgr" "StartJobTA" } # # This is the 'OK' callback; it will unpost the main application window, # print to stdout the resulting string or to a printer, and then exit; # DoParameterCollection() { # # We need the form to stick around until a successful # print OR the user hits cancel, so "XtUnmanageChild $FORM" and # "XSync $DISPLAY True" have been removed # # # Need to clear this each time because if the printer device is "Default" # the previous setting for LPOPTIONS remains # LPOPTIONS="" XmTextGetString DEVICE_VAL $DEVICE XmTextGetString TITLE_VAL $TITLE XmTextGetString COPIES_VAL $COPIES if (( $other_options_flag == 0 )) then XmTextGetString COMMAND_OPTIONS_VAL $OPTIONS else COMMAND_OPTIONS_VAL=$other_options fi XtGetValues $PNUM_TOGGLE set:PNUM_PRINT_VAL if [[ $PNUM_PRINT_VAL = "true" ]] then format_flag=1 else format_flag=0 fi catgets CAT_MESG_STRING $CAT_ID 1 10 "Default" # Strip any leading or trailing spaces DEVICE_VAL=${DEVICE_VAL##+( )} DEVICE_VAL=${DEVICE_VAL%%+( )} if [[ ("$DEVICE_VAL" != "") && "$DEVICE_VAL" != "$CAT_MESG_STRING" ]] then LPOPTIONS="-P"$DEVICE_VAL fi # Strip any leading or trailing spaces TITLE_VAL=${TITLE_VAL##+( )} TITLE_VAL=${TITLE_VAL%%+( )} if [ "$TITLE_VAL" != "" ] ; then if [ ${#LPOPTIONS} -gt 0 ] ; then LPOPTIONS=${LPOPTIONS}" " fi banner_title=${SINGLE_QUOTE}${TITLE_VAL}${SINGLE_QUOTE} banner_title_flag=1 LPOPTIONS=${LPOPTIONS}${MINUS_T}${SINGLE_QUOTE}${TITLE_VAL}${SINGLE_QUOTE} fi # Strip any leading or trailing spaces # This should be validated, to make sure it is a valid integer. COPIES_VAL=${COPIES_VAL##+( )} COPIES_VAL=${COPIES_VAL%%+( )} if [ "$COPIES_VAL" != "" ] ; then if [ ${#LPOPTIONS} -gt 0 ] ; then LPOPTIONS=${LPOPTIONS}" " fi copy_count=$COPIES_VAL copy_count_flag=1 LPOPTIONS=${LPOPTIONS}"-#$COPIES_VAL" fi # Strip any leading or trailing spaces COMMAND_OPTIONS_VAL=${COMMAND_OPTIONS_VAL##+( )} COMMAND_OPTIONS_VAL=${COMMAND_OPTIONS_VAL%%+( )} if [ "$COMMAND_OPTIONS_VAL" != "" ] then LPOPTIONS=${LPOPTIONS}" $COMMAND_OPTIONS_VAL" fi if (( $verbose_flag )) then echo The LP options are \"${LPOPTIONS}\". fi PrintIt Cleanup Exit $failure_flag } # # This is the callback for the 'Cancel' button. It will send an empty # string to stdout, and will then exit with a value of -1. # CancelPrint() { echo "" Exit $CANCEL_EXIT } ################################################################## ### _DetermineColumns() ### ### Determine the XmNcolumns value from the current LANG ### ( This is AIX only ) ### ################################################################## _DetermineColumns() { if [ ! -z "$LANG" ] then case $LANG in ja_JP | ja_JP.IBM-eucJP | Ja_JP | Ja_JP.IBM-932 | Jp_JP | Jp_JP.pc932 | zh_TW | zh_TW.IBM-eucTW | zh_CN | zh_CN.IBM-eucCN | ZH_CN | ZH_CN.UTF-8 | ko_KR | ko_KR.IBM-eucKR ) return $2;; *) return $1;; esac fi return $1 } ################################################################## ### UseGui() ### ### Create the Main UI and set up the callbacks. ### ################################################################## UseGui() { catgets CAT_MESG_STRING $CAT_ID 1 20 "Print" XmCreateFormDialog FORM $TOPLEVEL form XtSetValues $(XtParent "-" $FORM) title:"$CAT_MESG_STRING" # # Ensure that we won't unmap when 'Help' is pressed. # Our FORM widget is a subclass of XmBulletinBoard. # XtSetValues $FORM autoUnmanage:False XtGetValues $FORM foreground:FOREGROUND XtGetValues $FORM background:BACKGROUND XtSetValues $FORM noResize:True catgets CAT_MESG_STRING $CAT_ID 1 30 "File:" XtCreateManagedWidget FILE_LABEL file_label XmLabel $FORM labelString:"${CAT_MESG_STRING}" alignment:ALIGNMENT_BEGINNING $(DtkshAnchorTop 15) $(DtkshAnchorLeft 20) if (( $user_filename_flag )) then LABEL_STRING="${user_filename}" else # # Remove all path components except the last. # simple_file_name=${print_file##*/} LABEL_STRING="${simple_file_name}" fi XtCreateManagedWidget PFILENAME pfilename XmLabel $FORM labelString:"${LABEL_STRING}" $(DtkshAnchorTop 15) $(DtkshRightOf $FILE_LABEL 10) catgets CAT_MESG_STRING $CAT_ID 1 40 "Printer:" XtCreateManagedWidget DEVICE_LABEL device_label XmLabel $FORM labelString:"$CAT_MESG_STRING" $(DtkshUnder $FILE_LABEL 22) $(DtkshAnchorLeft 20) # # Decide the appropriate XmNcolumns # # XtCreateManagedWidget DEVICE device XmTextField $FORM \# columns:10 \# $(DtkshUnder $FILE_LABEL 15) \# $(DtkshRightOf $DEVICE_LABEL 20) \# $(DtkshAnchorLeft 110) \# navigationType:EXCLUSIVE_TAB_GROUP _DetermineColumns 10 5 _columns=$? XtCreateManagedWidget DEVICE device XmTextField $FORM columns:"$_columns" $(DtkshUnder $FILE_LABEL 15) $(DtkshRightOf $DEVICE_LABEL 20) $(DtkshFloatRight 50) navigationType:EXCLUSIVE_TAB_GROUP catgets CAT_MESG_STRING $CAT_ID 1 50 "Default" DEFAULT_LP=${lpdest:-""} if [ "$DEFAULT_LP" != "" ] then XtSetValues $DEVICE value:$DEFAULT_LP cursorPosition:${#DEFAULT_LP} else XtSetValues $DEVICE value:"$CAT_MESG_STRING" cursorPosition:${#CAT_MESG_STRING} fi catgets CAT_MESG_STRING $CAT_ID 1 60 "Copies:" XtCreateManagedWidget COPIES_LABEL copies_label XmLabel $FORM labelString:"$CAT_MESG_STRING" $(DtkshUnder $FILE_LABEL 22) $(DtkshRightOf $DEVICE 55) # # Decide the appropriate XmNcolumns # # XtCreateManagedWidget COPIES copies XmTextField $FORM \# columns:4 \# value:"${copy_count}" \# cursorPosition:${\#copy_count} \# $(DtkshUnder $FILE_LABEL 15) \# $(DtkshRightOf $COPIES_LABEL 15) \# $(DtkshAnchorRight 10) \# navigationType:EXCLUSIVE_TAB_GROUP _DetermineColumns 4 2 _columns=$? XtCreateManagedWidget COPIES copies XmTextField $FORM columns:"$_columns" value:"${copy_count}" cursorPosition:${#copy_count} $(DtkshUnder $FILE_LABEL 15) $(DtkshRightOf $COPIES_LABEL 15) navigationType:EXCLUSIVE_TAB_GROUP catgets CAT_MESG_STRING $CAT_ID 1 70 "Banner Page Title:" XtCreateManagedWidget TITLE_LABEL title_label XmLabel $FORM labelString:"$CAT_MESG_STRING" $(DtkshUnder $DEVICE_LABEL 33) $(DtkshAnchorLeft 20) # # Decide the appropriate XmNcolumns # # XtCreateManagedWidget TITLE title XmTextField $FORM \# columns:10 \# $(DtkshUnder $DEVICE_LABEL 25) \# $(DtkshRightOf $TITLE_LABEL 20) \# $(DtkshAnchorRight 10) \# navigationType:EXCLUSIVE_TAB_GROUP _DetermineColumns 10 5 _columns=$? XtCreateManagedWidget TITLE title XmTextField $FORM columns:"$_columns" $(DtkshUnder $DEVICE_LABEL 25) $(DtkshRightOf $TITLE_LABEL 20) $(DtkshAnchorRight 10) navigationType:EXCLUSIVE_TAB_GROUP # # if banner_title is set, then use it as the default value # if (( $banner_title_flag )) then TEMP_VALUE=$banner_title XtSetValues $TITLE value:"${TEMP_VALUE}" cursorPosition:${#TEMP_VALUE} fi XtCreateManagedWidget SEP sep XmSeparator $FORM $(DtkshUnder $TITLE 10) $(DtkshSpanWidth) catgets CAT_MESG_STRING $CAT_ID 1 80 "Print Page Numbers" XtCreateManagedWidget PNUM_TOGGLE pnum_toggle XmToggleButton $FORM $(DtkshUnder $SEP 8) $(DtkshAnchorLeft 20) labelString:"$CAT_MESG_STRING" navigationType:EXCLUSIVE_TAB_GROUP if (( $print_page_allowed == 0 )) then XtSetValues $PNUM_TOGGLE sensitive:"False" elif (( $format_flag )) then XtSetValues $PNUM_TOGGLE set:"True" fi catgets CAT_MESG_STRING $CAT_ID 1 90 "Print Command Options:" XtCreateManagedWidget OPTIONS_LABEL options_label XmLabel $FORM labelString:"$CAT_MESG_STRING" $(DtkshUnder $PNUM_TOGGLE 13) $(DtkshAnchorLeft 20) # # Decide the appropriate XmNcolumns # # XtCreateManagedWidget OPTIONS options XmTextField $FORM \# columns:20 \# $(DtkshUnder $PNUM_TOGGLE 6) \# $(DtkshRightOf $OPTIONS_LABEL 20) \# $(DtkshAnchorRight 10) \# navigationType:EXCLUSIVE_TAB_GROUP _DetermineColumns 20 10 _columns=$? XtCreateManagedWidget OPTIONS options XmTextField $FORM columns:"$_columns" $(DtkshUnder $PNUM_TOGGLE 6) $(DtkshRightOf $OPTIONS_LABEL 20) $(DtkshAnchorRight 10) navigationType:EXCLUSIVE_TAB_GROUP if (( $other_options_flag == 1 )) then XtSetValues $OPTIONS_LABEL sensitive:"False" XtSetValues $OPTIONS sensitive:"False" fi XtCreateManagedWidget SEP1 sep XmSeparator $FORM $(DtkshUnder $OPTIONS_LABEL 14) $(DtkshSpanWidth) catgets CAT_MESG_STRING $CAT_ID 1 100 "Print" XtCreateManagedWidget OK ok XmPushButton $FORM labelString:"$CAT_MESG_STRING" $(DtkshUnder $SEP1 5) $(DtkshFloatLeft 10) $(DtkshFloatRight 30) $(DtkshAnchorBottom 5) XtAddCallback $OK activateCallback "DoParameterCollection" catgets CAT_MESG_STRING $CAT_ID 1 110 "Cancel" XtCreateManagedWidget CANCEL cancel XmPushButton $FORM labelString:"$CAT_MESG_STRING" $(DtkshUnder $SEP1 5) $(DtkshFloatLeft 40) $(DtkshFloatRight 60) $(DtkshAnchorBottom 5) XtAddCallback $CANCEL activateCallback "CancelPrint" catgets CAT_MESG_STRING $CAT_ID 1 120 "Help" XtCreateManagedWidget HELP help XmPushButton $FORM labelString:"$CAT_MESG_STRING" $(DtkshUnder $SEP1 5) $(DtkshFloatLeft 70) $(DtkshFloatRight 90) $(DtkshAnchorBottom 5) XtAddCallback $HELP activateCallback "DoHelp" #XtAddCallback $HELP activateCallback \# "DtkshDisplayQuickHelpDialog 'Using The Find Command' HELP_TYPE_FILE \# './Find.help' " XtSetValues $FORM initialFocus:$OK defaultButton:$OK cancelButton:$CANCEL navigationType:EXCLUSIVE_TAB_GROUP DtkshSetReturnKeyControls $DEVICE $TITLE $FORM $OK DtkshSetReturnKeyControls $TITLE $COPIES $FORM $OK XtManageChild $FORM XmInternAtom wm_delete_window $DISPLAY "WM_DELETE_WINDOW" False XmAddWMProtocolCallback $(XtParent "-" $FORM) $wm_delete_window "CancelPrint" XtMainLoop } ################################################################## ### DoNoFileMessage() ### ### We have determined that we have no valid file ### to print. Write out a message to that effect. ### ################################################################## DoNoFileMessage() { catgets CAT_MESG_STRING $CAT_ID 1 130 "Sorry--Unable to print:" GetNoFileMessageString print "" print `date` print "${CAT_MESG_STRING}" print "" } # # This is the 'NoFile' callback. It will exit the program. # NoFileCallback() { Exit $NO_FILE_ERR } GetNoFileMessageString() { catgets CAT_MESG_STRING $CAT_ID 1 130 "Sorry--Unable to print:" if (( $user_filename_flag )) then CAT_MESG_STRING=${CAT_MESG_STRING}" \"$user_filename\"." else simple_file_name=${print_file##*/} CAT_MESG_STRING=${CAT_MESG_STRING}" \"$simple_file_name\"." fi if (( $failure_flag == $NO_REGULAR_FILE_ERR )) then catgets TEMP_MESG_STRING $CAT_ID 1 132 "This is not a printable file or doesn't exist." elif (( $failure_flag == $NO_READ_FILE_ERR )) then catgets TEMP_MESG_STRING $CAT_ID 1 134 "You don't have permission to read that file." else catgets TEMP_MESG_STRING $CAT_ID 1 136 "Please check whether this file exists." fi CAT_MESG_STRING="${CAT_MESG_STRING}"" ${TEMP_MESG_STRING}" } ################################################################## ### DoNoFileMessageGUI() ### ### We have determined that we have no valid file ### to print. Post a dialog to that effect and exit ### as a result. ### ### Upon entry, check the failure_flag value for ### the proper message to print. ### ################################################################## DoNoFileMessageGui() { XmCreateInformationDialog INFORMATION $TOPLEVEL information catgets CAT_MESG_STRING $CAT_ID 1 160 "Print Information" XtSetValues $(XtParent "-" $INFORMATION) title:"$CAT_MESG_STRING" GetNoFileMessageString XtSetValues $INFORMATION okCallback:"NoFileCallback" messageString:"${CAT_MESG_STRING}" noResize:True defaultButtonType:DIALOG_OK_BUTTON messageAlignment:ALIGNMENT_CENTER XtUnmanageChild $(XmMessageBoxGetChild "-" $INFORMATION DIALOG_CANCEL_BUTTON) XtUnmanageChild $(XmMessageBoxGetChild "-" $INFORMATION DIALOG_HELP_BUTTON) XtManageChild $INFORMATION XmInternAtom wm_delete_window $DISPLAY "WM_DELETE_WINDOW" False XmAddWMProtocolCallback $(XtParent "-" $INFORMATION) $wm_delete_window "NoFileCallback" XtMainLoop } ################################################################## ### SetPreEnvironment() ### ### Check the ENVIRONMENT values we care about, and ### set the corresponding internal variable values. ### ################################################################## SetPreEnvironment() { if (( ${#LPDEST} )) then lpdest=$LPDEST lpdest_flag=1 fi if (( ${#DTPRINTCWD} )) then print_cwd=$DTPRINTCWD print_cwd_flag=1 fi if (( ${#DTPRINTFILEREMOVE} )) then # check for True Uppercase_string=$DTPRINTFILEREMOVE if [[ $Uppercase_string = "TRUE" ]] then remove_flag=1 fi Uppercase_string="" fi if (( ${#DTPRINTSILENT} )) then # check for True Uppercase_string=$DTPRINTSILENT if [[ $Uppercase_string = "TRUE" ]] then silent_flag=1 fi Uppercase_string="" fi if (( ${#DTPRINTUSERFILENAME} )) then user_filename=$DTPRINTUSERFILENAME user_filename_flag=1 fi if (( ${#DTPRINTTESTOUTPUT} )) then test_output_file=$DTPRINTTESTOUTPUT test_flag=1 fi } ################################################################## ### Main() ### ### Set up and call either the silent or the GUI routines. ### ### ################################################################## Initialize while getopts b:d:m:n:o:u:aehrsvw argument do case $argument in a) print_man_flag=1 ;; b) banner_title=$OPTARG banner_title_flag=1 ;; d) lpdest=$OPTARG lpdest_flag=1 ;; e) remove_flag=1 ;; h) PrintUsage Exit $SUCCESS ;; m) print_command=$OPTARG print_command_flag=1 ;; n) copy_count=$OPTARG copy_count_flag=1 ;; o) other_options=$OPTARG other_options_flag=1 ;; r) format_flag=1 ;; s) silent_flag=1 ;; u) user_filename=$OPTARG user_filename_flag=1 ;; v) verbose_flag=1 ;; w) print_raw_flag=1 ;; \?) PrintUsage Exit $USAGE_EXIT ;; esac done ((shift_positions = OPTIND - 1)) if (( $shift_positions < $# )) then # # We have at least one remaining non-switch command line argument # shift $shift_positions # # We assume that any remaining arguments constitute the # filename. # At some later point, may want to parse a list of filenames. # print_file=$* print_file_flag=1 fi # # Make sure all these settings line up consistently. # ReconcileOptions if (( $verbose_flag )) then PrintStartLog fi # # Do we have enough information to do our job? # This step may cause us to exit. # CheckOptions # # Have we been given a valid file? # CheckValidFile "$print_file" failure_flag=$? if (( $silent_flag )) then if (( $failure_flag == $SUCCESS )) then DoParameterCollectionSilent PrintIt Cleanup Exit $failure_flag else DoNoFileMessage Exit $NO_FILE_ERR fi else if [[ -r /usr/dt/lib/dtksh/DtFuncs.dtsh ]] then . /usr/dt/lib/dtksh/DtFuncs.dtsh else failure_flag=1 echo Sorry--cannot find initialization file. Exit $NO_INIT_FILE_ERR fi XtInitialize TOPLEVEL printerConfig Dtlp "${@:-}" XtDisplay DISPLAY $TOPLEVEL if (( $failure_flag == $SUCCESS )) then UseGui else DoNoFileMessageGui fi fi # # Never reached. # ##################### eof ##############################