def on_bTest_clicked(self):
        """
        Private method to test the selected options.
        """
        if self.rColor.isChecked():
            if not self.eColor.currentText():
                QColorDialog.getColor()
            else:
                coStr = self.eColor.currentText()
                if coStr.startswith("#"):
                    coStr = "QColor('{0}')".format(coStr)
                else:
                    coStr = "QColor({0})".format(coStr)
                try:
                    exec(
                        "from PyQt5.QtCore import Qt;"
                        ' QColorDialog.getColor({0}, None, "{1}")'.format(coStr, self.eTitle.text())
                    )
                except:
                    E5MessageBox.critical(
                        self,
                        self.tr("QColorDialog Wizard Error"),
                        self.tr("""<p>The colour <b>{0}</b> is not valid.</p>""").format(coStr),
                    )

        elif self.rRGBA.isChecked():
            QColorDialog.getColor(
                QColor(self.sRed.value(), self.sGreen.value(), self.sBlue.value(), self.sAlpha.value()),
                None,
                self.eTitle.text(),
                QColorDialog.ColorDialogOptions(QColorDialog.ShowAlphaChannel),
            )
Пример #2
0
    def changeColor(self):
        # try:
        
        if self.sender() == self.colormode.ui.comboBoxFGColor:
            color_str = self.colormode.ui.comboBoxFGColor.currentText()
            if color_str == 'CUSTOM':
                color = _QColorDialog.getColor().getRgb()
                color = [round(color[0]/255,2), round(color[1]/255,2), round(color[2]/255,2)]

                self.data.colormap = color

            else:
                self.data.colormap = _mpl.colors.colorConverter.to_rgb(_mpl.colors.cnames[color_str])

        elif self.sender() == self.colormode.ui.comboBoxBGColor:
            bgcolor_str = self.colormode.ui.comboBoxBGColor.currentText()
            if bgcolor_str == 'CUSTOM':
                bgcolor = _QColorDialog.getColor().getRgb()
                bgcolor = [round(bgcolor[0]/255,2), round(bgcolor[1]/255,2), round(bgcolor[2]/255,2)]

                self.data.bgcolor = bgcolor

            else:
                self.data.bgcolor = _mpl.colors.colorConverter.to_rgb(_mpl.colors.cnames[bgcolor_str])
        
        self.createImg(img = self.data.image, xunits = self.data.xunits,
                                yunits = self.data.yunits,
                                extent = self.data.winextent)
        self.mpl.draw()
    def action(self):
        qt_color_old = QColor(self.value)
        qt_color = QColorDialog.getColor(qt_color_old)

        if qt_color.isValid():
            self.value = qt_color.name()
            self.app.refresh()
Пример #4
0
	def on_bgcolor_click(self):
		initial = self.input_bgcolor.text()
		color = QColorDialog.getColor(QColor(initial), self, "Choose background color")
		if color.isValid():
			
			self.input_bgcolor.setText(color.name())
			self.update_colors(fg_override=self.input_fgcolor.text(), bg_override=color.name())
Пример #5
0
    def doubleClicked(self, model_index):
        """Double click handler for the property table"""
        # Get data model and selection
        model = self.clip_properties_model.model

        row = model_index.row()
        selected_label = model.item(row, 0)
        self.selected_item = model.item(row, 1)

        if selected_label:
            property = selected_label.data()
            property_type = property[1]["type"]

            if property_type == "color":
                # Get current value of color
                red = property[1]["red"]["value"]
                green = property[1]["green"]["value"]
                blue = property[1]["blue"]["value"]

                # Show color dialog
                currentColor = QColor(red, green, blue)
                newColor = QColorDialog.getColor(currentColor)

                # Set the new color keyframe
                self.clip_properties_model.color_update(self.selected_item, newColor)
Пример #6
0
 def actionSetMoveLineColorSlot(self) -> None:
     # Inspector doesn't understand Qt's static methods
     # noinspection PyCallByClass,PyTypeChecker
     color = QColorDialog.getColor(self.moveLineColor, self,
                                   'Select new move line color')
     if QColor.isValid(color):
         self.moveLineColor = color
Пример #7
0
    def changeFColor(self):
        initial = QColor(*map(int, re.findall('\d{1,3}', self.fColor)))
        color = QColorDialog.getColor(initial, parent=self)

        if(color.isValid()):
            self.fColor = 'rgb' + str(color.getRgb())
            self.updatePreview()
Пример #8
0
    def _bbTableDoubleClicked(self, row, col):
        """
        This overrides the callback for table's double click
        set in the CustomWidget object.
        Apparently if there is an exception it falls back to
        the original callback... Not sure why this behaviour.
        NOTE: This is kind of nasty.
        :return: None
        """
        it = self.table.item(row, col).text()

        try:
            idx = int(it)   # decimal
            bb_path = self.ba.cache.bb_paths[idx]

            col = QColorDialog.getColor()
            if col.isValid():
                # IDA works with BGR (annoying)
                ida_color = misc.pyside_to_ida_color(col.name())
                misc.paint_basic_blocks(bb_path, ida_color)

            else:
                print '[x] Invalid QColor'

            return

        except IndexError:
            # Address value (does not contain [A-F]) is interpreted as index
            return

        except ValueError:
            # Address value (containing [A-F]) f***s up int()
            return
Пример #9
0
    def showDialog(self):

        col = QColorDialog.getColor()

        if col.isValid():
            self.frm.setStyleSheet("QWidget { background-color: %s }"
                % col.name())
Пример #10
0
 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()
Пример #11
0
 def bgColorDialog(self):
     """Open color dialog to pick a color.
     """
     color = QColorDialog.getColor()
     if color.isValid():
         self.bgColor = color
         common.setPickerColor(color, self.bgColorPicker)
Пример #12
0
 def savePointDistanceStyle(self):
     if self.sender().objectName() == 'btnFontColor':
         self.sender().fontColor = QColorDialog.getColor()
     self.setPointDistanceStyle()
     self.saveSettings('markerLabelFont', self.cmbFonts.currentText())
     self.saveSettings('markerLabelColor', self.btnFontColor.fontColor.name())
     self.saveSettings('markerLabelSize', self.cmbFontSizes.currentText())
Пример #13
0
 def colorSelected(self):
     color = QColorDialog.getColor(Qt.white, self)
     if not color.name() == "#000000":
         settings().setValue("Subtitle/color", color)
         settings().sync()
         self.color_button.setStyleSheet("QPushButton {border: 1px solid black; border-radius: 3px; \
                                     background-color: %s; }"%color.name())
         self.parent.settingsChanged.emit()
 def set_color_picker_value(self):
     color = self.color_temp
     r, g, b = Color.from_factor_to_rgb(color[0], color[1], color[2])
     q_color = QColor(r, g, b)
     new_color = QColorDialog.getColor(q_color)
     button = self.ui.pushButton_colorPicker
     self.color_temp = Color.from_rgb_to_factor(new_color.red(), new_color.green(), new_color.blue())
     button.setStyleSheet("background-color: rgb({},{},{})".format(new_color.red(), new_color.green(), new_color.blue()))
 def _pick_color(self, lineedit, btn):
     """Pick a color name using lineedit and button data."""
     color = QColorDialog.getColor(
         QColor(lineedit.text()), self,
         translations.TR_EDITOR_SCHEME_PICK_COLOR)
     if color.isValid():
         lineedit.setText(str(color.name()))
         self.apply_button_style(btn, color.name())
Пример #16
0
    def colorDialog(self):
        """Open color dialog to pick a color.
        """
        color = QColorDialog.getColor()

        if color.isValid():
            common.setPickerColor(color, self.colorPicker)
            self.updateClassifierParameters(color=color)
Пример #17
0
    def colorDialog(self):
        """Open color dialog to pick a color.
        """
        color = QColorDialog.getColor()

        if color.isValid():
            self.backgroundColor = color
            self.setPickerColor(color, self.colorPicker)
Пример #18
0
 def changeRulerColor(self, color):
     if color == len(self.colors) - 1:
         self.colors= deepcopy(self.defaultColors)
     else:
         co= QColorDialog.getColor(self.colors[color][0][1], self)
         if co.isValid():
             self.colors[color][0][1]= co
             self.repaint()
def _show_color_dialog(current_color, parent):
    dialog = QColorDialog()
    for idx, color in enumerate(DEFAULT_COLORS):
        dialog.setCustomColor(idx, color)

    current_color = dialog.getColor(current_color, parent, 'Select line color')
    if current_color.isValid():
        return current_color
Пример #20
0
 def change_color(self):
     self.color = QColorDialog.getColor()
     self.color_changer.setStyleSheet("background: %s" % self.color.name())
     self.top_y = 0
     self.left_x = 0
     self.width = self.size_w
     self.height = self.size_h
     self.repaint(self.left_x, self.top_y, self.width, self.height)
Пример #21
0
 def shadow_color_dialog(self):
     options = QColorDialog.ShowAlphaChannel
     color = QColorDialog.getColor(initial=self.shadow_color,
                                   parent=self,
                                   options=options)
     if not color.isValid():
         return
     self.shadow_color = color
     self.update_values()
Пример #22
0
 def __selectColor(self):
     """
     Private slot to select a new drawing color.
     """
     col = QColorDialog.getColor(self.__currentColor)
     col.setAlpha(self.__currentAlpha)
     
     if col.isValid():
         self.colorSelected.emit(col)
 def set_pen_color(self, label):
     color = QColorDialog.getColor()
     if color.isValid():
         self.pen = QPen(color, self.pen.width())
         label_palette = QPalette()
         label_palette.setColor(QPalette.WindowText, color)
         label.setPalette(label_palette)
         label.setText("Цвет линии " + color.name())
     self.update()
Пример #24
0
    def textColor(self):
        col = QColorDialog.getColor(self.textEdit.textColor(), self)
        if not col.isValid():
            return

        fmt = QTextCharFormat()
        fmt.setForeground(col)
        self.mergeFormatOnWordOrSelection(fmt)
        self.colorChanged(col)
 def set_faces_color(self, label):
     color = QColorDialog.getColor()
     if color.isValid():
         self.faces_color = color
         label_palette = QPalette()
         label_palette.setColor(QPalette.WindowText, color)
         label.setPalette(label_palette)
         label.setText("Цвет объекта " + color.name())
     self.update()
Пример #26
0
def nm_change_color_t():
	"""
	Open color picker and set chosen color to text (in content)
	"""
	global nm_color_t
	nm_qcolor_old = QColor(nm_color_t)
	nm_qcolor = QColorDialog.getColor(nm_qcolor_old)
	if nm_qcolor.isValid():
		nm_color_t = nm_qcolor.name()
		nm_refresh()
Пример #27
0
def nm_change_color_b():
	"""
	Open color picker and set chosen color to background (of content)
	"""
	global nm_color_b
	nm_qcolor_old = QColor(nm_color_b)
	nm_qcolor = QColorDialog.getColor(nm_qcolor_old)
	if nm_qcolor.isValid():
		nm_color_b = nm_qcolor.name()
		nm_refresh()
Пример #28
0
 def __selectColor(self, colorKey):
     """
     Private method to select a color.
     
     @param colorKey key of the color to select (string)
     """
     color = QColorDialog.getColor(QColor(self.colors[colorKey]))
     if color.isValid():
         self.colors[colorKey] = color.name()
         self.sample.setHtml(self.sampleText.format(self.colors))
Пример #29
0
    def _showImportTrace(self):
        """
        This is the GUI part of the PIN trace import functionality
        """
        self._console_output("Importing PIN trace information from file...")

        # Color for the basic blocks hit during the trace
        col = QColorDialog.getColor()
        if col.isValid():
            # IDA works with BGR (annoying)
            ida_color = misc.pyside_to_ida_color(col.name())
        else:
            # Probably closed the QColorDialog
            self._console_output("[!] Problem getting color for trace. Aborting.")
            return

        try:
            imported_info_dict = self.ie.ti.import_data(ida_color)
        except Exception as e:
            self._console_output("[!] Problem importing from file", err = True)
            self._console_output(traceback.format_exc(), err = True)
            return

        self.table.setColumnCount(5)
        self.table.setHorizontalHeaderLabels(
            ('Thread ID', 'From', 'To', 'From (name)', 'To (name)'))
        self.table_label.setText("Imported information from PIN trace")
        self.table.clearContents()
        self.table.setRowCount(0)

        # Fill with contents
        # TODO: This could be better in a QTree or maybe adding
        # a drop down menu to select the thread id...
        idx = 0
        for tid, call_list in imported_info_dict.iteritems():
            self._console_output("Processing Thread ID %d" % tid)

            for u_ea, v_ea in call_list:

                self.table.insertRow(idx)
                tid_item = QTableWidgetItem("%d" % tid)
                u_item = QTableWidgetItem("%x" % u_ea)
                u_item.setFlags(u_item.flags() ^ QtCore.Qt.ItemIsEditable)
                v_item = QTableWidgetItem("%x" % v_ea)
                v_item.setFlags(v_item.flags() ^ QtCore.Qt.ItemIsEditable)
                from_item = QTableWidgetItem(misc.get_function_name(u_ea))
                to_item = QTableWidgetItem(misc.get_function_name(v_ea))

                self.table.setItem(idx, 0, tid_item)
                self.table.setItem(idx, 1, u_item)
                self.table.setItem(idx, 2, v_item)
                self.table.setItem(idx, 3, from_item)
                self.table.setItem(idx, 4, to_item)

                idx += 1
Пример #30
0
 def __selectColourSlot(self):
     """
     Private slot to select a color.
     """
     button = self.sender()
     colorKey = button.property("colorKey")
     hasAlpha = button.property("hasAlpha")
     
     if hasAlpha:
         colour = QColorDialog.getColor(
             self.__coloursDict[colorKey][0], None, "",
             QColorDialog.ShowAlphaChannel)
     else:
         colour = QColorDialog.getColor(self.__coloursDict[colorKey][0])
     if colour.isValid():
         size = button.iconSize()
         pm = QPixmap(size.width(), size.height())
         pm.fill(colour)
         button.setIcon(QIcon(pm))
         self.__coloursDict[colorKey][0] = colour
Пример #31
0
 def on_region_color_select(self):
     bgr = self.viewport_object.bgr
     default_color = QColor(bgr[2], bgr[1], bgr[0])
     color = QColorDialog.getColor(default_color)
     self.viewport_object.bgr = (color.blue(), color.green(), color.red())
     self.set_new_vp()
Пример #32
0
    def colorDialog(self):

        font = QColorDialog.getColor()
        self.textEdit.setTextColor(font)
Пример #33
0
 def colorDialog(self):
     color = QColorDialog.getColor()
     self.textEdit.setTextColor(color)
Пример #34
0
 def choose_color(self):
     color = QColorDialog.getColor(self._color, self.parentWidget())
     if color.isValid():
         self.set_color(color)
Пример #35
0
 def pick_color(self):
     self.color = QColorDialog.getColor(options=QColorDialog.DontUseNativeDialog)
     self.setStyleSheet('background-color: {}'.format(self.color.name()))
     self.name = self.color.name()
 def selectColor(self):
     color = QColorDialog.getColor()
     self.updateDrawColor(color)
     self.ui.imageWidget.setDrawColor(color)
Пример #37
0
 def button_click(self):
     c = QColorDialog.getColor()
     if c is not None and c.isValid():
         print("color chosen", c.name())
         self.color = c
         self.icon.setStyleSheet("background-color: " + c.name())
Пример #38
0
 def color_picker(self):
     color = QColorDialog.getColor()
     self.styleChoice.setStyleSheet("QWidget { background-color: %s}" %
                                    color.name())
Пример #39
0
 def pickColor(self):
     newColor = QColorDialog.getColor(self.mColor, self)
     if (newColor.isValid()):
         self.setColor(newColor)
 def get_color(self):
     self.color = QColorDialog.getColor()  #returns a color object
     print(color)
Пример #41
0
 def bColor(self):
     # вызывается диалоговое окно, там пользователь выбирает цвет и если он выбран без ошибок устанавливается для кисточки
     col = QColorDialog.getColor()
     if col.isValid():
         self.brushColor = col
Пример #42
0
def get_color(parent: QWidget = None, rgba: list = None) -> QColor:
    color = QColorDialog.getColor(QColor(*rgba), parent, "Choose a Color",
                                  QColorDialog.ShowAlphaChannel)
    return color if color.isValid() else QColor(*rgba)
Пример #43
0
 def getColor(self):
     color = QColorDialog.getColor(Qt.black, self)
     if color.isValid():
         self.color = color
         self.setColor()
Пример #44
0
 def penColor(self):
     newColor = QColorDialog.getColor(self.scribbleArea.penColor())
     if newColor.isValid():
         self.scribbleArea.setPenColor(newColor)
 def get_color(self):
     color = QColorDialog.getColor()
Пример #46
0
    def showDialog(self):
        col = QColorDialog.getColor()

        if col.isValid():
            self.frm.setStyleSheet("QWidget { background-color: %s }"
                                   % col.name())
Пример #47
0
""" Ejemplo de uso de QColorDialog.
"""

# PyQt5 Modules
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QColorDialog

# Python Modules

if __name__ == "__main__":
    # Tipica creacion de la aplicacion que crea un contexto (eventos del sistema)
    app = QApplication([])

    # Podemos usar la forma de ejecucion a traves de sus metodos estaticos
    # es importante que lo que devuelve es un QColor... pero se puede leer
    # sus atributos directamente sin problemas
    color = QColorDialog.getColor()
    print("Elegiste el color: {}".format(color.getRgb()))

    # Ejecucion del loop para eventos
    app.exec()
Пример #48
0
class settingsWindow(QWidget, Ui_Settings):
    def __init__(self, mainWindow):
        QWidget.__init__(self)
        self.setupUi(self)
        self.mw = mainWindow

        # UI
        for i in range(self.lstMenu.count()):
            item = self.lstMenu.item(i)
            item.setSizeHint(QSize(item.sizeHint().width(), 42))
            item.setTextAlignment(Qt.AlignCenter)
        self.lstMenu.setMaximumWidth(150)

        # General
        self.cmbStyle.addItems(list(QStyleFactory.keys()))
        self.cmbStyle.setCurrentIndex([
            i.lower() for i in list(QStyleFactory.keys())
        ].index(qApp.style().objectName()))
        self.cmbStyle.currentIndexChanged[str].connect(self.setStyle)

        self.cmbTranslation.clear()
        tr = OrderedDict()
        tr["English"] = ""
        tr["Français"] = "manuskript_fr.qm"
        tr["Español"] = "manuskript_es.qm"

        for name in tr:
            self.cmbTranslation.addItem(name, tr[name])

        sttgs = QSettings(qApp.organizationName(), qApp.applicationName())
        if sttgs.contains("applicationTranslation") and sttgs.value(
                "applicationTranslation") in tr.values():
            self.cmbTranslation.setCurrentText([
                i for i in tr if tr[i] == sttgs.value("applicationTranslation")
            ][0])

        self.cmbTranslation.currentIndexChanged.connect(self.setTranslation)

        self.txtAutoSave.setValidator(QIntValidator(0, 999, self))
        self.txtAutoSaveNoChanges.setValidator(QIntValidator(0, 999, self))
        self.chkAutoSave.setChecked(settings.autoSave)
        self.chkAutoSaveNoChanges.setChecked(settings.autoSaveNoChanges)
        self.txtAutoSave.setText(str(settings.autoSaveDelay))
        self.txtAutoSaveNoChanges.setText(str(settings.autoSaveNoChangesDelay))
        self.chkSaveOnQuit.setChecked(settings.saveOnQuit)
        self.chkSaveToZip.setChecked(settings.saveToZip)
        self.chkAutoSave.stateChanged.connect(self.saveSettingsChanged)
        self.chkAutoSaveNoChanges.stateChanged.connect(
            self.saveSettingsChanged)
        self.chkSaveOnQuit.stateChanged.connect(self.saveSettingsChanged)
        self.chkSaveToZip.stateChanged.connect(self.saveSettingsChanged)
        self.txtAutoSave.textEdited.connect(self.saveSettingsChanged)
        self.txtAutoSaveNoChanges.textEdited.connect(self.saveSettingsChanged)
        autoLoad, last = self.mw.welcome.getAutoLoadValues()
        self.chkAutoLoad.setChecked(autoLoad)
        self.chkAutoLoad.stateChanged.connect(self.saveSettingsChanged)

        # Revisions
        opt = settings.revisions
        self.chkRevisionsKeep.setChecked(opt["keep"])
        self.chkRevisionsKeep.stateChanged.connect(
            self.revisionsSettingsChanged)
        self.chkRevisionRemove.setChecked(opt["smartremove"])
        self.chkRevisionRemove.toggled.connect(self.revisionsSettingsChanged)
        self.spnRevisions10Mn.setValue(60 / opt["rules"][10 * 60])
        self.spnRevisions10Mn.valueChanged.connect(
            self.revisionsSettingsChanged)
        self.spnRevisionsHour.setValue(60 * 10 / opt["rules"][60 * 60])
        self.spnRevisionsHour.valueChanged.connect(
            self.revisionsSettingsChanged)
        self.spnRevisionsDay.setValue(60 * 60 / opt["rules"][60 * 60 * 24])
        self.spnRevisionsDay.valueChanged.connect(
            self.revisionsSettingsChanged)
        self.spnRevisionsMonth.setValue(60 * 60 * 24 /
                                        opt["rules"][60 * 60 * 24 * 30])
        self.spnRevisionsMonth.valueChanged.connect(
            self.revisionsSettingsChanged)
        self.spnRevisionsEternity.setValue(60 * 60 * 24 * 7 /
                                           opt["rules"][None])
        self.spnRevisionsEternity.valueChanged.connect(
            self.revisionsSettingsChanged)

        # Views
        self.tabViews.setCurrentIndex(0)
        lst = ["Nothing", "POV", "Label", "Progress", "Compile"]
        for cmb in self.viewSettingsDatas():
            item, part = self.viewSettingsDatas()[cmb]
            cmb.setCurrentIndex(lst.index(settings.viewSettings[item][part]))
            cmb.currentIndexChanged.connect(self.viewSettingsChanged)

        for chk in self.outlineColumnsData():
            col = self.outlineColumnsData()[chk]
            chk.setChecked(col in settings.outlineViewColumns)
            chk.stateChanged.connect(self.outlineColumnsChanged)

        self.chkOutlinePOV.setVisible(
            settings.viewMode !=
            "simple")  #  Hides checkbox if non-fiction view mode

        for item, what, value in [
            (self.rdoTreeItemCount, "InfoFolder", "Count"),
            (self.rdoTreeWC, "InfoFolder", "WC"),
            (self.rdoTreeProgress, "InfoFolder", "Progress"),
            (self.rdoTreeSummary, "InfoFolder", "Summary"),
            (self.rdoTreeNothing, "InfoFolder", "Nothing"),
            (self.rdoTreeTextWC, "InfoText", "WC"),
            (self.rdoTreeTextProgress, "InfoText", "Progress"),
            (self.rdoTreeTextSummary, "InfoText", "Summary"),
            (self.rdoTreeTextNothing, "InfoText", "Nothing"),
        ]:
            item.setChecked(settings.viewSettings["Tree"][what] == value)
            item.toggled.connect(self.treeViewSettignsChanged)

        self.populatesCmbBackgrounds(self.cmbCorkImage)
        self.setCorkImageDefault()
        self.updateCorkColor()
        self.cmbCorkImage.currentIndexChanged.connect(self.setCorkBackground)
        self.btnCorkColor.clicked.connect(self.setCorkColor)

        # Text editor
        opt = settings.textEditor
        self.setButtonColor(self.btnEditorFontColor, opt["fontColor"])
        self.btnEditorFontColor.clicked.connect(self.choseEditorFontColor)
        self.setButtonColor(self.btnEditorMisspelledColor, opt["misspelled"])
        self.btnEditorMisspelledColor.clicked.connect(
            self.choseEditorMisspelledColor)
        self.setButtonColor(self.btnEditorBackgroundColor, opt["background"])
        self.btnEditorBackgroundColor.clicked.connect(
            self.choseEditorBackgroundColor)
        f = QFont()
        f.fromString(opt["font"])
        self.cmbEditorFontFamily.setCurrentFont(f)
        self.cmbEditorFontFamily.currentFontChanged.connect(
            self.updateEditorSettings)
        self.spnEditorFontSize.setValue(f.pointSize())
        self.spnEditorFontSize.valueChanged.connect(self.updateEditorSettings)
        self.cmbEditorLineSpacing.setCurrentIndex(
            0 if opt["lineSpacing"] == 100 else 1 if opt["lineSpacing"] ==
            150 else 2 if opt["lineSpacing"] == 200 else 3)
        self.cmbEditorLineSpacing.currentIndexChanged.connect(
            self.updateEditorSettings)
        self.spnEditorLineSpacing.setValue(opt["lineSpacing"])
        self.spnEditorLineSpacing.valueChanged.connect(
            self.updateEditorSettings)
        self.spnEditorLineSpacing.setEnabled(
            opt["lineSpacing"] not in [100, 150, 200])
        self.spnEditorLineSpacing.valueChanged.connect(
            self.updateEditorSettings)
        self.spnEditorTabWidth.setValue(opt["tabWidth"])
        self.spnEditorTabWidth.valueChanged.connect(self.updateEditorSettings)
        self.chkEditorIndent.setChecked(opt["indent"])
        self.chkEditorIndent.stateChanged.connect(self.updateEditorSettings)
        self.spnEditorParaAbove.setValue(opt["spacingAbove"])
        self.spnEditorParaAbove.valueChanged.connect(self.updateEditorSettings)
        self.spnEditorParaBelow.setValue(opt["spacingBelow"])
        self.spnEditorParaAbove.valueChanged.connect(self.updateEditorSettings)

        # Labels
        self.lstLabels.setModel(self.mw.mdlLabels)
        self.lstLabels.setRowHidden(0, True)
        self.lstLabels.clicked.connect(self.updateLabelColor)
        self.btnLabelAdd.clicked.connect(self.addLabel)
        self.btnLabelRemove.clicked.connect(self.removeLabel)
        self.btnLabelColor.clicked.connect(self.setLabelColor)

        # Statuses
        self.lstStatus.setModel(self.mw.mdlStatus)
        self.lstStatus.setRowHidden(0, True)
        self.btnStatusAdd.clicked.connect(self.addStatus)
        self.btnStatusRemove.clicked.connect(self.removeStatus)

        # Fullscreen
        self._editingTheme = None
        self.btnThemeEditOK.setIcon(qApp.style().standardIcon(
            QStyle.SP_DialogApplyButton))
        self.btnThemeEditOK.clicked.connect(self.saveTheme)
        self.btnThemeEditCancel.setIcon(qApp.style().standardIcon(
            QStyle.SP_DialogCancelButton))
        self.btnThemeEditCancel.clicked.connect(self.cancelEdit)
        self.cmbThemeEdit.currentIndexChanged.connect(
            self.themeEditStack.setCurrentIndex)
        self.cmbThemeEdit.setCurrentIndex(0)
        self.cmbThemeEdit.currentIndexChanged.emit(0)
        self.themeStack.setCurrentIndex(0)
        self.lstThemes.currentItemChanged.connect(self.themeSelected)
        self.populatesThemesList()
        self.btnThemeAdd.clicked.connect(self.newTheme)
        self.btnThemeEdit.clicked.connect(self.editTheme)
        self.btnThemeRemove.clicked.connect(self.removeTheme)

    def setTab(self, tab):

        tabs = {
            "General": 0,
            "Views": 1,
            "Labels": 2,
            "Status": 3,
            "Fullscreen": 4,
        }

        if tab in tabs:
            self.lstMenu.setCurrentRow(tabs[tab])
        else:
            self.lstMenu.setCurrentRow(tab)

    ####################################################################################################
    #                                           GENERAL                                                #
    ####################################################################################################

    def setStyle(self, style):
        # Save style to Qt Settings
        sttgs = QSettings(qApp.organizationName(), qApp.applicationName())
        sttgs.setValue("applicationStyle", style)
        qApp.setStyle(style)

    def setTranslation(self, index):
        path = self.cmbTranslation.currentData()
        # Save settings
        sttgs = QSettings(qApp.organizationName(), qApp.applicationName())
        sttgs.setValue("applicationTranslation", path)

        # QMessageBox.information(self, "Warning", "You'll have to restart manuskript.")

    def saveSettingsChanged(self):
        if self.txtAutoSave.text() in ["", "0"]:
            self.txtAutoSave.setText("1")
        if self.txtAutoSaveNoChanges.text() in ["", "0"]:
            self.txtAutoSaveNoChanges.setText("1")

        sttgs = QSettings()
        sttgs.setValue("autoLoad",
                       True if self.chkAutoLoad.checkState() else False)
        sttgs.sync()

        settings.autoSave = True if self.chkAutoSave.checkState() else False
        settings.autoSaveNoChanges = True if self.chkAutoSaveNoChanges.checkState(
        ) else False
        settings.saveOnQuit = True if self.chkSaveOnQuit.checkState(
        ) else False
        settings.saveToZip = True if self.chkSaveToZip.checkState() else False
        settings.autoSaveDelay = int(self.txtAutoSave.text())
        settings.autoSaveNoChangesDelay = int(self.txtAutoSaveNoChanges.text())
        self.mw.saveTimer.setInterval(settings.autoSaveDelay * 60 * 1000)
        self.mw.saveTimerNoChanges.setInterval(
            settings.autoSaveNoChangesDelay * 1000)

    ####################################################################################################
    #                                           REVISION                                               #
    ####################################################################################################

    def revisionsSettingsChanged(self):
        opt = settings.revisions
        opt["keep"] = True if self.chkRevisionsKeep.checkState() else False
        opt["smartremove"] = self.chkRevisionRemove.isChecked()
        opt["rules"][10 * 60] = 60 / self.spnRevisions10Mn.value()
        opt["rules"][60 * 60] = 60 * 10 / self.spnRevisionsHour.value()
        opt["rules"][60 * 60 * 24] = 60 * 60 / self.spnRevisionsDay.value()
        opt["rules"][60 * 60 * 24 *
                     30] = 60 * 60 * 24 / self.spnRevisionsMonth.value()
        opt["rules"][
            None] = 60 * 60 * 24 * 7 / self.spnRevisionsEternity.value()

    ####################################################################################################
    #                                           VIEWS                                                  #
    ####################################################################################################

    def viewSettingsDatas(self):
        return {
            self.cmbTreeIcon: ("Tree", "Icon"),
            self.cmbTreeText: ("Tree", "Text"),
            self.cmbTreeBackground: ("Tree", "Background"),
            self.cmbOutlineIcon: ("Outline", "Icon"),
            self.cmbOutlineText: ("Outline", "Text"),
            self.cmbOutlineBackground: ("Outline", "Background"),
            self.cmbCorkIcon: ("Cork", "Icon"),
            self.cmbCorkText: ("Cork", "Text"),
            self.cmbCorkBackground: ("Cork", "Background"),
            self.cmbCorkBorder: ("Cork", "Border"),
            self.cmbCorkCorner: ("Cork", "Corner")
        }

    def viewSettingsChanged(self):
        cmb = self.sender()
        lst = ["Nothing", "POV", "Label", "Progress", "Compile"]
        item, part = self.viewSettingsDatas()[cmb]
        element = lst[cmb.currentIndex()]
        self.mw.setViewSettings(item, part, element)
        self.mw.generateViewMenu()

    def outlineColumnsData(self):
        return {
            self.chkOutlineTitle: Outline.title.value,
            self.chkOutlinePOV: Outline.POV.value,
            self.chkOutlineLabel: Outline.label.value,
            self.chkOutlineStatus: Outline.status.value,
            self.chkOutlineCompile: Outline.compile.value,
            self.chkOutlineWordCount: Outline.wordCount.value,
            self.chkOutlineGoal: Outline.goal.value,
            self.chkOutlinePercentage: Outline.goalPercentage.value,
        }

    def outlineColumnsChanged(self):
        chk = self.sender()
        val = True if chk.checkState() else False
        col = self.outlineColumnsData()[chk]
        if val and not col in settings.outlineViewColumns:
            settings.outlineViewColumns.append(col)
        elif not val and col in settings.outlineViewColumns:
            settings.outlineViewColumns.remove(col)

        # Update views
        for w in findWidgetsOfClass(outlineView):
            w.hideColumns()

    def treeViewSettignsChanged(self):
        for item, what, value in [
            (self.rdoTreeItemCount, "InfoFolder", "Count"),
            (self.rdoTreeWC, "InfoFolder", "WC"),
            (self.rdoTreeProgress, "InfoFolder", "Progress"),
            (self.rdoTreeSummary, "InfoFolder", "Summary"),
            (self.rdoTreeNothing, "InfoFolder", "Nothing"),
            (self.rdoTreeTextWC, "InfoText", "WC"),
            (self.rdoTreeTextProgress, "InfoText", "Progress"),
            (self.rdoTreeTextSummary, "InfoText", "Summary"),
            (self.rdoTreeTextNothing, "InfoText", "Nothing"),
        ]:
            if item.isChecked():
                settings.viewSettings["Tree"][what] = value

        self.mw.treeRedacOutline.viewport().update()

    def setCorkColor(self):
        color = QColor(settings.corkBackground["color"])
        self.colorDialog = QColorDialog(color, self)
        color = self.colorDialog.getColor(color)
        if color.isValid():
            settings.corkBackground["color"] = color.name()
            self.updateCorkColor()
            # Update Cork view
            self.mw.mainEditor.updateCorkBackground()

    def updateCorkColor(self):
        self.btnCorkColor.setStyleSheet("background:{};".format(
            settings.corkBackground["color"]))

    def setCorkBackground(self, i):
        img = self.cmbCorkImage.itemData(i)
        img = os.path.basename(img)
        if img:
            settings.corkBackground["image"] = img
        else:
            settings.corkBackground["image"] = ""
        # Update Cork view
        self.mw.mainEditor.updateCorkBackground()

    def populatesCmbBackgrounds(self, cmb):
        # self.cmbDelegate = cmbPixmapDelegate()
        # self.cmbCorkImage.setItemDelegate(self.cmbDelegate)

        paths = allPaths("resources/backgrounds")
        cmb.clear()
        cmb.addItem(QIcon.fromTheme("list-remove"), "", "")
        for p in paths:
            lst = os.listdir(p)
            for l in lst:
                if l.lower()[-4:] in [".jpg", ".png"] or \
                                l.lower()[-5:] in [".jpeg"]:
                    px = QPixmap(os.path.join(p, l)).scaled(
                        128, 64, Qt.KeepAspectRatio)
                    cmb.addItem(QIcon(px), "", os.path.join(p, l))

        cmb.setIconSize(QSize(128, 64))

    def setCorkImageDefault(self):
        if settings.corkBackground["image"] != "":
            i = self.cmbCorkImage.findData(settings.corkBackground["image"])
            if i != -1:
                self.cmbCorkImage.setCurrentIndex(i)

            ####################################################################################################
            # VIEWS / EDITOR
            ####################################################################################################

    def updateEditorSettings(self):
        # Store settings
        f = self.cmbEditorFontFamily.currentFont()
        f.setPointSize(self.spnEditorFontSize.value())
        settings.textEditor["font"] = f.toString()
        settings.textEditor["lineSpacing"] = \
            100 if self.cmbEditorLineSpacing.currentIndex() == 0 else \
            150 if self.cmbEditorLineSpacing.currentIndex() == 1 else \
            200 if self.cmbEditorLineSpacing.currentIndex() == 2 else \
            self.spnEditorLineSpacing.value()
        self.spnEditorLineSpacing.setEnabled(
            self.cmbEditorLineSpacing.currentIndex() == 3)
        settings.textEditor["tabWidth"] = self.spnEditorTabWidth.value()
        settings.textEditor[
            "indent"] = True if self.chkEditorIndent.checkState() else False
        settings.textEditor["spacingAbove"] = self.spnEditorParaAbove.value()
        settings.textEditor["spacingBelow"] = self.spnEditorParaBelow.value()

        # Update font and defaultBlockFormat to all textEditView. Drastically.
        for w in mainWindow().findChildren(textEditView, QRegExp(".*")):
            w.loadFontSettings()

    def choseEditorFontColor(self):
        color = settings.textEditor["fontColor"]
        self.colorDialog = QColorDialog(QColor(color), self)
        color = self.colorDialog.getColor(QColor(color))
        if color.isValid():
            settings.textEditor["fontColor"] = color.name()
            self.setButtonColor(self.btnEditorFontColor, color.name())
            self.updateEditorSettings()

    def choseEditorMisspelledColor(self):
        color = settings.textEditor["misspelled"]
        self.colorDialog = QColorDialog(QColor(color), self)
        color = self.colorDialog.getColor(QColor(color))
        if color.isValid():
            settings.textEditor["misspelled"] = color.name()
            self.setButtonColor(self.btnEditorMisspelledColor, color.name())
            self.updateEditorSettings()

    def choseEditorBackgroundColor(self):
        color = settings.textEditor["background"]
        self.colorDialog = QColorDialog(QColor(color), self)
        color = self.colorDialog.getColor(QColor(color))
        if color.isValid():
            settings.textEditor["background"] = color.name()
            self.setButtonColor(self.btnEditorBackgroundColor, color.name())
            self.updateEditorSettings()

        ####################################################################################################
        #                                           STATUS                                                 #
        ####################################################################################################

    def addStatus(self):
        self.mw.mdlStatus.appendRow(QStandardItem(self.tr("New status")))

    def removeStatus(self):
        for i in self.lstStatus.selectedIndexes():
            self.mw.mdlStatus.removeRows(i.row(), 1)

        ####################################################################################################
        #                                           LABELS                                                 #
        ####################################################################################################

    def updateLabelColor(self, index):
        # px = QPixmap(64, 64)
        # px.fill(iconColor(self.mw.mdlLabels.item(index.row()).icon()))
        # self.btnLabelColor.setIcon(QIcon(px))
        self.btnLabelColor.setStyleSheet("background:{};".format(
            iconColor(self.mw.mdlLabels.item(index.row()).icon()).name()))
        self.btnLabelColor.setEnabled(True)

    def addLabel(self):
        px = QPixmap(32, 32)
        px.fill(Qt.transparent)
        self.mw.mdlLabels.appendRow(
            QStandardItem(QIcon(px), self.tr("New label")))

    def removeLabel(self):
        for i in self.lstLabels.selectedIndexes():
            self.mw.mdlLabels.removeRows(i.row(), 1)

    def setLabelColor(self):
        index = self.lstLabels.currentIndex()
        color = iconColor(self.mw.mdlLabels.item(index.row()).icon())
        self.colorDialog = QColorDialog(color, self)
        color = self.colorDialog.getColor(color)
        if color.isValid():
            px = QPixmap(32, 32)
            px.fill(color)
            self.mw.mdlLabels.item(index.row()).setIcon(QIcon(px))
            self.updateLabelColor(index)

        ####################################################################################################
        #                                       FULLSCREEN                                                 #
        ####################################################################################################

    def themeSelected(self, current, previous):
        if current:
            # UI updates
            self.btnThemeEdit.setEnabled(current.data(Qt.UserRole + 1))
            self.btnThemeRemove.setEnabled(current.data(Qt.UserRole + 1))
            # Save settings
            theme = current.data(Qt.UserRole)
            settings.fullScreenTheme = os.path.splitext(
                os.path.split(theme)[1])[0]
        else:
            # UI updates
            self.btnThemeEdit.setEnabled(False)
            self.btnThemeRemove.setEnabled(False)

    def newTheme(self):
        path = writablePath("resources/themes")
        name = self.tr("newtheme")
        if os.path.exists(os.path.join(path, "{}.theme".format(name))):
            i = 1
            while os.path.exists(
                    os.path.join(path, "{}_{}.theme".format(name, i))):
                i += 1
            name = os.path.join(path, "{}_{}.theme".format(name, i))
        else:
            name = os.path.join(path, "{}.theme".format(name))

        settings = QSettings(name, QSettings.IniFormat)
        settings.setValue("Name", self.tr("New theme"))
        settings.sync()

        self.populatesThemesList()

    def editTheme(self):
        item = self.lstThemes.currentItem()
        theme = item.data(Qt.UserRole)
        self.loadTheme(theme)
        self.themeStack.setCurrentIndex(1)

    def removeTheme(self):
        item = self.lstThemes.currentItem()
        theme = item.data(Qt.UserRole)
        os.remove(theme)
        self.populatesThemesList()

    def populatesThemesList(self):
        paths = allPaths("resources/themes")
        current = settings.fullScreenTheme
        self.lstThemes.clear()

        for p in paths:
            lst = [
                i for i in os.listdir(p) if os.path.splitext(i)[1] == ".theme"
            ]
            for t in lst:
                theme = os.path.join(p, t)
                editable = not appPath() in theme
                n = getThemeName(theme)

                item = QListWidgetItem(n)
                item.setData(Qt.UserRole, theme)
                item.setData(Qt.UserRole + 1, editable)

                thumb = os.path.join(p, t.replace(".theme", ".jpg"))
                px = QPixmap(200, 120)
                px.fill(Qt.white)
                if not os.path.exists(thumb):
                    currentScreen = qApp.desktop().screenNumber(self)
                    screenRect = qApp.desktop().screenGeometry(currentScreen)
                    thumb = createThemePreview(theme, screenRect)

                icon = QPixmap(thumb).scaled(200, 120, Qt.KeepAspectRatio)
                painter = QPainter(px)
                painter.drawPixmap(px.rect().center() - icon.rect().center(),
                                   icon)
                painter.end()
                item.setIcon(QIcon(px))

                self.lstThemes.addItem(item)

                if current and current in t:
                    self.lstThemes.setCurrentItem(item)
                    current = None

        self.lstThemes.setIconSize(QSize(200, 120))

        if current:  # the theme from settings wasn't found
            # select the last from the list
            self.lstThemes.setCurrentRow(self.lstThemes.count() - 1)

    def loadTheme(self, theme):
        self._editingTheme = theme
        self._loadingTheme = True  # So we don't generate preview while loading

        # Load datas
        self._themeData = loadThemeDatas(theme)

        # Window Background
        self.btnThemWindowBackgroundColor.clicked.connect(
            lambda: self.getThemeColor("Background/Color"))
        try:
            self.cmbThemeBackgroundImage.disconnect()
        except:
            pass
        self.populatesCmbBackgrounds(self.cmbThemeBackgroundImage)
        self.cmbThemeBackgroundImage.currentIndexChanged.connect(
            self.updateThemeBackground)
        self.cmbThemBackgroundType.currentIndexChanged.connect(
            lambda i: self.setSetting("Background/Type", i))

        # Text Background
        self.btnThemeTextBackgroundColor.clicked.connect(
            lambda: self.getThemeColor("Foreground/Color"))
        self.spnThemeTextBackgroundOpacity.valueChanged.connect(
            lambda v: self.setSetting("Foreground/Opacity", v))
        self.spnThemeTextMargins.valueChanged.connect(
            lambda v: self.setSetting("Foreground/Margin", v))
        self.spnThemeTextPadding.valueChanged.connect(
            lambda v: self.setSetting("Foreground/Padding", v))
        self.cmbThemeTextPosition.currentIndexChanged.connect(
            lambda i: self.setSetting("Foreground/Position", i))
        self.spnThemeTextRadius.valueChanged.connect(
            lambda v: self.setSetting("Foreground/Rounding", v))
        self.spnThemeTextWidth.valueChanged.connect(
            lambda v: self.setSetting("Foreground/Width", v))

        # Text Options
        self.btnThemeTextColor.clicked.connect(
            lambda: self.getThemeColor("Text/Color"))
        self.cmbThemeFont.currentFontChanged.connect(self.updateThemeFont)
        try:
            self.cmbThemeFontSize.currentIndexChanged.disconnect(
                self.updateThemeFont)
        except:
            pass
        self.populatesFontSize()
        self.cmbThemeFontSize.currentIndexChanged.connect(self.updateThemeFont)
        self.btnThemeMisspelledColor.clicked.connect(
            lambda: self.getThemeColor("Text/Misspelled"))

        # Paragraph Options
        self.chkThemeIndent.stateChanged.connect(
            lambda v: self.setSetting("Spacings/IndendFirstLine", v != 0))
        self.cmbThemeLineSpacing.currentIndexChanged.connect(
            self.updateLineSpacing)
        self.cmbThemeLineSpacing.currentIndexChanged.connect(
            self.updateLineSpacing)
        self.spnThemeLineSpacing.valueChanged.connect(
            lambda v: self.setSetting("Spacings/LineSpacing", v))
        self.spnThemeParaAbove.valueChanged.connect(
            lambda v: self.setSetting("Spacings/ParagraphAbove", v))
        self.spnThemeParaBelow.valueChanged.connect(
            lambda v: self.setSetting("Spacings/ParagraphBelow", v))
        self.spnThemeTabWidth.valueChanged.connect(
            lambda v: self.setSetting("Spacings/TabWidth", v))

        # Update UI
        self.updateUIFromTheme()

        # Generate preview
        self._loadingTheme = False
        self.updatePreview()

    def setSetting(self, key, val):
        self._themeData[key] = val
        self.updatePreview()

    def updateUIFromTheme(self):
        self.txtThemeName.setText(self._themeData["Name"])

        # Window Background
        self.setButtonColor(self.btnThemWindowBackgroundColor,
                            self._themeData["Background/Color"])
        i = self.cmbThemeBackgroundImage.findData(
            self._themeData["Background/ImageFile"], flags=Qt.MatchContains)
        if i != -1:
            self.cmbThemeBackgroundImage.setCurrentIndex(i)
        self.cmbThemBackgroundType.setCurrentIndex(
            self._themeData["Background/Type"])

        # Text background
        self.setButtonColor(self.btnThemeTextBackgroundColor,
                            self._themeData["Foreground/Color"])
        self.spnThemeTextBackgroundOpacity.setValue(
            self._themeData["Foreground/Opacity"])
        self.spnThemeTextMargins.setValue(self._themeData["Foreground/Margin"])
        self.spnThemeTextPadding.setValue(
            self._themeData["Foreground/Padding"])
        self.cmbThemeTextPosition.setCurrentIndex(
            self._themeData["Foreground/Position"])
        self.spnThemeTextRadius.setValue(
            self._themeData["Foreground/Rounding"])
        self.spnThemeTextWidth.setValue(self._themeData["Foreground/Width"])

        # Text Options
        self.setButtonColor(self.btnThemeTextColor,
                            self._themeData["Text/Color"])
        f = QFont()
        f.fromString(self._themeData["Text/Font"])
        self.cmbThemeFont.setCurrentFont(f)
        i = self.cmbThemeFontSize.findText(str(f.pointSize()))
        if i != -1:
            self.cmbThemeFontSize.setCurrentIndex(i)
        else:
            self.cmbThemeFontSize.addItem(str(f.pointSize()))
            self.cmbThemeFontSize.setCurrentIndex(
                self.cmbThemeFontSize.count() - 1)
        self.setButtonColor(self.btnThemeMisspelledColor,
                            self._themeData["Text/Misspelled"])

        # Paragraph Options
        self.chkThemeIndent.setCheckState(
            Qt.Checked if self._themeData["Spacings/IndendFirstLine"] else Qt.
            Unchecked)
        self.spnThemeLineSpacing.setEnabled(False)
        if self._themeData["Spacings/LineSpacing"] == 100:
            self.cmbThemeLineSpacing.setCurrentIndex(0)
        elif self._themeData["Spacings/LineSpacing"] == 150:
            self.cmbThemeLineSpacing.setCurrentIndex(1)
        elif self._themeData["Spacings/LineSpacing"] == 200:
            self.cmbThemeLineSpacing.setCurrentIndex(2)
        else:
            self.cmbThemeLineSpacing.setCurrentIndex(3)
            self.spnThemeLineSpacing.setEnabled(True)
            self.spnThemeLineSpacing.setValue(
                self._themeData["Spacings/LineSpacing"])
        self.spnThemeParaAbove.setValue(
            self._themeData["Spacings/ParagraphAbove"])
        self.spnThemeParaBelow.setValue(
            self._themeData["Spacings/ParagraphBelow"])
        self.spnThemeTabWidth.setValue(self._themeData["Spacings/TabWidth"])

    def populatesFontSize(self):
        self.cmbThemeFontSize.clear()
        s = list(range(6, 13)) + list(range(14, 29, 2)) + [36, 48, 72]
        for i in s:
            self.cmbThemeFontSize.addItem(str(i))

    def updateThemeFont(self, v):
        f = self.cmbThemeFont.currentFont()
        s = self.cmbThemeFontSize.itemText(
            self.cmbThemeFontSize.currentIndex())
        if s:
            f.setPointSize(int(s))

        self._themeData["Text/Font"] = f.toString()
        self.updatePreview()

    def updateLineSpacing(self, i):
        if i == 0:
            self._themeData["Spacings/LineSpacing"] = 100
        elif i == 1:
            self._themeData["Spacings/LineSpacing"] = 150
        elif i == 2:
            self._themeData["Spacings/LineSpacing"] = 200
        elif i == 3:
            self._themeData[
                "Spacings/LineSpacing"] = self.spnThemeLineSpacing.value()
        self.spnThemeLineSpacing.setEnabled(i == 3)
        self.updatePreview()

    def updateThemeBackground(self, i):
        img = self.cmbCorkImage.itemData(i)

        if img:
            self._themeData["Background/ImageFile"] = os.path.split(img)[1]
        else:
            self._themeData["Background/ImageFile"] = ""
        self.updatePreview()

    def getThemeColor(self, key):
        color = self._themeData[key]
        self.colorDialog = QColorDialog(QColor(color), self)
        color = self.colorDialog.getColor(QColor(color))
        if color.isValid():
            self._themeData[key] = color.name()
            self.updateUIFromTheme()
            self.updatePreview()

    def updatePreview(self):
        if self._loadingTheme:
            return

        currentScreen = qApp.desktop().screenNumber(self)
        screen = qApp.desktop().screenGeometry(currentScreen)

        px = createThemePreview(self._themeData, screen,
                                self.lblPreview.size())
        self.lblPreview.setPixmap(px)

    def setButtonColor(self, btn, color):
        btn.setStyleSheet("background:{};".format(color))

    def saveTheme(self):
        settings = QSettings(self._editingTheme, QSettings.IniFormat)

        self._themeData["Name"] = self.txtThemeName.text()
        for key in self._themeData:
            settings.setValue(key, self._themeData[key])

        settings.sync()
        self.populatesThemesList()
        self.themeStack.setCurrentIndex(0)
        self._editingTheme = None

    def cancelEdit(self):
        self.themeStack.setCurrentIndex(0)
        self._editingTheme = None

    def resizeEvent(self, event):
        QWidget.resizeEvent(self, event)
        if self._editingTheme:
            self.updatePreview()
Пример #49
0
 def ColorSelect(self):  #颜色选取
     col = QColorDialog.getColor()
     self.ui.pushButton_3.setStyleSheet("background-color: " + col.name())
     self.ColorCanChange = col.name()
Пример #50
0
 def change_background_color(self):  # заливка холста выбранным цветом
     chosen_color = QColorDialog.getColor()
     self.bg_color = chosen_color
     self.canvas.fill(chosen_color)
     self.update()
Пример #51
0
	def change_color_pressed(self):
		color = QColorDialog.getColor()
		self.change_pen_color(color)
Пример #52
0
 def change_toolbar_color(self):  # смена цвета фона программы и тулбара
     chosen_color = QColorDialog.getColor()
     palette = self.palette()
     palette.setColor(self.backgroundRole(), chosen_color)
     self.setPalette(palette)
Пример #53
0
 def colorPicker(self):
     color = QColorDialog.getColor()
     self.setBrushColor(color)
 def choicecolor(self):
     col = QColorDialog.getColor()
     if col.isValid():
         self.text.setTextColor(col)
Пример #55
0
 def selectGraphBGColor(self):
     color = QColorDialog.getColor()
     # self.styleChoice.setStyleSheet("QWidget { background-color: %s}" % color.name())
     print("You selected ", str(color.getRgb()))
     print("You selected ", str(color.name()))
 def setColor(self):
     color = QColorDialog.getColor(Qt.green, self)
     if color.isValid():
         self.colorLabel.setText(color.name())
         self.colorLabel.setPalette(QPalette(color))
         self.colorLabel.setAutoFillBackground(True)
Пример #57
0
def choose_color(title, qc_initial, parent=None ):
    qc = QColorDialog.getColor( qc_initial, parent, title )
    if qc.isValid() : return qc
    return None
Пример #58
0
 def color(self):
     global color
     col = QColorDialog.getColor()
     if col.isValid():
         color = col.red(), col.green(), col.blue()
Пример #59
0
 def selectLegendColor(self, index):
     c = QColorDialog.getColor(
         self.legendModel.data(index, Qt.DecorationRole), self)
     if c.isValid():
         self.legendModel.setData(index, c, Qt.DecorationRole)
Пример #60
0
 def fill(self):
     col = QColorDialog.getColor()
     if col.isValid():
         self.image.fill(col)
         self.update()