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