diff options
author | Campbell Barton <ideasman42@gmail.com> | 2009-10-27 05:54:25 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2009-10-27 05:54:25 +0300 |
commit | 1c1659eb286b369ffe6ba99207c42611159f24bb (patch) | |
tree | 02eaa19cedf10a01978db892e89d585dcce1707e /release | |
parent | 641072a769cc7bff4d69945c71f536c5b0394bc9 (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.py | 8 | ||||
-rw-r--r-- | release/scripts/io/import_3ds.py | 8 | ||||
-rw-r--r-- | release/scripts/modules/bpy_ops.py | 63 | ||||
-rw-r--r-- | release/scripts/ui/space_info.py | 10 |
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): |