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:
authorCampbell Barton <ideasman42@gmail.com>2009-10-27 05:54:25 +0300
committerCampbell Barton <ideasman42@gmail.com>2009-10-27 05:54:25 +0300
commit1c1659eb286b369ffe6ba99207c42611159f24bb (patch)
tree02eaa19cedf10a01978db892e89d585dcce1707e /release
parent641072a769cc7bff4d69945c71f536c5b0394bc9 (diff)
- Right click menu can open links directly to API reference docs (rna and operators)
- Generated and uploaded api docs - http://www.blender.org/documentation/250PythonDoc - Added Edit docs menu item & operators as discussed with Mindrones, Brecht, Stani & Letterip @ bconf, needs some web backend. python operator can aparently use xml/rpc to upload docstrings. - Added operator invoke function - context.manager.invoke_props_popup(self.__operator__, event) this calls a popup for invoke by default (which intern calls execute()) - Own recent commit to game framing applied to non-camera views too. - v3d->persp is deprecated but still used in some places. - Transforming strips could overlap 1 frame if moving them below frame 0 - Transforming overlapping strips could go into an eternal loop (though overlapping strips should not exist)
Diffstat (limited to 'release')
-rw-r--r--release/scripts/io/export_3ds.py8
-rw-r--r--release/scripts/io/import_3ds.py8
-rw-r--r--release/scripts/modules/bpy_ops.py63
-rw-r--r--release/scripts/ui/space_info.py10
4 files changed, 73 insertions, 16 deletions
diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py
index 5ca7d5629d5..99913523fd3 100644
--- a/release/scripts/io/export_3ds.py
+++ b/release/scripts/io/export_3ds.py
@@ -1091,9 +1091,9 @@ def save_3ds(filename, context):
# Blender.Draw.PupMenu("Error%t|This script requires a full python installation")
# # save_3ds('/test_b.3ds')
-class EXPORT_OT_3ds(bpy.types.Operator):
+class EXPORT_OT_autodesk_3ds(bpy.types.Operator):
'''Export to 3DS file format (.3ds).'''
- __idname__ = "export.3ds"
+ __idname__ = "export.autodesk_3ds"
__label__ = 'Export 3DS'
# List of operator properties, the attributes will be assigned
@@ -1117,9 +1117,9 @@ class EXPORT_OT_3ds(bpy.types.Operator):
print("Poll")
return context.active_object != None
-bpy.ops.add(EXPORT_OT_3ds)
+bpy.ops.add(EXPORT_OT_autodesk_3ds)
# Add to a menu
import dynamic_menu
-menu_func = lambda self, context: self.layout.itemO("export.3ds", text="Autodesk 3DS...")
+menu_func = lambda self, context: self.layout.itemO("export.autodesk_3ds", text="Autodesk 3DS...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
diff --git a/release/scripts/io/import_3ds.py b/release/scripts/io/import_3ds.py
index cbd9d8948ab..da0634a26d7 100644
--- a/release/scripts/io/import_3ds.py
+++ b/release/scripts/io/import_3ds.py
@@ -1122,9 +1122,9 @@ else:
'''
-class IMPORT_OT_3ds(bpy.types.Operator):
+class IMPORT_OT_autodesk_3ds(bpy.types.Operator):
'''Import from 3DS file format (.3ds)'''
- __idname__ = "import.3ds"
+ __idname__ = "import.autodesk_3ds"
__label__ = 'Import 3DS'
# List of operator properties, the attributes will be assigned
@@ -1147,10 +1147,10 @@ class IMPORT_OT_3ds(bpy.types.Operator):
wm.add_fileselect(self.__operator__)
return ('RUNNING_MODAL',)
-bpy.ops.add(IMPORT_OT_3ds)
+bpy.ops.add(IMPORT_OT_autodesk_3ds)
import dynamic_menu
-menu_func = lambda self, context: self.layout.itemO("import.3ds", text="3D Studio (.3ds)...")
+menu_func = lambda self, context: self.layout.itemO("import.autodesk_3ds", text="3D Studio (.3ds)...")
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func)
# NOTES:
diff --git a/release/scripts/modules/bpy_ops.py b/release/scripts/modules/bpy_ops.py
index 639b9836b0c..240b0e2720a 100644
--- a/release/scripts/modules/bpy_ops.py
+++ b/release/scripts/modules/bpy_ops.py
@@ -311,6 +311,67 @@ class WM_OT_context_cycle_enum(bpy.types.Operator):
exec("context.%s=advance_enum" % self.path)
return ('FINISHED',)
+doc_id = bpy.props.StringProperty(attr="doc_id", name="Doc ID", description="ID for the documentation", maxlen= 1024, default= "")
+doc_new = bpy.props.StringProperty(attr="doc_new", name="Doc New", description="", maxlen= 1024, default= "")
+
+class WM_OT_doc_view(bpy.types.Operator):
+ '''Load online reference docs'''
+ __idname__ = "wm.doc_view"
+ __label__ = "View Documentation"
+ __props__ = [doc_id]
+ _prefix = 'http://www.blender.org/documentation/250PythonDoc'
+ def execute(self, context):
+ id_split = self.doc_id.split('.')
+ # Example url, http://www.graphicall.org/ftp/ideasman42/html/bpy.types.Space3DView-class.html#background_image
+ # Example operator http://www.graphicall.org/ftp/ideasman42/html/bpy.ops.boid-module.html#boidrule_add
+ if len(id_split) == 1: # rna, class
+ url= '%s/bpy.types.%s-class.html' % (self._prefix, id_split[0])
+ elif len(id_split) == 2: # rna, class.prop
+ class_name, class_prop = id_split
+
+ if hasattr(bpy.types, class_name.upper() + '_OT_' + class_prop):
+ url= '%s/bpy.ops.%s-module.html#%s' % (self._prefix, class_name, class_prop)
+ else:
+ url= '%s/bpy.types.%s-class.html#%s' % (self._prefix, class_name, class_prop)
+
+ else:
+ return ('PASS_THROUGH',)
+
+ import webbrowser
+ webbrowser.open(url)
+
+ return ('FINISHED',)
+
+
+class WM_OT_doc_edit(bpy.types.Operator):
+ '''Load online reference docs'''
+ __idname__ = "wm.doc_edit"
+ __label__ = "Edit Documentation"
+ __props__ = [doc_id, doc_new]
+
+ def execute(self, context):
+
+ class_name, class_prop = self.doc_id.split('.')
+
+ if self.doc_new:
+
+ if hasattr(bpy.types, class_name.upper() + '_OT_' + class_prop):
+ # operator
+ print("operator - old:'%s' -> new:'%s'" % ('<TODO>', self.doc_new))
+ else:
+ doc_orig = getattr(bpy.types, class_name).__rna__.properties[class_prop].description
+ if doc_orig != self.doc_new:
+ print("rna - old:'%s' -> new:'%s'" % (doc_orig, self.doc_new))
+ # aparently we can use xml/rpc to upload docs to an online review board
+ # Ugh, will run this on every edit.... better not make any mistakes
+
+ return ('FINISHED',)
+
+ def invoke(self, context, event):
+ wm = context.manager
+ wm.invoke_props_popup(self.__operator__, event)
+ return ('RUNNING_MODAL',)
+
bpy.ops.add(MESH_OT_delete_edgeloop)
@@ -324,3 +385,5 @@ bpy.ops.add(WM_OT_context_toggle_enum)
bpy.ops.add(WM_OT_context_cycle_enum)
bpy.ops.add(WM_OT_context_cycle_int)
+bpy.ops.add(WM_OT_doc_view)
+bpy.ops.add(WM_OT_doc_edit)
diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py
index d1e4ac13ab7..fd1c23cad3c 100644
--- a/release/scripts/ui/space_info.py
+++ b/release/scripts/ui/space_info.py
@@ -241,14 +241,8 @@ bpy.types.register(INFO_MT_help)
class HelpOperator(bpy.types.Operator):
def execute(self, context):
- try: import webbrowser
- except: webbrowser = None
-
- if webbrowser:
- webbrowser.open(self.__URL__)
- else:
- raise Exception("Operator requires a full Python installation")
-
+ import webbrowser
+ webbrowser.open(self.__URL__)
return ('FINISHED',)
class HELP_OT_manual(HelpOperator):