From ddb952b894d7d4685dd4442dc4cf41b5a5300cd1 Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Mon, 24 Jun 2024 18:48:53 +0200 Subject: [PATCH 01/12] Updated audio player with settings --- CHANGELOG.md | 7 + artemis.qrc | 2 +- artemis/resources.py | 446 ++++++++++++++++++---------------- images/icons/player_mute.svg | 1 - images/icons/settings.svg | 1 + ui/Downloader.qml | 4 + ui/components/AudioPlayer.qml | 147 ++++++++--- 7 files changed, 367 insertions(+), 241 deletions(-) delete mode 100644 images/icons/player_mute.svg create mode 100644 images/icons/settings.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index 8614613..08c8320 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ ## [Unreleased] +### Added +- Created a setting panel for the audio player +- Selection of the audio output device. Close #4 + +### Fixed +- Fixed margins for downloader window + ## [4.0.5] - 2024-06-15 ### Added diff --git a/artemis.qrc b/artemis.qrc index 3b6375c..df0a67f 100644 --- a/artemis.qrc +++ b/artemis.qrc @@ -12,7 +12,6 @@ images/icons/player_play.svg images/icons/player_stop.svg images/icons/player_loop.svg - images/icons/player_mute.svg images/icons/save.svg images/icons/delete.svg images/icons/add.svg @@ -22,6 +21,7 @@ images/icons/browser.svg images/icons/documents.svg images/icons/abort.svg + images/icons/settings.svg images/spectrum_not_available.svg images/artemis_not_available.svg diff --git a/artemis/resources.py b/artemis/resources.py index 4f08275..dbfae83 100644 --- a/artemis/resources.py +++ b/artemis/resources.py @@ -4595,6 +4595,52 @@ 0q-33 0-56.5-23.\ 5T240-320Z\x22/>\ +\x00\x00\x02\xb2\ +<\ +svg xmlns=\x22http:\ +//www.w3.org/200\ +0/svg\x22 height=\x222\ +4px\x22 viewBox=\x220 \ +-960 960 960\x22 wi\ +dth=\x2224px\x22 fill=\ +\x22#5f6368\x22>\ \x00\x00\x02,\ <\ svg xmlns=\x22http:\ @@ -4789,57 +4835,6 @@ 17 11.5 28.5T460\ -340h80Z\x22/>\ -\x00\x00\x03\x0f\ -<\ -svg xmlns=\x22http:\ -//www.w3.org/200\ -0/svg\x22 height=\x222\ -4px\x22 viewBox=\x220 \ --960 960 960\x22 wi\ -dth=\x2224px\x22 fill=\ -\x22#5f6368\x22>\ \x00\x00\x02\xa7\ <\ svg xmlns=\x22http:\ @@ -6645,7 +6640,7 @@ >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\x07^\ +\x00\x00\x07\xf0\ i\ mport QtQuick\x0d\x0ai\ mport QtQuick.Wi\ @@ -6706,65 +6701,74 @@ columnLayout\x0d\x0a \ anchor\ s.fill: parent\x0d\x0a\ -\x0d\x0a La\ -bel {\x0d\x0a \ - text: qsT\ -r(\x22Downloading i\ -n progress...\x22)\x0d\ -\x0a \ - Layout.alignmen\ -t: Qt.AlignHCent\ -er | Qt.AlignVCe\ -nter\x0d\x0a \ - }\x0d\x0a\x0d\x0a \ - ProgressBar {\ -\x0d\x0a \ - id: progressBa\ -r\x0d\x0a \ - Layout.rightM\ -argin: 20\x0d\x0a \ - Layou\ -t.leftMargin: 20\ + anch\ +ors.rightMargin:\ + 10\x0d\x0a \ + anchors.leftMar\ +gin: 10\x0d\x0a \ + anchors.bot\ +tomMargin: 10\x0d\x0a \ + ancho\ +rs.topMargin: 10\ +\x0d\x0a\x0d\x0a \ +Label {\x0d\x0a \ + text: q\ +sTr(\x22Downloading\ + in progress...\x22\ +)\x0d\x0a \ + Layout.alignm\ +ent: Qt.AlignHCe\ +nter | Qt.AlignV\ +Center\x0d\x0a \ + }\x0d\x0a\x0d\x0a \ + ProgressBar\ + {\x0d\x0a \ + id: progress\ +Bar\x0d\x0a \ + Layout.righ\ +tMargin: 20\x0d\x0a \ + Lay\ +out.leftMargin: \ +20\x0d\x0a \ + Layout.fillW\ +idth: true\x0d\x0a \ + inde\ +terminate: false\ \x0d\x0a \ - Layout.fillWid\ -th: true\x0d\x0a \ - indete\ -rminate: false\x0d\x0a\ - \ -value: 0\x0d\x0a \ - to: 0\x0d\ + value: 0\x0d\x0a \ + to: \ +0\x0d\x0a }\ +\x0d\x0a\x0d\x0a \ +Label {\x0d\x0a \ + id: pro\ +gressLabel\x0d\x0a \ + Layo\ +ut.alignment: Qt\ +.AlignHCenter | \ +Qt.AlignVCenter\x0d\ \x0a }\x0d\x0a\ -\x0d\x0a La\ -bel {\x0d\x0a \ - id: progr\ -essLabel\x0d\x0a \ - Layout\ -.alignment: Qt.A\ -lignHCenter | Qt\ -.AlignVCenter\x0d\x0a \ - }\x0d\x0a\x0d\x0a\ - Butt\ -on {\x0d\x0a \ - Layout.ali\ -gnment: Qt.Align\ -HCenter | Qt.Ali\ -gnBottom\x0d\x0a \ - text: \ -qsTr(\x22Abort\x22)\x0d\x0a \ - i\ -con.source: \x22qrc\ -:/images/icons/a\ -bort.svg\x22\x0d\x0a \ - displ\ -ay: AbstractButt\ -on.TextBesideIco\ -n\x0d\x0a \ - flat: true\x0d\x0a \ - o\ -nClicked: { onAb\ -ort() }\x0d\x0a \ - }\x0d\x0a \ -}\x0d\x0a }\x0d\x0a}\x0d\x0a\ +\x0d\x0a Bu\ +tton {\x0d\x0a \ + Layout.a\ +lignment: Qt.Ali\ +gnHCenter | Qt.A\ +lignBottom\x0d\x0a \ + text\ +: qsTr(\x22Abort\x22)\x0d\ +\x0a \ + icon.source: \x22q\ +rc:/images/icons\ +/abort.svg\x22\x0d\x0a \ + dis\ +play: AbstractBu\ +tton.TextBesideI\ +con\x0d\x0a \ + flat: true\x0d\ +\x0a \ + onClicked: { on\ +Abort() }\x0d\x0a \ + }\x0d\x0a \ + }\x0d\x0a }\x0d\x0a}\x0d\x0a\ \x00\x00\x05\xac\ i\ mport QtQuick\x0d\x0ai\ @@ -6954,64 +6958,94 @@ \x1e\xe8\xe4\xf3\xeb\x07\xa8i\x9fC\x1b\x96\xd0\xe6\x96\xd8\ \xfe\x0bm\x972F\x97\x87Vhv\x8a\x7f_\xa4\xe9\ \x8f\xea\x87>\xb7\x1e\x9b\xfc\xff\x02j\xe6B\xc4\ -\x00\x00\x03~\ +\x00\x00\x05Q\ \x00\ -\x00\x160x\xda\xcdX[O\xdb0\x14~G\xe2?\ -X\xbc\xd0\xee!\xed\x98&M\x91\xba\x89\xf5\x05$*\ -`\x95\xc6#r\x13'\xb5p\xec\xcc\xb1\x8b\xd0\xc6\x7f\ -\x9fO\xd2\xa4\xb99\xedZ\xc8j\x90\x22\x1f\x1f\xe7\x5c\ -\xbe\xcf\xc7'\xa5Q,\xa4B\xf7\xea^S\xef\xe9\xf4\ -\x84V\xe6\xce\x03\xe5\xbexn\x88o\xf0\x8b\xd0*i\ -\xc8\xa7\x82+)\x98}\xc1\x99aE$\xc5\xac\xa41\ -\xd3L\xd1\x88\xf8\x14\x9f\x9e\xc0\xdf\xb5\x22\x11\xfa}z\ -\x82\xccx\xa6\xbeZ\xba\xe8\xe3\x97q6_\x12\x1a.\ -\x95\x11|\xba\x00U\x10\xc5R\xc4D\xaa\x17\xb4\x10\x82\ -!&D\xec\xa2\x00\xb3\x84\xe4\x0a\x81\xe6\x9e\xa2\x82\x9b\ -5\xec\xcf\x85\xe6\xfe\x00k\x9f\x8a\xc7\x18\xab\xe50\xb7\ -\x94\xbe\x8a\xe1\x17\x22\x9dD\x89x0l\x8a\x85\x96\x1e\ -A\x13\xb4\xd9\xbd\xd1Yh\xa5\x04\xbf3\x9a\x0e\xf5\x04\ -w<\xc1\x844\xbay\xbc\x0e\xf6<\xc2U\xeb\x06\xc2\ -\xf1\x82\x11\xdfh+\xa9I]\xe5\xc6D\xd4\xaa\xf2\xda\ -\x08\x10\x1c\xcd\x02\xac\x84\xb5\xd5\xb7@H\x12J\xd8\xd8\ -\xd8\x84uB\xfe)\xa2\xb9I\xde!)XC\xd7\xe6\ -Fw\x9eR\xc3{\xa62EY$\x14\xb28g\xd4\ -7ho\xd4r\xf8\x09y\x02Q\x83\x17\xf0\xc8\xe9\xd2\ -\x82\x09\xb8\xbe\x0f(\x96lu\x00\xd2\x01\xe3v\x9a\xd5\ -S\x5c\xc3!\x8f\x15\xb4\xec\xc1\xc2\xc9\xf9\xdf\xb1v\x10\ -\xd0\xbe)eF\xffYmen\xabN\x8d\xba5\x1d\ -\xa8zV\xcc\xca\xe5\xac\x09\x99$\x09Qw\xa9\xe6`\ -\x9fbx~\xbe\xcd\x8dw*?G\xc8\x80\x9dj\xd7\ -;Q\xc0Z\xbeJz\x05\xfaS\xc1t\xc4\xb3[\xbc\ -\x8c9\xe6\xdeR\xc8\xc4\x09(c\xae)]\xb2r*\ -\x93\x18{\x94\x87.\x1aod?\xc4s\xf356e\ -\x18\x99\xb6\x83\x19\x0dyd^\xef\x9a\x0e\xc0\xb9\x84\xd9\ -\xd5\xd4L\x89D\x7f\x0a\xc9\xcfL\x92{\xbd\xb1i\xa0\ -\xf8\x9e\xe6\xa4n\x15\x06\xf5\xdd\x12<-\xeb\x05\xc8n\ -7\xc6\x95\x0d\x19\xe1]t\xf6Kz\xee\x88F8$\ -\xc9\x08V\x92Qv$\x1e\xe1\xe1$\xab\xf0\xac\xf9\x06\ -\x9f&\xb0\xea\xa2\xcbE\xa2$\xf6T\xe6\xbdsm\xf6\ -\xdfr\xd6\xe2\xe4\x1a?\xb7\x0es>\x02\x86M\xea\xaa\ -%'\x1f\x82O\x99i\xba`w\xa9#\xa8\xea\xbd\xd6\ -\x93Z\xee\xbaZ\xf0\x02F\xed\ -\x1b\xbc\x154\x84\xe4-\xa0[\x032v>\xf7]\x04\ -gZ\xf5\xd8JD\xc6\xda\xdb\x17\xc1v\xa2\x1dV\x03\ -\xcb\xd8:)<\x86\x89\xe3\xbd\x196\x83_\xea\xb2\x0f\ -\xc6\xbaEZ\x9c\xd8\xaa<\xfd\xc1\xecV\xabX\x9b0\ -J\x93\xaaV\xd6\xaf/\xb0\xf74W\x06\xa8\xe9\x12\xf3\ -\xd0\x12\x16\x94\xf5\xd2\xaf/\xc5\x1e4\x99L\xca\x0e:\ -\xd0\xba\xc4\xc4O\x17\x87\x07]\x12\xd6Nz\xf7Jo\ -\xed\x22\x0e\xaf\xd9\x97\x9b\xa4\xb6\x81b\xcdy\xc6\x0d\xb7\ -\x85#\x15C\xeb\x87\xf9\xff\x0b\x83\x18\xec\xb5\ +\x00 &x\xda\xd5Y\xdfo\xdb6\x10~\x0f\x90\xff\ +\x81\xc8K\x9d\x01\x93\xdd`\x01\x0a\x01\xd9\xe0\xba\x0f\x0d\ +\xd0\xa0i\x5c4\x0f\xc3P\xd0\x12m\x13\xa1E\x95\xa4\ +\x12{\x9b\xff\xf7\x1dE\xc9\xa2~P\x92\xdd4s\x95\ +\x00\xb6\xc8\x8f\xe4\xdd}\xc7\xe3\xf1LW1\x17\x0a}\ +R\x9f\x12\x1a<\x9c\x9e\xd0\xd2\xbbwO\xa3\x90?\xd5\ +\x9a?\xe0\x0dO\x94\xac\xb5Ox\xa4\x04g\xee\x0e\xef\ +\x06+\x22(f\x16\xe2&a\x8a\xaeHH\xf1\xe9\x89\ +\xfe\xbbVd\x85\xfe9=A\xf0<\xd1P-}t\ +1\x1a\x99\xf7%\xa1\x8b\xa5\xf2\xd1\x9b\x91F\xea\x96X\ +\xf0\x98\x08\xb5A3\xce\x19b\x9c\xc7>\x9ac&I\ +\x0e\x98'Q\xa0(\x8f\xa0\x0f\x87S\x9eD\xe1\x00'\ +!\xe5_c\xac\x96\xe7\xf9B\xe9T\x0co\x88\xf0\xa4\ +\xe2\xf1\xe0\xbc\xde\xcc\x13\x11\x10t\x85\x8a\xd1\x05f\x96\ +(\xc5\xa3[@z4\xe0\x91\x17p\xc6\x05`su\ +=\x1c\x04$R\x8d\x03H\x84g\x8c\x84\x80V\x22!\ +U\xc8\x07\xd0\xa8\x11\xb2\xad)\xa8\x055\x0a\x96\xd4\xea\ +\x94m\xce\x05Y\x08=\xb06\x08'\x92\xec\xa5\xd1\x14\ +\x8c\xf7=&\xc8\xa8k\x12\xa3\xddN\xe9\xc2\x07\x9a2\ +e\x99K\xaa\xad8e4\x04\xb6\x0bXN?!\x0f\ +\xba\xa9\xe6\x17\xfa#w\x97\x06N\xb4\xe8\x87\x90\xe2\xb0\ +V\x0b!-4v\xbbY\xd5\xc4\x15\x1er]5\xca\ +\xad\xac\xde9\xff\xb7\xae-\x0e\xe8\x1e\x94z\xc6\xcb[\ +\xb5\xd1s\x1b1\x15\xd7\xad`t\xd4srf\x87\xb3\ +:e\x82H\xa2nS\xe4\xe0\x90`\xf8\xeaU\x97\x18\ +?(\xfc\x1c\xa1\x07\xf4\x8a]?\xc8\x05\x9c\xe1\xcb\xc2\ +\xed\xd87\xa7\xba\xcd6\x0d}s\xaeM\x89R4Z\ +\xe4\xe7~\x81\xc8N\xe2\xdf.GE[~\x1a\xbf\xbe\ +\x1c\xd9\xd0\x15^\xd3U\xb2z\x9f\xf5\x1aT\xad\xfb\xde\ +L\x98\xce[\x1aM\xa3\xd6\xd1\xa6\xdb9\x9a\x87\x98Q\ +\xb5\xf1!\xb1\xf0\xc6q\xcch\x80\xb5]nt{\x01\ +\x9b3\xbc\x90)\xe6\x1dP\xcc\x17\xf6\x14\x8a*F|\ +\xf4M~\x16\x83\xb3\xb1\x80l\x84J\xf4+\x1ak\xf3\ + \xb3UPf&yvn\x8f\x9cp\xc8i\x22\x08\ +e\x1e\x8f\xf4wF\x14\x01\xc3Zv\xd6\xcf\x1aX\x99\ +\x06\x82\x90\xc8K\xc5GCt\x01\xf3\xef\xbe\x97\xd1\x9b\ +\x02mL\x91\xc1\x8b\x97\x02\xbf\xb5\x85\xb9\xc5\x0bR]\ +\x1aG\xc1\x92\x0b\xe9\xcd)c>\x9cM\x22\x0d\xbbe\ +\xcc\x84\xb3d\x15\x99\x0c\xaf:\xde=\x87\x0b%\xb4\x94\ +7X,h\x04~2r\x03\x19\x99\xf7\xc2\xcd8l\ +\x86U\x1f$\xec)\x1bV\x07\xde\xf1'\xb7\x9a\xfa1\ +\xbd\xa9\xa6\x99\xbf\x99 \xefB\xcf\x08sM\x95:\x16\ +Y\x83C\x9f\x19G\xfa\x98\xa88Qgn\xf4\x1cR\ +f/\xa6k\xc2\xa6\xf4o\xf0\xc7\xd7\x17nl\xc0h\ +\xecWN\xa0\xbe\xca4a\xb7.\x1d\xc1\xabg\xfc-\ +_\xb7\xa9\xb9\x8b%F\xc5|H\xa7d\xb1 s\x22\ +\x04\x09\xef+I\x7f\xd3\x03\xfb\x9c\x80\xfb\xa5\xd7\x86w\ +\xe4\x91\x06Dz\xd6\xa2\xb2\x9d\x85;\xaew\xf8YH\ +d h\xac\xe3C\x0b\x11\xb0\x97\x13\xa1\xbd\xfc:\x0a\ +\xc9z\xb2\xc4\xd1\xa2aW\xd7\xbc\xb0\x10\xc6\x0bS\x01\ +a#;\xc5\xfd3\xb0\x96\xf8\xcb=\xf3\xd6\xc9W/\ +\x0a\x0f\xf6\xf8\xef\xf1\xf7/:\xa0\x90\xe3\xf5\xf4\xa6f\ +s\x8cvy\xf9c\xaa\x99\xc1\xf6w\xef\xfcd\xbb\x18\ +=\xef\x96x\xc4,\x01\xeb\x8d\xbc\xcb\x9f\xd0I\xee\x88\ +\xce,\xd1@g9\xe7?\x97\xaf\xdc\xe9\xd4\xf0m\x9a\ +\xa3u9L\x91\xc9\xb5\xe0vI\xa8\xdf\x9e\x836\x0e\ +4\x899\x18\xf4\x9b\x08\xfc!]A\x12 \x87\xbaG\ +\x0eM\xea\xfeUg\xe9\x9e|\x5c\xb4\x189\xa4R\x83\ +}4\x9eI%p\xa0\x8cv\xde5\xcc\xf31b\x1b\ +\xf7\xc8,\xef\xf4\xab\xe9i\x8dF\x86U\x175\x10w\ +!{{\xe8\x11k\xe9\x1c\x0d\xb4Z\xe7]@\xf7-\ +\xa5\x9b\x8d\xae+A\xa3\xc7 \x02\xab\xec!U\xbbE\ +\xda\x85\xaa\xde\xa2\xf7p\xe1g8Z\xec\xaa]\xcb&\ +\xcb\x83_\xb3\xa2\x95\xc5\xb6\xa5\xd4\xb6\xb4\xb4+Km\ +\xcfNe\x8c\x03H\xdb!H\x16m\xcep\xd7\x04\xb6\ +\xb4\x81k\xc6\x22Z\xc1\xf4\xe6\xaa\xa1\xdf\xdeO\xe0\x15\ +\x8e\x8d\x7fw-_LK\xd5`\x1d!\xa3\x08\x15\xfa\ +\xba\xd1\xd0\xbfo\x88\xe8\x19\x1a\xf4\x87#4\xec\x1f\x12\ +\xbaBA[\x08\xb0\xb6\xbeU\xd4\xac9G\xb9\xc1\xe5\ +\x81}B\xfc\xf6p\x86\xf4\xfd\xfe\x05)J\xcb\x09\xc7\ +\xc6\x91U\xe4\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x02\xfc\x00\x00\x00\x00\x00\x01\x00\x017\xb7\ +\x00\x00\x02\xf6\x00\x00\x00\x00\x00\x01\x00\x017Z\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x01\xb0\x00\x00\x00\x00\x00\x01\x00\x01\x1f\xc0\ +\x00\x00\x01\xce\x00\x00\x00\x00\x00\x01\x00\x01\x22v\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x02\xa6\x00\x00\x00\x00\x00\x01\x00\x01/\xf7\ +\x00\x00\x02\xa0\x00\x00\x00\x00\x00\x01\x00\x01/\x9a\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x02f\x00\x00\x00\x00\x00\x01\x00\x01+\xf0\ +\x00\x00\x02`\x00\x00\x00\x00\x00\x01\x00\x01+\x93\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x01r\x00\x00\x00\x00\x00\x01\x00\x01\x1c\x98\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x01\x1d\x90\ -\x00\x00\x01\x8f\xff^8P\ -\x00\x00\x02B\x00\x00\x00\x00\x00\x01\x00\x01(\xdd\ +\x00\x00\x01\x90K\x1aN%\ +\x00\x00\x01\xb4\x00\x00\x00\x00\x00\x01\x00\x01 F\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x01\x16\xe5\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x03\xb0\x00\x01\x00\x00\x00\x01\x00\x01Q\xd2\ +\x00\x00\x03\xaa\x00\x01\x00\x00\x00\x01\x00\x01Qu\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x04\x22\x00\x01\x00\x00\x00\x01\x00\x01[\xc7\ +\x00\x00\x04\x1c\x00\x01\x00\x00\x00\x01\x00\x01[j\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x03\xe6\x00\x01\x00\x00\x00\x01\x00\x01T\xef\ +\x00\x00\x03\xe0\x00\x01\x00\x00\x00\x01\x00\x01T\x92\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x03\x12\x00\x01\x00\x00\x00\x01\x00\x019\x8e\ +\x00\x00\x03\x0c\x00\x01\x00\x00\x00\x01\x00\x0191\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x03<\x00\x01\x00\x00\x00\x01\x00\x01>\xe2\ +\x00\x00\x036\x00\x01\x00\x00\x00\x01\x00\x01>\x85\ \x00\x00\x01\x90\x13\xddn\xea\ -\x00\x00\x05\xa8\x00\x00\x00\x00\x00\x01\x00\x01\xa1U\ +\x00\x00\x05\xa2\x00\x00\x00\x00\x00\x01\x00\x01\xa1\x8a\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x03r\x00\x01\x00\x00\x00\x01\x00\x01Ic\ +\x00\x00\x03l\x00\x01\x00\x00\x00\x01\x00\x01I\x06\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x05\x86\x00\x00\x00\x00\x00\x01\x00\x01\x99\xf3\ -\x00\x00\x01\x90\x13\xddn\xea\ -\x00\x00\x03X\x00\x02\x00\x00\x00\x04\x00\x00\x00+\ +\x00\x00\x05\x80\x00\x00\x00\x00\x00\x01\x00\x01\x99\x96\ +\x00\x00\x01\x90J\xbe\xce\x04\ +\x00\x00\x03R\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\x01ve\ +\x00\x00\x04\xbe\x00\x01\x00\x00\x00\x01\x00\x01v\x08\ \x00\x00\x01\x90\x13\xdd\x17\xd4\ -\x00\x00\x05d\x00\x01\x00\x00\x00\x01\x00\x01\x8f\xd7\ +\x00\x00\x05^\x00\x01\x00\x00\x00\x01\x00\x01\x8fz\ \x00\x00\x01\x90\x01\x93J\xb0\ -\x00\x00\x04\xe6\x00\x01\x00\x00\x00\x01\x00\x01\x7fW\ +\x00\x00\x04\xe0\x00\x01\x00\x00\x00\x01\x00\x01~\xfa\ \x00\x00\x01\x90\x18\xf5\x014\ -\x00\x00\x04H\x00\x01\x00\x00\x00\x01\x00\x01bS\ +\x00\x00\x04B\x00\x01\x00\x00\x00\x01\x00\x01a\xf6\ \x00\x00\x01\x90\x13\xdd\x17\xd3\ -\x00\x00\x04v\x00\x00\x00\x00\x00\x01\x00\x01nr\ +\x00\x00\x04p\x00\x00\x00\x00\x00\x01\x00\x01n\x15\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x04\x9e\x00\x01\x00\x00\x00\x01\x00\x01t7\ +\x00\x00\x04\x98\x00\x01\x00\x00\x00\x01\x00\x01s\xda\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x05@\x00\x01\x00\x00\x00\x01\x00\x01\x8bx\ +\x00\x00\x05:\x00\x01\x00\x00\x00\x01\x00\x01\x8b\x1b\ \x00\x00\x01\x90\x1b[j\x99\ -\x00\x00\x05\x06\x00\x00\x00\x00\x00\x01\x00\x01\x86O\ +\x00\x00\x05\x00\x00\x00\x00\x00\x00\x01\x00\x01\x85\xf2\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x05\xdc\x00\x01\x00\x00\x00\x01\x00\x01\xaa\x08\ -\x00\x00\x01\x8f\xff^8_\ -\x00\x00\x06$\x00\x01\x00\x00\x00\x01\x00\x01\xb0M\ +\x00\x00\x05\xd6\x00\x01\x00\x00\x00\x01\x00\x01\xaa=\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x05\xc0\x00\x01\x00\x00\x00\x01\x00\x01\xa7\x05\ +\x00\x00\x06\x1e\x00\x01\x00\x00\x00\x01\x00\x01\xb2U\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x06\x00\x00\x01\x00\x00\x00\x01\x00\x01\xac\xcb\ +\x00\x00\x05\xba\x00\x01\x00\x00\x00\x01\x00\x01\xa7:\ \x00\x00\x01\x8f\xff^8_\ +\x00\x00\x05\xfa\x00\x01\x00\x00\x00\x01\x00\x01\xad\x00\ +\x00\x00\x01\x90K\x22\xa8\x89\ " def qInitResources(): diff --git a/images/icons/player_mute.svg b/images/icons/player_mute.svg deleted file mode 100644 index 527028e..0000000 --- a/images/icons/player_mute.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/images/icons/settings.svg b/images/icons/settings.svg new file mode 100644 index 0000000..b8d752f --- /dev/null +++ b/images/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/Downloader.qml b/ui/Downloader.qml index 61a2e11..7927a5e 100644 --- a/ui/Downloader.qml +++ b/ui/Downloader.qml @@ -48,6 +48,10 @@ Window { ColumnLayout { id: columnLayout anchors.fill: parent + anchors.rightMargin: 10 + anchors.leftMargin: 10 + anchors.bottomMargin: 10 + anchors.topMargin: 10 Label { text: qsTr("Downloading in progress...") diff --git a/ui/components/AudioPlayer.qml b/ui/components/AudioPlayer.qml index 2caf0d9..493db07 100644 --- a/ui/components/AudioPlayer.qml +++ b/ui/components/AudioPlayer.qml @@ -7,8 +7,8 @@ import QtMultimedia Item { - width: 180 - height: 132 + width: 200 + height: 80 property bool loop: false @@ -68,6 +68,109 @@ Item { positionSlider.enabled = false } + Window { + id: audioSettingWindow + + width: 450 + height: 150 + + maximumHeight: height + maximumWidth: width + + minimumHeight: height + minimumWidth: width + + modality: Qt.ApplicationModal + flags: Qt.Dialog + + title: qsTr("Artemis - Audio Player Settings") + + Component.onCompleted: { + x = Screen.width / 2 - width / 2 + y = Screen.height / 2 - height / 2 + } + + Page { + anchors.fill: parent + + ColumnLayout { + anchors.fill: parent + anchors.rightMargin: 10 + anchors.leftMargin: 10 + anchors.bottomMargin: 10 + anchors.topMargin: 10 + + RowLayout { + Layout.fillWidth: true + + Label { + text: "Audio Output" + font.pixelSize: 12 + clip: true + Layout.fillWidth: true + } + + ComboBox { + id: audioOutputComboBox + Layout.preferredWidth: 200 + model: mediaDevices.audioOutputs + textRole: "description" + onCurrentIndexChanged: { + audioOutput.device = mediaDevices.audioOutputs[currentIndex] + } + } + } + + RowLayout { + Layout.fillWidth: true + Label { + text: "Volume" + font.pixelSize: 12 + clip: true + Layout.fillWidth: true + } + Slider { + id: volumeSlider + Layout.preferredHeight: 20 + Layout.preferredWidth: 200 + value: 0.5 + } + } + + RowLayout { + Layout.fillWidth: true + Label { + text: "Replay (Loop)" + font.pixelSize: 12 + clip: true + Layout.fillWidth: true + } + RoundButton { + id: buttonLoop + icon.color: Material.foreground + icon.source: "qrc:/images/icons/player_loop.svg" + display: AbstractButton.IconOnly + enabled: false + flat: true + onClicked: { + if (loop) { + loop = false + icon.color = Material.foreground + } else { + loop = true + icon.color = Material.accent + } + } + } + } + + Item { + Layout.fillHeight: true + } + } + } + } + ColumnLayout { anchors.fill: parent spacing: 0 @@ -118,20 +221,14 @@ Item { } RoundButton { - id: buttonLoop + id: buttonSettings icon.color: Material.foreground - icon.source: "qrc:/images/icons/player_loop.svg" + icon.source: "qrc:/images/icons/settings.svg" display: AbstractButton.IconOnly - enabled: false + enabled: true flat: true onClicked: { - if (loop) { - loop = false - icon.color = Material.foreground - } else { - loop = true - icon.color = Material.accent - } + audioSettingWindow.show() } } } @@ -149,27 +246,6 @@ Item { } } - RowLayout { - Slider { - id: volumeSlider - Layout.preferredHeight: 20 - value: 0.5 - Layout.fillWidth: true - } - - RoundButton { - id: buttonMute - icon.color: Material.foreground - icon.source: "qrc:/images/icons/player_mute.svg" - display: AbstractButton.IconOnly - enabled: true - flat: true - onClicked: { - volumeSlider.value = 0 - } - } - } - MediaPlayer { id: player audioOutput: audioOutput @@ -186,7 +262,12 @@ Item { AudioOutput { id: audioOutput + device: mediaDevices.defaultAudioOutput volume: volumeSlider.value } + + MediaDevices { + id: mediaDevices + } } } From b8e6075aa0bef972fe1d4b5abfebf19287063fd4 Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Mon, 24 Jun 2024 22:18:21 +0200 Subject: [PATCH 02/12] Updated dependencies. Previous commit closes #4 --- CHANGELOG.md | 2 +- requirements.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08c8320..444887c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ ### Added - Created a setting panel for the audio player -- Selection of the audio output device. Close #4 +- Selection of the audio output device. Closes [#4](https://github.com/AresValley/Artemis/issues/4) ### Fixed - Fixed margins for downloader window diff --git a/requirements.txt b/requirements.txt index 6a5b13c..f397b97 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ PySide6==6.7.1 -requests==2.32.2 -packaging==24.0 +requests==2.32.3 +packaging==24.1 From ccc6e99a7f6b89e9eb59ecf2453d5f56524d0eac Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Tue, 25 Jun 2024 00:38:00 +0200 Subject: [PATCH 03/12] Added Synoptic Analysis, UV Imagers, and Spectrometric Coronagraph --- CHANGELOG.md | 6 + artemis.qrc | 2 + artemis/resources.py | 359 +++++++++++++++++++++++++++++----- artemis/ui/spaceweather.py | 8 + ui/SpaceWeather.qml | 18 ++ ui/SpaceWeatherSSA.qml | 49 +++++ ui/SpaceWeatherSunImagers.qml | 77 ++++++++ 7 files changed, 465 insertions(+), 54 deletions(-) create mode 100644 ui/SpaceWeatherSSA.qml create mode 100644 ui/SpaceWeatherSunImagers.qml diff --git a/CHANGELOG.md b/CHANGELOG.md index 444887c..12d2132 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,12 @@ ### Added - Created a setting panel for the audio player - Selection of the audio output device. Closes [#4](https://github.com/AresValley/Artemis/issues/4) +- Added the following (advanced) products to the space weather module [#53](https://github.com/AresValley/Artemis/issues/53): + - Sun Synoptic Analysis (SAS) + - GOES Solar Ultraviolet Imager (SUVI), all wavelenght (94 Å, 131 Å, 171 Å, 195 Å, 284 Å, 304 Å) + - GOES Thematic Map (from SUVI) + - Large Angle and Spectrometric Coronagraph (LASCO), both C2/C3 optical imaging of the Sun’s corona + - Helioseismic and Magnetic Imager (HMI): Magnetogram, Intensitygram, Dopplergram (TODO) ### Fixed - Fixed margins for downloader window diff --git a/artemis.qrc b/artemis.qrc index df0a67f..4973397 100644 --- a/artemis.qrc +++ b/artemis.qrc @@ -41,6 +41,8 @@ ui/SpaceWeatherForecastPage.qml ui/SpaceWeatherDRAPPage.qml ui/SpaceWeatherAuroraPage.qml + ui/SpaceWeatherSSA.qml + ui/SpaceWeatherSunImagers.qml ui/About.qml diff --git a/artemis/resources.py b/artemis/resources.py index dbfae83..5317984 100644 --- a/artemis/resources.py +++ b/artemis/resources.py @@ -1,6 +1,6 @@ # Resource object code (Python 3) # Created by: object code -# Created by: The Resource Compiler for Qt version 6.7.1 +# Created by: The Resource Compiler for Qt version 6.7.2 # WARNING! All changes made in this file will be lost! from PySide6 import QtCore @@ -6023,43 +6023,45 @@ .WordWrap\x0d\x0a \ }\x0d\x0a }\x0d\x0a}\x0d\x0a\ \ -\x00\x00\x02*\ +\x00\x00\x02M\ \x00\ -\x00\x08\x87x\xda\xbdUQk\xdb0\x10~\x0f\xe4?\ -\x88>\xb5\x0f\xd3\xd2\xc2\x18\x18\xfa\x90f\x8c\x15ZH\ -\x97B\x9e\x15\xfb\x1c\x8b\xca\x92'\x9dI\xb2\xe1\xff>\ -\xc9\xb2\x12\xdbq\xb6\xa5\xa3\x15y\x90\xee\xbe\xbb\xfb\xee\ -\xf4Y\xe1y\xa14\x92'|*y\xfc2\x1e\xf1\xce\ -\x99.\xb9L\xd4\xe6\xc8\ -2\x04\xcd\x998B<\xb0\x9d*\xd1F\x8eG>9\ -\xf95\x1e\x11\xbbx\x12\x91MmY\x14,\x86%0\ -\xcc@;\x9c\xf3nx\x82YD\xae'\x93\x897d\ -\xc0\xd7\x19F\xe4\xb33x\xd3L\xd9R\x12$R%\ -\xdd^\x00\x82M\xda\xe4wkKn\xc9\x22\xd6\x00\x92\ -\xd6\x09\xc9GrC>\x90\xfd\xfe\x80\xdc\x1d\x90\xbeR\ -\x03=\x1c<\xb6\x0a\xc5s\x950\xc1q\x17\xd9N\xe9\ -\xb4(\x04\x8f\x19r%\x1f\x9d\xddCR\xc1\xd6\xa6\xf6\ -\x87\xb1z;r\x14\x10\x91\x1f\xe6Y_^L5B\ -\xce\x8d-U\x8f\x814s\xb8\xb8\x0a\xe8\xb4\x94\xb1K\ -L\xca\x22\xb1C\xbeS\x88*\xbfc\xfa2\x07c\xd8\ -\x1a\xae\xda\x0d\x1b\x97c\x0f\xa1\x08[\xb4\x8d5\xc8V\ -\x07~;\xb7\xc6v4\x93q\xa6\xb4\xa1)\x17\x22\x22\ -\x05\xd3v\xb6\x01[SQ\xca\xderD\x1e\xd8\x0aD\ -;0\xdcg\xb7|\xd7\x9fZ\xa9\xd0\x82oA,\xf8\ -O\xdb\xfe\xf5M\xd7/ \xc59K\x12.\xd7\x11\xf9\ -\xd4\xf5iw\x09\xa7\x9c\xab\xba\xde\x90\xb7j\x93\x9f)\ -Q\xe6\xd2\xcb\xb1\xcf\xfdo\x8d\xbb\xf5\xccV\xb6\xa7~\ -d\xe8\x1ck\xef\xb1\xaf\xd1\xb1O\xe9Ex\x0c\xf2\xa4\ -\xea\xeaK\x8fG]B\x9f@ Q\xdav\xe5\x10\x8f\ -Z[\xf6\xc6\x83\xb4f\xa5vU\x9d\x94\xfa\xb0\xea?\ -S\x7fU\x1abf\xd0\xbcE\xf2/\xdf\xa7\xf3\xb7\xc8\ -;-\xb5\xd2\xec\x1f2W\xfd\xd1/\x90\xc5/\xc3\xd2\ -q+\xf6\x83\xbe\x97\x09l\x83\x14h\xdb\xf8\xc7+\xff\ -\xd6\xbcl\xfe\xce_\xaf\x8d{\xfb\x90\x9c\x1aC\xfb\x89\ -md\xd1\xff\xf8\x87Tm\x86\xc3\x86\x83\xaa\xc1\xb9\xbe\ -\x9eg\xd0\xd8\xb9D\xdbq\xef\xc3\xd4\x09\xf6\x5c\x96!\ -\xe6}\x18z\xe9\x9f\xcb\xf1\x10u\x0e\xcb\x13\xc7j\xff\ -\xf7c\x7f\xbf\x01\x0fJ\x0a\x01\ +\x00\x0a{x\xda\xbdVQo\xda0\x10~G\xe2?\ +X}j\x1f\x96\xd1J\xd3\xa4H}\xa0L\xd3\x90Z\ +\x89.\x95\xfal\x92\x03\xac:vf\x9f\x05l\xca\x7f\ +\x9f\x1d\xc7\x10B\xd8\x96N`\xf1\x90\xdc}w\xf7\xdd\ +\xf9\xb3\x03\xcb\x0b\xa9\x90<\xe3\xb3a\xe9\xdbp\xc0\x0e\ +\xde\xa3W&2\xb9>2O\xa4@%\xb9>\xe9\x88\ +\x9e(\x82b\x94\x1f!\x1e\xe9V\x1a\xb4\x91\xc3\x81O\ +N~\x0d\x07\xc4.\x96\xc5d]Y\x92\x82\xa6\xf0\x0a\ +\x14W\xa0\x1c\xcey\xd7,\xc3ULnG\xa3\x917\ +\xac\x80-W\x18\x93\xcf\xce\xe0M\x13iK\x09\x10\x18\ +I\xe1\x9e9 \xd8\xa4u~\xb76\xe4\x9e$\xa9\x02\ +\x10Q\x95\x90|$w\xe4\x03\xd9=\xef\x91\xdb=\xd2\ +W\xaa\xa1\xfb\x17\x8f-C\xf1\x5cf\x943\xdc\xc6\xb6\ +\xd3h\x5c\x14\x9c\xa5\x14\x99\x14O\xce\xee!\x0bN\x97\ +\xba\xf2\x87\xb1z;2\xe4\x10\x93\x1f\xfaE]_\x8d\ +\x15B\xce\xb4-U\x8d\x81\xd4s\xb8\xba\x09\xe8\x85\x11\ +\xa9KLL\x91\xd9!?HD\x99?Pu\x9d\x83\ +\xd6t\x097\xcd\x86\xb5\xcb\xb1\x83D\x08\x1b\xb4\x8d\xd5\ +\xc8F\x07\xfeqf\x8d\xcdh*\xd2\x95T:Z0\ +\xcecRPeg\x1b\xb0\x15\x15)\xed.\xc7\xe4\x91\ +\xce\x817\x03\xc3~\x1e\x96?\xf4/\xacT\xa2\x82m\ +\x80'\xec\xa7m\xff\xf6\xee\xd0\xcfa\x813\x9aeL\ +,c\xf2\xe9\xd0\xa7\xdc&\x9cr\xce\xabz]\xde\xb2\ +I~\x22\xb9\xc9\x85\x97c\x9b\xfb\xdf\x1aw\xeb\x85\xce\ +mO\xed\xc8\xd09V\xdec_\xadc\x9f\xd2\x8b\xf0\ +\x18\xe4IU\xd5_=\x1e\x95\x816\x81@\xc2\xd8v\ +E\x17\x8fJ[v\xc7\x83\xb4&F\xb9\xaaNJm\ +X\xf9\x9f\xa9\xbfJ\x05)\xd5\xa8\xcf\x91\xfc\xcb\xf7\xf1\ +\xec\x1cy\xc7FIE\xcf\x919I\xc6gIk\x04\ +\x99\xe6\xf6\x90\xaa\x7f\x99s\xd9\x16L\x824}\xeb\x16\ +\xbc[\xa9\x97\xc7Td\xb0\x09\x02\x8e\x9a\xc6?\x0a\xf5\ +[}\x1f{\xa5\xbe_\xd1S{\xfd\x9d\x9aE\xf3\xc3\ +P\x8b\xb9}eu\x9dE\xdd\x1d\xd6\x1dTv\xce\xf5\ +\xfd<\xc3\xc9\xe8K\xb4\x19w\x19\xa6\xee\x98\xf5e\x19\ +b.\xc3\xd0\x1f\xd8\xbe\x1c\xf7Q\x97ai\x0f\x7f\x1f\ +z\x16~!^F\xd4\x97G/z\xbb\xa8>,O\ +\xbc\x96\xbb\xbf\x1c\xf6\xf7\x1b\xfa\xe8n|\ \x00\x00\x08\xee\ \x00\ \x00[Ux\xda\xed\x5cms\xdb6\x12\xfe\xde\x99\xfe\ @@ -6404,6 +6406,158 @@ erveAspectFit\x0d\x0a \ }\x0d\x0a }\x0d\ \x0a}\x0d\x0a\ +\x00\x00\x09W\ +i\ +mport QtQuick\x0d\x0ai\ +mport QtQuick.Wi\ +ndow\x0d\x0aimport QtQ\ +uick.Controls\x0d\x0ai\ +mport QtQuick.Co\ +ntrols.Material\x0d\ +\x0aimport QtQuick.\ +Layouts\x0d\x0a\x0d\x0a\x0d\x0aPag\ +e {\x0d\x0a id: spa\ +ceWeatherSunImag\ +ers\x0d\x0a anchors\ +.fill: parent\x0d\x0a\x0d\ +\x0a objectName:\ + \x22spaceWeatherSu\ +nImagers\x22\x0d\x0a\x0d\x0a \ + property var po\ +seidon_json\x0d\x0a\x0d\x0a \ + function load\ +DrapReport(posei\ +don_data) {\x0d\x0a \ + poseidon_js\ +on = poseidon_da\ +ta\x0d\x0a load\ +Image(poseidon_j\ +son['URL'][combo\ +BoxImageProduct.\ +currentValue.val\ +ue])\x0d\x0a }\x0d\x0a\x0d\x0a \ + function load\ +Image(url) {\x0d\x0a \ + checkUrlEx\ +ists(url, functi\ +on(exists) {\x0d\x0a \ + if (ex\ +ists) {\x0d\x0a \ + imageBo\ +x.source = url\x0d\x0a\ + } el\ +se {\x0d\x0a \ + imageBox.s\ +ource = \x22qrc:///\ +images/artemis_n\ +ot_available.svg\ +\x22\x0d\x0a }\ +\x0d\x0a })\x0d\x0a \ + }\x0d\x0a\x0d\x0a funct\ +ion checkUrlExis\ +ts(url, callback\ +) {\x0d\x0a var\ + xhr = new XMLHt\ +tpRequest()\x0d\x0a \ + xhr.onready\ +statechange = fu\ +nction() {\x0d\x0a \ + if (xhr.\ +readyState === X\ +MLHttpRequest.DO\ +NE) {\x0d\x0a \ + callback(\ +xhr.status === 2\ +00)\x0d\x0a \ + }\x0d\x0a }\x0d\x0a \ + xhr.open(\ +\x22HEAD\x22, url, tru\ +e)\x0d\x0a xhr.\ +send()\x0d\x0a }\x0d\x0a\x0d\ +\x0a ColumnLayou\ +t {\x0d\x0a anc\ +hors.fill: paren\ +t\x0d\x0a ancho\ +rs.rightMargin: \ +10\x0d\x0a anch\ +ors.leftMargin: \ +10\x0d\x0a anch\ +ors.bottomMargin\ +: 10\x0d\x0a an\ +chors.topMargin:\ + 10\x0d\x0a\x0d\x0a C\ +omboBox {\x0d\x0a \ + id: combo\ +BoxImageProduct\x0d\ +\x0a tex\ +tRole: 'text'\x0d\x0a \ + Layou\ +t.fillWidth: tru\ +e\x0d\x0a m\ +odel: ListModel\ + {\x0d\x0a \ + ListElement \ +{ text: \x22SUVI 94\ + \xc3\x85\x22; value: \x22SU\ +VI_094\x22 }\x0d\x0a \ + ListE\ +lement { text: \x22\ +SUVI 131 \xc3\x85\x22; va\ +lue: \x22SUVI_131\x22 \ +}\x0d\x0a \ + ListElement {\ + text: \x22SUVI 171\ + \xc3\x85\x22; value: \x22SU\ +VI_171\x22 }\x0d\x0a \ + ListE\ +lement { text: \x22\ +SUVI 195 \xc3\x85\x22; va\ +lue: \x22SUVI_195\x22 \ +}\x0d\x0a \ + ListElement {\ + text: \x22SUVI 284\ + \xc3\x85\x22; value: \x22SU\ +VI_284\x22 }\x0d\x0a \ + ListE\ +lement { text: \x22\ +SUVI 304 \xc3\x85\x22; va\ +lue: \x22SUVI_304\x22 \ +}\x0d\x0a \ + ListElement {\ + text: \x22LASCO C2\ +\x22; value: \x22LASCO\ +_C2\x22 }\x0d\x0a \ + ListElem\ +ent { text: \x22LAS\ +CO C3\x22; value: \x22\ +LASCO_C3\x22 }\x0d\x0a \ + Lis\ +tElement { text:\ + \x22Thematic Map\x22;\ + value: \x22SUVI_TH\ +EMATIC\x22 }\x0d\x0a \ + }\x0d\x0a \ + onActivate\ +d: {\x0d\x0a \ + loadImage(\ +poseidon_json['U\ +RL'][comboBoxIma\ +geProduct.curren\ +tValue.value])\x0d\x0a\ + }\x0d\x0a \ + }\x0d\x0a\x0d\x0a \ + Image {\x0d\x0a \ + id: ima\ +geBox\x0d\x0a \ + Layout.fillHe\ +ight: true\x0d\x0a \ + Layout.f\ +illWidth: true\x0d\x0a\ + fill\ +Mode: Image.Pres\ +erveAspectFit\x0d\x0a\x0d\ +\x0a }\x0d\x0a \ +}\x0d\x0a}\x0d\x0a\ \x00\x00\x04[\ \x00\ \x00\x12\x85x\xda\xddX_o\xdb6\x10\x7f/\xd0\xef\ @@ -6476,6 +6630,89 @@ \xc4_\xbb\xf1\xd85y\x87\x12\xa4\x98pf\xef\x13\xc3\ c\x81\xda\xdd\xee\xc3\xe4\xf0E\x22\x92\x05\x88\x10\xcb\xe6\ \x8c\xbb\x17~\xff\x06f\x1eq:\ +\x00\x00\x05\x01\ +i\ +mport QtQuick\x0d\x0ai\ +mport QtQuick.Wi\ +ndow\x0d\x0aimport QtQ\ +uick.Controls\x0d\x0ai\ +mport QtQuick.Co\ +ntrols.Material\x0d\ +\x0aimport QtQuick.\ +Layouts\x0d\x0a\x0d\x0a\x0d\x0aPag\ +e {\x0d\x0a id: spa\ +ceWeatherSSA\x0d\x0a \ + anchors.fill: \ +parent\x0d\x0a\x0d\x0a ob\ +jectName: \x22space\ +WeatherSSA\x22\x0d\x0a\x0d\x0a \ + function load\ +DrapReport(posei\ +don_data) {\x0d\x0a \ + checkUrlExi\ +sts(poseidon_dat\ +a['URL']['SYNOPT\ +IC_MAP'], functi\ +on(exists) {\x0d\x0a \ + if (ex\ +ists) {\x0d\x0a \ + imageBo\ +x.source = posei\ +don_data['URL'][\ +'SYNOPTIC_MAP']\x0d\ +\x0a } e\ +lse {\x0d\x0a \ + imageBox.\ +source = \x22qrc://\ +/images/artemis_\ +not_available.sv\ +g\x22\x0d\x0a \ +}\x0d\x0a })\x0d\x0a \ + }\x0d\x0a\x0d\x0a func\ +tion checkUrlExi\ +sts(url, callbac\ +k) {\x0d\x0a va\ +r xhr = new XMLH\ +ttpRequest()\x0d\x0a \ + xhr.onread\ +ystatechange = f\ +unction() {\x0d\x0a \ + if (xhr\ +.readyState === \ +XMLHttpRequest.D\ +ONE) {\x0d\x0a \ + callback\ +(xhr.status === \ +200)\x0d\x0a \ + }\x0d\x0a }\x0d\x0a\ + xhr.open\ +(\x22HEAD\x22, url, tr\ +ue)\x0d\x0a xhr\ +.send()\x0d\x0a }\x0d\x0a\ +\x0d\x0a ColumnLayo\ +ut {\x0d\x0a an\ +chors.fill: pare\ +nt\x0d\x0a anch\ +ors.rightMargin:\ + 10\x0d\x0a anc\ +hors.leftMargin:\ + 10\x0d\x0a anc\ +hors.bottomMargi\ +n: 10\x0d\x0a a\ +nchors.topMargin\ +: 10\x0d\x0a\x0d\x0a \ +Image {\x0d\x0a \ + id: imageBo\ +x\x0d\x0a L\ +ayout.fillHeight\ +: true\x0d\x0a \ + Layout.fillW\ +idth: true\x0d\x0a \ + fillMode\ +: Image.Preserve\ +AspectFit\x0d\x0a \ + }\x0d\x0a }\x0d\x0a}\x0d\x0a\ +\ \x00\x00\x0a\x18\ \x00\ \x00Xhx\xda\xed\x5cko\xdb:\x12\xfd^\xa0\xff\ @@ -7252,10 +7489,20 @@ \x00S\ \x00p\x00a\x00c\x00e\x00W\x00e\x00a\x00t\x00h\x00e\x00r\x00A\x00u\x00r\x00o\x00r\ \x00a\x00P\x00a\x00g\x00e\x00.\x00q\x00m\x00l\ +\x00\x1a\ +\x05\xbc\x12\x9c\ +\x00S\ +\x00p\x00a\x00c\x00e\x00W\x00e\x00a\x00t\x00h\x00e\x00r\x00S\x00u\x00n\x00I\x00m\ +\x00a\x00g\x00e\x00r\x00s\x00.\x00q\x00m\x00l\ \x00\x0f\ \x0e^\x1a\x9c\ \x00P\ \x00r\x00e\x00f\x00e\x00r\x00e\x00n\x00c\x00e\x00s\x00.\x00q\x00m\x00l\ +\x00\x13\ +\x06\xfb\xe9|\ +\x00S\ +\x00p\x00a\x00c\x00e\x00W\x00e\x00a\x00t\x00h\x00e\x00r\x00S\x00S\x00A\x00.\x00q\ +\x00m\x00l\ \x00\x0e\ \x08!D\x9c\ \x00S\ @@ -7289,7 +7536,7 @@ qt_resource_struct = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00\x1a\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x13\x00\x00\x00\x1a\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x0a\x00\x02\x00\x00\x00\x05\x00\x00\x00\x03\ \x00\x00\x00\x00\x00\x00\x00\x00\ @@ -7334,7 +7581,7 @@ \x00\x00\x01r\x00\x00\x00\x00\x00\x01\x00\x01\x1c\x98\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x01\x1d\x90\ -\x00\x00\x01\x90K\x1aN%\ +\x00\x00\x01\x90K\xe3\xbe\xa0\ \x00\x00\x01\xb4\x00\x00\x00\x00\x00\x01\x00\x01 F\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x01\x16\xe5\ @@ -7349,38 +7596,42 @@ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x036\x00\x01\x00\x00\x00\x01\x00\x01>\x85\ \x00\x00\x01\x90\x13\xddn\xea\ -\x00\x00\x05\xa2\x00\x00\x00\x00\x00\x01\x00\x01\xa1\x8a\ +\x00\x00\x05:\x00\x00\x00\x00\x00\x01\x00\x01\x8b>\ +\x00\x00\x01\x90LRx\x5c\ +\x00\x00\x06\x08\x00\x00\x00\x00\x00\x01\x00\x01\xb0\x0d\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x03l\x00\x01\x00\x00\x00\x01\x00\x01I\x06\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x05\x80\x00\x00\x00\x00\x00\x01\x00\x01\x99\x96\ -\x00\x00\x01\x90J\xbe\xce\x04\ -\x00\x00\x03R\x00\x02\x00\x00\x00\x04\x00\x00\x00+\ +\x00\x00\x05\x98\x00\x00\x00\x00\x00\x01\x00\x01\x98\xf8\ +\x00\x00\x01\x90LO8\x08\ +\x00\x00\x05\xe6\x00\x00\x00\x00\x00\x01\x00\x01\xa8\x19\ +\x00\x00\x01\x90K\xe3\xbe\xa0\ +\x00\x00\x03R\x00\x02\x00\x00\x00\x04\x00\x00\x00-\ \x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x04\xbe\x00\x01\x00\x00\x00\x01\x00\x01v\x08\ +\x00\x00\x04\xbe\x00\x01\x00\x00\x00\x01\x00\x01v+\ \x00\x00\x01\x90\x13\xdd\x17\xd4\ -\x00\x00\x05^\x00\x01\x00\x00\x00\x01\x00\x01\x8fz\ +\x00\x00\x05\xc4\x00\x01\x00\x00\x00\x01\x00\x01\x9d\xfd\ \x00\x00\x01\x90\x01\x93J\xb0\ -\x00\x00\x04\xe0\x00\x01\x00\x00\x00\x01\x00\x01~\xfa\ +\x00\x00\x04\xe0\x00\x01\x00\x00\x00\x01\x00\x01\x7f\x1d\ \x00\x00\x01\x90\x18\xf5\x014\ \x00\x00\x04B\x00\x01\x00\x00\x00\x01\x00\x01a\xf6\ \x00\x00\x01\x90\x13\xdd\x17\xd3\ \x00\x00\x04p\x00\x00\x00\x00\x00\x01\x00\x01n\x15\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x04\x98\x00\x01\x00\x00\x00\x01\x00\x01s\xda\ -\x00\x00\x01\x8f\xff^8P\ -\x00\x00\x05:\x00\x01\x00\x00\x00\x01\x00\x01\x8b\x1b\ +\x00\x00\x01\x90LRh&\ +\x00\x00\x05t\x00\x01\x00\x00\x00\x01\x00\x01\x94\x99\ \x00\x00\x01\x90\x1b[j\x99\ -\x00\x00\x05\x00\x00\x00\x00\x00\x00\x01\x00\x01\x85\xf2\ +\x00\x00\x05\x00\x00\x00\x00\x00\x00\x01\x00\x01\x86\x15\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x05\xd6\x00\x01\x00\x00\x00\x01\x00\x01\xaa=\ +\x00\x00\x06<\x00\x01\x00\x00\x00\x01\x00\x01\xb8\xc0\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x06\x1e\x00\x01\x00\x00\x00\x01\x00\x01\xb2U\ +\x00\x00\x06\x84\x00\x01\x00\x00\x00\x01\x00\x01\xc0\xd8\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x05\xba\x00\x01\x00\x00\x00\x01\x00\x01\xa7:\ +\x00\x00\x06 \x00\x01\x00\x00\x00\x01\x00\x01\xb5\xbd\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x05\xfa\x00\x01\x00\x00\x00\x01\x00\x01\xad\x00\ -\x00\x00\x01\x90K\x22\xa8\x89\ +\x00\x00\x06`\x00\x01\x00\x00\x00\x01\x00\x01\xbb\x83\ +\x00\x00\x01\x90K\xe3\xbe\xa0\ " def qInitResources(): diff --git a/artemis/ui/spaceweather.py b/artemis/ui/spaceweather.py index 7f3e521..7cf2623 100644 --- a/artemis/ui/spaceweather.py +++ b/artemis/ui/spaceweather.py @@ -13,6 +13,8 @@ class UIspaceweather(QObject): load_poseidon_report = Signal(dict) load_poseidon_forecast_report = Signal(dict) load_poseidon_drap_report = Signal(dict) + load_poseidon_SSA_report = Signal(dict) + load_poseidon_sun_images_report = Signal(dict) load_aurora_report = Signal() update_bottom_bar = Signal(str) @@ -30,6 +32,8 @@ def __init__(self, parent): self._window_forecast = self._window.findChild(QObject, "spaceWeatherForecastObj") self._window_drap = self._window.findChild(QObject, "spaceWeatherDRAPObj") self._window_aurora = self._window.findChild(QObject, "spaceWeatherAuroraObj") + self._window_SSA = self._window.findChild(QObject, "spaceWeatherSSA") + self._window_sun_images = self._window.findChild(QObject, "spaceWeatherSunImagers") self._connect() @@ -43,6 +47,8 @@ def _connect(self): self.load_poseidon_report.connect(self._window_current.loadReport) self.load_poseidon_forecast_report.connect(self._window_forecast.loadForecastReport) self.load_poseidon_drap_report.connect(self._window_drap.loadDrapReport) + self.load_poseidon_SSA_report.connect(self._window_SSA.loadDrapReport) + self.load_poseidon_sun_images_report.connect(self._window_sun_images.loadDrapReport) self.load_aurora_report.connect(self._window_aurora.loadAuroraReport) @@ -62,6 +68,8 @@ def download_poseidon_report(self): self.load_poseidon_report.emit(poseidon_data) self.load_poseidon_forecast_report.emit(poseidon_data) self.load_poseidon_drap_report.emit(poseidon_data) + self.load_poseidon_sun_images_report.emit(poseidon_data) + self.load_poseidon_SSA_report.emit(poseidon_data) self.load_aurora_report.emit() self.update_bottom_bar.emit( diff --git a/ui/SpaceWeather.qml b/ui/SpaceWeather.qml index b9368e9..feb8996 100644 --- a/ui/SpaceWeather.qml +++ b/ui/SpaceWeather.qml @@ -56,6 +56,12 @@ Window { TabButton { text: qsTr("Aurora") } + TabButton { + text: qsTr("SSA") + } + TabButton { + text: qsTr("Sun Imagers") + } } StackLayout { @@ -86,6 +92,18 @@ Window { id: spaceWeatherAuroraPage } } + + Item { + SpaceWeatherSSA { + id: spaceWeatherSSA + } + } + + Item { + SpaceWeatherSunImagers { + id: spaceWeatherSunImagers + } + } } } } diff --git a/ui/SpaceWeatherSSA.qml b/ui/SpaceWeatherSSA.qml new file mode 100644 index 0000000..85881f5 --- /dev/null +++ b/ui/SpaceWeatherSSA.qml @@ -0,0 +1,49 @@ +import QtQuick +import QtQuick.Window +import QtQuick.Controls +import QtQuick.Controls.Material +import QtQuick.Layouts + + +Page { + id: spaceWeatherSSA + anchors.fill: parent + + objectName: "spaceWeatherSSA" + + function loadDrapReport(poseidon_data) { + checkUrlExists(poseidon_data['URL']['SYNOPTIC_MAP'], function(exists) { + if (exists) { + imageBox.source = poseidon_data['URL']['SYNOPTIC_MAP'] + } else { + imageBox.source = "qrc:///images/artemis_not_available.svg" + } + }) + } + + function checkUrlExists(url, callback) { + var xhr = new XMLHttpRequest() + xhr.onreadystatechange = function() { + if (xhr.readyState === XMLHttpRequest.DONE) { + callback(xhr.status === 200) + } + } + xhr.open("HEAD", url, true) + xhr.send() + } + + ColumnLayout { + anchors.fill: parent + anchors.rightMargin: 10 + anchors.leftMargin: 10 + anchors.bottomMargin: 10 + anchors.topMargin: 10 + + Image { + id: imageBox + Layout.fillHeight: true + Layout.fillWidth: true + fillMode: Image.PreserveAspectFit + } + } +} diff --git a/ui/SpaceWeatherSunImagers.qml b/ui/SpaceWeatherSunImagers.qml new file mode 100644 index 0000000..eb546b2 --- /dev/null +++ b/ui/SpaceWeatherSunImagers.qml @@ -0,0 +1,77 @@ +import QtQuick +import QtQuick.Window +import QtQuick.Controls +import QtQuick.Controls.Material +import QtQuick.Layouts + + +Page { + id: spaceWeatherSunImagers + anchors.fill: parent + + objectName: "spaceWeatherSunImagers" + + property var poseidon_json + + function loadDrapReport(poseidon_data) { + poseidon_json = poseidon_data + loadImage(poseidon_json['URL'][comboBoxImageProduct.currentValue.value]) + } + + function loadImage(url) { + checkUrlExists(url, function(exists) { + if (exists) { + imageBox.source = url + } else { + imageBox.source = "qrc:///images/artemis_not_available.svg" + } + }) + } + + function checkUrlExists(url, callback) { + var xhr = new XMLHttpRequest() + xhr.onreadystatechange = function() { + if (xhr.readyState === XMLHttpRequest.DONE) { + callback(xhr.status === 200) + } + } + xhr.open("HEAD", url, true) + xhr.send() + } + + ColumnLayout { + anchors.fill: parent + anchors.rightMargin: 10 + anchors.leftMargin: 10 + anchors.bottomMargin: 10 + anchors.topMargin: 10 + + ComboBox { + id: comboBoxImageProduct + textRole: 'text' + Layout.fillWidth: true + model: ListModel { + ListElement { text: "SUVI 94 Å"; value: "SUVI_094" } + ListElement { text: "SUVI 131 Å"; value: "SUVI_131" } + ListElement { text: "SUVI 171 Å"; value: "SUVI_171" } + ListElement { text: "SUVI 195 Å"; value: "SUVI_195" } + ListElement { text: "SUVI 284 Å"; value: "SUVI_284" } + ListElement { text: "SUVI 304 Å"; value: "SUVI_304" } + ListElement { text: "LASCO C2"; value: "LASCO_C2" } + ListElement { text: "LASCO C3"; value: "LASCO_C3" } + ListElement { text: "Thematic Map"; value: "SUVI_THEMATIC" } + } + onActivated: { + loadImage(poseidon_json['URL'][comboBoxImageProduct.currentValue.value]) + } + } + + Image { + id: imageBox + Layout.fillHeight: true + Layout.fillWidth: true + fillMode: Image.PreserveAspectFit + + } + } +} From a3bc1b0c59c475755b29c9c550240d500237645e Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Thu, 27 Jun 2024 01:08:43 +0200 Subject: [PATCH 04/12] Complete the UV imagers part with Atmospheric Imagery Assembly --- CHANGELOG.md | 2 +- artemis/resources.py | 231 ++++++++++------------------------ ui/SpaceWeatherSunImagers.qml | 21 ++-- 3 files changed, 82 insertions(+), 172 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12d2132..76aa243 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ - Sun Synoptic Analysis (SAS) - GOES Solar Ultraviolet Imager (SUVI), all wavelenght (94 Å, 131 Å, 171 Å, 195 Å, 284 Å, 304 Å) - GOES Thematic Map (from SUVI) - - Large Angle and Spectrometric Coronagraph (LASCO), both C2/C3 optical imaging of the Sun’s corona + - Large Angle and Spectrometric Coronagraph (LASCO), both C2/C3 range for optical imaging of the Sun’s corona - Helioseismic and Magnetic Imager (HMI): Magnetogram, Intensitygram, Dopplergram (TODO) ### Fixed diff --git a/artemis/resources.py b/artemis/resources.py index 5317984..0a897b2 100644 --- a/artemis/resources.py +++ b/artemis/resources.py @@ -6406,158 +6406,63 @@ erveAspectFit\x0d\x0a \ }\x0d\x0a }\x0d\ \x0a}\x0d\x0a\ -\x00\x00\x09W\ -i\ -mport QtQuick\x0d\x0ai\ -mport QtQuick.Wi\ -ndow\x0d\x0aimport QtQ\ -uick.Controls\x0d\x0ai\ -mport QtQuick.Co\ -ntrols.Material\x0d\ -\x0aimport QtQuick.\ -Layouts\x0d\x0a\x0d\x0a\x0d\x0aPag\ -e {\x0d\x0a id: spa\ -ceWeatherSunImag\ -ers\x0d\x0a anchors\ -.fill: parent\x0d\x0a\x0d\ -\x0a objectName:\ - \x22spaceWeatherSu\ -nImagers\x22\x0d\x0a\x0d\x0a \ - property var po\ -seidon_json\x0d\x0a\x0d\x0a \ - function load\ -DrapReport(posei\ -don_data) {\x0d\x0a \ - poseidon_js\ -on = poseidon_da\ -ta\x0d\x0a load\ -Image(poseidon_j\ -son['URL'][combo\ -BoxImageProduct.\ -currentValue.val\ -ue])\x0d\x0a }\x0d\x0a\x0d\x0a \ - function load\ -Image(url) {\x0d\x0a \ - checkUrlEx\ -ists(url, functi\ -on(exists) {\x0d\x0a \ - if (ex\ -ists) {\x0d\x0a \ - imageBo\ -x.source = url\x0d\x0a\ - } el\ -se {\x0d\x0a \ - imageBox.s\ -ource = \x22qrc:///\ -images/artemis_n\ -ot_available.svg\ -\x22\x0d\x0a }\ -\x0d\x0a })\x0d\x0a \ - }\x0d\x0a\x0d\x0a funct\ -ion checkUrlExis\ -ts(url, callback\ -) {\x0d\x0a var\ - xhr = new XMLHt\ -tpRequest()\x0d\x0a \ - xhr.onready\ -statechange = fu\ -nction() {\x0d\x0a \ - if (xhr.\ -readyState === X\ -MLHttpRequest.DO\ -NE) {\x0d\x0a \ - callback(\ -xhr.status === 2\ -00)\x0d\x0a \ - }\x0d\x0a }\x0d\x0a \ - xhr.open(\ -\x22HEAD\x22, url, tru\ -e)\x0d\x0a xhr.\ -send()\x0d\x0a }\x0d\x0a\x0d\ -\x0a ColumnLayou\ -t {\x0d\x0a anc\ -hors.fill: paren\ -t\x0d\x0a ancho\ -rs.rightMargin: \ -10\x0d\x0a anch\ -ors.leftMargin: \ -10\x0d\x0a anch\ -ors.bottomMargin\ -: 10\x0d\x0a an\ -chors.topMargin:\ - 10\x0d\x0a\x0d\x0a C\ -omboBox {\x0d\x0a \ - id: combo\ -BoxImageProduct\x0d\ -\x0a tex\ -tRole: 'text'\x0d\x0a \ - Layou\ -t.fillWidth: tru\ -e\x0d\x0a m\ -odel: ListModel\ - {\x0d\x0a \ - ListElement \ -{ text: \x22SUVI 94\ - \xc3\x85\x22; value: \x22SU\ -VI_094\x22 }\x0d\x0a \ - ListE\ -lement { text: \x22\ -SUVI 131 \xc3\x85\x22; va\ -lue: \x22SUVI_131\x22 \ -}\x0d\x0a \ - ListElement {\ - text: \x22SUVI 171\ - \xc3\x85\x22; value: \x22SU\ -VI_171\x22 }\x0d\x0a \ - ListE\ -lement { text: \x22\ -SUVI 195 \xc3\x85\x22; va\ -lue: \x22SUVI_195\x22 \ -}\x0d\x0a \ - ListElement {\ - text: \x22SUVI 284\ - \xc3\x85\x22; value: \x22SU\ -VI_284\x22 }\x0d\x0a \ - ListE\ -lement { text: \x22\ -SUVI 304 \xc3\x85\x22; va\ -lue: \x22SUVI_304\x22 \ -}\x0d\x0a \ - ListElement {\ - text: \x22LASCO C2\ -\x22; value: \x22LASCO\ -_C2\x22 }\x0d\x0a \ - ListElem\ -ent { text: \x22LAS\ -CO C3\x22; value: \x22\ -LASCO_C3\x22 }\x0d\x0a \ - Lis\ -tElement { text:\ - \x22Thematic Map\x22;\ - value: \x22SUVI_TH\ -EMATIC\x22 }\x0d\x0a \ - }\x0d\x0a \ - onActivate\ -d: {\x0d\x0a \ - loadImage(\ -poseidon_json['U\ -RL'][comboBoxIma\ -geProduct.curren\ -tValue.value])\x0d\x0a\ - }\x0d\x0a \ - }\x0d\x0a\x0d\x0a \ - Image {\x0d\x0a \ - id: ima\ -geBox\x0d\x0a \ - Layout.fillHe\ -ight: true\x0d\x0a \ - Layout.f\ -illWidth: true\x0d\x0a\ - fill\ -Mode: Image.Pres\ -erveAspectFit\x0d\x0a\x0d\ -\x0a }\x0d\x0a \ -}\x0d\x0a}\x0d\x0a\ +\x00\x00\x03p\ +\x00\ +\x00\x0cNx\xda\xadVmo\xda0\x10\xfe>i\xff\ +\xc1\xe2K\xa9\xd4\xa5\xb4\xd9V\x95\xa9\x1f2`\x03\x09\ +ZV\xdau\xd24!\x93\x5c\x89W\xc7\x97\xd9\x0e+\ +\xaa\xfaq\xbfl\x7fl\xb6\x19/\x81P\x91n\x80P\ +\x9c{\xee\x9e{\xb1\xef\xcc\x92\x14\xa5&\x9f\xf4\xa7\x8c\ +\x85w/_\xb0\xdc\xda\xbba\x22\xc2\x9f\x1b\xaf\x1b(\ +\xb4D\xae\xb6\x0a\xbc\x1e\xd5 \x19\xe5\x1b\x88.\x9db\ +\xa6\x8d\xa6\xfd\xf6\xe9\x18\xc8\xc3\xcb\x17\xc4|XT'\ +*\xa5!\xdc\x00\xd51\xc8A&:\x89\x91K5\x93\ +S\x11\xc6(\x95w\xcb8\xaf\x93\x94J\x10\xda\xda\xb0\ +2\x1c}\x87P\x9f\xd3\x04\xea\xa4Rl\xa42\xc7\xa6\ +\x12S\x90zJ&T\x92\x14\x15\xb0\x08\xc5\xf0\xbbB\ +1G\xdcf\x22\xd4\x0c\x05\xe1H\xa3\xa6\xa4\xe9%\xd8\ +\x10\xaa\x0bpD5\xdd\x9f\xfb\xedl\xae\x9a!g$\ +\x87\x5c\xc2\xac=\xe7N5\xa7\xf0u\xef\xfa\xb2\xbb\xf7\ +\xedk\x88\xc9\x08\xdf\xe3\xbd\x83\xf4%FY\xa8\xbd0\ +\x936\xd2\xcf\x94g\xe0M\xec\xff\xb7\xfd\x99\xc5\xc7B\ +\x7fg\xf63\xc9s\x0e\x861\x84w\xd7\x92\xb7\xee\x99\ +\xd2\xca\x8a\x0f\x16jUp/sxW\x90[\xb2M\ +\xe4\xc4\x96\xc8x\xeb)\xccd\x08&jc5\x0f{\ +$\xc0\x15\xec\xa6\x5c\xf9!\xc3\xfa\xe1\xe1\xa1\x93\xa8C\ +*5$L\x0d\x05\xea!\x9dP\xc6\xe9\x88\x83\xa7&\ +\xe3\xca\x1a\xc5r\xf9\xb85/E\xd1\x87\x94\xf3\x11\x0d\ +\xefr\xb1\xd9-q\x1fK\xe3\x8e\x80\x9f\xe4K\xaf\xdb\ +\xd6\xdaT\xffG\x06JW\xf7\x978\x83\xf1PH\xa0\ +\xd1Ti\xb3\xd3\xc3\x98\x8a\xb1\x8db\x91\xd3\xc2lZ\ +5\xa74\xb0J\xe4\xec\xecl\x8d\xc3k^\x9c\xb7\x0a\ +\xb3=w\xd7\xd9\xb0\x9c\x99r\xfa\xc7\xb5\xda\xfe\xf6\x8c\ +\xacy\x9c\x82\xa8V\xda\xad\xa0Y9 .\x09Zf\ +\xb0\x16\x96\x02\x11U\xd73\xd9@\x9e%bvtW\ +\xbd+>\x93\xebR\xc9\xc6\xb1\xeeQ9f\xa2N\x8e\ +j\x9b\x00\x0e\xb7O\xcaG\xa85&O!4\xa6\xab\ +\xe2%\xa0\xf1\xf7Lm\x94\xc3t\x9b\xa2\xf3\x96Gi\ +\xb8\xd7\x97\xc8MW\xd9\xb3\x8f{y\xe9,\x1f.\xf8\ +\x1b\x16\xe9\xb8\xee\xf2\x99\xc7$\x18\x81I\x0d\xe9\x9a\x9d\ +\xd7\xb3\xcfE\xc5\xb5\xc2\x16\x87\xc4d\x8f<8R\xd3\ +\xc6N_\x93\xdf\xbf\xc8+\x12\xe8\x04Ujz\x19\x0b\ +\xc9\xac\x97MI\xa0\x14$#>\xad\xbc#\xae%\x18\ +x\xd0\x09\x86\xb5\xd3\xd7\x95\xd5\xa2?i\xff\xc8?*\ +M`tJ\x10\x9c<\x83\xe0\xa4\x0c\xc1\xa9_\x9e\xe0\ +\xd4\xdf\x9d\xc0\xaf\x95'\xf0k%j\xe0\xfbo\xca\x13\ +\xf8oJ\xa4\xe8m\xadV>GF\xa9L\x99\x9fC\ +qR\x86\xa2G\xc7\x024\x8e%M\x0cM\x1b8\xb3\ +\xe3S%\x86\x87\x8a\x88\xcc\xc4\x0b\xd25\xaa^\xf0\xf1\ +|w\xaa\x8e\xd0 \x14\xd3\xd3\xe7\x91u\xce\xafZ\xbb\ +\x9351M9\xc8\xe7Q5/\xfa\xfd\xdd\xa9\xba\xc1\ +\xa0qA\x1a\xc7\x86\xa7k\x1a%\x90@\x8c98\x9a\ +Aj\xeeN\x12\x13\xd0\xb6p\x0d\x94(\xa8q)\x8d\ +W\x08\x9d\xfa\xb0q\x5c\x9a\xd0\xff7\xc2\x12\x87\xf5*\ +\x86\x84\xdal\xf5h\xbabhp\xfd\xb93\xbcj\xb7\ +z\xc1U\xa7\xb1amm\x89\x220\xe3{b\x86\xb3\ +\x19\x0f\x05\x8d\xfa\xff^\xe0\x8a'\xf6r\xe1\xcc\x14\x0d\ +\xae\xf9\xedi\xeb8j\x83\x1d\xb9E\xf3h\x97\x99e\ +\x85vV\xd5g\x1ex}\x09\x0a\xe4\x04\x02e\x0b\xf7\ +\x81\xe9U'\x1f\x17W\x05\xf3\xfb\x03\x08\xd3\x8c|\ \x00\x00\x04[\ \x00\ \x00\x12\x85x\xda\xddX_o\xdb6\x10\x7f/\xd0\xef\ @@ -7596,21 +7501,21 @@ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x036\x00\x01\x00\x00\x00\x01\x00\x01>\x85\ \x00\x00\x01\x90\x13\xddn\xea\ -\x00\x00\x05:\x00\x00\x00\x00\x00\x01\x00\x01\x8b>\ -\x00\x00\x01\x90LRx\x5c\ -\x00\x00\x06\x08\x00\x00\x00\x00\x00\x01\x00\x01\xb0\x0d\ +\x00\x00\x05:\x00\x01\x00\x00\x00\x01\x00\x01\x8b>\ +\x00\x00\x01\x90V\xcd\xfaZ\ +\x00\x00\x06\x08\x00\x00\x00\x00\x00\x01\x00\x01\xaa&\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x03l\x00\x01\x00\x00\x00\x01\x00\x01I\x06\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x05\x98\x00\x00\x00\x00\x00\x01\x00\x01\x98\xf8\ +\x00\x00\x05\x98\x00\x00\x00\x00\x00\x01\x00\x01\x93\x11\ \x00\x00\x01\x90LO8\x08\ -\x00\x00\x05\xe6\x00\x00\x00\x00\x00\x01\x00\x01\xa8\x19\ +\x00\x00\x05\xe6\x00\x00\x00\x00\x00\x01\x00\x01\xa22\ \x00\x00\x01\x90K\xe3\xbe\xa0\ \x00\x00\x03R\x00\x02\x00\x00\x00\x04\x00\x00\x00-\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x04\xbe\x00\x01\x00\x00\x00\x01\x00\x01v+\ \x00\x00\x01\x90\x13\xdd\x17\xd4\ -\x00\x00\x05\xc4\x00\x01\x00\x00\x00\x01\x00\x01\x9d\xfd\ +\x00\x00\x05\xc4\x00\x01\x00\x00\x00\x01\x00\x01\x98\x16\ \x00\x00\x01\x90\x01\x93J\xb0\ \x00\x00\x04\xe0\x00\x01\x00\x00\x00\x01\x00\x01\x7f\x1d\ \x00\x00\x01\x90\x18\xf5\x014\ @@ -7620,17 +7525,17 @@ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x04\x98\x00\x01\x00\x00\x00\x01\x00\x01s\xda\ \x00\x00\x01\x90LRh&\ -\x00\x00\x05t\x00\x01\x00\x00\x00\x01\x00\x01\x94\x99\ +\x00\x00\x05t\x00\x01\x00\x00\x00\x01\x00\x01\x8e\xb2\ \x00\x00\x01\x90\x1b[j\x99\ \x00\x00\x05\x00\x00\x00\x00\x00\x00\x01\x00\x01\x86\x15\ \x00\x00\x01\x8f\xff^8P\ -\x00\x00\x06<\x00\x01\x00\x00\x00\x01\x00\x01\xb8\xc0\ +\x00\x00\x06<\x00\x01\x00\x00\x00\x01\x00\x01\xb2\xd9\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x06\x84\x00\x01\x00\x00\x00\x01\x00\x01\xc0\xd8\ +\x00\x00\x06\x84\x00\x01\x00\x00\x00\x01\x00\x01\xba\xf1\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x06 \x00\x01\x00\x00\x00\x01\x00\x01\xb5\xbd\ +\x00\x00\x06 \x00\x01\x00\x00\x00\x01\x00\x01\xaf\xd6\ \x00\x00\x01\x8f\xff^8_\ -\x00\x00\x06`\x00\x01\x00\x00\x00\x01\x00\x01\xbb\x83\ +\x00\x00\x06`\x00\x01\x00\x00\x00\x01\x00\x01\xb5\x9c\ \x00\x00\x01\x90K\xe3\xbe\xa0\ " diff --git a/ui/SpaceWeatherSunImagers.qml b/ui/SpaceWeatherSunImagers.qml index eb546b2..f18b8e2 100644 --- a/ui/SpaceWeatherSunImagers.qml +++ b/ui/SpaceWeatherSunImagers.qml @@ -51,14 +51,19 @@ Page { textRole: 'text' Layout.fillWidth: true model: ListModel { - ListElement { text: "SUVI 94 Å"; value: "SUVI_094" } - ListElement { text: "SUVI 131 Å"; value: "SUVI_131" } - ListElement { text: "SUVI 171 Å"; value: "SUVI_171" } - ListElement { text: "SUVI 195 Å"; value: "SUVI_195" } - ListElement { text: "SUVI 284 Å"; value: "SUVI_284" } - ListElement { text: "SUVI 304 Å"; value: "SUVI_304" } - ListElement { text: "LASCO C2"; value: "LASCO_C2" } - ListElement { text: "LASCO C3"; value: "LASCO_C3" } + ListElement { text: "94 Å - Atmospheric Imagery Assembly"; value: "AIA_094" } + ListElement { text: "131 Å - Atmospheric Imagery Assembly"; value: "AIA_131" } + ListElement { text: "171 Å - Atmospheric Imagery Assembly"; value: "AIA_171" } + ListElement { text: "193 Å - Atmospheric Imagery Assembly"; value: "AIA_193" } + ListElement { text: "303 Å - Atmospheric Imagery Assembly"; value: "AIA_304" } + ListElement { text: "335 Å - Atmospheric Imagery Assembly"; value: "AIA_335" } + ListElement { text: "1600 Å - Atmospheric Imagery Assembly"; value: "AIA_1600" } + ListElement { text: "1700 Å - Atmospheric Imagery Assembly"; value: "AIA_1700" } + ListElement { text: "Magnetogram - Helioseismic and Magnetic Imager"; value: "AIA_MAGN" } + ListElement { text: "Intensitygram - Helioseismic and Magnetic Imager"; value: "AIA_INTE" } + ListElement { text: "Dopplergram - Helioseismic and Magnetic Imager"; value: "AIA_DOPP" } + ListElement { text: "LASCO C2 - Large Angle and Spectrometric Coronagraph"; value: "LASCO_C2" } + ListElement { text: "LASCO C3 - Large Angle and Spectrometric Coronagraph"; value: "LASCO_C3" } ListElement { text: "Thematic Map"; value: "SUVI_THEMATIC" } } onActivated: { From 463a532c272d5e323228595ae637049949e7aed2 Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Thu, 27 Jun 2024 12:20:58 +0200 Subject: [PATCH 05/12] Updated documentation for SSA and Sun Imagers --- docs/space_weather/SSA.md | 35 ++++++++++++++ docs/space_weather/imagers.md | 87 +++++++++++++++++++++++++++++++++++ mkdocs.yml | 2 + 3 files changed, 124 insertions(+) create mode 100644 docs/space_weather/SSA.md create mode 100644 docs/space_weather/imagers.md diff --git a/docs/space_weather/SSA.md b/docs/space_weather/SSA.md new file mode 100644 index 0000000..1252531 --- /dev/null +++ b/docs/space_weather/SSA.md @@ -0,0 +1,35 @@ +# Solar Synoptic Analysis + +Synoptic maps of the solar surface are drawn each day by SWPC forecasters, providing forecasters with a broad outline of solar surface features. These maps were started on June 2, 1972 and have been produced daily since then. + +!!! quote "Source" + The Solar Synoptic Analysis is courtesy of the Space Weather Prediction Center (SWPC) part of the National Oceanic and Atmospheric Administration (NOAA), located in Boulder, Colorado. + +## How to Read + +### Active Regions +Active regions are localized magnetic fields on the Sun. Areas with strong or intense magnetic fields provide energy for solar flares and coronal mass ejections (CMEs), so accurate forecasting of space weather activity requires an accurate picture of these regions.. Active regions are given official numbers by SWPC, and the drawings include the probabilities of C, M, and X class flares for the next 24 hours associated with each active region, along with a proton event probability. + +### Coronal Holes +Coronal holes are single polarity magnetic regions that are the source of high speed solar winds which drive magnetospheric activity. Coronal holes are the most common cause of geomagnetic storms. Coronal holes have historically been identified from He I 10830A ground-based observations. The boundaries of coronal holes are shown on the synoptic drawings as lines with hash marks on the coronal hole side of the boundary line. + +### Neutral Lines +Large magnetic field structures of one magnetic polarity have a ‘neutral line’ at the boundary of the different magnetic polarities of the fields. Neutral lines are associated with flaring in active regions, and filaments/prominences are often associated with the neutral lines on a quiet sun. Neutral lines appear as dashed lines on the synoptic drawings and the forecaster indicates the polarity of the magnetic field on either side of the neutral line with + (positive) and – (negative) signs. + +### Plages +Plages make up most of an Active Region, and appear bright in conjunction with the dark sunspots. Plages have strong magnetic fields but disorganized magnetic fields, unlike the highly organized fields of sunspots. In the synoptic drawings, plages are colored red. It is quite normal to have regions of plage with no sunspots, which do not receive an official number since they are not considered active regions and are unlikely to produce solar flares. Plage regions are the chief source of UV variability from the sun, however. + +### Filaments and Prominences +Highly-stable regions of high density gas in the low density corona are called filaments. When these occur near the limb and can be seen protruding from the corona, often in spectacular fashion, they are called prominences. When they erupt they can be a geomagnetic storm threat, but the eruptions are usually slow and don’t often drive large storms. The filaments and prominences are drawn as outlines with hash marks. + +## Solar Coordinates +- Lt: The current Carrington longitude line (north to south) at solar center disk. +- Bt: Referred to as the B-angle. The angle measured from the current position of Earth within its tilted (inclined) orbit, compared to the Sun’s equator. It ranges between + or – 7.23 degrees. +- Pt: Referred to as the position angle. Essentially, the current angle between Earth’s geocentric north pole and the Sun’s rotational north pole. The range is between + or – 26.31 degrees. +- Returning Carringtons: Refers to the next 3 days of returning Carrington longitude lines to the east limb of the Sun. + +## Spot Group Labeling +Spot groups are labeled with their assigned NOAA SWPC number. Underneath that number are four probability numbers (from 1 to 100 %) for C-class flares, M-class flares, X-class flares, and energetic proton events. + +## Coronal Hole Labeling +Coronal holes are labeled with their assigned number. Underneath that number is a plus or minus sign representing the polarity of the coronal hole. Beside that figure is a number from 1 to 4 representing confidence of coronal hole analysis (4=good; 3=fair; 2=poor; 1=uncertain). diff --git a/docs/space_weather/imagers.md b/docs/space_weather/imagers.md new file mode 100644 index 0000000..5b61dc4 --- /dev/null +++ b/docs/space_weather/imagers.md @@ -0,0 +1,87 @@ +# Sun Imagers + +## Atmospheric Imagery Assembly +### 94 Å +This channel (as well as AIA 131) is designed to study solar flares. It measures extremely hot temperatures around 6 million Kelvin (10.8 million F). It can take images every 2 seconds (instead of 10) in a reduced field of view in order to look at flares in more detail. + +- **Where:** Flaring regions of the corona +- **Wavelength:** 94 angstroms (0.0000000094 m) = Extreme Ultraviolet/soft X-rays +- **Primary ions seen:** 17 times ionized iron (Fe XVIII) +- **Characteristic temperature:** 6 million K (10.8 million F) + +### 131 Å +This channel (as well as AIA 094) is designed to study solar flares. It measures extremely hot temperatures around 10 million K (18 million F), as well as cool plasmas around 400,000 K (720,000 F). It can take images every 2 seconds (instead of 10) in a reduced field of view in order to look at flares in more detail. + +- **Where:** Flaring regions of the corona +- **Wavelength:** 131 angstroms (0.0000000131 m) = Extreme Ultraviolet +- **Primary ions seen:** 20 and 7 times ionized iron (Fe VIII, Fe XXI) +- **Characteristic temperatures:** 10 million K (18 million F) + +### 171 Å +This channel is especially good at showing coronal loops - the arcs extending off of the Sun where plasma moves along magnetic field lines. The brightest spots seen here are locations where the magnetic field near the surface is exceptionally strong. + +- **Where:** Quiet corona and upper transition region +- **Wavelength:** 171 angstroms (0.0000000171 m) = Extreme Ultraviolet +- **Primary ions seen:** 8 times ionized iron (Fe IX) +- **Characteristic temperature:** 1 million K (1.8 million F) + +### 193 Å +This channel highlights the outer atmosphere of the Sun - called the corona - as well as hot flare plasma. Hot active regions, solar flares, and coronal mass ejections will appear bright here. The dark areas - called coronal holes - are places where very little radiation is emitted, yet are the main source of solar wind particles. + +- **Where:** Corona and hot flare plasma +- **Wavelength:** 193 angstroms (0.0000000193 m) = Extreme Ultraviolet +- **Primary ions seen:** 11 times ionized iron (Fe XII) +- **Characteristic temperature:** 1.25 million K (2.25 million F) + +### 303 Å +This channel is especially good at showing areas where cooler dense plumes of plasma (filaments and prominences) are located above the visible surface of the Sun. Many of these features either can't be seen or appear as dark lines in the other channels. The bright areas show places where the plasma has a high density. + +- **Where:** Upper chromosphere and lower transition region +- **Wavelength:** 304 angstroms (0.0000000304 m) = Extreme Ultraviolet +- **Primary ions seen:** singly ionized helium (He II) +- **Characteristic temperature:** 50,000 K (90,000 F) + +### 335 Å +This channel (as well as AIA 211) highlights the active region of the outer atmosphere of the Sun - the corona. Active regions, solar flares, and coronal mass ejections will appear bright here. The dark areas - or coronal holes - are places where very little radiation is emitted, yet are the main source of solar wind particles. + +- **Where:** Active regions of the corona +- **Wavelength:** 335 angstroms (0.0000000335 m) = Extreme Ultraviolet +- **Primary ions seen:** 15 times ionized iron (Fe XVI) +- **Characteristic temperature:** 2.8 million K (5 million F) + +### 1600 Å +This channel (as well as AIA 1700) often shows a web-like pattern of bright areas that highlight places where bundles of magnetic fields lines are concentrated. However, small areas with a lot of field lines will appear black, usually near sunspots and active regions. + +- **Where:** Transition region and upper photosphere +- **Wavelength:** 1600 angstroms (0.00000016 m) = Far Ultraviolet +- **Primary ions seen:** thrice ionized carbon (C IV) and Continuum +- **Characteristic temperatures:** 6,000 K (11,000 F), and 100,000 K (180,000 F) + +### 1700 Å +This channel (as well as AIA 1600) often shows a web-like pattern of bright areas that highlight places where bundles of magnetic fields lines are concentrated. However, small areas with a lot of field lines will appear black, usually near sunspots and active regions. + +- **Where:** Temperature minimum and photosphere +- **Wavelength:** 1700 angstroms (0.00000017 m) = Far Ultraviolet +- **Primary ions seen:** Continuum +- **Characteristic temperature:** 6,000 K (11,000 F) + +## Helioseismic and Magnetic Imager +### Magnetogram +Magnetograms show maps of the magnetic field on the Sun’s surface. The HMI instrument uses the Zeeman effect to measure the intensity of the magnetic field component along the line of sight by making use of the circularly polarized spectral line. The color chart of the magnetic field along the line of sight is designed to visually show both high and low values. Intensities less than 24G are shades of gray. Positive values of the field are green and blue. Negative values are yellow and red. Regions with a weak field appear mainly in yellow or green. Progressively positive values range from dark green to light green (at 236 G). Negative values range from light yellow to orange (at -236G). There is a strong discontinuity in the coloration at 236G. Positive or negative sunspots and other regions with an intense field appear blue or red with dark umbrae. There are 254 colors arranged symmetrically around 0. The 127 positive values include 2 grays tending toward dark, 13 greens toward light, and 110 blues toward dark. The 127 negative values include 2 grays tending toward light, 18 yellows toward dark, and 107 reds toward dark. Nominally, each color indicates a range of about 11.81 G, and the coloration altogether spans the range between -1500 G and 1500 G + +### Intensitygram +HMI samples the Fe I absorption line at 6173.3 Å at six points, assuming that the "pure" profile of the Fe I line is Gaussian and the transmission profiles are delta functions, the first and second Fourier coefficients of the Fe I line profile can be calculated, and Doppler velocity estimation can be performed. An estimate of the intensity in the continuum is obtained by "reconstructing" the solar line from the Doppler offset and the thickness and depth of the line. + +### Dopplergram +HMI camera 2 takes 72 images to construct a single Doppler diagram. Six images are taken at six positions across the spectral line at 6173.3 Å. Each image is taken in two polarization states, circularly polarized to the right (RCP or Stokes I-V) and circularly polarized to the left (LCP or Stokes I+V). Assuming that the absorption line is Gaussian and the transmission profiles of the HMI filter are delta functions, Fourier coefficients are calculated and then used to estimate the magnetic field B along the line of sight. + +## Large Angle and Spectrometric Coronagraph + +### LASCO C1 (NOT AVAILABLE) +A Fabry–Pérot interferometer coronagraph imaging from 1.1 to 3 solar radii, non-functional since the 24 June 1998 SOHO Mission Interruption + +### LASCO C2 (orange) +A white light coronagraph imaging from 1.5 to 6 solar radii + +### LASCO C3 (blue) +A white light coronagraph imaging from 3.7 to 30 solar radii diff --git a/mkdocs.yml b/mkdocs.yml index f05c4b2..345c9d8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -73,6 +73,8 @@ nav: - Forecasts: 'space_weather/forecasts.md' - DRAP: 'space_weather/drap.md' - Aurora: 'space_weather/aurora.md' + - SSA: 'space_weather/SSA.md' + - Sun Imagers: 'space_weather/imagers.md' - Signal Analysis: - Autocorrelation (ACF): 'acf_analysis.md' - FAQ: 'faq.md' From 2cbeec6af32e93275d2697f2fc87bfaf9c8975f0 Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Thu, 27 Jun 2024 12:34:01 +0200 Subject: [PATCH 06/12] Added possibility to activate additionl printings aimed to debug for qt plugins --- artemis/utils/ui_utils.py | 2 ++ config/qtquickcontrols2.conf | 3 +++ 2 files changed, 5 insertions(+) diff --git a/artemis/utils/ui_utils.py b/artemis/utils/ui_utils.py index bb3d560..d36d05d 100644 --- a/artemis/utils/ui_utils.py +++ b/artemis/utils/ui_utils.py @@ -19,3 +19,5 @@ def set_ui(): os.environ['QT_ENABLE_GLYPH_CACHE_WORKAROUND'] = '1' os.environ['QML_USE_GLYPHCACHE_WORKAROUND'] = '1' + + os.environ['QT_DEBUG_PLUGINS'] = CONFIGURE_QT.value('Develop', 'debug_plugin', '0') diff --git a/config/qtquickcontrols2.conf b/config/qtquickcontrols2.conf index 0268295..d5e5534 100644 --- a/config/qtquickcontrols2.conf +++ b/config/qtquickcontrols2.conf @@ -8,3 +8,6 @@ accent=Green [Database] autoload=0 + +[Develop] +debug_plugin=0 From 53a7a1dda2b06793da6f844d171c30e13accf558 Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Fri, 11 Oct 2024 01:23:14 +0200 Subject: [PATCH 07/12] Update --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76aa243..dab7c54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ ### Added - Created a setting panel for the audio player - Selection of the audio output device. Closes [#4](https://github.com/AresValley/Artemis/issues/4) -- Added the following (advanced) products to the space weather module [#53](https://github.com/AresValley/Artemis/issues/53): +- Added the following (advanced) products to the space weather module. Closes [#53](https://github.com/AresValley/Artemis/issues/53): - Sun Synoptic Analysis (SAS) - GOES Solar Ultraviolet Imager (SUVI), all wavelenght (94 Å, 131 Å, 171 Å, 195 Å, 284 Å, 304 Å) - GOES Thematic Map (from SUVI) From 7a696451f0e18f44fdaab881bf73841a3310f705 Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Sun, 20 Oct 2024 19:13:40 +0200 Subject: [PATCH 08/12] Updated dependencies and docs --- building/Linux/build_linux.sh | 2 +- building/Windows/build_windows.ps1 | 2 +- docs/installation.md | 2 +- requirements.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/building/Linux/build_linux.sh b/building/Linux/build_linux.sh index 098e7a4..3e4fbc4 100644 --- a/building/Linux/build_linux.sh +++ b/building/Linux/build_linux.sh @@ -4,7 +4,7 @@ echo "Building Linux target ..." echo "Installing requirements ..." pip install -r requirements.txt -pip install nuitka==2.3 +pip install nuitka==2.4.10 echo "Building with Nuitka ..." python -m nuitka app.py \ diff --git a/building/Windows/build_windows.ps1 b/building/Windows/build_windows.ps1 index a049dff..6881437 100644 --- a/building/Windows/build_windows.ps1 +++ b/building/Windows/build_windows.ps1 @@ -2,7 +2,7 @@ Write-Output "Building Windows target" Write-Output "Installing requirements ..." pip install -r requirements.txt -pip install nuitka==2.3 +pip install nuitka==2.4.10 Write-Output "Building with Nuitka ..." python -m nuitka app.py ` diff --git a/docs/installation.md b/docs/installation.md index b4768fa..4fe36a7 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -15,7 +15,7 @@ 1. On Linux, the xcb plugin is utilized to supply the essential functionality required for Qt GUI and Qt Widgets to operate on [X11](https://doc.qt.io/qt-6/linux-requirements.html). On some Linux distributions the required dependencies are already met, but in many cases, you will need to install them. To install the dependencies use: ``` bash title="Debian-based distro (Ubuntu, Mint, Pop! OS, Kali, ...)" - sudo apt install libxcb-cursor0 + sudo apt install libxcb-* ``` 2. Download `Artemis-Linux-x86_64-4.x.x.tar` in the Assets menu from the [:material-download: LATEST RELEASE](https://github.com/AresValley/Artemis/releases) and extract the tarball archive in a folder of your choice. diff --git a/requirements.txt b/requirements.txt index f397b97..1477e95 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -PySide6==6.7.1 +PySide6==6.8.0.1 requests==2.32.3 packaging==24.1 From f67ee9bc92ac320710400fb3a7409c3087f6d755 Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Sun, 20 Oct 2024 19:22:25 +0200 Subject: [PATCH 09/12] Bumpt to python 3.12, updated action files and changelog --- .github/workflows/linux.yml | 4 ++-- .github/workflows/macOS.yml | 6 +++--- .github/workflows/windows.yml | 4 ++-- CHANGELOG.md | 7 +++++-- artemis/utils/constants.py | 2 +- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index aaa50e2..8f5b7c3 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -6,7 +6,7 @@ on: artemis_version: description: 'Version' required: true - default: '4.0.0' + default: '4.1.0' type: string jobs: @@ -19,7 +19,7 @@ jobs: - name: Setup python uses: actions/setup-python@v5 with: - python-version: '3.11' + python-version: '3.12' - name: Build and package run: sh ./building/Linux/build_linux.sh diff --git a/.github/workflows/macOS.yml b/.github/workflows/macOS.yml index d73b52b..cd1d9ef 100644 --- a/.github/workflows/macOS.yml +++ b/.github/workflows/macOS.yml @@ -6,12 +6,12 @@ on: artemis_version: description: 'Version' required: true - default: '4.0.0' + default: '4.1.0' type: string jobs: build-macos-x86_64: - runs-on: macos-11 + runs-on: macos-12 steps: - name: Check out code uses: actions/checkout@v4 @@ -19,7 +19,7 @@ jobs: - name: Setup python uses: actions/setup-python@v5 with: - python-version: '3.11' + python-version: '3.12' - name: Build and package run: sh ./building/macOS/build_macos.sh diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 6602235..bedcd52 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -6,7 +6,7 @@ on: artemis_version: description: 'Version' required: true - default: '4.0.0' + default: '4.1.0' type: string jobs: @@ -19,7 +19,7 @@ jobs: - name: Setup python uses: actions/setup-python@v5 with: - python-version: '3.11' + python-version: '3.12' - name: Build and package run: ./building/Windows/build_windows.ps1 diff --git a/CHANGELOG.md b/CHANGELOG.md index dab7c54..03c3729 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ ## [Unreleased] +## [4.1.0] - 2024-10-20 + ### Added - Created a setting panel for the audio player - Selection of the audio output device. Closes [#4](https://github.com/AresValley/Artemis/issues/4) @@ -13,7 +15,7 @@ - GOES Solar Ultraviolet Imager (SUVI), all wavelenght (94 Å, 131 Å, 171 Å, 195 Å, 284 Å, 304 Å) - GOES Thematic Map (from SUVI) - Large Angle and Spectrometric Coronagraph (LASCO), both C2/C3 range for optical imaging of the Sun’s corona - - Helioseismic and Magnetic Imager (HMI): Magnetogram, Intensitygram, Dopplergram (TODO) + - Helioseismic and Magnetic Imager (HMI): Magnetogram, Intensitygram, Dopplergram ### Fixed - Fixed margins for downloader window @@ -133,7 +135,8 @@ First release. -[Unreleased]: https://github.com/AresValley/Artemis/compare/v4.0.5...HEAD +[Unreleased]: https://github.com/AresValley/Artemis/compare/v4.1.0...HEAD +[4.1.0]: https://github.com/AresValley/Artemis/compare/v4.0.5...v4.1.0 [4.0.5]: https://github.com/AresValley/Artemis/compare/v4.0.3...v4.0.5 [4.0.3]: 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 diff --git a/artemis/utils/constants.py b/artemis/utils/constants.py index f0219bd..8b880c1 100644 --- a/artemis/utils/constants.py +++ b/artemis/utils/constants.py @@ -10,7 +10,7 @@ class Constants(): APPLICATION_NAME = 'Artemis' ORGANIZATION_NAME = 'AresValley' ORGANIZATION_DOMAIN = 'aresvalley.com' - APPLICATION_VERSION = '4.0.5' + APPLICATION_VERSION = '4.1.0' SQL_NAME = 'data.sqlite' From f2f5c1dc3dd93fec97edda47bcf005338ad56334 Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Sun, 20 Oct 2024 19:30:53 +0200 Subject: [PATCH 10/12] Fixed Windows logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 00a8c08..255b462 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ ![GitHub Release](https://img.shields.io/github/v/release/AresValley/Artemis-DB?label=DB%20version) ![GitHub repo file or directory count (in path)](https://img.shields.io/github/directory-file-count/aresvalley/artemis-db/static?type=dir&label=DB%20signals) -![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/aresvalley/artemis/windows.yml?logo=windows&logoColor=white) +![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/aresvalley/artemis/windows.yml?logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIiB0ZXh0LXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIiBpbWFnZS1yZW5kZXJpbmc9Im9wdGltaXplUXVhbGl0eSIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIHZpZXdCb3g9IjAgMCA1MTIgNTEyLjAyNiI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJub256ZXJvIiBkPSJNMjY5LjMxMiA1MTIuMDI1SDUxMlYyNjkuMzM3SDI2OS4zMTJ2MjQyLjY4OHpNMCA1MTIuMDI1aDI0Mi42ODhWMjY5LjMzN0gwdjI0Mi42ODh6bTI2OS4zMTItMjY5LjMzN0g1MTJWMEgyNjkuMzEydjI0Mi42ODh6TTAgMjQyLjY4OGgyNDIuNjg4VjBIMHYyNDIuNjg4eiIvPjwvc3ZnPg==) ![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/aresvalley/artemis/linux.yml?logo=linux&logoColor=white) ![Static Badge](https://img.shields.io/badge/build-soon%E2%84%A2-yellow?logo=apple) ![Static Badge](https://img.shields.io/badge/build-soon%E2%84%A2-yellow?logo=raspberrypi) From 32a9ecddbff09f3806cf2d8bc154f023d5af0cf1 Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Sun, 20 Oct 2024 19:47:27 +0200 Subject: [PATCH 11/12] Final bump to 4.1.0 --- building/Windows/build_windows.ps1 | 4 ++-- building/Windows/windows_installer.iss | 2 +- building/macOS/build_macos.sh | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/building/Windows/build_windows.ps1 b/building/Windows/build_windows.ps1 index 6881437..02edea1 100644 --- a/building/Windows/build_windows.ps1 +++ b/building/Windows/build_windows.ps1 @@ -25,8 +25,8 @@ python -m nuitka app.py ` --force-stdout-spec="{TEMP}\artemis.out.log" ` --windows-company-name=Aresvalley.com ` --windows-product-name=Artemis ` - --windows-file-version=4.0.5 ` - --windows-product-version=4.0.5 ` + --windows-file-version=4.1.0 ` + --windows-product-version=4.1.0 ` --windows-file-description=Artemis ` --windows-icon-from-ico=images\artemis_icon.ico diff --git a/building/Windows/windows_installer.iss b/building/Windows/windows_installer.iss index 7a18930..acf87bc 100644 --- a/building/Windows/windows_installer.iss +++ b/building/Windows/windows_installer.iss @@ -1,5 +1,5 @@ #define MyAppName "Artemis" -#define MyAppVersion "4.0.5" +#define MyAppVersion "4.1.0" #define MyAppPublisher "AresValley" #define MyAppURL "https://www.aresvalley.com/" #define MyAppExeName "artemis.exe" diff --git a/building/macOS/build_macos.sh b/building/macOS/build_macos.sh index 098bac9..54547ee 100644 --- a/building/macOS/build_macos.sh +++ b/building/macOS/build_macos.sh @@ -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.5 + --macos-app-version=4.1.0 echo "Building Linux target finished." From 2513f5d1e566b81ffa3d421e123df98c8246eac3 Mon Sep 17 00:00:00 2001 From: Marco Dalla Tiezza Date: Sun, 20 Oct 2024 19:59:39 +0200 Subject: [PATCH 12/12] Updated resources and docs --- artemis/resources.py | 14 +++++++------- docs/index.md | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/artemis/resources.py b/artemis/resources.py index 0a897b2..f223d55 100644 --- a/artemis/resources.py +++ b/artemis/resources.py @@ -1,6 +1,6 @@ # Resource object code (Python 3) # Created by: object code -# Created by: The Resource Compiler for Qt version 6.7.2 +# Created by: The Resource Compiler for Qt version 6.8.0 # WARNING! All changes made in this file will be lost! from PySide6 import QtCore @@ -7486,7 +7486,7 @@ \x00\x00\x01r\x00\x00\x00\x00\x00\x01\x00\x01\x1c\x98\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x01\x1d\x90\ -\x00\x00\x01\x90K\xe3\xbe\xa0\ +\x00\x00\x01\x92\x85r6\xc9\ \x00\x00\x01\xb4\x00\x00\x00\x00\x00\x01\x00\x01 F\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x01\x0e\x00\x00\x00\x00\x00\x01\x00\x01\x16\xe5\ @@ -7502,15 +7502,15 @@ \x00\x00\x036\x00\x01\x00\x00\x00\x01\x00\x01>\x85\ \x00\x00\x01\x90\x13\xddn\xea\ \x00\x00\x05:\x00\x01\x00\x00\x00\x01\x00\x01\x8b>\ -\x00\x00\x01\x90V\xcd\xfaZ\ +\x00\x00\x01\x92\xaa\xe6\x03\xaf\ \x00\x00\x06\x08\x00\x00\x00\x00\x00\x01\x00\x01\xaa&\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x03l\x00\x01\x00\x00\x00\x01\x00\x01I\x06\ \x00\x00\x01\x8f\xff^8_\ \x00\x00\x05\x98\x00\x00\x00\x00\x00\x01\x00\x01\x93\x11\ -\x00\x00\x01\x90LO8\x08\ +\x00\x00\x01\x92\x85r6\xc9\ \x00\x00\x05\xe6\x00\x00\x00\x00\x00\x01\x00\x01\xa22\ -\x00\x00\x01\x90K\xe3\xbe\xa0\ +\x00\x00\x01\x92\x85r6\xc9\ \x00\x00\x03R\x00\x02\x00\x00\x00\x04\x00\x00\x00-\ \x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x04\xbe\x00\x01\x00\x00\x00\x01\x00\x01v+\ @@ -7524,7 +7524,7 @@ \x00\x00\x04p\x00\x00\x00\x00\x00\x01\x00\x01n\x15\ \x00\x00\x01\x8f\xff^8P\ \x00\x00\x04\x98\x00\x01\x00\x00\x00\x01\x00\x01s\xda\ -\x00\x00\x01\x90LRh&\ +\x00\x00\x01\x92\x85r6\xc9\ \x00\x00\x05t\x00\x01\x00\x00\x00\x01\x00\x01\x8e\xb2\ \x00\x00\x01\x90\x1b[j\x99\ \x00\x00\x05\x00\x00\x00\x00\x00\x00\x01\x00\x01\x86\x15\ @@ -7536,7 +7536,7 @@ \x00\x00\x06 \x00\x01\x00\x00\x00\x01\x00\x01\xaf\xd6\ \x00\x00\x01\x8f\xff^8_\ \x00\x00\x06`\x00\x01\x00\x00\x00\x01\x00\x01\xb5\x9c\ -\x00\x00\x01\x90K\xe3\xbe\xa0\ +\x00\x00\x01\x92\x85r6\xc9\ " def qInitResources(): diff --git a/docs/index.md b/docs/index.md index ee11bdb..b987bf4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -11,4 +11,4 @@ title: Documentation [Artemis Homepage](https://www.aresvalley.com){ .md-button }

-**Artemis** is a software designed to assist **radio frequency (RF) signal identification and storage**. It simplifies real-time spectrum analysis by leveraging one of the most extensive and community-driven databases, containing over **500 recognized signals**. This comprehensive software solution allows users to collect RF signals with specific parameters such as frequency, bandwidth, modulation, etc. Users can also store spectrum waterfalls, audio samples, and all types of documents for future reference. Artemis provides a robust platform to manage a wide range of RF data with precision and ease. +**Artemis** is a software designed to assist **radio frequency (RF) signal identification and storage**. It simplifies real-time spectrum analysis by leveraging one of the most extensive and community-driven databases, containing over **520 recognized signals**. This comprehensive software solution allows users to collect RF signals with specific parameters such as frequency, bandwidth, modulation, etc. Users can also store spectrum waterfalls, audio samples, and all types of documents for future reference. Artemis provides a robust platform to manage a wide range of RF data with precision and ease.