Rev 455 |
Rev 2602 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
#include "dialog.h"
#include "dialog.moc"
#include <qvariant.h>
#include <qpushbutton.h>
#include <qlabel.h>
#include <qlineedit.h>
#include <qcombobox.h>
#include <qspinbox.h>
#include <qbuttongroup.h>
#include <qgroupbox.h>
#include <qlayout.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
#include <qimage.h>
#include <qdir.h>
#include <qfiledialog.h>
#include <prefsfile.h>
extern PrefsFile* prefsFile;
/*
* Constructs a ExportForm as a child of 'parent', with the
* name 'name' and widget flags set to 'f'.
*
* The dialog will by default be modeless, unless you set 'modal' to
* TRUE to construct a modal dialog.
*/
ExportForm::ExportForm(QWidget* parent, int size, int quality, QString type)
: QDialog(parent, "ExportForm", true, 0)
{
prefs = prefsFile->getPluginContext("pixmapexport");
ExportFormLayout = new QVBoxLayout( this, 10, 5, "ExportFormLayout");
layout1 = new QHBoxLayout( 0, 0, 5, "layout1");
TextLabel1 = new QLabel( this, "TextLabel1" );
layout1->addWidget( TextLabel1 );
OutputDirectory = new QLineEdit( this, "OutputDirectory" );
OutputDirectory->setText(prefs->get("wdir", QDir::currentDirPath()));
layout1->addWidget( OutputDirectory );
OutputDirectoryButton = new QPushButton( this, "OutputDirectoryButton" );
OutputDirectoryButton->setDefault( TRUE );
layout1->addWidget( OutputDirectoryButton );
ExportFormLayout->addLayout( layout1 );
layout3 = new QHBoxLayout( 0, 0, 5, "layout3");
groupBox1 = new QGroupBox( this, "groupBox1" );
groupBox1->setColumnLayout(0, Qt::Vertical );
groupBox1->layout()->setSpacing( 5 );
groupBox1->layout()->setMargin( 10 );
groupBox1Layout = new QGridLayout( groupBox1->layout() );
groupBox1Layout->setAlignment( Qt::AlignTop );
TextLabel2 = new QLabel( groupBox1, "TextLabel2" );
groupBox1Layout->addWidget( TextLabel2, 0, 0 );
textLabel1 = new QLabel( groupBox1, "textLabel1" );
groupBox1Layout->addWidget( textLabel1, 1, 0 );
textLabel3 = new QLabel( groupBox1, "textLabel3" );
groupBox1Layout->addWidget( textLabel3, 2, 0 );
textLabel4 = new QLabel( groupBox1, "textLabel4" );
groupBox1Layout->addWidget( textLabel4, 3, 0 );
BitmapType = new QComboBox( FALSE, groupBox1, "BitmapType" );
BitmapType->clear();
BitmapType->insertStrList(QImageIO::outputFormats());
BitmapType->setCurrentText(type);
BitmapType->setEditable(false);
groupBox1Layout->addMultiCellWidget( BitmapType, 0, 0, 1, 2 );
QualityBox = new QSpinBox( groupBox1, "QualityBox" );
QualityBox->setMaxValue( 100 );
QualityBox->setMinValue( 1 );
QualityBox->setValue(quality);
groupBox1Layout->addWidget( QualityBox, 1, 1 );
DPIBox = new QSpinBox( groupBox1, "DPIBox" );
DPIBox->setMaxValue( 2400 );
DPIBox->setMinValue( 1 );
DPIBox->setValue(size);
groupBox1Layout->addWidget( DPIBox, 2, 1 );
EnlargementBox = new QSpinBox( groupBox1, "EnlargementBox" );
EnlargementBox->setMaxValue( 2400 );
EnlargementBox->setMinValue( 1 );
EnlargementBox->setValue(size);
groupBox1Layout->addWidget( EnlargementBox, 3, 1 );
layout3->addWidget( groupBox1 );
ButtonGroup1 = new QButtonGroup( this, "ButtonGroup1" );
ButtonGroup1->setColumnLayout(0, Qt::Vertical );
ButtonGroup1->layout()->setSpacing( 5 );
ButtonGroup1->layout()->setMargin( 10 );
ButtonGroup1Layout = new QVBoxLayout( ButtonGroup1->layout() );
ButtonGroup1Layout->setAlignment( Qt::AlignTop );
OnePageRadio = new QRadioButton( ButtonGroup1, "OnePageRadio" );
OnePageRadio->setChecked( TRUE );
ButtonGroup1Layout->addWidget( OnePageRadio );
AllPagesRadio = new QRadioButton( ButtonGroup1, "AllPagesRadio" );
ButtonGroup1Layout->addWidget( AllPagesRadio );
layout2 = new QHBoxLayout( 0, 0, 5, "layout2");
IntervalPagesRadio = new QRadioButton( ButtonGroup1, "IntervalPagesRadio" );
layout2->addWidget( IntervalPagesRadio );
RangeVal = new QLineEdit( ButtonGroup1, "RangeVal" );
layout2->addWidget( RangeVal );
RangeVal->setEnabled(false);
ButtonGroup1Layout->addLayout( layout2 );
layout3->addWidget( ButtonGroup1 );
ExportFormLayout->addLayout( layout3 );
layout4 = new QHBoxLayout( 0, 0, 5, "layout4");
QSpacerItem* spacer = new QSpacerItem( 111, 21, QSizePolicy::Expanding, QSizePolicy::Minimum );
layout4->addItem( spacer );
OkButton = new QPushButton( this, "OkButton" );
layout4->addWidget( OkButton );
CancelButton = new QPushButton( this, "CancelButton" );
layout4->addWidget( CancelButton );
ExportFormLayout->addLayout( layout4 );
languageChange();
readConfig();
resize( QSize(447, 206).expandedTo(minimumSizeHint()) );
// buddies
TextLabel1->setBuddy( OutputDirectory );
TextLabel2->setBuddy( BitmapType );
textLabel1->setBuddy( QualityBox );
textLabel3->setBuddy( DPIBox );
textLabel4->setBuddy( EnlargementBox );
connect(OutputDirectoryButton, SIGNAL(clicked()), this, SLOT(OutputDirectoryButton_pressed()));
connect(OkButton, SIGNAL(clicked()), this, SLOT(OkButton_pressed()));
connect(CancelButton, SIGNAL(clicked()), this, SLOT(reject()));
connect(IntervalPagesRadio, SIGNAL(stateChanged(int)), this, SLOT(IntervalPagesRadio_stateChanged(int)));
connect(AllPagesRadio, SIGNAL(stateChanged(int)), this, SLOT(AllPagesRadio_stateChanged(int)));
connect(OnePageRadio, SIGNAL(stateChanged(int)), this, SLOT(OnePageRadio_stateChanged(int)));
}
void ExportForm::OutputDirectoryButton_pressed()
{
QString lastDir = prefs->get("wdir", ".");
QString d = QFileDialog::getExistingDirectory(lastDir, this, "d", tr("Choose a Export Directory"), true);
if (d.length()>0)
{
OutputDirectory->setText(d);
prefs->set("wdir", d);
}
}
void ExportForm::OkButton_pressed()
{
bitmapType = BitmapType->currentText();
writeConfig();
accept();
}
void ExportForm::IntervalPagesRadio_stateChanged(int)
{
RangeVal->setEnabled(TRUE);
}
void ExportForm::AllPagesRadio_stateChanged(int)
{
RangeVal->setEnabled(FALSE);
}
void ExportForm::OnePageRadio_stateChanged(int)
{
RangeVal->setEnabled(FALSE);
}
/*
* Destroys the object and frees any allocated resources
*/
ExportForm::~ExportForm()
{
// no need to delete child widgets, Qt does it all for us
}
/*
* Sets the strings of the subwidgets using the current
* language.
*/
void ExportForm::languageChange()
{
setCaption( tr( "Export as Image(s)" ) );
TextLabel1->setText( tr( "&Export to Directory:" ) );
OutputDirectoryButton->setText( tr( "C&hange..." ) );
groupBox1->setTitle( tr( "Options" ) );
TextLabel2->setText( tr( "Image &Type:" ) );
textLabel1->setText( tr( "&Quality:" ) );
textLabel3->setText( tr( "&Resolution:" ) );
textLabel4->setText( tr( "&Size:" ) );
QualityBox->setSuffix( tr( " %" ) );
DPIBox->setSuffix( tr( " dpi" ) );
EnlargementBox->setSuffix( tr( " %" ) );
ButtonGroup1->setTitle( tr( "Range" ) );
OnePageRadio->setText( tr( "&Current page" ) );
AllPagesRadio->setText( tr( "&All pages" ) );
IntervalPagesRadio->setText( tr( "&Range" ) );
OkButton->setText( tr( "&OK" ) );
CancelButton->setText( tr( "&Cancel" ) );
CancelButton->setAccel( QKeySequence( tr( "C" ) ) );
QToolTip::add( IntervalPagesRadio, tr( "Export a range of pages" ) );
QToolTip::add( RangeVal, tr( "Insert a comma separated list of tokens where\na token can be * for all the pages, 1-5 for\na range of pages or a single page number." ) );
QToolTip::add( AllPagesRadio, tr( "Export all pages" ) );
QToolTip::add( OnePageRadio, tr( "Export only the current page" ) );
QToolTip::add( DPIBox, tr( "Resolution of the Images\nUse 72 dpi for Images intended for the Screen" ) );
QToolTip::add( EnlargementBox, tr( "Size of the images. 100% for no changes, 200% for two times larger etc." ));
QToolTip::add( QualityBox, tr( "The quality of your images - 100% is the best, 1% the lowest quality" ) );
QToolTip::add( BitmapType, tr( "Available export formats" ) );
QToolTip::add( OutputDirectory, tr( "The output directory - the place to store your images.\nName of the export file will be 'documentname-pagenumber.filetype'" ) );
QToolTip::add( OutputDirectoryButton, tr( "Change the output directory" ) );
}
void ExportForm::readConfig()
{
DPIBox->setValue(prefs->getUInt("DPIBox", 72));
EnlargementBox->setValue(prefs->getUInt("EnlargementBox", 100));
QualityBox->setValue(prefs->getUInt("QualityBox", 100));
ButtonGroup1->setButton(prefs->getUInt("ButtonGroup1", 0));
if (prefs->getInt("ButtonGroup1")==2)
RangeVal->setEnabled(TRUE);
else
RangeVal->setEnabled(false);
BitmapType->setCurrentItem(prefs->getInt("BitmapType", 4));
RangeVal->setText(prefs->get("RangeVal", ""));
}
void ExportForm::writeConfig()
{
prefs->set("DPIBox", DPIBox->value());
prefs->set("EnlargementBox", EnlargementBox->value());
prefs->set("QualityBox", QualityBox->value());
prefs->set("ButtonGroup1", ButtonGroup1->id(ButtonGroup1->selected()));
prefs->set("BitmapType",BitmapType->currentItem());
prefs->set("RangeVal", RangeVal->text());
}