1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- # ##### 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 os
- import bpy
- language_id = "shell"
- def add_scrollback(text, text_type):
- for l in text.split("\n"):
- bpy.ops.console.scrollback_append(text=l.replace("\t", " "),
- type=text_type)
- def shell_run(text):
- import subprocess
- val, output = subprocess.getstatusoutput(text)
- if not val:
- style = 'OUTPUT'
- else:
- style = 'ERROR'
- add_scrollback(output, style)
- PROMPT = "$ "
- def execute(context, _is_interactive):
- sc = context.space_data
- try:
- line = sc.history[-1].body
- except:
- return {'CANCELLED'}
- bpy.ops.console.scrollback_append(text=sc.prompt + line, type='INPUT')
- shell_run(line)
- # insert a new blank line
- bpy.ops.console.history_append(text="", current_character=0,
- remove_duplicates=True)
- sc.prompt = os.getcwd() + PROMPT
- return {'FINISHED'}
- def autocomplete(_context):
- # sc = context.space_data
- # TODO
- return {'CANCELLED'}
- def banner(context):
- sc = context.space_data
- shell_run("bash --version")
- sc.prompt = os.getcwd() + PROMPT
- return {'FINISHED'}
|