Диссертация (1167217), страница 63
Текст из файла (страница 63)
Ansichten eines Clowns", userData=None)self.comboBox.addItem("E.M.Remarque. Die Nacht von Lissabon",userData=None)self.comboBox.addItem("E.M.Remarque. Liebe deinen Nächsten",userData=None)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 900, 21))self.menubar.setObjectName("menubar")self.menuFile = QtWidgets.QMenu(self.menubar)self.menuFile.setObjectName("menuFile")self.menuSettings = QtWidgets.QMenu(self.menubar)self.menuSettings.setObjectName("menuSettings")MainWindow.setMenuBar(self.menubar)self.actionNew = QtWidgets.QAction(MainWindow)self.actionNew.setObjectName("actionNew")self.actionSaveHTML = QtWidgets.QAction(MainWindow)self.actionSaveHTML.setObjectName("actionSaveHTML")self.actionColor = QtWidgets.QAction(MainWindow)self.actionColor.setObjectName("actionColor")self.menuFile.addAction(self.actionNew)self.menuFile.addAction(self.actionSaveHTML)self.menuSettings.addAction(self.actionColor)self.menubar.addAction(self.menuFile.menuAction())self.menubar.addAction(self.menuSettings.menuAction())391self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)self.comboBox.setCurrentIndex(0)self.tabWidget.setCurrentIndex(0)self.btnMV.toggled['bool'].connect(self.chbMV.setEnabled)self.btnPred.toggled['bool'].connect(self.chbPred.setEnabled)self.btnSich.toggled['bool'].connect(self.chbSich.setEnabled)self.btnAdj.toggled['bool'].connect(self.chbAdjAct)self.btnSatz.toggled['bool'].connect(self.rbSatzAct)self.btnModus.toggled['bool'].connect(self.rbModusAct)self.btnArt.toggled['bool'].connect(self.chbArtAct)self.btnZForm.toggled['bool'].connect(self.chbZFAct)self.btnGenus.toggled['bool'].connect(self.chbGenusAct)self.btnPrep.toggled['bool'].connect(self.chbPrepAct)self.btnPref.toggled['bool'].connect(self.chbPrefAct)#QtCore.QMetaObject.connectSlotsByName(MainWindow)self.lblFooter = QtWidgets.QLabel()self.lblFooter.setText('')#"© Alexey Gorozhanov, 2014")self.lblFooter.setAlignment(QtCore.Qt.AlignRight)self.statusbar.addWidget(self.lblFooter, 1)###################################################################################self.actionNew.triggered.connect(app.quit)self.actionSaveHTML.triggered.connect(self.actionSaveAsHTML)self.actionColor.triggered.connect(self.actionColorDef)self.comboBox.activated.connect(self.pushButton.setEnabled)self.comboBox2.activated.connect(lambda:self.lineTab2_input.setText(self.comboBox2.itemText(self.comboBox2.currentIndex())))self.pushButton.clicked.connect(self.searchMain)self.tabWidget.currentChanged.connect(self.lineTab2_input.setFocus)self.btnTab2.clicked.connect(self.action1)self.btnTab2_run.clicked.connect(self.actionRun)self.btnTab2_plus.clicked.connect(self.actionPlus)self.btnTab2_clear.clicked.connect(self.actionClear)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "Corpus Searcher"))self.chbPref2.setText(_translate("MainWindow", "2 untr."))self.rbSatz0.setText(_translate("MainWindow", "0 Einfach"))self.rbSatz2.setText(_translate("MainWindow", "2 Gefüge"))self.rbSatz1.setText(_translate("MainWindow", "1 Reihe"))self.chbPref1.setText(_translate("MainWindow", "1 trennbar"))self.btnSatz.setText(_translate("MainWindow", "Satz"))self.btnPref.setText(_translate("MainWindow", "Präfix"))self.chbZeit1.setText(_translate("MainWindow", "Perfekt"))self.chbZeit3.setText(_translate("MainWindow", "Plusquamp."))self.chbZeit4.setText(_translate("MainWindow", "Futur I"))392self.chbZeit2.setText(_translate("MainWindow", "Präteritum"))self.chbZeit0.setText(_translate("MainWindow", "Präsens"))self.chbZeit5.setText(_translate("MainWindow", "Futur II"))self.btnZForm.setText(_translate("MainWindow", "Zeitform"))self.chbMV.setText(_translate("MainWindow", "x"))self.rbModus3.setText(_translate("MainWindow", "3 Konjunktiv"))self.rbModus1.setText(_translate("MainWindow", "1 Indikativ"))self.rbModus2.setText(_translate("MainWindow", "2 Imperativ"))self.btnModus.setText(_translate("MainWindow", "Modus"))self.btnMV.setText(_translate("MainWindow", "Modalverb"))self.chbArt2.setText(_translate("MainWindow", "Best."))self.chbPred.setText(_translate("MainWindow", "x"))self.chbArt0.setText(_translate("MainWindow", "Null"))self.chbArt1.setText(_translate("MainWindow", "Unbest."))self.btnArt.setText(_translate("MainWindow", "Artikel"))self.btnPred.setText(_translate("MainWindow", "Prädikativ"))self.chbPrep1.setText(_translate("MainWindow", "Dativ"))self.chbPrep3.setText(_translate("MainWindow", "Doppelt"))self.chbSich.setText(_translate("MainWindow", "x"))self.chbPrep2.setText(_translate("MainWindow", "Akkusativ"))self.chbPrep0.setText(_translate("MainWindow", "Genitiv"))self.btnSich.setText(_translate("MainWindow", "Sich-Verben"))self.btnPrep.setText(_translate("MainWindow", "Präp."))self.chbGen1.setText(_translate("MainWindow", "Passiv"))self.chbAdj1.setText(_translate("MainWindow", "Komparativ"))self.chbGen0.setText(_translate("MainWindow", "Aktiv"))self.chbAdj0.setText(_translate("MainWindow", "Positiv"))self.chbGen2.setText(_translate("MainWindow", "Zustandspas."))self.chbAdj2.setText(_translate("MainWindow", "Superlativ"))self.btnAdj.setText(_translate("MainWindow", "Adjektiv"))self.btnGenus.setText(_translate("MainWindow", "Genus"))self.chbIgnore.setText(_translate("MainWindow", "Ignore Unchecked"))self.pushButton.setText(_translate("MainWindow", "Search"))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab),_translate("MainWindow", "Tab 1"))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2),_translate("MainWindow", "Tab 2"))self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3),_translate("MainWindow", "Log"))self.menuFile.setTitle(_translate("MainWindow", "File"))self.actionNew.setText(_translate("MainWindow", "New/Exit"))self.actionSaveHTML.setText(_translate("MainWindow", "Save As HTML"))self.menuSettings.setTitle(_translate("MainWindow", "Settings"))self.actionColor.setText(_translate("MainWindow", "Color"))self.btnTab2.setText(_translate("MainWindow", "Start"))self.btnTab2_run.setText(_translate("MainWindow", "Reduce"))self.btnTab2_plus.setText(_translate("MainWindow", "+"))self.btnTab2_clear.setText(_translate("MainWindow", "ClrMrks"))def logInfo(self, text):self.lblFooter.setText(text)self.textEdit2.append(text)def actionColorDef(self):#self.showDiaLog()393color = QtWidgets.QColorDialog.getColor(QtCore.Qt.yellow)if color.isValid():self.color = colorself.logInfo('New color is %s' % color.name())self.stylesheet = "QTabBar::tab:selected {background: %s;}QTabWidget::pane { border-top: 2px solid #C2C7CB;}" % color.name() #QTabWidget>QWidget>QWidget{background: #028482;}self.tabWidget.setStyleSheet(self.stylesheet)def actionSaveAsHTML(self):self.html = self.textEdit.toHtml()if len(self.html) > 500:self.html = self.html.replace('</body></html>', """<footeralign='right'><em>%s</em></footer></body></html>""" %self.comboBox.itemText(self.comboBox.currentIndex()))options = QtWidgets.QFileDialog.Options()options |= QtWidgets.QFileDialog.DontUseNativeDialogfileName, _ =QtWidgets.QFileDialog.getSaveFileName(self.centralwidget, "Save", '', "HTML Files(*.html)", options=options)if fileName:file = open(fileName, 'w', encoding = 'utf-8')file.write(self.html)file.close()self.logInfo('Saved As: %s' % fileName)else:self.logInfo('Sorry, there is nothing to save')# Clears all colored marks in the text areadef actionClear(self):text = self.textEdit.toPlainText()self.textEdit.clear()self.textEdit.setText(text)def action1(self):cursor = QtWidgets.QTextEdit.textCursor(self.textEdit)# Setup the desired format for matchesformat = QtGui.QTextCharFormat()format.setBackground(QtGui.QBrush(self.color))# Setup the regex engine from inputpattern = self.lineTab2_input.text()regex = QtCore.QRegExp(pattern)# Process the displayed documentpos = 0self.positions = []index = regex.indexIn(self.textEdit.toPlainText(), pos)self.positions.append(index)counter = 0num = len(self.textEdit.toPlainText())self.progress = QtWidgets.QProgressDialog("Searching...", "Stop", 0, num,self.textEdit)self.progress.setWindowModality(QtCore.Qt.WindowModal)self.progress.setMinimumDuration(1)self.progress.wasCancelled = Falsewhile (index != -1):394# Select the matched text and apply the desired format + startingprogress barself.progress.setValue(index)if self.progress.wasCanceled():self.progress.wasCancelled = Truereturncursor.setPosition(index)cursor.setPosition(index + regex.matchedLength(),QtGui.QTextCursor.KeepAnchor)cursor.mergeCharFormat(format)# Move to the next matchpos = index + regex.matchedLength()index = regex.indexIn(self.textEdit.toPlainText(), pos)self.positions.append(index)counter += 1self.progress.deleteLater()self.logInfo('%d match(es) found' % counter)# Scroll down to the last occurence.
No, to the firstcursor.setPosition(self.positions[0])self.textEdit.setTextCursor(cursor)# Reduces text area to marked sentences onlydef actionRun(self):self.html = self.textEdit.toHtml()counter = 0#codecs.open('44.html', 'w', 'utf-8').write(self.html)self.arrHtml = self.html.splitlines()self.html = self.arrHtml[0] + '\n' + self.arrHtml[1] + '\n' +self.arrHtml[2] + '\n' + self.arrHtml[3] + '\n'self.html.replace('</body></html>', '') # Remove the closing tagsfor line in self.arrHtml:if 'background-color:' in line:# or '<br /></p>' in line:self.html += line + '''\n<p style="-qt-paragraph-type:empty;margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-blockindent:0; text-indent:0px;"><br /></p>\n'''counter += 1self.html += '</body></html>'#codecs.open('45.html', 'w', 'utf-8').write(self.html)self.textEdit.clear()self.textEdit.setText(self.html)self.logInfo('Reduced to %d item(s).' % counter)# Adds the current pattern to the pattern txt filedef actionPlus(self):if len(self.lineTab2_input.text()) > 5:file = open('patterns.txt', 'a', encoding='utf-8')file.write('\n%s' % self.lineTab2_input.text())# the file can be closed nowfile.close()# Read items from file 'patterns.txt'file = open('patterns.txt', 'r', encoding='utf-8')self.items = file.read().split('\n')[1:]# the file can be closed nowfile.close()# Put items into the comboboxself.comboBox2.clear()self.comboBox2.addItems(self.items)395self.logInfo('pattern %s added' % self.lineTab2_input.text())def chbPrefAct(self):if self.btnPref.isChecked():self.chbPref1.setEnabled(True)self.chbPref2.setEnabled(True)else:self.chbPref1.setEnabled(False)self.chbPref2.setEnabled(False)def chbPrepAct(self):if self.btnPrep.isChecked():self.chbPrep0.setEnabled(True)self.chbPrep1.setEnabled(True)self.chbPrep2.setEnabled(True)self.chbPrep3.setEnabled(True)else:self.chbPrep0.setEnabled(False)self.chbPrep1.setEnabled(False)self.chbPrep2.setEnabled(False)self.chbPrep3.setEnabled(False)def chbGenusAct(self):if self.btnGenus.isChecked():self.chbGen0.setEnabled(True)self.chbGen1.setEnabled(True)self.chbGen2.setEnabled(True)else:self.chbGen0.setEnabled(False)self.chbGen1.setEnabled(False)self.chbGen2.setEnabled(False)def chbZFAct(self):if self.btnZForm.isChecked():self.chbZeit0.setEnabled(True)self.chbZeit1.setEnabled(True)self.chbZeit2.setEnabled(True)self.chbZeit3.setEnabled(True)self.chbZeit4.setEnabled(True)self.chbZeit5.setEnabled(True)else:self.chbZeit0.setEnabled(False)self.chbZeit1.setEnabled(False)self.chbZeit2.setEnabled(False)self.chbZeit3.setEnabled(False)self.chbZeit4.setEnabled(False)self.chbZeit5.setEnabled(False)def chbArtAct(self):if self.btnArt.isChecked():self.chbArt0.setEnabled(True)self.chbArt1.setEnabled(True)self.chbArt2.setEnabled(True)else:self.chbArt0.setEnabled(False)396self.chbArt1.setEnabled(False)self.chbArt2.setEnabled(False)def rbSatzAct(self):if self.btnSatz.isChecked():self.rbSatz0.setEnabled(True)self.rbSatz1.setEnabled(True)self.rbSatz2.setEnabled(True)else:self.rbSatz0.setEnabled(False)self.rbSatz1.setEnabled(False)self.rbSatz2.setEnabled(False)def rbModusAct(self):if self.btnModus.isChecked():self.rbModus1.setEnabled(True)self.rbModus2.setEnabled(True)self.rbModus3.setEnabled(True)else:self.rbModus1.setEnabled(False)self.rbModus2.setEnabled(False)self.rbModus3.setEnabled(False)def chbAdjAct(self):if self.btnAdj.isChecked():self.chbAdj0.setEnabled(True)self.chbAdj1.setEnabled(True)self.chbAdj2.setEnabled(True)else:self.chbAdj0.setEnabled(False)self.chbAdj1.setEnabled(False)self.chbAdj2.setEnabled(False)def searchMain(self):# Chooses a book from the comboboxself.chosenBook = self.comboBox.itemText(self.comboBox.currentIndex())if self.chosenBook == "H.Böll.