open-insight/LSL2/STPROC/INIT_OIPI.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

237 lines
9.1 KiB
Plaintext

Function Init_OIPI(Params)
/************************************************************************************************
*
* This program is proprietary and is not to be used by or disclosed to others, nor is it to
* be copied without written permission from SRP Computer Solutions, Inc.
*
* Name : Init_OIPI
*
* Description: Initializes the OIPI using the provided parameters. Meant to be a shell around
* Set_Printer("INIT") that will use default parameters if none are passed. This
* routine will also provide better error trapping than what normally occurs inside
* report stored procedures.
*
* Notes: Start_OIPI and Create_Custom_Form, and Delete_Custom_Form are used to facilite
* advanced management of the INIT statement.
*
* Parameters:
* Params [in] -- @FM delimited array of parameters for this routine. This array gets
* parsed into a matrixed array so variable equates can be used to represent
* each individual parameter. See list of equates below for an explanation
*
* Preview (1) -- True/False flag if report should be previewed. Default is false
* PrintJobTitle (2) -- The text that should appear in the printer dialog box and the preview titlebar
* PrinterAssignment (3) -- Name of the printer assignment for the report. Default will be null, which means
* the workstation's default printer will be printed to
* Landscape (4) -- True/False flag if report should print in landscape. Default is false
* LeftMargin (5) -- Left margin for the report. Default is 0.500 inches
* TopMargin (6) -- Top margin for the report. Default is 0.500 inches
* RightMargin (7) -- Right margin for the report. Default is 0.500 inches
* BottomMargin (8) -- Bottom margin for the report. Default is 0.500 inches
* PageWidth (9) -- Page width for the report. Default is null and will use FormID instead
* PageHeight (10) -- Page height for the report. Default is null and will use FormID instead
* FormID (11) -- Form ID for the report. Default is LETTER (i.e. 1, see OIPRINT_EQUATES)
* ExportType (12) -- Format that the report should export into (i.e. PDF, HTML, etc.) Default is no export
* ExportFileName (13) -- Name of the file that the report will export into. Default is no filename
* DisplayError (14) -- True/False flag if any OIPI error messages should be displayed. Default is true
* Copies (15) -- Number of copies of the report, 1 if blank
* Printer (16) -- Custom selection of a printer on the fly
*
* Ans [out] -- True if INIT is successful, False if it isn't
*
* History (Date, Initials, Notes)
* 02/20/03 dmb Original programmer
* 02/25/03 dmb Increase loop from 2 to 5 to stop/start OIPI. Add Set_Printer("TERM", 1)
* statement before each Start_OIPI() command as it appears to close the
* OIPI better
*
************************************************************************************************/
$insert SRP_APP_INSERTS
$insert OIPRINT_EQUATES
Equ FormDimensions$ to 8.5:"-":11 : @FM : 11:"-":17 : @FM : 17:"-":11 : @FM : 8.5:"-":14 : @FM : 4.13:"-":9.5
Equ FormIDs$ to LETTER : @FM : TABLOID : @FM : LEDGER : @FM : LEGAL : @FM : ENV10
Declare function Get_Printer_Port, Create_Custom_Form, Delete_Custom_Form, Start_OIPI
Declare subroutine OIPI_Errors, Set_Printer
If Assigned(Params) else Params = ""
Ans = False$ ; * Assume failure for now
Process = 0
Loop
Until Process GE 4
Process += 1
On Process GoSub Setup_Variables, Get_Form_ID, Prepare_INIT_Params, Initialize_OIPI
Repeat
Return Ans
Setup_Variables:
Dim MatParams(16) ; * Initialize the matrix
Equ Preview to MatParams(1)
Equ PrintJobTitle to MatParams(2)
Equ PrinterAssignment to MatParams(3)
Equ Landscape to MatParams(4)
Equ LeftMargin to MatParams(5)
Equ TopMargin to MatParams(6)
Equ RightMargin to MatParams(7)
Equ BottomMargin to MatParams(8)
Equ PageWidth to MatParams(9)
Equ PageHeight to MatParams(10)
Equ FormID to MatParams(11)
Equ ExportType to MatParams(12)
Equ ExportFileName to MatParams(13)
Equ DisplayError to MatParams(14)
Equ Copies to MatParams(15)
Equ Printer to MatParams(16)
MatParse Params into MatParams ; * Convert the dynamic array into the matrixed array
If Preview EQ "" then Preview = False$
If Landscape EQ "" then Landscape = False$
If LeftMargin EQ "" then LeftMargin = 0.500
If TopMargin EQ "" then TopMargin = 0.500
If RightMargin EQ "" then RightMargin = 0.500
If BottomMargin EQ "" then BottomMargin = 0.500
If DisplayError EQ "" then DisplayError = True$
If Copies EQ "" then Copies = 1
If Len(PageWidth) AND Not(Num(PageWidth)) then PageWidth = "" ; * PageWidth must be a number
If Len(PageHeight) AND Not(Num(PageHeight)) then PageHeight = "" ; * PageHeight must be a number
If Len(FormID) AND Not(Num(FormID)) then FormID = "" ; * FormID must be a number
If ExportType GT 0 AND ExportFileName EQ "" then
/* An export filetype has been selected but no path and filename. Bring up the ChooseFile dialog */
FileType = "" ; * Initialize the variable
Extension = "" ; * Initialize the variable
Begin Case
Case ExportType EQ 1 ; FileType = "Rich Text Format" ; Extension = "rtf"
Case ExportType EQ 2 ; FileType = "HyperText Markup Language" ; Extension = "html"
Case ExportType EQ 3 ; FileType = "Dynamic HyperText Markup Language" ; Extension = "dhtml"
Case ExportType EQ 4 ; FileType = "HyperText Markup Language" ; Extension = "html"
Case ExportType EQ 5 ; FileType = "Dynamic HyperText Markup Language" ; Extension = "dhtml"
Case ExportType EQ 6 ; FileType = "Portable Document Format" ; Extension = "pdf"
Case ExportType EQ 10 ; FileType = "OIPI Print File" ; Extension = "opf"
End Case
If Len(Extension) then
CFOpt = ""
CFOpt<1> = 0
CFOpt<2> = FileType:" (*.":Extension:")/*.":Extension:"/All Files (*.*)/*.*/"
CFOpt<3> = 1
ExportFileName = Utility("CHOOSEFILE", @Window, CFOpt)
LenExt = Len(Extension)
If ExportFileName EQ "" then
ExportType = 0 ; * No export filename was selected, reset to printer output
end else
If ExportFileName[-LenExt, LenExt] NE Extension then ExportFileName := ".":Extension
end
end else
ExportType = 0 ; * No valid export type was given, reset to printer output
end
end
return
Get_Form_ID:
/* The 32-bit OIPI works better with Form IDs rather than width and height values. Therefore, even if a width
and height is specified, a match will be attempted against the common Form ID dimensions. If no match is found
then a custom form will be created using Create_Custom_Form */
FormID = ""
* Begin Case
*
* Case Len(FormID)
* A valid FormID was specified. Nothing else needs to be done
* Case Len(PageWidth) AND Len(PageHeight)
* * A valid width and height was specified. See if these match the common dimensions list and use that
* * Form ID if found
* PageSize = (PageWidth + 0) : "-": (PageHeight + 0) ; * Create a lookup value
* Locate PageSize in FormDimensions$ using @FM setting fPos then
* * A match was found so use predefined Form ID
* FormID = FormIDs$<fPos>
* end else
* * No match was found. Create a custom form
* FormID = Create_Custom_Form(PageWidth, PageHeight)
* end
*
* Case Otherwise$
* // No values were specified so use Letter (8-1/2 x 11) as a default
* FormID = LETTER
* End Case
// Clear the PageWidth and PageHeight variables since only the FormID will be used
* PageWidth = ""
* PageHeight = ""
return
Prepare_INIT_Params:
FileName = ""
FileName<1> = PrintJobTitle
FileName<3> = ExportType
FileName<4> = ExportFileName
PageInfo = ""
PageInfo<1> = LeftMargin
PageInfo<2> = TopMargin
PageInfo<3> = RightMargin
PageInfo<4> = BottomMargin
PageInfo<5> = PageWidth
PageInfo<6> = PageHeight
PageInfo<7> = FormID
PageInfo<8> = Copies
PageInfo<9> = 1 ; * Allow copy to clipboard
PageSetup = ""
PageSetup<1> = Landscape
If Preview then
Preview = 3 ; * Set preview to maximize
end else
Preview = 0 ; * Print using the WMF fix
end
PrintSetup = ""
Begin Case
Case ExportType GT 0
PrintSetup<1, 1> = 5 ; * Specific location
PrintSetup<1, 3> = 1 ; * Hide the Printing Window
Case Preview
PrintSetup<1, 1> = Preview
PrintSetup<1, 2> = 0
PrintSetup<1, 6> = 7 ; * Keyboard, mouse, and wheel support
PrintSetup<2> = -1 ; * Zoom to page width
Case Otherwise$
PrintSetup<1, 1> = Preview
PrintSetup<1, 2> = 0
PrintSetup<1, 3> = 1 ; * Hide the Printing Window
PrintSetup<1, 4> = 3 ; * Completely hidden
End Case
If Printer then
Port = Printer
end else
Port = Get_Printer_Port(PrinterAssignment) ; * If PrinterAssignment is null, Get_Printer_Port will return the workstation's default printer
end
return
Initialize_OIPI:
Ans = Set_Printer("INIT", FileName, PrintJobTitle, PageInfo, PageSetup, PrintSetup, Port<1>:@FM:Port<3>)
If (Ans LT 0) AND (DisplayError) then
OIPI_Errors(Ans, @APPINFO<1>)
Ans = False$ ; * Set return value to just false
end
return