Игорь Пашев - Post a comment

Dec. 26th, 2010

[info]igorpashev

12:13 pm - Диалог печати DjView4

В какой-то версии 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].title);
-  if (titleonly)
-    return QString();
+  //if (pageno>=0 && pageno<documentPages.size())
+  //  if ( documentPages[pageno].title )
+  //    return QString::fromUtf8(documentPages[pageno].title);
+  //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-07-25 22:00:30.000000000 +0400
+++ djview4-4.6.pin/src/qdjviewdialogs.cpp  2010-12-26 16:24:59.000000000 +0300
@@ -1477,16 +1477,20 @@
   QString groupname;
   QPrinter *printer;
   QPrintDialog *dialog;
+  QIntValidator *pageValidator;
   bool stopping;
 };
 
 
 QDjViewPrintDialog::~QDjViewPrintDialog()
 {
-  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->pageValidator);
+  d->ui.toPageCombo->setValidator(d->pageValidator);
+
   // Load preferences
   d->ui.printerLabel->setText(QString::null);
   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.fromPageCombo);
       d->ui.fromPageCombo->setCurrentIndex(0);
diff -urdb djview4-4.6/src/qdjviewprintdialog.ui djview4-4.6.pin/src/qdjviewprintdialog.ui
--- djview4-4.6/src/qdjviewprintdialog.ui   2007-05-10 07:18:29.000000000 +0400
+++ djview4-4.6.pin/src/qdjviewprintdialog.ui   2010-12-26 16:27:15.000000000 +0300
@@ -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>

Read Comments

Reply:

From:
(will be screened)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message: