def _load_classes(self, project): clazze_objs = project.object_manager.get_objects(editor_types.CLAZZ_NAME_CLAZZ) for clazz_obj in clazze_objs: atstruct, data = clazz_obj.clazz.atstruct, clazz_obj.raw_data name = data['name'] attrs = self._parse_struct_attrs(data['attrs'], project) exporter = data.get('exporter', u'') verifier = data.get('verifier', u'') # # Add reserved attrs: tags & export # attrs.insert(0, Attr('tags', ATList(ATStr(1), unique=True), 'TAGS') ) # attrs.insert(0, Attr('export', ATBool(0), 'export?') ) # # # move "name" & "id" to front # for attr_name in ['name', 'id']: # for attr in attrs: # if attr.name == attr_name: # attrs.remove(attr) # attrs.insert(0, attr) # break str_template = clazz_obj.get_attr_value('str_template') struct = Struct(name, attrs, str_template=str_template, exporter=exporter, verifier=verifier) clazz = Clazz(ATStruct(struct)) # extra settings clazz.unique_attrs = clazz_obj.get_attr_value('unique_attrs',) # clazz.name_attr = clazz_obj.get_attr_value('name_attr') clazz.max_number = clazz_obj.get_attr_value('max_number') clazz.min_number = clazz_obj.get_attr_value('min_number') icon = clazz_obj.get_attr_value('icon') if icon: # icon path is relative to editor project root icon = util.normpath(icon) if not os.path.isabs(icon): icon = util.normpath(os.path.join(const.PROJECT_FOLDER_TYPE, icon)) clazz.icon = icon self._clazzes[clazz.name] = clazz
def get_attr_data(self): from structer import util path = util.normpath(self.GetPath()) return get_relative_path(path, self.project.path)