| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | # ##### 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, | 
					
						
							| 
									
										
										
										
											2010-02-12 13:34:04 +00:00
										 |  |  | #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # ##### END GPL LICENSE BLOCK ##### | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # <pep8 compliant> | 
					
						
							| 
									
										
										
										
											2009-11-08 12:35:37 +00:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | import bpy | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-19 22:17:19 +00:00
										 |  |  | language_id = "shell" | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-04 17:54:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | def add_scrollback(text, text_type): | 
					
						
							| 
									
										
										
										
											2012-07-04 21:41:05 +00:00
										 |  |  |     for l in text.split("\n"): | 
					
						
							|  |  |  |         bpy.ops.console.scrollback_append(text=l.replace("\t", "    "), | 
					
						
							| 
									
										
										
										
											2012-10-08 08:28:05 +00:00
										 |  |  |                                           type=text_type) | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-04 17:54:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | def shell_run(text): | 
					
						
							| 
									
										
										
										
											2009-11-08 12:35:37 +00:00
										 |  |  |     import subprocess | 
					
						
							| 
									
										
										
										
											2009-12-04 17:54:48 +00:00
										 |  |  |     val, output = subprocess.getstatusoutput(text) | 
					
						
							| 
									
										
										
										
											2009-11-08 12:35:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if not val: | 
					
						
							| 
									
										
										
										
											2009-12-04 17:54:48 +00:00
										 |  |  |         style = 'OUTPUT' | 
					
						
							| 
									
										
										
										
											2009-11-08 12:35:37 +00:00
										 |  |  |     else: | 
					
						
							| 
									
										
										
										
											2009-12-04 17:54:48 +00:00
										 |  |  |         style = 'ERROR' | 
					
						
							| 
									
										
										
										
											2009-11-08 12:35:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     add_scrollback(output, style) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-04 21:41:05 +00:00
										 |  |  | PROMPT = "$ " | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-17 12:21:41 +00:00
										 |  |  | def execute(context): | 
					
						
							|  |  |  |     sc = context.space_data | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-17 12:21:41 +00:00
										 |  |  |     try: | 
					
						
							| 
									
										
										
										
											2010-08-11 05:21:43 +00:00
										 |  |  |         line = sc.history[-1].body | 
					
						
							| 
									
										
										
										
											2009-11-17 12:21:41 +00:00
										 |  |  |     except: | 
					
						
							| 
									
										
										
										
											2009-12-24 19:50:43 +00:00
										 |  |  |         return {'CANCELLED'} | 
					
						
							| 
									
										
										
										
											2009-11-21 23:55:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-17 12:21:41 +00:00
										 |  |  |     bpy.ops.console.scrollback_append(text=sc.prompt + line, type='INPUT') | 
					
						
							| 
									
										
										
										
											2009-11-21 23:55:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-17 12:21:41 +00:00
										 |  |  |     shell_run(line) | 
					
						
							| 
									
										
										
										
											2009-11-21 23:55:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-17 12:21:41 +00:00
										 |  |  |     # insert a new blank line | 
					
						
							|  |  |  |     bpy.ops.console.history_append(text="", current_character=0, | 
					
						
							| 
									
										
										
										
											2012-10-08 08:28:05 +00:00
										 |  |  |                                    remove_duplicates=True) | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-04 17:54:48 +00:00
										 |  |  |     sc.prompt = os.getcwd() + PROMPT | 
					
						
							| 
									
										
										
										
											2009-12-24 19:50:43 +00:00
										 |  |  |     return {'FINISHED'} | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-17 12:21:41 +00:00
										 |  |  | def autocomplete(context): | 
					
						
							| 
									
										
										
										
											2011-10-17 06:58:07 +00:00
										 |  |  |     #~ sc = context.space_data | 
					
						
							| 
									
										
										
										
											2009-11-17 12:21:41 +00:00
										 |  |  |     # TODO | 
					
						
							| 
									
										
										
										
											2009-12-24 19:50:43 +00:00
										 |  |  |     return {'CANCELLED'} | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-17 12:21:41 +00:00
										 |  |  | def banner(context): | 
					
						
							|  |  |  |     sc = context.space_data | 
					
						
							| 
									
										
										
										
											2009-11-21 23:55:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-17 12:21:41 +00:00
										 |  |  |     shell_run("bash --version") | 
					
						
							| 
									
										
										
										
											2009-12-04 17:54:48 +00:00
										 |  |  |     sc.prompt = os.getcwd() + PROMPT | 
					
						
							| 
									
										
										
										
											2009-11-06 23:53:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-24 19:50:43 +00:00
										 |  |  |     return {'FINISHED'} |