В какой-то версии DjView4 диапазон печати страниц стал задаваться
нередактируемыми (editable=false) QComboBox.
Это реально заколебало, особенно когда в файле 1000 страниц,
а надо распечатать 567-580, например.
Этот патч исправляет проблему.
Эта проблема есть не только в диалоге печати,
но и в других, например, в диалоге экспорта.
Но меня заколебала именно печать.
Хотя, по-хорошему, задание страниц надо сделать
как-то так:1,3,5-12
И вообще, все диалоги в одном файле — это страшно.
diff -urdb djview4-4.6/src/qdjview.cpp djview4-4.6.pin/src/qdjview.cpp
--- djview4-4.6/src/qdjview.cpp 2010-07-05 00:09:53.000000000 +0400
+++ djview4-4.6.pin/src/qdjview.cpp 2010-12-26 16:24:59.000000000 +0300
@@ -3057,11 +3057,11 @@
QDjView::pageName(int pageno, bool titleonly)
{
// obtain page title
- if (pageno>=0 && pageno<documentPages.size())
- if ( documentPages[pageno].title )
- return QString::fromUtf8(documentPages[pageno].t
- if (titleonly)
- return QString();
+ //if (pageno>=0 && pageno<documentPages.size())
+ // if ( documentPages[pageno].title )
+ // return QString::fromUtf8(documentPages[pageno].t
+ //if (titleonly)
+ // return QString();
// generate a name from the page number
//// if (hasNumericalPageTitle)
//// return QString("$%1").arg(pageno + 1);
diff -urdb djview4-4.6/src/qdjviewdialogs.cpp djview4-4.6.pin/src/qdjviewdialogs.cpp
--- djview4-4.6/src/qdjviewdialogs.cpp 2010-0
+++ djview4-4.6.pin/src/qdjviewdialogs.cpp 2
@@ -1477,16 +1477,20 @@
QString groupname;
QPrinter *printer;
QPrintDialog *dialog;
+ QIntValidator *pageValidator;
bool stopping;
};
QDjViewPrintDialog::~QDjViewPrintDi
{
- if (d && d->printer)
+ if (d) {
+ if (d->printer)
delete d->printer;
- if (d)
+ if (d->pageValidator)
+ delete d->pageValidator;
delete d;
+ }
}
@@ -1501,6 +1505,7 @@
d->exporter = 0;
d->printer = new QPrinter(QPrinter::HighResolution);
d->dialog = new QPrintDialog(d->printer, this);
+ d->pageValidator = new QIntValidator();
d->ui.setupUi(this);
setAttribute(Qt::WA_GroupLeader, true);
connect(d->ui.okButton, SIGNAL(clicked()),
@@ -1529,6 +1534,9 @@
"dialog tabs might appear to specify conversion "
"options.</html>"));
+ d->ui.fromPageCombo->setValidator(d->p
+ d->ui.toPageCombo->setValidator(d->pa
+
// Load preferences
d->ui.printerLabel->setText(QString::nul
d->ui.fileNameEdit->setText("print.ps");
@@ -1596,6 +1604,7 @@
if (nodoc && d->djview->pageNum() > 0)
{
nodoc = false;
+ d->pageValidator->setRange(1, d->djview->pageNum());
d->document = d->djview->getDocument();
d->djview->fillPageCombo(d->ui.fromPageC
d->ui.fromPageCombo->setCurrentIndex(0);
diff -urdb djview4-4.6/src/qdjviewprintdialog.ui djview4-4.6.pin/src/qdjviewprintdialog.u
--- djview4-4.6/src/qdjviewprintdialog.ui 2007-05-10 07:18:29.000000000 +0400
+++ djview4-4.6.pin/src/qdjviewprintdialog.u
@@ -80,7 +80,11 @@
</widget>
</item>
<item>
- <widget class="QComboBox" name="fromPageCombo" />
+ <widget class="QComboBox" name="fromPageCombo">
+ <property name="editable">
+ <bool>true</bool>
+ </property>
+ </widget>
</item>
<item>
<widget class="QLabel" name="toLabel" >
@@ -93,7 +97,11 @@
</widget>
</item>
<item>
- <widget class="QComboBox" name="toPageCombo" />
+ <widget class="QComboBox" name="toPageCombo">
+ <property name="editable">
+ <bool>true</bool>
+ </property>
+ </widget>
</item>
<item>
<spacer>