PrinterJobFixes3.diff

Zbigniew Rebacz, 05/13/2015 10:37 PM

Download (2.53 KB)

View differences:

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
	}