| 
									
										
										
										
											2011-09-22 19:50:41 +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, | 
					
						
							|  |  |  | #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # ##### END GPL LICENSE BLOCK ##### | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # <pep8-80 compliant> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import bpy | 
					
						
							|  |  |  | from bpy.types import Operator | 
					
						
							| 
									
										
										
										
											2015-01-27 17:46:07 +11:00
										 |  |  | from bpy.props import ( | 
					
						
							|  |  |  |         BoolProperty, | 
					
						
							|  |  |  |         StringProperty, | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-15 14:51:37 +00:00
										 |  |  | def _lang_module_get(sc): | 
					
						
							| 
									
										
										
										
											2012-05-17 15:24:26 +00:00
										 |  |  |     return __import__("console_" + sc.language, | 
					
						
							|  |  |  |                       # for python 3.3, maybe a bug??? | 
					
						
							|  |  |  |                       level=0) | 
					
						
							| 
									
										
										
										
											2012-04-15 14:51:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  | class ConsoleExec(Operator): | 
					
						
							| 
									
										
										
										
											2012-04-15 14:51:37 +00:00
										 |  |  |     """Execute the current console line as a python expression""" | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |     bl_idname = "console.execute" | 
					
						
							|  |  |  |     bl_label = "Console Execute" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-24 01:04:37 +00:00
										 |  |  |     interactive = BoolProperty( | 
					
						
							|  |  |  |             options={'SKIP_SAVE'}, | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 02:44:21 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							|  |  |  |         return (context.area and context.area.type == 'CONSOLE') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |     def execute(self, context): | 
					
						
							|  |  |  |         sc = context.space_data | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-15 14:51:37 +00:00
										 |  |  |         module = _lang_module_get(sc) | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |         execute = getattr(module, "execute", None) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-24 01:04:37 +00:00
										 |  |  |         if execute is not None: | 
					
						
							|  |  |  |             return execute(context, self.interactive) | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |         else: | 
					
						
							| 
									
										
										
										
											2011-09-26 15:39:15 +00:00
										 |  |  |             print("Error: bpy.ops.console.execute_%s - not found" % | 
					
						
							|  |  |  |                   sc.language) | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |             return {'FINISHED'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ConsoleAutocomplete(Operator): | 
					
						
							| 
									
										
										
										
											2011-09-26 15:39:15 +00:00
										 |  |  |     """Evaluate the namespace up until the cursor and give a list of """ \ | 
					
						
							|  |  |  |     """options or complete the name if there is only one""" | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |     bl_idname = "console.autocomplete" | 
					
						
							|  |  |  |     bl_label = "Console Autocomplete" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 02:44:21 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							|  |  |  |         return (context.area and context.area.type == 'CONSOLE') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |     def execute(self, context): | 
					
						
							|  |  |  |         sc = context.space_data | 
					
						
							| 
									
										
										
										
											2012-04-15 14:51:37 +00:00
										 |  |  |         module = _lang_module_get(sc) | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |         autocomplete = getattr(module, "autocomplete", None) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if autocomplete: | 
					
						
							|  |  |  |             return autocomplete(context) | 
					
						
							|  |  |  |         else: | 
					
						
							| 
									
										
										
										
											2011-09-26 15:39:15 +00:00
										 |  |  |             print("Error: bpy.ops.console.autocomplete_%s - not found" % | 
					
						
							|  |  |  |                   sc.language) | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |             return {'FINISHED'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-19 21:32:18 +00:00
										 |  |  | 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)" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 02:44:21 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							|  |  |  |         return (context.area and context.area.type == 'CONSOLE') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-19 21:32:18 +00:00
										 |  |  |     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'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  | class ConsoleBanner(Operator): | 
					
						
							| 
									
										
										
										
											2012-04-15 14:51:37 +00:00
										 |  |  |     """Print a message when the terminal initializes""" | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |     bl_idname = "console.banner" | 
					
						
							|  |  |  |     bl_label = "Console Banner" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 02:44:21 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							|  |  |  |         return (context.area and context.area.type == 'CONSOLE') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |     def execute(self, context): | 
					
						
							|  |  |  |         sc = context.space_data | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # default to python | 
					
						
							|  |  |  |         if not sc.language: | 
					
						
							| 
									
										
										
										
											2012-06-19 22:17:19 +00:00
										 |  |  |             sc.language = "python" | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-15 14:51:37 +00:00
										 |  |  |         module = _lang_module_get(sc) | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |         banner = getattr(module, "banner", None) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if banner: | 
					
						
							|  |  |  |             return banner(context) | 
					
						
							|  |  |  |         else: | 
					
						
							| 
									
										
										
										
											2011-09-26 15:39:15 +00:00
										 |  |  |             print("Error: bpy.ops.console.banner_%s - not found" % | 
					
						
							|  |  |  |                   sc.language) | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |             return {'FINISHED'} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ConsoleLanguage(Operator): | 
					
						
							| 
									
										
										
										
											2012-04-15 14:51:37 +00:00
										 |  |  |     """Set the current language for this console""" | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |     bl_idname = "console.language" | 
					
						
							|  |  |  |     bl_label = "Console Language" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     language = StringProperty( | 
					
						
							|  |  |  |             name="Language", | 
					
						
							|  |  |  |             maxlen=32, | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-04-26 02:44:21 +00:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def poll(cls, context): | 
					
						
							|  |  |  |         return (context.area and context.area.type == 'CONSOLE') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |     def execute(self, context): | 
					
						
							|  |  |  |         sc = context.space_data | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-17 06:58:07 +00:00
										 |  |  |         # default to python | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  |         sc.language = self.language | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         bpy.ops.console.banner() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # 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) | 
					
						
							| 
									
										
										
										
											2011-09-22 19:50:41 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return {'FINISHED'} | 
					
						
							| 
									
										
										
										
											2017-03-18 20:03:24 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | classes = ( | 
					
						
							|  |  |  |     ConsoleAutocomplete, | 
					
						
							|  |  |  |     ConsoleBanner, | 
					
						
							|  |  |  |     ConsoleCopyAsScript, | 
					
						
							|  |  |  |     ConsoleExec, | 
					
						
							|  |  |  |     ConsoleLanguage, | 
					
						
							|  |  |  | ) |