[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50029] trunk/blender: copy as script operator for the console, so you can copy input from a console for use in a textblock.
Campbell Barton
ideasman42 at gmail.com
Sun Aug 19 23:32:18 CEST 2012
Revision: 50029
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50029
Author: campbellbarton
Date: 2012-08-19 21:32:18 +0000 (Sun, 19 Aug 2012)
Log Message:
-----------
copy as script operator for the console, so you can copy input from a console for use in a textblock.
Modified Paths:
--------------
trunk/blender/release/scripts/modules/console_python.py
trunk/blender/release/scripts/startup/bl_operators/console.py
trunk/blender/release/scripts/startup/bl_ui/space_console.py
trunk/blender/source/blender/editors/space_console/space_console.c
trunk/blender/source/blender/makesrna/intern/rna_space.c
Modified: trunk/blender/release/scripts/modules/console_python.py
===================================================================
--- trunk/blender/release/scripts/modules/console_python.py 2012-08-19 21:28:42 UTC (rev 50028)
+++ trunk/blender/release/scripts/modules/console_python.py 2012-08-19 21:32:18 UTC (rev 50029)
@@ -290,6 +290,40 @@
return {'FINISHED'}
+def copy_as_script(context):
+ sc = context.space_data
+ lines = [
+ "import bpy",
+ "import bpy.context as C",
+ "import bpy.data as D",
+ "from mathutils import *",
+ "from math import *",
+ "",
+ ]
+
+ for line in sc.scrollback:
+ text = line.body
+ type = line.type
+
+ if type == 'INFO': # ignore autocomp.
+ continue
+ if type == 'INPUT':
+ if text.startswith(PROMPT):
+ text = text[len(PROMPT):]
+ elif text.startswith(PROMPT_MULTI):
+ text = text[len(PROMPT_MULTI):]
+ elif type == 'OUTPUT':
+ text = "#~ " + text
+ elif type == 'ERROR':
+ text = "#! " + text
+
+ lines.append(text)
+
+ context.window_manager.clipboard = "\n".join(lines)
+
+ return {'FINISHED'}
+
+
def banner(context):
sc = context.space_data
version_string = sys.version.strip().replace('\n', ' ')
Modified: trunk/blender/release/scripts/startup/bl_operators/console.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/console.py 2012-08-19 21:28:42 UTC (rev 50028)
+++ trunk/blender/release/scripts/startup/bl_operators/console.py 2012-08-19 21:32:18 UTC (rev 50029)
@@ -67,6 +67,25 @@
return {'FINISHED'}
+class ConsoleCopyAsScript(Operator):
+ """Copy the console contents for use in a script"""
+ bl_idname = "console.copy_as_script"
+ bl_label = "Copy to Clipboard (as script)"
+
+ def execute(self, context):
+ sc = context.space_data
+
+ module = _lang_module_get(sc)
+ copy_as_script = getattr(module, "copy_as_script", None)
+
+ if copy_as_script:
+ return copy_as_script(context)
+ else:
+ print("Error: copy_as_script - not found for %r" %
+ sc.language)
+ return {'FINISHED'}
+
+
class ConsoleBanner(Operator):
"""Print a message when the terminal initializes"""
bl_idname = "console.banner"
Modified: trunk/blender/release/scripts/startup/bl_ui/space_console.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_console.py 2012-08-19 21:28:42 UTC (rev 50028)
+++ trunk/blender/release/scripts/startup/bl_ui/space_console.py 2012-08-19 21:32:18 UTC (rev 50029)
@@ -51,6 +51,7 @@
layout.separator()
+ layout.operator("console.copy_as_script")
layout.operator("console.copy")
layout.operator("console.paste")
layout.menu("CONSOLE_MT_language")
Modified: trunk/blender/source/blender/editors/space_console/space_console.c
===================================================================
--- trunk/blender/source/blender/editors/space_console/space_console.c 2012-08-19 21:28:42 UTC (rev 50028)
+++ trunk/blender/source/blender/editors/space_console/space_console.c 2012-08-19 21:32:18 UTC (rev 50029)
@@ -326,6 +326,7 @@
WM_keymap_add_item(keymap, "CONSOLE_OT_autocomplete", SPACEKEY, KM_PRESS, KM_CTRL, 0); /* python operator - space_text.py */
#endif
+ WM_keymap_add_item(keymap, "CONSOLE_OT_copy_as_script", CKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0);
WM_keymap_add_item(keymap, "CONSOLE_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "CONSOLE_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0);
#ifdef __APPLE__
Modified: trunk/blender/source/blender/makesrna/intern/rna_space.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_space.c 2012-08-19 21:28:42 UTC (rev 50028)
+++ trunk/blender/source/blender/makesrna/intern/rna_space.c 2012-08-19 21:32:18 UTC (rev 50029)
@@ -2656,6 +2656,14 @@
static void rna_def_console_line(BlenderRNA *brna)
{
+ static EnumPropertyItem console_line_type_items[] = {
+ {CONSOLE_LINE_OUTPUT, "OUTPUT", 0, "Output", ""},
+ {CONSOLE_LINE_INPUT, "INPUT", 0, "Input", ""},
+ {CONSOLE_LINE_INFO, "INFO", 0, "Info", ""},
+ {CONSOLE_LINE_ERROR, "ERROR", 0, "Error", ""},
+ {0, NULL, 0, NULL, NULL}
+ };
+
StructRNA *srna;
PropertyRNA *prop;
@@ -2673,6 +2681,11 @@
RNA_def_property_int_sdna(prop, NULL, "cursor");
RNA_def_property_int_funcs(prop, NULL, NULL, "rna_ConsoleLine_cursor_index_range");
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_CONSOLE, NULL);
+
+ prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "type");
+ RNA_def_property_enum_items(prop, console_line_type_items);
+ RNA_def_property_ui_text(prop, "Type", "Console line type when used in scrollback");
}
static void rna_def_space_console(BlenderRNA *brna)
More information about the Bf-blender-cvs
mailing list