def interpolate_color( start: QColor, end: QColor, percent: int, colorspace: typing.Optional[QColor.Spec] = QColor.Rgb ) -> QColor: """Get an interpolated color value. Args: start: The start color. end: The end color. percent: Which value to get (0 - 100) colorspace: The desired interpolation color system, QColor::{Rgb,Hsv,Hsl} (from QColor::Spec enum) If None, start is used except when percent is 100. Return: The interpolated QColor, with the same spec as the given start color. """ qtutils.ensure_valid(start) qtutils.ensure_valid(end) if colorspace is None: if percent == 100: return QColor(*end.getRgb()) else: return QColor(*start.getRgb()) out = QColor() if colorspace == QColor.Rgb: a_c1, a_c2, a_c3, _alpha = start.getRgb() b_c1, b_c2, b_c3, _alpha = end.getRgb() components = _get_color_percentage(a_c1, a_c2, a_c3, b_c1, b_c2, b_c3, percent) out.setRgb(*components) elif colorspace == QColor.Hsv: a_c1, a_c2, a_c3, _alpha = start.getHsv() b_c1, b_c2, b_c3, _alpha = end.getHsv() components = _get_color_percentage(a_c1, a_c2, a_c3, b_c1, b_c2, b_c3, percent) out.setHsv(*components) elif colorspace == QColor.Hsl: a_c1, a_c2, a_c3, _alpha = start.getHsl() b_c1, b_c2, b_c3, _alpha = end.getHsl() components = _get_color_percentage(a_c1, a_c2, a_c3, b_c1, b_c2, b_c3, percent) out.setHsl(*components) else: raise ValueError("Invalid colorspace!") out = out.convertTo(start.spec()) qtutils.ensure_valid(out) return out
def interpolate_color( start: QColor, end: QColor, percent: int, colorspace: Optional[QColor.Spec] = QColor.Rgb) -> QColor: """Get an interpolated color value. Args: start: The start color. end: The end color. percent: Which value to get (0 - 100) colorspace: The desired interpolation color system, QColor::{Rgb,Hsv,Hsl} (from QColor::Spec enum) If None, start is used except when percent is 100. Return: The interpolated QColor, with the same spec as the given start color. """ ensure_valid(start) ensure_valid(end) if colorspace is None: if percent == 100: return QColor(*end.getRgb()) else: return QColor(*start.getRgb()) out = QColor() if colorspace == QColor.Rgb: r1, g1, b1, a1 = start.getRgb() r2, g2, b2, a2 = end.getRgb() components = _get_color_percentage(r1, g1, b1, a1, r2, g2, b2, a2, percent) out.setRgb(*components) elif colorspace == QColor.Hsv: h1, s1, v1, a1 = start.getHsv() h2, s2, v2, a2 = end.getHsv() components = _get_color_percentage(h1, s1, v1, a1, h2, s2, v2, a2, percent) out.setHsv(*components) elif colorspace == QColor.Hsl: h1, s1, l1, a1 = start.getHsl() h2, s2, l2, a2 = end.getHsl() components = _get_color_percentage(h1, s1, l1, a1, h2, s2, l2, a2, percent) out.setHsl(*components) else: raise ValueError("Invalid colorspace!") out = out.convertTo(start.spec()) ensure_valid(out) return out
def seqInit(self): """ Sequences are stored as double layer arrays of each character. First layer is SEQUENCE Second layer is SEQUENCE POSITION Third layer is RESIDUE and COLOR so self.seq = [SEQ = [Position = [HTML Char/Color, ResID, Dssp], ... ], ... ] """ self.splitSeqs = [] self.splitNames = [] self.maxname = 0 consv = True if self.theme == themes.Conservation().theme else False comments = True if self.theme == themes.Comments().theme else False for seq in self._seqs.values(): if len(seq) > self.maxlen: self.maxlen = len(seq) for name, seq in self._seqs.items(): self.splitNames.append(name) if len(name) > self.maxname: self.maxname = len(name) if len(seq) < self.maxlen: for n in range(self.maxlen - len(seq)): seq.append(" ") local = [] count = 0 for i in range(self.maxlen): char = seq[i] if char not in ["-", " "]: color = None count += 1 tcount = count dssp = None if not consv: #print("Consv theme is off, skipping alt colors") color = self.theme[char] #print("DEFAULTING %s to %s" % (char, color.name())) if self.consvColors and self.refseq is not None: ref = list(self._seqs.values())[self.refseq][i] compare = utilities.checkConservation(char, ref) if compare is not None: # print(compare) if compare > 10: color = QColor(Qt.white) else: color = QColor(Qt.white) del compare elif consv: #print("Consv theme iS ON", i) if self.consvColors and self.refseq is not None: ref = list(self._seqs.values())[self.refseq][i] compare = utilities.checkConservation(char, ref) if compare is not None and compare <= len( self.theme): # print(compare) color = self.theme[compare] else: color = QColor(Qt.white) del compare if comments: if i in self.comments.keys(): color = QColor(Qt.yellow) if not color: color = QColor(Qt.white) #print(color.name()) tcolor = str(self.palette().color(self.alignPane.backgroundRole()).name()) if \ color.getHsl()[2] / 255 * 100 <= 50 else '#000000' #print("tColor is %s" % tcolor) char = '<span style=\"background-color: %s; color: %s\">%s</span>' % ( color.name(), tcolor, char) #print('char is now %s' % char) if self.dssps: index = list(self._seqs.values()).index(seq) try: # print("adding dssp") dssp = self.dssps[index][tcount] except KeyError: dssp = '-' del index else: dssp = None else: char = '<span style=\"background-color:#FFFFFF;\">' + seq[ i] + "</span>" tcount = 0 dssp = "-" local.append([char, tcount, dssp]) self.splitSeqs.append(local) del i, char, color, tcount, dssp self.alignPane.seqs = self.splitSeqs del consv, comments, seq, name, local, count
class ColourPallet2(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.col = QColor(0, 84, 154) red = QLabel('Red') green = QLabel('Green') blue = QLabel('Blue') hue = QLabel('Hue') saturation = QLabel('Saturation') luminace = QLabel('Luminace') self.redSlider = QSlider() self.redSlider.setSingleStep(1) self.redSlider.setMaximum(255) self.redSlider.valueChanged.connect(self.rgb1SlidersChanged) self.greenSlider = QSlider() self.greenSlider.setSingleStep(1) self.greenSlider.setMaximum(255) self.greenSlider.valueChanged.connect(self.rgb1SlidersChanged) self.blueSlider = QSlider() self.blueSlider.setSingleStep(1) self.blueSlider.setMaximum(255) self.blueSlider.valueChanged.connect(self.rgb1SlidersChanged) self.hueSlider = QSlider() self.hueSlider.setSingleStep(1) self.hueSlider.setMaximum(359) self.hueSlider.valueChanged.connect(self.hslSliderChanged) self.saturationSlider = QSlider() self.saturationSlider.setSingleStep(1) self.saturationSlider.setMaximum(255) self.saturationSlider.valueChanged.connect(self.hslSliderChanged) self.luminaceSlider = QSlider() self.luminaceSlider.setSingleStep(1) self.luminaceSlider.setMaximum(255) self.luminaceSlider.valueChanged.connect(self.hslSliderChanged) grid1 = QGridLayout() grid1.setHorizontalSpacing(10) grid1.setContentsMargins(0, 0, 0, 0) for i in range(6): grid1.setColumnStretch(i, 1) grid1.setColumnMinimumWidth(i, 50) grid1.setRowMinimumHeight(i, 10) grid1.addWidget(red, 0, 0, alignment=Qt.AlignCenter) grid1.addWidget(self.redSlider, 1, 0, alignment=Qt.AlignCenter) grid1.addWidget(green, 0, 1, alignment=Qt.AlignCenter) grid1.addWidget(self.greenSlider, 1, 1, alignment=Qt.AlignCenter) grid1.addWidget(blue, 0, 2, alignment=Qt.AlignCenter) grid1.addWidget(self.blueSlider, 1, 2, alignment=Qt.AlignCenter) grid1.addWidget(hue, 0, 3, alignment=Qt.AlignCenter) grid1.addWidget(self.hueSlider, 1, 3, alignment=Qt.AlignCenter) grid1.addWidget(saturation, 0, 4, alignment=Qt.AlignCenter) grid1.addWidget(self.saturationSlider, 1, 4, alignment=Qt.AlignCenter) grid1.addWidget(luminace, 0, 5, alignment=Qt.AlignCenter) grid1.addWidget(self.luminaceSlider, 1, 5, alignment=Qt.AlignCenter) rgb1_ = QLabel('rgb') rgb255_ = QLabel('RGB') hex_ = QLabel('Hex') hsl_ = QLabel('hsl') self.rgb1Edit = QLineEdit() self.rgb1Edit.editingFinished.connect(self.rg1EditChanged) self.rgb255Edit = QLineEdit() self.rgb255Edit.editingFinished.connect(self.rgb255EditChanged) self.hexEdit = QLineEdit() self.hexEdit.editingFinished.connect(self.hexEditChanged) self.hslEdit = QLineEdit() self.hslEdit.editingFinished.connect(self.hslEditChanged) grid2 = QGridLayout() grid2.setVerticalSpacing(2) grid2.setHorizontalSpacing(20) grid2.setContentsMargins(0, 0, 0, 0) grid2.addWidget(rgb1_, 0, 0) grid2.addWidget(rgb255_, 0, 1) grid2.addWidget(hex_, 0, 2) grid2.addWidget(hsl_, 0, 3) grid2.addWidget(self.rgb1Edit, 1, 0) grid2.addWidget(self.rgb255Edit, 1, 1) grid2.addWidget(self.hexEdit, 1, 2) grid2.addWidget(self.hslEdit, 1, 3) self.square = QFrame(self) self.square.setStyleSheet("QWidget { background-color: %s }" % self.col.name()) grid = QGridLayout() grid.addLayout(grid1, 0, 0) grid.addLayout(grid2, 1, 0) grid.addWidget(self.square, 2, 0) for i in (0, 2): grid.setRowStretch(i, 1) grid.setVerticalSpacing(10) self.setLayout(grid) self.setEverything() self.setGeometry(400, 400, 500, 400) self.setWindowTitle('Colour Pallet 2') self.show() def rg1EditChanged(self): rgb1 = ast.literal_eval(self.rgb1Edit.text()) rgb255 = [round(i * 255) for i in rgb1] self.col.setRgb(*rgb255) self.setEverything() def rgb255EditChanged(self): rgb255 = ast.literal_eval(self.rgb255Edit.text()) self.col.setRgb(*rgb255) self.setEverything() def hexEditChanged(self): self.col.setNamedColor(self.hexEdit.text()) self.setEverything() def hslEditChanged(self): hsl = ast.literal_eval(self.hslEdit.text()) self.col.setHsl(*hsl) self.setEverything() def rgb1SlidersChanged(self): self.col.setRgb(self.redSlider.value(), self.greenSlider.value(), self.blueSlider.value()) self.setEverything() def hslSliderChanged(self): self.col.setHsl(self.hueSlider.value(), self.saturationSlider.value(), self.luminaceSlider.value()) self.setEverything() def setEverything(self): hsl = self.col.getHsl()[0:3] Hex = self.col.name() rgb255 = self.col.getRgb()[0:3] rgb1 = [i / 255 for i in rgb255][0:3] self.BlockSignals(True) self.hslEdit.setText(str(hsl)) self.hexEdit.setText(Hex) self.rgb255Edit.setText(str(rgb255)) self.rgb1Edit.setText(str(rgb1)) self.redSlider.setValue(rgb255[0]) self.greenSlider.setValue(rgb255[1]) self.blueSlider.setValue(rgb255[2]) self.hueSlider.setValue(hsl[0]) self.saturationSlider.setValue(hsl[1]) self.luminaceSlider.setValue(hsl[2]) self.square.setStyleSheet("QWidget { background-color: %s }" % self.col.name()) self.BlockSignals(False) def BlockSignals(self, state): self.hslEdit.blockSignals(state) self.hexEdit.blockSignals(state) self.rgb255Edit.blockSignals(state) self.rgb1Edit.blockSignals(state) self.redSlider.blockSignals(state) self.greenSlider.blockSignals(state) self.blueSlider.blockSignals(state) self.hueSlider.blockSignals(state) self.saturationSlider.blockSignals(state) self.luminaceSlider.blockSignals(state)
class MainApplication(QMainWindow, Ui_MainWindow): def __init__(self): super(MainApplication, self).__init__() # Load TextParser # self.textParser = TextParser() self.tag = None # Set up the user interface from Designer. self.setupUi(self) # connect Textedit buttons self.textEditApply.clicked.connect(self.applyAllText) self.textEditSave.clicked.connect(self.saveTextEdit) self.textEditApplyMarked.clicked.connect(self.applyChoosenText) self.spinBox.valueChanged.connect(self.setTextSize) self.setTextSize() self.fontComboBox.currentFontChanged.connect(self.setTextSize) # set default colors self.worstColor = QColor(173, 50, 31) self.neutralColor = QColor(255, 255, 255) self.bestColor = QColor(51, 71, 153) self.setWorstColorButton(self.worstColor) self.setNeutralColorButton(self.neutralColor) self.setBestColorButton(self.bestColor) # colorwidget self.colorDia = QColorDialog(self.neutralColor, self.centralwidget) # connect widget with buttons self.bestColorButton.clicked.connect(self.chooseBestColor) self.neutralColorButton.clicked.connect(self.chooseNeutralColor) self.worstColorButton.clicked.connect(self.chooseWorstColor) self.comboBox.currentIndexChanged.connect(self.changeColor) # open Buttons self.openButton_1.clicked.connect(self.open_text) self.openButton_2.clicked.connect(self.open_text) # progressBar self.progress = 0 self.progressBar.setValue(self.progress) self.progressBar_2.setValue(self.progress) self.progressBar_3.setValue(self.progress) self.progressBar.setVisible(False) self.progressBar_2.setVisible(False) self.progressBar_3.setVisible(False) # numWords self.numWords.setText("0") # numSent self.numSent.setText("0") # remove qttextWidget and setup own textwidget (detailview) self.verticalLayout.removeWidget(self.plainTextEdit) self.plainTextEdit.close() self.taggedTextWidget = MQTaggedTextWidget(self.centralwidget, self) self.taggedTextWidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.verticalLayout.addWidget(self.taggedTextWidget) self.verticalLayout.update() # remove qttextWidget and setup own textwidget (documentview) self.verticalLayout_3.removeWidget(self.plainTextEdit_2) self.plainTextEdit_2.close() self.taggedDocumentWidget = MQTaggedTextWidget(self.centralwidget, self) self.taggedDocumentWidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.gridLayout_9.addWidget(self.taggedDocumentWidget) self.gridLayout_9.update() # menue actions self.actionText_ffnen.triggered.connect(self.open_text) self.action_ber.triggered.connect(self.showAbout) self.actionDocumentView.triggered.connect(self.setActiveTabDocumentView) self.actionDetailView.triggered.connect(self.setActiveTabDetailView) self.actionChangeView.triggered.connect(self.changeView) self.actionSave.triggered.connect(self.saveTextEdit) self.actionEditorView.triggered.connect(self.setActiveTabEditorView) # initilize features self.kompVokIsActive = False self.wlengthIsActive = False self.nomIsActive = False self.slenghtIsActive = False self.kompSatzIsActive = False self.kompVokWeight = 0 self.wlengthWeight = 0 self.nomWeight = 0 self.slenghtWeight = 0 self.kompSatzWeight = 0 self.checkBoxKompVok.clicked.connect(self.updateFeatureWeights) self.checkBoxWortlaenge.clicked.connect(self.updateFeatureWeights) self.checkBoxSatzlaenge.clicked.connect(self.updateFeatureWeights) self.checkBoxNom.clicked.connect(self.updateFeatureWeights) self.checkBoxKompSatz.clicked.connect(self.updateFeatureWeights) self.sliderKompVok.actionTriggered.connect(self.updateFeatureWeights) self.sliderWortlaenge.actionTriggered.connect(self.updateFeatureWeights) self.sliderSatzlaenge.actionTriggered.connect(self.updateFeatureWeights) self.sliderKompSatz.actionTriggered.connect(self.updateFeatureWeights) self.sliderNom.actionTriggered.connect(self.updateFeatureWeights) # updating the css self.checkBoxKompVok.clicked.connect(self.sliderChanged) self.checkBoxWortlaenge.clicked.connect(self.sliderChanged) self.checkBoxSatzlaenge.clicked.connect(self.sliderChanged) self.checkBoxNom.clicked.connect(self.sliderChanged) self.checkBoxKompSatz.clicked.connect(self.sliderChanged) self.sliderKompVok.sliderReleased.connect(self.sliderChanged) self.sliderWortlaenge.sliderReleased.connect(self.sliderChanged) self.sliderSatzlaenge.sliderReleased.connect(self.sliderChanged) self.sliderKompSatz.sliderReleased.connect(self.sliderChanged) self.sliderNom.sliderReleased.connect(self.sliderChanged) self.setAllWeights(100) # fill colorBar self.colorBar.page().mainFrame().setScrollBarPolicy(QtCore.Qt.Vertical, QtCore.Qt.ScrollBarAlwaysOff) self.colorBar.page().mainFrame().setScrollBarPolicy(QtCore.Qt.Horizontal, QtCore.Qt.ScrollBarAlwaysOff) self.update_colorbar() # on click handling document self.jsbridge = JSBridge(self.taggedTextWidget, self.taggedDocumentWidget, self) self.taggedTextWidget.page().mainFrame().javaScriptWindowObjectCleared.connect(self.add_js_to_page) def add_js_to_page(self): self.taggedTextWidget.page().mainFrame().addToJavaScriptWindowObject("jsbridge", self.jsbridge) def update_colorbar(self): ViewGenerator.genterate_colorbar(self) self.colorBar.load(QtCore.QUrl('file:///'+os.getcwd()+"/generated_html/color_bar.html")) self.colorBar.reload() def show_data(self): self.taggedTextWidget.stop() self.taggedTextWidget.showData(self.tag) self.taggedDocumentWidget.stop() self.taggedDocumentWidget.showDataNoGeneration(self.tag) def finishOpen(self): self.openButton_1.setEnabled(True) self.openButton_2.setEnabled(True) self.actionText_ffnen.setEnabled(True) self.textEditApply.setEnabled(True) self.textEditApplyMarked.setEnabled(True) self.textEditSave.setEnabled(True) self.progressBar.setVisible(False) self.progressBar_2.setVisible(False) self.progressBar_3.setVisible(False) self.tag = self.tag[0].FinishedText self.show_data() self.updateNumSent(len(self.tag.Sentences)) self.updateNumWords(self.tag.WordCount) def updateWorkerInfo(self, value): self.updateProgressBar(value * 100.0) def open_text(self): # Show loading page self.taggedTextWidget.stop() self.taggedTextWidget.showLoading() self.taggedDocumentWidget.stop() self.taggedDocumentWidget.showLoading() dialog = QFileDialog(self) dialog.setNameFilters([self.tr('Text Files (*.txt)'), self.tr('All Files (*)')]) dialog.setDefaultSuffix('.txt') file_name = dialog.getOpenFileName(self, 'Open file') self.progressBar.setVisible(True) self.progressBar_2.setVisible(True) self.progressBar_3.setVisible(True) if file_name[0] != '': text = codecs.open(file_name[0], "r", "utf-8").read() # We need to create new TextWorker self.tag = (TextWorker(), QtCore.QThread()) # prompt for custom common words list msg = QMessageBox() question = "Do you want to choose a custom list of domain specific common words?" reply = msg.question(self, 'Message', question, msg.Yes, msg.No) if reply == msg.Yes: dialog = QFileDialog(self) dialog.setNameFilters([self.tr('Text Files (*.txt)'), self.tr('All Files (*)')]) dialog.setDefaultSuffix('.txt') file_name = dialog.getOpenFileName(self, 'Open file') self.tag[0].common_words_file = file_name[0] else: self.tag[0].common_words_file = "textparser/wordlist.txt" self.tag[0].TextToParse = text self.textEdit.setText(text) # Gray out all buttons self.openButton_1.setEnabled(False) self.openButton_2.setEnabled(False) self.actionText_ffnen.setEnabled(False) self.textEditApply.setEnabled(False) self.textEditApplyMarked.setEnabled(False) self.textEditSave.setEnabled(False) # Create Thread self.tag[1].objThread = QtCore.QThread() self.tag[0].moveToThread(self.tag[1]) self.tag[0].finished.connect(self.tag[1].quit) self.tag[0].updated.connect(self.updateWorkerInfo); # self.tag[0].finished.connect(self.finishOpen) self.tag[1].started.connect(self.tag[0].longRunning) self.tag[1].finished.connect(self.finishOpen) self.tag[1].start() def updateView(self): v = self.ViewSlider.sliderPosition() if v == 0: self.ActiveViewText.setText("Document") elif v == 1: self.ActiveViewText.setText("Words - Details") else: self.ActiveViewText.setText("No View available") def updateFeatureWeights(self): if self.checkBoxKompVok.isChecked(): self.checkBoxKompVok.setText(str(self.sliderKompVok.sliderPosition()) + "%") self.kompVokIsActive = True self.kompVokWeight = self.sliderKompVok.sliderPosition() else: self.checkBoxKompVok.setText("-") self.kompVokIsActive = False self.kompVokWeight = 0 if self.checkBoxKompSatz.isChecked(): self.checkBoxKompSatz.setText(str(self.sliderKompSatz.sliderPosition()) + "%") self.kompSatzIsActive = True self.kompSatzWeight = self.sliderKompSatz.sliderPosition() else: self.checkBoxKompSatz.setText("-") self.kompSatzIsActive = False self.kompSatzWeight = 0 if self.checkBoxNom.isChecked(): self.checkBoxNom.setText(str(self.sliderNom.sliderPosition()) + "%") self.nomIsActive = True self.nomWeight = self.sliderNom.sliderPosition() else: self.checkBoxNom.setText("-") self.nomIsActive = False self.nomWeight = 0 if self.checkBoxSatzlaenge.isChecked(): self.checkBoxSatzlaenge.setText(str(self.sliderSatzlaenge.sliderPosition()) + "%") self.slenghtIsActive = True self.slenghtWeight = self.sliderSatzlaenge.sliderPosition() else: self.checkBoxSatzlaenge.setText("-") self.slenghtIsActive = False self.slenghtWeight = 0 if self.checkBoxWortlaenge.isChecked(): self.checkBoxWortlaenge.setText(str(self.sliderWortlaenge.sliderPosition()) + "%") self.wlengthIsActive = True self.wlengthWeight = self.sliderWortlaenge.sliderPosition() else: self.checkBoxWortlaenge.setText("-") self.wlengthIsActive = False self.wlengthWeight = 0 def updateProgressBar(self, int_value): self.progressBar.setValue(int_value) self.progressBar_2.setValue(int_value) self.progressBar_3.setValue(int_value) def updateNumSent(self, int_value): self.numSent.setText(str(int_value)) def updateNumWords(self, int_value): self.numWords.setText(str(int_value)) def updateCorpora(self): self.activeCorporaIndex = self.CorporaBox.currentIndex() def setAllWeights(self, int_weight): if int_weight > 100 or int_weight < 0: int_weight = 0 self.checkBoxKompVok.setChecked(True) self.checkBoxWortlaenge.setChecked(True) self.checkBoxSatzlaenge.setChecked(True) self.checkBoxNom.setChecked(True) self.checkBoxKompSatz.setChecked(True) self.sliderKompVok.setValue(int_weight) self.sliderWortlaenge.setValue(int_weight) self.sliderSatzlaenge.setValue(int_weight) self.sliderKompSatz.setValue(int_weight) self.sliderNom.setValue(int_weight) self.updateFeatureWeights() def sliderChanged(self): if self.tag != None: self.taggedTextWidget.showDataNoWait(self.tag) def setActiveTabDocumentView(self): self.tabWidget.setCurrentIndex(1) def setActiveTabDetailView(self): self.tabWidget.setCurrentIndex(0) def setActiveTabEditorView(self): self.tabWidget.setCurrentIndex(2) def changeView(self): # print(self.tabWidget.currentIndex()) if self.tabWidget.currentIndex() == 0: self.tabWidget.setCurrentIndex(1) elif self.tabWidget.currentIndex() == 1: self.tabWidget.setCurrentIndex(2) elif self.tabWidget.currentIndex() == 2: self.tabWidget.setCurrentIndex(0) def showAbout(self): msg = QMessageBox() msg.setIcon(QMessageBox.Information) # msg.setTextFormat(QLabel.openExternalLinks); #this is what makes the links clickable msg.setText("Applied Visualization and Analysis of Multivariate Datasets - Text Visualization") msg.setInformativeText("Git repository: " + "https://github.com/Zarnosch/AVaAoMDTV") msg.setWindowTitle("About") msg.setDetailedText( "Version: " + "0.1.0" + "\n \n" + "This Project is done in the context of Applied Visualization and Analysis of Multivariate Datasets at the" "OVGU University." + "\n \n" + "This tool can load .txt files and shows the readability difficulty.") msg.setStandardButtons(QMessageBox.Ok) retval = msg.exec_() def setBestColorButton(self, color): r = str(color.red()) g = str(color.green()) b = str(color.blue()) self.bestColorButton.setStyleSheet( "background-color: rgb(" + r + ", " + g + ", " + b + "); border: 1px dashed black; padding: 2px;") # self.bestColorButton.setStyleSheet("border: 1px solid black") def setNeutralColorButton(self, color): r = str(color.red()) g = str(color.green()) b = str(color.blue()) self.neutralColorButton.setStyleSheet( "background-color: rgb(" + r + ", " + g + ", " + b + "); border: 1px dashed black; padding: 2px;") # self.neutralColorButton.setStyleSheet("border: 1px solid black") def setWorstColorButton(self, color): r = str(color.red()) g = str(color.green()) b = str(color.blue()) self.worstColorButton.setStyleSheet( "background-color: rgb(" + r + ", " + g + ", " + b + "); border: 1px dashed black; padding: 2px;") # self.worstColorButton.setStyleSheet("border: 1px solid black") def chooseWorstColor(self): self.worstColor = QColorDialog.getColor(self.worstColor) self.setWorstColorButton(self.worstColor) if self.tag != None: self.taggedTextWidget.showDataNoWait(self.tag) self.taggedDocumentWidget.showDateNoWaitDetails(self.tag) self.update_colorbar() def chooseNeutralColor(self): self.neutralColor = QColorDialog.getColor(self.neutralColor) self.setNeutralColorButton(self.neutralColor) if self.tag != None: self.taggedTextWidget.showDataNoWait(self.tag) self.taggedDocumentWidget.showDateNoWaitDetails(self.tag) self.update_colorbar() def chooseBestColor(self): self.bestColor = QColorDialog.getColor(self.bestColor) self.setBestColorButton(self.bestColor) if self.tag != None: self.taggedTextWidget.showDataNoWait(self.tag) self.taggedDocumentWidget.showDateNoWaitDetails(self.tag) self.update_colorbar() def getWorstColorHSL(self): return self.worstColor.getHsl() def getNeutralColorHSL(self): return self.neutralColor.getHsl() def getBestColorHSL(self): return self.bestColor.getHsl() def applyChoosenText(self): cursor = self.textEdit.textCursor() # cursor = QTextCursor() stext = cursor.selection() mtext = stext.toPlainText() self.applyTextEdit(mtext) def applyAllText(self): self.applyTextEdit(self.textEdit.toPlainText()) def applyTextEdit(self, text): # Show loading page self.taggedTextWidget.stop() self.taggedTextWidget.showLoading() self.progressBar.setVisible(True) self.progressBar_2.setVisible(True) self.progressBar_3.setVisible(True) self.taggedDocumentWidget.stop() self.taggedDocumentWidget.showLoading() # We need to create new TextWorker self.tag = (TextWorker(), QtCore.QThread()) # prompt for custom common words list msg = QMessageBox() question = "Do you want to choose a custom list of domain specific common words?" reply = msg.question(self, 'Message', question, msg.Yes, msg.No) if reply == msg.Yes: dialog = QFileDialog(self) dialog.setNameFilters([self.tr('Text Files (*.txt)'), self.tr('All Files (*)')]) dialog.setDefaultSuffix('.txt') file_name = dialog.getOpenFileName(self, 'Open file') self.tag[0].common_words_file = file_name[0] self.tag[0].TextToParse = text # self.textEdit.setText(text) # Gray out all buttons self.openButton_1.setEnabled(False) self.openButton_2.setEnabled(False) self.actionText_ffnen.setEnabled(False) self.textEditApply.setEnabled(False) self.textEditApplyMarked.setEnabled(False) self.textEditSave.setEnabled(False) # Create Thread self.tag[1].objThread = QtCore.QThread() self.tag[0].moveToThread(self.tag[1]) self.tag[0].finished.connect(self.tag[1].quit) self.tag[0].updated.connect(self.updateWorkerInfo); # self.tag[0].finished.connect(self.finishOpen) self.tag[1].started.connect(self.tag[0].longRunning) self.tag[1].finished.connect(self.finishOpen) self.tag[1].start() def saveTextEdit(self): filename = "" dialog = QFileDialog(self, 'Save File') dialog.setNameFilters([self.tr('Text Files (*.txt)'), self.tr('All Files (*)')]) dialog.setDefaultSuffix('.txt') filename = dialog.getSaveFileName() file = filename[0] if not file.endswith('.txt'): file += ".txt" f = open(file, 'w') filedata = self.textEdit.toPlainText() f.write(filedata) f.close() def setTextSize(self): self.textEdit.setAcceptRichText(True) font = self.fontComboBox.currentFont() font.setPixelSize(self.spinBox.value()) self.textEdit.setFont(font) def changeColor(self): if self.comboBox.currentIndex() == 0: self.setTemperatureScale() elif self.comboBox.currentIndex() == 1: self.setGreyScale() else : self.setRainbowScale() self.setBestColorButton(self.bestColor) self.setNeutralColorButton(self.neutralColor) self.setWorstColorButton(self.worstColor) if self.tag != None: self.taggedTextWidget.showDataNoWait(self.tag) self.taggedDocumentWidget.showDateNoWaitDetails(self.tag) self.update_colorbar() def setTemperatureScale(self): self.worstColor = QColor(173, 50, 31) self.neutralColor = QColor(255, 255, 255) self.bestColor = QColor(51, 71, 153) def setGreyScale(self): self.worstColor = QColor(50, 50, 50) self.neutralColor = QColor(102, 102, 102) self.bestColor = QColor(255, 255, 255) def setRainbowScale(self): self.worstColor = QColor(187, 34, 34) self.neutralColor = QColor(255, 215, 0) self.bestColor = QColor(50, 205, 50)