def _save_settings(self): '''Save the settings in the attributes of the DataGroup object''' inslist = dict_to_ordered_tuples(qt.instruments.get_instruments()) for (iname, ins) in inslist: # self.group.attrs['Instrument'] = iname parlist = dict_to_ordered_tuples(ins.get_parameters()) for (param, popts) in parlist: self.group.attrs['%s - %s' % (iname, param)] = str( ins.get(param))
def _write_settings_file(self): fn = self.get_settings_filepath() f = open(fn, 'w+') f.write('Filename: %s\n' % self._filename) f.write('Timestamp: %s\n\n' % self._timestamp) inslist = dict_to_ordered_tuples(qt.instruments.get_instruments()) for (iname, ins) in inslist: f.write('Instrument: %s\n' % iname) parlist = dict_to_ordered_tuples(ins.get_parameters()) for (param, popts) in parlist: f.write('\t%s: %s\n' % (param, ins.get(param, query=False))) f.close()
def save_instrument_settings_file(parent): h5settingsgroup = parent.create_group('instrument_settings') inslist = dict_to_ordered_tuples(qt.instruments.get_instruments()) for (iname, ins) in inslist: if 'remote' in ins.get_options()['tags']: continue insgroup = h5settingsgroup.create_group(iname) parlist = dict_to_ordered_tuples(ins.get_parameters()) #print iname for (param, popts) in parlist: try: insgroup.attrs[param] = ins.get(param, query=False) except (ValueError, TypeError): insgroup.attrs[param] = str(ins.get(param, query=False))
def _add_parameters(self): rows = 0 parameters = self._instrument.get_shared_parameters() for name, opts in dict_to_ordered_tuples(parameters): self._table.resize(rows + 1, 2) label = gtk.Label(name) self._table.attach(label, 0, 1, rows, rows + 1) entry = self._create_entry(name, opts) self._table.attach(entry, 1, 2, rows, rows + 1) self._param_info[name] = {"entry": entry, "flags": opts["flags"]} hbox = gtk.HBox() if opts["flags"] & qt.constants.FLAG_SET: if "units" in opts: unitlabel = gtk.Label(opts["units"]) self._table.attach(unitlabel, 2, 3, rows, rows + 1) but = gtk.Button(_L("Set")) but.connect("clicked", self._set_clicked, name) if not isinstance(entry, ComboEntry): entry.connect("activate", self._set_clicked, name) hbox.pack_start(but) if opts["flags"] & qt.constants.FLAG_GET or opts["flags"] & qt.constants.FLAG_SOFTGET: but = gtk.Button(_L("Get")) but.connect("clicked", self._get_clicked, name) hbox.pack_start(but) self._table.attach(hbox, 3, 4, rows, rows + 1) rows += 1
def _add_parameters(self): rows = 0 parameters = self._instrument.get_shared_parameters() for name, opts in dict_to_ordered_tuples(parameters): self._table.resize(rows + 1, 2) label = gtk.Label(name) self._table.attach(label, 0, 1, rows, rows + 1) entry = self._create_entry(name, opts) self._table.attach(entry, 1, 2, rows, rows + 1) self._param_info[name] = { 'entry': entry, 'flags': opts['flags'], } hbox = gtk.HBox() if opts['flags'] & qt.constants.FLAG_SET: but = gtk.Button(_L('Set')) but.connect('clicked', self._set_clicked, name) if not isinstance(entry, ComboEntry) and not isinstance(entry, MultiStringEntry): entry.connect('activate', self._set_clicked, name) hbox.pack_start(but) if opts['flags'] & qt.constants.FLAG_GET or \ opts['flags'] & qt.constants.FLAG_SOFTGET: but = gtk.Button(_L('Get')) but.connect('clicked', self._get_clicked, name) hbox.pack_start(but) self._table.attach(hbox, 2, 3, rows, rows + 1) rows += 1
def set_instrument(self, ins): if type(ins) == types.StringType: # This should perhaps go through qt.get_instrument_proxy() ins = helper.find_object('instruments_%s' % ins) if self._instrument == ins: return True if ins is not None: self._insname = ins.get_name() else: self._insname = '' self._instrument = ins self._param_list.clear() if ins is not None: self._param_list.append([TEXT_NONE]) self._instrument.connect('parameter-added', self._parameter_added_cb) for (name, options) in misc.dict_to_ordered_tuples(ins.get_shared_parameters()): if len(self._types) > 0 and options['type'] not in self._types: continue if options['flags'] & self._flags: self._param_list.append([name]) else: self._param_list.clear()
def _add_parameters(self): rows = 0 parameters = self._instrument.get_shared_parameters() for name, opts in dict_to_ordered_tuples(parameters): self._table.resize(rows + 1, 2) label = gtk.Label(name) self._table.attach(label, 0, 1, rows, rows + 1) entry = self._create_entry(name, opts) self._table.attach(entry, 1, 2, rows, rows + 1) self._param_info[name] = { 'entry': entry, 'flags': opts['flags'], } hbox = gtk.HBox() if opts['flags'] & qt.constants.FLAG_SET: but = gtk.Button(_L('Set')) but.connect('clicked', self._set_clicked, name) if not isinstance(entry, ComboEntry) and not isinstance( entry, MultiStringEntry): entry.connect('activate', self._set_clicked, name) hbox.pack_start(but) if opts['flags'] & qt.constants.FLAG_GET or \ opts['flags'] & qt.constants.FLAG_SOFTGET: but = gtk.Button(_L('Get')) but.connect('clicked', self._get_clicked, name) hbox.pack_start(but) self._table.attach(hbox, 2, 3, rows, rows + 1) rows += 1
def __init__(self, ins, param, opts, autoupdate=True): self._instrument = ins self._parameter = param self._dirty = False self._model = gtk.ListStore(gobject.TYPE_STRING) if 'format_map' in opts: self._map = opts['format_map'] for k, v in dict_to_ordered_tuples(self._map): self._model.append([str(v)]) elif 'option_list' in opts: self._map = opts['option_list'] for k in self._map: self._model.append([str(k)]) gtk.ComboBox.__init__(self, model=self._model) cell = gtk.CellRendererText() self.pack_start(cell, True) self.add_attribute(cell, 'text', 0) self._autoupdate = autoupdate if self._autoupdate: ins.connect('changed', self._parameter_changed_cb) self.connect('changed', self._combo_changed_cb)
def set_instrument(self, ins): if type(ins) == types.StringType: ins = qt.get_instrument_proxy(ins) if self._instrument == ins: return True if ins is not None: self._insname = ins.get_name() else: self._insname = '' self._instrument = ins self._func_list.clear() if ins is not None: self._func_list.append([TEXT_NONE, '<Nothing>']) funcs = ins.get_functions() for (name, options) in misc.dict_to_ordered_tuples(funcs): if 'doc' in options: doc = options['doc'] else: doc = '' self._func_list.append([name, doc]) else: self._func_list.clear()
def __init__(self, ins, param, opts, autoupdate=True): self._instrument = ins self._parameter = param self._dirty = False self._model = gtk.ListStore(gobject.TYPE_STRING) if "format_map" in opts: self._map = opts["format_map"] for k, v in dict_to_ordered_tuples(self._map): self._model.append([str(v)]) elif "option_list" in opts: self._map = opts["option_list"] for k in self._map: self._model.append([str(k)]) gtk.ComboBox.__init__(self, model=self._model) cell = gtk.CellRendererText() self.pack_start(cell, True) self.add_attribute(cell, "text", 0) self._autoupdate = autoupdate if self._autoupdate: ins.connect("changed", self._parameter_changed_cb) self.connect("changed", self._combo_changed_cb)
def save_instrument_settings_file(self, parent=None): if parent == None: parent = self.h5basegroup h5settingsgroup = parent.create_group('instrument_settings') inslist = dict_to_ordered_tuples(qt.instruments.get_instruments()) for (iname, ins) in inslist: insgroup = h5settingsgroup.create_group(iname) parlist = dict_to_ordered_tuples(ins.get_parameters()) for (param, popts) in parlist: try: insgroup.attrs[param] = ins.get(param, query=True) \ if 'remote' in ins.get_options()['tags'] \ else ins.get(param, query=False) except (ValueError, TypeError): insgroup.attrs[param] = str(ins.get(param, query=False))
def add_instrument(self, ins): insname = ins.get_name() if ins.get_name() in self._ins_names: return self._ins_names.append(insname) ins.connect('parameter-added', self._parameter_added_cb) params = misc.dict_to_ordered_tuples(ins.get_shared_parameters()) for param, options in params: self.add_parameter(ins, param, options=options)
def _write_header(self): self._file.write('# Filename: %s\n' % self._filename) self._file.write('# Timestamp: %s\n\n' % self._timestamp) for line in self._comment: self._file.write('# %s\n' % line) i = 1 for dim in self._dimensions: self._file.write('# Column %d:\n' % i) for key, val in dict_to_ordered_tuples(dim): self._file.write('#\t%s: %s\n' % (key, val)) i += 1 self._file.write('\n')
def save_current_settings(self, parent=None, name=''): if parent == None: parent = h5.HDF5Data(name='OKOTech_DM' + '_' + name) flush = True instrument_grp = parent.create_group('instrument_settings') #inslist = dict_to_ordered_tuples(qt.instruments.get_instruments()) #for (iname, ins) in inslist: insgroup = instrument_grp.create_group(self._name) parlist = dict_to_ordered_tuples(self.get_parameters()) for (param, popts) in parlist: try: insgroup.attrs[param] = self.get(param, query=True) \ if 'remote' in self.get_options()['tags'] \ else self.get(param, query=False) except (ValueError, TypeError): insgroup.attrs[param] = str(self.get(param, query=False)) if flush: parent.flush()
def _add_functions(self): self._func_buttons = {} rows = self._table.props.n_rows functions = self._instrument.get_functions() for fname, fopts in dict_to_ordered_tuples(functions): anames = fopts['argspec']['args'] adefaults = fopts['argspec']['defaults'] for i, aname in enumerate(anames): if aname == 'self': continue if adefaults is not None and i >= len(anames) - len(adefaults): default = adefaults[i - len(anames) + len(adefaults)] else: default = '' but = gtk.Button(fname) self._func_buttons[fname] = but but.connect('clicked', self._func_clicked_cb, fname) self._table.attach(but, 0, 3, rows, rows + 1) rows += 1
def _add_functions(self): self._func_buttons = {} rows = self._table.props.n_rows functions = self._instrument.get_functions() for fname, fopts in dict_to_ordered_tuples(functions): anames = fopts["argspec"][0] adefaults = fopts["argspec"][3] for i, aname in enumerate(anames): if aname == "self": continue if adefaults is not None and i >= len(anames) - len(adefaults): default = adefaults[i - len(anames) + len(adefaults)] else: default = "" but = gtk.Button(fname) self._func_buttons[fname] = but but.connect("clicked", self._func_clicked_cb, fname) self._table.attach(but, 0, 4, rows, rows + 1) rows += 1