5

I'd like the contents of this custom editor panel to persist with the file.

I can't seem to get my PropertyGroup or even a StringProperty to save with the blend file.

class PG_mypg(bpy.types.PropertyGroup):
    custString = bpy.props.StringProperty(name="custString")

bpy.utils.register_class(PG_mypg)

# this adds it but it doesn't persist in the file
bpy.types.WindowManager.myPanelSettings = bpy.props.PointerProperty(type=PG_mypg)

# even this one doesn't save either
bpy.types.WindowManager.myCustString = bpy.props.StringProperty(name="customString")

Note that I want this to be set for my window, not per object.

CodeManX
  • 29,298
  • 3
  • 89
  • 128
Ben L
  • 621
  • 6
  • 19
  • Would it be possible to add an empty object type that isn't visible in the 3d view? This is how I would do it in unity3d. – Ben L Apr 10 '14 at 14:50

1 Answers1

6

Custom properties to the bpy.types.WindowManager type don't serialize to .blend
(as if options={'SKIP_SAVE'} was set).

Your options are to use

  • bpy.types.Scene, but you will need to chose one scene instance to store the actual properties, and if that scene is deleted, they will be gone
  • Serialization: serialize your data to a string and make it the text body of a new text datablock. Give the datablock a name that starts with a dot, e.g. .my-data, to hide it in the interface. It is less likely to be removed like a scene this way.
  • AddonPreferences or saving to a custom configuration file - if the data is relevant to not just the current .blend, but the local Blender installation
CodeManX
  • 29,298
  • 3
  • 89
  • 128
  • 5
    The comment about 'SKIP_SAVE' isnt really correct, SKIP_SAVE is for operators not to reuse previous settings. – ideasman42 Apr 10 '14 at 03:58
  • I like the suggestion for AddonPreferences but it doesn't solve this problem in particular. – Ben L Apr 10 '14 at 17:27
  • @ideasman42: Interesting, this isn't documented anywhere it seems. BenL: That's right, it really depends on the use case. – CodeManX Apr 10 '14 at 17:33
  • I'm just going to add a utility to copy or reference the data block from one scene to another. That is the hack that seems the least hacky. – Ben L Apr 16 '14 at 15:12