216 lines
6.3 KiB
Plaintext
216 lines
6.3 KiB
Plaintext
function Test_PrintSetup(Instruction, p1, p2, p3)
|
|
#pragma precomp SRP_PreCompiler
|
|
|
|
******************************************************************************
|
|
*
|
|
* 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
|
|
* Revelation Technologies, Inc.
|
|
*
|
|
* Product : OpenInsight Works
|
|
*
|
|
* History : (date, initials, notes)
|
|
* 01/23/96 cp Updating for Hoffa/3.1
|
|
* 02/22/96 cp Added help
|
|
*
|
|
******************************************************************************
|
|
|
|
declare function Get_Property, SRP_Get_Printers, Test_PrintSetup
|
|
declare subroutine Set_Property, SendMessage, Dialog_Box, Start_Window
|
|
declare subroutine WritePrivateProfileString, DefPrtr, SetupP
|
|
declare subroutine GetPrivateProfileSection, GetPrivateProfileString
|
|
declare subroutine Utility
|
|
|
|
$insert Logical
|
|
$insert PrintSetup_Equates
|
|
|
|
equ DLG_NAME$ to "TEST_PRINTSETUP"
|
|
equ INI_FILE$ to "win.ini": \00\
|
|
equ PRN_SECTION$ to "devices": \00\
|
|
equ DFT_SECTION$ to "windows": \00\
|
|
equ DFT_KEY$ to "device" : \00\
|
|
equ WM_WININICHANGE$ to 26
|
|
equ HWND_BROADCAST$ to 65535
|
|
equ MAX_SIZE$ to 4096
|
|
|
|
|
|
if assigned(Instruction) then
|
|
if len(Instruction) and num(Instruction) else
|
|
Instruction = 1
|
|
end
|
|
end else
|
|
Instruction = 1
|
|
end
|
|
|
|
Ret = ""
|
|
if Instruction then
|
|
on Instruction gosub Setup, Get, Set, Create, SetDefault, Options, Help, SelChange, Setup
|
|
end
|
|
return Ret
|
|
|
|
|
|
*******************************
|
|
* open the printer setup window
|
|
*******************************
|
|
Setup:
|
|
Parent = @window
|
|
Exists = Get_Property(Parent, "HANDLE")
|
|
if len(Parent) and Exists then
|
|
Frame = Get_Property(Parent, "MDIFRAME")
|
|
if len(Frame) then
|
|
Parent = Frame
|
|
end
|
|
Dialog_Box(DLG_NAME$, Parent)
|
|
end else
|
|
Start_Window(DLG_NAME$)
|
|
end
|
|
return
|
|
|
|
|
|
**************************
|
|
* get the list of printers
|
|
**************************
|
|
Get:
|
|
* get list of installed printer types
|
|
Models = str(\00\, MAX_SIZE$)
|
|
GetPrivateProfileSection(PRN_SECTION$, 0, \00\, Models, len(Models), INI_FILE$)
|
|
convert \0020\ to \2000\ in Models
|
|
Models = trimb(Models)
|
|
convert \0020\ to \20FE\ in Models
|
|
* get the list of installed printers
|
|
cModels = count(Models, @fm) + (Models # "")
|
|
Printers = ""
|
|
for iModel = 1 to cModels
|
|
Printer = str(\00\, MAX_SIZE$)
|
|
GetPrivateProfileString(PRN_SECTION$, Models<iModel>: \00\, \00\, Printer, len(Printer), INI_FILE$)
|
|
Printer = Printer [1,\00\]
|
|
cPrinters = count(Printer, ",")
|
|
for iPrinter = 1 to cPrinters
|
|
Printers<-1> = Models<iModel>: ",": field(Printer, ",", 1): ",": field(Printer, ",", iPrinter + 1)
|
|
next iPrinter
|
|
next iModel
|
|
|
|
* get the default printer
|
|
Default = str(\00\, MAX_SIZE$)
|
|
GetPrivateProfileString(DFT_SECTION$, DFT_KEY$, \00\, Default, len(Default), INI_FILE$)
|
|
Default = Default [1, \00\]
|
|
|
|
*debug
|
|
* dPrinters = SRP_Get_Printers('Local')
|
|
* cPrinters = SRP_Get_Printers('Connect')
|
|
* bPrinters = SRP_Get_Printers('Connect')
|
|
* aPrinters = SRP_Get_Printers('Connect')
|
|
*
|
|
* List = ''
|
|
* Current = ''
|
|
* Printers = dPrinters:@FM:cPrinters:@FM:bPrinters:@FM:aPrinters
|
|
|
|
Ret = count(Printers, @fm) + (Printers # "")
|
|
* Default = SRP_Get_Printers('Default')
|
|
transfer Models to p1
|
|
transfer Printers to p2
|
|
transfer Default to p3
|
|
return
|
|
|
|
|
|
*************************
|
|
* set the default printer
|
|
*************************
|
|
Set:
|
|
if assigned(p1) then
|
|
Current = p1
|
|
WritePrivateProfileString(DFT_SECTION$, DFT_KEY$, Current: \00\, INI_FILE$)
|
|
SendMessage(HWND_BROADCAST$, WM_WININICHANGE$, 0, 0)
|
|
Ret = TRUE$
|
|
end else
|
|
Ret = FALSE$
|
|
end
|
|
return
|
|
|
|
|
|
*********************
|
|
* window create event
|
|
*********************
|
|
Create:
|
|
* get list of printers and the current (ie. default) printer
|
|
dPrinters = SRP_Get_Printers('Local')
|
|
cPrinters = SRP_Get_Printers('Connect')
|
|
List = ''
|
|
Current = ''
|
|
//cPrinters = PrintSetup(PRN_GET$, "", List, Current)
|
|
//Printers = List
|
|
Printers = cPrinters
|
|
for i = 1 to cPrinters
|
|
List<i> = field(List<i>, ",", 1): " on ": field(List<i>, ",", 3)
|
|
next i
|
|
|
|
* highlight current printer in printer list
|
|
if len(Current) then
|
|
locate Current in Printers using @fm setting Pos then
|
|
Current = List<Pos>
|
|
end else
|
|
Pos = ""
|
|
end
|
|
end else
|
|
Pos = ""
|
|
end
|
|
|
|
Ctrls = @window: ".LB_PRINTER": @rm: @window: ".LB_PRINTER": @rm: @window: ".ST_DEFAULT": @rm: @window: ".CB_OPTIONS": @rm: @window : @rm: @window
|
|
Props = "LIST" : @rm: "SELPOS" : @rm: "TEXT" : @rm: "ENABLED" : @rm: "@PRINTERS": @rm: "VISIBLE"
|
|
Vals = List : @rm: Pos : @rm: Current : @rm: (Pos > 0) : @rm: Printers : @rm: TRUE$
|
|
|
|
Set_Property(Ctrls, Props, Vals)
|
|
return
|
|
|
|
|
|
****************************
|
|
* user chose default printer
|
|
****************************
|
|
SetDefault:
|
|
Ctrls = @window: ".LB_PRINTER": @rm: @window: ".LB_PRINTER": @rm: @window
|
|
Props = "TEXT" : @rm: "SELPOS" : @rm: "@PRINTERS"
|
|
Vals = Get_Property(Ctrls, Props)
|
|
Current = field(Vals, @rm, 1)
|
|
Pos = field(Vals, @rm, 2)
|
|
Printers = field(Vals, @rm, 3)
|
|
|
|
if PrintSetup(PRN_SET$, Printers<Pos>) then
|
|
Set_Property(@window: ".ST_DEFAULT", "TEXT", Current)
|
|
Set_Property(@window: ".CB_OPTIONS", "ENABLED", TRUE$)
|
|
end
|
|
return
|
|
|
|
|
|
*******************************
|
|
* printer configuration options
|
|
*******************************
|
|
Options:
|
|
hWnd = Get_Property(@window, "HANDLE")
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", TRUE$)
|
|
SetupP(hWnd)
|
|
Set_Property("SYSTEM", "BLOCK_EVENTS", FALSE$)
|
|
return
|
|
|
|
|
|
***************************
|
|
* call help for print setup
|
|
***************************
|
|
Help:
|
|
Utility("RUNHELP", "OINSIGHT.HLP", @window: @fm: 1: @fm: 9010)
|
|
return
|
|
|
|
|
|
********************************
|
|
* user changes highlight in list
|
|
********************************
|
|
SelChange:
|
|
Ctrls = @window: ".LB_PRINTER": @rm: @window: ".ST_DEFAULT"
|
|
Props = "TEXT" : @rm: "TEXT"
|
|
Vals = Get_Property(Ctrls, Props)
|
|
Printer = field(Vals, @rm, 1)
|
|
Current = field(Vals, @rm, 2)
|
|
|
|
Set_Property(@window: ".CB_OPTIONS", "ENABLED", Printer = Current)
|
|
return
|
|
|