Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/python/rna_dump.py')
-rw-r--r--source/blender/python/rna_dump.py112
1 files changed, 112 insertions, 0 deletions
diff --git a/source/blender/python/rna_dump.py b/source/blender/python/rna_dump.py
new file mode 100644
index 00000000000..826051d9ceb
--- /dev/null
+++ b/source/blender/python/rna_dump.py
@@ -0,0 +1,112 @@
+ # ***** BEGIN GPL LICENSE BLOCK *****
+ #
+ # This program is free software; you can redistribute it and/or
+ # modify it under the terms of the GNU General Public License
+ # as published by the Free Software Foundation; either version 2
+ # of the License, or (at your option) any later version.
+ #
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with this program; if not, write to the Free Software Foundation,
+ # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ #
+ # Contributor(s): Campbell Barton
+ #
+ # #**** END GPL LICENSE BLOCK #****
+
+
+PRINT_DATA = True
+VERBOSE = False
+VERBOSE_TYPE = False
+SKIP_RECURSIVE = False
+
+
+def seek(r, txt):
+ print(txt)
+ newtxt = ''
+
+ if len(txt) > 200:
+ print ("Somthing is wrong")
+ print (txt)
+ return
+
+ type_r = type(r)
+
+ # print(type_r)
+ # print(dir(r))
+
+ # basic types
+ if type_r in (float, int, bool, type(None)):
+ if PRINT_DATA:
+ print(txt + ' -> ' + str(r))
+ return
+
+ if type_r == str:
+ if PRINT_DATA:
+ print(txt + ' -> "' + str(r) + '"')
+ return
+
+ try: keys = r.keys()
+ except: keys = None
+
+ if keys != None:
+ if PRINT_DATA:
+ print(txt + '.keys() - ' + str(r.keys()))
+
+ try: __members__ = dir(r)
+ except: __members__ = []
+
+ for item in __members__:
+ if item.startswith('__'):
+ continue
+
+ if PRINT_DATA: newtxt = txt + '.' + item
+
+ if item == 'rna_type' and VERBOSE_TYPE==False: # just avoid because it spits out loads of data
+ continue
+
+ if SKIP_RECURSIVE:
+ if item in txt:
+ if PRINT_DATA:
+ print(newtxt + ' - (skipping to avoid recursive search)')
+ continue
+
+ try: value = getattr(r, item)
+ except: value = None
+
+ seek( value, newtxt)
+
+
+ if keys:
+ for k in keys:
+ if PRINT_DATA: newtxt = txt + '["' + k + '"]'
+ seek(r.__getitem__(k), newtxt)
+
+ else:
+ try: length = len( r )
+ except: length = 0
+
+ if VERBOSE==False and length >= 4:
+ for i in (0, length-1):
+ if i>0:
+ if PRINT_DATA:
+ print((' '*len(txt)) + ' ... skipping '+str(length-2)+' items ...')
+
+ if PRINT_DATA: newtxt = txt + '[' + str(i) + ']'
+ seek(r[i], newtxt)
+ else:
+ for i in range(length):
+ if PRINT_DATA: newtxt = txt + '[' + str(i) + ']'
+ seek(r[i], newtxt)
+
+#print (dir(bpy))
+seek(bpy, 'bpy')
+
+
+#print dir(bpy)
+#import sys
+#sys.exit()