[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32526] trunk/blender/release/scripts: Add System Info function to the Help menu.

Nathan Letwory nathan at letworyinteractive.com
Sat Oct 16 19:26:40 CEST 2010


Revision: 32526
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32526
Author:   jesterking
Date:     2010-10-16 19:26:40 +0200 (Sat, 16 Oct 2010)

Log Message:
-----------
Add System Info function to the Help menu.

Users can use this to quickly get info about their system for bug reports.

Modified Paths:
--------------
    trunk/blender/release/scripts/op/wm.py
    trunk/blender/release/scripts/ui/space_info.py

Added Paths:
-----------
    trunk/blender/release/scripts/modules/sys_info.py

Added: trunk/blender/release/scripts/modules/sys_info.py
===================================================================
--- trunk/blender/release/scripts/modules/sys_info.py	                        (rev 0)
+++ trunk/blender/release/scripts/modules/sys_info.py	2010-10-16 17:26:40 UTC (rev 32526)
@@ -0,0 +1,103 @@
+# ##### 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+
+# classes for extracting info from blenders internal classes
+
+import bpy
+import bgl
+
+import sys
+
+def cutPoint(text, length):
+	"Returns position of the last space found before 'length' chars"
+	l = length
+	c = text[l]
+	while c != ' ':
+		l -= 1
+		if l == 0: return length # no space found
+		c = text[l]
+	return l
+
+def textWrap(text, length = 70):
+	lines = []
+	while len(text) > 70:
+		cpt = cutPoint(text, length)
+		line, text = text[:cpt], text[cpt + 1:]
+		lines.append(line)
+	lines.append(text)
+	return lines
+
+def write_sysinfo(op):
+	output_filename = "system-info.txt"
+	warnings = 0
+	notices = 0
+
+	if output_filename in bpy.data.texts.keys():
+	    output = bpy.data.texts[output_filename]
+	    output.clear()
+	else:
+	    output = bpy.data.texts.new(name=output_filename)
+
+	header = '= Blender {} System Information =\n'.format(bpy.app.version_string)
+	lilies = '{}\n\n'.format(len(header)*'=')
+	firstlilies = '{}\n'.format(len(header)*'=')
+	output.write(firstlilies)
+	output.write(header)
+	output.write(lilies)
+
+	# build info
+	output.write('\nBlender:\n')
+	output.write(lilies)
+	output.write('version {}, revision {}. {}\n'.format(bpy.app.version_string, bpy.app.build_revision, bpy.app.build_type))
+	output.write('build date: {}, {}\n'.format(bpy.app.build_date, bpy.app.build_time))
+	output.write('platform: {}\n'.format(bpy.app.build_platform))
+	output.write('binary path: {}\n\n'.format(bpy.app.binary_path))
+
+	# python info
+	output.write('\nPython:\n')
+	output.write(lilies)
+	output.write('version: {}\n'.format(sys.version))
+	output.write('paths:\n')
+	for p in sys.path:
+	    output.write('\t{}\n'.format(p))
+
+	output.write('\nDirectories:\n')
+	output.write(lilies)
+	output.write('scripts: {}\n'.format(bpy.utils.script_paths()))
+	output.write('user scripts: {}\n'.format(bpy.utils.user_script_path()))
+	output.write('datafiles: {}\n'.format(bpy.utils.user_resource('DATAFILES')))
+	output.write('config: {}\n'.format(bpy.utils.user_resource('CONFIG')))
+	output.write('scripts : {}\n'.format(bpy.utils.user_resource('SCRIPTS')))
+	output.write('autosave: {}\n'.format(bpy.utils.user_resource('AUTOSAVE')))
+	output.write('tempdir: {}\n'.format(bpy.app.tempdir))
+
+	output.write('\nOpenGL\n')
+	output.write(lilies)
+	output.write('renderer:\t{}\n'.format(bgl.glGetString(bgl.GL_RENDERER)))
+	output.write('vendor:\t\t{}\n'.format(bgl.glGetString(bgl.GL_VENDOR)))
+	output.write('version:\t{}\n'.format(bgl.glGetString(bgl.GL_VERSION)))
+	output.write('extensions:\n')
+
+	glext = bgl.glGetString(bgl.GL_EXTENSIONS)
+	glext = textWrap(glext, 70)
+	for l in glext:
+	    output.write('\t\t{}\n'.format(l))
+	
+	op.report({'INFO'}, "System information generated in 'system-info.txt'")

Modified: trunk/blender/release/scripts/op/wm.py
===================================================================
--- trunk/blender/release/scripts/op/wm.py	2010-10-16 15:53:01 UTC (rev 32525)
+++ trunk/blender/release/scripts/op/wm.py	2010-10-16 17:26:40 UTC (rev 32526)
@@ -779,7 +779,16 @@
         bpy.utils.keyconfig_set(self.filepath)
         return {'FINISHED'}
 
+class WM_OT_sysinfo(bpy.types.Operator):
+    '''Generate System Info'''
+    bl_idname = "wm.sysinfo"
+    bl_label = "System Info"
 
+    def execute(self, context):
+        import sys_info
+        sys_info.write_sysinfo(self)
+        return {'FINISHED'}
+
 def register():
     pass
 

Modified: trunk/blender/release/scripts/ui/space_info.py
===================================================================
--- trunk/blender/release/scripts/ui/space_info.py	2010-10-16 15:53:01 UTC (rev 32525)
+++ trunk/blender/release/scripts/ui/space_info.py	2010-10-16 17:26:40 UTC (rev 32526)
@@ -345,6 +345,7 @@
         layout.separator()
         layout.operator("wm.url_open", text="Python API Reference", icon='URL').url = "http://www.blender.org/documentation/blender_python_api_%s/contents.html" % "_".join(str(v) for v in bpy.app.version)
         layout.operator("help.operator_cheat_sheet", icon='TEXT')
+        layout.operator("wm.sysinfo", icon='TEXT')
         layout.separator()
         layout.operator("anim.update_data_paths", text="FCurve/Driver 2.54 fix", icon='HELP')
         layout.separator()





More information about the Bf-blender-cvs mailing list