forked from M-Labs/artiq
applets/simple: filter mods
This commit is contained in:
parent
81a86b2b04
commit
7661b37c19
@ -34,6 +34,7 @@ class SimpleApplet:
|
|||||||
group.add_argument("--embed", default=None, type=int,
|
group.add_argument("--embed", default=None, type=int,
|
||||||
help="embed main widget into existing window")
|
help="embed main widget into existing window")
|
||||||
self._arggroup_datasets = self.argparser.add_argument_group("datasets")
|
self._arggroup_datasets = self.argparser.add_argument_group("datasets")
|
||||||
|
self.dataset_args = set()
|
||||||
|
|
||||||
def add_dataset(self, name, help=None, required=True):
|
def add_dataset(self, name, help=None, required=True):
|
||||||
kwargs = dict()
|
kwargs = dict()
|
||||||
@ -43,9 +44,12 @@ class SimpleApplet:
|
|||||||
self._arggroup_datasets.add_argument(name, **kwargs)
|
self._arggroup_datasets.add_argument(name, **kwargs)
|
||||||
else:
|
else:
|
||||||
self._arggroup_datasets.add_argument("--" + name, **kwargs)
|
self._arggroup_datasets.add_argument("--" + name, **kwargs)
|
||||||
|
self.dataset_args.add(name)
|
||||||
|
|
||||||
def args_init(self):
|
def args_init(self):
|
||||||
self.args = self.argparser.parse_args()
|
self.args = self.argparser.parse_args()
|
||||||
|
self.datasets = {getattr(self.args, arg.replace("-", "_"))
|
||||||
|
for arg in self.dataset_args}
|
||||||
|
|
||||||
def quamash_init(self):
|
def quamash_init(self):
|
||||||
app = QtWidgets.QApplication([])
|
app = QtWidgets.QApplication([])
|
||||||
@ -76,11 +80,24 @@ class SimpleApplet:
|
|||||||
self.data = data
|
self.data = data
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
def filter_mod(self, mod):
|
||||||
|
if mod["action"] == "init":
|
||||||
|
return True
|
||||||
|
if mod["path"]:
|
||||||
|
return mod["path"][0] in self.datasets
|
||||||
|
elif mod["action"] in {"setitem", "delitem"}:
|
||||||
|
return mod["key"] in self.datasets
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
def flush_mod_buffer(self):
|
def flush_mod_buffer(self):
|
||||||
self.main_widget.data_changed(self.data, self.mod_buffer)
|
self.main_widget.data_changed(self.data, self.mod_buffer)
|
||||||
del self.mod_buffer
|
del self.mod_buffer
|
||||||
|
|
||||||
def sub_mod(self, mod):
|
def sub_mod(self, mod):
|
||||||
|
if not self.filter_mod(mod):
|
||||||
|
return
|
||||||
|
|
||||||
if self.args.update_delay:
|
if self.args.update_delay:
|
||||||
if hasattr(self, "mod_buffer"):
|
if hasattr(self, "mod_buffer"):
|
||||||
self.mod_buffer.append(mod)
|
self.mod_buffer.append(mod)
|
||||||
|
Loading…
Reference in New Issue
Block a user