SWDialog::SWDialog(QWidget* parent) : QDialog(parent) { setupUi(this); cfg = new SWConfig(); languageComboBox->addItems(cfg->getAvailableLanguagesList()); languageChange(); resize(minimumSizeHint()); // signals and slots connections connect(buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), this, SLOT(okButton_pressed())); connect(buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), this, SLOT(cancelButton_pressed())); connect(styleCheckBox, SIGNAL(toggled(bool)), languageComboBox, SLOT(setDisabled(bool))); selectAction(cfg->action); styleCheckBox->setChecked(cfg->useStyle); languageComboBox->setCurrentIndex(cfg->currentLanguage); }
BarcodeGenerator::BarcodeGenerator(QWidget* parent, const char* name) : QDialog(parent), paintBarcodeTimer(NULL) { ui.setupUi(this); setObjectName(name); setModal(true); connect(&thread, SIGNAL(renderedImage(QString)),this, SLOT(updatePreview(QString))); /* * We extract the barcode information from the BWIPP metadata which looks like this: * * % --BEGIN ENCODER gs1-128-- * % --REQUIRES preamble raiseerror renlinear code128-- * % --DESC: GS1-128 * % --EXAM: (01)95012345678903(3103)000123 * % --EXOP: includetext * % --RNDR: renlinear * */ QFile f(ScPaths::instance().shareDir() + QString("/plugins/barcode.ps")); if(!f.open(QIODevice::ReadOnly)) { qDebug()<<"Barcodegenerator unable to open "<<f.fileName(); return; } QTextStream ts(&f); QString bwipp = ts.readAll(); f.close(); QRegExp rx( "[\\r\\n]+% --BEGIN (RESOURCE|RENDERER|ENCODER) ([\\w-]+)--[\\r\\n]+" "(.*[\\r\\n]+)?" "(%%BeginResource.*[\\r\\n]+)" "% --END \\1 \\2--[\\r\\n]+"); rx.setMinimal(true); int pos = 0; while ( (pos = rx.indexIn(bwipp, pos)) != -1 ) { int len=rx.matchedLength(); QString restype=rx.cap(1); QString resname=rx.cap(2); QString reshead=rx.cap(3); QString resbody=rx.cap(4); resbodys[resname]=resbody; if (restype=="ENCODER") { QRegExp rxhead( "% --REQUIRES (.*)--[\\r\\n]+" "% --DESC:(.*)[\\r\\n]+" "% --EXAM:(.*)[\\r\\n]+" "% --EXOP:(.*)[\\r\\n]+" "% --RNDR:(.*)[\\r\\n]+" ); rxhead.indexIn(reshead); resreqs[resname]=rxhead.cap(1).trimmed(); resdescs[resname]=rxhead.cap(2).trimmed(); resexams[resname]=rxhead.cap(3).trimmed(); resexops[resname]=rxhead.cap(4).trimmed(); resrndrs[resname]=rxhead.cap(5).trimmed(); encoderlist.append(resname); } pos+=len; } foreach (const QString& enc, encoderlist) map[resdescs[enc]] = BarcodeType(enc, resexams[enc], resexops[enc]); /* * Ultimately all of this static data about the capabilities of each barcode * encoder will be replaced by data read from the barcode.ps metadata, when * such data exists... * */ // Content for the version and ecc combos resvers["qrcode"]="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40"; resecls["qrcode"]="L,Q,M,H"; resvers["gs1qrcode"]=resvers["qrcode"]; resecls["gs1qrcode"]=resecls["qrcode"]; resvers["hibcqrcode"]=resvers["qrcode"]; resecls["hibcqrcode"]=resecls["qrcode"]; resvers["microqrcode"]="M1,M2,M3,M4"; resecls["microqrcode"]="L,Q,M,H"; resvers["datamatrix"]="10x10,12x12,14x14,16x16,18x18,20x20,22x22,24x24,26x26,32x32,36x36,40x40,44x44,48x48,52x52,64x64,72x72,80x80,88x88,96x96,104x104,120x120,132x132,144x144,8x18,8x32,12x26,12x36,16x36,16x48"; resecls["datamatrix"]=""; resvers["gs1datamatrix"]=resvers["datamatrix"]; resecls["gs1datamatrix"]=resvers["datamatrix"]; resvers["hibcdatamatrix"]=resvers["datamatrix"]; resecls["hibcdatamatrix"]=resecls["datamatrix"]; resvers["azteccode"]="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32"; resvlbl["azteccode"]="Layers"; resecls["azteccode"]="5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95"; resvers["azteccodecompact"]="1,2,3,4"; resvlbl["azteccodecompact"]=resvlbl["azteccode"]; resecls["azteccodecompact"]=resecls["azteccode"]; resvers["pdf417"]="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30"; resvlbl["pdf417"]="Columns"; resecls["pdf417"]="1,2,3,4,5"; resvers["pdf417compact"]=resvers["pdf417"]; resvlbl["pdf417compact"]=resvlbl["pdf417"]; resecls["pdf417compact"]=resecls["pdf417"]; resvers["hibcpdf417"]=resvers["pdf417"]; resvlbl["hibcpdf417"]=resvlbl["pdf417"]; resecls["hibcpdf417"]=resecls["pdf417"]; resvers["micropdf417"]="1x11,1x14,1x17,1x20,1x24,1x28,2x8,2x11,2x14,2x17,2x20,2x23,2x26,3x6,3x8,3x10,3x12,3x15,3x20,3x26,3x32,3x38,3x44,4x4,4x6,4x8,4x10,4x12,4x15,4x20,4x26,4x32,4x38,4x44"; resecls["micropdf417"]=""; resvers["hibcmicropdf417"]=resvers["micropdf417"]; resecls["hibcmicropdf417"]=resecls["micropdf417"]; resvers["hanxin"]="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84"; resecls["hanxin"]="L1,L2,L3,L4"; // Which options checkboxes are enabled for each encoder QStringList includetextAvail=encoderlist; foreach (const QString& enc, includetextAvail) resincludetextAvail[enc]=true; QStringList guardwhitespaceAvail; guardwhitespaceAvail << "ean13" << "ean8" << "isbn" << "ismn" << "issn" << "ean13composite" << "ean8composite"; foreach (const QString& enc, guardwhitespaceAvail) resguardwhitespaceAvail[enc]=true; QStringList includecheckAvail; includecheckAvail << "bc412" << "channelcode" << "code11" << "code2of5" << "coop2of5" << "datalogic2of5" << "iata2of5" << "industrial2of5" << "matrix2of5" << "code39" << "code39ext" << "code93" << "code93ext" << "interleaved2of5" << "msi" << "rationalizedCodabar"; foreach (const QString& enc, includecheckAvail) resincludecheckAvail[enc]=true; QStringList includecheckintextAvail; includecheckintextAvail << "bc412" << "code11" << "code2of5" << "coop2of5" << "datalogic2of5" << "iata2of5" << "industrial2of5" << "matrix2of5" << "code39" << "code39ext" << "interleaved2of5" << "japanpost" << "msi" << "planet" << "plessey" << "postnet" << "rationalizedCodabar" << "royalmail"; foreach (const QString& enc, includecheckintextAvail) resincludecheckintextAvail[enc]=true; QStringList parseAvail; parseAvail << "azteccode" << "azteccodecompact" << "codablockf" << "hibccodablockf" << "code128" << "hibccode128" << "code16k" << "code39ext" << "code49" << "code93ext" << "codeone" << "datamatrix" << "hibcdatamatrix" << "maxicode" << "micropdf417" << "hibcmicropdf417" << "pdf417" << "hibcpdf417" << "pdf417compact" << "posicode" << "qrcode" << "hibcqrcode" << "microqrcode" << "telepen" << "hanxin"; foreach (const QString& enc, parseAvail) resparseAvail[enc]=true; QStringList parsefncAvail; parsefncAvail << "codablockf" << "code128" << "code16k" << "code49" << "code93" << "codeone" << "datamatrix" << "posicode" << "qrcode" << "microqrcode"; foreach (const QString& enc, parsefncAvail) resparsefncAvail[enc]=true; // Building up the bcFamilyCombo grouping the formats for readablity ui.bcFamilyCombo->addItem(tr("Select a barcode family")); // to prevent 1st gs call ui.bcFamilyCombo->insertSeparator(999); // Building up the bcCombo grouping the formats for readablity ui.bcCombo->addItem(tr("Select a barcode format")); // to prevent 1st gs call ui.bcCombo->insertSeparator(999); QString familyName; QStringList bcNames; bcNames << "EAN-13" << "EAN-8" << "UPC-A" << "UPC-E" << "ISBN" << "ISMN" << "ISSN"; familyName = tr("Point of Sale"); familyList.append(familyName); familyItems.insert(familyName, bcNames); bcNames.clear(); bcNames << "GS1-14" << "GS1 Data Matrix" << "GS1 QR Code" << "GS1-128" << "ITF-14" << "SSCC-18"; familyName = tr("Supply Chain"); familyList.append(familyName); familyItems.insert(familyName, bcNames); bcNames.clear(); bcNames << "QR Code" << "Micro QR Code" << "Data Matrix" << "Aztec Code" << "Compact Aztec Code" << "Aztec Runes" << "PDF417" << "Compact PDF417" << "MicroPDF417" << "Han Xin Code"; familyName = tr("Two-dimensional symbols"); familyList.append(familyName); familyItems.insert(familyName, bcNames); bcNames.clear(); bcNames << "Code 128" << "Code 39" << "Code 39 Extended" << "Code 93" << "Code 93 Extended" << "Interleaved 2 of 5 (ITF)"; familyName = tr("One-dimensional symbols"); familyList.append(familyName); familyItems.insert(familyName, bcNames); bcNames.clear(); bcNames << "GS1 DataBar Omnidirectional" << "GS1 DataBar Stacked Omnidirectional" << "GS1 DataBar Expanded" << "GS1 DataBar Expanded Stacked" << "GS1 DataBar Truncated" << "GS1 DataBar Stacked" << "GS1 DataBar Limited"; familyName = tr("GS1 DataBar family"); familyList.append(familyName); familyItems.insert(familyName, bcNames); bcNames.clear(); bcNames << "AusPost 4 State Customer Code" << "Deutsche Post Identcode" << "Deutsche Post Leitcode" << "Japan Post 4 State Customer Code" << "Royal Dutch TPG Post KIX" << "Royal Mail 4 State Customer Code" << "USPS Intelligent Mail" << "USPS PLANET" << "USPS POSTNET"; familyName = tr("Postal symbols"); familyList.append(familyName); familyItems.insert(familyName, bcNames); bcNames.clear(); bcNames << "Italian Pharmacode" << "Pharmaceutical Binary Code" << "Two-track Pharmacode" << "Pharmazentralnummer (PZN)" << "HIBC Codablock F" << "HIBC Code 128" << "HIBC Code 39" << "HIBC Data Matrix" << "HIBC MicroPDF417" << "HIBC PDF417" << "HIBC QR Code"; familyName = tr("Pharmaceutical symbols"); familyList.append(familyName); familyItems.insert(familyName, bcNames); bcNames.clear(); bcNames << "Code 11" << "Codabar" << "Code 25" << "COOP 2 of 5" << "Datalogic 2 of 5" << "IATA 2 of 5" << "Industrial 2 of 5" << "Matrix 2 of 5" << "MSI Modified Plessey" << "Plessey UK" << "PosiCode" << "Telepen" << "Telepen Numeric"<< "Code 16K" << "Codablock F" << "Code 49" << "Code One"; familyName = tr("Less-used symbols"); familyList.append(familyName); familyItems.insert(familyName, bcNames); bcNames.clear(); bcNames << "EAN-13 Composite" << "EAN-8 Composite" << "UPC-A Composite" << "UPC-E Composite" << "GS1 DataBar Omnidirectional Composite" << "GS1 DataBar Stacked Omnidirectional Composite" << "GS1 DataBar Expanded Composite" << "GS1 DataBar Expanded Stacked Composite" << "GS1 DataBar Truncated Composite" << "GS1 DataBar Stacked Composite" << "GS1 DataBar Limited Composite" << "GS1-128 Composite"; familyName = tr("GS1 Composite symbols"); familyList.append(familyName); familyItems.insert(familyName, bcNames); ui.bcFamilyCombo->addItems(familyList); /* * End of the hard-coded data * */ guiColor = ui.codeEdit->palette().color(QPalette::Window); ui.okButton->setText(CommonStrings::tr_OK); ui.cancelButton->setText(CommonStrings::tr_Cancel); ui.resetButton->setIcon(IconManager::instance()->loadIcon("u_undo16.png")); if (ScCore->primaryMainWindow()->doc->PageColors.contains("Black")) { lnColor = ScCore->primaryMainWindow()->doc->PageColors["Black"]; txtColor = ScCore->primaryMainWindow()->doc->PageColors["Black"]; ui.linesLabel->setToolTip("Black"); ui.txtLabel->setToolTip("Black"); } else { ui.linesLabel->setToolTip("n.a."); ui.txtLabel->setToolTip("n.a."); } if (ScCore->primaryMainWindow()->doc->PageColors.contains("White")) { bgColor = ScCore->primaryMainWindow()->doc->PageColors["White"]; ui.bgLabel->setToolTip("White"); } else ui.bgLabel->setToolTip("n.a."); paintColorSample(ui.linesLabel, lnColor); paintColorSample(ui.txtLabel, txtColor); paintColorSample(ui.bgLabel, bgColor); paintBarcodeTimer=new QTimer(this); paintBarcodeTimer->setSingleShot(true); connect(paintBarcodeTimer, SIGNAL(timeout()), this, SLOT(paintBarcode())); connect(ui.bcFamilyCombo, SIGNAL(activated(QString)), this, SLOT(bcFamilyComboChanged())); connect(ui.bcCombo, SIGNAL(activated(QString)), this, SLOT(bcComboChanged())); connect(ui.bgColorButton, SIGNAL(clicked()), this, SLOT(bgColorButton_pressed())); connect(ui.lnColorButton, SIGNAL(clicked()), this, SLOT(lnColorButton_pressed())); connect(ui.txtColorButton, SIGNAL(clicked()), this, SLOT(txtColorButton_pressed())); connect(ui.okButton, SIGNAL(clicked()), this, SLOT(okButton_pressed())); connect(ui.cancelButton, SIGNAL(clicked()), this, SLOT(cancelButton_pressed())); connect(ui.codeEdit, SIGNAL(textChanged(QString)), this, SLOT(codeEdit_textChanged(QString))); connect(ui.resetButton, SIGNAL(clicked()), this, SLOT(resetButton_clicked())); bcComboChanged(); }