7 Commits

Author SHA1 Message Date
Marco Dalla Tiezza
5d3cdb7abb Updated to v4.0.3 (hotfix) 2024-06-10 21:57:47 +02:00
Marco Dalla Tiezza
5b8670814b Removed setProperty and findChild in dowloader.py for code uniformity 2024-06-10 21:51:53 +02:00
Marco Dalla Tiezza
19acf11b1a Fixed a potential bug affecting ARM architecture 2024-06-10 21:30:28 +02:00
Marco Dalla Tiezza
39056d1d91 Updated name of excluded DLLs (only for linux since it is using a lib prefix) 2024-06-10 21:22:32 +02:00
Marco Dalla Tiezza
436c54b733 Fixed #48 an error occurig on Linux where configuration file path are not properly resolved during startup with the binary version of the program 2024-06-10 20:40:46 +02:00
Marco Dalla Tiezza
b48a42dcc8 Explicit DLLs inclusion/exclusion in Nuitka, close #47 2024-06-10 16:55:04 +02:00
Marco Dalla Tiezza
e00e21c46a Fixed #46 2024-06-10 11:56:27 +02:00
13 changed files with 382 additions and 319 deletions

3
.gitignore vendored
View File

@@ -6,3 +6,6 @@ data/
*.qtds
artemis_rc.py
site
Generated
app.build
app.dist

View File

@@ -5,6 +5,16 @@
## [Unreleased]
## [4.0.3] - 2024-06-10
### Changed
- Optimized final package size (reduced by 30% to 50%) by explicitly including necessary plugins/DLLs and excluding unnecessary ones with Nuitka [#47](https://github.com/AresValley/Artemis/issues/47)
### Fixed
- When the links/urls in the description field of a signal are clicked, they open the default browser [#46](https://github.com/AresValley/Artemis/issues/46)
- Fixed an error occurig on Linux where configuration file path are not properly resolved during startup with the binary version of the program (they are if running from source) [#48](https://github.com/AresValley/Artemis/issues/48)
## [4.0.1] - 2024-06-9
### Added
- Database format has been changed from .csv to a proper relational DB (sqlite) which is much easier handled thanks to the native library shipped with python
@@ -91,7 +101,8 @@ First release.
<!-- Links definitions -->
[Unreleased]: https://github.com/AresValley/Artemis/compare/v4.0.1...HEAD
[Unreleased]: https://github.com/AresValley/Artemis/compare/v4.0.3...HEAD
[4.0.1]: https://github.com/AresValley/Artemis/compare/v4.0.1...v4.0.3
[4.0.1]: https://github.com/AresValley/Artemis/compare/v3.2.4...v4.0.1
[3.2.4]: https://github.com/AresValley/Artemis/compare/v3.2.1...v3.2.4
[3.2.3]: https://github.com/AresValley/Artemis/compare/v3.2.2...v3.2.3

View File

@@ -6471,169 +6471,171 @@ K\x11iY\xaa\xd8v\xba\x8f*\x1e]\xb0\x1c\xdb^\
\xd8\xd1\xbd\xfb\x0d\xe2\xaf\xddx\xe2z\xbaC\x09RL\
9\xb3\xd7\x87\xd1\xb1@\xed.\xf3ar\xf8\xde\x10\xc9\
\x02D\x88es\xc6U\x0b\xbf\x7f\x03\xe3\xf0j\xd6\
\x00\x00\x09\xff\
\x00\x00\x0a\x18\
\x00\
\x00W\xe1x\xda\xed\x5cko\xdb:\x12\xfd^\xa0\xff\
\x81\xeb/v\xd0Ty\xed\x05.\x04\x14\x0b\xc7I\xb6\
\xc1\xe6\xd5<\x1a,\x8a \xa0%\xda\xd6--\xaa\x94\
\x944\xf7\xde\xfc\xf7\x1dJ\xd4\x83\x12)\xcbyl\x9a\
@F\x1f6yH\x0d\x873s\x86\xb4Io\x1e0\
\x1e\xa1/\xd1\x97\xd8s\xbe\xbf\x7f\xe7)\x9f\xad\x11\xf3\
#\xcehh\xac\xb0\x0eqD\xb8\x87i\x0dq\x80\xef\
X\x1cA\xcb\xbc\xa6o\xad9\x0c\xde\xfa\xc4\x8f\xc2>\
\xc2!\xba\xd8\x1f\xe5\x05\x02\xf8\xfe\xdd\x09\x9e\x12\xf4\xd7\
\xfbw\x08^\x9ek\xa3\xd0\x9b\xfa\x98\x8a\xd2\xb4\x0c\xfb\
\xce\x8c\xf1\xd0\x9ax\x94\xda(\xc0\x1c\x9a\xa65l\xfc\
\x07q\xa2#<'6\xea\x15\xcd\x8e\xc7\x7f\xf4D\xc7\
\x02\x92\x96\x22\x16\x10\x7f\x879\x87\xd8\x87z>X\xa9\
U\x9ey\xd3]\xd7\x8b\x18\x1f\x84\x11\xf7\xfc)\x8a\xee\
\x02\xb2\x8an0\x17\xa8kx*\x9e\xaf\xa21c\x14\
y\xe1\xb5On\xd5.\xb0\xeb\x8ept\x8e\xa7\x03\xcf\
\x8f\x90C\xc7\xfb\xae\x0ap\x09%\x11)cp\x94`\
RT\xc0A\x08\x1e\xdd!\xf9\xf4\x98S\x90\xc8so\
\xbd\xef^\x05!D\x9ap\xf2#&\xbesw\xe0\x85\
\x91\xa6~\x8c}h\xeaF3C=<\x9cL\x197\
5\xc7\x94\x8e\x9a\x11s\xe6\xc6\x14G\x1e\xf3\xcd\x00b\
\xea\xdd\x99\x18j(sJ}f\xba\x99\xc4\xbe#J\
Q\xc0\x02\xf1Pr&g\x1a\xa6d\x00\xea]\xc9\x8c\
G\xbc\xe4\x84\xa1O\xe2\xdfo\xebWEM:\x11\xc2\
X\xac\x88\xfc\x8cR\x84\xe5\xc3\xe7\x02\xa3\xe8U\x22\xf2\
\xb2\x02\xa6\xa8W\xc2\xf2\xb2L\xecL\x1a\xd1\xfe\x9a\xb2\
jo\x8al9.\x0e\xaa8+\xa4\x9eC\x06\x1f7\
Vj-\xc4#\x8b\x9es\x01\xf4\xb8\xbc\xe7\x1cW\xe9\
Y\xd5\xc2WL\xe3\x5cQ\x13\xc6\xe78\xba\xe6\xd8\x9f\
\x92\x81\x1c\xcfj&\xf0\x8a\xaa\x17sC)\xeej&\
\xcfJ\xf9\x99e\x8b\x94\x82fE\x05\xa8b\x97\x12\x07\
\xa5\xd7ulf\x80\x12$>*\x95%\xf3- \xb2\
\xb0\x00\x96-R\xc2\xb2\xa2\x92X\xa9Ag\xe28\x93\
\xf2\xc0\x5c\x12:\xdc\x0bD\x8bsP\xca\x90\x13\x5c\xb6\
\xbfRu\xb9\x957A\x99\xa2\xd1?>}B\xb1\xef\
\x92\x89\xe7\x13W1\xf6L\xe7\xdb\x98[!\x89\xb6\xd3\
\xb7Y\xc3o\x1bW\xf9$\xc1\xfb\xd2<\xddW\x1f%\
$\x81\x90\xb3\xe0Q\x80\xd8\x8e\xa3\x88\xf9\xd6\x8d\x17z\
cJ`\x0c\x11\x8fI\x0d\x95\x87.9H(R\x1e\
\x9e\xbd%4$m\x1e2\xc1\x004\x89?\x87\x88n\
\x85,\xe6\x0e\x91\x8f\x0b\x03`\x05\x1e\xcf!j\xab\xee\
\x98\x0d\x15\xc7\xae\xc7\x92\xdad\xc4\xfd~m\xa8\x94a\
\xf7\x84\xe2;\xe0\x0a\xb5AY\x8bZ\xf9\xc1<\xbe\xcb\
\x96&\x8d\x0b\xc8!\xf1\xe3A2.\x89\xba\xaf\x85;\
\xc5y(\xbb%\xfcZ\xcc\xe6*\x8a\x83@\xbeW\xe4\
\x8e\xf8]U\x181\xe0\xa2%\x18A:\xc3y{a\
\x16\xd56\xe2\xc5I\x14s\x1f\x95\x9an]\xa1\x0f\xa8\
\x8f>\xc2\xdf\x0f\xe5\x0e\xb6\xae\xd4\xd6z\xa5\x98\xfa\xac\
\xb4-\xeb\x16\x9c\xcc\x99\xa1\x01\xe1\x9c\xf1\x9a\x8c\xb2\xaf\
\xfe\xc5\xd1\x7f\x8e\x8e/\x8f\xfa5\xeb\xaak\xb34\xa3\
\xa5\xd9,w\x9c\x14\xa7\x10\x8b\x13\xf0\xa7\xfa4\x96!\
\xa2\xc33\x06\xde2\xa8Y\x87\xee\xe9\x85U,\xf1\xcc\
zG\x09hH\xa9\xdaM\x9d\xdbz\xbd\x86x\xde\xfb\
\xd8k\x08\xdaJm\x95\x11\xbf]\x99i\xb0\x5cW\x89\
\xe7\xe5\xaaRd\xae\x14\xab1\xb9\x5cY\x89\xc3\xe5\xaa\
\x22\xfa\x96K\x1b\xc2n\xaf2x\x11=\x13\xb5f\xf1\
se)\x9b\xa8\x04\xa0\xde\x0f\xee\xd8kkkIq\
\xb8\x96\xc7\x22\x9fE\xd7\xf8\x06{\x14CL\xb3\xc2\x9b\
iO\x13\x10D4m\xb4\xa1\x14\xc5\xa6SJ\x14\x03\
\x10\x8e\xae)n\x19P\x13\x85\xe5\xd9q\x1b\xb40\x0b\
\x89#\xbe\x18\x91\xab\xc7%\xfam\x81+&\xbf%\x9a\
\xb4\xc1\x81i\xb4\x81e\xc6\xd5\xaaK\xd7\x85\x0c~\x11\
R\x1f\x05\x1bT\x5c\xa7Q\xad\x86\xeb0\xad\x82\xeb\xb0\
\x06\xfdj\xc1\xa4\x05L\xa7\xdd:\xca\xa8\x5cM\x87z\
\xdd\xaa\xc0j\x80\xdf\x81\x85(\x9b*\xbe\x00kH7\
)\x1d&\xab2\x99\x18\x16\x80\x9f6\x1a\xa4\xcbH+\
\x09_\xc0j\xc9\xff+h\x0dm\x16\xb0\xbb\x026#\
\xdet\x16\x01.}#\x81J\xec\xc2\xb06U%u\
(\x0b\xc9\x09\x83$\x1bz:\x81\xb5K`\x8dD\xd1\
\xb1\x7f\x02\xa1$<\x86\x95\xb2'\x92\xd2\xa2\xc5\x88\xd1\
x\xee\xa7\xab\xe8\xaa\xf1\xe8W\xc1*\xe6\x94\x04D\xac\
\xcdu\xf4+&\x15\x1aj\x97v\x8a\x91\xc2Bu\x0a\
\x08\x1b\xa5\x13\xa1\xeb+\xc96 \x98\xdai\xaf;8\
\xc2\xd6\x8d\xa0\x10=4\x1dP\x22\xf9\xa5\xd0\xb3\xad\x99\
\xfb\x0a6\xe0d\x02\xd4O\xdc\xcf\x89\xc2m\xb4\xf9\x9b\
\x1e?\x83j* \xc4m\xeav\xcc`,\xf3}\x1f\
\x22\xb8\x8d\xb6\x0c#bA3`\x02\x1ed\xeb\x82B\
\xf6b\xfe\x08f\xfb\xbb\x10\xc5\xa05i\xe6r\x1f\xa0\
\xd0\x9eC\xc7\xd7\x9e\xbbbnT3h+1\xaf\x81\
\xa1\xc9}\xbd\xf8\xde\x9clU\x5c\xcad\x86\xe6\x8d\x98\
r-\x17\xb3q\x88\xf9\xd4\xf3m\xb4\xb1^\x07\x80\x9e\
\xcb\xd5\x05\xe0\x00\x8f\x09\xad\xa5\xb0\xf9\x8e\xd0\x91\xb2T\
O<\x8cQ\xc6m\x94\xedG\xc1\xd2\xcbQDJ&\
\x8d\x81\xff\x06\xdeO\x02\xab\x92?I\xdd\x90@$\xef\
O\xc0`:\x04;\xf2\xe7\xd0\x81\x8dD\xca`%\x9f\
?\x8f\xa0\x80p\xb5\x8d4\xd2\xca@\x0c&\x9fY\xb0\
\xc6n$\x0a\x17\x0f\xfe\x22\x1f{@&\x11\xfa;\xff\
x\xce\x82\xca\xc8\xa9\x17\xe8\xec}\x91\xab)\xeb\x90S\
v\xab\x8f5f\xb9\xa4:J\xa2}\xd5)\xa8E \
r\x9e#\x0a\xc1z\xe6\x0d\x86\x95s\xc6\xe8\xb9\x174\
\xc5\x14\x99I\xd8`\xce7\x04\xc6gF\xa6\x1a\xeb'\
\x81\x0ad\x83\x05\xc5\x1c\x9a\xf4[\x87\x91\xf6qN\xd9\
\xf2,\xa6h\xfd\xea11K-0\x1b\x87\x08\x1b\xe5\
|\xa2\x8e\x90\x09\x86Q\xf3\xcb\x98L\x15+}O\x07\
]d2\x8d\xe6\x22'\xef\x83f\xba\x16\xcfI\x9dB\
\xc4\xc6\xb7\x8eA\x1a\xa9\xa2}\xfc\xa8E\xa1\xea\xf45\
\xe5;FBX&\xf8\xabz\xfb\x11\x9e\xf3Ao\xef\
t\xf7\xcb\xc5\xee\xd1\xe8\xbf\xe8tx\xf4\xef\xdd\x9e\xc1\
\x1a\xab\xbc\xb1\xb1i\x88\x14\x0f\xe0\x8f\xdck\x09\x8f<\
\xc7\xd0\xf2\xab\xa9e\xcd\x0b\x16\xaaJ8C\xbe\x09\xf0\
\xb4\xda\xfc\xd8Z\x7f\xbf7\xe0\xc6\x8c6\xc6\xd9\x17Q\
r\xa3\xce\xf7#2\xd7\x9b\xec\xe2\x5c\xf7\xfe\x97\xf0\x83\
\xed\xe1\xd1\xce\xe5\xfe\xce\xf9\xe7\xd7\xea\x07\xcd\x99\xcai\
\xb2b[\x90\xa7<\xdc\x9d\xf2]\xb3\xce\x9d\xfe\xbfs\
\xd5\x86\x98\xca\xdf1[rWO\xb7\xae\x90\xbb\x7f\x0f\
H\xa1[\x90\xe0m\xdaxc\xbd\xb24\x98\xc9<\xa2\
VQ_UT\xd2\x870\xc0\x8e\xe7O\xa1\xe9o\xcb\
F\x10\x9305\x81\xea\xd5\xc6\x01.N\xc2\xaa\xfcc\
J\xc5\xda\xa6d\x85w\x81y\xf8\x91\x88\xc1v\xb3\xab\
\xaa>Vp\x7f\xaf\x19\xaeq\x10T\xb6s\xb1<k\
\xee\xe1\xe1nb\xf4\xf8\x7f\xb6\xc0/\xf2\xfc\x86\xa4\xbe\
d\x82s\xcf\xf7\xe6\xf1\x5c\x9a\xff\xc6\xe6\xba\xb9\xc5l\
\xc1B\xaaX\xe04\x0b\xa5\xa4\xc5\x0d\xcf+\xd2\xe3\x06\
P\xb2\x05q\x02\xe9\x7f\xea-\x0dH\x0a\x13\xd9\x0a\x98\
\xca\x97C\x9b%l\x03k\xb7\x86J\x90\xca\xcfS\xfa\
{\xd972\xfdU\xf4\xedj\x15\x95\xbe3Xb\xb6\
\x0d\xc5b5\xfe\xd5#\xb7M2\xb5\x99\xf2e\xb6\xfc\
\x94\xd0\xd6\xd0'\xf8$\xb8M\xb2\x99l\xe7\x82Z\x9f\
sWm\x88\x17\x86\xdd\x12\xcd\xb6\x84\xe6\x975\xa6\xb5\
m\x9b\xfd\x09\xd3>\xc5\xd6\xd5\x82\x00\xd4B\xc7m7\
ZoD\xb4\xde\x90Xbc\xa2\xb6AQ\xe8`\
\xf3J~\xfb\x8e\xfe\x95m[\xa0V\x8f\xd5)ts\
\x81B\xef\x17\xf8Xko\x5c\xe0\x91\xb9D\xab\xa8\xfc\
\xed\xfe\x03\xc4\xba_f\x97\xe4\xd9h\xbb\xf8~\xe9\x05\
i;_\xaat\xb4\xdd\xd1\xf6+\xa5\xed\xed\xec\xc7\x12\
\x1dm?\x03mk~\xf0\xda\xd1vG\xdb\xad=\xf2\
\xad\xd1v\xf5\xf7\x1e/H\xde\x87\xc7;\x17\x07\xc3\xf3\
\xfd\xe3\xa3\x8e\xbd;\xf6~\xa5\xec}\x98\xfbSG\xdf\
\xcf@\xdf\xba\xe3$\xcf\xc1\xdf\x1b\x1d\x7f\xbf\x1d\xfeV\
|\xf2\x0d\x128\xf9\x15\xa8{\xb7#\xed\x8e\xb4_/\
i\x93\x8e\xae\x9f\x87\xaeIG\xd4\x1dQ/\xe7\x87o\
\x8d\xa2\xf3\xf3\x0f/\xc8\xd0\xc3\xd1^G\xd0\x8f\x0d\xc0\
K\x90xG\xd0OI\xd0`\xbd\x1d??\x03?+\
7,t\xf4\xdc\xd1s\x0b/|k\xec\xac\x9e;|\
A\x8a>8\x1eu\xbb\xdf\xddB\xfa5\xf3\xf4\x81\xf4\
\xa5\x8e\xac\x9f\x81\xac\xd5K\x8f:\xc6\xee\x18{\x19\x7f\
\xfceh{O\x0cGP\xa9i<\x0f8\x05^>\
>\xbb\x10l\xfe\xdd|n=\xd9E \x93LV;\
/[\x94Nh\xee\x1317\x08(v\xc8\x0cx\x91\
\xf0\xf3\xd2\xe1\x8e\x9d\xa2\x8f^\xc3<\xa5,\xcc<?\
\x92,\xdc\x10\xd2o9\x0e\xc4\xf6J:\x10a\x1f\xd6\
%\xe3\xee%\x147\x1f\x01\xddK.\x17\x92\x19\x02\xe8\
\xed\xbb\xcbn\x93\x915P\x1c\xc1\xee\xb1O\xef\x9a\xe6\
\xc2`Dg\x0eg\x94\x8a\x8bV\xb2$\xc5.\xca\x9a\
T\x9f\x9f[x\xb2#\xa3\x8b\xcfZ\xb54\xbd\xba=\
7\x1f$my\xca\xbb\xde^9\xcd2,.\xa4i\
:\x9eT\xba\xb7f\xd9\xc38\xf5#\xde\xb5\xd3\xe7\xc6\
\xb0?/\xdd\xe5\xa8\x93+\xb9\x15G_\x9d\xde\xa0\
c+\xd7\xf3h$\xae\x9d\xc7\xddZ_o\xd7 \xcb\
-\x7f_\x7f\xbcJ\x1a\xd3ia\x12\xa9S&\xfa\xb0\
\xce\x22N\x22g\xd6V\x87\x86\x93\x85K\x19\xe7\xc3V\
V\x0f\xd2\x80\xbe\xabSq3V\xbb\x95Z~AQ\
\x03\x0cV_Vn \xc9\x0dK\xf2~%Q\x13\xae\
\x8d9\xbb\x0d\x09\xaf\x5c\xabT\xcb\xa1\xbc\x10\x223\xc4\
\xaf\xe18\x8c8v\x22y\xd5\xcc>\xf4!\x02[\x8b\
\xe3\xf5\x0b\x92\x05\xb9\xe4\xbb\xe8=E\x12\x0e\x9a\x16\xbc\
\x7f\xc1\xe9\xeeO\xd0\xb4\x8f)\xbd\x1b\x94o\xd7{P\
\x0e\xfe\xe8\xe9\xaa\xdeb\xf4\xf0Y\x83\x9e\xe2y\x12\xd5\
~\x91y\xdb\xe9=\xd5\xe2\xa9~\xd7\xec\xa3S.\xc3\
Gy\x1c1\xbf\xc2\x05\xfe\xfc\x0fA|\x0cy\
\x00\x00\x05\xab\
\x00Xhx\xda\xed\x5cko\xdb:\x12\xfd^\xa0\xff\
\x81\xeb/v\xd0Ty\xed\x05.\x0ct\x17\xae\x93l\
\x83\x9bw\x93\x16\x8b\x22\x08h\x89vtC\x8b*E\
'\xcd\xdd\xcd\x7f\xdf\xa1D=(\x91\x92\x9c&\x9b&\
\x90\xd1\x87M\x1eR\xc3\xe1\xcc\x1c\x0em\xd2\x9f\x87\x8c\
\x0bt\x22N\x16\xbe{\xfd\xf6\x8d\xaf}v\xc6,\x10\
\x9c\xd1\xc8Z\xe1\x1c`A\xb8\x8fi\x05\xb1\x8f\xef\xd8\
B@\xcb\xac\xa6\xef\xac\xb9\x0c\xde\x06$\x10Q\x1f\xe1\
\x08\x9d\xef\x8d\xb3\x02\x09|\xfb\xe6\x18\xcf\x08\xfa\xcf\xdb\
7\x08^\xbe7D\x91?\x0b0\x95\xa5I\x19\x0e\xdc\
+\xc6#g\xeaS:D!\xe6\xd04\xa9a\x93?\
\x89+\x0e\xf1\x9c\x0cQ/ov4\xf9\xb3';\x96\
\x90\xa4\x14\xb1\x90\x04\xdb\xcc=\xc0\x01\xd4\xf3\xc1J\xa5\
\xf2\xb3?\xdb\xf1|\xc1\xf8 \x12\xdc\x0ffH\xdc\x85\
d\x15\xdd`.Q\x97\xf0T<_E\x13\xc6(\xf2\
\xa3\xcb\x80\xdc\xea]`\xcf\x1bcq\x86g\x03?\x10\
\xc8\xa5\x93=O\x07x\x84\x12A\x8a\x18,bL\x82\
\x0a9\x08\xc1\xc5\x1dRO_p\x0a\x12\xf9\xde\xad\x7f\
\xed\x97\x10R\xa4)'\xdf\x17$p\xef\xf6\xfdH\x18\
\xea'8\x80\xa6\x9e\xb8\xb2\xd4\xc3\xc3\xc9\x8cq[s\
L\xe9\xb8\x1e1g\xde\x82b\xe1\xb3\xc0\x0e \xb6\xde\
\xdd\xa9\xa5\x862\xb7\xd0g\xaa\x9b\xe9\x22pe)\x0a\
Y(\x1fJ>\xab\x99\x86)\x19\x80zWR\xe3\x91\
/5a\xe8\x83\xfc\xf7\xdb\xfaE^\x93L\x844\x16\
G\x90\x1f\x22A8\x01|\xce1\x9a^\x15\x22+\xcb\
a\x9az\x15,+K\xc5N\xa5\x91\xed/)+\xf7\
\xa6\xc9\x96\xe1\x16a\x19\xe7D\xd4w\xc9\xe0\xfd\xc6J\
\xa5\x85|d\xdes&\x80\x19\x97\xf5\x9c\xe1J=\xeb\
Z\xf8\x82\xe9\x22S\xd4\x94\xf19\x16\x97\x1c\x0732\
P\xe3YM\x05^\xd1\xf5bo\xa8\xc4]M\xe5Y\
)>\xb3h\x91J\xd0\xb4(\x07\x95\xecR\xe1\xa0\xf4\
\xb2\x8aM\x0dP\x81\xe4G\xad\xb2`\xbe9D\x15\xe6\
\xc0\xa2E*XZT\x10+1\xe8T\x1cwZ\x1c\
\x98G\x22\x97\xfb\xa1lq\x06J\x19q\x82\x8b\xf6W\
\xa8.\xb6\xf2\xa7(U4\xfa\xdb\x87\x0fh\x11xd\
\xea\x07\xc4\xd3\x8c=\xd5\xf9G\xcc\x9d\x88\x88\x8f\xc9\xdb\
\xb4\xe1\xb7\x8d\x8bl\x92\xe0}a\x9e\xee\xcb\x8f\x92\x92\
@\xc8ix\x14 >.\x84`\x81s\xe3G\xfe\x84\
\x12\x18\x83\xe0\x0bRAe\xa1K\x0d\x12\x8a\xb4\x87\xa7\
o\x09\x8dH\x9b\x87L1\x00m\xe2\xcf!\xa2;\x11\
[p\x97\xa8\xc7E!\xb0\x02_\xcc!j\xeb\xee\x98\
\x0e\x15/<\x9f\xc5\xb5\xf1\x88\xfb\xfd\xcaP)\xc3\xde\
1\xc5w\xc0\x15z\x83\xa2\x16\x8d\xf2\x83y\x5c\xab\x96\
6\x8dK\xc8\x01\x09\x16\x83x\x5c\x0au_\x09w\x9a\
\xf3PvK\xf8\xa5\x9c\xcdU\xb4\x08C\xf5^\x93[\
\xf0\xbb\xb20r\xc0yK0\x82d\x86\xb3\xf6\xd2,\
\xcam\xe4\x8b\x13\xb1\xe0\x01*4\xdd\xba@\xefP\x1f\
\xbd\x87\xbf\xef\x8a\x1dl]\xe8\xad\xcdJ\xb1\xf5Yj\
[\xd4-8\x99{\x85\x06\x84s\xc6+2\xaa\xbe\xfa\
\xe7\x87\x7f\x1c\x1e}=\xecW\xac\xab\xaa\xcd\xc2\x8c\x16\
f\xb3\xd8q\x5c\x9c@\x1cN\xc0\x9f\xaa\xd3X\x84\xc8\
\x0e?3\xf0\x96A\xc5:LO\xcf\xadb\x89gV\
;\x8aA#J\xf5n\xaa\xdc\xd6\xeb\xd5\xc4\xf3\xde\xfb\
^M\xd0\xd6j\xcb\x8c\xf8\xed\xc2N\x83\xc5\xbaR<\
/V\x15\x22s\xa9X\x8f\xc9\xc5\xcaR\x1c.V\xe5\
\xd1\xb7XZ\x13v{\xa5\xc1\xcb\xe8\x19\xab5\x8d\x9f\
+K\xd9D)\x00\xf5\xbesw\xb8\xb6\xb6\x16\x17G\
kY,\x0a\x98\xb8\xc47\xd8\xa7\x18b\x9a\x13\xdd\xcc\
z\x86\x80 \xa3i\xad\x0d%(6\x9bQ\xa2\x19\x80\
ttCq\xcb\x80\x1a+,[\x1d\xb7AK\xb3P\
8\x12\xc8\x11yf\x5c\xac\xdf\x16\xb8|\xf2[\xa2I\
\x1b\x1c\x98F\x1bXj\x5c\xad\xba\xf4<X\xc17!\
\xcdQ\xb0F\xc5U\x1a5j\xb8\x0a3*\xb8\x0a\xab\
\xd1\xaf\x11LZ\xc0L\xda\xad\xa2\xac\xca5th\xd6\
\xad\x0e,\x07\xf8mHD\xd9L\xf3\x05\xc8!\xbd\xb8\
t\x14geja\x98\x03~\x0c\xd1 I#\x9d8\
|\x01\xab\xc5\xff\xaf\xa05\xb4\x99\xc3\xeer\xd8\x15\xf1\
gW\x02p\xc9\x1b\x05\xd4b\x17\x86\xdcT\x97\xd4\xa5\
,\x22\xc7\x0c\x16\xd9\xd0\xd31\xe4.\xa13\x96EG\
\xc11\x84\x92\xe8\x082e_.J\xf3\x16cF\x17\
\xf3 \xc9\xa2\xcb\xc6c\xce\x82u\xcc)\x09\x89\xcc\xcd\
M\xf4+'\x15\x1a\x1aS;\xcdH!Q\x9d\x01b\
\x88\x92\x890\xf5\x15\xaf6 \x98\x0e\x93^\xb7\xb1\xc0\
\xce\x8d\xa4\x1034\x19P,\xf9W\xa9\xe7\xa1a\xee\
K\xd8\x90\x93)P?\xf1>\xc5\x0a\x1f\xa2\xcd\xdf\xcc\
\xf8+\xa8\xa6\x12B\xbc\xban'\x0c\xc62\xdf\x0b \
\x82\x0f\xd1\x96eD,\xac\x07L\xc1\x83\x86\xa6\xa0\x90\
\xbeX0\x86\xd9\xbe\x96\xa2X\xb4\xa6\xcc\x5c\xed\x03\xe4\
\xdas\xe9\xe4\xd2\xf7V\xec\x8d*\x06\xed\xc4\xe65\xb0\
4\xb9\xaf\x16\xdf\xdb\x17[%\x97\xb2\x99\xa1}#\xa6\
X\xcb\xe5l\x1c`>\xf3\x83!\xdaX\xaf\x02@\xcf\
\xc5\xea\x1c\xb0\x8f'\x84V\x96\xb0\xd9\x8e\xd0\xa1\x96\xaa\
\xc7\x1e\xc6(\xe3C\x94\xeeGA\xea\xe5j\x22\xc5\x93\
\xc6\xc0\x7fC\xff\x07\x81\xac\xe4/R5$\x10\xc9\xff\
\x0b0\x98\x8e\xc0\x8e\x829t0Dr\xc9\xe0\xc4\x9f\
?\x8d\xa1\x80p\xbd\x8d2\xd2\xd2@,&\x9fZ\xb0\
\xc1n\x14\x0a\xe7\x0f>Q\x8f\xdd'S\x81\xfe\x9b}\
<cai\xe4\xd4\x0fM\xf6\xde\xe4jZ\x1er\xca\
n\xcd\xb1\xc6.\x97RGA\xb4/&\x05\xb5\x08D\
\xeeSD!\xc8g^aX9c\x8c\x9e\xf9a]\
LQ+\x89!\x98\xf3\x0d\x81\xf1\xd9\x91\x89\xc6\xfaq\
\xa0\x02\xd9 \xa1\x98C\x93~\xeb0\xd2>\xcei[\
\x9e\xf9\x14\xad_\xfcL\xcc\xd2\x0b\xec\xc6!\xc3Fq\
=QE\xa8\x05\x86U\xf3\xcb\x98L\x19\xab|\xcf\x04\
m2\x99ZsQ\x93\xf7\xce0]\xcdsR\xa5\x10\
\xb9\xf1mb\x90Z\xaah\x1f?*Q\xa8<}u\
\xeb\x1d+!,\x13\xfcu\xbd}\x8f\xce\xf8\xa0\xb7{\
\xbasr\xbes8\xfe7:\x1d\x1d\xfek\xa7g\xb1\
\xc62ollZ\x22\xc5\x03\xf8#\xf3Z\xc2\x85\xef\
ZZ~\xb1\xb5\xacxA\xa3\xaa\xa43d\x9b\x00\x8f\
\xab\xcd\xf7\xad\xf5\xf7{\x0dn\xc2hm\x9c}\x16%\
\xd7\xea|O\x90\xb9\xd9d\x9b\xd7\xba\xf7\xbf\x84\x1f|\
\x1c\x1dn\x7f\xdd\xdb>\xfb\xf4R\xfd\xa0~\xa5r\x1a\
gl\x0d\xeb\x94\x87\xbbS\xb6k\xd6\xb9\xd3\xffw\xae\
\xda\x10S\xf1;fG\xed\xea\x99\xf2\x0a\xb5\xfb\xf7\x14\
K\xe8\xdb\xa4\xe9\xc6z)1\xb8R\xab\x88JE5\
\xa7(-\x1e\xa2\x10\xbb~0\x83\xa6\xbf-\x1b?l\
\xc2T\x04\xaaV[\x07\xd8\xbc\x04+\xb3\x8fm!\xd6\
vA\x96\xfb\x16\x18G d\x04\x1e\xd6;\xaa\xeea\
9\xf3\xf7\xea\xe1\x06\xf7@E+\x97\xc9Y}\x0f\x0f\
w\x12\xab\xbf\xff\xbd\x05\xbe\xc9\xefk\x96\xf4\x05\x13\x9c\
\xfb\x81?_\xcc\x95\xf1ol\xae\xdb[\x5c5\xa4Q\
yzS/\x94\xb6(\xaey^\xbe8\xae\x01\xc5\x1b\
\x10\xc7\xb0\xf8O\xbc\xa5\x06Ia\x22[\x01\x13\xf92\
h\xbd\x84m`\xed2\xa8\x18\xa9\xfd8\xa5\xbf\x9b~\
\x1f\xd3_E\xdf.VQ\xe1\x1b\x83%f\xdbR,\
s\xf1/>\xb9\xad\x93\xa9\xcd\x94/\xb3\xe1\xa7\x85\xb6\
\x9a>\xc1'\xc1m\xe2\xad\xe4a&\xa8\xf3)s\xd5\
\x9axa\xd9+1lJ\x18~Wc\xcbl\xdb\xec\
N\xd8v)\xb6.\x1a\x02P\x0b\x1d\xb7\xdd~h\xbd\
\x0d\xd1z;b\x89m\x89\xca\xf6D\xae\x83\xcd\x0b\xf5\
\xdd;\xfag\xbai\x81Z=\xd6\xa4\xd0\xcd\x06\x85\xde\
7\xf8Xkol\xf0\xc8L\xa2UT\xfcn\xff\x01\
b\xdd/\xb3G\xf2d\xb4\x9d\x7f\xbb\xf4\x8c\xb4\x9d%\
*\x1dmw\xb4\xfdBi\xfbc\xfaS\x89\x8e\xb6\x9f\
\x80\xb6\x0d?w\xedh\xbb\xa3\xed\xd6\x1e\xf9\xdah\xbb\
\xfck\x8fg$\xef\x83\xa3\xed\xf3\xfd\xd1\xd9\xde\xd1a\
\xc7\xde\x1d{\xbfP\xf6>\xc8\xfc\xa9\xa3\xef'\xa0o\
\xd3a\x92\xa7\xe0\xef\x8d\x8e\xbf_\x0f\x7fk>\xf9\x0a\
\x09\x9c\xfc\x0a\xd4\xbd\xd3\x91vG\xda/\x97\xb4IG\
\xd7OC\xd7\xa4#\xea\x8e\xa8\x97\xf3\xc3\xd7F\xd1\xd9\
\xe9\x87gd\xe8\xd1x\xb7#\xe8\x9f\x0d\xc0K\x90x\
G\xd0\x8fI\xd0`\xbd\x1d??\x01?k\xf7+t\
\xf4\xdc\xd1s\x0b/|m\xec\xac\x9f:|F\x8a\xde\
?\x1aw\xbb\xdf]\x22\xfd\x92yz_\xf9RG\xd6\
O@\xd6\xfa\x95G\x1dcw\x8c\xbd\x8c?\xfe2\xb4\
\xbd+\x87#\xa9\xd46\x9e\x07\x9c\x01/\x1e\x9em\x04\
\xdb\x7f7\x9fYOz\x0d\xc84\x95u\x98\x955-\
'\x0c\xb7\x89\xd8\x1b\x84\x14\xbb\xe4\x0ax\x91\xf0\xb3\xc2\
\xd1\x8e\xed\xbc\x8f^\xcd<%,\xcc\xfc@(\x16\xae\
\x09\xe9\xb7\x1c\x87r{%\x19\x88\xb4\x0f\xe7+\xe3\xde\
W(\xae?\x00\xba\x1b_-\xa4V\x08\xa0\xb7k\x8f\
\xdd\xc6#\xab\xa18\x82\xbd\xa3\x80\xde5\xc55\x19\xca\
\x82\xeb\x91+\xfc\x1b\x1c\x9f\x9e\x1dP\xf8\xbc\x82>\xfc\
\xa3\xc9\xd4OD| \xf1\x9c\xd3\x9d\x1f\xb0X\x090\
\xa5wI\xe3\xc7b\x9b\xcf.g\x94\xca\xfb^\xd2\xd5\
\xd20/\xab\x13/;@\xf1h'W\x9b\x8f|\xb5\
\xf4\x81\xaac\xd5\x9fgmy\xd8\xbc\xda^;T3\
\xca\xef\xc5\xa9;%U\xb8>g\xd93A\xd5\x93\xe6\
\x95C\xf0\xd6h\xb47/\x5c)i\x92+\xbe\x9c\xc7\
\x5c\x9d\x5c\xe43\xd4n\x092H\x5c9\x16\xbc\xb5\xbe\
\xde\xaeA\xba\xc8\xfd}\xfd\xe7UR\xbb\xae\x97&\x91\
D\x87X\x1f\xceg\xc1\x89p\xaf\xda\xea\xd0r\xc0q\
)\xe3|X\x8a\xf7 \x0d\x98\xbb:\x95\x17t\xb5K\
\x19\xb3{\x92j`\x90\x06:\x99\x81\xc4\x17=\xa9k\
\x9edM\xb46\xe1\xec6\x22\xbct\xbbSe1\xe7\
G@\x11\x10HG\x93Hp\xec\x0au\xe3\xcd\x1e\xf4\
!#l\x8bS\xfe\x0d\xab\x16\x95{\x9e\xf7\x1e#\x1b\
0\x86\xe5\xe2%\x7f\x0f\x0a\xcf?=]\xe5\xcb\x94\x1e\
>k\xd0\xd3b\x1eG\xb5_d\xde\xb6{\x8f\x95\xc5\
U\xaf\xbc\xfd\xe9\xb5\x9f\xe5\xe3}r\xba?\xbbI\x06\
\xfe\xfc\x0f\xf4\xcd*2\
\x00\x00\x06\x95\
i\
mport QtQuick\x0d\x0ai\
mport QtQuick.Wi\
@@ -6642,90 +6644,105 @@ uick.Controls\x0d\x0ai\
mport QtQuick.Co\
ntrols.Material\x0d\
\x0aimport QtQuick.\
Layouts\x0d\x0a\x0d\x0aWindo\
w {\x0d\x0a id: win\
dowDownloader\x0d\x0a\x0d\
\x0a width: 400\x0d\
\x0a height: 130\
\x0d\x0a\x0d\x0a maximumH\
eight: height\x0d\x0a \
maximumWidth:\
width\x0d\x0a\x0d\x0a mi\
nimumHeight: hei\
ght\x0d\x0a minimum\
Width: width\x0d\x0a\x0d\x0a\
modality: Qt\
.ApplicationModa\
l\x0d\x0a flags: Qt\
.Dialog\x0d\x0a\x0d\x0a t\
itle: qsTr(\x22Arte\
mis - Downloader\
\x22)\x0d\x0a\x0d\x0a signal\
onAbort()\x0d\x0a\x0d\x0a \
Page {\x0d\x0a \
id: page\x0d\x0a \
anchors.fill\
: parent\x0d\x0a\x0d\x0a \
ColumnLayout\
{\x0d\x0a \
id: columnLayout\
\x0d\x0a an\
chors.fill: pare\
nt\x0d\x0a\x0d\x0a \
Label {\x0d\x0a \
text:\
qsTr(\x22Downloadi\
ng in progress..\
.\x22)\x0d\x0a \
Layout.alig\
nment: Qt.AlignH\
Center | Qt.Alig\
nVCenter\x0d\x0a \
}\x0d\x0a\x0d\x0a \
ProgressB\
ar {\x0d\x0a \
objectName\
: \x22progressBar\x22\x0d\
\x0a \
Layout.rightMar\
gin: 20\x0d\x0a \
Layout.\
leftMargin: 20\x0d\x0a\
Layouts\x0d\x0a\x0d\x0a\x0d\x0aWin\
dow {\x0d\x0a id: w\
indowDownloader\x0d\
\x0a\x0d\x0a width: 40\
0\x0d\x0a height: 1\
30\x0d\x0a\x0d\x0a maximu\
mHeight: height\x0d\
\x0a maximumWidt\
h: width\x0d\x0a\x0d\x0a \
minimumHeight: h\
eight\x0d\x0a minim\
umWidth: width\x0d\x0a\
\x0d\x0a modality: \
Qt.ApplicationMo\
dal\x0d\x0a flags: \
Qt.Dialog\x0d\x0a\x0d\x0a \
title: qsTr(\x22Ar\
temis - Download\
er\x22)\x0d\x0a\x0d\x0a sign\
al onAbort()\x0d\x0a\x0d\x0a\
function upd\
ateProgressBar(b\
ytesReceived, by\
tesTotal) {\x0d\x0a \
progressBar\
.value = bytesRe\
ceived\x0d\x0a \
progressBar.to =\
bytesTotal\x0d\x0a \
}\x0d\x0a\x0d\x0a functi\
on updateStatus(\
arg) {\x0d\x0a \
progressLabel.te\
xt = arg\x0d\x0a }\x0d\
\x0a\x0d\x0a Page {\x0d\x0a \
id: page\x0d\
\x0a anchors\
.fill: parent\x0d\x0a\x0d\
\x0a ColumnL\
ayout {\x0d\x0a \
id: columnL\
ayout\x0d\x0a \
anchors.fill:\
parent\x0d\x0a\x0d\x0a \
Label {\x0d\x0a\
\
Layout.fillWidth\
: true\x0d\x0a \
value: 0\
text: qsTr(\x22Down\
loading in progr\
ess...\x22)\x0d\x0a \
Layout\
.alignment: Qt.A\
lignHCenter | Qt\
.AlignVCenter\x0d\x0a \
}\x0d\x0a\x0d\x0a\
Prog\
ressBar {\x0d\x0a \
id: p\
rogressBar\x0d\x0a \
Layo\
ut.rightMargin: \
20\x0d\x0a \
Layout.leftM\
argin: 20\x0d\x0a \
Layou\
t.fillWidth: tru\
e\x0d\x0a \
value: 0\x0d\x0a \
to:\
0\x0d\x0a \
}\x0d\x0a\x0d\x0a \
Label {\x0d\x0a \
id: pr\
ogressLabel\x0d\x0a \
Lay\
out.alignment: Q\
t.AlignHCenter |\
Qt.AlignVCenter\
\x0d\x0a }\x0d\
\x0a\x0d\x0a L\
abel {\x0d\x0a \
objectNa\
me: \x22labelProgre\
ss\x22\x0d\x0a \
Layout.alig\
nment: Qt.AlignH\
Center | Qt.Alig\
nVCenter\x0d\x0a \
}\x0d\x0a \
Button {\x0d\x0a \
t\
ext: qsTr(\x22Abort\
\x22)\x0d\x0a \
icon.source:\
\x22qrc:/images/ic\
ons/abort.svg\x22\x0d\x0a\
\
display: Abstrac\
tButton.TextBesi\
deIcon\x0d\x0a \
Layout.a\
lignment: Qt.Ali\
gnHCenter | Qt.A\
lignBottom\x0d\x0a \
onCl\
icked: { onAbort\
() }\x0d\x0a \
}\x0d\x0a }\x0d\x0a\
}\x0d\x0a}\x0d\x0a\
\x0a\x0d\x0a B\
utton {\x0d\x0a \
text: q\
sTr(\x22Abort\x22)\x0d\x0a \
ic\
on.source: \x22qrc:\
/images/icons/ab\
ort.svg\x22\x0d\x0a \
displa\
y: AbstractButto\
n.TextBesideIcon\
\x0d\x0a \
Layout.alignme\
nt: Qt.AlignHCen\
ter | Qt.AlignBo\
ttom\x0d\x0a \
onClicked:\
{ onAbort() }\x0d\x0a\
}\x0d\x0a \
}\x0d\x0a }\x0d\
\x0a}\x0d\x0a\
\x00\x00\x05\xac\
i\
mport QtQuick\x0d\x0ai\
@@ -7223,91 +7240,91 @@ qt_resource_struct = b"\
\x00\x00\x00\x1c\x00\x02\x00\x00\x00\x12\x00\x00\x00\x08\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00,\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x00\x8c\x00\x01\x00\x00\x00\x01\x00\x00`k\
\x00\x00\x01\x8f\xc8\xd7c\x15\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x00f\x00\x00\x00\x00\x00\x01\x00\x00Xk\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x01\x00\x00\xc2Z\
\x00\x00\x01\x8f\xcf\xcb\xb7\x93\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x01\xf8\x00\x00\x00\x00\x00\x01\x00\x01\x22\xc9\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x014\x00\x00\x00\x00\x00\x01\x00\x01\x19\x1c\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x01\xd4\x00\x00\x00\x00\x00\x01\x00\x01!\xad\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x02\xd8\x00\x00\x00\x00\x00\x01\x00\x015\xa7\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x02\xc2\x00\x00\x00\x00\x00\x01\x00\x013\x90\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x01Z\x00\x00\x00\x00\x00\x01\x00\x01\x1az\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x02\x18\x00\x00\x00\x00\x00\x01\x00\x01$;\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x00\xea\x00\x00\x00\x00\x00\x01\x00\x01\x12\xd8\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x02.\x00\x00\x00\x00\x00\x01\x00\x01&w\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x02\x8c\x00\x00\x00\x00\x00\x01\x00\x01.\x9b\
\x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x02\xfc\x00\x00\x00\x00\x00\x01\x00\x017\xb7\
\x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x01\xb0\x00\x00\x00\x00\x00\x01\x00\x01\x1f\xc0\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x02\xa6\x00\x00\x00\x00\x00\x01\x00\x01/\xf7\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x02f\x00\x00\x00\x00\x00\x01\x00\x01+\xf0\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x01r\x00\x00\x00\x00\x00\x01\x00\x01\x1c\x98\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x01\x1d\x90\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x02B\x00\x00\x00\x00\x00\x01\x00\x01(\xdd\
\x00\x00\x01\x8f\xe4x\xb2\x10\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x01\x16\xe5\
\x00\x00\x01\x8f\xc8\xd7c\x16\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x03\xb0\x00\x01\x00\x00\x00\x01\x00\x01Q{\
\x00\x00\x01\x8f\xe4\x8f}\x97\
\x00\x00\x01\x8f\xff^8_\
\x00\x00\x04\x22\x00\x01\x00\x00\x00\x01\x00\x01[p\
\x00\x00\x01\x8f\xee\xbe\xe3\xe8\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x03\xe6\x00\x01\x00\x00\x00\x01\x00\x01T\x98\
\x00\x00\x01\x8f\xe4\x8fg\xba\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x03\x12\x00\x01\x00\x00\x00\x01\x00\x019\x8e\
\x00\x00\x01\x8f\xcb\x84\x8f\xb2\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x03<\x00\x01\x00\x00\x00\x01\x00\x01>\xe2\
\x00\x00\x01\x8f\xee\xbd\x92\x93\
\x00\x00\x05\xa8\x00\x00\x00\x00\x00\x01\x00\x01\x9e\xda\
\x00\x00\x01\x8f\xcb\x83\x89\xfd\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x05\xa8\x00\x00\x00\x00\x00\x01\x00\x01\x9f\xdd\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x03r\x00\x01\x00\x00\x00\x01\x00\x01I\x0c\
\x00\x00\x01\x8f\xe4\x8f\x92\xee\
\x00\x00\x05\x86\x00\x00\x00\x00\x00\x01\x00\x01\x99+\
\x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x01\x8f\xff^8_\
\x00\x00\x05\x86\x00\x00\x00\x00\x00\x01\x00\x01\x99D\
\x00\x00\x01\x90\x03\xb0\x82B\
\x00\x00\x03X\x00\x02\x00\x00\x00\x04\x00\x00\x00+\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x04\xc4\x00\x01\x00\x00\x00\x01\x00\x01v\x14\
\x00\x00\x01\x8f\xe4\x96f\xc0\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x05d\x00\x01\x00\x00\x00\x01\x00\x01\x8f(\
\x00\x00\x01\x8f\xee\xbc:,\
\x00\x00\x01\x90\x01\x93J\xb0\
\x00\x00\x04\xe6\x00\x01\x00\x00\x00\x01\x00\x01\x7f\x0a\
\x00\x00\x01\x8f\xcb\x83z\xd6\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x04H\x00\x01\x00\x00\x00\x01\x00\x01a\xfc\
\x00\x00\x01\x8f\xee\xb8\xb6\xd3\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x04v\x00\x00\x00\x00\x00\x01\x00\x01n!\
\x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x04\x9e\x00\x01\x00\x00\x00\x01\x00\x01s\xe6\
\x00\x00\x01\x8f\xd301\xb9\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x05@\x00\x01\x00\x00\x00\x01\x00\x01\x8a\xd4\
\x00\x00\x01\x8f\xee\x84(\xe5\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x05\x06\x00\x00\x00\x00\x00\x01\x00\x01\x85\xab\
\x00\x00\x01\x8f\xe4\x8f\x0e\x0f\
\x00\x00\x05\xdc\x00\x01\x00\x00\x00\x01\x00\x01\xa7\x8d\
\x00\x00\x01\x8f\xee>\xc2\xd2\
\x00\x00\x06$\x00\x01\x00\x00\x00\x01\x00\x01\xad\xd2\
\x00\x00\x01\x8f\xeeO\xac\x19\
\x00\x00\x05\xc0\x00\x01\x00\x00\x00\x01\x00\x01\xa4\x8a\
\x00\x00\x01\x8f\xc8\xd7c\x19\
\x00\x00\x06\x00\x00\x01\x00\x00\x00\x01\x00\x01\xaaP\
\x00\x00\x01\x8f\xe4\xc6\xf5\xd8\
\x00\x00\x01\x8f\xff^8P\
\x00\x00\x05\xdc\x00\x01\x00\x00\x00\x01\x00\x01\xa8\x90\
\x00\x00\x01\x8f\xff^8_\
\x00\x00\x06$\x00\x01\x00\x00\x00\x01\x00\x01\xae\xd5\
\x00\x00\x01\x8f\xff^8_\
\x00\x00\x05\xc0\x00\x01\x00\x00\x00\x01\x00\x01\xa5\x8d\
\x00\x00\x01\x8f\xff^8_\
\x00\x00\x06\x00\x00\x01\x00\x00\x00\x01\x00\x01\xabS\
\x00\x00\x01\x8f\xff^8_\
"
def qInitResources():

View File

@@ -12,6 +12,9 @@ class UIDownloader(QObject):
# Python > QML Signals
show_ui = Signal()
close_ui = Signal()
update_progress_bar = Signal(int, int)
update_status = Signal(str)
def __init__(self, parent):
super().__init__()
@@ -21,8 +24,6 @@ class UIDownloader(QObject):
self._engine = QQmlApplicationEngine()
self._engine.load('qrc:/ui/Downloader.qml')
self._window = self._engine.rootObjects()[0]
self._progress_bar = self._window.findChild(QObject, "progressBar")
self._label_progress = self._window.findChild(QObject, "labelProgress")
self._connect()
@@ -34,6 +35,8 @@ class UIDownloader(QObject):
# Python > QML connections
self.show_ui.connect(self._window.show)
self.close_ui.connect(self._window.close)
self.update_progress_bar.connect(self._window.updateProgressBar)
self.update_status.connect(self._window.updateStatus)
@Slot()
@@ -66,7 +69,7 @@ class UIDownloader(QObject):
""" Stop the download when user press abort button """
if self.reply:
self.reply.abort()
self._progress_bar.setProperty("value", 0)
self.update_progress_bar.emit(0, 0)
if self.file:
self.file.cancelWriting()
@@ -93,10 +96,10 @@ class UIDownloader(QObject):
if self.file:
self.file.commit()
self._label_progress.setProperty("text", "Checking DB integrity (SHA-256)")
self.update_status.emit("Checking DB integrity (SHA-256)")
if match_hash(self.dest_file, self._parent.network_manager.remote_db_hash):
self._label_progress.setProperty("text", "Unpacking archive...")
self.update_status.emit("Unpacking archive...")
delete_dir(DATA_DIR / 'SigID')
unpack_tar(self.dest_file, DATA_DIR / 'SigID')
delete_file(self.dest_file)
@@ -109,9 +112,8 @@ class UIDownloader(QObject):
""" Update progress bar and label
"""
total_bytes = self._parent.network_manager.remote_db_size
self._label_progress.setProperty("text", "{:.1f} Mb / {:.1f} Mb".format(bytesReceived/10**6, total_bytes/10**6))
self._progress_bar.setProperty("to", total_bytes)
self._progress_bar.setProperty("value", bytesReceived)
self.update_status.emit("{:.1f} Mb / {:.1f} Mb".format(bytesReceived/10**6, total_bytes/10**6))
self.update_progress_bar.emit(bytesReceived, total_bytes)
@Slot(QNetworkReply.NetworkError)

View File

@@ -62,8 +62,8 @@ def check_conf_file():
and if it is different in structure (different section/options)
it will merge the conf file with the new template one
"""
active_conf = PREFERENCES_DIR / 'qtquickcontrols2.conf'
template_conf = BASE_DIR / 'config' / 'qtquickcontrols2.conf'
active_conf = (PREFERENCES_DIR / 'qtquickcontrols2.conf').resolve()
template_conf = (BASE_DIR / 'config' / 'qtquickcontrols2.conf').resolve()
if not active_conf.exists():
copy_file(template_conf, active_conf)

View File

@@ -10,7 +10,7 @@ class Constants():
APPLICATION_NAME = 'Artemis'
ORGANIZATION_NAME = 'AresValley'
ORGANIZATION_DOMAIN = 'aresvalley.com'
APPLICATION_VERSION = '4.0.1'
APPLICATION_VERSION = '4.0.3'
SQL_NAME = 'data.sqlite'

View File

@@ -21,7 +21,7 @@ def _app_dir():
elif is_linux():
app_dir_path = Path.home() / '.local' / 'share' / Constants.ORGANIZATION_NAME / Constants.APPLICATION_NAME
else:
app_dir_path = BASE_DIR
app_dir_path = BASE_DIR.resolve()
if not app_dir_path.exists():
app_dir_path.mkdir(parents=True)

View File

@@ -13,13 +13,21 @@ python -m nuitka app.py \
--show-modules \
--assume-yes-for-downloads \
--enable-plugin=pyside6 \
--force-stderr-spec="{TEMP}/artemis.err.log" \
--force-stdout-spec="{TEMP}/artemis.out.log" \
--include-qt-plugins=sensible,styles,qml,multimedia \
--noinclude-dlls=libQt6Charts* \
--noinclude-dlls=libQt6Quick3D* \
--noinclude-dlls=libQt6Sensors* \
--noinclude-dlls=libQt6Test* \
--noinclude-dlls=libQt6WebEngine* \
--include-qt-plugins=sensible \
--include-qt-plugins=styles \
--include-qt-plugins=qml \
--include-qt-plugins=multimedia \
--include-data-files=./artemis/resources.py=./artemis/resources.py \
--include-data-files=./config/qtquickcontrols2.conf=./config/qtquickcontrols2.conf \
--include-data-files=./building/Linux/create_shortcut.sh=./create_shortcut.sh \
--include-data-files=./images/artemis_icon.svg=./images/artemis_icon.svg
--include-data-files=./images/artemis_icon.svg=./images/artemis_icon.svg \
--force-stderr-spec="{TEMP}/artemis.err.log" \
--force-stdout-spec="{TEMP}/artemis.out.log"
chmod 755 ./app.dist/app.bin

View File

@@ -12,15 +12,23 @@ python -m nuitka app.py `
--assume-yes-for-downloads `
--windows-console-mode=disable `
--enable-plugin=pyside6 `
--force-stderr-spec="{TEMP}\artemis.err.log" `
--force-stdout-spec="{TEMP}\artemis.out.log" `
--include-qt-plugins=sensible,styles,qml,multimedia `
--noinclude-dlls="Qt6Charts*" `
--noinclude-dlls="Qt6Quick3D*" `
--noinclude-dlls="Qt6Sensors*" `
--noinclude-dlls="Qt6Test*" `
--noinclude-dlls="Qt6WebEngine*" `
--include-qt-plugins=sensible `
--include-qt-plugins=styles `
--include-qt-plugins=qml `
--include-qt-plugins=multimedia `
--include-data-files=.\artemis\resources.py=.\artemis\resources.py `
--include-data-files=.\config\qtquickcontrols2.conf=.\config\qtquickcontrols2.conf `
--force-stderr-spec="{TEMP}\artemis.err.log" `
--force-stdout-spec="{TEMP}\artemis.out.log" `
--windows-company-name=Aresvalley.com `
--windows-product-name=Artemis `
--windows-file-version=4.0.1 `
--windows-product-version=4.0.1 `
--windows-file-version=4.0.3 `
--windows-product-version=4.0.3 `
--windows-file-description=Artemis `
--windows-icon-from-ico=images\artemis_icon.ico

View File

@@ -1,5 +1,5 @@
#define MyAppName "Artemis"
#define MyAppVersion "4.0.1"
#define MyAppVersion "4.0.3"
#define MyAppPublisher "AresValley"
#define MyAppURL "https://www.aresvalley.com/"
#define MyAppExeName "artemis.exe"

View File

@@ -23,6 +23,6 @@ python -m nuitka app.py \
--macos-app-name=Artemis \
--macos-app-mode=gui \
--macos-sign-identity=ad-hoc \
--macos-app-version=4.0.1
--macos-app-version=4.0.3
echo "Building Linux target finished."

View File

@@ -4,6 +4,7 @@ import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
Window {
id: windowDownloader
@@ -23,6 +24,15 @@ Window {
signal onAbort()
function updateProgressBar(bytesReceived, bytesTotal) {
progressBar.value = bytesReceived
progressBar.to = bytesTotal
}
function updateStatus(arg) {
progressLabel.text = arg
}
Page {
id: page
anchors.fill: parent
@@ -37,17 +47,19 @@ Window {
}
ProgressBar {
objectName: "progressBar"
id: progressBar
Layout.rightMargin: 20
Layout.leftMargin: 20
Layout.fillWidth: true
value: 0
to: 0
}
Label {
objectName: "labelProgress"
id: progressLabel
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
}
Button {
text: qsTr("Abort")
icon.source: "qrc:/images/icons/abort.svg"

View File

@@ -274,7 +274,6 @@ Page {
Layout.fillWidth: true
}
RowLayout {
width: 100
height: 100
@@ -584,6 +583,9 @@ Page {
wrapMode: TextEdit.WordWrap
textFormat: Text.MarkdownText
readOnly: true
onLinkActivated: (link) => {
Qt.openUrlExternally(link)
}
}
ScrollBar.vertical: ScrollBar {
width: 10