00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#include "kptextpage.h"
00021
#include "marginwidget.h"
00022
#include "driver.h"
00023
#include "kprinter.h"
00024
00025
#include <qbuttongroup.h>
00026
#include <qgroupbox.h>
00027
#include <qlayout.h>
00028
#include <qlabel.h>
00029
#include <qradiobutton.h>
00030
#include <knuminput.h>
00031
#include <klocale.h>
00032
#include <kiconloader.h>
00033
#include <kseparator.h>
00034
#include <kdebug.h>
00035
00036 KPTextPage::KPTextPage(DrMain *driver,
QWidget *parent,
const char *name)
00037 :
KPrintDialogPage(0, driver, parent, name)
00038 {
00039 setTitle(i18n(
"Text"));
00040 m_block =
false;
00041
00042
QGroupBox *formatbox =
new QGroupBox(0, Qt::Vertical, i18n(
"Text Format"),
this);
00043
QGroupBox *prettybox =
new QGroupBox(0, Qt::Vertical, i18n(
"Syntax Highlighting"),
this);
00044
QGroupBox *marginbox =
new QGroupBox(0, Qt::Vertical, i18n(
"Margins"),
this);
00045
00046 m_cpi =
new KIntNumInput(10, formatbox);
00047 m_cpi->setLabel(i18n(
"&Chars per inch:"), Qt::AlignLeft|Qt::AlignVCenter);
00048 m_cpi->setRange(1, 999, 1,
false);
00049 m_lpi =
new KIntNumInput(m_cpi, 6, formatbox);
00050 m_lpi->setLabel(i18n(
"&Lines per inch:"), Qt::AlignLeft|Qt::AlignVCenter);
00051 m_lpi->setRange(1, 999, 1,
false);
00052 m_columns =
new KIntNumInput(m_lpi, 1, formatbox);
00053 m_columns->setLabel(i18n(
"C&olumns:"), Qt::AlignLeft|Qt::AlignVCenter);
00054 m_columns->setRange(1, 10, 1,
false);
00055 KSeparator *sep =
new KSeparator(Qt::Horizontal, formatbox);
00056 connect(m_columns, SIGNAL(valueChanged(
int)), SLOT(slotColumnsChanged(
int)));
00057
00058 m_prettypix =
new QLabel(prettybox);
00059 m_prettypix->setAlignment(Qt::AlignCenter);
00060
QRadioButton *off =
new QRadioButton(i18n(
"&Disabled"), prettybox);
00061
QRadioButton *on =
new QRadioButton(i18n(
"&Enabled"), prettybox);
00062 m_prettyprint =
new QButtonGroup(prettybox);
00063 m_prettyprint->hide();
00064 m_prettyprint->insert(off, 0);
00065 m_prettyprint->insert(on, 1);
00066 m_prettyprint->setButton(0);
00067 connect(m_prettyprint, SIGNAL(clicked(
int)), SLOT(slotPrettyChanged(
int)));
00068 slotPrettyChanged(0);
00069
00070 m_margin =
new MarginWidget(marginbox);
00071 m_margin->setPageSize(595, 842);
00072
00073
QGridLayout *l0 =
new QGridLayout(
this, 2, 2, 0, 10);
00074 l0->
addWidget(formatbox, 0, 0);
00075 l0->
addWidget(prettybox, 0, 1);
00076 l0->
addMultiCellWidget(marginbox, 1, 1, 0, 1);
00077
QVBoxLayout *l1 =
new QVBoxLayout(formatbox->layout(), 5);
00078 l1->addWidget(m_cpi);
00079 l1->addWidget(m_lpi);
00080 l1->addWidget(sep);
00081 l1->addWidget(m_columns);
00082
QGridLayout *l2 =
new QGridLayout(prettybox->layout(), 2, 2, 10);
00083 l2->
addWidget(off, 0, 0);
00084 l2->
addWidget(on, 1, 0);
00085 l2->
addMultiCellWidget(m_prettypix, 0, 1, 1, 1);
00086
QVBoxLayout *l3 =
new QVBoxLayout(marginbox->layout(), 10);
00087 l3->addWidget(m_margin);
00088 }
00089
00090 KPTextPage::~KPTextPage()
00091 {
00092 }
00093
00094
void KPTextPage::setOptions(
const QMap<QString,QString>& opts)
00095 {
00096
QString value;
00097
00098
if (!(value=opts[
"cpi"]).isEmpty())
00099 m_cpi->setValue(value.toInt());
00100
if (!(value=opts[
"lpi"]).isEmpty())
00101 m_lpi->setValue(value.toInt());
00102
if (!(value=opts[
"columns"]).isEmpty())
00103 m_columns->setValue(value.toInt());
00104
int ID(0);
00105
if (opts.contains(
"prettyprint") && (opts[
"prettyprint"].isEmpty() || opts[
"prettyprint"] ==
"true"))
00106 ID = 1;
00107 m_prettyprint->setButton(ID);
00108 slotPrettyChanged(ID);
00109
00110
00111 m_currentps = opts[
"PageSize"];
00112
QString orient = opts[
"orientation-requested"];
00113
bool landscape = (orient ==
"4" || orient ==
"5");
00114 initPageSize(landscape);
00115
00116
bool marginset(
false);
00117
if (!(value=opts[
"page-top"]).isEmpty() && value.toFloat() != m_margin->top())
00118 {
00119 marginset =
true;
00120 m_margin->setTop(value.toFloat());
00121 }
00122
if (!(value=opts[
"page-bottom"]).isEmpty() && value.toFloat() != m_margin->bottom())
00123 {
00124 marginset =
true;
00125 m_margin->setBottom(value.toFloat());
00126 }
00127
if (!(value=opts[
"page-left"]).isEmpty() && value.toFloat() != m_margin->left())
00128 {
00129 marginset =
true;
00130 m_margin->setLeft(value.toFloat());
00131 }
00132
if (!(value=opts[
"page-right"]).isEmpty() && value.toFloat() != m_margin->right())
00133 {
00134 marginset =
true;
00135 m_margin->setRight(value.toFloat());
00136 }
00137 m_margin->setCustomEnabled(marginset);
00138 }
00139
00140
void KPTextPage::getOptions(
QMap<QString,QString>& opts,
bool incldef)
00141 {
00142
if (incldef || m_cpi->value() != 10)
00143 opts[
"cpi"] =
QString::number(m_cpi->value());
00144
if (incldef || m_lpi->value() != 6)
00145 opts[
"lpi"] =
QString::number(m_lpi->value());
00146
if (incldef || m_columns->value() != 1)
00147 opts[
"columns"] =
QString::number(m_columns->value());
00148
00149
00150
if (m_margin->isCustomEnabled())
00151 {
00152 opts[
"page-top"] =
QString::number((
int )( m_margin->top()+0.5 ));
00153 opts[
"page-bottom"] =
QString::number((
int )( m_margin->bottom()+0.5 ));
00154 opts[
"page-left"] =
QString::number((
int )( m_margin->left()+0.5 ));
00155 opts[
"page-right"] =
QString::number((
int )( m_margin->right()+0.5 ));
00156 }
00157
else
00158 {
00159 opts.
remove(
"page-top");
00160 opts.
remove(
"page-bottom");
00161 opts.
remove(
"page-left");
00162 opts.
remove(
"page-right");
00163 }
00164
00165
if (m_prettyprint->id(m_prettyprint->selected()) == 1)
00166 opts[
"prettyprint"] =
"true";
00167
else if (incldef)
00168 opts[
"prettyprint"] =
"false";
00169
else
00170 opts.
remove(
"prettyprint");
00171 }
00172
00173
void KPTextPage::slotPrettyChanged(
int ID)
00174 {
00175
QString iconstr = (ID == 0 ?
"kdeprint_nup1" :
"kdeprint_prettyprint");
00176 m_prettypix->setPixmap(UserIcon(iconstr));
00177 }
00178
00179
void KPTextPage::slotColumnsChanged(
int)
00180 {
00181
00182 }
00183
00184
void KPTextPage::initPageSize(
bool landscape)
00185 {
00186
float w( -1 ), h( -1 );
00187
float mt( 36 ), mb( mt ), ml( 18 ), mr( ml );
00188
if (driver())
00189 {
00190
if (m_currentps.isEmpty())
00191 {
00192 DrListOption *o = (DrListOption*)driver()->findOption(
"PageSize");
00193
if (o)
00194 m_currentps = o->get(
"default");
00195 }
00196
if (!m_currentps.isEmpty())
00197 {
00198 DrPageSize *ps = driver()->findPageSize(m_currentps);
00199
if (ps)
00200 {
00201 w = ps->pageWidth();
00202 h = ps->pageHeight();
00203 mt = ps->topMargin();
00204 ml = ps->leftMargin();
00205 mr = ps->rightMargin();
00206 mb = ps->bottomMargin();
00207 }
00208 }
00209 }
00210 m_margin->setPageSize(w, h);
00211 m_margin->setOrientation(landscape ? KPrinter::Landscape : KPrinter::Portrait);
00212 m_margin->setDefaultMargins( mt, mb, ml, mr );
00213 m_margin->setCustomEnabled(
false);
00214 }
00215
00216
#include "kptextpage.moc"