def set_data(self, data): if type(data) == SqlTable and data.approx_len() > LARGE_TABLE: data = data.sample_time(DEFAULT_SAMPLE_TIME) if data and (not bool(data) or len(data.domain) == 0): data = None if checksum(data) == checksum(self.data): return # check if the new data set is the same as the old one self.__ignore_updates = True self.closeContext() same_domain = self.data and data and data.domain.checksum() == self.data.domain.checksum() # preserve attribute choice if the domain is the same self.data = data if not same_domain: self.shown_attributes = None self.openContext(self.data) self.__ignore_updates = False