1 #include <iostream>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 
6 #include "printerqueueswrapper.h"
7 #include "../miscwidgets/generaldialogs.h"
8 
9 #include "../support/debug.h"
10 
11 using namespace std;
12 
getfilename(void * userdata)13 static char *getfilename(void *userdata)
14 {
15 	return(File_Save_Dialog("Save printer spool file",NULL));
16 }
17 
18 
PrinterQueues()19 PrinterQueues::PrinterQueues()
20 {
21 	queues=pqinfo_create();
22 	queues->SetGetFilenameCallback(queues,getfilename,NULL);
23 }
24 
25 
~PrinterQueues()26 PrinterQueues::~PrinterQueues()
27 {
28 	if(queues)
29 		queues->Dispose(queues);
30 	Debug[TRACE] << "Done" << endl;
31 }
32 
33 
GetPrinterName(int idx)34 char *PrinterQueues::GetPrinterName(int idx)
35 {
36 	return(queues->GetPrinterName(queues,idx));
37 }
38 
39 
GetPrinterCount()40 int PrinterQueues::GetPrinterCount()
41 {
42 	return(queues->GetPrinterCount(queues));
43 }
44 
45 
GetPrinterDriver(const char * printername)46 char *PrinterQueues::GetPrinterDriver(const char *printername)
47 {
48 	queues->SetPrinterQueue(queues,printername);
49 	return(queues->GetDriver(queues));
50 }
51 
52 
GetPrinterDriver()53 char *PrinterQueues::GetPrinterDriver()
54 {
55 	return(queues->GetDriver(queues));
56 }
57 
58 
GetPQInfo()59 struct pqinfo *PrinterQueues::GetPQInfo()
60 {
61 	return(queues);
62 }
63 
64 
GetPrinterQueue()65 const char *PrinterQueues::GetPrinterQueue()
66 {
67 	return(queues->GetPrinterQueue(queues));
68 }
69 
70 
SetPrinterQueue(const char * queue)71 void PrinterQueues::SetPrinterQueue(const char *queue)
72 {
73 	queues->SetPrinterQueue(queues,queue);
74 }
75 
76 
PrinterQueueExists(const char * queue)77 bool PrinterQueues::PrinterQueueExists(const char *queue)
78 {
79 	int qc=GetPrinterCount();
80 	for(int i=0;i<qc;++i)
81 	{
82 		char *tmp=GetPrinterName(i);
83 		if(strcmp(queue,tmp)==0)
84 		{
85 			free(tmp);
86 			return(true);
87 		}
88 		free(tmp);
89 	}
90 	return(false);
91 }
92 
93 
GetDriver()94 char *PrinterQueues::GetDriver()
95 {
96 	return(queues->GetDriver(queues));
97 }
98 
99 
GetPPD()100 char *PrinterQueues::GetPPD()
101 {
102 	const char *queue=GetPrinterQueue();
103 	if(queue)
104 	{
105 		Debug[TRACE] << "Current queue: " << queue << endl;
106 	}
107 	char *ppd=queues->GetPPD(queues);
108 	if(ppd)
109 		Debug[TRACE] << "PPD: " << ppd << endl;
110 	else
111 		Debug[TRACE] << "No PPD found" << endl;
112 	return(ppd);
113 }
114 
115 
GetCustomCommand()116 const char *PrinterQueues::GetCustomCommand()
117 {
118 #ifndef WIN32
119 	return(queues->GetCustomCommand(queues));
120 #else
121 	return(NULL);
122 #endif
123 }
124 
125 
SetCustomCommand(const char * cmd)126 void PrinterQueues::SetCustomCommand(const char *cmd)
127 {
128 #ifndef WIN32
129 	queues->SetCustomCommand(queues,cmd);
130 #endif
131 }
132 
133 
SetDataType(enum pqinfo_datatype type)134 void PrinterQueues::SetDataType(enum pqinfo_datatype type)
135 {
136 	queues->SetDataType(queues,type);
137 }
138 
139 
InitialiseJob(const char * extendedopts)140 bool PrinterQueues::InitialiseJob(const char *extendedopts)
141 {
142 	queues->SetExtendedOptions(queues,extendedopts);
143 	return(queues->InitialiseJob(queues)!=0);
144 }
145 
146 
InitialisePage()147 void PrinterQueues::InitialisePage()
148 {
149 	queues->InitialisePage(queues);
150 }
151 
152 
EndPage()153 void PrinterQueues::EndPage()
154 {
155 	queues->EndPage(queues);
156 }
157 
158 
EndJob()159 void PrinterQueues::EndJob()
160 {
161 	queues->EndJob(queues);
162 }
163 
164 
CancelJob()165 void PrinterQueues::CancelJob()
166 {
167 	queues->CancelJob(queues);
168 }
169 
170 
WriteData(const char * data,int bytecount)171 int PrinterQueues::WriteData(const char *data,int bytecount)
172 {
173 	return(queues->WriteData(queues,data,bytecount));
174 }
175 
176 
177