def _formatHeading(self, theTitle, theText): """Replaces the %keyword% strings. """ theTitle = theTitle.replace(r"%title%", theText) theTitle = theTitle.replace(r"%ch%", str(self._numChapter)) theTitle = theTitle.replace(r"%sc%", str(self._numChScene)) theTitle = theTitle.replace(r"%sca%", str(self._numAbsScene)) if r"%chw%" in theTitle: theTitle = theTitle.replace(r"%chw%", self._localLookup(self._numChapter)) if r"%chi%" in theTitle: theTitle = theTitle.replace(r"%chi%", numberToRoman(self._numChapter, True)) if r"%chI%" in theTitle: theTitle = theTitle.replace(r"%chI%", numberToRoman(self._numChapter, False)) return theTitle[:1].upper() + theTitle[1:]
def testBaseCommon_RomanNumbers(): """Test conversion of integers to Roman numbers. """ assert numberToRoman(None, False) == "NAN" assert numberToRoman(0, False) == "OOR" assert numberToRoman(1, False) == "I" assert numberToRoman(2, False) == "II" assert numberToRoman(3, False) == "III" assert numberToRoman(4, False) == "IV" assert numberToRoman(5, False) == "V" assert numberToRoman(6, False) == "VI" assert numberToRoman(7, False) == "VII" assert numberToRoman(8, False) == "VIII" assert numberToRoman(9, False) == "IX" assert numberToRoman(10, False) == "X" assert numberToRoman(14, False) == "XIV" assert numberToRoman(42, False) == "XLII" assert numberToRoman(99, False) == "XCIX" assert numberToRoman(142, False) == "CXLII" assert numberToRoman(542, False) == "DXLII" assert numberToRoman(999, False) == "CMXCIX" assert numberToRoman(2010, False) == "MMX" assert numberToRoman(999, True) == "cmxcix"
def _populateTree(self): """Set the content of the chapter/page tree. """ dblPages = self.dblValue.isChecked() wpPage = self.wpValue.value() fstPage = self.poValue.value() - 1 pTotal = 0 tPages = 1 theList = [] for _, tLevel, tTitle, wCount in self._theToC: pCount = math.ceil(wCount / wpPage) if dblPages: pCount += pCount % 2 pTotal += pCount theList.append((tLevel, tTitle, wCount, pCount)) pMax = pTotal - fstPage self.tocTree.clear() for tLevel, tTitle, wCount, pCount in theList: newItem = QTreeWidgetItem() if tPages <= fstPage: progPage = numberToRoman(tPages, True) progText = "" else: cPage = tPages - fstPage pgProg = 100.0 * (cPage - 1) / pMax if pMax > 0 else 0.0 progPage = f"{cPage:n}" progText = f"{pgProg:.1f}{nwUnicode.U_THSP}%" if tTitle.strip() == "": tTitle = self.tr("Untitled") newItem.setIcon(self.C_TITLE, self.theTheme.getIcon("doc_h%d" % tLevel)) newItem.setText(self.C_TITLE, tTitle) newItem.setText(self.C_WORDS, f"{wCount:n}") newItem.setText(self.C_PAGES, f"{pCount:n}") newItem.setText(self.C_PAGE, progPage) newItem.setText(self.C_PROG, progText) newItem.setTextAlignment(self.C_WORDS, Qt.AlignRight) newItem.setTextAlignment(self.C_PAGES, Qt.AlignRight) newItem.setTextAlignment(self.C_PAGE, Qt.AlignRight) newItem.setTextAlignment(self.C_PROG, Qt.AlignRight) # Make pages and titles/partitions stand out if tLevel < 2: bFont = newItem.font(self.C_TITLE) if tLevel == 0: bFont.setItalic(True) else: bFont.setBold(True) bFont.setUnderline(True) newItem.setFont(self.C_TITLE, bFont) tPages += pCount self.tocTree.addTopLevelItem(newItem) return