Krita Source Code Documentation
Loading...
Searching...
No Matches
uicolorspace.py
Go to the documentation of this file.
1# SPDX-License-Identifier: CC0-1.0
2
3from . import colorspacedialog
4from .components import (
5 colordepthcombobox,
6 colormodelcombobox,
7 colorprofilecombobox,
8)
9try:
10 from PyQt6.QtCore import Qt
11 from PyQt6.QtWidgets import (QFormLayout, QListWidget,
12 QAbstractItemView, QDialogButtonBox,
13 QVBoxLayout, QFrame, QMessageBox, QPushButton,
14 QAbstractScrollArea)
15except:
16 from PyQt5.QtCore import Qt
17 from PyQt5.QtWidgets import (QFormLayout, QListWidget,
18 QAbstractItemView, QDialogButtonBox,
19 QVBoxLayout, QFrame, QMessageBox, QPushButton,
20 QAbstractScrollArea)
21from krita import Krita
22from builtins import i18n
23from scripter import utils
24
25from . import resources_rc # Loads the icon qrc
26
27
28class UIColorSpace(object):
29
30 def __init__(self):
32 self.mainLayout = QVBoxLayout(self.mainDialog)
33 self.formLayout = QFormLayout()
34 self.documentLayout = QVBoxLayout()
35 utils.setNeedDarkIcon(self.mainDialog.palette().window().color())
36 self.refreshButton = QPushButton(utils.getThemedIcon(':/icons/refresh.svg'),
37 i18n("Refresh"))
38 self.widgetDocuments = QListWidget()
39 self.colorModelComboBox = colormodelcombobox.ColorModelComboBox(self)
40 self.colorDepthComboBox = colordepthcombobox.ColorDepthComboBox(self)
42 colorprofilecombobox.ColorProfileComboBox(self)
43 self.buttonBox = QDialogButtonBox(
44 QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel)
45
47 self.documentsList = []
51
53 self.buttonBox.accepted.connect(self.confirmButtonconfirmButton)
54 self.buttonBox.rejected.connect(self.mainDialog.close)
55
56 self.mainDialog.setWindowModality(Qt.WindowModality.NonModal)
57 self.widgetDocuments.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection)
58 self.widgetDocuments.setSizeAdjustPolicy(
59 QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents)
60
61 def initialize(self):
62 self.loadDocuments()
63 self.loadColorModels()
64 self.loadColorDepths()
66
67 self.documentLayout.addWidget(self.widgetDocuments)
68 self.documentLayout.addWidget(self.refreshButton)
69
70 self.formLayout.addRow(i18n("Documents:"), self.documentLayout)
71 self.formLayout.addRow(i18n("Color model:"), self.colorModelComboBox)
72 self.formLayout.addRow(i18n("Color depth:"), self.colorDepthComboBox)
73 self.formLayout.addRow(i18n("Color profile:"),
75
76 self.line = QFrame()
77 self.line.setFrameShape(QFrame.Shape.HLine)
78 self.line.setFrameShadow(QFrame.Shadow.Sunken)
79
80 self.mainLayout.addLayout(self.formLayout)
81 self.mainLayout.addWidget(self.line)
82 self.mainLayout.addWidget(self.buttonBox)
83
84 self.mainDialog.resize(500, 300)
85 self.mainDialog.setWindowTitle(i18n("Color Space"))
86 self.mainDialog.setSizeGripEnabled(True)
87 self.mainDialog.show()
88 self.mainDialog.activateWindow()
89
90 def loadColorModels(self):
91 self.colorModelsList = sorted(self.kritaInstance.colorModels())
92
93 self.colorModelComboBox.addItems(self.colorModelsList)
94
95 def loadColorDepths(self):
96 self.colorDepthComboBox.clear()
97
98 colorModel = self.colorModelComboBox.currentText()
99 self.colorDepthsList = sorted(
100 self.kritaInstance.colorDepths(colorModel))
101
102 self.colorDepthComboBox.addItems(self.colorDepthsList)
103
105 self.colorProfileComboBox.clear()
106
107 colorModel = self.colorModelComboBox.currentText()
108 colorDepth = self.colorDepthComboBox.currentText()
109 self.colorProfilesList = sorted(
110 self.kritaInstance.profiles(colorModel, colorDepth))
111
112 self.colorProfileComboBox.addItems(self.colorProfilesList)
113
114 def loadDocuments(self):
115 self.widgetDocuments.clear()
116
117 self.documentsList = [
118 document for document in self.kritaInstance.documents()
119 if document.fileName()
120 ]
121
122 for document in self.documentsList:
123 self.widgetDocuments.addItem(document.fileName())
124
126 self.loadDocuments()
127
128 def confirmButton(self):
129 selectedPaths = [
130 item.text() for item in self.widgetDocuments.selectedItems()]
131 selectedDocuments = [
132 document for document in self.documentsList
133 for path in selectedPaths if path == document.fileName()
134 ]
135
136 self.msgBox = QMessageBox(self.mainDialog)
137 if selectedDocuments:
138 self.convertColorSpace(selectedDocuments)
139 self.msgBox.setText(
140 i18n("The selected documents have been converted."))
141 else:
142 self.msgBox.setText(i18n("Select at least one document."))
143 self.msgBox.exec()
144
145 def convertColorSpace(self, documents):
146 for document in documents:
147 document.setColorSpace(self.colorModelComboBox.currentText(),
148 self.colorDepthComboBox.currentText(),
149 self.colorProfileComboBox.currentText())
static Krita * instance()
instance retrieve the singleton instance of the Application object.
Definition Krita.cpp:390
rgba palette[MAX_PALETTE]
Definition palette.c:35