Fix current tests

This commit is contained in:
Veronica Berglyd Olsen
2025-06-12 19:22:11 +02:00
parent ff85c6688f
commit e3eea2628a
23 changed files with 380 additions and 303 deletions
+4 -4
View File
@@ -441,10 +441,10 @@ class ProjectXMLReader:
for xEntry in xItem: for xEntry in xItem:
if xEntry.tag == "entry": if xEntry.tag == "entry":
key = xEntry.attrib.get("key", None) key = xEntry.attrib.get("key", None)
red = checkInt(xEntry.attrib.get("red", 0), 0) # Deprecated in 1.5 Rev 6 red = checkInt(xEntry.attrib.get("red", 0), 0) # Deprecated in 1.5 R6
green = checkInt(xEntry.attrib.get("green", 0), 0) # Deprecated in 1.5 Rev 6 green = checkInt(xEntry.attrib.get("green", 0), 0) # Deprecated in 1.5 R6
blue = checkInt(xEntry.attrib.get("blue", 0), 0) # Deprecated in 1.5 Rev 6 blue = checkInt(xEntry.attrib.get("blue", 0), 0) # Deprecated in 1.5 R6
color = xEntry.attrib.get("color") # Added in 1.5 Rev 6 color = xEntry.attrib.get("color") # Added in 1.5 R6
count = checkInt(xEntry.attrib.get("count", 0), 0) count = checkInt(xEntry.attrib.get("count", 0), 0)
shape = xEntry.attrib.get("shape", "") shape = xEntry.attrib.get("shape", "")
if color is None: if color is None:
+15 -15
View File
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7.1" hexVersion="0x020701f0" fileVersion="1.5" fileRevision="5" timeStamp="2025-06-09 22:54:50"> <novelWriterXML appVersion="2.8a0" hexVersion="0x020800a0" fileVersion="1.5" fileRevision="6" timeStamp="2025-06-12 13:04:43">
<project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" saveCount="2194" autoCount="286" editTime="96892"> <project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" saveCount="2221" autoCount="289" editTime="97582">
<name>Sample Project</name> <name>Sample Project</name>
<author>Jane Smith</author> <author>Jane Smith</author>
</project> </project>
@@ -20,20 +20,20 @@
<entry key="C">D</entry> <entry key="C">D</entry>
</autoReplace> </autoReplace>
<status> <status>
<entry key="sf12341" count="8" red="100" green="100" blue="100" shape="SQUARE">New</entry> <entry key="sf12341" count="8" color="faded" shape="STAR">New</entry>
<entry key="sf24ce6" count="2" red="200" green="50" blue="0" shape="SQUARE">Notes</entry> <entry key="sf24ce6" count="2" color="red" shape="STAR">Notes</entry>
<entry key="sc24b8f" count="3" red="182" green="60" blue="0" shape="BARS_1">Started</entry> <entry key="sc24b8f" count="3" color="yellow" shape="BARS_1">Started</entry>
<entry key="s90e6c9" count="5" red="193" green="129" blue="0" shape="BARS_2">1st Draft</entry> <entry key="s90e6c9" count="5" color="yellow" shape="BARS_2">1st Draft</entry>
<entry key="sd51c5b" count="1" red="193" green="129" blue="0" shape="BARS_3">2nd Draft</entry> <entry key="sd51c5b" count="1" color="yellow" shape="BARS_3">2nd Draft</entry>
<entry key="s8ae72a" count="1" red="193" green="129" blue="0" shape="BARS_4">3rd Draft</entry> <entry key="s8ae72a" count="1" color="yellow" shape="BARS_4">3rd Draft</entry>
<entry key="s78ea90" count="1" red="58" green="180" blue="58" shape="STAR">Finished</entry> <entry key="s78ea90" count="1" color="green" shape="STAR">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="ia857f0" count="5" red="100" green="100" blue="100" shape="SQUARE">None</entry> <entry key="ia857f0" count="5" color="faded" shape="STAR">None</entry>
<entry key="i4a1d39" count="1" red="220" green="138" blue="221" shape="BLOCK_1">Background</entry> <entry key="i4a1d39" count="1" color="purple" shape="BLOCK_1">Background</entry>
<entry key="icfb3a5" count="1" red="220" green="138" blue="221" shape="BLOCK_2">Minor</entry> <entry key="icfb3a5" count="1" color="purple" shape="BLOCK_2">Minor</entry>
<entry key="i2d7a54" count="2" red="220" green="138" blue="221" shape="BLOCK_3">Major</entry> <entry key="i2d7a54" count="2" color="purple" shape="BLOCK_3">Major</entry>
<entry key="i56be10" count="1" red="220" green="138" blue="221" shape="BLOCK_4">Main</entry> <entry key="i56be10" count="1" color="purple" shape="BLOCK_4">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="31" novelWords="1016" notesWords="416" novelChars="5602" notesChars="2285"> <content items="31" novelWords="1016" notesWords="416" novelChars="5602" notesChars="2285">
@@ -58,7 +58,7 @@
<name status="sf24ce6" import="ia857f0" active="yes">Chapter One</name> <name status="sf24ce6" import="ia857f0" active="yes">Chapter One</name>
</item> </item>
<item handle="636b6aa9b697b" parent="6a2d6d5f4f401" root="7031beac91f75" order="0" type="FILE" class="NOVEL" layout="DOCUMENT"> <item handle="636b6aa9b697b" parent="6a2d6d5f4f401" root="7031beac91f75" order="0" type="FILE" class="NOVEL" layout="DOCUMENT">
<meta expanded="no" heading="H3" charCount="2999" wordCount="530" paraCount="16" cursorPos="718" /> <meta expanded="no" heading="H3" charCount="2999" wordCount="530" paraCount="16" cursorPos="1225" />
<name status="s90e6c9" import="ia857f0" active="yes">Making a Scene</name> <name status="s90e6c9" import="ia857f0" active="yes">Making a Scene</name>
</item> </item>
<item handle="bc0cbd2a407f3" parent="6a2d6d5f4f401" root="7031beac91f75" order="1" type="FILE" class="NOVEL" layout="DOCUMENT"> <item handle="bc0cbd2a407f3" parent="6a2d6d5f4f401" root="7031beac91f75" order="1" type="FILE" class="NOVEL" layout="DOCUMENT">
+6 -2
View File
@@ -35,7 +35,7 @@ sys.path.insert(1, str(Path(__file__).parent.parent.absolute()))
from novelwriter import CONFIG, SHARED from novelwriter import CONFIG, SHARED
from tests.mocked import MockGuiMain, MockTheme from tests.mocked import MockGuiMain
from tests.tools import cleanProject from tests.tools import cleanProject
_TST_ROOT = Path(__file__).parent _TST_ROOT = Path(__file__).parent
@@ -151,12 +151,16 @@ def projPath(fncPath):
@pytest.fixture(scope="function") @pytest.fixture(scope="function")
def mockGUI(qtbot, monkeypatch): def mockGUI(qtbot, monkeypatch):
"""Create a mock instance of novelWriter's main GUI class.""" """Create a mock instance of novelWriter's main GUI class."""
from novelwriter.gui.theme import GuiTheme
monkeypatch.setattr(QMessageBox, "exec", lambda *a: None) monkeypatch.setattr(QMessageBox, "exec", lambda *a: None)
monkeypatch.setattr(QMessageBox, "result", lambda *a: QMessageBox.StandardButton.Yes) monkeypatch.setattr(QMessageBox, "result", lambda *a: QMessageBox.StandardButton.Yes)
gui = MockGuiMain() gui = MockGuiMain()
theme = MockTheme() theme = GuiTheme()
theme.loadTheme()
monkeypatch.setattr(SHARED, "_gui", gui) monkeypatch.setattr(SHARED, "_gui", gui)
monkeypatch.setattr(SHARED, "_theme", theme) monkeypatch.setattr(SHARED, "_theme", theme)
return gui return gui
+13 -13
View File
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2025-04-29 22:07:59"> <novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="6" timeStamp="2025-04-29 22:07:59">
<project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" saveCount="2179" autoCount="285" editTime="1000"> <project id="e2be99af-f9bf-4403-857a-c3d1ac25abea" saveCount="2179" autoCount="285" editTime="1000">
<name>Sample Project</name> <name>Sample Project</name>
<author>Jane Smith</author> <author>Jane Smith</author>
@@ -20,20 +20,20 @@
<entry key="C">D</entry> <entry key="C">D</entry>
</autoReplace> </autoReplace>
<status> <status>
<entry key="sf12341" count="8" red="100" green="100" blue="100" shape="SQUARE">New</entry> <entry key="sf12341" count="8" color="#646464" shape="SQUARE">New</entry>
<entry key="sf24ce6" count="2" red="200" green="50" blue="0" shape="SQUARE">Notes</entry> <entry key="sf24ce6" count="2" color="#c83200" shape="SQUARE">Notes</entry>
<entry key="sc24b8f" count="3" red="182" green="60" blue="0" shape="BARS_1">Started</entry> <entry key="sc24b8f" count="3" color="#b63c00" shape="BARS_1">Started</entry>
<entry key="s90e6c9" count="5" red="193" green="129" blue="0" shape="BARS_2">1st Draft</entry> <entry key="s90e6c9" count="5" color="#c18100" shape="BARS_2">1st Draft</entry>
<entry key="sd51c5b" count="1" red="193" green="129" blue="0" shape="BARS_3">2nd Draft</entry> <entry key="sd51c5b" count="1" color="#c18100" shape="BARS_3">2nd Draft</entry>
<entry key="s8ae72a" count="1" red="193" green="129" blue="0" shape="BARS_4">3rd Draft</entry> <entry key="s8ae72a" count="1" color="#c18100" shape="BARS_4">3rd Draft</entry>
<entry key="s78ea90" count="1" red="58" green="180" blue="58" shape="STAR">Finished</entry> <entry key="s78ea90" count="1" color="#3ab43a" shape="STAR">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="ia857f0" count="5" red="100" green="100" blue="100" shape="SQUARE">None</entry> <entry key="ia857f0" count="5" color="#646464" shape="SQUARE">None</entry>
<entry key="i4a1d39" count="1" red="220" green="138" blue="221" shape="BLOCK_1">Background</entry> <entry key="i4a1d39" count="1" color="#dc8add" shape="BLOCK_1">Background</entry>
<entry key="icfb3a5" count="1" red="220" green="138" blue="221" shape="BLOCK_2">Minor</entry> <entry key="icfb3a5" count="1" color="#dc8add" shape="BLOCK_2">Minor</entry>
<entry key="i2d7a54" count="2" red="220" green="138" blue="221" shape="BLOCK_3">Major</entry> <entry key="i2d7a54" count="2" color="#dc8add" shape="BLOCK_3">Major</entry>
<entry key="i56be10" count="1" red="220" green="138" blue="221" shape="BLOCK_4">Main</entry> <entry key="i56be10" count="1" color="#dc8add" shape="BLOCK_4">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="31" novelWords="1016" notesWords="416" novelChars="5602" notesChars="2285"> <content items="31" novelWords="1016" notesWords="416" novelChars="5602" notesChars="2285">
+10 -10
View File
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2025-04-29 22:45:09"> <novelWriterXML appVersion="2.8a0" hexVersion="0x020800a0" fileVersion="1.5" fileRevision="6" timeStamp="2025-06-12 19:19:46">
<project id="5ac0df12-8b8b-476b-9905-21d33685687c" saveCount="52" autoCount="29" editTime="2465"> <project id="5ac0df12-8b8b-476b-9905-21d33685687c" saveCount="54" autoCount="29" editTime="2469">
<name>Lorem Ipsum</name> <name>Lorem Ipsum</name>
<author>lipsum.com</author> <author>lipsum.com</author>
</project> </project>
@@ -19,16 +19,16 @@
<entry key="Rep2">Replace Text 2</entry> <entry key="Rep2">Replace Text 2</entry>
</autoReplace> </autoReplace>
<status> <status>
<entry key="sbaa94f" count="3" red="100" green="100" blue="100" shape="SQUARE">New</entry> <entry key="sbaa94f" count="3" color="#646464" shape="SQUARE">New</entry>
<entry key="s27bf7c" count="0" red="200" green="50" blue="0" shape="SQUARE">Note</entry> <entry key="s27bf7c" count="0" color="#c83200" shape="SQUARE">Note</entry>
<entry key="s92a87b" count="5" red="200" green="150" blue="0" shape="SQUARE">Draft</entry> <entry key="s92a87b" count="5" color="#c89600" shape="SQUARE">Draft</entry>
<entry key="sedd043" count="7" red="50" green="200" blue="0" shape="SQUARE">Finished</entry> <entry key="sedd043" count="7" color="#32c800" shape="SQUARE">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i613591" count="7" red="100" green="100" blue="100" shape="SQUARE">New</entry> <entry key="i613591" count="7" color="#646464" shape="SQUARE">New</entry>
<entry key="i560cbf" count="0" red="200" green="50" blue="0" shape="SQUARE">Minor</entry> <entry key="i560cbf" count="0" color="#c83200" shape="SQUARE">Minor</entry>
<entry key="i37861c" count="0" red="200" green="150" blue="0" shape="SQUARE">Major</entry> <entry key="i37861c" count="0" color="#c89600" shape="SQUARE">Major</entry>
<entry key="id6b1d0" count="0" red="50" green="200" blue="0" shape="SQUARE">Main</entry> <entry key="id6b1d0" count="0" color="#32c800" shape="SQUARE">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="22" novelWords="3115" notesWords="738" novelChars="20774" notesChars="5003"> <content items="22" novelWords="3115" notesWords="738" novelChars="20774" notesChars="5003">
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2025-04-29 22:42:54"> <novelWriterXML appVersion="2.8a0" hexVersion="0x020800a0" fileVersion="1.5" fileRevision="6" timeStamp="2025-06-12 18:02:57">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="1" autoCount="1" editTime="0"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="1" autoCount="1" editTime="0">
<name>New Project</name> <name>New Project</name>
<author>Jane Doe</author> <author>Jane Doe</author>
@@ -16,16 +16,16 @@
</lastHandle> </lastHandle>
<autoReplace /> <autoReplace />
<status> <status>
<entry key="s000000" count="7" red="120" green="120" blue="120" shape="STAR">New</entry> <entry key="s000000" count="7" color="faded" shape="STAR">New</entry>
<entry key="s000001" count="0" red="205" green="171" blue="143" shape="TRIANGLE">Note</entry> <entry key="s000001" count="0" color="red" shape="TRIANGLE">Note</entry>
<entry key="s000002" count="0" red="143" green="240" blue="164" shape="CIRCLE_T">Draft</entry> <entry key="s000002" count="0" color="yellow" shape="CIRCLE_T">Draft</entry>
<entry key="s000003" count="0" red="249" green="240" blue="107" shape="STAR">Finished</entry> <entry key="s000003" count="0" color="green" shape="STAR">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i000004" count="5" red="120" green="120" blue="120" shape="SQUARE">New</entry> <entry key="i000004" count="5" color="purple" shape="SQUARE">New</entry>
<entry key="i000005" count="0" red="220" green="138" blue="221" shape="BLOCK_2">Minor</entry> <entry key="i000005" count="0" color="purple" shape="BLOCK_2">Minor</entry>
<entry key="i000006" count="0" red="220" green="138" blue="221" shape="BLOCK_3">Major</entry> <entry key="i000006" count="0" color="purple" shape="BLOCK_3">Major</entry>
<entry key="i000007" count="0" red="220" green="138" blue="221" shape="BLOCK_4">Main</entry> <entry key="i000007" count="0" color="purple" shape="BLOCK_4">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="12" novelWords="10" notesWords="6" novelChars="45" notesChars="22"> <content items="12" novelWords="10" notesWords="6" novelChars="45" notesChars="22">
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2025-04-29 22:42:54"> <novelWriterXML appVersion="2.8a0" hexVersion="0x020800a0" fileVersion="1.5" fileRevision="6" timeStamp="2025-06-12 18:02:57">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="1" autoCount="1" editTime="0"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="1" autoCount="1" editTime="0">
<name>New Project</name> <name>New Project</name>
<author>Jane Doe</author> <author>Jane Doe</author>
@@ -16,16 +16,16 @@
</lastHandle> </lastHandle>
<autoReplace /> <autoReplace />
<status> <status>
<entry key="s000000" count="6" red="120" green="120" blue="120" shape="STAR">New</entry> <entry key="s000000" count="6" color="faded" shape="STAR">New</entry>
<entry key="s000001" count="0" red="205" green="171" blue="143" shape="TRIANGLE">Note</entry> <entry key="s000001" count="0" color="red" shape="TRIANGLE">Note</entry>
<entry key="s000002" count="0" red="143" green="240" blue="164" shape="CIRCLE_T">Draft</entry> <entry key="s000002" count="0" color="yellow" shape="CIRCLE_T">Draft</entry>
<entry key="s000003" count="0" red="249" green="240" blue="107" shape="STAR">Finished</entry> <entry key="s000003" count="0" color="green" shape="STAR">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i000004" count="10" red="120" green="120" blue="120" shape="SQUARE">New</entry> <entry key="i000004" count="10" color="purple" shape="SQUARE">New</entry>
<entry key="i000005" count="0" red="220" green="138" blue="221" shape="BLOCK_2">Minor</entry> <entry key="i000005" count="0" color="purple" shape="BLOCK_2">Minor</entry>
<entry key="i000006" count="0" red="220" green="138" blue="221" shape="BLOCK_3">Major</entry> <entry key="i000006" count="0" color="purple" shape="BLOCK_3">Major</entry>
<entry key="i000007" count="0" red="220" green="138" blue="221" shape="BLOCK_4">Main</entry> <entry key="i000007" count="0" color="purple" shape="BLOCK_4">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="16" novelWords="9" notesWords="0" novelChars="40" notesChars="0"> <content items="16" novelWords="9" notesWords="0" novelChars="40" notesChars="0">
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2025-04-29 22:42:52"> <novelWriterXML appVersion="2.8a0" hexVersion="0x020800a0" fileVersion="1.5" fileRevision="6" timeStamp="2025-06-12 18:02:55">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="1" autoCount="1" editTime="0"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="1" autoCount="1" editTime="0">
<name>New Project</name> <name>New Project</name>
<author>Jane Doe</author> <author>Jane Doe</author>
@@ -16,16 +16,16 @@
</lastHandle> </lastHandle>
<autoReplace /> <autoReplace />
<status> <status>
<entry key="s000000" count="16" red="120" green="120" blue="120" shape="STAR">New</entry> <entry key="s000000" count="16" color="faded" shape="STAR">New</entry>
<entry key="s000001" count="0" red="205" green="171" blue="143" shape="TRIANGLE">Note</entry> <entry key="s000001" count="0" color="red" shape="TRIANGLE">Note</entry>
<entry key="s000002" count="0" red="143" green="240" blue="164" shape="CIRCLE_T">Draft</entry> <entry key="s000002" count="0" color="yellow" shape="CIRCLE_T">Draft</entry>
<entry key="s000003" count="0" red="249" green="240" blue="107" shape="STAR">Finished</entry> <entry key="s000003" count="0" color="green" shape="STAR">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i000004" count="3" red="120" green="120" blue="120" shape="SQUARE">New</entry> <entry key="i000004" count="3" color="purple" shape="SQUARE">New</entry>
<entry key="i000005" count="0" red="220" green="138" blue="221" shape="BLOCK_2">Minor</entry> <entry key="i000005" count="0" color="purple" shape="BLOCK_2">Minor</entry>
<entry key="i000006" count="0" red="220" green="138" blue="221" shape="BLOCK_3">Major</entry> <entry key="i000006" count="0" color="purple" shape="BLOCK_3">Major</entry>
<entry key="i000007" count="0" red="220" green="138" blue="221" shape="BLOCK_4">Main</entry> <entry key="i000007" count="0" color="purple" shape="BLOCK_4">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="19" novelWords="28" notesWords="0" novelChars="129" notesChars="0"> <content items="19" novelWords="28" notesWords="0" novelChars="129" notesChars="0">
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2025-04-29 22:42:52"> <novelWriterXML appVersion="2.8a0" hexVersion="0x020800a0" fileVersion="1.5" fileRevision="6" timeStamp="2025-06-12 18:02:55">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="1" autoCount="0" editTime="0"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="1" autoCount="0" editTime="0">
<name>Test Project A</name> <name>Test Project A</name>
<author>Jane Doe</author> <author>Jane Doe</author>
@@ -16,16 +16,16 @@
</lastHandle> </lastHandle>
<autoReplace /> <autoReplace />
<status> <status>
<entry key="s000000" count="15" red="120" green="120" blue="120" shape="STAR">New</entry> <entry key="s000000" count="15" color="faded" shape="STAR">New</entry>
<entry key="s000001" count="0" red="205" green="171" blue="143" shape="TRIANGLE">Note</entry> <entry key="s000001" count="0" color="red" shape="TRIANGLE">Note</entry>
<entry key="s000002" count="0" red="143" green="240" blue="164" shape="CIRCLE_T">Draft</entry> <entry key="s000002" count="0" color="yellow" shape="CIRCLE_T">Draft</entry>
<entry key="s000003" count="0" red="249" green="240" blue="107" shape="STAR">Finished</entry> <entry key="s000003" count="0" color="green" shape="STAR">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i000004" count="7" red="120" green="120" blue="120" shape="SQUARE">New</entry> <entry key="i000004" count="7" color="purple" shape="SQUARE">New</entry>
<entry key="i000005" count="0" red="220" green="138" blue="221" shape="BLOCK_2">Minor</entry> <entry key="i000005" count="0" color="purple" shape="BLOCK_2">Minor</entry>
<entry key="i000006" count="0" red="220" green="138" blue="221" shape="BLOCK_3">Major</entry> <entry key="i000006" count="0" color="purple" shape="BLOCK_3">Major</entry>
<entry key="i000007" count="0" red="220" green="138" blue="221" shape="BLOCK_4">Main</entry> <entry key="i000007" count="0" color="purple" shape="BLOCK_4">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="22" novelWords="0" notesWords="0" novelChars="0" notesChars="0"> <content items="22" novelWords="0" notesWords="0" novelChars="0" notesChars="0">
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2025-04-29 22:42:52"> <novelWriterXML appVersion="2.8a0" hexVersion="0x020800a0" fileVersion="1.5" fileRevision="6" timeStamp="2025-06-12 18:02:55">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="1" autoCount="0" editTime="0"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="1" autoCount="0" editTime="0">
<name>Test Project B</name> <name>Test Project B</name>
<author>Jane Doe</author> <author>Jane Doe</author>
@@ -16,16 +16,16 @@
</lastHandle> </lastHandle>
<autoReplace /> <autoReplace />
<status> <status>
<entry key="s000000" count="9" red="120" green="120" blue="120" shape="STAR">New</entry> <entry key="s000000" count="9" color="faded" shape="STAR">New</entry>
<entry key="s000001" count="0" red="205" green="171" blue="143" shape="TRIANGLE">Note</entry> <entry key="s000001" count="0" color="red" shape="TRIANGLE">Note</entry>
<entry key="s000002" count="0" red="143" green="240" blue="164" shape="CIRCLE_T">Draft</entry> <entry key="s000002" count="0" color="yellow" shape="CIRCLE_T">Draft</entry>
<entry key="s000003" count="0" red="249" green="240" blue="107" shape="STAR">Finished</entry> <entry key="s000003" count="0" color="green" shape="STAR">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i000004" count="7" red="120" green="120" blue="120" shape="SQUARE">New</entry> <entry key="i000004" count="7" color="purple" shape="SQUARE">New</entry>
<entry key="i000005" count="0" red="220" green="138" blue="221" shape="BLOCK_2">Minor</entry> <entry key="i000005" count="0" color="purple" shape="BLOCK_2">Minor</entry>
<entry key="i000006" count="0" red="220" green="138" blue="221" shape="BLOCK_3">Major</entry> <entry key="i000006" count="0" color="purple" shape="BLOCK_3">Major</entry>
<entry key="i000007" count="0" red="220" green="138" blue="221" shape="BLOCK_4">Main</entry> <entry key="i000007" count="0" color="purple" shape="BLOCK_4">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="16" novelWords="0" notesWords="0" novelChars="0" notesChars="0"> <content items="16" novelWords="0" notesWords="0" novelChars="0" notesChars="0">
@@ -1,10 +1,10 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dcterms:created xsi:type="dcterms:W3CDTF">2025-04-29T22:46:36</dcterms:created> <dcterms:created xsi:type="dcterms:W3CDTF">2025-06-12T19:20:06</dcterms:created>
<dcterms:modified xsi:type="dcterms:W3CDTF">2025-04-29T22:46:36</dcterms:modified> <dcterms:modified xsi:type="dcterms:W3CDTF">2025-06-12T19:20:06</dcterms:modified>
<dc:creator>lipsum.com</dc:creator> <dc:creator>lipsum.com</dc:creator>
<dc:title>Lorem Ipsum</dc:title> <dc:title>Lorem Ipsum</dc:title>
<dc:language>en_GB</dc:language> <dc:language>en_GB</dc:language>
<cp:revision>52</cp:revision> <cp:revision>54</cp:revision>
<cp:lastModifiedBy>lipsum.com</cp:lastModifiedBy> <cp:lastModifiedBy>lipsum.com</cp:lastModifiedBy>
</cp:coreProperties> </cp:coreProperties>
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2025-04-29 22:08:41"> <novelWriterXML appVersion="2.8a0" hexVersion="0x020800a0" fileVersion="1.5" fileRevision="6" timeStamp="2025-06-12 18:34:07">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="3" autoCount="2" editTime="4"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="3" autoCount="2" editTime="4">
<name>New Project</name> <name>New Project</name>
<author>Jane Doe</author> <author>Jane Doe</author>
@@ -16,16 +16,16 @@
</lastHandle> </lastHandle>
<autoReplace /> <autoReplace />
<status> <status>
<entry key="s000000" count="5" red="120" green="120" blue="120" shape="STAR">New</entry> <entry key="s000000" count="5" color="faded" shape="STAR">New</entry>
<entry key="s000001" count="0" red="205" green="171" blue="143" shape="TRIANGLE">Note</entry> <entry key="s000001" count="0" color="red" shape="TRIANGLE">Note</entry>
<entry key="s000002" count="0" red="143" green="240" blue="164" shape="CIRCLE_T">Draft</entry> <entry key="s000002" count="0" color="yellow" shape="CIRCLE_T">Draft</entry>
<entry key="s000003" count="0" red="249" green="240" blue="107" shape="STAR">Finished</entry> <entry key="s000003" count="0" color="green" shape="STAR">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i000004" count="7" red="120" green="120" blue="120" shape="SQUARE">New</entry> <entry key="i000004" count="7" color="purple" shape="SQUARE">New</entry>
<entry key="i000005" count="0" red="220" green="138" blue="221" shape="BLOCK_2">Minor</entry> <entry key="i000005" count="0" color="purple" shape="BLOCK_2">Minor</entry>
<entry key="i000006" count="0" red="220" green="138" blue="221" shape="BLOCK_3">Major</entry> <entry key="i000006" count="0" color="purple" shape="BLOCK_3">Major</entry>
<entry key="i000007" count="0" red="220" green="138" blue="221" shape="BLOCK_4">Main</entry> <entry key="i000007" count="0" color="purple" shape="BLOCK_4">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="12" novelWords="173" notesWords="27" novelChars="1007" notesChars="133"> <content items="12" novelWords="173" notesWords="27" novelChars="1007" notesChars="133">
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2025-04-29 22:01:24"> <novelWriterXML appVersion="2.8a0" hexVersion="0x020800a0" fileVersion="1.5" fileRevision="6" timeStamp="2025-06-12 18:03:05">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="2" autoCount="1" editTime="0"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="2" autoCount="1" editTime="0">
<name>New Project</name> <name>New Project</name>
<author>Jane Doe</author> <author>Jane Doe</author>
@@ -16,16 +16,16 @@
</lastHandle> </lastHandle>
<autoReplace /> <autoReplace />
<status> <status>
<entry key="s000000" count="5" red="120" green="120" blue="120" shape="STAR">New</entry> <entry key="s000000" count="5" color="faded" shape="STAR">New</entry>
<entry key="s000001" count="0" red="205" green="171" blue="143" shape="TRIANGLE">Note</entry> <entry key="s000001" count="0" color="red" shape="TRIANGLE">Note</entry>
<entry key="s000002" count="0" red="143" green="240" blue="164" shape="CIRCLE_T">Draft</entry> <entry key="s000002" count="0" color="yellow" shape="CIRCLE_T">Draft</entry>
<entry key="s000003" count="0" red="249" green="240" blue="107" shape="STAR">Finished</entry> <entry key="s000003" count="0" color="green" shape="STAR">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i000004" count="3" red="120" green="120" blue="120" shape="SQUARE">New</entry> <entry key="i000004" count="3" color="purple" shape="SQUARE">New</entry>
<entry key="i000005" count="0" red="220" green="138" blue="221" shape="BLOCK_2">Minor</entry> <entry key="i000005" count="0" color="purple" shape="BLOCK_2">Minor</entry>
<entry key="i000006" count="0" red="220" green="138" blue="221" shape="BLOCK_3">Major</entry> <entry key="i000006" count="0" color="purple" shape="BLOCK_3">Major</entry>
<entry key="i000007" count="0" red="220" green="138" blue="221" shape="BLOCK_4">Main</entry> <entry key="i000007" count="0" color="purple" shape="BLOCK_4">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="8" novelWords="9" notesWords="0" novelChars="40" notesChars="0"> <content items="8" novelWords="9" notesWords="0" novelChars="40" notesChars="0">
+12 -12
View File
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2020-05-28 09:59:15"> <novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="6" timeStamp="2020-05-28 09:59:15">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="0" autoCount="0" editTime="1000"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="0" autoCount="0" editTime="1000">
<name>Sample Project</name> <name>Sample Project</name>
<author>Jay Doh</author> <author>Jay Doh</author>
@@ -20,19 +20,19 @@
<entry key="C">D</entry> <entry key="C">D</entry>
</autoReplace> </autoReplace>
<status> <status>
<entry key="s000000" count="0" red="100" green="100" blue="100" shape="SQUARE">New</entry> <entry key="s000000" count="0" color="#646464" shape="SQUARE">New</entry>
<entry key="s000001" count="0" red="200" green="50" blue="0" shape="SQUARE">Notes</entry> <entry key="s000001" count="0" color="#c83200" shape="SQUARE">Notes</entry>
<entry key="s000002" count="0" red="182" green="60" blue="0" shape="SQUARE">Started</entry> <entry key="s000002" count="0" color="#b63c00" shape="SQUARE">Started</entry>
<entry key="s000003" count="0" red="193" green="129" blue="0" shape="SQUARE">1st Draft</entry> <entry key="s000003" count="0" color="#c18100" shape="SQUARE">1st Draft</entry>
<entry key="s000004" count="0" red="193" green="129" blue="0" shape="SQUARE">2nd Draft</entry> <entry key="s000004" count="0" color="#c18100" shape="SQUARE">2nd Draft</entry>
<entry key="s000005" count="0" red="193" green="129" blue="0" shape="SQUARE">3rd Draft</entry> <entry key="s000005" count="0" color="#c18100" shape="SQUARE">3rd Draft</entry>
<entry key="s000006" count="0" red="58" green="180" blue="58" shape="SQUARE">Finished</entry> <entry key="s000006" count="0" color="#3ab43a" shape="SQUARE">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i000007" count="0" red="100" green="100" blue="100" shape="SQUARE">None</entry> <entry key="i000007" count="0" color="#646464" shape="SQUARE">None</entry>
<entry key="i000008" count="0" red="0" green="122" blue="188" shape="SQUARE">Minor</entry> <entry key="i000008" count="0" color="#007abc" shape="SQUARE">Minor</entry>
<entry key="i000009" count="0" red="21" green="0" blue="180" shape="SQUARE">Major</entry> <entry key="i000009" count="0" color="#1500b4" shape="SQUARE">Major</entry>
<entry key="i00000a" count="0" red="117" green="0" blue="175" shape="SQUARE">Main</entry> <entry key="i00000a" count="0" color="#7500af" shape="SQUARE">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="22" novelWords="0" notesWords="0" novelChars="0" notesChars="0"> <content items="22" novelWords="0" notesWords="0" novelChars="0" notesChars="0">
+12 -12
View File
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2020-06-26 21:20:24"> <novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="6" timeStamp="2020-06-26 21:20:24">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="5" autoCount="10" editTime="1000"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="5" autoCount="10" editTime="1000">
<name>Sample Project</name> <name>Sample Project</name>
<author>Jay Doh</author> <author>Jay Doh</author>
@@ -20,19 +20,19 @@
<entry key="C">D</entry> <entry key="C">D</entry>
</autoReplace> </autoReplace>
<status> <status>
<entry key="s000000" count="0" red="100" green="100" blue="100" shape="SQUARE">New</entry> <entry key="s000000" count="0" color="#646464" shape="SQUARE">New</entry>
<entry key="s000001" count="0" red="200" green="50" blue="0" shape="SQUARE">Notes</entry> <entry key="s000001" count="0" color="#c83200" shape="SQUARE">Notes</entry>
<entry key="s000002" count="0" red="182" green="60" blue="0" shape="SQUARE">Started</entry> <entry key="s000002" count="0" color="#b63c00" shape="SQUARE">Started</entry>
<entry key="s000003" count="0" red="193" green="129" blue="0" shape="SQUARE">1st Draft</entry> <entry key="s000003" count="0" color="#c18100" shape="SQUARE">1st Draft</entry>
<entry key="s000004" count="0" red="193" green="129" blue="0" shape="SQUARE">2nd Draft</entry> <entry key="s000004" count="0" color="#c18100" shape="SQUARE">2nd Draft</entry>
<entry key="s000005" count="0" red="193" green="129" blue="0" shape="SQUARE">3rd Draft</entry> <entry key="s000005" count="0" color="#c18100" shape="SQUARE">3rd Draft</entry>
<entry key="s000006" count="0" red="58" green="180" blue="58" shape="SQUARE">Finished</entry> <entry key="s000006" count="0" color="#3ab43a" shape="SQUARE">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i000007" count="0" red="100" green="100" blue="100" shape="SQUARE">None</entry> <entry key="i000007" count="0" color="#646464" shape="SQUARE">None</entry>
<entry key="i000008" count="0" red="0" green="122" blue="188" shape="SQUARE">Minor</entry> <entry key="i000008" count="0" color="#007abc" shape="SQUARE">Minor</entry>
<entry key="i000009" count="0" red="21" green="0" blue="180" shape="SQUARE">Major</entry> <entry key="i000009" count="0" color="#1500b4" shape="SQUARE">Major</entry>
<entry key="i00000a" count="0" red="117" green="0" blue="175" shape="SQUARE">Main</entry> <entry key="i00000a" count="0" color="#7500af" shape="SQUARE">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="22" novelWords="0" notesWords="0" novelChars="0" notesChars="0"> <content items="22" novelWords="0" notesWords="0" novelChars="0" notesChars="0">
+12 -12
View File
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2021-08-30 23:33:44"> <novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="6" timeStamp="2021-08-30 23:33:44">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="5" autoCount="10" editTime="1000"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="5" autoCount="10" editTime="1000">
<name>Sample Project</name> <name>Sample Project</name>
<author>Jay Doh</author> <author>Jay Doh</author>
@@ -20,19 +20,19 @@
<entry key="C">D</entry> <entry key="C">D</entry>
</autoReplace> </autoReplace>
<status> <status>
<entry key="s000000" count="0" red="100" green="100" blue="100" shape="SQUARE">New</entry> <entry key="s000000" count="0" color="#646464" shape="SQUARE">New</entry>
<entry key="s000001" count="0" red="200" green="50" blue="0" shape="SQUARE">Notes</entry> <entry key="s000001" count="0" color="#c83200" shape="SQUARE">Notes</entry>
<entry key="s000002" count="0" red="182" green="60" blue="0" shape="SQUARE">Started</entry> <entry key="s000002" count="0" color="#b63c00" shape="SQUARE">Started</entry>
<entry key="s000003" count="0" red="193" green="129" blue="0" shape="SQUARE">1st Draft</entry> <entry key="s000003" count="0" color="#c18100" shape="SQUARE">1st Draft</entry>
<entry key="s000004" count="0" red="193" green="129" blue="0" shape="SQUARE">2nd Draft</entry> <entry key="s000004" count="0" color="#c18100" shape="SQUARE">2nd Draft</entry>
<entry key="s000005" count="0" red="193" green="129" blue="0" shape="SQUARE">3rd Draft</entry> <entry key="s000005" count="0" color="#c18100" shape="SQUARE">3rd Draft</entry>
<entry key="s000006" count="0" red="58" green="180" blue="58" shape="SQUARE">Finished</entry> <entry key="s000006" count="0" color="#3ab43a" shape="SQUARE">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i000007" count="0" red="100" green="100" blue="100" shape="SQUARE">None</entry> <entry key="i000007" count="0" color="#646464" shape="SQUARE">None</entry>
<entry key="i000008" count="0" red="0" green="122" blue="188" shape="SQUARE">Minor</entry> <entry key="i000008" count="0" color="#007abc" shape="SQUARE">Minor</entry>
<entry key="i000009" count="0" red="21" green="0" blue="180" shape="SQUARE">Major</entry> <entry key="i000009" count="0" color="#1500b4" shape="SQUARE">Major</entry>
<entry key="i00000a" count="0" red="117" green="0" blue="175" shape="SQUARE">Main</entry> <entry key="i00000a" count="0" color="#7500af" shape="SQUARE">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="25" novelWords="840" notesWords="376" novelChars="0" notesChars="0"> <content items="25" novelWords="840" notesWords="376" novelChars="0" notesChars="0">
+12 -12
View File
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2022-10-25 18:26:15"> <novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="6" timeStamp="2022-10-25 18:26:15">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="5" autoCount="10" editTime="1000"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="5" autoCount="10" editTime="1000">
<name>Sample Project</name> <name>Sample Project</name>
<author>Jay Doh</author> <author>Jay Doh</author>
@@ -20,19 +20,19 @@
<entry key="C">D</entry> <entry key="C">D</entry>
</autoReplace> </autoReplace>
<status> <status>
<entry key="s000000" count="0" red="100" green="100" blue="100" shape="SQUARE">New</entry> <entry key="s000000" count="0" color="#646464" shape="SQUARE">New</entry>
<entry key="s000001" count="0" red="200" green="50" blue="0" shape="SQUARE">Notes</entry> <entry key="s000001" count="0" color="#c83200" shape="SQUARE">Notes</entry>
<entry key="s000002" count="0" red="182" green="60" blue="0" shape="SQUARE">Started</entry> <entry key="s000002" count="0" color="#b63c00" shape="SQUARE">Started</entry>
<entry key="s000003" count="0" red="193" green="129" blue="0" shape="SQUARE">1st Draft</entry> <entry key="s000003" count="0" color="#c18100" shape="SQUARE">1st Draft</entry>
<entry key="s000004" count="0" red="193" green="129" blue="0" shape="SQUARE">2nd Draft</entry> <entry key="s000004" count="0" color="#c18100" shape="SQUARE">2nd Draft</entry>
<entry key="s000005" count="0" red="193" green="129" blue="0" shape="SQUARE">3rd Draft</entry> <entry key="s000005" count="0" color="#c18100" shape="SQUARE">3rd Draft</entry>
<entry key="s000006" count="0" red="58" green="180" blue="58" shape="SQUARE">Finished</entry> <entry key="s000006" count="0" color="#3ab43a" shape="SQUARE">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="i000007" count="0" red="100" green="100" blue="100" shape="SQUARE">None</entry> <entry key="i000007" count="0" color="#646464" shape="SQUARE">None</entry>
<entry key="i000008" count="0" red="0" green="122" blue="188" shape="SQUARE">Minor</entry> <entry key="i000008" count="0" color="#007abc" shape="SQUARE">Minor</entry>
<entry key="i000009" count="0" red="21" green="0" blue="180" shape="SQUARE">Major</entry> <entry key="i000009" count="0" color="#1500b4" shape="SQUARE">Major</entry>
<entry key="i00000a" count="0" red="117" green="0" blue="175" shape="SQUARE">Main</entry> <entry key="i00000a" count="0" color="#7500af" shape="SQUARE">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="25" novelWords="830" notesWords="376" novelChars="0" notesChars="0"> <content items="25" novelWords="830" notesWords="376" novelChars="0" notesChars="0">
+12 -12
View File
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="5" timeStamp="2022-10-15 12:12:59"> <novelWriterXML appVersion="2.7b1" hexVersion="0x020700b1" fileVersion="1.5" fileRevision="6" timeStamp="2022-10-15 12:12:59">
<project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="5" autoCount="10" editTime="1000"> <project id="d0f3fe10-c6e6-4310-8bfd-181eb4224eed" saveCount="5" autoCount="10" editTime="1000">
<name>Sample Project</name> <name>Sample Project</name>
<author>Jay Doh</author> <author>Jay Doh</author>
@@ -20,19 +20,19 @@
<entry key="C">D</entry> <entry key="C">D</entry>
</autoReplace> </autoReplace>
<status> <status>
<entry key="sf12341" count="4" red="100" green="100" blue="100" shape="SQUARE">New</entry> <entry key="sf12341" count="4" color="#646464" shape="SQUARE">New</entry>
<entry key="sf24ce6" count="2" red="200" green="50" blue="0" shape="SQUARE">Notes</entry> <entry key="sf24ce6" count="2" color="#c83200" shape="SQUARE">Notes</entry>
<entry key="sc24b8f" count="3" red="182" green="60" blue="0" shape="SQUARE">Started</entry> <entry key="sc24b8f" count="3" color="#b63c00" shape="SQUARE">Started</entry>
<entry key="s90e6c9" count="7" red="193" green="129" blue="0" shape="SQUARE">1st Draft</entry> <entry key="s90e6c9" count="7" color="#c18100" shape="SQUARE">1st Draft</entry>
<entry key="sd51c5b" count="0" red="193" green="129" blue="0" shape="SQUARE">2nd Draft</entry> <entry key="sd51c5b" count="0" color="#c18100" shape="SQUARE">2nd Draft</entry>
<entry key="s8ae72a" count="0" red="193" green="129" blue="0" shape="SQUARE">3rd Draft</entry> <entry key="s8ae72a" count="0" color="#c18100" shape="SQUARE">3rd Draft</entry>
<entry key="s78ea90" count="1" red="58" green="180" blue="58" shape="SQUARE">Finished</entry> <entry key="s78ea90" count="1" color="#3ab43a" shape="SQUARE">Finished</entry>
</status> </status>
<importance> <importance>
<entry key="ia857f0" count="5" red="100" green="100" blue="100" shape="SQUARE">None</entry> <entry key="ia857f0" count="5" color="#646464" shape="SQUARE">None</entry>
<entry key="icfb3a5" count="2" red="0" green="122" blue="188" shape="SQUARE">Minor</entry> <entry key="icfb3a5" count="2" color="#007abc" shape="SQUARE">Minor</entry>
<entry key="i2d7a54" count="2" red="21" green="0" blue="180" shape="SQUARE">Major</entry> <entry key="i2d7a54" count="2" color="#1500b4" shape="SQUARE">Major</entry>
<entry key="i56be10" count="1" red="117" green="0" blue="175" shape="SQUARE">Main</entry> <entry key="i56be10" count="1" color="#7500af" shape="SQUARE">Main</entry>
</importance> </importance>
</settings> </settings>
<content items="27" novelWords="954" notesWords="409" novelChars="0" notesChars="0"> <content items="27" novelWords="954" notesWords="409" novelChars="0" notesChars="0">
+2 -2
View File
@@ -547,8 +547,8 @@ def testCoreItem_ClassDefaults(mockGUI):
def testCoreItem_PackUnpack(mockGUI, caplog, mockRnd): def testCoreItem_PackUnpack(mockGUI, caplog, mockRnd):
"""Test packing and unpacking entries for the NWItem class.""" """Test packing and unpacking entries for the NWItem class."""
project = NWProject() project = NWProject()
project.data.itemStatus.add(None, "New", (100, 100, 100), "SQUARE", 0) project.data.itemStatus.add(None, "New", "#646464", "SQUARE", 0)
project.data.itemImport.add(None, "New", (100, 100, 100), "SQUARE", 0) project.data.itemImport.add(None, "New", "#646464", "SQUARE", 0)
# Invalid # Invalid
item = NWItem(project, "0000000000000") item = NWItem(project, "0000000000000")
+146 -70
View File
@@ -27,12 +27,11 @@ from shutil import copyfile
import pytest import pytest
from PyQt6.QtGui import QColor
from novelwriter.constants import nwFiles from novelwriter.constants import nwFiles
from novelwriter.core.item import NWItem from novelwriter.core.item import NWItem
from novelwriter.core.projectdata import NWProjectData from novelwriter.core.projectdata import NWProjectData
from novelwriter.core.projectxml import ProjectXMLReader, ProjectXMLWriter, XMLReadState from novelwriter.core.projectxml import ProjectXMLReader, ProjectXMLWriter, XMLReadState
from novelwriter.core.status import CUSTOM_COL
from novelwriter.enum import nwStatusShape from novelwriter.enum import nwStatusShape
from tests.mocked import causeOSError from tests.mocked import causeOSError
@@ -137,7 +136,7 @@ def testCoreProjectXML_ReadCurrent(monkeypatch, mockGUI, tstPaths, fncPath):
assert xmlReader.state == XMLReadState.PARSED_OK assert xmlReader.state == XMLReadState.PARSED_OK
assert xmlReader.xmlRoot == "novelWriterXML" assert xmlReader.xmlRoot == "novelWriterXML"
assert xmlReader.xmlVersion == 0x0105 assert xmlReader.xmlVersion == 0x0105
assert xmlReader.xmlRevision == 5 assert xmlReader.xmlRevision == 6
assert xmlReader.appVersion == "2.7b1" assert xmlReader.appVersion == "2.7b1"
assert xmlReader.hexVersion == 0x020700b1 assert xmlReader.hexVersion == 0x020700b1
@@ -173,19 +172,31 @@ def testCoreProjectXML_ReadCurrent(monkeypatch, mockGUI, tstPaths, fncPath):
assert data.itemImport["i2d7a54"].name == "Major" assert data.itemImport["i2d7a54"].name == "Major"
assert data.itemImport["i56be10"].name == "Main" assert data.itemImport["i56be10"].name == "Main"
assert data.itemStatus["sf12341"].color == QColor(100, 100, 100) assert data.itemStatus["sf12341"].color.getRgb() == (100, 100, 100, 255)
assert data.itemStatus["sf24ce6"].color == QColor(200, 50, 0) assert data.itemStatus["sf24ce6"].color.getRgb() == (200, 50, 0, 255)
assert data.itemStatus["sc24b8f"].color == QColor(182, 60, 0) assert data.itemStatus["sc24b8f"].color.getRgb() == (182, 60, 0, 255)
assert data.itemStatus["s90e6c9"].color == QColor(193, 129, 0) assert data.itemStatus["s90e6c9"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["sd51c5b"].color == QColor(193, 129, 0) assert data.itemStatus["sd51c5b"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s8ae72a"].color == QColor(193, 129, 0) assert data.itemStatus["s8ae72a"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s78ea90"].color == QColor(58, 180, 58) assert data.itemStatus["s78ea90"].color.getRgb() == (58, 180, 58, 255)
assert data.itemImport["ia857f0"].color == QColor(100, 100, 100) assert data.itemImport["ia857f0"].color.getRgb() == (100, 100, 100, 255)
assert data.itemImport["i4a1d39"].color == QColor(220, 138, 221) assert data.itemImport["icfb3a5"].color.getRgb() == (220, 138, 221, 255)
assert data.itemImport["icfb3a5"].color == QColor(220, 138, 221) assert data.itemImport["i2d7a54"].color.getRgb() == (220, 138, 221, 255)
assert data.itemImport["i2d7a54"].color == QColor(220, 138, 221) assert data.itemImport["i56be10"].color.getRgb() == (220, 138, 221, 255)
assert data.itemImport["i56be10"].color == QColor(220, 138, 221)
assert data.itemStatus["sf12341"].theme == CUSTOM_COL
assert data.itemStatus["sf24ce6"].theme == CUSTOM_COL
assert data.itemStatus["sc24b8f"].theme == CUSTOM_COL
assert data.itemStatus["s90e6c9"].theme == CUSTOM_COL
assert data.itemStatus["sd51c5b"].theme == CUSTOM_COL
assert data.itemStatus["s8ae72a"].theme == CUSTOM_COL
assert data.itemStatus["s78ea90"].theme == CUSTOM_COL
assert data.itemImport["ia857f0"].theme == CUSTOM_COL
assert data.itemImport["icfb3a5"].theme == CUSTOM_COL
assert data.itemImport["i2d7a54"].theme == CUSTOM_COL
assert data.itemImport["i56be10"].theme == CUSTOM_COL
assert data.itemStatus["sf12341"].shape == nwStatusShape.SQUARE assert data.itemStatus["sf12341"].shape == nwStatusShape.SQUARE
assert data.itemStatus["sf24ce6"].shape == nwStatusShape.SQUARE assert data.itemStatus["sf24ce6"].shape == nwStatusShape.SQUARE
@@ -305,18 +316,31 @@ def testCoreProjectXML_ReadLegacy10(tstPaths, fncPath, mockGUI, mockRnd):
assert data.itemImport["i000009"].name == "Major" assert data.itemImport["i000009"].name == "Major"
assert data.itemImport["i00000a"].name == "Main" assert data.itemImport["i00000a"].name == "Main"
assert data.itemStatus["s000000"].color == QColor(100, 100, 100) assert data.itemStatus["s000000"].color.getRgb() == (100, 100, 100, 255)
assert data.itemStatus["s000001"].color == QColor(200, 50, 0) assert data.itemStatus["s000001"].color.getRgb() == (200, 50, 0, 255)
assert data.itemStatus["s000002"].color == QColor(182, 60, 0) assert data.itemStatus["s000002"].color.getRgb() == (182, 60, 0, 255)
assert data.itemStatus["s000003"].color == QColor(193, 129, 0) assert data.itemStatus["s000003"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000004"].color == QColor(193, 129, 0) assert data.itemStatus["s000004"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000005"].color == QColor(193, 129, 0) assert data.itemStatus["s000005"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000006"].color == QColor(58, 180, 58) assert data.itemStatus["s000006"].color.getRgb() == (58, 180, 58, 255)
assert data.itemImport["i000007"].color == QColor(100, 100, 100) assert data.itemImport["i000007"].color.getRgb() == (100, 100, 100, 255)
assert data.itemImport["i000008"].color == QColor(0, 122, 188) assert data.itemImport["i000008"].color.getRgb() == (0, 122, 188, 255)
assert data.itemImport["i000009"].color == QColor(21, 0, 180) assert data.itemImport["i000009"].color.getRgb() == (21, 0, 180, 255)
assert data.itemImport["i00000a"].color == QColor(117, 0, 175) assert data.itemImport["i00000a"].color.getRgb() == (117, 0, 175, 255)
assert data.itemStatus["s000000"].theme == CUSTOM_COL
assert data.itemStatus["s000001"].theme == CUSTOM_COL
assert data.itemStatus["s000002"].theme == CUSTOM_COL
assert data.itemStatus["s000003"].theme == CUSTOM_COL
assert data.itemStatus["s000004"].theme == CUSTOM_COL
assert data.itemStatus["s000005"].theme == CUSTOM_COL
assert data.itemStatus["s000006"].theme == CUSTOM_COL
assert data.itemImport["i000007"].theme == CUSTOM_COL
assert data.itemImport["i000008"].theme == CUSTOM_COL
assert data.itemImport["i000009"].theme == CUSTOM_COL
assert data.itemImport["i00000a"].theme == CUSTOM_COL
assert data.itemStatus["s000000"].shape == nwStatusShape.SQUARE assert data.itemStatus["s000000"].shape == nwStatusShape.SQUARE
assert data.itemStatus["s000001"].shape == nwStatusShape.SQUARE assert data.itemStatus["s000001"].shape == nwStatusShape.SQUARE
@@ -450,18 +474,31 @@ def testCoreProjectXML_ReadLegacy11(tstPaths, fncPath, mockGUI, mockRnd):
assert data.itemImport["i000009"].name == "Major" assert data.itemImport["i000009"].name == "Major"
assert data.itemImport["i00000a"].name == "Main" assert data.itemImport["i00000a"].name == "Main"
assert data.itemStatus["s000000"].color == QColor(100, 100, 100) assert data.itemStatus["s000000"].color.getRgb() == (100, 100, 100, 255)
assert data.itemStatus["s000001"].color == QColor(200, 50, 0) assert data.itemStatus["s000001"].color.getRgb() == (200, 50, 0, 255)
assert data.itemStatus["s000002"].color == QColor(182, 60, 0) assert data.itemStatus["s000002"].color.getRgb() == (182, 60, 0, 255)
assert data.itemStatus["s000003"].color == QColor(193, 129, 0) assert data.itemStatus["s000003"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000004"].color == QColor(193, 129, 0) assert data.itemStatus["s000004"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000005"].color == QColor(193, 129, 0) assert data.itemStatus["s000005"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000006"].color == QColor(58, 180, 58) assert data.itemStatus["s000006"].color.getRgb() == (58, 180, 58, 255)
assert data.itemImport["i000007"].color == QColor(100, 100, 100) assert data.itemImport["i000007"].color.getRgb() == (100, 100, 100, 255)
assert data.itemImport["i000008"].color == QColor(0, 122, 188) assert data.itemImport["i000008"].color.getRgb() == (0, 122, 188, 255)
assert data.itemImport["i000009"].color == QColor(21, 0, 180) assert data.itemImport["i000009"].color.getRgb() == (21, 0, 180, 255)
assert data.itemImport["i00000a"].color == QColor(117, 0, 175) assert data.itemImport["i00000a"].color.getRgb() == (117, 0, 175, 255)
assert data.itemStatus["s000000"].theme == CUSTOM_COL
assert data.itemStatus["s000001"].theme == CUSTOM_COL
assert data.itemStatus["s000002"].theme == CUSTOM_COL
assert data.itemStatus["s000003"].theme == CUSTOM_COL
assert data.itemStatus["s000004"].theme == CUSTOM_COL
assert data.itemStatus["s000005"].theme == CUSTOM_COL
assert data.itemStatus["s000006"].theme == CUSTOM_COL
assert data.itemImport["i000007"].theme == CUSTOM_COL
assert data.itemImport["i000008"].theme == CUSTOM_COL
assert data.itemImport["i000009"].theme == CUSTOM_COL
assert data.itemImport["i00000a"].theme == CUSTOM_COL
assert data.itemStatus["s000000"].shape == nwStatusShape.SQUARE assert data.itemStatus["s000000"].shape == nwStatusShape.SQUARE
assert data.itemStatus["s000001"].shape == nwStatusShape.SQUARE assert data.itemStatus["s000001"].shape == nwStatusShape.SQUARE
@@ -595,18 +632,31 @@ def testCoreProjectXML_ReadLegacy12(tstPaths, fncPath, mockGUI, mockRnd):
assert data.itemImport["i000009"].name == "Major" assert data.itemImport["i000009"].name == "Major"
assert data.itemImport["i00000a"].name == "Main" assert data.itemImport["i00000a"].name == "Main"
assert data.itemStatus["s000000"].color == QColor(100, 100, 100) assert data.itemStatus["s000000"].color.getRgb() == (100, 100, 100, 255)
assert data.itemStatus["s000001"].color == QColor(200, 50, 0) assert data.itemStatus["s000001"].color.getRgb() == (200, 50, 0, 255)
assert data.itemStatus["s000002"].color == QColor(182, 60, 0) assert data.itemStatus["s000002"].color.getRgb() == (182, 60, 0, 255)
assert data.itemStatus["s000003"].color == QColor(193, 129, 0) assert data.itemStatus["s000003"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000004"].color == QColor(193, 129, 0) assert data.itemStatus["s000004"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000005"].color == QColor(193, 129, 0) assert data.itemStatus["s000005"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000006"].color == QColor(58, 180, 58) assert data.itemStatus["s000006"].color.getRgb() == (58, 180, 58, 255)
assert data.itemImport["i000007"].color == QColor(100, 100, 100) assert data.itemImport["i000007"].color.getRgb() == (100, 100, 100, 255)
assert data.itemImport["i000008"].color == QColor(0, 122, 188) assert data.itemImport["i000008"].color.getRgb() == (0, 122, 188, 255)
assert data.itemImport["i000009"].color == QColor(21, 0, 180) assert data.itemImport["i000009"].color.getRgb() == (21, 0, 180, 255)
assert data.itemImport["i00000a"].color == QColor(117, 0, 175) assert data.itemImport["i00000a"].color.getRgb() == (117, 0, 175, 255)
assert data.itemStatus["s000000"].theme == CUSTOM_COL
assert data.itemStatus["s000001"].theme == CUSTOM_COL
assert data.itemStatus["s000002"].theme == CUSTOM_COL
assert data.itemStatus["s000003"].theme == CUSTOM_COL
assert data.itemStatus["s000004"].theme == CUSTOM_COL
assert data.itemStatus["s000005"].theme == CUSTOM_COL
assert data.itemStatus["s000006"].theme == CUSTOM_COL
assert data.itemImport["i000007"].theme == CUSTOM_COL
assert data.itemImport["i000008"].theme == CUSTOM_COL
assert data.itemImport["i000009"].theme == CUSTOM_COL
assert data.itemImport["i00000a"].theme == CUSTOM_COL
assert data.itemStatus["s000000"].shape == nwStatusShape.SQUARE assert data.itemStatus["s000000"].shape == nwStatusShape.SQUARE
assert data.itemStatus["s000001"].shape == nwStatusShape.SQUARE assert data.itemStatus["s000001"].shape == nwStatusShape.SQUARE
@@ -743,18 +793,31 @@ def testCoreProjectXML_ReadLegacy13(tstPaths, fncPath, mockGUI, mockRnd):
assert data.itemImport["i000009"].name == "Major" assert data.itemImport["i000009"].name == "Major"
assert data.itemImport["i00000a"].name == "Main" assert data.itemImport["i00000a"].name == "Main"
assert data.itemStatus["s000000"].color == QColor(100, 100, 100) assert data.itemStatus["s000000"].color.getRgb() == (100, 100, 100, 255)
assert data.itemStatus["s000001"].color == QColor(200, 50, 0) assert data.itemStatus["s000001"].color.getRgb() == (200, 50, 0, 255)
assert data.itemStatus["s000002"].color == QColor(182, 60, 0) assert data.itemStatus["s000002"].color.getRgb() == (182, 60, 0, 255)
assert data.itemStatus["s000003"].color == QColor(193, 129, 0) assert data.itemStatus["s000003"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000004"].color == QColor(193, 129, 0) assert data.itemStatus["s000004"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000005"].color == QColor(193, 129, 0) assert data.itemStatus["s000005"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s000006"].color == QColor(58, 180, 58) assert data.itemStatus["s000006"].color.getRgb() == (58, 180, 58, 255)
assert data.itemImport["i000007"].color == QColor(100, 100, 100) assert data.itemImport["i000007"].color.getRgb() == (100, 100, 100, 255)
assert data.itemImport["i000008"].color == QColor(0, 122, 188) assert data.itemImport["i000008"].color.getRgb() == (0, 122, 188, 255)
assert data.itemImport["i000009"].color == QColor(21, 0, 180) assert data.itemImport["i000009"].color.getRgb() == (21, 0, 180, 255)
assert data.itemImport["i00000a"].color == QColor(117, 0, 175) assert data.itemImport["i00000a"].color.getRgb() == (117, 0, 175, 255)
assert data.itemStatus["s000000"].theme == CUSTOM_COL
assert data.itemStatus["s000001"].theme == CUSTOM_COL
assert data.itemStatus["s000002"].theme == CUSTOM_COL
assert data.itemStatus["s000003"].theme == CUSTOM_COL
assert data.itemStatus["s000004"].theme == CUSTOM_COL
assert data.itemStatus["s000005"].theme == CUSTOM_COL
assert data.itemStatus["s000006"].theme == CUSTOM_COL
assert data.itemImport["i000007"].theme == CUSTOM_COL
assert data.itemImport["i000008"].theme == CUSTOM_COL
assert data.itemImport["i000009"].theme == CUSTOM_COL
assert data.itemImport["i00000a"].theme == CUSTOM_COL
assert data.itemStatus["s000000"].shape == nwStatusShape.SQUARE assert data.itemStatus["s000000"].shape == nwStatusShape.SQUARE
assert data.itemStatus["s000001"].shape == nwStatusShape.SQUARE assert data.itemStatus["s000001"].shape == nwStatusShape.SQUARE
@@ -891,18 +954,31 @@ def testCoreProjectXML_ReadLegacy14(tstPaths, fncPath, mockGUI, mockRnd):
assert data.itemImport["i2d7a54"].name == "Major" assert data.itemImport["i2d7a54"].name == "Major"
assert data.itemImport["i56be10"].name == "Main" assert data.itemImport["i56be10"].name == "Main"
assert data.itemStatus["sf12341"].color == QColor(100, 100, 100) assert data.itemStatus["sf12341"].color.getRgb() == (100, 100, 100, 255)
assert data.itemStatus["sf24ce6"].color == QColor(200, 50, 0) assert data.itemStatus["sf24ce6"].color.getRgb() == (200, 50, 0, 255)
assert data.itemStatus["sc24b8f"].color == QColor(182, 60, 0) assert data.itemStatus["sc24b8f"].color.getRgb() == (182, 60, 0, 255)
assert data.itemStatus["s90e6c9"].color == QColor(193, 129, 0) assert data.itemStatus["s90e6c9"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["sd51c5b"].color == QColor(193, 129, 0) assert data.itemStatus["sd51c5b"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s8ae72a"].color == QColor(193, 129, 0) assert data.itemStatus["s8ae72a"].color.getRgb() == (193, 129, 0, 255)
assert data.itemStatus["s78ea90"].color == QColor(58, 180, 58) assert data.itemStatus["s78ea90"].color.getRgb() == (58, 180, 58, 255)
assert data.itemImport["ia857f0"].color == QColor(100, 100, 100) assert data.itemImport["ia857f0"].color.getRgb() == (100, 100, 100, 255)
assert data.itemImport["icfb3a5"].color == QColor(0, 122, 188) assert data.itemImport["icfb3a5"].color.getRgb() == (0, 122, 188, 255)
assert data.itemImport["i2d7a54"].color == QColor(21, 0, 180) assert data.itemImport["i2d7a54"].color.getRgb() == (21, 0, 180, 255)
assert data.itemImport["i56be10"].color == QColor(117, 0, 175) assert data.itemImport["i56be10"].color.getRgb() == (117, 0, 175, 255)
assert data.itemStatus["sf12341"].theme == CUSTOM_COL
assert data.itemStatus["sf24ce6"].theme == CUSTOM_COL
assert data.itemStatus["sc24b8f"].theme == CUSTOM_COL
assert data.itemStatus["s90e6c9"].theme == CUSTOM_COL
assert data.itemStatus["sd51c5b"].theme == CUSTOM_COL
assert data.itemStatus["s8ae72a"].theme == CUSTOM_COL
assert data.itemStatus["s78ea90"].theme == CUSTOM_COL
assert data.itemImport["ia857f0"].theme == CUSTOM_COL
assert data.itemImport["icfb3a5"].theme == CUSTOM_COL
assert data.itemImport["i2d7a54"].theme == CUSTOM_COL
assert data.itemImport["i56be10"].theme == CUSTOM_COL
assert data.itemStatus["sf12341"].shape == nwStatusShape.SQUARE assert data.itemStatus["sf12341"].shape == nwStatusShape.SQUARE
assert data.itemStatus["sf24ce6"].shape == nwStatusShape.SQUARE assert data.itemStatus["sf24ce6"].shape == nwStatusShape.SQUARE
+45 -48
View File
@@ -24,7 +24,7 @@ import pytest
from PyQt6.QtGui import QColor, QIcon from PyQt6.QtGui import QColor, QIcon
from novelwriter.core.status import NWStatus, StatusEntry, _ShapeCache from novelwriter.core.status import CUSTOM_COL, NWStatus, StatusEntry, _ShapeCache
from novelwriter.enum import nwStatusShape from novelwriter.enum import nwStatusShape
from tests.tools import C from tests.tools import C
@@ -38,11 +38,12 @@ def testCoreStatus_StatusEntry():
"""Test the StatusEntry class.""" """Test the StatusEntry class."""
color = QColor(255, 0, 0) color = QColor(255, 0, 0)
icon = NWStatus.createIcon(24, color, nwStatusShape.CIRCLE) icon = NWStatus.createIcon(24, color, nwStatusShape.CIRCLE)
entry = StatusEntry("Test", color, nwStatusShape.CIRCLE, icon, 42) entry = StatusEntry("Test", color, CUSTOM_COL, nwStatusShape.CIRCLE, icon, 42)
# Check values # Check values
assert entry.name == "Test" assert entry.name == "Test"
assert entry.color is color assert entry.color is color
assert entry.theme == CUSTOM_COL
assert entry.shape == nwStatusShape.CIRCLE assert entry.shape == nwStatusShape.CIRCLE
assert entry.icon is icon assert entry.icon is icon
assert entry.count == 42 assert entry.count == 42
@@ -55,6 +56,7 @@ def testCoreStatus_StatusEntry():
assert other.name == "Test" assert other.name == "Test"
assert other.color is not color # Not the same object assert other.color is not color # Not the same object
assert other.color == color # But same colours assert other.color == color # But same colours
assert entry.theme == CUSTOM_COL
assert other.shape == nwStatusShape.CIRCLE assert other.shape == nwStatusShape.CIRCLE
assert other.icon is not icon # Not the same icon, but a copy assert other.icon is not icon # Not the same icon, but a copy
assert other.count == 42 assert other.count == 42
@@ -73,14 +75,14 @@ def testCoreStatus_Internal(mockGUI, mockRnd):
assert nStatus._newKey() == statusKeys[1] assert nStatus._newKey() == statusKeys[1]
# Key collision, should move to key 3 # Key collision, should move to key 3
nStatus.add(statusKeys[2], "Crash", (0, 0, 0), "SQUARE", 0) nStatus.add(statusKeys[2], "Crash", "#000000", "SQUARE", 0)
assert nStatus._newKey() == statusKeys[3] assert nStatus._newKey() == statusKeys[3]
assert nImport._newKey() == importKeys[0] assert nImport._newKey() == importKeys[0]
assert nImport._newKey() == importKeys[1] assert nImport._newKey() == importKeys[1]
# Key collision, should move to key 3 # Key collision, should move to key 3
nImport.add(importKeys[2], "Crash", (0, 0, 0), "SQUARE", 0) nImport.add(importKeys[2], "Crash", "#000000", "SQUARE", 0)
assert nImport._newKey() == importKeys[3] assert nImport._newKey() == importKeys[3]
# Check Key # Check Key
@@ -119,14 +121,14 @@ def testCoreStatus_Internal(mockGUI, mockRnd):
def testCoreStatus_Iterator(mockGUI, mockRnd): def testCoreStatus_Iterator(mockGUI, mockRnd):
"""Test the iterator functions of the NWStatus class.""" """Test the iterator functions of the NWStatus class."""
nStatus = NWStatus(NWStatus.STATUS) nStatus = NWStatus(NWStatus.STATUS)
nStatus.add(None, "New", (100, 100, 100), "SQUARE", 0) nStatus.add(None, "New", "#646464", "SQUARE", 0)
nStatus.add(None, "Note", (200, 50, 0), "CIRCLE", 1) nStatus.add(None, "Note", "#ff3f00", "CIRCLE", 1)
nStatus.add(None, "Draft", (200, 150, 0), "SQUARE", 2) nStatus.add(None, "Draft", "#ffaf00", "SQUARE", 2)
nStatus.add(None, "Finished", (50, 200, 0), "CIRCLE", 3) nStatus.add(None, "Finished", "#3fff00", "CIRCLE", 3)
# Direct access # Direct access
entry = nStatus[statusKeys[0]] entry = nStatus[statusKeys[0]]
assert entry.color == QColor(100, 100, 100) assert entry.color.getRgb() == (100, 100, 100, 255)
assert entry.name == "New" assert entry.name == "New"
assert entry.count == 0 assert entry.count == 0
assert isinstance(entry.icon, QIcon) assert isinstance(entry.icon, QIcon)
@@ -146,8 +148,8 @@ def testCoreStatus_Iterator(mockGUI, mockRnd):
] ]
# Content : Colours # Content : Colours
assert [e.color for _, e in nStatus.iterItems()] == [ assert [e.color.getRgb() for _, e in nStatus.iterItems()] == [
QColor(100, 100, 100), QColor(200, 50, 0), QColor(200, 150, 0), QColor(50, 200, 0) (100, 100, 100, 255), (255, 63, 0, 255), (255, 175, 0, 255), (63, 255, 0, 255)
] ]
# Content : Shape # Content : Shape
@@ -168,27 +170,31 @@ def testCoreStatus_Entries(mockGUI, mockRnd):
# === # ===
# Has a key # Has a key
nStatus.add(statusKeys[0], "Entry 1", (200, 100, 50), "SQUARE", 0) nStatus.add(statusKeys[0], "Entry 1", "200, 100, 50", "SQUARE", 0)
assert nStatus[statusKeys[0]].name == "Entry 1" assert nStatus[statusKeys[0]].name == "Entry 1"
assert nStatus[statusKeys[0]].color == QColor(200, 100, 50) assert nStatus[statusKeys[0]].color.getRgb() == (200, 100, 50, 255)
assert nStatus[statusKeys[0]].theme == CUSTOM_COL
assert nStatus[statusKeys[0]].shape == nwStatusShape.SQUARE assert nStatus[statusKeys[0]].shape == nwStatusShape.SQUARE
# Doesn't have a key # Doesn't have a key
nStatus.add(None, "Entry 2", (210, 110, 60), "SQUARE", 0) nStatus.add(None, "Entry 2", "210, 110, 60", "SQUARE", 0)
assert nStatus[statusKeys[1]].name == "Entry 2" assert nStatus[statusKeys[1]].name == "Entry 2"
assert nStatus[statusKeys[1]].color == QColor(210, 110, 60) assert nStatus[statusKeys[1]].color.getRgb() == (210, 110, 60, 255)
assert nStatus[statusKeys[1]].theme == CUSTOM_COL
assert nStatus[statusKeys[1]].shape == nwStatusShape.SQUARE assert nStatus[statusKeys[1]].shape == nwStatusShape.SQUARE
# Wrong colour spec, unknown shape # Wrong colour spec, unknown shape
nStatus.add(None, "Entry 3", "what?", "", 0) # type: ignore nStatus.add(None, "Entry 3", "what?", "", 0)
assert nStatus[statusKeys[2]].name == "Entry 3" assert nStatus[statusKeys[2]].name == "Entry 3"
assert nStatus[statusKeys[2]].color == QColor(100, 100, 100) assert nStatus[statusKeys[2]].color.getRgb() == (0, 0, 0, 255)
assert nStatus[statusKeys[2]].theme == CUSTOM_COL
assert nStatus[statusKeys[2]].shape == nwStatusShape.SQUARE assert nStatus[statusKeys[2]].shape == nwStatusShape.SQUARE
# Wrong colour count # Wrong colour definition
nStatus.add(None, "Entry 4", (10, 20), "CIRCLE", 0) # type: ignore nStatus.add(None, "Entry 4", "#stuff#", "CIRCLE", 0)
assert nStatus[statusKeys[3]].name == "Entry 4" assert nStatus[statusKeys[3]].name == "Entry 4"
assert nStatus[statusKeys[3]].color == QColor(100, 100, 100) assert nStatus[statusKeys[3]].color.getRgb() == (0, 0, 0, 255)
assert nStatus[statusKeys[3]].theme == CUSTOM_COL
assert nStatus[statusKeys[3]].shape == nwStatusShape.CIRCLE assert nStatus[statusKeys[3]].shape == nwStatusShape.CIRCLE
# Check # Check
@@ -202,8 +208,6 @@ def testCoreStatus_Entries(mockGUI, mockRnd):
assert nStatus.check("s987654") == statusKeys[0] assert nStatus.check("s987654") == statusKeys[0]
# Name Access # Name Access
# ===========
assert nStatus[statusKeys[0]].name == "Entry 1" assert nStatus[statusKeys[0]].name == "Entry 1"
assert nStatus[statusKeys[1]].name == "Entry 2" assert nStatus[statusKeys[1]].name == "Entry 2"
assert nStatus[statusKeys[2]].name == "Entry 3" assert nStatus[statusKeys[2]].name == "Entry 3"
@@ -211,17 +215,20 @@ def testCoreStatus_Entries(mockGUI, mockRnd):
assert nStatus["blablabla"].name == "Entry 1" assert nStatus["blablabla"].name == "Entry 1"
# Colour Access # Colour Access
# ============= assert nStatus[statusKeys[0]].color.getRgb() == (200, 100, 50, 255)
assert nStatus[statusKeys[1]].color.getRgb() == (210, 110, 60, 255)
assert nStatus[statusKeys[2]].color.getRgb() == (0, 0, 0, 255)
assert nStatus[statusKeys[3]].color.getRgb() == (0, 0, 0, 255)
assert nStatus["blablabla"].color.getRgb() == (200, 100, 50, 255)
assert nStatus[statusKeys[0]].color == QColor(200, 100, 50) # Theme Access
assert nStatus[statusKeys[1]].color == QColor(210, 110, 60) assert nStatus[statusKeys[0]].theme == CUSTOM_COL
assert nStatus[statusKeys[2]].color == QColor(100, 100, 100) assert nStatus[statusKeys[1]].theme == CUSTOM_COL
assert nStatus[statusKeys[3]].color == QColor(100, 100, 100) assert nStatus[statusKeys[2]].theme == CUSTOM_COL
assert nStatus["blablabla"].color == QColor(200, 100, 50) assert nStatus[statusKeys[3]].theme == CUSTOM_COL
assert nStatus["blablabla"].theme == CUSTOM_COL
# Icon Access # Icon Access
# ===========
assert isinstance(nStatus[statusKeys[0]].icon, QIcon) assert isinstance(nStatus[statusKeys[0]].icon, QIcon)
assert isinstance(nStatus[statusKeys[1]].icon, QIcon) assert isinstance(nStatus[statusKeys[1]].icon, QIcon)
assert isinstance(nStatus[statusKeys[2]].icon, QIcon) assert isinstance(nStatus[statusKeys[2]].icon, QIcon)
@@ -229,8 +236,6 @@ def testCoreStatus_Entries(mockGUI, mockRnd):
assert isinstance(nStatus["blablabla"].icon, QIcon) assert isinstance(nStatus["blablabla"].icon, QIcon)
# Shape Access # Shape Access
# ============
assert nStatus[statusKeys[0]].shape == nwStatusShape.SQUARE assert nStatus[statusKeys[0]].shape == nwStatusShape.SQUARE
assert nStatus[statusKeys[1]].shape == nwStatusShape.SQUARE assert nStatus[statusKeys[1]].shape == nwStatusShape.SQUARE
assert nStatus[statusKeys[2]].shape == nwStatusShape.SQUARE assert nStatus[statusKeys[2]].shape == nwStatusShape.SQUARE
@@ -322,10 +327,10 @@ def testCoreStatus_Entries(mockGUI, mockRnd):
def testCoreStatus_Pack(mockGUI, mockRnd): def testCoreStatus_Pack(mockGUI, mockRnd):
"""Test data packing of the NWStatus class.""" """Test data packing of the NWStatus class."""
nStatus = NWStatus(NWStatus.STATUS) nStatus = NWStatus(NWStatus.STATUS)
nStatus.add(None, "New", (100, 100, 100), "SQUARE", 0) nStatus.add(None, "New", "#646464", "SQUARE", 0)
nStatus.add(None, "Note", (200, 50, 0), "CIRCLE", 0) nStatus.add(None, "Note", "#c83200", "CIRCLE", 0)
nStatus.add(None, "Draft", (200, 150, 0), "SQUARE", 0) nStatus.add(None, "Draft", "#c89600", "SQUARE", 0)
nStatus.add(None, "Finished", (50, 200, 0), "SQUARE", 0) nStatus.add(None, "Finished", "#32c800", "SQUARE", 0)
countTo = [3, 5, 7, 9] countTo = [3, 5, 7, 9]
for i, n in enumerate(countTo): for i, n in enumerate(countTo):
@@ -337,33 +342,25 @@ def testCoreStatus_Pack(mockGUI, mockRnd):
("New", { ("New", {
"key": statusKeys[0], "key": statusKeys[0],
"count": "3", "count": "3",
"red": "100", "color": "#646464",
"green": "100",
"blue": "100",
"shape": "SQUARE", "shape": "SQUARE",
}), }),
("Note", { ("Note", {
"key": statusKeys[1], "key": statusKeys[1],
"count": "5", "count": "5",
"red": "200", "color": "#c83200",
"green": "50",
"blue": "0",
"shape": "CIRCLE", "shape": "CIRCLE",
}), }),
("Draft", { ("Draft", {
"key": statusKeys[2], "key": statusKeys[2],
"count": "7", "count": "7",
"red": "200", "color": "#c89600",
"green": "150",
"blue": "0",
"shape": "SQUARE", "shape": "SQUARE",
}), }),
("Finished", { ("Finished", {
"key": statusKeys[3], "key": statusKeys[3],
"count": "9", "count": "9",
"red": "50", "color": "#32c800",
"green": "200",
"blue": "0",
"shape": "SQUARE", "shape": "SQUARE",
}), }),
] ]
+12 -12
View File
@@ -214,22 +214,22 @@ def testDlgProjSettings_StatusImport(qtbot, monkeypatch, nwGUI, projPath, mockRn
assert update[0][0] == C.sNew assert update[0][0] == C.sNew
assert update[0][1].name == "New" assert update[0][1].name == "New"
assert update[0][1].color == QColor(120, 120, 120) assert update[0][1].color.getRgb() == (108, 108, 108, 255)
assert update[0][1].shape == nwStatusShape.STAR assert update[0][1].shape == nwStatusShape.STAR
assert update[1][0] == C.sDraft assert update[1][0] == C.sDraft
assert update[1][1].name == "Draft" assert update[1][1].name == "Draft"
assert update[1][1].color == QColor(143, 240, 164) assert update[1][1].color.getRgb() == (163, 156, 52, 255)
assert update[1][1].shape == nwStatusShape.CIRCLE_T assert update[1][1].shape == nwStatusShape.CIRCLE_T
assert update[2][0] == C.sFinished assert update[2][0] == C.sFinished
assert update[2][1].name == "Finished" assert update[2][1].name == "Finished"
assert update[2][1].color == QColor(249, 240, 107) assert update[2][1].color.getRgb() == (41, 102, 41, 255)
assert update[2][1].shape == nwStatusShape.STAR assert update[2][1].shape == nwStatusShape.STAR
assert update[3][0] is None assert update[3][0] is None
assert update[3][1].name == "Final" assert update[3][1].name == "Final"
assert update[3][1].color == QColor(20, 30, 40) assert update[3][1].color.getRgb() == (20, 30, 40, 255)
assert update[3][1].shape == nwStatusShape.CIRCLE assert update[3][1].shape == nwStatusShape.CIRCLE
# Move items, none selected -> no change # Move items, none selected -> no change
@@ -289,22 +289,22 @@ def testDlgProjSettings_StatusImport(qtbot, monkeypatch, nwGUI, projPath, mockRn
assert update[0][0] == C.iNew assert update[0][0] == C.iNew
assert update[0][1].name == "New" assert update[0][1].name == "New"
assert update[0][1].color == QColor(120, 120, 120) assert update[0][1].color.getRgb() == (179, 90, 179, 255)
assert update[0][1].shape == nwStatusShape.SQUARE assert update[0][1].shape == nwStatusShape.SQUARE
assert update[1][0] == C.iMajor assert update[1][0] == C.iMajor
assert update[1][1].name == "Major" assert update[1][1].name == "Major"
assert update[1][1].color == QColor(220, 138, 221) assert update[1][1].color.getRgb() == (179, 90, 179, 255)
assert update[1][1].shape == nwStatusShape.BLOCK_3 assert update[1][1].shape == nwStatusShape.BLOCK_3
assert update[2][0] == C.iMain assert update[2][0] == C.iMain
assert update[2][1].name == "Main" assert update[2][1].name == "Main"
assert update[2][1].color == QColor(220, 138, 221) assert update[2][1].color.getRgb() == (179, 90, 179, 255)
assert update[2][1].shape == nwStatusShape.BLOCK_4 assert update[2][1].shape == nwStatusShape.BLOCK_4
assert update[3][0] is None assert update[3][0] is None
assert update[3][1].name == "Final" assert update[3][1].name == "Final"
assert update[3][1].color == QColor(20, 30, 40) assert update[3][1].color.getRgb() == (20, 30, 40, 255)
assert update[3][1].shape == nwStatusShape.TRIANGLE assert update[3][1].shape == nwStatusShape.TRIANGLE
# Check Project # Check Project
@@ -354,10 +354,10 @@ def testDlgProjSettings_StatusImportExport(qtbot, monkeypatch, nwGUI, projPath,
assert expFile.is_file() is True assert expFile.is_file() is True
assert expFile.read_text().split() == [ assert expFile.read_text().split() == [
"STAR,#787878,New", "STAR,#6c6c6c,New",
"TRIANGLE,#cdab8f,Note", "TRIANGLE,#a62a2d,Note",
"CIRCLE_T,#8ff0a4,Draft", "CIRCLE_T,#a39c34,Draft",
"STAR,#f9f06b,Finished", "STAR,#296629,Finished",
] ]
# Import Error # Import Error
+1 -1
View File
@@ -224,7 +224,7 @@ def testGuiViewerPanel_Tags(qtbot, monkeypatch, caplog, nwGUI, projPath, mockRnd
# Update Labels # Update Labels
assert charTab.topLevelItem(0).text(charTab.C_IMPORT) == "New" assert charTab.topLevelItem(0).text(charTab.C_IMPORT) == "New"
SHARED.project.data.itemImport.add(C.iNew, "Stuff", (100, 100, 100), "SQUARE", 0) SHARED.project.data.itemImport.add(C.iNew, "Stuff", "#646464", "SQUARE", 0)
viewPanel.updateStatusLabels("i") viewPanel.updateStatusLabels("i")
assert charTab.topLevelItem(0).text(charTab.C_IMPORT) == "Stuff" assert charTab.topLevelItem(0).text(charTab.C_IMPORT) == "Stuff"