astrodatagui: setup on click for the 2 lists and plot the data

This commit is contained in:
2024-03-08 11:55:10 +01:00
parent f84a61f028
commit 04b3c6253e
+48 -2
View File
@@ -1,6 +1,8 @@
from PyQt5 import QtWidgets, uic from PyQt5 import QtWidgets, uic
import os import os
from astroquery.simbad import Simbad
from .db.StarsDB import StarDB from .db.StarsDB import StarDB
from .ui.NewStarDialog import NewStarDialog from .ui.NewStarDialog import NewStarDialog
@@ -16,14 +18,18 @@ class AstrodataGUI(QtWidgets.QMainWindow):
self.actionExit.triggered.connect(self.actionExitTriggered) self.actionExit.triggered.connect(self.actionExitTriggered)
self.btAddNew.clicked.connect(self.addNewClicked) self.btAddNew.clicked.connect(self.addNewClicked)
self.listDownloaded.itemClicked.connect(self.starSelected)
self.listSequences.itemClicked.connect(self.sequenceSelected)
self.show() self.show()
self.loadDB() self.loadDB()
self.updateStarList()
def loadDB(self): def loadDB(self):
try: try:
self.starDB = StarDB.getInstance(DEFAULT_DB) self.starDB: StarDB = StarDB.getInstance(DEFAULT_DB)
except Exception as e: except Exception as e:
self.showErrorMessage("DB Connection failed", self.showErrorMessage("DB Connection failed",
f"Could not connect to local database file {DEFAULT_DB}\n\ f"Could not connect to local database file {DEFAULT_DB}\n\
@@ -49,4 +55,44 @@ class AstrodataGUI(QtWidgets.QMainWindow):
def addNewClicked(self): def addNewClicked(self):
diag = NewStarDialog() diag = NewStarDialog()
diag.exec() if not diag.exec():
return
try:
mainName = Simbad.query_object(diag.starIdentifier)["MAIN_ID"][0]
except:
self.showErrorMessage("Main Identifier Error", "Failed to grab main identifier, aborting...")
return
try:
altNames = Simbad.query_objectids(mainName)
except:
self.showErrorMessage("Identifier Error", "Failed to grab all identifiers, aborting...")
return
self.starDB.insertStar(mainName, altNames, diag.productManifest)
self.updateStarList()
def updateStarList(self):
self.listDownloaded.clear()
for star in self.starDB.getAllStars():
self.listDownloaded.addItem(star[0])
def updateSequenceList(self, sourceSeqTouple):
self.listSequences.clear()
for sT in sourceSeqTouple:
self.listSequences.addItem(f"{sT[0]} - {sT[1]}")
def starSelected(self, item):
seqs = self.starDB.getStarData(item.text())
self.updateSequenceList(seqs)
def sequenceSelected(self, item):
seqText = item.text().split(" - ")
mainName = self.listDownloaded.currentItem().text()
source = seqText[0]
seq = seqText[1]
filePath = self.starDB.getFilePath(mainName, source, seq)
self.flaredetectorPreview.plotFitsFile(filePath)