[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24103] trunk/blender: - Right click menu can open links directly to API reference docs ( rna and operators)
Campbell Barton
ideasman42 at gmail.com
Tue Oct 27 03:54:27 CET 2009
Revision: 24103
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24103
Author: campbellbarton
Date: 2009-10-27 03:54:25 +0100 (Tue, 27 Oct 2009)
Log Message:
-----------
- 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)
Modified Paths:
--------------
trunk/blender/release/scripts/io/export_3ds.py
trunk/blender/release/scripts/io/import_3ds.py
trunk/blender/release/scripts/modules/bpy_ops.py
trunk/blender/release/scripts/ui/space_info.py
trunk/blender/source/blender/blenkernel/intern/sequence.c
trunk/blender/source/blender/editors/interface/interface_anim.c
trunk/blender/source/blender/editors/interface/interface_handlers.c
trunk/blender/source/blender/editors/interface/interface_intern.h
trunk/blender/source/blender/editors/interface/interface_utils.c
trunk/blender/source/blender/editors/screen/screen_edit.c
trunk/blender/source/blender/editors/screen/screen_ops.c
trunk/blender/source/blender/editors/space_buttons/buttons_context.c
trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
trunk/blender/source/blender/editors/space_view3d/view3d_header.c
trunk/blender/source/blender/editors/space_view3d/view3d_ops.c
trunk/blender/source/blender/editors/space_view3d/view3d_view.c
trunk/blender/source/blender/editors/transform/transform.c
trunk/blender/source/blender/editors/transform/transform_conversions.c
trunk/blender/source/blender/editors/transform/transform_generics.c
trunk/blender/source/blender/makesdna/DNA_view3d_types.h
trunk/blender/source/blender/makesrna/RNA_access.h
trunk/blender/source/blender/makesrna/intern/rna_access.c
trunk/blender/source/blender/makesrna/intern/rna_wm_api.c
trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
Modified: trunk/blender/release/scripts/io/export_3ds.py
===================================================================
--- trunk/blender/release/scripts/io/export_3ds.py 2009-10-27 00:25:38 UTC (rev 24102)
+++ trunk/blender/release/scripts/io/export_3ds.py 2009-10-27 02:54:25 UTC (rev 24103)
@@ -1091,9 +1091,9 @@
# 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 @@
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)
Modified: trunk/blender/release/scripts/io/import_3ds.py
===================================================================
--- trunk/blender/release/scripts/io/import_3ds.py 2009-10-27 00:25:38 UTC (rev 24102)
+++ trunk/blender/release/scripts/io/import_3ds.py 2009-10-27 02:54:25 UTC (rev 24103)
@@ -1122,9 +1122,9 @@
'''
-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 @@
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:
Modified: trunk/blender/release/scripts/modules/bpy_ops.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_ops.py 2009-10-27 00:25:38 UTC (rev 24102)
+++ trunk/blender/release/scripts/modules/bpy_ops.py 2009-10-27 02:54:25 UTC (rev 24103)
@@ -311,7 +311,68 @@
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)
bpy.ops.add(WM_OT_context_set_boolean)
@@ -324,3 +385,5 @@
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)
Modified: trunk/blender/release/scripts/ui/space_info.py
===================================================================
--- trunk/blender/release/scripts/ui/space_info.py 2009-10-27 00:25:38 UTC (rev 24102)
+++ trunk/blender/release/scripts/ui/space_info.py 2009-10-27 02:54:25 UTC (rev 24103)
@@ -241,14 +241,8 @@
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):
Modified: trunk/blender/source/blender/blenkernel/intern/sequence.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequence.c 2009-10-27 00:25:38 UTC (rev 24102)
+++ trunk/blender/source/blender/blenkernel/intern/sequence.c 2009-10-27 02:54:25 UTC (rev 24103)
@@ -3425,7 +3425,7 @@
for(seq= seqbasep->first; seq; seq= seq->next) {
if(seq->tmp) {
for(seq_other= seqbasep->first; seq_other; seq_other= seq_other->next) {
- if(seq_overlap(seq, seq_other)) {
+ if(!seq_other->tmp && seq_overlap(seq, seq_other)) {
if(dir=='L') {
offset= MIN2(offset, seq_other->startdisp - seq->enddisp);
}
Modified: trunk/blender/source/blender/editors/interface/interface_anim.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_anim.c 2009-10-27 00:25:38 UTC (rev 24102)
+++ trunk/blender/source/blender/editors/interface/interface_anim.c 2009-10-27 02:54:25 UTC (rev 24103)
@@ -240,11 +240,9 @@
int length;
if(but->rnapoin.data && but->rnaprop) {
- pup= uiPupMenuBegin(C, RNA_property_ui_name(but->rnaprop), 0);
- layout= uiPupMenuLayout(pup);
-
+
length= RNA_property_array_length(&but->rnapoin, but->rnaprop);
-
+
if(but->flag & UI_BUT_ANIMATED_KEY) {
if(length) {
uiItemBooleanO(layout, "Replace Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1);
@@ -263,20 +261,20 @@
uiItemBooleanO(layout, "Insert Keyframes", 0, "ANIM_OT_insert_keyframe_button", "all", 1);
uiItemBooleanO(layout, "Insert Single Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0);
}
- else
+ else
uiItemBooleanO(layout, "Insert Keyframe", 0, "ANIM_OT_insert_keyframe_button", "all", 0);
}
-
+
if(but->flag & UI_BUT_DRIVEN) {
uiItemS(layout);
-
+
if(length) {
uiItemBooleanO(layout, "Delete Drivers", 0, "ANIM_OT_remove_driver_button", "all", 1);
uiItemBooleanO(layout, "Delete Single Driver", 0, "ANIM_OT_remove_driver_button", "all", 0);
}
else
uiItemBooleanO(layout, "Delete Driver", 0, "ANIM_OT_remove_driver_button", "all", 0);
-
+
uiItemO(layout, "Copy Driver", 0, "ANIM_OT_copy_driver_button");
if (ANIM_driver_can_paste())
uiItemO(layout, "Paste Driver", 0, "ANIM_OT_paste_driver_button");
@@ -284,21 +282,21 @@
else if(but->flag & UI_BUT_ANIMATED_KEY);
else if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) {
uiItemS(layout);
-
+
if(length) {
uiItemBooleanO(layout, "Add Drivers", 0, "ANIM_OT_add_driver_button", "all", 1);
uiItemBooleanO(layout, "Add Single Driver", 0, "ANIM_OT_add_driver_button", "all", 0);
}
else
uiItemBooleanO(layout, "Add Driver", 0, "ANIM_OT_add_driver_button", "all", 0);
-
- if (ANIM_driver_can_paste())
+
+ if (ANIM_driver_can_paste())
uiItemO(layout, "Paste Driver", 0, "ANIM_OT_paste_driver_button");
}
-
+
if(RNA_property_animateable(&but->rnapoin, but->rnaprop)) {
uiItemS(layout);
-
+
if(length) {
uiItemBooleanO(layout, "Add All to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 1);
uiItemBooleanO(layout, "Add Single to Keying Set", 0, "ANIM_OT_add_keyingset_button", "all", 0);
@@ -309,11 +307,15 @@
uiItemO(layout, "Remove from Keying Set", 0, "ANIM_OT_remove_keyingset_button");
}
}
-
+
uiItemS(layout);
-
+
uiItemO(layout, "Copy Data Path", 0, "ANIM_OT_copy_clipboard_button");
-
+
+ uiItemS(layout);
+
+ //ui_but_doc_menu(layout, &but->rnapoin, but->rnaprop);
+
uiPupMenuEnd(C, pup);
}
}
Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c 2009-10-27 00:25:38 UTC (rev 24102)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 2009-10-27 02:54:25 UTC (rev 24103)
@@ -51,6 +51,7 @@
#include "ED_screen.h"
#include "ED_util.h"
+#include "ED_keyframing.h"
#include "UI_interface.h"
@@ -3378,6 +3379,145 @@
return block;
}
+static int ui_but_menu(bContext *C, uiBut *but)
+{
+ uiPopupMenu *pup;
+ uiLayout *layout;
+ int length;
+ char *name;
+
+ if((but->rnapoin.data && but->rnaprop)==0 && but->optype==NULL)
+ return 0;
+
+
+ if(but->rnaprop)
+ name= RNA_property_ui_name(but->rnaprop);
+ else if (but->optype)
+ name= but->optype->name;
+ else
+ name= "<needs_name>"; // XXX - should never happen.
+
+ pup= uiPupMenuBegin(C, name, 0);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list