PrinterJobFixes3.diff
CtrlLib/CtrlUtil.h (kopia robocza) | ||
---|---|---|
68 | 68 |
bool landscape; |
69 | 69 |
String name; |
70 | 70 |
String options; |
71 |
bool Execute0(bool dodlg); |
|
72 | ||
71 |
bool dlgSuccess; |
|
72 |
bool Execute0(); |
|
73 |
|
|
73 | 74 |
public: |
74 | 75 |
Draw& GetDraw(); |
75 | 76 |
operator Draw&() { return GetDraw(); } |
CtrlLib/PrinterJob.cpp (kopia robocza) | ||
---|---|---|
220 | 220 |
bool IsCanceled(); |
221 | 221 | |
222 | 222 |
private: |
223 |
void StandardizePrinterName(String& printerName); |
|
223 | 224 |
void OnOK(); |
224 | 225 |
|
225 | 226 |
private: |
... | ... | |
250 | 251 | |
251 | 252 |
void PrinterDlg::SyncPrinterOptions() |
252 | 253 |
{ |
253 |
Vector<String> l = Split(System("lpoptions -l -d " + String(~printer)), '\n');
|
|
254 |
Vector<String> l = Split(System("lpoptions -d " + String(~printer) + " -l"), '\n');
|
|
254 | 255 |
paper.Disable(); |
255 | 256 |
paper.Clear(); |
256 | 257 |
slot.Disable(); |
... | ... | |
286 | 287 |
int q = h.Find(':'); |
287 | 288 |
if(q >= 0) { |
288 | 289 |
String p = h.Mid(q + 1); |
290 |
StandardizePrinterName(p); |
|
289 | 291 |
if(printer.HasKey(p)) { |
290 | 292 |
printer <<= p; |
291 | 293 |
SyncPrinterOptions(); |
... | ... | |
303 | 305 |
return canceled; |
304 | 306 |
} |
305 | 307 | |
308 |
void PrinterDlg::StandardizePrinterName(String& printerName) |
|
309 |
{ |
|
310 |
printerName.Replace(" ", ""); |
|
311 |
printerName.Replace("\r", ""); |
|
312 |
printerName.Replace("\n", ""); |
|
313 |
} |
|
314 | ||
306 | 315 |
void PrinterDlg::OnOK() |
307 | 316 |
{ |
308 | 317 |
canceled = false; |
... | ... | |
351 | 360 |
from = to = 0; |
352 | 361 |
current = 0; |
353 | 362 |
pgsz = GetDefaultPageSize(); |
363 |
dlgSuccess = false; |
|
354 | 364 |
} |
355 | 365 | |
356 | 366 |
PrinterJob::~PrinterJob() |
357 | 367 |
{ |
358 | 368 |
} |
359 | 369 | |
360 |
bool PrinterJob::Execute0(bool dodlg)
|
|
370 |
bool PrinterJob::Execute0() |
|
361 | 371 |
{ |
362 | 372 |
PrinterDlg dlg; |
363 | 373 |
dlg.from <<= from + 1; |
... | ... | |
371 | 381 |
String h; |
372 | 382 |
GetDefaultPageSize(&h); |
373 | 383 |
h.IsEmpty() ? dlg.paper <<= "A4" : dlg.paper <<= h; |
374 |
if(dodlg) { |
|
375 |
dlg.Run();
|
|
376 |
if (!dlg.IsCanceled())
|
|
377 |
return false;
|
|
378 |
} |
|
384 |
|
|
385 |
dlg.Run(); |
|
386 |
if(dlg.IsCanceled())
|
|
387 |
return false; |
|
388 |
|
|
379 | 389 |
options.Clear(); |
380 | 390 |
options << "-d " << ~dlg.printer; |
381 | 391 |
options << " -o media="; |
... | ... | |
411 | 421 | |
412 | 422 |
bool PrinterJob::Execute() |
413 | 423 |
{ |
414 |
return Execute0(false); |
|
424 |
dlgSuccess = Execute0(); |
|
425 |
return dlgSuccess; |
|
415 | 426 |
} |
416 | 427 | |
417 | 428 |
struct PrinterDraw : PdfDraw { |
... | ... | |
429 | 440 |
Draw& PrinterJob::GetDraw() |
430 | 441 |
{ |
431 | 442 |
if(!draw) { |
432 |
bool canceled = Execute0(true); |
|
433 | 443 |
PrinterDraw *pd = new PrinterDraw(pgsz); |
434 |
pd->canceled = canceled;
|
|
444 |
pd->canceled = !dlgSuccess;
|
|
435 | 445 |
pd->options = options; |
436 | 446 |
draw = pd; |
437 | 447 |
} |