You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
503 lines
18 KiB
503 lines
18 KiB
/***************************************************************************
|
|
barcodedialogs.cpp - description
|
|
-------------------
|
|
begin : Fre Sep 5 2003
|
|
copyright : (C) 2003 by Dominik Seichter
|
|
email : domseichter@web.de
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "barcodedialogs.h"
|
|
#include "barkode.h"
|
|
#include "purepostscript.h"
|
|
#include "tbarcode2.h"
|
|
|
|
// TQt includes
|
|
#include <tqbuttongroup.h>
|
|
#include <tqcheckbox.h>
|
|
#include <tqgroupbox.h>
|
|
#include <tqlabel.h>
|
|
#include <tqlayout.h>
|
|
#include <tqmap.h>
|
|
#include <tqradiobutton.h>
|
|
#include <tqtooltip.h>
|
|
#include <tqvbox.h>
|
|
#include <tqvgroupbox.h>
|
|
|
|
// KDE includes
|
|
#include <kcombobox.h>
|
|
#include <knuminput.h>
|
|
#include <tdelocale.h>
|
|
#include <kcolorbutton.h>
|
|
|
|
|
|
AdvancedBarcodeDialog::AdvancedBarcodeDialog( TQString type, TQWidget* parent, const char* name )
|
|
: KDialogBase( KDialogBase::Tabbed, i18n("Barcode Settings"),
|
|
KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, parent,name)
|
|
{
|
|
list.setAutoDelete( false );
|
|
|
|
if( Barkode::hasFeature( type, PDF417BARCODE ) ) {
|
|
TQVBox* box = addVBoxPage( i18n("PDF417") );
|
|
PDF417BarcodeDlg* dlg = new PDF417BarcodeDlg( box );
|
|
list.append( (BarcodeDlgBase*)dlg );
|
|
}
|
|
|
|
if( Barkode::hasFeature( type, DATAMATRIX ) ) {
|
|
TQVBox* box = addVBoxPage( i18n("DataMatrix") );
|
|
DataMatrixDlg* dlg = new DataMatrixDlg( box );
|
|
list.append( (BarcodeDlgBase*)dlg );
|
|
}
|
|
|
|
if( Barkode::hasFeature( type, TBARCODEADV ) ) {
|
|
TQVBox* box = addVBoxPage( i18n("TBarcode") );
|
|
TBarcodeDlg* dlg = new TBarcodeDlg( box );
|
|
list.append( (BarcodeDlgBase*)dlg );
|
|
}
|
|
|
|
if( Barkode::hasFeature( type, PUREADV ) ) {
|
|
TQVBox* box = addVBoxPage( i18n("Barcode Writer in Pure Postscript") );
|
|
PurePostscriptDlg* dlg = new PurePostscriptDlg( box );
|
|
list.append( (BarcodeDlgBase*)dlg );
|
|
}
|
|
|
|
if( Barkode::hasFeature( type, COLORED ) ) {
|
|
TQVBox* box = addVBoxPage( i18n("Colors") );
|
|
ColorDlg* dlg = new ColorDlg( box );
|
|
list.append( (BarcodeDlgBase*)dlg );
|
|
}
|
|
|
|
TQVBox* box = addVBoxPage( i18n("Sequence") );
|
|
SequenceDlg* dlg = new SequenceDlg( box );
|
|
list.append( (BarcodeDlgBase*)dlg );
|
|
}
|
|
|
|
AdvancedBarcodeDialog::~AdvancedBarcodeDialog()
|
|
{
|
|
}
|
|
|
|
void AdvancedBarcodeDialog::setData( Barkode* b )
|
|
{
|
|
for( unsigned int i = 0; i < list.count(); i++ ) {
|
|
BarcodeDlgBase* bdb = list.at( i );
|
|
bdb->setData( b );
|
|
}
|
|
}
|
|
|
|
void AdvancedBarcodeDialog::getData( Barkode* b )
|
|
{
|
|
for( unsigned int i = 0; i < list.count(); i++ ) {
|
|
BarcodeDlgBase* bdb = list.at( i );
|
|
bdb->getData( b );
|
|
}
|
|
}
|
|
|
|
TBarcodeDlg::TBarcodeDlg(TQWidget *parent, const char *name )
|
|
: TQWidget( parent, name )
|
|
{
|
|
TQVBoxLayout* layout = new TQVBoxLayout( this, 6, 6 );
|
|
|
|
TQGroupBox* gb = new TQGroupBox( i18n("TBarcode"), this );
|
|
gb->setColumnLayout(0, Qt::Vertical );
|
|
gb->layout()->setSpacing( 6 );
|
|
gb->layout()->setMargin( 11 );
|
|
gb->setEnabled( Barkode::haveTBarcode() || Barkode::haveTBarcode2() );
|
|
TQVBoxLayout* gbLayout = new TQVBoxLayout( gb->layout() );
|
|
|
|
spinModule = new KDoubleNumInput( gb );
|
|
spinModule->setLabel( i18n("Module width (mm):"), AlignLeft | AlignVCenter );
|
|
spinModule->setRange( 0.190, 1.500, 0.001, true );
|
|
|
|
spinHeight = new KIntNumInput( gb );
|
|
spinHeight->setLabel( i18n("Barcode Height (mm):"), AlignLeft | AlignVCenter );
|
|
spinHeight->setRange( 1, 1000, 10, false );
|
|
|
|
checkEscape = new TQCheckBox( i18n("&Translate escape sequences"), gb );
|
|
checkAbove = new TQCheckBox( i18n("&Text above barcode"), gb );
|
|
checkAutoCorrect = new TQCheckBox( i18n("&Auto correction"), gb );
|
|
|
|
comboCheckSum = new KComboBox( false, gb );
|
|
|
|
TQLabel* label = new TQLabel( i18n("&Checksum calculation method:"), gb );
|
|
label->setBuddy( comboCheckSum );
|
|
|
|
TQHBoxLayout * hbox = new TQHBoxLayout( 0, 6, 6 );
|
|
hbox->addWidget( label );
|
|
hbox->addWidget( comboCheckSum );
|
|
|
|
gbLayout->addWidget( spinModule );
|
|
gbLayout->addWidget( spinHeight );
|
|
gbLayout->addWidget( checkEscape );
|
|
gbLayout->addWidget( checkAbove );
|
|
gbLayout->addWidget( checkAutoCorrect );
|
|
gbLayout->addLayout( hbox );
|
|
|
|
TQToolTip::add( spinModule, i18n("<qt>Change the module with used by tbarcode. Take a look into the "
|
|
"tbarcode documentation for details. Normaly you do not want to change "
|
|
"this value.</qt>") );
|
|
|
|
layout->addWidget( gb );
|
|
}
|
|
|
|
void TBarcodeDlg::setData( Barkode* b )
|
|
{
|
|
TBarcodeOptions* options = dynamic_cast<TBarcodeOptions*>( b->engine()->options() );
|
|
|
|
if( options )
|
|
{
|
|
spinModule->setValue( options->moduleWidth() );
|
|
spinHeight->setValue( options->height() );
|
|
checkEscape->setChecked( options->escape() );
|
|
checkAbove->setChecked( options->above() );
|
|
checkAutoCorrect->setChecked( options->autocorrect() );
|
|
|
|
map.insert( i18n("No Checksum"), 0 );
|
|
map.insert( i18n("Default Checksum Method"), 1 );
|
|
|
|
if( Barkode::hasFeature( b->type(), MODULOALLCHECK ) ||
|
|
Barkode::hasFeature( b->type(), MODULO10CHECK ) )
|
|
map.insert( i18n("Modulo 10 Checksum"), 2 );
|
|
|
|
if( Barkode::hasFeature( b->type(), MODULOALLCHECK ) ||
|
|
b->type() == "b13" || // EAN 13
|
|
b->type() == "b14" || // EAN 13
|
|
b->type() == "b15" || // EAN 13
|
|
b->type() == "b18" ) // CodaBar (2 width)
|
|
map.insert( i18n("Module 43 (suggested for Code39 and Logmars, 1 digit)"), 3 );
|
|
|
|
if( Barkode::hasFeature( b->type(), MODULOALLCHECK ) )
|
|
map.insert( i18n("Modula 47 (2 digits)"), 4 );
|
|
|
|
if( b->type() == "b21" ) // Deutsche Post Leitcode
|
|
map.insert( i18n("Deutsche Post Leitcode"), 5 );
|
|
|
|
if( b->type() == "b22") // Deutsche Post Identcode
|
|
map.insert( i18n("Deutsche Post Identcode"), 6 );
|
|
|
|
if( b->type() == "b1" ) { // Code11
|
|
map.insert( i18n("Code 11 (1 digit)"), 7 );
|
|
map.insert( i18n("Code 11 (2 digits)"), 8 );
|
|
}
|
|
|
|
if( Barkode::hasFeature( b->type(), POSTNETCHECK ) )
|
|
map.insert( i18n("USPS Postnet"), 9 );
|
|
|
|
if( b->type() == "b47" ) { // MSI
|
|
map.insert( i18n("MSI (1 digit)"), 10 );
|
|
map.insert( i18n("MSI (2 digits)"), 11 );
|
|
}
|
|
|
|
if( b->type() == "b46" ) // Plessey
|
|
map.insert( i18n("Plessey"), 12 );
|
|
|
|
if( Barkode::hasFeature( b->type(), EAN8CHECK ) )
|
|
map.insert( i18n("EAN 8"), 13 );
|
|
|
|
if( Barkode::hasFeature( b->type(), EAN13CHECK ) )
|
|
map.insert( i18n("EAN 13"), 14 );
|
|
|
|
if( Barkode::hasFeature( b->type(), UPCACHECK ) )
|
|
map.insert( i18n("UPC A"), 15 );
|
|
|
|
if( Barkode::hasFeature( b->type(), UPCECHECK ) )
|
|
map.insert( i18n("UPC E"), 16 );
|
|
|
|
if( b->type() == "b16" ) // EAN 128
|
|
map.insert( i18n("EAN 128"), 17 );
|
|
|
|
if( Barkode::hasFeature( b->type(), CODE128CHECK ) )
|
|
map.insert( i18n("Code 128"), 18 );
|
|
|
|
if( b->type() == "b70" ) // Royal Mail 4 State
|
|
map.insert( i18n("Royal Mail 4 State"), 19 );
|
|
|
|
comboCheckSum->insertStringList( map.keys() );
|
|
|
|
TQMap<TQString,int>::Iterator it;
|
|
for ( it = map.begin(); it != map.end(); ++it ) {
|
|
if( it.data() == options->checksum() ) {
|
|
comboCheckSum->setCurrentItem(it.key());
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void TBarcodeDlg::getData( Barkode* b ) const
|
|
{
|
|
TBarcodeOptions* options = dynamic_cast<TBarcodeOptions*>( b->engine()->options() );
|
|
|
|
if( options )
|
|
{
|
|
options->setModuleWidth( spinModule->value() );
|
|
options->setEscape( checkEscape->isChecked() );
|
|
options->setAbove( checkAbove->isChecked() );
|
|
options->setAutocorrect( checkAutoCorrect->isChecked() );
|
|
options->setCheckSum( map[comboCheckSum->currentText()] );
|
|
options->setHeight( spinHeight->value() );
|
|
}
|
|
}
|
|
|
|
PDF417BarcodeDlg::PDF417BarcodeDlg(TQWidget *parent, const char *name )
|
|
: TQWidget( parent, name )
|
|
{
|
|
TQVBoxLayout* layout = new TQVBoxLayout( this, 6, 6 );
|
|
|
|
TQGroupBox* gpdf = new TQGroupBox( i18n("PDF417"), this );
|
|
gpdf->setColumnLayout(0, Qt::Vertical );
|
|
gpdf->layout()->setSpacing( 6 );
|
|
gpdf->layout()->setMargin( 11 );
|
|
gpdf->setEnabled( Barkode::haveTBarcode() || Barkode::havePDFBarcode() );
|
|
TQVBoxLayout* gpdfLayout = new TQVBoxLayout( gpdf->layout() );
|
|
|
|
spinRow = new KIntNumInput( gpdf );
|
|
spinRow->setLabel( i18n("Rows:"), AlignLeft | AlignVCenter );
|
|
spinRow->setRange( 0, 90, 1, true );
|
|
|
|
spinCol = new KIntNumInput( spinRow, 0, gpdf );
|
|
spinCol->setLabel( i18n("Columns:"), AlignLeft | AlignVCenter );
|
|
spinCol->setRange( 0, 30, 1, true );
|
|
|
|
spinErr = new KIntNumInput( spinCol, 0, gpdf );
|
|
spinErr->setLabel( i18n("Error correction level:"), AlignLeft | AlignVCenter );
|
|
spinErr->setRange( 1, 8, 1, true );
|
|
|
|
gpdfLayout->addWidget( spinRow );
|
|
gpdfLayout->addWidget( spinCol );
|
|
gpdfLayout->addWidget( spinErr );
|
|
layout->addWidget( gpdf );
|
|
}
|
|
|
|
void PDF417BarcodeDlg::setData( Barkode* b )
|
|
{
|
|
PDF417Options* options = dynamic_cast<PDF417Options*>( b->engine()->options() );
|
|
|
|
if( options )
|
|
{
|
|
spinRow->setValue( options->row() );
|
|
spinCol->setValue( options->col() );
|
|
spinErr->setValue( options->err() );
|
|
}
|
|
}
|
|
|
|
void PDF417BarcodeDlg::getData( Barkode* b ) const
|
|
{
|
|
PDF417Options* options = dynamic_cast<PDF417Options*>( b->engine()->options() );
|
|
|
|
if( options )
|
|
{
|
|
options->setRow( spinRow->value() );
|
|
options->setCol( spinCol->value() );
|
|
options->setErr( spinErr->value() );
|
|
}
|
|
}
|
|
|
|
DataMatrixDlg::DataMatrixDlg(TQWidget *parent, const char *name )
|
|
: TQWidget( parent, name )
|
|
{
|
|
TQHBoxLayout* datamLayout = new TQHBoxLayout( this, 6, 6 );
|
|
|
|
comboDataMatrix = new KComboBox( false, this );
|
|
|
|
datamLayout->addWidget( new TQLabel( i18n("Data Matrix symbol sizes (rows x cols):"), this ) );
|
|
datamLayout->addWidget( comboDataMatrix );
|
|
datamLayout->addItem( new TQSpacerItem( 0, 0, TQSizePolicy::Minimum, TQSizePolicy::Minimum ) );
|
|
|
|
comboDataMatrix->insertItem( i18n("Automatic calculation" ) );
|
|
comboDataMatrix->insertItem( "10 x 10" );
|
|
comboDataMatrix->insertItem( "12 x 12" );
|
|
comboDataMatrix->insertItem( "14 x 14" );
|
|
comboDataMatrix->insertItem( "16 x 16" );
|
|
comboDataMatrix->insertItem( "18 x 18" );
|
|
comboDataMatrix->insertItem( "20 x 20" );
|
|
comboDataMatrix->insertItem( "22 x 22" );
|
|
comboDataMatrix->insertItem( "24 x 24" );
|
|
comboDataMatrix->insertItem( "26 x 26" );
|
|
comboDataMatrix->insertItem( "32 x 32" );
|
|
comboDataMatrix->insertItem( "36 x 36" );
|
|
comboDataMatrix->insertItem( "40 x 40" );
|
|
comboDataMatrix->insertItem( "44 x 44" );
|
|
comboDataMatrix->insertItem( "48 x 48" );
|
|
comboDataMatrix->insertItem( "52 x 52" );
|
|
comboDataMatrix->insertItem( "64 x 64" );
|
|
comboDataMatrix->insertItem( "72 x 72" );
|
|
comboDataMatrix->insertItem( "80 x 80" );
|
|
comboDataMatrix->insertItem( "88 x 88" );
|
|
comboDataMatrix->insertItem( "96 x 96" );
|
|
comboDataMatrix->insertItem( "104 x 104" );
|
|
comboDataMatrix->insertItem( "120 x 120" );
|
|
comboDataMatrix->insertItem( "132 x 132" );
|
|
comboDataMatrix->insertItem( "144 x 144" );
|
|
comboDataMatrix->insertItem( "8 x 18" );
|
|
comboDataMatrix->insertItem( "8 x 32" );
|
|
comboDataMatrix->insertItem( "12 x 26" );
|
|
comboDataMatrix->insertItem( "12 x 36" );
|
|
comboDataMatrix->insertItem( "16 x 36" );
|
|
comboDataMatrix->insertItem( "16 x 48" );
|
|
}
|
|
|
|
void DataMatrixDlg::setData( Barkode* b )
|
|
{
|
|
comboDataMatrix->setCurrentItem( b->datamatrixSize());
|
|
}
|
|
|
|
void DataMatrixDlg::getData( Barkode* b ) const
|
|
{
|
|
b->setDatamatrixSize( comboDataMatrix->currentItem() );
|
|
}
|
|
|
|
SequenceDlg::SequenceDlg( TQWidget *parent, const char *name )
|
|
: TQWidget( parent, name )
|
|
{
|
|
TQVBoxLayout* main = new TQVBoxLayout( this, 6, 6 );
|
|
|
|
TQButtonGroup* group = new TQButtonGroup( i18n("Sequence"), this );
|
|
group->setColumnLayout(0, Qt::Vertical );
|
|
group->layout()->setSpacing( 6 );
|
|
group->layout()->setMargin( 11 );
|
|
TQVBoxLayout* layout = new TQVBoxLayout( group->layout() );
|
|
|
|
checkSequence = new TQCheckBox( i18n("&Enable sequence"), group );
|
|
|
|
radioNumbers = new TQRadioButton( i18n("Iterate over numbers 0-9"), group );
|
|
radioAlpha = new TQRadioButton( i18n("Iterate over characters A-Z"), group );
|
|
radioAlphaNum = new TQRadioButton( i18n("Iterate over A-Z, 0-9"), group );
|
|
|
|
spinStep = new KIntNumInput( group );
|
|
spinStep->setLabel( i18n("Step:"), AlignLeft | AlignVCenter );
|
|
spinStep->setRange( -100, 100, 1, false );
|
|
|
|
spinStart = new KIntNumInput( spinStep, 1, group );
|
|
spinStart->setLabel( i18n("Start:"), AlignLeft | AlignVCenter );
|
|
spinStart->setRange( -100000, 100000, 1, false );
|
|
|
|
layout->addWidget( checkSequence );
|
|
layout->addWidget( radioNumbers );
|
|
layout->addWidget( radioAlpha );
|
|
layout->addWidget( radioAlphaNum );
|
|
layout->addWidget( spinStep );
|
|
layout->addWidget( spinStart );
|
|
|
|
main->addWidget( group );
|
|
|
|
connect( checkSequence, TQT_SIGNAL( clicked() ), this, TQT_SLOT( enableControls() ) );
|
|
connect( radioNumbers, TQT_SIGNAL( clicked() ), this, TQT_SLOT( enableControls() ) );
|
|
connect( radioAlpha, TQT_SIGNAL( clicked() ), this, TQT_SLOT( enableControls() ) );
|
|
connect( radioAlphaNum, TQT_SIGNAL( clicked() ), this, TQT_SLOT( enableControls() ) );
|
|
}
|
|
|
|
void SequenceDlg::setData( Barkode* b )
|
|
{
|
|
checkSequence->setChecked( b->sequenceEnabled() );
|
|
spinStep->setValue( b->sequenceStep() );
|
|
spinStart->setValue( b->sequenceStart() );
|
|
|
|
if( b->sequenceMode() == NUM )
|
|
radioNumbers->setChecked( true );
|
|
else if( b->sequenceMode() == ALPHA )
|
|
radioAlpha->setChecked( true );
|
|
else if( b->sequenceMode() == ALPHANUM )
|
|
radioAlphaNum->setChecked( true );
|
|
|
|
enableControls();
|
|
}
|
|
|
|
void SequenceDlg::getData( Barkode* b ) const
|
|
{
|
|
b->setSequenceEnabled( checkSequence->isChecked() );
|
|
|
|
b->setSequenceStep( spinStep->value() );
|
|
b->setSequenceStart( spinStart->value() );
|
|
|
|
if( radioNumbers->isChecked() )
|
|
b->setSequenceMode( NUM );
|
|
else if( radioAlpha->isChecked() )
|
|
b->setSequenceMode( ALPHA );
|
|
else if( radioAlphaNum->isChecked() )
|
|
b->setSequenceMode( ALPHANUM );
|
|
}
|
|
|
|
void SequenceDlg::enableControls()
|
|
{
|
|
radioNumbers->setEnabled( checkSequence->isChecked() );
|
|
radioAlpha->setEnabled( checkSequence->isChecked() );
|
|
radioAlphaNum->setEnabled( false ); //checkSequence->isChecked() );
|
|
spinStep->setEnabled( checkSequence->isChecked() );
|
|
spinStart->setEnabled( checkSequence->isChecked() && radioNumbers->isChecked() );
|
|
}
|
|
|
|
ColorDlg::ColorDlg(TQWidget *parent, const char *name)
|
|
: TQVBox( parent, name )
|
|
{
|
|
TQGroupBox* gb = new TQGroupBox( i18n("Colors"), this );
|
|
gb->setColumnLayout(0, Qt::Vertical );
|
|
gb->layout()->setSpacing( 6 );
|
|
gb->layout()->setMargin( 11 );
|
|
gb->setEnabled( Barkode::havePurePostscriptBarcode() );
|
|
TQGridLayout* gbLayout = new TQGridLayout( gb->layout() );
|
|
|
|
buttonBarColor = new KColorButton( gb );
|
|
buttonBackColor = new KColorButton( gb );
|
|
buttonTextColor = new KColorButton( gb );
|
|
|
|
gbLayout->addWidget( new TQLabel( i18n("Bar Color:"), gb ), 0, 0 );
|
|
gbLayout->addWidget( new TQLabel( i18n("Background Color:"), gb ), 1, 0 );
|
|
gbLayout->addWidget( new TQLabel( i18n("Text Color:"), gb ), 2, 0 );
|
|
gbLayout->addWidget( buttonBarColor, 0, 1 );
|
|
gbLayout->addWidget( buttonBackColor, 1, 1 );
|
|
gbLayout->addWidget( buttonTextColor, 2, 1 );
|
|
}
|
|
|
|
void ColorDlg::setData( Barkode* b )
|
|
{
|
|
buttonBarColor->setColor( b->foreground() );
|
|
buttonBackColor->setColor( b->background() );
|
|
buttonTextColor->setColor( b->textColor() );
|
|
}
|
|
|
|
void ColorDlg::getData( Barkode* b ) const
|
|
{
|
|
b->setForeground( buttonBarColor->color() );
|
|
b->setBackground( buttonBackColor->color() );
|
|
b->setTextColor( buttonTextColor->color() );
|
|
}
|
|
|
|
PurePostscriptDlg::PurePostscriptDlg(TQWidget *parent, const char *name)
|
|
: TQVBox( parent, name )
|
|
{
|
|
TQVGroupBox* gb = new TQVGroupBox( i18n("Barcode Writer in Pure Postscript"), this );
|
|
gb->setEnabled( Barkode::havePurePostscriptBarcode() );
|
|
|
|
checkChecksum = new TQCheckBox( i18n("Enable &Checksum"), gb );
|
|
}
|
|
|
|
void PurePostscriptDlg::setData( Barkode* b )
|
|
{
|
|
PurePostscriptOptions* options = dynamic_cast<PurePostscriptOptions*>( b->engine()->options() );
|
|
|
|
if( options )
|
|
{
|
|
checkChecksum->setChecked( options->checksum() );
|
|
checkChecksum->setEnabled( Barkode::hasFeature( b->type(), MODULOALLCHECK ) );
|
|
}
|
|
}
|
|
|
|
void PurePostscriptDlg::getData( Barkode* b ) const
|
|
{
|
|
PurePostscriptOptions* options = dynamic_cast<PurePostscriptOptions*>( b->engine()->options() );
|
|
|
|
if( options )
|
|
options->setChecksum( checkChecksum->isChecked() );
|
|
}
|
|
|
|
|
|
#include "barcodedialogs.moc"
|