summaryrefslogtreecommitdiffstats
path: root/khexedit/printdialogpage.cc
diff options
context:
space:
mode:
Diffstat (limited to 'khexedit/printdialogpage.cc')
-rw-r--r--khexedit/printdialogpage.cc386
1 files changed, 386 insertions, 0 deletions
diff --git a/khexedit/printdialogpage.cc b/khexedit/printdialogpage.cc
new file mode 100644
index 0000000..ecc0a90
--- /dev/null
+++ b/khexedit/printdialogpage.cc
@@ -0,0 +1,386 @@
+/*
+ * khexedit - Versatile hex editor
+ * Copyright (C) 1999 Espen Sand, espensa@online.no
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include <qlayout.h>
+#include <qbuttongroup.h>
+#include <qspinbox.h>
+#include <qlabel.h>
+#include <qcheckbox.h>
+#include <qstringlist.h>
+#include <qcombobox.h>
+
+#include <klocale.h>
+
+
+#include "printdialogpage.h"
+
+LayoutDialogPage::LayoutDialogPage( QWidget *parent, const char *name )
+ : KPrintDialogPage( parent, name )
+{
+ mConfig = 0;
+ setTitle( i18n( "Page Layout" ) );
+ setupLayoutPage();
+
+ readConfiguration();
+}
+
+
+LayoutDialogPage::~LayoutDialogPage( void )
+{
+ writeConfiguration();
+
+ delete mConfig; mConfig = 0;
+}
+
+
+void LayoutDialogPage::setupLayoutPage( void )
+{
+ QString text;
+ QVBoxLayout *topLayout = new QVBoxLayout( this, 0, 6 /*KDialog::mSpacingSize*/ );
+ if( topLayout == 0 ) { return; }
+
+ text = i18n("Margins [millimeter]");
+ QButtonGroup *group = new QButtonGroup( text, this );
+ if( group == 0 ) { return; }
+ topLayout->addWidget( group );
+
+ QGridLayout *gbox = new QGridLayout( group, 3, 6, 6 /*KDialog::mSpacingSize*/ );
+ if( gbox == 0 ) { return; }
+ gbox->addRowSpacing( 0, group->fontMetrics().height() );
+ gbox->setColStretch( 5, 10 );
+
+ QString name[4];
+ int i;
+
+ name[0] = i18n("&Top:");
+ name[1] = i18n("&Bottom:");
+ name[2] = i18n("&Left:");
+ name[3] = i18n("&Right:");
+
+ for( i=0; i<4; i++ )
+ {
+ mLayout.marginSpin[i] = new QSpinBox( group );
+ mLayout.marginSpin[i]->setFixedHeight(
+ mLayout.marginSpin[i]->sizeHint().height() );
+ mLayout.marginSpin[i]->setMinimumWidth(
+ mLayout.marginSpin[i]->fontMetrics().width("M")*10 );
+ mLayout.marginSpin[i]->setRange( 0, INT_MAX );
+
+ QLabel *label = new QLabel( mLayout.marginSpin[i], name[i], group );
+ label->setFixedHeight( mLayout.marginSpin[i]->sizeHint().height() );
+ label->setFixedWidth( label->sizeHint().width() );
+
+ if( i < 2 )
+ {
+ gbox->addWidget( label, i+1, 0, AlignLeft );
+ gbox->addWidget( mLayout.marginSpin[i], i+1, 1, AlignLeft );
+ }
+ else
+ {
+ gbox->addWidget( label, i-1, 3, AlignLeft );
+ gbox->addWidget( mLayout.marginSpin[i], i-1, 4, AlignLeft );
+ }
+ }
+
+ text = i18n("Draw h&eader above text");
+ mLayout.headerCheck = new QCheckBox( text, this );
+ mLayout.headerCheck->setFixedSize( mLayout.headerCheck->sizeHint() );
+ connect( mLayout.headerCheck, SIGNAL( toggled(bool)),
+ SLOT( slotDrawHeader(bool)));
+ topLayout->addWidget( mLayout.headerCheck, 0, AlignLeft );
+
+ gbox = new QGridLayout( 5, 6, 0 );
+ if( gbox == 0 ) { return; }
+ topLayout->addLayout( gbox );
+
+ gbox->setColStretch ( 5, 10 );
+ gbox->addColSpacing( 1, 6 /*KDialog::mSpacingSize*/ );
+ gbox->addColSpacing( 3, 6 /*KDialog::mSpacingSize*/ );
+ gbox->addRowSpacing( 2, 6 /*KDialog::mSpacingSize*/ );
+
+ name[0] = i18n("Left:");
+ name[1] = i18n("Center:");
+ name[2] = i18n("Right:");
+ name[3] = i18n("Border:");
+
+ QStringList textList;
+ textList.append(i18n("None"));
+ textList.append(i18n("Date & Time"));
+ textList.append(i18n("Page Number"));
+ textList.append(i18n("Filename"));
+
+ QStringList lineList;
+ lineList.append(i18n("None"));
+ lineList.append(i18n("Single Line"));
+ lineList.append(i18n("Rectangle"));
+
+ for( i=0; i<4; i++ )
+ {
+ mLayout.headerCombo[i] = new QComboBox( false, this );
+ mLayout.headerCombo[i]->setFixedHeight(
+ mLayout.headerCombo[i]->sizeHint().height() );
+ mLayout.headerCombo[i]->setMinimumWidth(
+ mLayout.headerCombo[i]->fontMetrics().width("M")*10 );
+
+ mLayout.headerLabel[i] = new QLabel( mLayout.headerCombo[i], name[i],
+ this );
+ mLayout.headerLabel[i]->setFixedHeight(
+ mLayout.headerLabel[i]->sizeHint().height() );
+ mLayout.headerLabel[i]->setFixedWidth(
+ mLayout.headerLabel[i]->sizeHint().width() );
+
+ if( i<3 )
+ {
+ mLayout.headerCombo[i]->insertStringList( textList );
+ gbox->addWidget( mLayout.headerLabel[i], 0, i*2, AlignLeft );
+ gbox->addWidget( mLayout.headerCombo[i], 1, i*2, AlignLeft );
+ }
+ else
+ {
+ mLayout.headerCombo[i]->insertStringList( lineList );
+ gbox->addWidget( mLayout.headerLabel[i], 3, 0, AlignLeft );
+ gbox->addWidget( mLayout.headerCombo[i], 4, 0, AlignLeft );
+ }
+ }
+
+
+ text = i18n("Draw &footer below text");
+ mLayout.footerCheck = new QCheckBox( text, this );
+ mLayout.footerCheck->setFixedSize( mLayout.footerCheck->sizeHint() );
+ connect( mLayout.footerCheck, SIGNAL( toggled(bool)),
+ SLOT( slotDrawFooter(bool)));
+ topLayout->addWidget( mLayout.footerCheck, 0, AlignLeft );
+
+ gbox = new QGridLayout( 5, 6, 0 );
+ if( gbox == 0 ) { return; }
+ topLayout->addLayout( gbox );
+
+ gbox->setColStretch ( 5, 10 );
+ gbox->addColSpacing( 1, 6 /*KDialog::mSpacingSize*/ );
+ gbox->addColSpacing( 3, 6 /*KDialog::mSpacingSize*/ );
+ gbox->addRowSpacing( 2, 6 /*KDialog::mSpacingSize*/ );
+
+ for( i=0; i<4; i++ )
+ {
+ mLayout.footerCombo[i] = new QComboBox( false, this );
+ mLayout.footerCombo[i]->setFixedHeight(
+ mLayout.footerCombo[i]->sizeHint().height() );
+ mLayout.footerCombo[i]->setMinimumWidth(
+ mLayout.footerCombo[i]->fontMetrics().width("M")*10 );
+
+ mLayout.footerLabel[i] = new QLabel( mLayout.footerCombo[i], name[i],
+ this );
+ mLayout.footerLabel[i]->setFixedHeight(
+ mLayout.footerLabel[i]->sizeHint().height() );
+ mLayout.footerLabel[i]->setFixedWidth(
+ mLayout.footerLabel[i]->sizeHint().width() );
+
+ if( i<3 )
+ {
+ mLayout.footerCombo[i]->insertStringList( textList );
+ gbox->addWidget( mLayout.footerLabel[i], 0, i*2, AlignLeft );
+ gbox->addWidget( mLayout.footerCombo[i], 1, i*2, AlignLeft );
+ }
+ else
+ {
+ mLayout.footerCombo[i]->insertStringList( lineList );
+ gbox->addWidget( mLayout.footerLabel[i], 3, 0, AlignLeft );
+ gbox->addWidget( mLayout.footerCombo[i], 4, 0, AlignLeft );
+ }
+ }
+
+ for( i=0; i<4; i++ )
+ {
+ mLayout.marginSpin[i]->setValue( 15 );
+ }
+ mLayout.headerCheck->setChecked( true );
+ slotDrawHeader( true );
+ mLayout.footerCheck->setChecked( true );
+ slotDrawFooter( true );
+
+ topLayout->addStretch(10);
+}
+
+
+void LayoutDialogPage::readConfiguration( void )
+{
+ if( mConfig != 0 ) { return; }
+
+ mConfig = new KSimpleConfig( QString("hexprinter") );
+ if( mConfig == 0 ) { return; }
+
+ mConfig->setGroup( "PageLayout" );
+ int val = mConfig->readNumEntry( "MarginTop", 15 );
+ mLayout.marginSpin[0]->setValue( val );
+ val = mConfig->readNumEntry( "MarginBottom", 15 );
+ mLayout.marginSpin[1]->setValue( val );
+ val = mConfig->readNumEntry( "MarginLeft", 15 );
+ mLayout.marginSpin[2]->setValue( val );
+ val = mConfig->readNumEntry( "MarginRight", 15 );
+ mLayout.marginSpin[3]->setValue( val );
+ bool state = mConfig->readBoolEntry( "DrawHeader", true );
+ mLayout.headerCheck->setChecked( state );
+ slotDrawHeader( state );
+ state = mConfig->readBoolEntry( "DrawFooter", true );
+ mLayout.footerCheck->setChecked( state );
+ slotDrawFooter( state );
+
+ mLayout.headerCombo[0]->setCurrentItem(
+ headerTextIndex( mConfig->readEntry("HeaderLeft","DateTime")));
+ mLayout.headerCombo[1]->setCurrentItem(
+ headerTextIndex( mConfig->readEntry("HeaderCenter")));
+ mLayout.headerCombo[2]->setCurrentItem(
+ headerTextIndex( mConfig->readEntry("HeaderRight","FileName")));
+ mLayout.headerCombo[3]->setCurrentItem(
+ headerLineIndex( mConfig->readEntry("HeaderLine","SingleLine")));
+
+ mLayout.footerCombo[0]->setCurrentItem(
+ headerTextIndex( mConfig->readEntry("FooterLeft")));
+ mLayout.footerCombo[1]->setCurrentItem(
+ headerTextIndex( mConfig->readEntry("FooterCenter","PageNumber")));
+ mLayout.footerCombo[2]->setCurrentItem(
+ headerTextIndex( mConfig->readEntry("FooterRight")));
+ mLayout.footerCombo[3]->setCurrentItem(
+ headerLineIndex( mConfig->readEntry("FooterLine","SingleLine")));
+
+}
+
+
+void LayoutDialogPage::writeConfiguration( void )
+{
+ if( mConfig == 0 )
+ {
+ return;
+ }
+
+ mConfig->setGroup( "PageLayout" );
+ mConfig->writeEntry( "MarginTop", mLayout.marginSpin[0]->value() );
+ mConfig->writeEntry( "MarginBottom", mLayout.marginSpin[1]->value() );
+ mConfig->writeEntry( "MarginLeft", mLayout.marginSpin[2]->value() );
+ mConfig->writeEntry( "MarginRight", mLayout.marginSpin[3]->value() );
+ mConfig->writeEntry( "DrawHeader", mLayout.headerCheck->isChecked() );
+ mConfig->writeEntry( "DrawFooter", mLayout.footerCheck->isChecked() );
+
+ mConfig->writeEntry( "HeaderLeft",
+ headerText( mLayout.headerCombo[0]->currentItem() ) );
+ mConfig->writeEntry( "HeaderCenter",
+ headerText( mLayout.headerCombo[1]->currentItem() ) );
+ mConfig->writeEntry( "HeaderRight",
+ headerText( mLayout.headerCombo[2]->currentItem() ) );
+ mConfig->writeEntry( "HeaderLine",
+ headerLine( mLayout.headerCombo[3]->currentItem() ) );
+
+ mConfig->writeEntry( "FooterLeft",
+ headerText( mLayout.footerCombo[0]->currentItem() ) );
+ mConfig->writeEntry( "FooterCenter",
+ headerText( mLayout.footerCombo[1]->currentItem() ) );
+ mConfig->writeEntry( "FooterRight",
+ headerText( mLayout.footerCombo[2]->currentItem() ) );
+ mConfig->writeEntry( "FooterLine",
+ headerLine( mLayout.footerCombo[3]->currentItem() ) );
+
+ mConfig->sync();
+}
+
+
+QString LayoutDialogPage::headerText( uint index )
+{
+ static const QString text[4] = {"None","DateTime","PageNumber","FileName"};
+ return( text[ index > 3 ? 0 : index ] );
+}
+
+
+int LayoutDialogPage::headerTextIndex( const QString & headerText )
+{
+ static const QString text[4] = {"None","DateTime","PageNumber","FileName"};
+ if( headerText != 0 )
+ {
+ for( int i=0; i<4; i++ )
+ {
+ if( headerText == text[i] ) { return( i ); }
+ }
+ }
+ return( 0 );
+}
+
+
+QString LayoutDialogPage::headerLine( uint index )
+{
+ static const QString text[3] = {"None","SingleLine","Rectangle"};
+ return( text[ index > 2 ? 0 : index ] );
+}
+
+
+int LayoutDialogPage::headerLineIndex( const QString & headerLine )
+{
+ static const QString text[3] = {"None","SingleLine","Rectangle"};
+ if( headerLine != 0 )
+ {
+ for( int i=0; i<3; i++ )
+ {
+ if( headerLine == text[i] ) { return( i ); }
+ }
+ }
+ return( 0 );
+}
+
+
+void LayoutDialogPage::slotDrawHeader( bool state )
+{
+ for( int i=0; i<4; i++ )
+ {
+ mLayout.headerLabel[i]->setEnabled( state );
+ mLayout.headerCombo[i]->setEnabled( state );
+ }
+}
+
+
+void LayoutDialogPage::slotDrawFooter( bool state )
+{
+ for( int i=0; i<4; i++ )
+ {
+ mLayout.footerLabel[i]->setEnabled( state );
+ mLayout.footerCombo[i]->setEnabled( state );
+ }
+}
+
+
+void LayoutDialogPage::getOptions( QMap<QString,QString>& opts, bool /*incldef*/ )
+{
+ opts[ "kde-khexedit-topmarginmm" ] = QString::number( mLayout.marginSpin[0]->value() );
+ opts[ "kde-khexedit-bottommarginmm" ] = QString::number( mLayout.marginSpin[1]->value() );
+ opts[ "kde-khexedit-leftmarginmm" ] = QString::number( mLayout.marginSpin[2]->value() );
+ opts[ "kde-khexedit-rightmarginmm" ] = QString::number( mLayout.marginSpin[3]->value() );
+
+ opts[ "kde-khexedit-headercheck" ] = (mLayout.headerCheck->isChecked() ? "true" : "false");
+ opts[ "kde-khexedit-headercombo0" ] = QString::number( mLayout.headerCombo[0]->currentItem() );
+ opts[ "kde-khexedit-headercombo1" ] = QString::number( mLayout.headerCombo[1]->currentItem() );
+ opts[ "kde-khexedit-headercombo2" ] = QString::number( mLayout.headerCombo[2]->currentItem() );
+ opts[ "kde-khexedit-headercombo3" ] = QString::number( mLayout.headerCombo[3]->currentItem() );
+
+ opts[ "kde-khexedit-footercheck" ] = (mLayout.footerCheck->isChecked() ? "true" : "false");
+ opts[ "kde-khexedit-footercombo0" ] = QString::number( mLayout.footerCombo[0]->currentItem() );
+ opts[ "kde-khexedit-footercombo1" ] = QString::number( mLayout.footerCombo[1]->currentItem() );
+ opts[ "kde-khexedit-footercombo2" ] = QString::number( mLayout.footerCombo[2]->currentItem() );
+ opts[ "kde-khexedit-footercombo3" ] = QString::number( mLayout.footerCombo[3]->currentItem() );
+}
+
+
+#include "printdialogpage.moc"