forked from M-Labs/artiq
1
0
Fork 0

draft load/save configuration

Simon Renblad 2024-04-19 16:12:50 +08:00
parent 8b105c064a
commit 2e48426bf7
1 changed files with 51 additions and 1 deletions

View File

@ -1,14 +1,17 @@
import asyncio import asyncio
import logging import logging
import textwrap import textwrap
import os
from collections import namedtuple from collections import namedtuple
from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5 import QtCore, QtWidgets, QtGui
import pyqtgraph as pg import pyqtgraph as pg
from sipyco import pyon
from artiq.coredevice.comm_moninj import CommMonInj, TTLOverride, TTLProbe from artiq.coredevice.comm_moninj import CommMonInj, TTLOverride, TTLProbe
from artiq.coredevice.ad9912_reg import AD9912_SER_CONF from artiq.coredevice.ad9912_reg import AD9912_SER_CONF
from artiq.gui.tools import LayoutWidget from artiq.gui.tools import LayoutWidget, get_open_file_name, get_save_file_name
from artiq.gui.models import DictSyncTreeSepModel from artiq.gui.models import DictSyncTreeSepModel
@ -902,6 +905,15 @@ class MoninjTreeWidget(pg.TreeWidget):
for child in child_items: for child in child_items:
self.remove_widget(child) self.remove_widget(child)
def extend(self, d):
pass
def clear(self):
pass
def export_list(self):
pass
class MonInjDock(QtWidgets.QDockWidget): class MonInjDock(QtWidgets.QDockWidget):
def __init__(self, schedule_ctl): def __init__(self, schedule_ctl):
@ -939,6 +951,44 @@ class MonInjDock(QtWidgets.QDockWidget):
def set_channels(self, handlers): def set_channels(self, handlers):
self._channel_model.update(handlers) self._channel_model.update(handlers)
def _connect_config(self, config):
pass
async def load_configuration(self):
try:
filename = await get_open_file_name(
self,
"Load configuration",
self._current_dir,
"PYON files (*.pyon);;All files (*.*)")
except asyncio.CancelledError:
return
self._current_dir = os.path.dirname(filename)
try:
configuration = pyon.load_file(filename)
connected_config = self._connect_config(configuration)
connected_config = self.dm.connect_config(configuration)
self.tree.clear()
self.tree.extend(connected_config)
except Exception:
logger.error("Failed to load moninj configuration", exc_info=True)
async def save_configuration(self):
try:
filename = await get_save_file_name(
self,
"Save configuration",
self._current_dir,
"PYON files (*.pyon);;All files (*.*)")
except asyncio.CancelledError:
return
self._current_dir = os.path.dirname(filename)
try:
configuration = self.tree.export_list()
pyon.store_file(filename, configuration)
except Exception:
logger.error("Failed to save moninj configuration", exc_info=True)
async def stop(self): async def stop(self):
if self.dm is not None: if self.dm is not None:
await self.dm.close() await self.dm.close()