Exemple #1
0
    def loadElements(self, rows):
        """
        elemplist - a list of (elem obj, field). *field=None* means separator.
        """
        self.beginResetModel()
        self.clear()
        for i, (elem, fld) in enumerate(rows):
            pvsp = elem.pv(field=fld, handle="setpoint")
            for j, pv in enumerate(pvsp):
                self._pvidx.setdefault(pv, [])
                self._pvidx[pv].append((i, C_VAL_SP, j))
            pvrb = elem.pv(field=fld, handle="readback")
            for j, pv in enumerate(pvrb):
                self._pvidx.setdefault(pv, [])
                self._pvidx[pv].append((i, C_VAL_RB, j))

            # one data record, pvs are all list
            rec = [elem, fld, [None] * len(pvsp), [None] * len(pvrb)]
            for j, s in enumerate(self._unitsys):
                rec.append([None] * len(pvrb))
            self._data.append(tuple(rec))
            self._pvlst.append(pvsp + pvrb)

        self._block = [0]
        k = 0
        for i in range(1, len(rows)):
            elem, fld = rows[i]
            if elem != rows[i - 1][0]:
                k += 1
            self._block.append(k)

        self._cadata = CaDataMonitor(wait=0.0)
        for pv in self._pvidx.keys():
            #self._cadata.addHook(pv, self._ca_update)
            self._cadata.addHook(pv, self._ca_update)
        self._cadata.addPv(self._pvidx.keys())

        self.endResetModel()
        self._cadata.start()