[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21685] branches/blender2.5/blender: operator macro playback (run operator reports in the console)
Campbell Barton
ideasman42 at gmail.com
Sun Jul 19 02:49:44 CEST 2009
Revision: 21685
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21685
Author: campbellbarton
Date: 2009-07-19 02:49:44 +0200 (Sun, 19 Jul 2009)
Log Message:
-----------
operator macro playback (run operator reports in the console)
- reports can be selected with RMB, Border (bkey) and (de)select all.
- delete reports (X key)
- run operators in the console (R key)
- copy reports (Ctrl+C), can be pasted in the text editor an run with alt+p
Details
- Added "selected_editable_objects" and "selected_editable_bases" to screen_context.c, use the scene layers, this was needed for duplicate to run outside the 3D view.
- RNA_property_as_string converted an array of 1 into "(num)" need a comma so python sees it as a tuple - "(num,)"
- add flag to reports, use for seletion atm.
opens a new world of context bugs :)
Modified Paths:
--------------
branches/blender2.5/blender/release/ui/space_console.py
branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c
branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
branches/blender2.5/blender/source/blender/editors/include/ED_object.h
branches/blender2.5/blender/source/blender/editors/object/object_edit.c
branches/blender2.5/blender/source/blender/editors/screen/screen_context.c
branches/blender2.5/blender/source/blender/editors/space_console/console_draw.c
branches/blender2.5/blender/source/blender/editors/space_console/console_intern.h
branches/blender2.5/blender/source/blender/editors/space_console/console_ops.c
branches/blender2.5/blender/source/blender/editors/space_console/space_console.c
branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
branches/blender2.5/blender/source/blender/makesdna/DNA_scene_types.h
branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h
branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
Added Paths:
-----------
branches/blender2.5/blender/source/blender/editors/space_console/console_report.c
Modified: branches/blender2.5/blender/release/ui/space_console.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_console.py 2009-07-18 23:12:42 UTC (rev 21684)
+++ branches/blender2.5/blender/release/ui/space_console.py 2009-07-19 00:49:44 UTC (rev 21685)
@@ -15,19 +15,29 @@
layout.template_header()
- if context.area.show_menus:
- row = layout.row()
- row.itemM("CONSOLE_MT_console")
-
row = layout.row()
- row.scale_x = 0.9
row.itemR(sc, "type", expand=True)
+
if sc.type == 'REPORT':
- row.itemR(sc, "show_report_debug")
- row.itemR(sc, "show_report_info")
- row.itemR(sc, "show_report_operator")
- row.itemR(sc, "show_report_warn")
- row.itemR(sc, "show_report_error")
+
+ if context.area.show_menus:
+ row = layout.row()
+ row.itemM("CONSOLE_MT_report")
+
+ row.itemR(sc, "show_report_debug", text="Debug")
+ row.itemR(sc, "show_report_info", text="Info")
+ row.itemR(sc, "show_report_operator", text="Operators")
+ row.itemR(sc, "show_report_warn", text="Warnings")
+ row.itemR(sc, "show_report_error", text="Errors")
+
+ row = layout.row()
+ row.enabled = sc.show_report_operator
+ row.itemO("console.report_replay")
+
+ else:
+ if context.area.show_menus:
+ row = layout.row()
+ row.itemM("CONSOLE_MT_console")
class CONSOLE_MT_console(bpy.types.Menu):
@@ -41,6 +51,20 @@
layout.column()
layout.itemO("console.clear")
+class CONSOLE_MT_report(bpy.types.Menu):
+ __space_type__ = "CONSOLE"
+ __label__ = "Report"
+
+ def draw(self, context):
+ layout = self.layout
+ sc = context.space_data
+
+ layout.column()
+ layout.itemO("console.select_all_toggle")
+ layout.itemO("console.select_border")
+ layout.itemO("console.report_delete")
+ layout.itemO("console.report_copy")
+
def add_scrollback(text, text_type):
for l in text.split('\n'):
bpy.ops.console.scrollback_append(text=l.replace('\t', ' '), type=text_type)
@@ -97,7 +121,7 @@
Operator documentatuon text, will be used for the operator tooltip and python docs.
'''
__label__ = "Console Execute"
- __register__ = True
+ __register__ = False
# Both prompts must be the same length
PROMPT = '>>> '
@@ -373,7 +397,7 @@
Operator documentatuon text, will be used for the operator tooltip and python docs.
'''
__label__ = "Console Autocomplete"
- __register__ = True
+ __register__ = False
def poll(self, context):
return context.space_data.type == 'PYTHON'
@@ -423,6 +447,7 @@
bpy.types.register(CONSOLE_HT_header)
bpy.types.register(CONSOLE_MT_console)
+bpy.types.register(CONSOLE_MT_report)
bpy.ops.add(CONSOLE_OT_exec)
bpy.ops.add(CONSOLE_OT_autocomplete)
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c 2009-07-18 23:12:42 UTC (rev 21684)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/multires.c 2009-07-19 00:49:44 UTC (rev 21685)
@@ -101,7 +101,7 @@
/* First find the highest level of subdivision */
base = FIRSTBASE;
while(base) {
- if(TESTBASELIB_BGMODE(base) && base->object->type==OB_MESH) {
+ if(TESTBASELIB_BGMODE(v3d, base) && base->object->type==OB_MESH) {
ModifierData *md;
for(md = base->object->modifiers.first; md; md = md->next) {
if(md->type == eModifierType_Multires) {
@@ -124,7 +124,7 @@
/* Subdivide all the displacements to the highest level */
base = FIRSTBASE;
while(base) {
- if(TESTBASELIB_BGMODE(base) && base->object->type==OB_MESH) {
+ if(TESTBASELIB_BGMODE(v3d, base) && base->object->type==OB_MESH) {
ModifierData *md = NULL;
MultiresModifierData *mmd = NULL;
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/object.c 2009-07-18 23:12:42 UTC (rev 21684)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/object.c 2009-07-19 00:49:44 UTC (rev 21685)
@@ -1323,7 +1323,18 @@
expand_local_object(ob);
}
-/* returns true if the Object data is a from an external blend file (libdata) */
+/*
+ * Returns true if the Object is a from an external blend file (libdata)
+ */
+int object_is_libdata(Object *ob)
+{
+ if (!ob) return 0;
+ if (ob->proxy) return 0;
+ if (ob->id.lib) return 1;
+ return 0;
+}
+
+/* Returns true if the Object data is a from an external blend file (libdata) */
int object_data_is_libdata(Object *ob)
{
if(!ob) return 0;
Modified: branches/blender2.5/blender/source/blender/editors/include/ED_object.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_object.h 2009-07-18 23:12:42 UTC (rev 21684)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_object.h 2009-07-19 00:49:44 UTC (rev 21685)
@@ -70,6 +70,7 @@
void ED_object_base_init_from_view(struct bContext *C, struct Base *base);
/* cleanup */
+int object_is_libdata(struct Object *ob);
int object_data_is_libdata(struct Object *ob);
/* constraints */
Modified: branches/blender2.5/blender/source/blender/editors/object/object_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_edit.c 2009-07-18 23:12:42 UTC (rev 21684)
+++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c 2009-07-19 00:49:44 UTC (rev 21685)
@@ -747,7 +747,7 @@
/* XXX check object pointers */
for(base= FIRSTBASE; base; base= base->next) {
- if(TESTBASELIB(v3d, base)) {
+ if(TESTBASELIB_BGMODE(v3d, base)) {
ob= base->object;
relink_constraints(&ob->constraints);
if (ob->pose){
Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_context.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_context.c 2009-07-18 23:12:42 UTC (rev 21684)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_context.c 2009-07-19 00:49:44 UTC (rev 21685)
@@ -44,7 +44,9 @@
if(CTX_data_dir(member)) {
static const char *dir[] = {
- "scene", "selected_objects", "selected_bases", "active_base",
+ "scene", "selected_objects", "selected_bases",
+ "selected_editable_objects", "selected_editable_bases"
+ "active_base",
"active_object", "edit_object", NULL};
CTX_data_dir_set(result, dir);
@@ -68,6 +70,24 @@
return 1;
}
+ else if(CTX_data_equals(member, "selected_editable_objects") || CTX_data_equals(member, "selected_editable_bases")) {
+ int selected_editable_objects= CTX_data_equals(member, "selected_editable_objects");
+
+ for(base=scene->base.first; base; base=base->next) {
+ if((base->flag & SELECT) && (base->lay & scene->lay)) {
+ if((base->object->restrictflag & OB_RESTRICT_VIEW)==0) {
+ if(0==object_is_libdata(base->object)) {
+ if(selected_editable_objects)
+ CTX_data_id_list_add(result, &base->object->id);
+ else
+ CTX_data_list_add(result, &scene->id, &RNA_UnknownType, base);
+ }
+ }
+ }
+ }
+
+ return 1;
+ }
else if(CTX_data_equals(member, "active_base")) {
if(scene->basact)
CTX_data_pointer_set(result, &scene->id, &RNA_UnknownType, &scene->basact);
Modified: branches/blender2.5/blender/source/blender/editors/space_console/console_draw.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_console/console_draw.c 2009-07-18 23:12:42 UTC (rev 21684)
+++ branches/blender2.5/blender/source/blender/editors/space_console/console_draw.c 2009-07-19 00:49:44 UTC (rev 21685)
@@ -31,6 +31,7 @@
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
+#include <limits.h>
#include "MEM_guardedalloc.h"
@@ -53,6 +54,8 @@
#include "BIF_glutil.h"
#include "ED_datafiles.h"
+#include "ED_types.h"
+
#include "UI_interface.h"
#include "UI_resources.h"
@@ -89,7 +92,7 @@
}
}
-static void console_report_color(unsigned char *fg, int type)
+static void console_report_color(unsigned char *fg, unsigned char *bg, Report *report, int bool)
{
/*
if (type & RPT_ERROR_ALL) { fg[0]=220; fg[1]=0; fg[2]=0; }
@@ -99,8 +102,30 @@
else if (type & RPT_DEBUG_ALL) { fg[0]=196; fg[1]=196; fg[2]=196; }
else { fg[0]=196; fg[1]=196; fg[2]=196; }
*/
+ if(report->flag & SELECT) {
+ fg[0]=255; fg[1]=255; fg[2]=255;
+ if(bool) {
+ bg[0]=96; bg[1]=128; bg[2]=255;
+ }
+ else {
+ bg[0]=90; bg[1]=122; bg[2]=249;
+ }
+ }
- fg[0]=0; fg[1]=0; fg[2]=0;
+ else {
+ fg[0]=0; fg[1]=0; fg[2]=0;
+
+ if(bool) {
+ bg[0]=120; bg[1]=120; bg[2]=120;
+ }
+ else {
+ bg[0]=114; bg[1]=114; bg[2]=114;
+ }
+
+ }
+
+
+
}
@@ -180,14 +205,14 @@
#define CONSOLE_DRAW_MARGIN 4
#define CONSOLE_DRAW_SCROLL 16
-static int console_text_main__internal(struct SpaceConsole *sc, struct ARegion *ar, ReportList *reports, int draw)
+static int console_text_main__internal(struct SpaceConsole *sc, struct ARegion *ar, ReportList *reports, int draw, int mouse_y, void **mouse_pick)
{
View2D *v2d= &ar->v2d;
ConsoleLine *cl= sc->history.last;
int x_orig=CONSOLE_DRAW_MARGIN, y_orig=CONSOLE_DRAW_MARGIN;
- int x,y;
+ int x,y, y_prev;
int cwidth;
int console_width; /* number of characters that fit into the width of the console (fixed width) */
unsigned char fg[3];
@@ -200,6 +225,10 @@
x= x_orig; y= y_orig;
+ if(mouse_y != INT_MAX)
+ mouse_y += (v2d->cur.ymin+CONSOLE_DRAW_MARGIN);
+
+
if(sc->type==CONSOLE_TYPE_PYTHON) {
int prompt_len;
@@ -228,6 +257,7 @@
y += sc->lheight;
for(cl= sc->scrollback.last; cl; cl= cl->prev) {
+ y_prev= y;
if(draw)
console_line_color(fg, cl->type);
@@ -235,7 +265,7 @@
if(!console_draw_string( cl->line, cl->len,
console_width, sc->lheight,
fg, NULL,
- ar->winx-CONSOLE_DRAW_MARGIN,
+ ar->winx-(CONSOLE_DRAW_MARGIN+CONSOLE_DRAW_SCROLL),
v2d->cur.ymin, v2d->cur.ymax,
&x, &y, draw))
{
@@ -244,37 +274,39 @@
break; /* past the y limits */
}
}
+
+ if((mouse_y != INT_MAX) && (mouse_y >= y_prev && mouse_y <= y)) {
+ *mouse_pick= (void *)cl;
+ break;
+ }
}
}
else {
Report *report;
int report_mask= 0;
int bool= 0;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list