Krita Source Code Documentation
Loading...
Searching...
No Matches
documents_guidesconfig_test_script.py
Go to the documentation of this file.
1# SPDX-FileCopyrightText: 2024 Grum 999 <grum999@grum.fr>
2#
3# SPDX-License-Identifier: GPL-3.0-or-later
4#
5# Execute this script in scripter, and check output results are OK
6# - check document guides settings
7
8
9from krita import (Document, GuidesConfig)
10try:
11 from PyQt6.QtCore import qFuzzyCompare, qDebug, qWarning
12 from PyQt6.QtGui import QColor
13except:
14 from PyQt5.QtCore import qFuzzyCompare, qDebug, qWarning
15 from PyQt5.QtGui import QColor
16
17import tempfile
18import os.path
19
20
22 def __init__(self):
23 self.newDoc = Krita.instance().createDocument(500, 500, "Test autosave", "RGBA", "U8", "", 300)
24
25 with tempfile.TemporaryDirectory() as tmpDirname:
26 tmpFileName = os.path.join(tmpDirname, 'testing_document.kra')
27
28 qDebug("-- Test 01 --")
29 self.setTestValues01(self.newDoc)
30 self.checkTestValues01(self.newDoc)
31 self.newDoc.saveAs(tmpFileName)
32 self.newDoc.close()
33 qDebug("-- Test 01 (loaded) --")
34 self.newDoc = Krita.instance().openDocument(tmpFileName)
35 self.checkTestValues01(self.newDoc)
36
37 qDebug("-- Test 02 --")
38 self.setTestValues02(self.newDoc)
39 self.checkTestValues02(self.newDoc)
40 self.newDoc.save()
41 self.newDoc.close()
42 qDebug("-- Test 02 (loaded) --")
43 self.newDoc = Krita.instance().openDocument(tmpFileName)
44 self.checkTestValues02(self.newDoc)
45
46 qDebug("-- Test 03 --")
47 self.setTestValues03(self.newDoc)
48 self.checkTestValues03(self.newDoc)
49 self.newDoc.save()
50 self.newDoc.close()
51 qDebug("-- Test 03 (loaded) --")
52 self.newDoc = Krita.instance().openDocument(tmpFileName)
53 self.checkTestValues03(self.newDoc)
54 self.newDoc.close()
55
56 def setTestValues01(self, doc):
57 guides = GuidesConfig()
58 guides.setColor(QColor("#ff0000"))
59 guides.setLineType("solid")
60 guides.setHorizontalGuides([50, 100, 150])
61 guides.setVerticalGuides([25, 75, 125])
62 guides.setVisible(True)
63 guides.setLocked(True)
64 guides.setSnap(True)
65 doc.setGuidesConfig(guides)
66
67 def checkTestValues01(self, doc):
68 guides = doc.guidesConfig()
69 self.checkResult('guide color', guides.color().name(), "#ff0000")
70 self.checkResult('guide lineType', guides.lineType(), "solid")
71 self.checkResult('guide hasGuides', guides.hasGuides(), True)
72 self.checkResult('guide horizontal', guides.horizontalGuides(), [50, 100, 150])
73 self.checkResult('guide vertical', guides.verticalGuides(), [25, 75, 125])
74 self.checkResult('guide visible', guides.visible(), True)
75 self.checkResult('guide locked', guides.locked(), True)
76 self.checkResult('guide snap', guides.snap(), True)
77
78 def setTestValues02(self, doc):
79 guides = GuidesConfig()
80 guides.setColor(QColor("#ff00ff"))
81 guides.setLineType("dashed")
82 guides.setHorizontalGuides([110, 120])
83 guides.setVerticalGuides([220.22, 230.23])
84 guides.setVisible(False)
85 guides.setLocked(False)
86 guides.setSnap(False)
87 doc.setGuidesConfig(guides)
88
89 def checkTestValues02(self, doc):
90 guides = doc.guidesConfig()
91 self.checkResult('guide color', guides.color().name(), "#ff00ff")
92 self.checkResult('guide lineType', guides.lineType(), "dashed")
93 self.checkResult('guide hasGuides', guides.hasGuides(), True)
94 self.checkResult('guide horizontal', guides.horizontalGuides(), [110, 120])
95 self.checkResult('guide vertical', guides.verticalGuides(), [220.22, 230.23])
96 self.checkResult('guide visible', guides.visible(), False)
97 self.checkResult('guide locked', guides.locked(), False)
98 self.checkResult('guide snap', guides.snap(), False)
99
100 def setTestValues03(self, doc):
101 guides = GuidesConfig()
102 guides.setColor(QColor("#008800"))
103 guides.setLineType("dotted")
104 guides.setHorizontalGuides([])
105 guides.setVerticalGuides([])
106 guides.setVisible(False)
107 guides.setLocked(False)
108 guides.setSnap(False)
109 doc.setGuidesConfig(guides)
110
111 def checkTestValues03(self, doc):
112 guides = doc.guidesConfig()
113 self.checkResult('guide color', guides.color().name(), "#008800")
114 self.checkResult('guide lineType', guides.lineType(), "dotted")
115 self.checkResult('guide hasGuides', guides.hasGuides(), False)
116 self.checkResult('guide horizontal', guides.horizontalGuides(), [])
117 self.checkResult('guide vertical', guides.verticalGuides(), [])
118 self.checkResult('guide visible', guides.visible(), False)
119 self.checkResult('guide locked', guides.locked(), False)
120 self.checkResult('guide snap', guides.snap(), False)
121
122 def checkResult(self, name, value, ref):
123 returned = None
124
125 if isinstance(value, float) and isinstance(ref, float):
126 returned = qFuzzyCompare(value, ref)
127 elif isinstance(value, list) and isinstance(ref, list) and len(value) == len(ref):
128 returned = True
129 for index in range(len(value)):
130 if not qFuzzyCompare(value[index], ref[index]):
131 returned = False
132 break
133
134 if returned or value == ref:
135 returned = True
136 isOk = "OK"
137 qDebug(f"Check {name}: '{value}' == '{ref}' --> {isOk}")
138 else:
139 returned = False
140 isOk = "INVALID"
141 qWarning(f"Check {name}: '{value}' == '{ref}' --> {isOk}")
142
143 return returned
144
145
static Krita * instance()
instance retrieve the singleton instance of the Application object.
Definition Krita.cpp:390
KisDocument * createDocument(QList< KisNodeSP > nodes, KisImageSP srcImage, const QRect &copiedBounds)