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: \00\, \00\, Printer, len(Printer), INI_FILE$) Printer = Printer [1,\00\] cPrinters = count(Printer, ",") for iPrinter = 1 to cPrinters Printers<-1> = Models: ",": 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 = field(List, ",", 1): " on ": field(List, ",", 3) next i * highlight current printer in printer list if len(Current) then locate Current in Printers using @fm setting Pos then Current = List 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) 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