52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
import sys, os
|
|
|
|
# Path setup — works both as `python gui/main.py` and `python -m gui.main`
|
|
for _p in [
|
|
os.path.dirname(os.path.dirname(os.path.abspath(__file__))), # nmea_client/
|
|
os.path.dirname(os.path.abspath(__file__)), # nmea_client/gui/
|
|
]:
|
|
if _p not in sys.path:
|
|
sys.path.insert(0, _p)
|
|
|
|
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget
|
|
from PyQt5.QtGui import QIcon
|
|
|
|
from data_model import ReceiverManager
|
|
from connection_tab import ConnectionTab
|
|
from sky_tab import SkyTab
|
|
from plot_tab import PlotTab
|
|
|
|
|
|
class MainWindow(QMainWindow):
|
|
def __init__(self, model: ReceiverManager):
|
|
super().__init__()
|
|
self._model = model
|
|
self.setWindowTitle("GNSS Monitor")
|
|
self.resize(1400, 900)
|
|
|
|
tabs = QTabWidget()
|
|
tabs.addTab(ConnectionTab(model), "Connection")
|
|
tabs.addTab(SkyTab(model), "Sky")
|
|
tabs.addTab(PlotTab(model), "Plot")
|
|
self.setCentralWidget(tabs)
|
|
|
|
def closeEvent(self, event):
|
|
for rid in list(self._model.get_receiver_ids()):
|
|
self._model.disconnect_receiver(rid)
|
|
event.accept()
|
|
|
|
|
|
def main():
|
|
app = QApplication(sys.argv)
|
|
app.setStyle('Fusion')
|
|
|
|
model = ReceiverManager()
|
|
win = MainWindow(model)
|
|
win.show()
|
|
|
|
sys.exit(app.exec_())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|