diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-08-20 01:32:18 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-08-20 01:32:18 +0400 |
commit | 257c6de9ace4c66d6054d10712204b62aa8ace2f (patch) | |
tree | 7dd8c53ce5a20e7586728df22f71dc6ad5815bd7 /release | |
parent | 59c8c645c351af4473d869d543b0465225b9f85e (diff) |
copy as script operator for the console, so you can copy input from a console for use in a textblock.
Diffstat (limited to 'release')
-rw-r--r-- | release/scripts/modules/console_python.py | 34 | ||||
-rw-r--r-- | release/scripts/startup/bl_operators/console.py | 19 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_console.py | 1 |
3 files changed, 54 insertions, 0 deletions
diff --git a/release/scripts/modules/console_python.py b/release/scripts/modules/console_python.py index d32606eb0b0..6e8fee07c0f 100644 --- a/release/scripts/modules/console_python.py +++ b/release/scripts/modules/console_python.py @@ -290,6 +290,40 @@ def autocomplete(context): 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', ' ') diff --git a/release/scripts/startup/bl_operators/console.py b/release/scripts/startup/bl_operators/console.py index 82a54077bdc..fd95da02b28 100644 --- a/release/scripts/startup/bl_operators/console.py +++ b/release/scripts/startup/bl_operators/console.py @@ -67,6 +67,25 @@ class ConsoleAutocomplete(Operator): 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" diff --git a/release/scripts/startup/bl_ui/space_console.py b/release/scripts/startup/bl_ui/space_console.py index 7f9699f457b..7ded4954f80 100644 --- a/release/scripts/startup/bl_ui/space_console.py +++ b/release/scripts/startup/bl_ui/space_console.py @@ -51,6 +51,7 @@ class CONSOLE_MT_console(Menu): layout.separator() + layout.operator("console.copy_as_script") layout.operator("console.copy") layout.operator("console.paste") layout.menu("CONSOLE_MT_language") |