def change_repeat(self, path, text): """ Called when the base address of an instance has been edited in the InstanceList """ node = self.get_iter(path) try: int(text) self.set_value(node, InstMdl.RPT_COL, text) except ValueError: LOGGER.error('Illegal repeat count: "%s"' % text)
def change_base(self, path, text): """ Called when the base address of an instance has been edited in the InstanceList """ node = self.get_iter(path) try: self.set_value(node, InstMdl.SORT_COL, int(text, 16)) self.set_value(node, InstMdl.BASE_COL, text) except ValueError: LOGGER.error('Illegal base address: "%s"' % text)
def change_repeat_offset(self, path, text): """ Called when the base address of an instance has been edited in the InstanceList """ node = self.get_iter(path) try: value = int(text, 16) self.set_value(node, InstMdl.OFF_COL, "%x" % value) except ValueError: LOGGER.error('Illegal repeat offset column: "%s"' % text)
def visible_cb(self, model, iter): if self._text == "": return True try: search_text = self._text.upper() for i in self._fields: text = model.get_value(iter, i).upper() if text.find(search_text) != -1: return True return False except: LOGGER.error("Error filtering") return False
def change_repeat_offset(self, path, text): """ Called when the base address of an instance has been edited in the InstanceList """ node = self.get_iter(path) try: value = int(text, 16) self.set_value(node, InstMdl.OFF_COL, "{0:x}".format(value)) self.callback() except ValueError: LOGGER.error('Illegal repeat offset column: "{0}"'.format(text)) obj = self.get_value(node, InstMdl.OBJ_COL) if obj: obj.repeat_offset = int(text, 16)
def change_repeat(self, path, text): """ Called when the base address of an instance has been edited in the InstanceList """ node = self.get_iter(path) try: int(text) self.set_value(node, InstMdl.RPT_COL, text) self.callback() except ValueError: LOGGER.error('Illegal repeat count: "{0}"'.format(text)) obj = self.get_value(node, InstMdl.OBJ_COL) if obj: obj.repeat = int(text)
def change_base(self, path, text): """ Called when the base address of an instance has been edited in the InstanceList """ node = self.get_iter(path) try: self.set_value(node, InstMdl.SORT_COL, int(text, 16)) self.set_value(node, InstMdl.BASE_COL, text) self.callback() except ValueError: LOGGER.error('Illegal base address: "{0}"'.format(text)) obj = self.get_value(node, InstMdl.OBJ_COL) if obj: obj.base = int(text, 16)
def change_inst(self, path, text): """ Called when the ID of an instance has been edited in the InstanceList """ items = [] node = self.get_iter_root() while node: items.append(self.get_value(node, 0)) node = self.iter_next(node) if text in set(items): LOGGER.error('"%s" has already been used as a group name' % text) else: node = self.get_iter(path) self.set_value(node, InstMdl.INST_COL, text)
def _name_changed(self, cell, path, new_text, col): """ Called when the name field is changed. """ if len(path) != 1: return current_maps = set([i.name for i in self._prj.get_address_maps()]) if new_text in current_maps: LOGGER.error('"%s" has already been used as an address map name' % new_text) else: node = self._model.get_iter(path) name = self._model.get_value(node, AddrMapMdl.NAME_COL) self._prj.change_address_map_name(name, new_text) self._model[path][AddrMapMdl.NAME_COL] = new_text self._prj.set_modified()
def populate(self): """ Loads the data from the project """ if self._prj is None: return self._model.clear() for base in self._prj.get_address_maps(): if base.width not in INT2SIZE: LOGGER.error( 'Illegal width ({0}) for address map "{1}"'.format( base.width, base.name)) base = AddrMapData(base.name, base.base, 4, base.fixed, base.uvm) data = (base.name, "{0:x}".format(base.base), base.fixed, base.uvm, INT2SIZE[base.width], "") node = self._model.append(row=data)
def populate(self): """ Loads the data from the project """ if self._prj is None: return self._model.clear() for base in self._prj.get_address_maps(): if base.width not in INT2SIZE: LOGGER.error('Illegal width (%d) for address map "%s"' % (base.width, base.name)) base = AddrMapData(base.name, base.base, 4, base.fixed) data = (base.name, "%x" % base.base, base.fixed, INT2SIZE[base.width]) node = self._model.append(None, row=data) for name in self._prj.get_address_map_groups(base.name): self._model.append(node, row=[name, "", False, ""])
def _base_changed(self, cell, path, new_text, col): """ Called when the base address field is changed. """ if len(path) != 1: return try: value = int(new_text, 16) except ValueError: LOGGER.error('Illegal address: "{0}"'.format(new_text)) return if new_text: node = self._model.get_iter(path) name = self._model.get_value(node, AddrMapMdl.NAME_COL) fixed = self._model.get_value(node, AddrMapMdl.FIXED_COL) uvm = self._model.get_value(node, AddrMapMdl.UVM_COL) width = STR2SIZE[self._model.get_value(node, AddrMapMdl.WIDTH_COL)] self._prj.set_address_map(name, value, width, fixed, uvm) self._model[path][AddrMapMdl.BASE_COL] = new_text self._prj.modified = True
def change_inst(self, path, text): """ Called when the ID of an instance has been edited in the InstanceList """ items = [] node = self.get_iter_root() while node: items.append(self.get_value(node, InstMdl.INST_COL)) node = self.iter_next(node) if text in set(items): LOGGER.error( '"{0}" has already been used as a group name'.format(text)) else: node = self.get_iter(path) self.set_value(node, InstMdl.INST_COL, text) self.callback() obj = self.get_value(node, InstMdl.OBJ_COL) if obj: obj.name = text
def change_inst(self, path, text): """ Called when the ID of an instance has been edited in the InstanceList """ # get the previous value, bail if it is the same as the new value i2 = self.get_iter(path) old_value = self.get_value(i2, InstMdl.INST_COL) if old_value == text: return items = [] node = self.get_iter_root() while node: items.append(self.get_value(node, InstMdl.INST_COL)) node = self.iter_next(node) if text in set(items): LOGGER.error( '"{0}" has already been used as a group name'.format(text)) return node = self.get_iter(path) self.set_value(node, InstMdl.INST_COL, text) self.callback() obj = self.get_value(node, InstMdl.OBJ_COL) if obj: obj.name = text if len(path.split(":")) == 1: self.project.change_subsystem_name(old_value, text) else: pnode = self.get_iter(path.split(":")[0]) parent = self.get_value(pnode, InstMdl.INST_COL) self.project.change_instance_name(parent, old_value, text)
def errmsg(msg): """Displays an error message""" LOGGER.error(msg)