View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0010783 | Scribus | Usability | public | 2012-06-22 12:47 | 2014-06-25 20:04 |
Reporter | cezaryece | Assigned To | cbradney | ||
Priority | normal | Severity | feature | Reproducibility | N/A |
Status | closed | Resolution | fixed | ||
Product Version | 1.5.0svn | ||||
Fixed in Version | 1.5.0svn | ||||
Summary | 0010783: [PATCH] Reverse numeration of pages | ||||
Description | In attached patch you have completed feature of reverse page numeration. It is section property and can be set in Doc Preferences/Sections. | ||||
Tags | patch | ||||
Patch | |||||
|
reversePageNum.diff (5,855 bytes)
diff --git a/Scribus/scribus/scribusdoc.cpp b/Scribus/scribus/scribusdoc.cpp index d6869d4..5b0d142 100644 --- a/Scribus/scribus/scribusdoc.cpp +++ b/Scribus/scribus/scribusdoc.cpp @@ -6363,7 +6363,11 @@ const QString ScribusDoc::getSectionPageNumberForPageIndex(const uint pageIndex) //If a section is inactive, theres no page numbers printed if (docPrefsData.docSectionMap[key].active==false) return ""; - uint sectionIndexOffset=pageIndex-docPrefsData.docSectionMap[key].fromindex+docPrefsData.docSectionMap[key].sectionstartindex; + uint sectionIndexOffset; + if (!docPrefsData.docSectionMap[key].reversed) + sectionIndexOffset = pageIndex - docPrefsData.docSectionMap[key].fromindex + docPrefsData.docSectionMap[key].sectionstartindex; + else + sectionIndexOffset = -pageIndex + docPrefsData.docSectionMap[key].toindex + docPrefsData.docSectionMap[key].sectionstartindex; retVal=getStringFromSequence(docPrefsData.docSectionMap[key].type, sectionIndexOffset); return retVal; } diff --git a/Scribus/scribus/ui/prefs_documentsections.cpp b/Scribus/scribus/ui/prefs_documentsections.cpp index f2be423..5a89145 100644 --- a/Scribus/scribus/ui/prefs_documentsections.cpp +++ b/Scribus/scribus/ui/prefs_documentsections.cpp @@ -63,23 +63,27 @@ void Prefs_DocumentSections::updateTable() QCheckBox *item1 = new QCheckBox(); item1->setChecked((*it).active); sectionsTable->setCellWidget(row, i++, item1); + //Reversed + QCheckBox *item2 = new QCheckBox(); + item2->setChecked((*it).reversed); + sectionsTable->setCellWidget(row, i++, item2); //FromIndex - QTableWidgetItem *item2 = new QTableWidgetItem(QString::number((*it).fromindex+1)); - sectionsTable->setItem(row, i++, item2); - //ToIndex - QTableWidgetItem *item3 = new QTableWidgetItem(QString::number((*it).toindex+1)); + QTableWidgetItem *item3 = new QTableWidgetItem(QString::number((*it).fromindex+1)); sectionsTable->setItem(row, i++, item3); + //ToIndex + QTableWidgetItem *item4 = new QTableWidgetItem(QString::number((*it).toindex+1)); + sectionsTable->setItem(row, i++, item4); //Style - QComboBox *item4 = new QComboBox(); - item4->addItems(styles); - sectionsTable->setCellWidget(row, i++, item4); + QComboBox *item5 = new QComboBox(); + item5->addItems(styles); + sectionsTable->setCellWidget(row, i++, item5); if ((*it).type==Type_None) - item4->setCurrentIndex(styles.count()-1); + item5->setCurrentIndex(styles.count()-1); else - item4->setCurrentIndex((*it).type); + item5->setCurrentIndex((*it).type); //Start Page Number - QTableWidgetItem *item5 = new QTableWidgetItem(QString::number((*it).sectionstartindex)); - sectionsTable->setItem(row, i++, item5); + QTableWidgetItem *item6 = new QTableWidgetItem(QString::number((*it).sectionstartindex)); + sectionsTable->setItem(row, i++, item6); //End Page Number /* QTableItem *item7 = new QTableItem(sectionsTable, QTableItem::WhenCurrent, QString::number((*it).sectionstartindex + (*it).toindex - (*it).fromindex)); @@ -87,11 +91,11 @@ void Prefs_DocumentSections::updateTable() sectionsTable->setItem(row, i++, item7); */ //Field Width - QTableWidgetItem *item6 = new QTableWidgetItem(QString::number((*it).pageNumberWidth)); - sectionsTable->setItem(row, i++, item6); + QTableWidgetItem *item7 = new QTableWidgetItem(QString::number((*it).pageNumberWidth)); + sectionsTable->setItem(row, i++, item7); //Fill Char - QTableWidgetItem *item7 = new QTableWidgetItem(QString((*it).pageNumberFillChar)); - sectionsTable->setItem(row, i++, item7); + QTableWidgetItem *item8 = new QTableWidgetItem(QString((*it).pageNumberFillChar)); + sectionsTable->setItem(row, i++, item8); // QTableWidgetItem *t=sectionsTable->verticalHeaderItem(row); if (t!=NULL) @@ -119,7 +123,14 @@ void Prefs_DocumentSections::tableItemChanged( int row, int col ) } break; case 2: + { + QCheckBox* qcti=dynamic_cast<QCheckBox*>(sectionsTable->cellWidget(row,col)); + if (qcti!=NULL) + localSections[row].reversed=qcti->isChecked(); + } + break; case 3: + case 4: // Validate to/from page specification before conversion to an index //!!! There is still a problem here if m_maxpageindex == MAX_UINT ;) newDocPageSpec=sectionsTable->item(row, col)->text().toUInt(); @@ -136,12 +147,12 @@ void Prefs_DocumentSections::tableItemChanged( int row, int col ) } // Now, since newDocPageSpec >= 1, convert to index --newDocPageSpec; - if (col==2) + if (col==3) localSections[row].fromindex=newDocPageSpec; else localSections[row].toindex=newDocPageSpec; break; - case 4: + case 5: { QComboBox* qcti=dynamic_cast<QComboBox*>(sectionsTable->cellWidget(row,col)); if (qcti!=NULL) @@ -155,13 +166,13 @@ void Prefs_DocumentSections::tableItemChanged( int row, int col ) } } break; - case 5: - localSections[row].sectionstartindex=sectionsTable->item(row, col)->text().toUInt(); - break; case 6: - localSections[row].pageNumberWidth=sectionsTable->item(row, col)->text().toInt(); + localSections[row].sectionstartindex= sectionsTable->item(row, col)->text().toUInt();; break; case 7: + localSections[row].pageNumberWidth=sectionsTable->item(row, col)->text().toInt(); + break; + case 8: { QString ch=sectionsTable->item(row, col)->text(); if (ch.length()>0) diff --git a/Scribus/scribus/ui/prefs_documentsectionsbase.ui b/Scribus/scribus/ui/prefs_documentsectionsbase.ui index 888b2e2..5423c78 100644 --- a/Scribus/scribus/ui/prefs_documentsectionsbase.ui +++ b/Scribus/scribus/ui/prefs_documentsectionsbase.ui @@ -55,6 +55,11 @@ </column> <column> <property name="text"> + <string>Reversed</string> + </property> + </column> + <column> + <property name="text"> <string>From</string> </property> </column> |
|
did a short test and it seemed to work... it will even be more interesting when the virtnumpages will be also in. i'm a bit concerned about having one more column/checkbox in the table... but don't have a better proposal for now. well., i have an idea... typing 10 to 1 might count down... but i'm not convinced yet that it's really better. |
|
btw, it's not necessary to modify the way the sections are stored in the file or the internal structure... just the dialog :-) |
|
Storing "reversed" attribute in file was done by someone else before. I only implement just reverse counting calculation. |
|
sorry, the note was on the wrong report :-( |
Date Modified | Username | Field | Change |
---|---|---|---|
2012-06-22 12:47 | cezaryece | New Issue | |
2012-06-22 12:47 | cezaryece | File Added: reversePageNum.diff | |
2012-06-22 22:58 | ale | Note Added: 0028270 | |
2012-06-23 07:24 | ale | Note Added: 0028273 | |
2012-06-23 09:17 | cezaryece | Note Added: 0028275 | |
2012-06-23 11:34 | ale | Note Added: 0028276 | |
2014-06-13 00:14 | Kunda | Tag Attached: patch | |
2014-06-22 09:13 | cbradney | Status | new => resolved |
2014-06-22 09:13 | cbradney | Fixed in Version | => 1.5.0svn |
2014-06-22 09:13 | cbradney | Resolution | open => fixed |
2014-06-22 09:13 | cbradney | Assigned To | => cbradney |
2014-06-25 20:04 | cbradney | Status | resolved => closed |