Final ieration of the new downloader and update_manager, implemented automatic updates only for windows

This commit is contained in:
Marco Dalla Tiezza
2024-06-13 15:46:25 +02:00
parent 146a5d1605
commit 77c43813a0
5 changed files with 285 additions and 231 deletions

View File

@@ -5159,174 +5159,174 @@ z7\x80\xec$\xf4c9\xf2\xd1\x8f4\xc6\xbc>\xb8\
\x116\x9d`\x1e\x97*W\xd9M\xe1\x09\x12\xa5\xfc\xda\ \x116\x9d`\x1e\x97*W\xd9M\xe1\x09\x12\xa5\xfc\xda\
h;Q\xfc\xeb\x9c\x87 J\xfd\xc5\xd0c0\xc6[\ h;Q\xfc\xeb\x9c\x87 J\xfd\xc5\xd0c0\xc6[\
\xf7\xe4\x19\xd3~\xf5\xc8?\xf0\xff?E#\xf2\xe8\ \xf7\xe4\x19\xd3~\xf5\xc8?\xf0\xff?E#\xf2\xe8\
\x00\x00\x0a[\ \x00\x00\x0aW\
\x00\ \x00\
\x003#x\xda\xcd\x1ako\xdb8\xf2\xfb\x02\xfb\x1f\ \x003\x15x\xda\xcd\x1a\xdbn\xdb8\xf6}\x80\xf9\x07\
x\xfe\xb0\xb5osJ\xdaC\x81=w{@j\xa7\ \xae\x1f\xa6\xf6NVI\xbb(\xb0\xebN\x17H\xed\xa4\
M\x80$\xcd\xd6i\x8bCQ\x14\xb4D\xdb\xbc\xd0\xa2\ \x09\x90\xa4\x99:m\xb1(\x8a\x82\x96h\x9b\x1bZ\xd4\
\x96\xa2\xe2d\xdb\xfc\xf7\x9d!\xf5\xa2^\x96\x93\xf4\xf6\ PT\x9cL\x9b\x7f\xdfsH\xdd\xa8\x9b\xe5$\xb3\xb3\
\xdc\xc2\xb1\xc8\x19r^\x9c\x17\xc5\xd7\x91T\x9a\xfc\xa6\ n\xe1X\xe4!y\xee7\x8a\xaf#\xa94\xf9U\xff\
\x7fK\xb8\x7f\xf5\xe3\x0f\xdcy\xf6>\xf20\x90\x9b\xda\ \x9ap\xff\xfa\xc7\x1f\xb8\xf3\xec}\xe2a 7\xb5\xe1\
\xf0D\x86ZI\x11\xb7NxgT3\xc5\xa9\xa8A\ \x89\x0c\xb5\x92\x22n\x9d\xf0\xce\xa9f\x8aSQ\x838\
\x9c\xd2[\x99\xe8:\xe6\x14\x80\xe5\x12\xc6\xf1\x9f\xdd\x96\ \xa3w2\xd1\xf5\x95S\x00\x96K\x18\xc7\x7f\xf6X\xf2\
|\xfd\xf1\x07\x02\x1f\x1e\x8c\xc9&%\x04\x9f7<\xd0\ \xed\xc7\x1f\x08|x0&\x9b\x14\x11|\xde\xf0@\xaf\
\xab1y\xfa\xf4\xe0\xc0\x0e\xac\x18_\xae\xf4\x98\xfc\x82\ \xc6\xe4\xf9\xf3\x83\x03;\xb0b|\xb9\xd2c\xf2\x0f\x1c\
\x03vh\x22a\xf9\x90\x85\xda\x93!\xfe\x16L3X\ \xb0C\x13\x09\xdb\x87,\xd4\x9e\x0c\xf1\xb7`\x9a\xc16\
&]\x11?7\xe4%\x99\xf9\x8a\xb1\xd03\x0b\x92}\ \xe9\x8e\xf8\xb9%\xaf\xc9\xccW\x8c\x85\x9e\xd9\x90\xec\x93\
\xf2\x8c\xfc\x83\xe4\xbf\x0b\xc8\xdb\x02\xd2\xee\x94\x82\x16\x0f\ \x17\xe4o$\xff]@\xde\x15\x90\xf6\xa4\x14\xb4x\xb0\
\x16\xf6.\xdb\x5cs-\xd8\x98\xfc\x1e_\xaa\xe1\xe0P\ \xb0\xf7\xd9\xe1\x9ak\xc1\xc6\xe4\xb7\xf8J\x0d\x07\x87J\
i\xb6\xe6\xf1`d\xe7\xaey\xcc\xe78\xabU\xc2\xec\ \xb35\x8f\x07#;w\xc3c>\xc7Y\xad\x12f\x87\
\x90\xfd^\xcb\x80\x0a\xaeo\xc7 \x12\xef0\x8a\x04\xf7\ \xec\xf7Z\x06Tp}7\x06\x96x\x87Q$\xb8O\
\xa9\xe62<\xc3q\x0b\xb2\x10t\x19\x9b\xf9\x8f%q\ 5\x97\xe19\x8e[\x90\x85\xa0\xcb\xd8\xcc\x7f*\xb1\xc3\
\xd8\xef\xfd}b\x07c`A\xaf@\xc6$\x89\x22\xa6\ ~\xef\xef\x13;\x18\x03\x09z\x05<&I\x141E\
\xc8\x9c\xaa\x0c\xa2\xc0\x7f\xad\xe8\x9a\x09\x16\xc7\x16\xe7\x98\ \xe6Te\x10\xc5\xfacE\xd7L\xb08\xb6kNx\
\x87:#>\xe6\xcb\x90\x0a\x22$\x0df\xe6\xe7\x10&\ \xa83\xe4c\xbe\x0c\xa9 B\xd2`f~\x0ea2\
\xd3\xd1\x93`\xe4\x00\xc5+\xb9\xb9Pl1\xac\x0fO\ \x1d=\x0dF\x0eP\xbc\x92\x9bK\xc5\x16\xc3\xfa\xf0\xf4\
_\xadiH\x97L5\xccM\xa8>k\x9c\x94\x11\x0b\ \xcd\x9a\x86t\xc9T\xc3\xdc\x84\xea\xf3\xc6I\x19\xb1\x10\
a\xd3\xa3\x80k\xa9\x86\xb1V<\x5c\x12}\x1b\xb1=\ \x0e=\x0a\xb8\x96j\x18k\xc5\xc3%\xd1w\x11\xdb#\
rM\x15B}\x89(\x90\xbeG\xe6R\x0a\xc2\xe3/\ 7T!\xd4\xd7\x88\x02\xea{d.\xa5 <\xfe\x1a\
!\xdb\xd4\xd7\x9fE\xd4g\x1f\x19\xd5\xab\xda\x0e\xfe\x8a\ \xb2M}\xffYD}\xf6\x89Q\xbd\xaa\x9d\xe0\xaf\x98\
\xf9W\xd3\xf9\xfb(\x00\x03\x8d\xab\xb4i\xaa\xf4Tn\ \x7f},\xd5\x87(\x00\x0d\xadL&fp:o\x1c\
Bd\xbe\x86\x9a\x18\x9cT\x9d\x0d\x84O\xe7S\xae\x98\ N\xe5\xd8\x80\xf1t>\xe5\x8a\xf9\x80\xf2]e\x16\xb0\
\x0f\x94\xdfVf\x81\xc8\xe9<c'\x04\xc9\xbb\xd3\xec\ \x83\xddR:B`\xb9;\xcdn\xd1\x04\x0a\x88\x080\
\x06OB\x01\x11\x01\xe1.\x84=+5\x08\x0b\x13)\ v!\xac\x91\xd4 ,L\xa4\xe0t\xa5\xef\x0coP\
\xd8]\xe9[#\x22Cyp\xca\xe3\x5c\x9f\x8b$\xf4\ ^,8\xe3q.\xc8E\x12\xfa\xa8@$\x92Q\x22\
\xd1\x8eH$\xa3D\x00\x0789\xb4\x0b\xc7\xf8{T\ \x80\x02\x9c\x1c\xda\x8dc\xfc=*\x9bC\xb1\x1e\xb4\xbd\
>\x15\x05>\x18}\x09\xa8\x80\xd0\xecF\xbf\xe6L\x04\ \x04T@hv\xab\x8f9\x13\xc1\x8cQ\xe5\xaf<\x16\
3F\x95\xbf\xf2XH\xc1\x9e\x03\x00/,\xda\x18:\ RP\xe4\x00\xc0\x0bU6\x1a\x0e\xd8\xf8\x89R`|\
P\xe3'J\xc1\x19<\x09\x03\x86\xc7M\xc0B\x1f8\ \xa7a\xc0\xd0\xce\x04l\xf4\x91\xb3\x8dW\x1e/V\x80\
\xdbx\xe5\xf1\x02\x03\x0cI\xb1xe\xe8\x1b\x15\xc3`\ \x06)\x16\xaf\x0c~\xa3b\x18Tz\xc64\x01)\xba\
\xd93\xa6\x09(\xd3]oN\xfd+B\x17\xe0g2\ \xfb\xcd\xa9\x7fM\xe8\x02\x1cL\xb6\xd2\xa8\x09\x80\x09\x07\
Lc-\x00&\x1c\x82\xf9\x82\x0c\x1d\xc4\x7f\xbf$\x07\ a\xbe Cg\xe1\xbf^\x93\x03\xf2\xd3O\xeen\xbf\
\xe4\xa7\x9f\xdc\xd5~5Xp\xd8\x98\xf0|\x99\x84\xae\ \x98U`eLx\xbeLB\x97-\x865M\xd8\x03\
X\x8ch\x9a\xa8\x07\xae\x9a\x99\xb9\xab\xf8\x84\x5c\x0d\x0e\ U\xcd\xc4\xdcW\x9cA.\x06\x87J\x87\xf5\xc5\xf9\x02\
\x97\x8e\xe8\x8b\xfd\x05\x88\xb6,\x82\x85Td\x88\x02\xe5\ X[f\xc1B*2D\x86r8\xef\xe0\x15\xfc\xf9\
\xb0\xdf\xc1\x0b\xf8\xf3kIS\x9e`\xe1R\xaf`\xf8\ \xa5$)O\xb0p\xa9W0\xfc\xf3\xcf5\xacq\x15\
\xe7\x9fkT#\x16\x9a\x1c\x8a?\xc7\xf8\xc4?{8\ \xaa\x1c\xb2?_\xf1\x99\x7f\xf1p\xd0\xd3\xf2Ln\x98\
\xe8iy*7LMh\xcc\xca\xfbe\x88\x01\x8b}\ \x9a\xd0\x98\x95\xcf\xcb\x16\x06,\xf6\x15\x8f\x0c\xde\xd5\xf5\
\xc5#Cw\x15\xbf4\xb7m\x99\xd8X\x0aZH\xc5\ \xa5\xb9m\xdb\xc4FSPC*\xba\x83\xcf]\x8bQ\
v\xf0\xb9\x0b\x19Ug\xe8\xe4\xa1/\x12\xd8qh\x97\ t\x06O\x1e\xfa\x22\x81\x13\x87v\xab\x11\xf9\xfe\xbd\x8c\
\x1a\x91o\xdf\xca\xc4\xd5\xe6kbp\x05L\xc13\x86\ \x5cm\xbe\xc6\x06\x97\xc1\x14\x5cb\x18\x0c\x1d\x82*G\
\xc1\xd0a\xa8\xb2\xf5]M\x95\x86 8\xfc\x93\x15\x0d\ \xdf\xd7Di\x10\x02\xe3\x9f\xach\xb8\xb4\xcb2|\xeb\
\x97\x16-\xa3\xb7\xae\xe5\x1a`\x99 +\x13\x01\xbe\x82\ R\xae\x01\x96\x11\xb2<\x11\xe0+X\xf0\x15\x8c,5\
\x05_\xe0\x90\xa5G\xc3\xd2\xb6dz\xd8hj#\xd7\ \x0d\x8b\xdb\x92\xe9a\xa3\xaa\x8d\x5c\x95v6\xf8\xcb\xeb\
\xa4\x9d\x05\xfe\xf6\xf2%I\x00h\xc1C\x16\xd4-\xb7\ \xd7$\x01\xa0\x05\x0fYP\xd7\xdc\xc2\x89\xf79\xc7\x9b\
\xf0\xe5}\xf6\xf1f'o\xbe\x9cL+\x02a\xe0\x94\ \x9d\xbe\xfdz:\xad0\x84\x817\xb6\x9b\x9c\xb30i\
\xed\x22g,LZ\x8f\xfd\x1da\x22fU\x0aZ\x91\ 5\xfb{\xc2D\xcc\xaa\x18\xb4.^\x80\x7fa=\xac\
\x17\xe0_X\x8fSc\x8e\xc4Ng\xc6\xf1d\x9f>\ \xc6\x98\xc4N6\xe3x\xb2\xcf_\xda\x1dXme\xbb\
\xb7;\xb0\x1af\xbb\x87+Q['QH\xff\x0a\xb9\ \x87+a[GQH\xff\x1a\xa9\x1bj\xb9\x5c\x0a\xe6\
\x1bj\xb9\x5c\x0a\xe6\xd0\x89\x0ak\x18\xc6\x0f\x86\x8e\xd7\ \xe0\x89\x02k\x18\xc6\x0f\x86\x8ec.X7c\x0c\x13\
\x5c\xb0n\xc1\x18!\x9a8\xd1\x0f\x16BN\x1fyg\ M\x9c\xe8\x07\x0b!\xa7\x0f\xbf3\xd9@(fK\x08\
\xba\x81\x88\xcc\x96\x10\xb8\xb6h\xa7Q\xb7-\x0c\xb8f\ \x5c[\xa4\xd3(\xdb\x16\x02\x5c\xb5\xe8\xc4\xbf\x0e\xda\x86\
\xd1I\x7f\x1d\xb4\x8d\xfc\x86E\xdb\xa9\xaf\x18f\x9b\xde\ ~\xc3\xa6\xed\xd8W\x14\xb3Mns\xa9\xb5\x5c\x9f\x86\
\xe6Rk\xb9>\x09\x17\xf2\x15\xd8\xc1\x1a\x92\x22\xc8L\ \x0b\xf9\x06\xf4`\x0d\xd9\x10\xa4${$\xfdq\x05i\
\xf6H\xfa\xe3\x12\xb2\x0fGg\x05\xf8)\x9d\x83\xe1\xa1\ \x87#\xb3\x02\xfc\x8c\xceA\xf1P[\xe0\xb0\x14\xbc\x80\
\xb5\xc0f)x\x01\x17C\x1a\x06No\xd8\xb6\x8e\x0f\ \x8b!\xff\x02\xa77l\xdb\xc7\x07\x7fG\x06\x1b\xaaB\
\xfe\x8e\x0c6T\x85\x10\xb6\x06c\x97\xab\xea&\xbe\x14\ \x08[\x83\xb1KU\xf5\x10_\x0a\x08\x01\xafI\x96O\
\x10\x02^\x92,\xad\xb6\x03\xc3\xfc\xf1\x1d\x0b*\xc7u\ \xdb\x81a\xfe\xf8\x9e\x05\x15s\x9d+F\xaf\xab\xa7q\
\xae\x18\xbd\xaa\xee\xc6a\xc1\x9d\xb7\x82\xe0\xc3\x96\x0aB\ \xd8p\xe7\xa3 \xf8\xb0\xa5\x82\x90\x18t\x9e\xd0\xca_\
b\xd0\xb9C\xab|\xd1>\xde\xb0\x90)*l\x92_\ \xd4\x8f\xb7,d\x8a\x0a\x9b\xdd\x97Y\xb2g\xb3\xe4\x9c\
\x16\xc9\x9eM\x96sq;\x22\x0a\x0cx\x8a\xeb\x95\xb0\ \xdd\x0e\x8b\x02\x03\x9e\xae\xf5J\xab\x0a~\xe3S\xdb\x02\
\x0ay\xe3S\x1b\x82Y\x19\xed\x00\xffnY\xb5I\x83\ \xb33\xea\x01\xfe\xdd\xb2k\x93\x04]@$\xa3\xdd\xdf\
. \xb2\xd1\xee\xefM\x02h\xe0\xb3\xfc\x11\xb2\xb5\xdd\ \x9b\x04\xd0\xc0O\xe5&D\xdf\x03\xd9\xdant\x16\x0b\
\xf8,\x10\xfb\xb3Z\xc2\xe9\xe4\xb6\xbev;\xc3%\xd8\ \xfb\x93ZZ\xd3Im}\xefv\x82K\xb0}i\xfe\
\xbe<\xbfwR\xe3\x0e\xb6\xf7\x08M\xb4l`\xdeY\ \xe0\xa4\xc6\x1dd\xef\x11\x9ah\xd9@\xbc\xb3C\x7f\xfa\
\xa1?\xff.Z\xa7\x08\x1awh\x97\x82\x0b\x8eT\xdb\ \xdde\x9d,h<\xa1\x9d\x0b.8bmG`\x05\
\x11\xc0\xc0\x87n\xf0F\xb9YQ\x9d\xa5\x1b\x97\x83\x03\ >t\x837\xf2\xcd\xb2\xea<=\xb8\x1c\x1c\xa0\x22\xad\
\x14\xa6U\xd1\x17\xb3\xa6.\xcc\xca\xc5\x92{\xd14\x0c\ \xb2\xbe\x985\x05aV'\x96\xdc\x8b\xa6a@U\xf0\
\xa8\x0a^%p|C\xa8\xea\xec\xf2\xde\x84\x86>\x13\ &\x01\xf3\x0d\xa1\x9c\xb3\xdb{\x13\x1a\xfaL\x90\xef\xd9\
\xe4[\xf6\xfc\x1f\x16\x97\xd1dx\xe8\xfb,\xaa\x16\xc3\ \xf3\xbfY\x5c^&\xc3C\xdfgQ\xb5\x0a\xc6O\xb5\
\xe9\x8aM\xd5O\xd3\xd9\xee\xc1\x8a#\x90\xad\xdc\xe45\ \xeci2\xea\x1e48\x9c\xd8JF^\xbc\x98J\xae\
\x8c\xa9\xeb\x0ai\x7f_\x8e1*\x17{5\xe6\x8c\x95\ `\xf3\x1fK*\x86\xe3\xe2\xac\xc6d\xb1R\xed\xbd\xaa\
\xa2\xefE%Il\x0c\x88\xf8\x81\x1a\x1b\x8d\xe0\xbd\x12\ d\x87\x8d\x91\x10?PU\xa3\xf4?(qt\x0b\x0e\
G7\xe0G!\x92\x89\xdb\xe1`\xa5u\x14\x8f\xf7\xf7\ \x14B\x98\xb8\x1b\x0eVZG\xf1x\x7f\x7f\x095y\
\x97P\xa1'sp\xb5\xeb\xfdC(\x06>\xc0,\xbb\ 2\x07\x1f\xbb\xde?\x84*\xe0#\xcc\xb2\xbb\xfd\xbc7\
\xdd\xcf;\x05/\xb6\xa5\xa2\xbb(\x22\xf5_\xf76\xa8\ \xf0j[\x0e\xba\x8b R\xc7\xf5`Mzw\xddx\
\xb7W\x8d{6ov\x8e\x95ny\xd5\x9b1\x19B\ f\xf3a\x17X\xe2\x96w\xbd\x1d\x93!\x14\xe9\xd8z\
\xc9\x8e\x8d\x18\xdbYI;,\xa3J\x8b\xa5\x00K\xbb\ \xb1\xbd\x94\xb4\xa72\xaa4U\x0a\xb0\xb4\x8f\x925T\
*Y{%\x05l!?\x0foB\xc6\xecB\x0a\xee\ R\xc0\x16\xf4\xf3\xb8&d\xcc.\xa5\xe0>\xect\x09\
\xc3J\x17P\xe8F\xde\xb9<\x04\xd5Np\xa2\x1f\x9b\ \x15n\xe4]\xc8C\x10\xed\x04'\xfa\x91Yh\x90\xd5\
\x85\x05Y\x8b*cM\xa4H\xd6\xa1\xed]U\xd5\x0d\ \xa8\xf2\xaa\x89\x14\xc9:\xb4\xdd\xaa\xaa\xb8\x01x%U\
\xc0+\xa9bo\xc1\x05\xd0e\xb9p!L`m\xb2\ \xec-\xb8\x00\xbc,\x15.\x84\x89\xa8MZ\x82IC\
\x12\xcc\x1d\xb2>\xd1Q\x88\x95,\x96\xaf\xa6\x5c\x93\x0b\ \xd6\x19:\x0a\xb1\x84\xc5\xba\xd5\xd4ira\x7f\xb3\x0d\
\xfb\x9bm\x08X \x9dC\xfc\x1e\x0fF\xf5%,M\ \x01\x0d\xa4s\x08\xdc\xe3\xc1\xa8\xbe\x85\xc5\xc9\xb3\xe1\xfb\
\x9e\x8d\xe2gT-y8&O\x9f\xd7\x01\x17\x12\x84\ \x9c\xaa%\x0f\xc7\xe4\xf9\xcb:\xe0B\x02s#\xc9C\
\x1bI\x1eB\x22\xfe\x07\x03\x98g\xadV\x86\x9f\xcb,\ \xc8\xc0\x7fg\x00\xf3\xa2U\xcb\xf0s\x95e\xbfMx\
\x09n\xa2\x1b\x15n\x9a\x1a\xe7@j+M(\x90\x8f\ \xa3\xc0M7\xe3\x02Pm\xc5\x09\x19\xf2\xc9v\xe7\xea\
\xb6WW\xcf\xdb\xcc\xa9\x17\xd4g+)\xc0\xdb\x5c\x96\ \x09\x9b\xb1zA}\xb6\x92\x22`\xea\xaa\xc4\x09\xdct\
$\x81\x8b\x0e:\xcb\xb1^\xa7\xdbv]r2M\xa2\ \xd0Y\x87\xf5\xb2n\xdbn\xc9\xd14\x19Z\x87O\xc3\
\xd6\xe1\xd30/m6\xed\xb4?c\xe6JU\x82m\ \x84\xb4Y\xb5\xd3\xc6\x8c\x99+\x95\x07\xb6\xad7\xb8\x84\
\xf2\x0d.\xa0|\x00\x1f\x006\x00\x96F(\x89\xe95\ \xba\x01|\x00\xe8\x00h\x1a\xa1$\xa67\x0c\x98\x8dD\
\x03a#S\x9e\xe7\x0dJE<&\xbeP\xab\x8cK\ y\x9e7(U\xef\x98\xf1B\x912.\x1d\xe5\xcd\x00\
[y3\x80\xc6\xc7\x02\x0c\xb5\x0f#`\x0c`\x9c\x9f\ \x1a\x1f\x0b0\x94>\x8c\x802\x80r~\x1e\x1cB\xe9\
\x06\x87P\x81pXq\xe8\x81{\x1e\x0d>\xf7d\xbe\ \xc1a\xc7\xa1\xa7\xa9\x1a\x0d\xbe\xf4$\xbeh&\xa5\xf5\
\xe8)\xa5e\x22nr/\xee\xd3\xdeSO\xee\xaf\xa9\ !\x1e\xf2 \xea\xd3\xa6SO\xeao\xa8\xe0\x01\x01T\
\xe0\x01\x01R\xbd\xe5\x1f\x84Z\xda{\x88\xe1mZC\ \xbd\xe5\xef\x84Z\xdc{\xb0\xe1]Z<lg\xc3_\
l\x17\xc3\xdfw\x93C\xd19\xeb'\x87\xc3y\xe5\x84\ w\xe3C\xd12\xeb\xc7\x87\xc3y\xc5\xc2\x91\x05\x14\x07\
\xa3\x08(\x0e\x96%\x90\x83_T\xdcn\xb7/\x10l\ \xcb\x1c\xc8\xc1/+n\xb7\xdb\x17\x08\xb6\xd0\x974\x08\
\xa1/h\x10@\xc2\x0f\xe7\xef\xa0ZS8S\xc5\xe4\ \xd3\x07\xfb;\xa8\x16\x13\xceT1\xb9bP\xc1\xaa\
\x8aa8\x1e\x13\xacn\xa0B\xa9q\x08\x04j\x19\xbd\ 1\xc1\xb2\x06J\x93\x1a\x85\x80\xa0\x96\xd1\x1bl\xec\xba\
\xc26\xaf;\x83\x08\x8d^\xa7\xdc\x9eFy\x0cFU\ 3\xb8\xa0\xd1\xeb\x94\x1b\xd2\xc8\x8f\xc1\xa8\xba4[~\
\xd4\x0c\xfd\x04\x22R\xd3\x12\x85\xf3\x1a\x80\xcb'\xd3\xd4\ \x0a\x11\xa9i\x8b\xc2y\x0d\xc0\xe5\x93i\xea\xa1\x5cI\
C\xb9\x9av\x8a\xc4p\x02\xce\xf9\xcah\xa8\x14*\xd2\ ;\xd5a8\x01\xe7|m$T\x0a\x15i\x8at_\
L\xe9\xae\x8et\xf7\x00\x92N!\x81\xd9\x91\xa6J\xcb\ _t\xff\x08\x94\xce w\xda\x11\xa7J\x93z\x17\x84\
z\x17\x82f\x0c{\xd2\x1a\x8a\xa6\xaf\xf7\x22\xba8d\ f\x0c\xbb\xd0\x1a\xaa\xa5o\x0fB\xba0\xb2\xac&\xee\
Yi\xdc\xc9\xdc\x89\xbd7\xc9\xd8\xeb\xc1[\xf9\x04?\ $\xee\xd4\xde\x94d\xe4\xf5\xa0\xadl\xc1O\xcc\xf0\xc2\
\xb2\xc0\x0b\xf7\xd8\x8b\xf6\xa3\x9b]i/\xfb\xdev\xda\ =\xf6\xc2\xfd\xe8vW\xdc\xcb\xbe\xb7\x1dw\xe3\xf1l\
\x8d\xc7\xb3u\xff\xb8\xa9\xc5\xf1\xdd\xf5W\xedBtK\ \xc1?n\xeam\xfc\xe1\xf2\xab\xb6\x1f\xba\xb9\x00\xc0\xe4\
\x01\x80\xc9%]\xc6=\xed\xb2|]\xf2\xff\xc8|\xb9\ \x8a.\xe3\x9ezY\xbe \xf9\x7f$\xbe\xdc\xf9\xe9$\
\x01\xd4\xc98z\xf9\x5c\xf9\xe4\xb5\x89\x91=dP\xbb\ \x1c\xbd|.|rlbd\x0f\x1e\xd4nU\x9e\x9a\
\x5cyl!\xf4p)x\xcb\xc5\xc0\x9b\xfb\xac\xaf\xd6\ \x09=\x5c\x0a\xdek1\xf0\xe6>\xeb+5{\x13\xf6\
\xec\xbd\xd8#{\xb6\xa3\x1b\xae{\xecooK=\x93\ \xc4\x9e\xed\xe8\x96\xeb\x1e\xe7\xdb\xfbQ\xcfd\xc5\xfdp\
\x15\xf7\xa3\xe1\xaeo\xf0@\x85\xc7yknKp\xb1\ \xb8\xef\x1b<P\xe0q\xde\x93\xdb\x12\x5cl\xf3\xeea\
=\xbc\xfb\x85\x974\xc7\x9cu\xec\xd5G\xe9n\xa4\xea\ \xe1%\xcd1g\x1dg\xf5\x11\xba\x1b\xa9z\xc5\x02\xf7\
\x15\x0b\xdc[\xc8'\x96\x82'{\xe4\xd3\xe7=\x93\xc8\ \xde\xf1\x99\xc5\xe0\xd9\x1e\xf9\xfce\xcf$\xb2O\xeb=\
>\xae\xf7t:\xe3\x0f\xe6\x11\x89\xf6\x1e\xcc\xa5\xd9\xa7\ \x9d\x96\xf8\xa3iD\xa4\xbdGSi\xcei!\xf3A\
\x85\xcd{Y\x8dk\x15x=K\xd2\xfb\xd9\x07\xe5\x1e\ Z\xe3j\x05^\xc8\x92\xf4F\xf6Q\xb9\xc7\x04\xefo\
\x13\xbc\xcd%\xef\x18\xc6\x88\x1e,7C\x98\xaa\xb0\xe5\ \xc9{\x861\xa2\x07\xc9\xcd\x10\xa6*l\xb9'\xdeB\
\xd6x\x0b\xff\x0f\x11I\x9eX\xf68G\xc7LD\x8f\ \xffcX\x92'\x96=\xec\xe8\x84\x89\xe8\x09\x18\x85\xf7\
(\xbcFLo\xbe{H\xabzU\xfe\xbf\xcc\x89\ \x87\xb6\xd7\xd1\xc7\x89U/\xc7\xff\x979Q\xeeu\xe5\
r\xaf+\xff\x0bN\x9f\x1c\xcb5,\xb8\xec\x9304\ \x7f\xc0\xe9\x93\x13\xb9\x86\x0d\x97}\x12\x86\xc6\xc6\xcb\xb3\
6^\x9ed\x8d\x17H\xc8\xe3k\xd3m1\xcd\x97'\ \xac\xf1\x02\x09y|c\xba-\xa6\xf9\xf2\xec\xa9\xfd\xf3\
\x8f\xed\x9f\xa7\xd2O\xd6\x90\xf3\x9b77\x1eLm\xd1\ T\xfa\xc9\x1ar~\xf3\xae\xc6\xa3\xb1-zC^\xda\
\x1b\xf2\xd2\x8e\x11\x97Y\x97\xe8\xd1I\x9f\xc1\x11\x80\xa3\ 1\xe22\xeb\x12=9\xea30\x010%[\xcf]\
d\xeb\xb9s\xd9\xcfF\xba\xe9\xefls\xed\xcf\x85\x9c\ \xc8~:\xd2\x8d\x7fg\x9bk\x7f.\xe4|\x7fMc\
\xef\xafi\x0cx\xfb\x93\xe3\xc3\xf37G\xa7o\xdfx\ X\xb7?99\xbcx{t\xf6\xee\xad\xb7\x0e\x9e\xfd\
\xeb\xe0\xc9_ai\xd6\x87\x90\x938N\xd8w\xe6\x9b\ \x19\x9af}\x089\x8d\xe3\x84\xfd\xc1ts<#\xfe\
\xe3\x1e\xf1_\xc2\xa5\xa9n\x1f\xe4(K\xa5\xb0\xd3\xe5\ S\xa84\xd5\xed\xa3\x1ce\xa9\x14v\xda\xdb\x0fr\x94\
\xbe\x97\xa3ld{!\xc1\xf6\xa0\xdcml\x9a\xa1\xd3\ \x8dd/$\xe8\x1e\x94\xbb\x8dM3t\x9a\x95\x9b*\
\xac\x5cX\xb9\x00\xb6\xcb\xc5o\x98h\xeer9%x\ \x17\xc0v\xb9\xf8-\x13\xcd].\xa7\x04\xaft\xc9\x14\
\xa5K\xa6\xb0\xdf\xd86Y)\xd1\x9f\xb7P\xffNn\ \xf6\x1b\xdb&+%\xfa\xcb\x16\xec\xdf\xcb\xcdC\xbb\x84\
\xee\xdb%\x8c!\xfe4\x94\xff\xdb\xda\x8f\xa5\x86\xdb\x9a\ 1\xc4\x9f\x86\xf2\x7f[\xfb\xb1\xd4p[\xd3[\xbeN\
\xde\xf0u\xb2N{n\xcf\x9e\x1f4\x99Jgc/\ \xd6i\xcf\xed\xc5\xcb\x83&U\xe9l\xec\xe5\x0d\x05\xf7\
o(\xb8W\xe0\xcd\x80\xe9\xae\x91I\x8d\x15\x0b\x8e\xd3\ \xee\xbb\x190=52\xa9\xb1b\xc1I\xfa\xe2\xdd\xdf\
\xd7\xf0\xfe\xf9\xafNx-\xa3\xacO\xf9\xfc\xfe\xf9N\ \xff\xd9\x09\xafe\x94\xf5)_><\xdfi\xeb16\
[\x8f\xb1\x19\xba\xa5\xd3h\xb9\x1b\x8c\xdaN\x04\xc2\xa6\ C\xb7t\x1a-u\x83Q\x9bE l\xfa\xfaF\xa7\
oqt\x9e\x8a\x967\x97\xb6\x1f\x88\xfa\xa0c@-\ U\xb4\xbc\xb2\xb4\xdd \xea\x83\x8e\x02\xb5\x90\x9e\xbe\xae\
\xac\xa7omtQ\x84J\xcc\xde\xeeh\x87\xea\xdb\xa8\ \xd1\x85\x11\x0a1{\xad\xa3\x1d\xaao\xa3\xb6\x01>\x13\
m\x80\xcf\x94\xdd\x8d\xb0\x02 \x81\x80g\xf2\x9aM\x13\ v\xf7\x82\x15\x00\x09\x04<\x977l\x9a(\x13\x17\xc7\
e\xe2\xe2\x98\x1c\xb4c\xf8\x82G\xdbV]@\x94\x8d\ \xe4\xa0}\x85/x\xb4m\xd7\x05D\xd9x\x1b\xd0\xcc\
\xb7\x01\xcd|%\x85xE\x95w\xcd\x94\xe6>^\x1a\ WR\x887Ty7Li\xee\xe3\xa5A\xfe\xf6c\
\xe4\xefBv\xd2:\x860\xe8k\xd0\xba`\xe4+1\ '\xaec\x08\x83\xbe\x06\xa9\x0bF\xbe\x11s\x11>.\
\xf7\xe1\xe3\xe2:\x9c\xfa>\x1c\xdd\x17D\xd1\x80#\x15\ \xee\xc1\xa9\xef\x83\xe9\xbe\x22\x8a\x06\x1c\xb1xI\xee\xdb\
\xcf\xc9]\xfb\x9a\xe0TKo\xd6\x14\xa6\xd4\xf0~P\ \xf7\x04\xa7Zz\xa5\xa6P\xa5\x86\x17\x83:v\x09 \
\xc7*\x01D\xe5%\xec?&]>\xbe\xaa\xfai\x8a\ */\xe1\xfc1\xe9\xf2\xf1U\xd1O\xd3U\xdd\xd0\xe9\
\xd5\x0d\x9d\xbeL\x9b\xd9\x94w\x8d_f\xb0\x1b/{\ \xeb\xb3\x99Ny7\xf8e\x06\xbb\xd7eo\xd9\xbe8\
\xe7\xf6\xd9A7\x5c\xea\xc6m\x00\xc2\xa6\xee]7\xfc\ \xe8\x86K\xdd\xb8\x0d@\xd8\xd4\xbd\xef\x86?\x97I\xcc\
\x99Lb\x06Q\x93nc\xb3\x9fS\xdd\x12\xe9\xda\xde\ j\xd2md\xf6s\xaa[\x22]\xdb\xcb|\xdc}\
\xe9\xe3\xee\xcb|=\x0ft\x8f\xa95\xbe\xacd\xc5m\ \x8b\xaf\xa7A\xf7\x98Z\xe3[J\x96\xdd\xe6\x85\xa5\xbe\
\xde[\xea\xabL\x03\xbc\xf3\x8ewm.$?\x1c\xdb\ \xc24\xc0;\x9fx\xdf\xe6Br\xe3\xd8\xe6C:-\
|H\xe7\x89\xd9\xd9\x1dP_\xf3k\xd6\x05u\x8f\x02\ fgw@}\xcdoX\x17\xd4\x03\x0a\xac\x9e\xc1\x91\
\xabgp\xa4p\xb6C\xcc\xcd\xed\x0b\xd6\xf8t\x0a\xc9\ \x82m\x87\x98\x9b\xdbW\xaa\xf1\xe9\x0c\x92\x01\xf2=\x7f\
\x00\xf9\x96?^\xca\xa8\xf3.\xab\x9b\xc7\xfe\x01\xe9\x92\ \xbc\x92Q\xe7]V7\x8d\xfd\x03\xd2\x15\x9dwp\xde\
\xce;$o\xc2\xaf\x81x\x8c\xc0\x87{\x99\x9b\xce.\ \x84_\x03\xf1\x14\x81\x0f\xcf27\x9d]\x82._C\
E\x97\xaf!g'o\xce\x0fO\x07\xa3\x1d\x0dj\xe7\ \xceN\xdf^\x1c\x9e\x0dF;*\xd4\xce\xe7\x1c\x9f\x9e\
}^\x9f\x9c^\x1e\xbd\x9b\x0d\x1e\x18.g\x9a\xfaW\ ]\x1d\xbd\x9f\x0d\x1e\x19.g\x9a\xfa\xd7\xed\xb27\x11\
\xed\xba7\x11\xa5t\xb43\xd1\xb6\xbc\x81\xdc\xcfl\x8e\ \xa5d\xda\x19k[^=\xee\xa76'\x13f\xeej\
'\xcc\xdc\xd5\x16\x96\xf3\xc1\x8elU\xd8\xf6S\xb2\x9b\ \x0b\xcd\xf9hG\xb6\x0al\xbb\x95\xec&\xddm\xe1\xc0\
v\xb7\x85\x03\xdb\xd4\xa9^R\xb5Y]\x9cC?\x9e\ 6u\xaa\x97TmZ\x17\xe7\xd0O\xe7h\xb6ah\
\xa3\xd9F\xa1\xbd\xe2\xebK\xe1\x22\x87\xbe\x0f\x85;\x15\ \xaf\xf8\xfab\xb8\xc8\xa1\x1f\x82\xe1N\x05I\xfa\x07\xfe\
$\xe9\x1f\xf8\xff'\xb7x\xdf\xfa\ \xff\x17E\xda\xd9\xee\
\x00\x00\x08k\ \x00\x00\x08k\
\x00\ \x00\
\x00r]x\xda\xed\x5cms\x9b\xb8\x1a\xfd\xde\x99\xfe\ \x00r]x\xda\xed\x5cms\x9b\xb8\x1a\xfd\xde\x99\xfe\
@@ -7295,47 +7295,47 @@ qt_resource_struct = b"\
\x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x8f\xff^8P\
\x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x01\x16\xe5\ \x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x01\x16\xe5\
\x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x8f\xff^8P\
\x00\x00\x03\xb0\x00\x01\x00\x00\x00\x01\x00\x01Q\xb0\ \x00\x00\x03\xb0\x00\x01\x00\x00\x00\x01\x00\x01Q\xac\
\x00\x00\x01\x8f\xff^8_\ \x00\x00\x01\x8f\xff^8_\
\x00\x00\x04\x22\x00\x01\x00\x00\x00\x01\x00\x01[\xa5\ \x00\x00\x04\x22\x00\x01\x00\x00\x00\x01\x00\x01[\xa1\
\x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x8f\xff^8P\
\x00\x00\x03\xe6\x00\x01\x00\x00\x00\x01\x00\x01T\xcd\ \x00\x00\x03\xe6\x00\x01\x00\x00\x00\x01\x00\x01T\xc9\
\x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x8f\xff^8P\
\x00\x00\x03\x12\x00\x01\x00\x00\x00\x01\x00\x019\x8e\ \x00\x00\x03\x12\x00\x01\x00\x00\x00\x01\x00\x019\x8e\
\x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x8f\xff^8P\
\x00\x00\x03<\x00\x01\x00\x00\x00\x01\x00\x01>\xe2\ \x00\x00\x03<\x00\x01\x00\x00\x00\x01\x00\x01>\xe2\
\x00\x00\x01\x90\x11\x9a\x93$\ \x00\x00\x01\x90\x11\xc7\x00\xf9\
\x00\x00\x05\xa8\x00\x00\x00\x00\x00\x01\x00\x01\xa0\xaf\ \x00\x00\x05\xa8\x00\x00\x00\x00\x00\x01\x00\x01\xa0\xab\
\x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x8f\xff^8P\
\x00\x00\x03r\x00\x01\x00\x00\x00\x01\x00\x01IA\ \x00\x00\x03r\x00\x01\x00\x00\x00\x01\x00\x01I=\
\x00\x00\x01\x8f\xff^8_\ \x00\x00\x01\x8f\xff^8_\
\x00\x00\x05\x86\x00\x00\x00\x00\x00\x01\x00\x01\x99{\ \x00\x00\x05\x86\x00\x00\x00\x00\x00\x01\x00\x01\x99w\
\x00\x00\x01\x90\x11U\xb4\x08\ \x00\x00\x01\x90\x11\xad[\xc5\
\x00\x00\x03X\x00\x02\x00\x00\x00\x04\x00\x00\x00+\ \x00\x00\x03X\x00\x02\x00\x00\x00\x04\x00\x00\x00+\
\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x04\xc4\x00\x01\x00\x00\x00\x01\x00\x01vI\ \x00\x00\x04\xc4\x00\x01\x00\x00\x00\x01\x00\x01vE\
\x00\x00\x01\x90\x11U\xb4\x08\ \x00\x00\x01\x90\x11\xad[\xc5\
\x00\x00\x05d\x00\x01\x00\x00\x00\x01\x00\x01\x8f_\ \x00\x00\x05d\x00\x01\x00\x00\x00\x01\x00\x01\x8f[\
\x00\x00\x01\x90\x01\x93J\xb0\ \x00\x00\x01\x90\x01\x93J\xb0\
\x00\x00\x04\xe6\x00\x01\x00\x00\x00\x01\x00\x01\x7fA\ \x00\x00\x04\xe6\x00\x01\x00\x00\x00\x01\x00\x01\x7f=\
\x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x8f\xff^8P\
\x00\x00\x04H\x00\x01\x00\x00\x00\x01\x00\x01b1\ \x00\x00\x04H\x00\x01\x00\x00\x00\x01\x00\x01b-\
\x00\x00\x01\x90\x11U\xb4\x08\ \x00\x00\x01\x90\x11\xad[\xc5\
\x00\x00\x04v\x00\x00\x00\x00\x00\x01\x00\x01nV\ \x00\x00\x04v\x00\x00\x00\x00\x00\x01\x00\x01nR\
\x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x8f\xff^8P\
\x00\x00\x04\x9e\x00\x01\x00\x00\x00\x01\x00\x01t\x1b\ \x00\x00\x04\x9e\x00\x01\x00\x00\x00\x01\x00\x01t\x17\
\x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x8f\xff^8P\
\x00\x00\x05@\x00\x01\x00\x00\x00\x01\x00\x01\x8b\x0b\ \x00\x00\x05@\x00\x01\x00\x00\x00\x01\x00\x01\x8b\x07\
\x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x8f\xff^8P\
\x00\x00\x05\x06\x00\x00\x00\x00\x00\x01\x00\x01\x85\xe2\ \x00\x00\x05\x06\x00\x00\x00\x00\x00\x01\x00\x01\x85\xde\
\x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x8f\xff^8P\
\x00\x00\x05\xdc\x00\x01\x00\x00\x00\x01\x00\x01\xa9b\ \x00\x00\x05\xdc\x00\x01\x00\x00\x00\x01\x00\x01\xa9^\
\x00\x00\x01\x8f\xff^8_\ \x00\x00\x01\x8f\xff^8_\
\x00\x00\x06$\x00\x01\x00\x00\x00\x01\x00\x01\xaf\xa7\ \x00\x00\x06$\x00\x01\x00\x00\x00\x01\x00\x01\xaf\xa3\
\x00\x00\x01\x8f\xff^8_\ \x00\x00\x01\x8f\xff^8_\
\x00\x00\x05\xc0\x00\x01\x00\x00\x00\x01\x00\x01\xa6_\ \x00\x00\x05\xc0\x00\x01\x00\x00\x00\x01\x00\x01\xa6[\
\x00\x00\x01\x8f\xff^8_\ \x00\x00\x01\x8f\xff^8_\
\x00\x00\x06\x00\x00\x01\x00\x00\x00\x01\x00\x01\xac%\ \x00\x00\x06\x00\x00\x01\x00\x00\x00\x01\x00\x01\xac!\
\x00\x00\x01\x8f\xff^8_\ \x00\x00\x01\x8f\xff^8_\
" "

View File

@@ -6,10 +6,10 @@ from PySide6.QtCore import QObject, Slot, Signal
from artemis.utils.constants import Constants, Messages from artemis.utils.constants import Constants, Messages
from artemis.utils.sys_utils import open_directory, make_tar, unpack_tar from artemis.utils.sys_utils import open_directory, make_tar, unpack_tar
from artemis.utils.sql_utils import ArtemisDatabase, ArtemisSignal from artemis.utils.sql_utils import ArtemisDatabase, ArtemisSignal
from artemis.utils.path_utils import DATA_DIR
from artemis.utils.update_utils import UpdateManager from artemis.utils.update_utils import UpdateManager
from artemis.utils.generic_utils import generate_filter_query from artemis.utils.generic_utils import generate_filter_query
from artemis.utils.path_utils import normalize_dialog_path from artemis.utils.path_utils import normalize_dialog_path
from artemis.utils.path_utils import DATA_DIR
from artemis.utils.config_utils import CONFIGURE_QT from artemis.utils.config_utils import CONFIGURE_QT
from artemis.ui.preferences import UIPreferences from artemis.ui.preferences import UIPreferences
@@ -25,6 +25,7 @@ import artemis.resources
class UIArtemis(QObject): class UIArtemis(QObject):
# Python > QML Signals # Python > QML Signals
close_ui = Signal()
populate_sig_list = Signal(list) populate_sig_list = Signal(list)
populate_sig_details = Signal(list) populate_sig_details = Signal(list)
populate_filter_modulation = Signal(list) populate_filter_modulation = Signal(list)
@@ -79,8 +80,8 @@ class UIArtemis(QObject):
self._window.loadSignal.connect(self.load_sig) self._window.loadSignal.connect(self.load_sig)
self._window.showPref.connect(self.show_pref_ui) self._window.showPref.connect(self.show_pref_ui)
self._window.openSigEditor.connect(self.open_sig_editor) self._window.openSigEditor.connect(self.open_sig_editor)
self._window.startDownloader.connect(self.start_download_db) self._window.checkForUpdate.connect(self.check_for_update)
self._window.checkDbUpdates.connect(self.check_update_db) self._window.updateDb.connect(self.update_db)
self._window.updateArtemis.connect(self.update_artemis) self._window.updateArtemis.connect(self.update_artemis)
self._window.showSpaceWeather.connect(self.show_space_weather_ui) self._window.showSpaceWeather.connect(self.show_space_weather_ui)
self._window.openDbDirectory.connect(self.open_db_directory) self._window.openDbDirectory.connect(self.open_db_directory)
@@ -99,6 +100,7 @@ class UIArtemis(QObject):
self._window_signal.addCatTag.connect(self.add_cat_tag) self._window_signal.addCatTag.connect(self.add_cat_tag)
# Python > QML connections # Python > QML connections
self.close_ui.connect(self._window.close)
self.populate_sig_list.connect(self._window.populateList) self.populate_sig_list.connect(self._window.populateList)
self.clear_list.connect(self._window.clearList) self.clear_list.connect(self._window.clearList)
self.update_info_bar.connect(self._window.bottomInfoBar) self.update_info_bar.connect(self._window.bottomInfoBar)
@@ -215,22 +217,12 @@ class UIArtemis(QObject):
self.docmanager.load_documentsmanager_ui() self.docmanager.load_documentsmanager_ui()
def check_update_db(self): def check_for_update(self):
""" User manual check for updates db updates """ User manual check for updates updates
""" """
self.update_manager.check_updates(True) self.update_manager.check_updates(True)
def start_download_db(self):
""" Show the downloader and start the download of the sigid db
"""
self.downloader.finished.connect(self.update_manager.post_download_db)
self.downloader.on_start(
self.update_manager.remote_db_url,
DATA_DIR
)
def dialog_download_db(self, message_type, title, message): def dialog_download_db(self, message_type, title, message):
""" Dialog popup for DB download confirmation """ Dialog popup for DB download confirmation
""" """
@@ -238,14 +230,23 @@ class UIArtemis(QObject):
def dialog_update_artemis(self, message_type, title, message, auto=False): def dialog_update_artemis(self, message_type, title, message, auto=False):
""" Dialog popup for artemis download confirmation """ Dialog popup for Artemis download confirmation
""" """
self.show_dialog_update_artemis.emit(message_type, title, message, auto) self.show_dialog_update_artemis.emit(message_type, title, message, auto)
@Slot()
def update_db(self):
""" Start the download of the sigID DB
"""
self.update_manager.download_db()
@Slot() @Slot()
def update_artemis(self): def update_artemis(self):
print('ciao') """ Start the download of Artemis
"""
self.update_manager.download_artemis()
def open_db_directory(self): def open_db_directory(self):

View File

@@ -55,7 +55,7 @@ class UIDownloader(QObject):
url (str): url from where download the file url (str): url from where download the file
save_path (str): path where to save the downloaded file save_path (str): path where to save the downloaded file
""" """
self._clear_ui()
self.show_ui.emit() self.show_ui.emit()
self.file_url = QUrl(url) self.file_url = QUrl(url)
@@ -85,8 +85,6 @@ class UIDownloader(QObject):
""" """
if self.reply: if self.reply:
self.reply.abort() self.reply.abort()
self.update_progress_bar.emit(0, 0)
self.update_status.emit('')
if self.file: if self.file:
self.file.cancelWriting() self.file.cancelWriting()
@@ -103,8 +101,8 @@ class UIDownloader(QObject):
@Slot() @Slot()
def on_finished(self): def on_finished(self):
""" Finalize the download process and if no errors """ Finalize the download process and, if no errors
occurs emits the finished signal usefulle for occurs, emits the finished signal usefull for
a callback a callback
""" """
if self.reply: if self.reply:
@@ -144,6 +142,7 @@ class UIDownloader(QObject):
def _get_filesize(self, url): def _get_filesize(self, url):
""" Get the file size by sending a HEAD request to the URL. """ Get the file size by sending a HEAD request to the URL.
If the Content-Length in HTTP headers is missing, returns None If the Content-Length in HTTP headers is missing, returns None
and set the progress_bar as 'indeterminate' like a 'busy indicator'
Args: Args:
url (str): URL to check the file size url (str): URL to check the file size
@@ -157,6 +156,11 @@ class UIDownloader(QObject):
return None return None
def _clear_ui(self):
self.update_progress_bar.emit(0, 0)
self.update_status.emit('')
def show_popup_error(self, error_msg): def show_popup_error(self, error_msg):
self._parent.dialog_popup( self._parent.dialog_popup(
Messages.DIALOG_TYPE_ERROR, Messages.DIALOG_TYPE_ERROR,

View File

@@ -5,8 +5,8 @@ from packaging.version import Version
from artemis.utils.constants import Constants, Messages from artemis.utils.constants import Constants, Messages
from artemis.utils.sql_utils import ArtemisDatabase from artemis.utils.sql_utils import ArtemisDatabase
from artemis.utils.sys_utils import is_windows, is_linux, is_macos, delete_file, delete_dir, match_hash, unpack_tar from artemis.utils.sys_utils import is_windows, is_linux, is_macos, delete_file, delete_dir, match_hash, unpack_tar, open_file
from artemis.utils.path_utils import DATA_DIR from artemis.utils.path_utils import DATA_DIR, APP_DIR
class UpdateManager: class UpdateManager:
@@ -26,19 +26,22 @@ class UpdateManager:
self.remote_db_size = None self.remote_db_size = None
self.remote_db_file_name = None self.remote_db_file_name = None
self.remote_art_version = None self.remote_artemis_version = None
self.remote_artemis_url = None
self.remote_artemis_file_name = None
self.check_updates() self.check_updates()
def check_updates(self, show_popup=False): def check_updates(self, show_popup=False):
""" Checks if a software or DB update is available. """ Checks if a software or DB update is available.
Prioritize Artemis update over DB one. Prioritize Artemis updates over the DB one.
Args: Args:
show_popup (bool, optional): show_popup (bool, optional):
Suppress the "already up-to-date" message on startup. If False, suppress the "already up-to-date" message on startup.
Defaults to False. Defaults to False. True is usefull when the user manual check for
updates.
""" """
latest_json = self._fetch_remote_json(Constants.LATEST_VERSION_URL, show_popup) latest_json = self._fetch_remote_json(Constants.LATEST_VERSION_URL, show_popup)
if latest_json: if latest_json:
@@ -52,13 +55,18 @@ class UpdateManager:
self.remote_db_file_name = self.remote_db_url.split('/')[-1] self.remote_db_file_name = self.remote_db_url.split('/')[-1]
if is_windows(): if is_windows():
self.remote_art_version = latest_json['windows']['version'] self.remote_artemis_version = latest_json['windows']['version']
self.remote_artemis_url = latest_json['windows']['url']
elif is_linux(): elif is_linux():
self.remote_art_version = latest_json['linux']['version'] self.remote_artemis_version = latest_json['linux']['version']
self.remote_artemis_url = latest_json['linux']['url']
elif is_macos(): elif is_macos():
self.remote_art_version = latest_json['mac']['version'] self.remote_artemis_version = latest_json['mac']['version']
self.remote_artemis_url = latest_json['mac']['url']
if Version(self.remote_art_version) > Version(Constants.APPLICATION_VERSION): self.remote_artemis_file_name = self.remote_artemis_url.split('/')[-1]
if Version(self.remote_artemis_version) > Version(Constants.APPLICATION_VERSION):
self.art_update = True self.art_update = True
else: else:
self.art_update = False self.art_update = False
@@ -77,6 +85,10 @@ class UpdateManager:
def _fetch_remote_json(self, url, show_popup=False): def _fetch_remote_json(self, url, show_popup=False):
""" Fetches the remote json from a url """ Fetches the remote json from a url
Args:
show_popup (bool, optional): If false, suppress any error message
Defaults to False (to avoid error if the program is used offline)
""" """
try: try:
response = requests.get(url) response = requests.get(url)
@@ -102,7 +114,23 @@ class UpdateManager:
return None return None
def download_db(self):
""" Open the downloader and download the sigID database in the
DATA_DIR folder. After a succesfull download the callback function
from the downloader is post_download_db
"""
self._parent.downloader.finished.connect(self.post_download_db)
self._parent.downloader.on_start(
self.remote_db_url,
DATA_DIR
)
def post_download_db(self): def post_download_db(self):
""" After a succesfull DB download, this function check the hash
for possible corrupted data, delete old sigID DB and extract
the new one
"""
latest_db_tar_path = DATA_DIR / self.remote_db_file_name latest_db_tar_path = DATA_DIR / self.remote_db_file_name
if match_hash(latest_db_tar_path, self.remote_db_hash): if match_hash(latest_db_tar_path, self.remote_db_hash):
delete_dir(DATA_DIR / 'SigID') delete_dir(DATA_DIR / 'SigID')
@@ -114,8 +142,29 @@ class UpdateManager:
delete_file(latest_db_tar_path) delete_file(latest_db_tar_path)
def download_artemis(self):
""" Open the downloader and download Artemis in the
APP_DIR folder. After a succesfull download the callback function
from the downloader is post_download_artemis
"""
self._parent.downloader.finished.connect(self.post_download_artemis)
self._parent.downloader.on_start(
self.remote_artemis_url,
APP_DIR
)
def post_download_artemis(self):
""" After a succesfull Artemis download, this open the installer
and close the application
"""
if is_windows():
open_file(APP_DIR / self.remote_artemis_file_name)
self._parent.close_ui.emit()
def _show_popup_db_update(self): def _show_popup_db_update(self):
""" Prompts the user to download the updated version of the database. """ Prompts the user to download the updated version of the database
""" """
self._parent.dialog_download_db( self._parent.dialog_download_db(
Messages.DIALOG_TYPE_WARN, Messages.DIALOG_TYPE_WARN,
@@ -133,20 +182,20 @@ class UpdateManager:
self._parent.dialog_update_artemis( self._parent.dialog_update_artemis(
Messages.DIALOG_TYPE_QUEST, Messages.DIALOG_TYPE_QUEST,
Messages.ART_NEW_VER, Messages.ART_NEW_VER,
Messages.ART_NEW_VER_AUTO_MSG.format(self.remote_art_version), Messages.ART_NEW_VER_AUTO_MSG.format(self.remote_artemis_version),
True True
) )
else: else:
self._parent.dialog_update_artemis( self._parent.dialog_update_artemis(
Messages.DIALOG_TYPE_QUEST, Messages.DIALOG_TYPE_QUEST,
Messages.ART_NEW_VER, Messages.ART_NEW_VER,
Messages.ART_NEW_VER_MANUAL_MSG.format(self.remote_art_version), Messages.ART_NEW_VER_MANUAL_MSG.format(self.remote_artemis_version),
False False
) )
def _show_popup_up_to_date(self): def _show_popup_up_to_date(self):
""" Notifies the user that the database is up to date. """ Notifies the user that the database is up to date
""" """
self._parent.dialog_popup( self._parent.dialog_popup(
Messages.DIALOG_TYPE_INFO, Messages.DIALOG_TYPE_INFO,
@@ -156,7 +205,7 @@ class UpdateManager:
def _show_popup_initial_db_download(self): def _show_popup_initial_db_download(self):
""" Prompts the user to download the database for the first time. """ Prompts the user to download the database for the first time
""" """
self._parent.dialog_download_db( self._parent.dialog_download_db(
Messages.DIALOG_TYPE_QUEST, Messages.DIALOG_TYPE_QUEST,

View File

@@ -31,8 +31,8 @@ Window {
signal showCatManager() signal showCatManager()
signal openSigEditor(string type, var sig_param, bool is_new) signal openSigEditor(string type, var sig_param, bool is_new)
signal showSpaceWeather() signal showSpaceWeather()
signal checkDbUpdates() signal checkForUpdate()
signal startDownloader() signal updateDb()
signal updateArtemis() signal updateArtemis()
signal openDbDirectory() signal openDbDirectory()
signal newDb(string name) signal newDb(string name)
@@ -137,7 +137,7 @@ Window {
standardButtons: Dialog.Cancel | Dialog.Yes standardButtons: Dialog.Cancel | Dialog.Yes
onAccepted: { onAccepted: {
startDownloader() updateDb()
} }
} }
@@ -323,7 +323,7 @@ Window {
MenuItem { MenuItem {
text: "Check for Updates" text: "Check for Updates"
onClicked: {checkDbUpdates()} onClicked: {checkForUpdate()}
} }
MenuSeparator {} MenuSeparator {}