# gpl authors: nfloyd, Francesco Siddi from bpy.types import PropertyGroup from bpy.props import ( BoolProperty, BoolVectorProperty, CollectionProperty, FloatProperty, FloatVectorProperty, EnumProperty, IntProperty, IntVectorProperty, PointerProperty, StringProperty, ) class POVData(PropertyGroup): distance: FloatProperty() location: FloatVectorProperty( subtype='TRANSLATION' ) rotation: FloatVectorProperty( subtype='QUATERNION', size=4 ) name: StringProperty() perspective: EnumProperty( items=[('PERSP', '', ''), ('ORTHO', '', ''), ('CAMERA', '', '')] ) lens: FloatProperty() clip_start: FloatProperty() clip_end: FloatProperty() lock_cursor: BoolProperty() cursor_location: FloatVectorProperty() perspective_matrix_md5: StringProperty() camera_name: StringProperty() camera_type: StringProperty() lock_object_name: StringProperty() class LayersData(PropertyGroup): view_layers = BoolVectorProperty(size=20) scene_layers = BoolVectorProperty(size=20) lock_camera_and_layers: BoolProperty() name: StringProperty() class DisplayData(PropertyGroup): name: StringProperty() viewport_shade: EnumProperty( items=[('BOUNDBOX', 'BOUNDBOX', 'BOUNDBOX'), ('WIREFRAME', 'WIREFRAME', 'WIREFRAME'), ('SOLID', 'SOLID', 'SOLID'), ('TEXTURED', 'TEXTURED', 'TEXTURED'), ('MATERIAL', 'MATERIAL', 'MATERIAL'), ('RENDERED', 'RENDERED', 'RENDERED')] ) show_only_render: BoolProperty() show_outline_selected: BoolProperty() show_all_objects_origin: BoolProperty() show_relationship_lines: BoolProperty() show_floor: BoolProperty() show_axis_x: BoolProperty() show_axis_y: BoolProperty() show_axis_z: BoolProperty() grid_lines: IntProperty() grid_scale: FloatProperty() grid_subdivisions: IntProperty() material_mode: StringProperty() show_textured_solid: BoolProperty() quad_view: BoolProperty() lock_rotation: BoolProperty() show_sync_view: BoolProperty() use_box_clip: BoolProperty() class ViewData(PropertyGroup): pov = PointerProperty( type=POVData ) layers = PointerProperty( type=LayersData ) display = PointerProperty( type=DisplayData ) name: StringProperty() class StoredViewsData(PropertyGroup): pov_list: CollectionProperty( type=POVData ) layers_list: CollectionProperty( type=LayersData ) display_list: CollectionProperty( type=DisplayData ) view_list: CollectionProperty( type=ViewData ) mode: EnumProperty( name="Mode", items=[('VIEW', "View", "3D View settings"), ('POV', "POV", "POV settings"), ('LAYERS', "Layers", "Layers settings"), ('DISPLAY', "Display", "Display settings")], default='VIEW' ) current_indices = IntVectorProperty( size=4, default=[-1, -1, -1, -1] ) view_modified: BoolProperty( default=False )