Compare commits

..

6 Commits

Author SHA1 Message Date
cea2d6fb3c Prepared update text for v0.2 2025-04-05 22:08:01 +08:00
40162df437 Ready for testing v0.2 2025-04-05 22:02:39 +08:00
2fb9e0a909 removed old files 2025-04-05 16:48:16 +08:00
2b8c795808 updated copyright text 2025-04-05 16:47:04 +08:00
67daccb6cc worked on UI some more 2025-04-05 16:35:19 +08:00
2532525817 created updating sidebar for visual signposting 2025-04-05 16:03:55 +08:00
25 changed files with 478 additions and 231 deletions

View File

@ -1,6 +1,6 @@
# Copyrights
This document attributes the different components used to build the Time Sampling Form application (c) 2022 Jaap Marsman.
This document attributes the different components used to build the Time Sampling Form application (c) 2022-Present Jaap Marsman.
## The engine: Godot

Binary file not shown.

Before

Width:  |  Height:  |  Size: 505 B

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g fill="#ffffff">
<path d="m1110 330h-210v-180c0-16.801-13.199-30-30-30h-780c-16.801 0-30 13.199-30 30v540c0 16.801 13.199 30 30 30h60v120c0 13.199 9.6016 25.199 21.602 28.801 2.3984 1.1992 4.8008 1.1992 8.3984 1.1992 10.801 0 20.398-4.8008 25.199-14.398l81.602-135.6h13.199v180c0 16.801 13.199 30 30 30h583.2l81.602 135.6c6 9.6016 15.602 14.398 25.199 14.398 2.3984 0 4.8008 0 8.3984-1.1992 13.199-3.6016 21.602-15.602 21.602-28.801v-120h60c16.801 0 30-13.199 30-30v-540c0-16.801-13.199-30-30-30zm-30 540h-60c-16.801 0-30 13.199-30 30v42l-34.801-57.602c-6-9.6016-15.602-14.398-25.199-14.398h-570v-150h510c16.801 0 30-13.199 30-30v-300h180zm-835.2-195.6-34.801 57.602v-42c0-16.801-13.199-30-30-30h-60v-480h720v480h-570c-10.801 0-20.398 6-25.199 14.398z"/>
</svg>
</g></svg>

Before

Width:  |  Height:  |  Size: 895 B

After

Width:  |  Height:  |  Size: 919 B

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g>
<g fill="#ffffff">
<path d="m1008 60h-816c-73.199 0-132 55.199-132 123.6v620.4c0 68.398 58.801 123.6 132 123.6h86.398v183.6c0 10.801 7.1992 21.602 18 26.398 4.8008 2.3984 8.3984 2.3984 13.199 2.3984 7.1992 0 14.398-2.3984 20.398-6l272.4-206.4h405.61c73.199 0 132-55.199 132-123.6v-620.4c0-68.402-58.801-123.6-132-123.6zm70.801 742.8c0 36-31.199 64.801-69.602 64.801h-418.8c-7.1992 0-14.398 2.3984-20.398 6l-229.2 174v-151.2c0-15.602-14.398-28.801-31.199-28.801h-117.6c-38.398 0-69.602-28.801-69.602-64.801v-616.8c0-36 31.199-64.801 69.602-64.801h818.4c38.398 0 69.602 28.801 69.602 64.801v616.8z"/>
<path d="m530.4 560.4-139.2-244.8h-76.801v350.4h68.402v-248.4l142.8 248.4h73.199v-350.4h-68.402z"/>
<path d="m740.4 315.6h-73.199v350.4h248.4v-63.602h-175.2z"/>

Before

Width:  |  Height:  |  Size: 914 B

After

Width:  |  Height:  |  Size: 929 B

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g>
<g fill="#ffffff">
<path d="m1008 60h-816c-73.199 0-132 55.199-132 123.6v620.4c0 68.398 58.801 123.6 132 123.6h86.398v183.6c0 10.801 7.1992 21.602 18 26.398 4.8008 2.3984 8.3984 2.3984 13.199 2.3984 7.1992 0 14.398-2.3984 20.398-6l272.4-206.4h405.61c73.199 0 132-55.199 132-123.6v-620.4c0-68.402-58.801-123.6-132-123.6zm70.801 742.8c0 36-31.199 64.801-69.602 64.801h-418.8c-7.1992 0-14.398 2.3984-20.398 6l-229.2 174v-151.2c0-15.602-14.398-28.801-31.199-28.801h-117.6c-38.398 0-69.602-28.801-69.602-64.801v-616.8c0-36 31.199-64.801 69.602-64.801h818.4c38.398 0 69.602 28.801 69.602 64.801v616.8z"/>
<path d="m372 512.4h170.4v-60h-170.4v-74.398h184.8v-62.398h-256.8v350.4h265.2v-63.602h-193.2z"/>
<path d="m837.6 560.4-139.2-244.8h-76.797v350.4h68.398v-248.4l142.8 248.4h73.199v-350.4h-68.398z"/>

Before

Width:  |  Height:  |  Size: 950 B

After

Width:  |  Height:  |  Size: 965 B

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g fill="#ffffff">
<path d="m1011.2 308.79-240-240c-5.625-5.6289-13.258-8.7852-21.215-8.7852h-540c-16.57 0-30 13.43-30 30v1020c0 16.57 13.43 30 30 30h780c16.57 0 30-13.43 30-30v-780c0-7.957-3.168-15.59-8.7852-21.215zm-231.21-146.36 137.58 137.58h-137.58zm-540 917.58v-960h480v210c0 16.57 13.43 30 30 30h210v720z"/>
</svg>
</g></svg>

Before

Width:  |  Height:  |  Size: 453 B

After

Width:  |  Height:  |  Size: 477 B

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g>
<g fill="#ffffff">
<path d="m1011.6 68.398c-6-4.7969-13.203-8.3984-21.602-8.3984h-900c-16.801 0-30 13.199-30 30v1020c0 16.801 13.199 30 30 30h1020c16.801 0 30-13.199 30-30v-900c0-8.3984-3.6016-15.602-8.3984-21.602zm-531.6 51.602h390v270h-390zm-150 0h90v270h-90zm750 960h-960v-960h150v300c0 16.801 13.199 30 30 30h600c16.801 0 30-13.199 30-30v-300h48l102 102z"/>
<path d="m810 150h-90c-16.801 0-30 13.199-30 30v150c0 16.801 13.199 30 30 30h90c16.801 0 30-13.199 30-30v-150c0-16.801-13.199-30-30-30zm-30 150h-30v-90h30z"/>
<path d="m930 690h-660c-16.801 0-30 13.199-30 30s13.199 30 30 30h660c16.801 0 30-13.199 30-30s-13.199-30-30-30z"/>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g fill="#ffffff">
<path d="m895.55 305.05c-3.6953-6-9.3711-10.512-16.055-12.742l-90-30c-15.781-5.2578-32.723 3.2539-37.957 18.973-5.2422 15.719 3.2539 32.711 18.973 37.945l79.668 26.555 224.61 364.99h-44.09c-31.066-53.172-96.48-90-172.23-90-61.094 0-115.46 23.988-150.56 61.141-28.957-22.453-67.066-35.293-107.89-35.293-40.824 0-78.938 12.84-107.89 35.293-35.102-37.152-89.473-61.141-150.57-61.141-75.742 0-141.17 36.828-172.22 90h-44.09l224.61-364.99 79.668-26.555c15.719-5.2422 24.215-22.223 18.961-37.945-5.2422-15.73-22.246-24.227-37.945-18.973l-90 30c-6.6836 2.2305-12.359 6.7422-16.055 12.742l-240 390c-2.9141 4.7305-4.4609 10.176-4.4609 15.723v30c0 16.57 13.43 30 30 30h60.562c-0.21484 3.0703-0.5625 6.1172-0.5625 9.2266 0 87.805 85.922 159.24 191.53 159.24 105.62 0 191.54-71.438 191.54-159.24 0-16.332-2.9883-32.102-8.5195-46.957 18.77-16.5 46.164-26.438 75.445-26.438s56.676 9.9375 75.445 26.438c-5.5195 14.844-8.5195 30.613-8.5195 46.945 0 87.805 85.922 159.24 191.53 159.24 105.62 0.011719 191.54-71.422 191.54-159.23 0-3.1211-0.34766-6.1562-0.5625-9.2266h60.562c16.57 0 30-13.43 30-30v-30c0-5.543-1.5352-10.992-4.4531-15.719zm-554.02 574.19c-72.516 0-131.53-44.508-131.53-99.238 0-54.719 59.016-99.227 131.53-99.227 53.93 0 100.33 24.625 120.61 59.746 0.46875 0.94922 0.92578 1.8711 1.5 2.7734 6.0234 11.363 9.4336 23.734 9.4336 36.707-0.003906 54.73-59.008 99.238-131.55 99.238zm516.93 0c-72.527 0-131.53-44.508-131.53-99.238 0-12.984 3.4062-25.344 9.4453-36.719 0.5625-0.88672 1.0195-1.8242 1.4766-2.7617 20.27-35.125 66.684-59.746 120.61-59.746 72.527 0 131.54 44.508 131.54 99.227-0.003906 54.73-59.02 99.238-131.55 99.238z"/>
</svg>
</g></svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g>
<g fill="#ffffff">
<path d="m600 300c-16.801 0-30 13.199-30 30v270c0 16.801 13.199 30 30 30h150c16.801 0 30-13.199 30-30s-13.199-30-30-30h-120v-240c0-16.801-13.199-30-30-30z"/>
<path d="m188.4 681.6c6 6 13.199 8.3984 21.602 8.3984 8.3984 0 15.602-2.3984 21.602-8.3984l120-120c12-12 12-31.199 0-42-12-12-31.199-12-42 0l-69.602 67.199c7.1992-192 165.6-346.8 360-346.8 198 0 360 162 360 360s-162 360-360 360c-16.801 0-30 13.199-30 30s13.199 30 30 30c231.6 0 420-188.4 420-420s-188.4-420-420-420c-228 0-412.8 182.4-420 408l-69.602-69.602c-12-12-31.199-12-42 0-12 12-12 31.199 0 42z"/>
</g>

Before

Width:  |  Height:  |  Size: 733 B

After

Width:  |  Height:  |  Size: 748 B

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g>
<g fill="#ffffff">
<path d="m1110 270h-1020c-16.801 0-30 13.199-30 30v600c0 16.801 13.199 30 30 30h1020c16.801 0 30-13.199 30-30v-600c0-16.801-13.199-30-30-30zm-30 600h-960v-540h960z"/>
<path d="m210 750c-16.801 0-30 13.199-30 30s13.199 30 30 30h180c16.801 0 30-13.199 30-30s-13.199-30-30-30h-60v-300h60c16.801 0 30-13.199 30-30s-13.199-30-30-30h-180c-16.801 0-30 13.199-30 30s13.199 30 30 30h60v300z"/>
</g>

Before

Width:  |  Height:  |  Size: 556 B

After

Width:  |  Height:  |  Size: 571 B

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g>
<g fill="#ffffff">
<path d="m806.25 225h-337.5c-20.625 0-37.5 16.875-37.5 37.5v131.25c0 20.625 16.875 37.5 37.5 37.5h337.5c20.625 0 37.5-16.875 37.5-37.5v-131.25c0-20.625-16.875-37.5-37.5-37.5zm0 150c0 11.25-7.5 18.75-18.75 18.75h-300c-11.25 0-18.75-7.5-18.75-18.75v-93.75c0-11.25 7.5-18.75 18.75-18.75h300c11.25 0 18.75 7.5 18.75 18.75z"/>
<path d="m993.75 0h-787.5c-41.25 0-75 33.75-75 75v918.75c0 41.25 33.75 75 75 75h56.25c11.25 0 18.75-7.5 18.75-18.75s-7.5-18.75-18.75-18.75h-56.25c-20.625 0-37.5-16.875-37.5-37.5v-37.5h862.5v37.5c0 20.625-16.875 37.5-37.5 37.5h-506.25c-11.25 0-18.75 7.5-18.75 18.75s7.5 18.75 18.75 18.75h506.25c41.25 0 75-33.75 75-75v-918.75c0-41.25-33.75-75-75-75zm-825 918.75v-843.75c0-20.625 16.875-37.5 37.5-37.5h787.5c20.625 0 37.5 16.875 37.5 37.5v843.75z"/>
<path d="m412.5 993.75c-11.25 0-18.75 7.5-18.75 18.75v131.25c0 11.25-7.5 18.75-18.75 18.75s-18.75-7.5-18.75-18.75v-131.25c0-11.25-7.5-18.75-18.75-18.75s-18.75 7.5-18.75 18.75v150c0 20.625 16.875 37.5 37.5 37.5h37.5c20.625 0 37.5-16.875 37.5-37.5v-150c0-11.25-7.5-18.75-18.75-18.75z"/>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g>
<g fill="#ffffff">
<path d="m990 300h-780c-16.801 0-30 13.199-30 30v540c0 16.801 13.199 30 30 30h60v120c0 13.199 9.6016 25.199 21.602 28.801 2.3984 1.1992 4.8008 1.1992 8.3984 1.1992 10.801 0 20.398-4.8008 25.199-14.398l81.602-135.6h583.2c16.801 0 30-13.199 30-30v-540c0-16.801-13.199-30-30-30zm-30 540h-570c-10.801 0-20.398 6-25.199 14.398l-34.801 57.602v-42c0-16.801-13.199-30-30-30h-60v-480h720z"/>
<path d="m660 600c0 33.137-26.863 60-60 60s-60-26.863-60-60 26.863-60 60-60 60 26.863 60 60"/>
<path d="m810 600c0 33.137-26.863 60-60 60s-60-26.863-60-60 26.863-60 60-60 60 26.863 60 60"/>

Before

Width:  |  Height:  |  Size: 843 B

After

Width:  |  Height:  |  Size: 858 B

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g>
<g fill="#ffffff">
<path d="m600 630c49.199 0 90-40.801 90-90v-390c0-49.199-40.801-90-90-90s-90 40.801-90 90v390c0 49.199 40.801 90 90 90zm-30-480c0-16.801 13.199-30 30-30s30 13.199 30 30v390c0 16.801-13.199 30-30 30s-30-13.199-30-30z"/>
<path d="m600 1140c265.2 0 480-214.8 480-480 0-148.8-67.199-286.8-184.8-378-15.602-12-36-19.199-55.199-19.199-27.602 0-54 12-70.801 34.801-14.398 19.199-21.602 42-18 66 2.3984 24 14.398 45.602 33.602 60 73.199 57.602 115.2 144 115.2 236.4 0 165.6-134.4 300-300 300s-300-134.4-300-300c0-92.398 42-178.8 115.2-236.4 19.199-14.398 31.199-36 33.602-60 2.3984-24-3.6016-48-18-66-16.801-21.602-43.199-34.801-70.801-34.801-20.398 0-39.602 7.1992-55.199 19.199-117.6 91.199-184.8 229.2-184.8 378 0 265.2 214.8 480 480 480zm-258-811.2c7.1992-4.8008 13.199-6 18-6 9.6016 0 18 4.8008 24 12 4.8008 6 7.1992 14.398 6 21.602-1.1992 8.3984-4.8008 15.602-10.801 20.398-88.801 68.398-139.2 171.6-139.2 283.2 0 198 162 360 360 360s360-162 360-360c0-111.6-50.398-214.8-138-283.2-6-4.8008-10.801-12-10.801-20.398-1.1992-8.3984 1.1992-15.602 6-21.602 6-7.1992 14.398-12 24-12 4.8008 0 12 1.1992 18 6 102 80.398 160.8 201.6 160.8 331.2 0 231.6-188.4 420-420 420s-420-188.4-420-420c0-129.6 58.801-250.8 162-331.2z"/>
</g>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g>
<g fill="#ffffff">
<path d="m160.8 868.8c0 151.2 193.2 268.8 439.2 268.8s439.2-117.6 439.2-268.8-193.2-268.8-439.2-268.8-439.2 117.6-439.2 268.8zm439.2-208.8c136.8 0 253.2 62.398 253.2 135.6 0 73.199-116.4 134.4-253.2 134.4s-253.2-62.398-253.2-135.6c0-73.199 116.4-134.4 253.2-134.4zm-302.4 85.199c-6 15.602-9.6016 32.398-9.6016 50.398 0 109.2 138 195.6 313.2 195.6s313.2-85.199 313.2-195.6c0-18-3.6016-34.801-9.6016-50.398 48 34.801 76.801 78 76.801 123.6 0 112.8-174 208.8-379.2 208.8-205.2 0-379.2-96-379.2-208.8-2.3984-45.602 26.402-88.801 74.402-123.6z"/>
<path d="m600 60c-16.801 0-30 13.199-30 30v348l-128.4-129.6c-12-12-31.199-12-42 0-12 12-12 31.199 0 42l180 180c6 6 13.199 8.3984 21.602 8.3984 8.3984 0 15.602-2.3984 21.602-8.3984l180-180c12-12 12-31.199 0-42-12-12-31.199-12-42 0l-130.8 129.6v-348c0-16.801-13.199-30-30-30z"/>
</g>

Before

Width:  |  Height:  |  Size: 990 B

After

Width:  |  Height:  |  Size: 1005 B

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g>
<g fill="#ffffff">
<path d="m570 1017v93.023c0 16.57 13.43 30 30 30s30-13.43 30-30v-93.023c68.375-13.945 120-74.531 120-146.98s-51.625-133.03-120-146.98v-633.02c0-16.57-13.43-30-30-30s-30 13.43-30 30v633.02c-68.375 13.945-120 74.531-120 146.98s51.625 133.03 120 146.98zm30-236.98c49.633 0 90 40.367 90 90s-40.367 90-90 90-90-40.367-90-90 40.367-90 90-90z"/>
<path d="m210 446.98v663.02c0 16.57 13.43 30 30 30s30-13.43 30-30v-663.02c68.375-13.945 120-74.531 120-146.98s-51.625-133.03-120-146.98v-63.023c0-16.57-13.43-30-30-30s-30 13.43-30 30v63.023c-68.375 13.945-120 74.531-120 146.98s51.625 133.03 120 146.98zm30-236.98c49.633 0 90 40.367 90 90s-40.367 90-90 90-90-40.367-90-90 40.367-90 90-90z"/>
<path d="m930 656.98v453.02c0 16.57 13.43 30 30 30s30-13.43 30-30v-453.02c68.375-13.945 120-74.531 120-146.98s-51.625-133.03-120-146.98v-273.02c0-16.57-13.43-30-30-30s-30 13.43-30 30v273.02c-68.375 13.945-120 74.531-120 146.98s51.625 133.03 120 146.98zm30-236.98c49.633 0 90 40.367 90 90s-40.367 90-90 90-90-40.367-90-90 40.367-90 90-90z"/>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="1200pt" height="1200pt" version="1.1" viewBox="0 0 1200 1200" xmlns="http://www.w3.org/2000/svg">
<g>
<g fill="#ffffff">
<path d="m600 540c16.801 0 30-13.199 30-30v-348l128.4 128.4c6 6 13.199 8.3984 21.602 8.3984 8.3984 0 15.602-2.3984 21.602-8.3984 12-12 12-31.199 0-42l-180-180c-12-12-31.199-12-42 0l-180 180c-12 12-12 31.199 0 42 12 12 31.199 12 42 0l128.4-128.4v348c0 16.801 13.199 30 30 30z"/>
<path d="m180 1140h840c16.801 0 30-13.199 30-30v-600c0-16.801-13.199-30-30-30h-240c-16.801 0-30 13.199-30 30s13.199 30 30 30h210v540h-780v-540h210c16.801 0 30-13.199 30-30s-13.199-30-30-30h-240c-16.801 0-30 13.199-30 30v600c0 16.801 13.199 30 30 30z"/>
</g>

Before

Width:  |  Height:  |  Size: 702 B

After

Width:  |  Height:  |  Size: 717 B

View File

@ -1,13 +0,0 @@
extends Panel
func _on_OkButton_pressed() -> void:
if $"%NameLine".text and $"NameContainer/ObserverLine".text and $"NameContainer/ObservedActivity".text != "":
$"%InstructionPanel".show()
$"%NameChangePanel".hide()
global_ints.observed_person_name = $"%NameLine".text
global_ints.observer_person_name = $"NameContainer/ObserverLine".text
global_ints.observed_activity = $"NameContainer/ObservedActivity".text
else:
$"%ObservedNameLabel".hide()
$"%WarningLabel".show()

View File

@ -1 +0,0 @@
uid://b4r3eb67qd13n

View File

@ -5,6 +5,46 @@ var time_lefts : int
var toggle_observation : bool = false
var observation_button_pressed : bool = false
@onready var styleBox_highlight : StyleBoxFlat = $"%OneInstrPanel".get_theme_stylebox("panel").duplicate()
@onready var styleBox_orig : StyleBoxFlat = $"%TwoNamesPanel".get_theme_stylebox("panel").duplicate()
func set_all_boxes_to_normal() -> void:
$"%OneInstrPanel".add_theme_stylebox_override("panel", styleBox_orig)
$"%TwoNamesPanel".add_theme_stylebox_override("panel", styleBox_orig)
$"%ThreeConfigPanel".add_theme_stylebox_override("panel", styleBox_orig)
$"%FourObservePanel".add_theme_stylebox_override("panel", styleBox_orig)
$"%FiveResultsPanel".add_theme_stylebox_override("panel", styleBox_orig)
func state_changed_check() -> void:
styleBox_highlight.set("bg_color", Color.html("#F2CC8F"))
if $"%InstructionScreen".visible == true:
global_ints.app_state = 1
set_all_boxes_to_normal()
$"%OneInstrPanel".add_theme_stylebox_override("panel", styleBox_highlight)
if $"%NameChangePanel".visible == true:
global_ints.app_state = 2
set_all_boxes_to_normal()
$"%TwoNamesPanel".add_theme_stylebox_override("panel", styleBox_highlight)
if $"%InstructionPanel".visible == true:
global_ints.app_state = 3
set_all_boxes_to_normal()
$"%ThreeConfigPanel".add_theme_stylebox_override("panel", styleBox_highlight)
if $"%ObservationWindow".visible == true:
global_ints.app_state = 4
set_all_boxes_to_normal()
$"%FourObservePanel".add_theme_stylebox_override("panel", styleBox_highlight)
if $"%Results".visible == true:
global_ints.app_state = 5
set_all_boxes_to_normal()
$"%FiveResultsPanel".add_theme_stylebox_override("panel", styleBox_highlight)
func _ready() -> void:
$"Panel/BehaviourButtons".hide()
@ -20,6 +60,7 @@ func _process(_delta) -> void:
func calculate_percentages() -> void:
@warning_ignore("integer_division")
global_ints.total_observed_time = global_ints.total_behaviours / 3
global_ints.one_behaviour_percent = int((float(global_ints.one_behaviour_score) / global_ints.total_behaviours) * 100)
@ -126,4 +167,6 @@ func _on_Button_pressed() -> void:
$"TwentySecondTimer".stop()
global_ints.generate_results = true
calculate_percentages()
$"%ObservationWindow".hide()
$"../Results".show()
state_changed_check()

View File

@ -76,14 +76,14 @@ func take_screenshot() -> void:
func _on_SaveReport_pressed() -> void:
await get_tree().process_frame
$"%SaveReport".hide()
$"%BackMainMenu".hide()
$"%ResultMenu".hide()
$"%TopMenuBar".hide()
await get_tree().process_frame
take_screenshot()
$"%SaveReport".show()
$"%BackMainMenu".show()
$"%ResultMenu".show()
$"%TopMenuBar".show()
func _on_BackMainMenu_pressed() -> void:
@ -97,7 +97,7 @@ func _on_Results_visibility_changed() -> void:
var result_text : String
result_text = str("Date: " , global_ints.ddmmyyyy , "\nTime: ", global_ints.observation_start_time , " to " , global_ints.observation_end_time , "\n \nThis Time Sampling Form (TSF) observation was completed by " , global_ints.observer_person_name , ". " , global_ints.observed_person_name , " was observed for " , global_ints.total_observed_time , " minute(s) during " , global_ints.observed_activity , ". \n \nDuring the observation, The ", global_ints.one_behaviour," behaviour was observed ", global_ints.one_behaviour_score, " out of ",global_ints.total_behaviours," times, resulting in ",global_ints.one_behaviour_percent,"%. The ",global_ints.two_behaviour," behaviour was observed ",global_ints.two_behaviour_score," out of ",global_ints.total_behaviours," times, resulting in ",global_ints.two_behaviour_percent,"%. The ",global_ints.three_behaviour," behaviour was observed ",global_ints.three_behaviour_score," out of ",global_ints.total_behaviours," times, resulting in ",global_ints.three_behaviour_percent,"%. The ", global_ints.four_behaviour," behaviour was observed ",global_ints.four_behaviour_score," out of ",global_ints.total_behaviours," times, resulting in ",global_ints.four_behaviour_percent,"%. The ",global_ints.five_behaviour," behaviour was observed ",global_ints.five_behaviour_score," out of ",global_ints.total_behaviours," times, resulting in ",global_ints.five_behaviour_percent,"%. ",global_ints.six_behaviour_score," intervals were not scored.")
result_text = str("Observed: " , global_ints.observed_person_name , "\nDate: " , global_ints.ddmmyyyy , "\nTime: ", global_ints.observation_start_time , " to " , global_ints.observation_end_time , "\n \nThis Time Sampling Form (TSF) observation was completed by " , global_ints.observer_person_name , ". " , global_ints.observed_person_name , " was observed for " , global_ints.total_observed_time , " minute(s) during " , global_ints.observed_activity , ". \n \nDuring the observation, The ", global_ints.one_behaviour," behaviour was observed ", global_ints.one_behaviour_score, " out of ",global_ints.total_behaviours," times, resulting in ",global_ints.one_behaviour_percent,"%. The ",global_ints.two_behaviour," behaviour was observed ",global_ints.two_behaviour_score," out of ",global_ints.total_behaviours," times, resulting in ",global_ints.two_behaviour_percent,"%. The ",global_ints.three_behaviour," behaviour was observed ",global_ints.three_behaviour_score," out of ",global_ints.total_behaviours," times, resulting in ",global_ints.three_behaviour_percent,"%. The ", global_ints.four_behaviour," behaviour was observed ",global_ints.four_behaviour_score," out of ",global_ints.total_behaviours," times, resulting in ",global_ints.four_behaviour_percent,"%. The ",global_ints.five_behaviour," behaviour was observed ",global_ints.five_behaviour_score," out of ",global_ints.total_behaviours," times, resulting in ",global_ints.five_behaviour_percent,"%. ",global_ints.six_behaviour_score," intervals were not scored.")
$"%FullResult".text = result_text
# This is where we generate the bars

View File

@ -3,10 +3,13 @@ extends Node
var date = {}
var ddmmyyyy : String
# 1 = Instruction, 2 = Names, 3 = Config, 4 = Observe, 5 = Results
var app_state : int
var update_text : String
var web_release_version : float
var release_version = 0.15
var release_version = 0.2
var total_observed_time : int

View File

@ -6,15 +6,16 @@ var csv_url = "https://raw.githubusercontent.com/hobbesjaap/time-sampling-form/m
var update_text_url = "https://raw.githubusercontent.com/hobbesjaap/time-sampling-form/main/updater/update_text.md"
var update_text : String
var text_buffer : String
var os_list : Array = ["Linux", "Windows", "macOS", "OSX", "UWP", "X11", "FreeBSD", "NetBSD", "OpenBSD", "BSD"]
@onready var date_time_display = $"%CurrentTime"
@onready var minute_label = $"StartScreen/InstructionPanel/MinuteBox/MinuteLabel"
@onready var styleBox_highlight : StyleBoxFlat = $"%OneInstrPanel".get_theme_stylebox("panel").duplicate()
@onready var styleBox_orig : StyleBoxFlat = $"%TwoNamesPanel".get_theme_stylebox("panel").duplicate()
func check_for_updates() -> void:
var os_list : Array = ["Linux", "Windows", "macOS", "OSX"]
if os_list.has(OS.get_name()):
print("We're on desktop. So let's check for updates!")
# print("We're on desktop. So let's check for updates!")
$"%HTTPRequest".request(csv_url)
$"%HTTPRequest2".request(update_text_url)
@ -37,7 +38,7 @@ func _on_HTTPRequest2_request_completed(_result, _response_code, _headers, body)
var test_json_conv = JSON.new()
test_json_conv.parse(body.get_string_from_utf8())
var json = test_json_conv.get_data()
global_ints.update_text = json
global_ints.update_text = str(json)
func refresh_descriptors() -> void:
@ -87,33 +88,85 @@ func update_date() -> void:
global_ints.date = Time.get_datetime_dict_from_system()
global_ints.ddmmyyyy = str(global_ints.date.day, "-", global_ints.date.month, "-", global_ints.date.year)
func set_app_window_size() -> void:
var desktop_x : int = DisplayServer.screen_get_size(DisplayServer.window_get_current_screen()).x
var desktop_y : int = DisplayServer.screen_get_size(DisplayServer.window_get_current_screen()).y
@warning_ignore("narrowing_conversion")
var app_window_x : int = desktop_x * 0.7
@warning_ignore("narrowing_conversion")
var app_window_y : int = desktop_y * 0.7
var app_window_size = Vector2i(app_window_x, app_window_y)
DisplayServer.window_set_min_size(Vector2i(app_window_x, app_window_y))
get_window().size = app_window_size
@warning_ignore("integer_division")
DisplayServer.window_set_position(Vector2i(int(desktop_x/6), int(desktop_y/6)))
func _ready() -> void:
DisplayServer.window_set_min_size(Vector2i(1280, 720))
#DisplayServer.window_set_min_size(Vector2i(1280, 720))
if os_list.has(OS.get_name()):
set_app_window_size()
minute_label.text = str(global_ints.observation_minutes)
global_ints.observed_person_name = ""
refresh_descriptors()
$"StartScreen".show()
$"%NameChangePanel".show()
$"%NameChangePanel".hide()
$"%InstructionScreen".show()
$"%WarningLabel".hide()
$"ObservationWindow".hide()
$"Results".hide()
$"EditScreen".hide()
$"%UpdatePanel".hide()
state_changed_check()
update_date()
set_language()
# set_language()
check_for_updates()
func _process(_delta) -> void:
check_time_var += 1
func set_all_boxes_to_normal() -> void:
$"%OneInstrPanel".add_theme_stylebox_override("panel", styleBox_orig)
$"%TwoNamesPanel".add_theme_stylebox_override("panel", styleBox_orig)
$"%ThreeConfigPanel".add_theme_stylebox_override("panel", styleBox_orig)
$"%FourObservePanel".add_theme_stylebox_override("panel", styleBox_orig)
$"%FiveResultsPanel".add_theme_stylebox_override("panel", styleBox_orig)
if check_time_var == 10:
check_time_var = 0
if global_ints.date.minute < 10:
date_time_display.text = str(global_ints.date.hour, ":0", global_ints.date.minute)
if global_ints.date.minute >= 10:
date_time_display.text = str(global_ints.date.hour, ":", global_ints.date.minute)
func state_changed_check() -> void:
styleBox_highlight.set("bg_color", Color.html("#F2CC8F"))
if $"%InstructionScreen".visible == true:
global_ints.app_state = 1
set_all_boxes_to_normal()
$"%OneInstrPanel".add_theme_stylebox_override("panel", styleBox_highlight)
if $"%NameChangePanel".visible == true:
global_ints.app_state = 2
set_all_boxes_to_normal()
$"%TwoNamesPanel".add_theme_stylebox_override("panel", styleBox_highlight)
if $"%InstructionPanel".visible == true:
global_ints.app_state = 3
set_all_boxes_to_normal()
$"%ThreeConfigPanel".add_theme_stylebox_override("panel", styleBox_highlight)
if $"%ObservationWindow".visible == true:
global_ints.app_state = 4
set_all_boxes_to_normal()
$"%FourObservePanel".add_theme_stylebox_override("panel", styleBox_highlight)
if $"%Results".visible == true:
global_ints.app_state = 5
set_all_boxes_to_normal()
$"%FiveResultsPanel".add_theme_stylebox_override("panel", styleBox_highlight)
func _process(_delta) -> void:
# When I refactor, this should move OUT of the process-delta bit
# state_changed_check()
pass
func _on_MinuteMinus_pressed() -> void:
@ -134,14 +187,16 @@ func _on_Manual_pressed() -> void:
func _on_PupilName_pressed() -> void:
$"%NameLine".text = global_ints.observed_person_name
$"%InstructionPanel".visible = false
$"%NameChangePanel".visible = true
$"%InstructionPanel".hide()
$"%NameChangePanel".show()
state_changed_check()
func _on_Start_pressed() -> void:
$"StartScreen".visible = false
refresh_descriptors()
$"ObservationWindow".visible = true
$"ObservationWindow".show()
state_changed_check()
$"%BehaviourOne".text = global_ints.one_acronym
$"%BehaviourTwo".text = global_ints.two_acronym
$"%BehaviourThree".text = global_ints.three_acronym
@ -176,10 +231,12 @@ func _on_Start_pressed() -> void:
func _on_ChangeItems_pressed() -> void:
$"EditScreen".show()
state_changed_check()
func _on_InsOkButton_pressed() -> void:
$"%InstructionScreen".hide()
$"%NameChangePanel".show()
state_changed_check()
func _on_MinuteMinus_button_down() -> void:
@ -190,9 +247,52 @@ func _on_MinuteMinus_button_down() -> void:
pass
func _on_minute_plus_button_down() -> void:
pass # Replace with function body.
func _on_GoToUpdate_pressed() -> void:
var _error = OS.shell_open("https://github.com/hobbesjaap/time-sampling-form/releases")
func _on_IgnoreUpdate_pressed() -> void:
$"%UpdatePanel".hide()
func _on_ok_button_pressed() -> void:
if $"%NameLine".text and $"%ObserverLine".text and $"%ObservedActivity".text != "":
$"%InstructionPanel".show()
$"%NameChangePanel".hide()
state_changed_check()
global_ints.observed_person_name = $"%NameLine".text
global_ints.observer_person_name = $"%ObserverLine".text
global_ints.observed_activity = $"%ObservedActivity".text
$"%TopOverview".text = str("Time Sampling Observation of " , global_ints.observed_person_name, ", observed by ", global_ints.observer_person_name , ", during " , global_ints.observed_activity , ".")
$"%TopOverview".show()
else:
$"%ObservedNameLabel".hide()
$"%WarningLabel".show()
func _on_edit_report_pressed() -> void:
$"%EditResult".text = $"%FullResult".text
$"%ResultMenu".hide()
$"%EditPanel".show()
$"%EditResult".show()
$"%EditMenu".show()
func _on_cancel_edit_pressed() -> void:
$"%ResultMenu".show()
$"%EditPanel".hide()
$"%EditResult".hide()
$"%EditMenu".hide()
func _on_save_edit_pressed() -> void:
$"%FullResult".text = $"%EditResult".text
$"%ResultMenu".show()
$"%EditPanel".hide()
$"%EditResult".hide()
$"%EditMenu".hide()

View File

@ -1,8 +1,7 @@
[gd_scene load_steps=25 format=3 uid="uid://b1pk005at7x26"]
[gd_scene load_steps=27 format=3 uid="uid://b1pk005at7x26"]
[ext_resource type="Theme" uid="uid://bki1nuccpiu3o" path="res://wb_theme.tres" id="1"]
[ext_resource type="Script" uid="uid://rbmcgn3hetrs" path="res://main_screen.gd" id="2"]
[ext_resource type="Script" uid="uid://b4r3eb67qd13n" path="res://NameChangePanel.gd" id="4"]
[ext_resource type="FontFile" uid="uid://df4eo3bryf8la" path="res://Assets/fonts/noto_sans_display.ttf" id="5"]
[ext_resource type="FontFile" uid="uid://darkh8o8rieli" path="res://Assets/fonts/noto_sans_display_bold.ttf" id="6"]
[ext_resource type="Script" uid="uid://hff4wu52flpd" path="res://ObservationWindow.gd" id="7"]
@ -11,7 +10,11 @@
[ext_resource type="Script" uid="uid://dflvmgvxwqrrf" path="res://TimerBar.gd" id="10"]
[ext_resource type="Script" uid="uid://t1pvqg6e78j" path="res://ProgressBar.gd" id="11"]
[ext_resource type="Texture2D" uid="uid://yf4ormoh8hes" path="res://Assets/icons/main_icon.png" id="12"]
[ext_resource type="Texture2D" uid="uid://bq56uvokwfppt" path="res://Assets/icons/noun-manual-241665.svg" id="12_p3r6q"]
[ext_resource type="Texture2D" uid="uid://lafpc8rl5lg0" path="res://Assets/icons/noun-input-field-104354.svg" id="12_vtqql"]
[ext_resource type="Texture2D" uid="uid://ddvmq6m5ux17h" path="res://Assets/icons/noun-settings-56313.svg" id="14_3qsiq"]
[ext_resource type="Texture2D" uid="uid://xjf2x5br6qq2" path="res://Assets/icons/noun-glasses-56317.svg" id="15_7087c"]
[ext_resource type="Texture2D" uid="uid://bvpi0st2kfg0" path="res://Assets/icons/noun-file-59659.svg" id="16_do8p6"]
[sub_resource type="StyleBoxFlat" id="2"]
bg_color = Color(1, 1, 1, 1)
@ -20,15 +23,6 @@ bg_color = Color(1, 1, 1, 1)
bg_color = Color(1, 1, 1, 1)
shadow_offset = Vector2(0, 4)
[sub_resource type="FontFile" id="4"]
fallbacks = Array[Font]([ExtResource("5")])
cache/0/16/0/ascent = 0.0
cache/0/16/0/descent = 0.0
cache/0/16/0/underline_position = 0.0
cache/0/16/0/underline_thickness = 0.0
cache/0/16/0/scale = 1.0
cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0)
[sub_resource type="FontFile" id="5"]
fallbacks = Array[Font]([ExtResource("6")])
cache/0/16/0/ascent = 0.0
@ -1206,7 +1200,6 @@ unique_name_in_owner = true
unique_name_in_owner = true
[node name="StartScreen" type="CanvasLayer" parent="."]
visible = false
[node name="InstructionPanel" type="Panel" parent="StartScreen"]
unique_name_in_owner = true
@ -1216,22 +1209,27 @@ anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -640.0
offset_left = -511.0
offset_top = -289.0
offset_right = 640.0
offset_bottom = 359.0
offset_right = 630.0
offset_bottom = 350.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("1")
[node name="MinuteBox" type="HBoxContainer" parent="StartScreen/InstructionPanel"]
layout_mode = 0
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -53.5
offset_left = -51.5
offset_top = -159.0
offset_right = 53.5
offset_right = 55.5
offset_bottom = -119.0
grow_horizontal = 2
grow_vertical = 2
[node name="MinuteMinus" type="Button" parent="StartScreen/InstructionPanel/MinuteBox"]
layout_mode = 2
@ -1250,57 +1248,58 @@ size_flags_horizontal = 3
theme = ExtResource("1")
text = "+"
[node name="CurrentTime" type="Label" parent="StartScreen/InstructionPanel"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 1196.0
offset_top = 506.0
offset_right = 1275.0
offset_bottom = 529.0
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = SubResource("4")
text = "99:99"
[node name="MinuteExplanation" type="Label" parent="StartScreen/InstructionPanel"]
layout_mode = 0
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -322.5
offset_top = -197.0
offset_right = 322.5
offset_bottom = -163.0
offset_left = -578.5
offset_top = -202.5
offset_right = 579.5
offset_bottom = -168.5
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1")
text = "INSTR_OBS"
horizontal_alignment = 1
[node name="ObservationItemsTitle" type="Label" parent="StartScreen/InstructionPanel"]
layout_mode = 0
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -102.5
offset_top = -97.0
offset_right = 102.5
offset_bottom = -63.0
offset_left = -578.5
offset_top = -96.5
offset_right = 579.5
offset_bottom = -62.5
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1")
theme_override_fonts/font = SubResource("5")
text = "OBS_ITEMS"
horizontal_alignment = 1
[node name="Title" type="Label" parent="StartScreen/InstructionPanel"]
layout_mode = 0
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -172.5
offset_top = -250.0
offset_right = 172.5
offset_bottom = -200.0
offset_left = -578.5
offset_top = -248.5
offset_right = 579.5
offset_bottom = -216.5
grow_horizontal = 2
grow_vertical = 2
theme_override_colors/font_color = Color(0, 0, 0, 1)
theme_override_fonts/font = SubResource("6")
text = "TITLE"
horizontal_alignment = 1
[node name="BottomButtons" type="HBoxContainer" parent="StartScreen/InstructionPanel"]
layout_mode = 0
@ -1338,15 +1337,18 @@ theme = ExtResource("1")
text = "BUT_STRT"
[node name="GridObservations" type="GridContainer" parent="StartScreen/InstructionPanel"]
layout_mode = 0
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -589.0
offset_top = -57.0
offset_right = 603.0
offset_bottom = 167.0
offset_left = -499.5
offset_top = -56.5
offset_right = 499.5
offset_bottom = 167.5
grow_horizontal = 2
grow_vertical = 2
columns = 3
[node name="AcronymLabel" type="Label" parent="StartScreen/InstructionPanel/GridObservations"]
@ -1367,6 +1369,24 @@ layout_mode = 2
theme = ExtResource("1")
text = "EXP"
[node name="Empty" type="Label" parent="StartScreen/InstructionPanel/GridObservations"]
unique_name_in_owner = true
layout_mode = 2
theme = ExtResource("1")
text = " "
[node name="Empty2" type="Label" parent="StartScreen/InstructionPanel/GridObservations"]
unique_name_in_owner = true
layout_mode = 2
theme = ExtResource("1")
text = " "
[node name="Empty3" type="Label" parent="StartScreen/InstructionPanel/GridObservations"]
unique_name_in_owner = true
layout_mode = 2
theme = ExtResource("1")
text = " "
[node name="1Acronym" type="Label" parent="StartScreen/InstructionPanel/GridObservations"]
unique_name_in_owner = true
layout_mode = 2
@ -1470,18 +1490,20 @@ offset_top = -289.0
offset_right = 640.0
offset_bottom = 359.0
theme_override_styles/panel = SubResource("1")
script = ExtResource("4")
[node name="NameContainer" type="VBoxContainer" parent="StartScreen/NameChangePanel"]
layout_mode = 0
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -269.0
offset_top = -210.0
offset_right = 270.0
offset_right = 383.0
offset_bottom = 237.0
grow_horizontal = 2
grow_vertical = 2
[node name="ObservedNameLabel" type="Label" parent="StartScreen/NameChangePanel/NameContainer"]
unique_name_in_owner = true
@ -1529,6 +1551,7 @@ text = "OK"
[node name="InstructionScreen" type="Panel" parent="StartScreen"]
unique_name_in_owner = true
visible = false
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
@ -1541,7 +1564,6 @@ offset_bottom = 359.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/panel = SubResource("1")
script = ExtResource("4")
[node name="InstructionContainer" type="VBoxContainer" parent="StartScreen/InstructionScreen"]
layout_mode = 1
@ -1665,15 +1687,18 @@ anchor_bottom = 1.0
theme = ExtResource("1")
[node name="GridObservations" type="GridContainer" parent="EditScreen/Panel"]
layout_mode = 0
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -518.5
offset_left = -445.0
offset_top = -57.0
offset_right = 518.5
offset_bottom = 129.0
offset_right = 560.0
offset_bottom = 141.0
grow_horizontal = 2
grow_vertical = 2
columns = 3
[node name="AcronymLabel" type="Label" parent="EditScreen/Panel/GridObservations"]
@ -1795,31 +1820,31 @@ size_flags_horizontal = 3
theme = ExtResource("1")
text = "The pupil is otherwise distracted and not on task"
[node name="CancelButton" type="Button" parent="EditScreen/Panel"]
layout_mode = 0
offset_left = 520.0
offset_top = 645.0
offset_right = 597.0
offset_bottom = 679.0
[node name="HBoxContainer" type="HBoxContainer" parent="EditScreen/Panel"]
layout_mode = 1
offset_left = 474.0
offset_top = 516.0
offset_right = 882.0
offset_bottom = 560.0
alignment = 1
[node name="CancelButton" type="Button" parent="EditScreen/Panel/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "BUT_CANCEL"
[node name="OKButton" type="Button" parent="EditScreen/Panel"]
layout_mode = 0
offset_left = 616.0
offset_top = 645.0
offset_right = 656.0
offset_bottom = 679.0
[node name="OKButton" type="Button" parent="EditScreen/Panel/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "OK"
[node name="ClearAll" type="Button" parent="EditScreen/Panel"]
layout_mode = 0
offset_left = 952.0
offset_top = 615.0
offset_right = 1051.0
offset_bottom = 649.0
[node name="ClearAll" type="Button" parent="EditScreen/Panel/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
text = "BUT_CLEAR"
[node name="ObservationWindow" type="CanvasLayer" parent="."]
unique_name_in_owner = true
visible = false
script = ExtResource("7")
@ -1987,11 +2012,16 @@ theme = ExtResource("1")
text = "INT_REM"
[node name="ProgressBar" type="ProgressBar" parent="ObservationWindow/Panel"]
layout_mode = 0
layout_mode = 1
anchors_preset = 12
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -14.0
offset_left = 119.0
offset_top = -33.0
offset_bottom = 2.0
grow_horizontal = 2
grow_vertical = 0
step = 1.0
script = ExtResource("11")
@ -2000,6 +2030,7 @@ unique_name_in_owner = true
wait_time = 20.0
[node name="Results" type="CanvasLayer" parent="."]
unique_name_in_owner = true
visible = false
script = ExtResource("9")
@ -2010,96 +2041,59 @@ anchor_bottom = 1.0
theme = ExtResource("1")
theme_override_styles/panel = SubResource("8")
[node name="SaveReport" type="Button" parent="Results/Panel"]
[node name="ResultMenu" type="HBoxContainer" parent="Results/Panel"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 992.0
offset_top = 643.0
offset_right = 1251.0
offset_bottom = 683.0
text = "BUT_SAVEPNG"
offset_left = 647.0
offset_top = 644.0
offset_right = 1189.0
offset_bottom = 684.0
[node name="BackMainMenu" type="Button" parent="Results/Panel"]
[node name="BackMainMenu" type="Button" parent="Results/Panel/ResultMenu"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 32.0
offset_top = 643.0
offset_right = 176.0
offset_bottom = 683.0
layout_mode = 2
size_flags_horizontal = 3
text = "BUT_RESTART"
[node name="EditReport" type="Button" parent="Results/Panel/ResultMenu"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "BUT_EDIT_RESULT"
[node name="SaveReport" type="Button" parent="Results/Panel/ResultMenu"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
text = "BUT_SAVEPNG"
[node name="FullResult" type="Label" parent="Results/Panel"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 11.0
offset_top = 13.0
offset_right = 1268.0
offset_left = 137.0
offset_top = 75.0
offset_right = 1253.0
offset_bottom = 396.0
theme_override_fonts/font = SubResource("9")
text = "Can this be multi-line?
Or does text-wrap work?
Can I get integers in? Must be able to, concatenate."
[node name="ObsBar1" type="ProgressBar" parent="Results/Panel"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 348.0
offset_top = 422.0
offset_right = 1140.0
offset_bottom = 447.0
size_flags_horizontal = 3
step = 1.0
[node name="ObsBar2" type="ProgressBar" parent="Results/Panel"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 348.0
offset_top = 452.0
offset_right = 1140.0
offset_bottom = 477.0
size_flags_horizontal = 3
step = 1.0
[node name="ObsBar3" type="ProgressBar" parent="Results/Panel"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 348.0
offset_top = 482.0
offset_right = 1140.0
offset_bottom = 507.0
size_flags_horizontal = 3
step = 1.0
[node name="ObsBar4" type="ProgressBar" parent="Results/Panel"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 348.0
offset_top = 512.0
offset_right = 1140.0
offset_bottom = 537.0
size_flags_horizontal = 3
step = 1.0
[node name="ObsBar5" type="ProgressBar" parent="Results/Panel"]
unique_name_in_owner = true
layout_mode = 0
offset_left = 348.0
offset_top = 542.0
offset_right = 1140.0
offset_bottom = 567.0
size_flags_horizontal = 3
step = 1.0
autowrap_mode = 3
[node name="GridContainer" type="GridContainer" parent="Results/Panel"]
layout_mode = 0
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -517.0
offset_top = 60.5
offset_right = -302.0
offset_bottom = 206.5
offset_left = -457.0
offset_top = 66.0
offset_right = 547.0
offset_bottom = 217.0
grow_horizontal = 2
grow_vertical = 2
columns = 2
[node name="ObsTitle1" type="Label" parent="Results/Panel/GridContainer"]
unique_name_in_owner = true
@ -2107,33 +2101,102 @@ layout_mode = 2
theme_override_fonts/font = SubResource("12")
text = "Item1"
[node name="ObsBar1" type="ProgressBar" parent="Results/Panel/GridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
step = 1.0
[node name="ObsTitle2" type="Label" parent="Results/Panel/GridContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_fonts/font = SubResource("12")
text = "Item2"
[node name="ObsBar2" type="ProgressBar" parent="Results/Panel/GridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
step = 1.0
[node name="ObsTitle3" type="Label" parent="Results/Panel/GridContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_fonts/font = SubResource("12")
text = "Item3"
[node name="ObsBar3" type="ProgressBar" parent="Results/Panel/GridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
step = 1.0
[node name="ObsTitle4" type="Label" parent="Results/Panel/GridContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_fonts/font = SubResource("12")
text = "Item4"
[node name="ObsBar4" type="ProgressBar" parent="Results/Panel/GridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
step = 1.0
[node name="ObsTitle5" type="Label" parent="Results/Panel/GridContainer"]
unique_name_in_owner = true
layout_mode = 2
theme_override_fonts/font = SubResource("12")
text = "Item5"
[node name="TopMenuBar" type="CanvasLayer" parent="."]
[node name="ObsBar5" type="ProgressBar" parent="Results/Panel/GridContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
step = 1.0
[node name="VBoxContainer" type="VBoxContainer" parent="TopMenuBar"]
[node name="EditPanel" type="Panel" parent="Results/Panel"]
unique_name_in_owner = true
visible = false
layout_mode = 0
offset_left = 126.0
offset_top = 68.0
offset_right = 1260.0
offset_bottom = 620.0
[node name="EditResult" type="TextEdit" parent="Results/Panel"]
unique_name_in_owner = true
visible = false
layout_mode = 0
offset_left = 136.0
offset_top = 81.0
offset_right = 1248.0
offset_bottom = 608.0
wrap_mode = 1
[node name="EditMenu" type="HBoxContainer" parent="Results/Panel"]
unique_name_in_owner = true
visible = false
layout_mode = 0
offset_left = 873.0
offset_top = 626.0
offset_right = 1264.0
offset_bottom = 669.0
[node name="CancelEdit" type="Button" parent="Results/Panel/EditMenu"]
layout_mode = 2
size_flags_horizontal = 3
text = "BUT_CANCEL_EDIT"
[node name="SaveEdit" type="Button" parent="Results/Panel/EditMenu"]
layout_mode = 2
size_flags_horizontal = 3
text = "BUT_SAVE_EDIT"
[node name="TopMenuBar" type="CanvasLayer" parent="."]
unique_name_in_owner = true
[node name="Topbar" type="VBoxContainer" parent="TopMenuBar"]
custom_minimum_size = Vector2(0, 60)
anchors_preset = 10
anchor_right = 1.0
@ -2141,12 +2204,25 @@ offset_bottom = 60.0
grow_horizontal = 2
size_flags_horizontal = 3
[node name="Panel" type="Panel" parent="TopMenuBar/VBoxContainer"]
[node name="Panel" type="Panel" parent="TopMenuBar/Topbar"]
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_lu4qr")
[node name="HBoxContainer" type="HBoxContainer" parent="TopMenuBar"]
[node name="TopOverview" type="Label" parent="TopMenuBar/Topbar/Panel"]
unique_name_in_owner = true
visible = false
layout_mode = 2
offset_left = 120.0
offset_top = 10.0
offset_right = 1263.0
offset_bottom = 53.0
theme_override_colors/font_color = Color(0, 0, 0, 1)
text = "Time Sampling Observation of XXX, observed by XXX during XXX."
horizontal_alignment = 1
autowrap_mode = 3
[node name="Sidebar" type="HBoxContainer" parent="TopMenuBar"]
anchors_preset = 9
anchor_bottom = 1.0
offset_top = 60.0
@ -2154,24 +2230,30 @@ offset_right = 120.0
grow_vertical = 2
size_flags_vertical = 3
[node name="Panel" type="Panel" parent="TopMenuBar/HBoxContainer"]
[node name="Panel" type="Panel" parent="TopMenuBar/Sidebar"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_e43b2")
[node name="VBoxContainer" type="VBoxContainer" parent="TopMenuBar/HBoxContainer/Panel"]
[node name="VBoxContainer" type="VBoxContainer" parent="TopMenuBar/Sidebar/Panel"]
layout_mode = 0
offset_right = 120.0
offset_bottom = 660.0
theme_override_constants/separation = 0
[node name="Panel" type="Panel" parent="TopMenuBar/HBoxContainer/Panel/VBoxContainer"]
[node name="OneInstrPanel" type="Panel" parent="TopMenuBar/Sidebar/Panel/VBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(120, 120)
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_musqq")
[node name="Instructions" type="Label" parent="TopMenuBar/HBoxContainer/Panel/VBoxContainer/Panel"]
[node name="Noun-manual-241665" type="Sprite2D" parent="TopMenuBar/Sidebar/Panel/VBoxContainer/OneInstrPanel"]
position = Vector2(59, 58)
scale = Vector2(0.04, 0.04)
texture = ExtResource("12_p3r6q")
[node name="Instructions" type="Label" parent="TopMenuBar/Sidebar/Panel/VBoxContainer/OneInstrPanel"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
@ -2190,18 +2272,19 @@ theme_override_font_sizes/font_size = 14
text = "LAB_INSTR"
horizontal_alignment = 1
[node name="Panel2" type="Panel" parent="TopMenuBar/HBoxContainer/Panel/VBoxContainer"]
[node name="TwoNamesPanel" type="Panel" parent="TopMenuBar/Sidebar/Panel/VBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 120)
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_musqq")
[node name="Noun-input-field-104354" type="Sprite2D" parent="TopMenuBar/HBoxContainer/Panel/VBoxContainer/Panel2"]
position = Vector2(60, 64)
[node name="Noun-input-field-104354" type="Sprite2D" parent="TopMenuBar/Sidebar/Panel/VBoxContainer/TwoNamesPanel"]
position = Vector2(60, 59)
scale = Vector2(0.04, 0.04)
texture = ExtResource("12_vtqql")
[node name="Names" type="Label" parent="TopMenuBar/HBoxContainer/Panel/VBoxContainer/Panel2"]
[node name="Names" type="Label" parent="TopMenuBar/Sidebar/Panel/VBoxContainer/TwoNamesPanel"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
@ -2220,13 +2303,19 @@ theme_override_font_sizes/font_size = 14
text = "LAB_NAMES"
horizontal_alignment = 1
[node name="Panel3" type="Panel" parent="TopMenuBar/HBoxContainer/Panel/VBoxContainer"]
[node name="ThreeConfigPanel" type="Panel" parent="TopMenuBar/Sidebar/Panel/VBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 120)
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_musqq")
[node name="Configure" type="Label" parent="TopMenuBar/HBoxContainer/Panel/VBoxContainer/Panel3"]
[node name="Noun-settings-56313" type="Sprite2D" parent="TopMenuBar/Sidebar/Panel/VBoxContainer/ThreeConfigPanel"]
position = Vector2(59, 60)
scale = Vector2(0.04, 0.04)
texture = ExtResource("14_3qsiq")
[node name="Configure" type="Label" parent="TopMenuBar/Sidebar/Panel/VBoxContainer/ThreeConfigPanel"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
@ -2245,13 +2334,19 @@ theme_override_font_sizes/font_size = 14
text = "LAB_CONFIG"
horizontal_alignment = 1
[node name="Panel4" type="Panel" parent="TopMenuBar/HBoxContainer/Panel/VBoxContainer"]
[node name="FourObservePanel" type="Panel" parent="TopMenuBar/Sidebar/Panel/VBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 120)
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_musqq")
[node name="Observe" type="Label" parent="TopMenuBar/HBoxContainer/Panel/VBoxContainer/Panel4"]
[node name="Noun-glasses-56317" type="Sprite2D" parent="TopMenuBar/Sidebar/Panel/VBoxContainer/FourObservePanel"]
position = Vector2(59, 56)
scale = Vector2(0.04, 0.04)
texture = ExtResource("15_7087c")
[node name="Observe" type="Label" parent="TopMenuBar/Sidebar/Panel/VBoxContainer/FourObservePanel"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
@ -2270,13 +2365,19 @@ theme_override_font_sizes/font_size = 14
text = "LAB_OBS"
horizontal_alignment = 1
[node name="Panel5" type="Panel" parent="TopMenuBar/HBoxContainer/Panel/VBoxContainer"]
[node name="FiveResultsPanel" type="Panel" parent="TopMenuBar/Sidebar/Panel/VBoxContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 120)
layout_mode = 2
size_flags_vertical = 3
theme_override_styles/panel = SubResource("StyleBoxFlat_musqq")
[node name="Results" type="Label" parent="TopMenuBar/HBoxContainer/Panel/VBoxContainer/Panel5"]
[node name="Noun-file-59659" type="Sprite2D" parent="TopMenuBar/Sidebar/Panel/VBoxContainer/FiveResultsPanel"]
position = Vector2(60, 56)
scale = Vector2(0.04, 0.04)
texture = ExtResource("16_do8p6")
[node name="Results" type="Label" parent="TopMenuBar/Sidebar/Panel/VBoxContainer/FiveResultsPanel"]
layout_mode = 1
anchors_preset = 7
anchor_left = 0.5
@ -2299,18 +2400,19 @@ horizontal_alignment = 1
[connection signal="request_completed" from="HTTPRequest2" to="." method="_on_HTTPRequest2_request_completed"]
[connection signal="button_down" from="StartScreen/InstructionPanel/MinuteBox/MinuteMinus" to="." method="_on_MinuteMinus_button_down"]
[connection signal="pressed" from="StartScreen/InstructionPanel/MinuteBox/MinuteMinus" to="." method="_on_MinuteMinus_pressed"]
[connection signal="button_down" from="StartScreen/InstructionPanel/MinuteBox/MinutePlus" to="." method="_on_minute_plus_button_down"]
[connection signal="pressed" from="StartScreen/InstructionPanel/MinuteBox/MinutePlus" to="." method="_on_MinutePlus_pressed"]
[connection signal="pressed" from="StartScreen/InstructionPanel/BottomButtons/Manual" to="." method="_on_Manual_pressed"]
[connection signal="pressed" from="StartScreen/InstructionPanel/BottomButtons/ChangeItems" to="." method="_on_ChangeItems_pressed"]
[connection signal="pressed" from="StartScreen/InstructionPanel/BottomButtons/PupilName" to="." method="_on_PupilName_pressed"]
[connection signal="pressed" from="StartScreen/InstructionPanel/BottomButtons/Start" to="." method="_on_Start_pressed"]
[connection signal="pressed" from="StartScreen/NameChangePanel/NameContainer/OkButton" to="StartScreen/NameChangePanel" method="_on_OkButton_pressed"]
[connection signal="pressed" from="StartScreen/NameChangePanel/NameContainer/OkButton" to="." method="_on_ok_button_pressed"]
[connection signal="pressed" from="StartScreen/InstructionScreen/InstructionContainer/InsOkButton" to="." method="_on_InsOkButton_pressed"]
[connection signal="pressed" from="StartScreen/UpdatePanel/BottomButtons/GoToUpdate" to="." method="_on_GoToUpdate_pressed"]
[connection signal="pressed" from="StartScreen/UpdatePanel/BottomButtons/IgnoreUpdate" to="." method="_on_IgnoreUpdate_pressed"]
[connection signal="pressed" from="EditScreen/Panel/CancelButton" to="EditScreen" method="_on_CancelButton_pressed"]
[connection signal="pressed" from="EditScreen/Panel/OKButton" to="EditScreen" method="_on_OKButton_pressed"]
[connection signal="pressed" from="EditScreen/Panel/ClearAll" to="EditScreen" method="_on_ClearAll_pressed"]
[connection signal="pressed" from="EditScreen/Panel/HBoxContainer/CancelButton" to="EditScreen" method="_on_CancelButton_pressed"]
[connection signal="pressed" from="EditScreen/Panel/HBoxContainer/OKButton" to="EditScreen" method="_on_OKButton_pressed"]
[connection signal="pressed" from="EditScreen/Panel/HBoxContainer/ClearAll" to="EditScreen" method="_on_ClearAll_pressed"]
[connection signal="pressed" from="ObservationWindow/Panel/BehaviourButtons/BehaviourOne" to="ObservationWindow" method="_on_BehaviourOne_pressed"]
[connection signal="pressed" from="ObservationWindow/Panel/BehaviourButtons/BehaviourTwo" to="ObservationWindow" method="_on_BehaviourTwo_pressed"]
[connection signal="pressed" from="ObservationWindow/Panel/BehaviourButtons/BehaviourThree" to="ObservationWindow" method="_on_BehaviourThree_pressed"]
@ -2319,5 +2421,8 @@ horizontal_alignment = 1
[connection signal="pressed" from="ObservationWindow/Panel/Button" to="ObservationWindow" method="_on_Button_pressed"]
[connection signal="timeout" from="ObservationWindow/TwentySecondTimer" to="ObservationWindow" method="_on_TwentySecondTimer_timeout"]
[connection signal="visibility_changed" from="Results" to="Results" method="_on_Results_visibility_changed"]
[connection signal="pressed" from="Results/Panel/SaveReport" to="Results" method="_on_SaveReport_pressed"]
[connection signal="pressed" from="Results/Panel/BackMainMenu" to="Results" method="_on_BackMainMenu_pressed"]
[connection signal="pressed" from="Results/Panel/ResultMenu/BackMainMenu" to="Results" method="_on_BackMainMenu_pressed"]
[connection signal="pressed" from="Results/Panel/ResultMenu/EditReport" to="." method="_on_edit_report_pressed"]
[connection signal="pressed" from="Results/Panel/ResultMenu/SaveReport" to="Results" method="_on_SaveReport_pressed"]
[connection signal="pressed" from="Results/Panel/EditMenu/CancelEdit" to="." method="_on_cancel_edit_pressed"]
[connection signal="pressed" from="Results/Panel/EditMenu/SaveEdit" to="." method="_on_save_edit_pressed"]

View File

@ -1,6 +1,6 @@
keys,en,nl
INSTRUC,"The [b]Time Sampling Form[/b] is a guided observation tool. You set the length of your observation in minutes. Every 20 seconds, you click the button that corresponds with the behaviour you observe at that time. \n\nThe buttons to select the observed behaviour will be visible in the final 5 seconds of each 20 second interval. \n\nFor first time users: It is recommended to do a one-minute trial to gain familiarity with the system. I hope you find this tool useful!","Het [b]Tijdsteekproef Formulier[/b]."
TITLE,"Time Sampling Form","Tijdsteekproef Formulier"
INSTRUC,"The [b]Time Sampling Form[/b] is a guided observation tool. You set the length of your observation in minutes. Every 20 seconds, you click the button that corresponds with the behaviour you observe at that time. \n\nThe buttons to select the observed behaviour will be visible in the final 5 seconds of each 20 second interval. \n\nFor first time users: It is recommended to do a one-minute trial to gain familiarity with the system. I hope you find this tool useful!",Het [b]Tijdsteekproef Formulier[/b].
TITLE,Time Sampling Form,Tijdsteekproef Formulier
WHO,Who are you observing? (First name),Wie
COMPLETE,You must complete all fields below!,Compleet
YOU,What is your name?,Jij bent
@ -13,7 +13,10 @@ EXP,Explanation,x
BUT_MAN,Manual,x
BUT_EDIT_ITM,Edit Items,x
BUT_EDIT_NM,Edit Names,x
BUT_EDIT_RESULT,Edit Report,x
BUT_STRT,Start,x
BUT_CANCEL_EDIT,Cancel,x
BUT_SAVE_EDIT,Save,x
UPD_TITLE,An Update is available!,x
UPD_TEXT,You are currently using version XX. The latest version available is XX. Version changes are:,x
UPD_TEXT2,text,x

1 keys en nl
2 INSTRUC The [b]Time Sampling Form[/b] is a guided observation tool. You set the length of your observation in minutes. Every 20 seconds, you click the button that corresponds with the behaviour you observe at that time. \n\nThe buttons to select the observed behaviour will be visible in the final 5 seconds of each 20 second interval. \n\nFor first time users: It is recommended to do a one-minute trial to gain familiarity with the system. I hope you find this tool useful! Het [b]Tijdsteekproef Formulier[/b].
3 TITLE Time Sampling Form Tijdsteekproef Formulier
4 WHO Who are you observing? (First name) Wie
5 COMPLETE You must complete all fields below! Compleet
6 YOU What is your name? Jij bent
13 BUT_MAN Manual x
14 BUT_EDIT_ITM Edit Items x
15 BUT_EDIT_NM Edit Names x
16 BUT_EDIT_RESULT Edit Report x
17 BUT_STRT Start x
18 BUT_CANCEL_EDIT Cancel x
19 BUT_SAVE_EDIT Save x
20 UPD_TITLE An Update is available! x
21 UPD_TEXT You are currently using version XX. The latest version available is XX. Version changes are: x
22 UPD_TEXT2 text x

View File

@ -1,5 +1,9 @@
"This text is just a placeholder.
6 April 2025 - Version 0.2 released
- But I want to test if it works.
- Like this.
- Or this."
It's been a while! A new version of the Time Sampling Form is now available for your usage. Please let me know via info@jaapmarsman.com if you run into any issues.
New features for this release:
- Updated the user interface to be a bit more modern. Not completely happy with it yet, but it's a start.
- Added an "Edit Report" button once the scoring is completed, so you can modify the report.
- Began with under the hood work for a multilingual version.