diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-03-21 15:35:49 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-03-21 15:35:49 +0300 |
commit | 2e6a02438e997f1024f3ba6c332314f09f01a3b4 (patch) | |
tree | 7b9427c972858a2b0950b0328bb500f11294161b /release/scripts/startup/bl_ui/space_console.py | |
parent | 28d39473fc65543cbf3adc44964d4a9703d3076a (diff) |
move script directories for internal blender scripts.
ui/ --> startup/bl_ui
op/ --> startup/bl_operators
scripts/startup/ is now the only auto-loading script dir which gives some speedup for blender loading too.
~/.blender/2.56/scripts/startup works for auto-loading scripts too.
Diffstat (limited to 'release/scripts/startup/bl_ui/space_console.py')
-rw-r--r-- | release/scripts/startup/bl_ui/space_console.py | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/release/scripts/startup/bl_ui/space_console.py b/release/scripts/startup/bl_ui/space_console.py new file mode 100644 index 00000000000..591765c1543 --- /dev/null +++ b/release/scripts/startup/bl_ui/space_console.py @@ -0,0 +1,160 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> +import bpy +from bpy.props import StringProperty + + +class CONSOLE_HT_header(bpy.types.Header): + bl_space_type = 'CONSOLE' + + def draw(self, context): + layout = self.layout + + row = layout.row(align=True) + row.template_header() + + if context.area.show_menus: + sub = row.row(align=True) + sub.menu("CONSOLE_MT_console") + + row = layout.row(align=True) + row.operator("console.autocomplete", text="Autocomplete") + + +class CONSOLE_MT_console(bpy.types.Menu): + bl_label = "Console" + + def draw(self, context): + layout = self.layout + layout.column() + layout.operator("console.clear") + layout.operator("console.copy") + layout.operator("console.paste") + layout.menu("CONSOLE_MT_language") + + layout.separator() + + layout.operator("screen.area_dupli") + layout.operator("screen.screen_full_area") + + +class CONSOLE_MT_language(bpy.types.Menu): + bl_label = "Languages..." + + def draw(self, context): + import sys + + layout = self.layout + layout.column() + + # Collect modules with 'console_*.execute' + languages = [] + for modname, mod in sys.modules.items(): + if modname.startswith("console_") and hasattr(mod, "execute"): + languages.append(modname.split('_', 1)[-1]) + + languages.sort() + + for language in languages: + layout.operator("console.language", text=language[0].upper() + language[1:]).language = language + + +def add_scrollback(text, text_type): + for l in text.split('\n'): + bpy.ops.console.scrollback_append(text=l.replace('\t', ' '), + type=text_type) + + +class ConsoleExec(bpy.types.Operator): + '''Execute the current console line as a python expression''' + bl_idname = "console.execute" + bl_label = "Console Execute" + + def execute(self, context): + sc = context.space_data + + module = __import__("console_" + sc.language) + execute = getattr(module, "execute", None) + + if execute: + return execute(context) + else: + print("Error: bpy.ops.console.execute_" + sc.language + " - not found") + return {'FINISHED'} + + +class ConsoleAutocomplete(bpy.types.Operator): + '''Evaluate the namespace up until the cursor and give a list of options or complete the name if there is only one''' + bl_idname = "console.autocomplete" + bl_label = "Console Autocomplete" + + def execute(self, context): + sc = context.space_data + module = __import__("console_" + sc.language) + autocomplete = getattr(module, "autocomplete", None) + + if autocomplete: + return autocomplete(context) + else: + print("Error: bpy.ops.console.autocomplete_" + sc.language + " - not found") + return {'FINISHED'} + + +class ConsoleBanner(bpy.types.Operator): + '''Print a message whem the terminal initializes''' + bl_idname = "console.banner" + bl_label = "Console Banner" + + def execute(self, context): + sc = context.space_data + + # default to python + if not sc.language: + sc.language = 'python' + + module = __import__("console_" + sc.language) + banner = getattr(module, "banner", None) + + if banner: + return banner(context) + else: + print("Error: bpy.ops.console.banner_" + sc.language + " - not found") + return {'FINISHED'} + + +class ConsoleLanguage(bpy.types.Operator): + '''Set the current language for this console''' + bl_idname = "console.language" + bl_label = "Console Language" + language = StringProperty(name="Language", maxlen=32, default="") + + def execute(self, context): + sc = context.space_data + + # defailt to python + sc.language = self.language + + bpy.ops.console.banner() + + # insert a new blank line + bpy.ops.console.history_append(text="", current_character=0, + remove_duplicates=True) + + return {'FINISHED'} |