[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