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 |
} |