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()


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to