def __init__(self, parent=None): super(QComboBox, self).__init__(parent) for i in range(1, 357): locale = QLocale(i) if locale and QLocale.languageToString(locale.language()) != "C": codeName = locale.name().split("_")[0] if codeName not in self.codesList: self.codesList.append(codeName) self.codesList.sort() for lang in self.codesList: locale = QLocale(lang) if locale: languageName = locale.nativeLanguageName() if len(languageName) == 0: languageName = QLocale.languageToString(locale.language()) self.languageList.append(languageName.title()) self.setIconSize(QSize(32, 22)) codeIcon = QImage(self.iconSize(), QImage.Format_ARGB32) painter = QPainter(codeIcon) painter.setBrush(Qt.transparent) codeIcon.fill(Qt.transparent) font = QFontDatabase().systemFont(QFontDatabase.FixedFont) painter.setFont(font) painter.setPen(self.palette().color(QPalette.Text)) painter.drawText(codeIcon.rect(), Qt.AlignCenter, lang) painter.end() self.addItem(QIcon(QPixmap.fromImage(codeIcon)), languageName.title())
def setLanguage(self, theLanguage, theProvider=""): """Set the language code for the spell checker. """ if theLanguage is None: self.langText.setText(self.tr("None")) self.langText.setToolTip("") else: qLocal = QLocale(theLanguage) spLang = qLocal.nativeLanguageName().title() self.langText.setText(spLang) if theProvider: self.langText.setToolTip("%s (%s)" % (theLanguage, theProvider)) else: self.langText.setToolTip(theLanguage) return
def _updateLanguageList(self, spellTool): """Updates the list of available spell checking dictionaries available for the selected spell check tool. It will try to preserve the language choice, if the language exists in the updated list. """ if spellTool == nwConst.SP_ENCHANT: theDict = NWSpellEnchant() else: theDict = NWSpellSimple() self.spellLangList.clear() for spTag, spProv in theDict.listDictionaries(): qLocal = QLocale(spTag) spLang = qLocal.nativeLanguageName().title() self.spellLangList.addItem("%s [%s]" % (spLang, spProv), spTag) spellIdx = self.spellLangList.findData(self.mainConf.spellLanguage) if spellIdx != -1: self.spellLangList.setCurrentIndex(spellIdx) return
def __init__(self, mainGui): QWidget.__init__(self, mainGui) self.mainConf = novelwriter.CONFIG self.mainGui = mainGui self.mainTheme = mainGui.mainTheme # The Form self.mainForm = QConfigLayout() self.mainForm.setHelpTextStyle(self.mainTheme.helpText) self.setLayout(self.mainForm) mW = self.mainConf.pxInt(250) # Spell Checking # ============== self.mainForm.addGroupLabel(self.tr("Spell Checking")) # Spell Check Provider and Language self.spellLanguage = QComboBox(self) self.spellLanguage.setMaximumWidth(mW) langAvail = self.mainGui.docEditor.spEnchant.listDictionaries() if self.mainConf.hasEnchant: if langAvail: for spTag, spProv in langAvail: qLocal = QLocale(spTag) spLang = qLocal.nativeLanguageName().title() self.spellLanguage.addItem("%s [%s]" % (spLang, spProv), spTag) else: self.spellLanguage.addItem(self.tr("None"), "") self.spellLanguage.setEnabled(False) else: self.spellLanguage.addItem(self.tr("Not installed"), "") self.spellLanguage.setEnabled(False) spellIdx = self.spellLanguage.findData(self.mainConf.spellLanguage) if spellIdx != -1: self.spellLanguage.setCurrentIndex(spellIdx) self.mainForm.addRow( self.tr("Spell check language"), self.spellLanguage, self.tr("Available languages are determined by your system.") ) # Big Document Size Limit self.bigDocLimit = QSpinBox(self) self.bigDocLimit.setMinimum(10) self.bigDocLimit.setMaximum(10000) self.bigDocLimit.setSingleStep(10) self.bigDocLimit.setValue(self.mainConf.bigDocLimit) self.mainForm.addRow( self.tr("Big document limit"), self.bigDocLimit, self.tr("Full spell checking is disabled above this limit."), theUnit=self.tr("kB") ) # Word Count # ========== self.mainForm.addGroupLabel(self.tr("Word Count")) # Word Count Timer self.wordCountTimer = QDoubleSpinBox(self) self.wordCountTimer.setDecimals(1) self.wordCountTimer.setMinimum(2.0) self.wordCountTimer.setMaximum(600.0) self.wordCountTimer.setSingleStep(0.1) self.wordCountTimer.setValue(self.mainConf.wordCountTimer) self.mainForm.addRow( self.tr("Word count interval"), self.wordCountTimer, theUnit=self.tr("seconds") ) # Include Notes in Word Count self.incNotesWCount = QSwitch() self.incNotesWCount.setChecked(self.mainConf.incNotesWCount) self.mainForm.addRow( self.tr("Include project notes in status bar word count"), self.incNotesWCount ) # Writing Guides # ============== self.mainForm.addGroupLabel(self.tr("Writing Guides")) # Show Tabs and Spaces self.showTabsNSpaces = QSwitch() self.showTabsNSpaces.setChecked(self.mainConf.showTabsNSpaces) self.mainForm.addRow( self.tr("Show tabs and spaces"), self.showTabsNSpaces ) # Show Line Endings self.showLineEndings = QSwitch() self.showLineEndings.setChecked(self.mainConf.showLineEndings) self.mainForm.addRow( self.tr("Show line endings"), self.showLineEndings ) # Scroll Behaviour # ================ self.mainForm.addGroupLabel(self.tr("Scroll Behaviour")) # Scroll Past End self.scrollPastEnd = QSpinBox(self) self.scrollPastEnd.setMinimum(0) self.scrollPastEnd.setMaximum(100) self.scrollPastEnd.setSingleStep(1) self.scrollPastEnd.setValue(int(self.mainConf.scrollPastEnd)) self.mainForm.addRow( self.tr("Scroll past end of the document"), self.scrollPastEnd, self.tr("Set to 0 to disable this feature."), theUnit=self.tr("lines") ) # Typewriter Scrolling self.autoScroll = QSwitch() self.autoScroll.setChecked(self.mainConf.autoScroll) self.mainForm.addRow( self.tr("Typewriter style scrolling when you type"), self.autoScroll, self.tr("Keeps the cursor at a fixed vertical position.") ) # Typewriter Position self.autoScrollPos = QSpinBox(self) self.autoScrollPos.setMinimum(10) self.autoScrollPos.setMaximum(90) self.autoScrollPos.setSingleStep(1) self.autoScrollPos.setValue(int(self.mainConf.autoScrollPos)) self.mainForm.addRow( self.tr("Minimum position for Typewriter scrolling"), self.autoScrollPos, self.tr("Percentage of the editor height from the top."), theUnit="%" ) return
def __init__(self, mainGui, theProject): QWidget.__init__(self, mainGui) self.mainConf = novelwriter.CONFIG self.mainGui = mainGui self.theProject = theProject # The Form self.mainForm = QConfigLayout() self.mainForm.setHelpTextStyle(self.mainGui.mainTheme.helpText) self.setLayout(self.mainForm) self.mainForm.addGroupLabel(self.tr("Project Settings")) xW = self.mainConf.pxInt(250) xH = round(4.8*self.mainGui.mainTheme.fontPixelSize) self.editName = QLineEdit() self.editName.setMaxLength(200) self.editName.setMaximumWidth(xW) self.editName.setText(self.theProject.projName) self.mainForm.addRow( self.tr("Project name"), self.editName, self.tr("Should be set only once.") ) self.editTitle = QLineEdit() self.editTitle.setMaxLength(200) self.editTitle.setMaximumWidth(xW) self.editTitle.setText(self.theProject.bookTitle) self.mainForm.addRow( self.tr("Novel title"), self.editTitle, self.tr("Change whenever you want!") ) self.editAuthors = QPlainTextEdit() self.editAuthors.setMaximumHeight(xH) self.editAuthors.setMaximumWidth(xW) self.editAuthors.setPlainText("\n".join(self.theProject.bookAuthors)) self.mainForm.addRow( self.tr("Author(s)"), self.editAuthors, self.tr("One name per line.") ) self.spellLang = QComboBox(self) self.spellLang.setMaximumWidth(xW) self.spellLang.addItem(self.tr("Default"), "None") langAvail = self.mainGui.docEditor.spEnchant.listDictionaries() for spTag, spProv in langAvail: qLocal = QLocale(spTag) spLang = qLocal.nativeLanguageName().title() self.spellLang.addItem("%s [%s]" % (spLang, spProv), spTag) self.mainForm.addRow( self.tr("Spell check language"), self.spellLang, self.tr("Overrides main preferences.") ) spellIdx = 0 if self.theProject.projSpell is not None: spellIdx = self.spellLang.findData(self.theProject.projSpell) if spellIdx != -1: self.spellLang.setCurrentIndex(spellIdx) self.doBackup = QSwitch(self) self.doBackup.setChecked(not self.theProject.doBackup) self.mainForm.addRow( self.tr("No backup on close"), self.doBackup, self.tr("Overrides main preferences.") ) return