SVN maintenance.
[blender.git] / release / scripts / startup / bl_operators / console.py
1 # ##### BEGIN GPL LICENSE BLOCK #####
2 #
3 #  This program is free software; you can redistribute it and/or
4 #  modify it under the terms of the GNU General Public License
5 #  as published by the Free Software Foundation; either version 2
6 #  of the License, or (at your option) any later version.
7 #
8 #  This program is distributed in the hope that it will be useful,
9 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
10 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 #  GNU General Public License for more details.
12 #
13 #  You should have received a copy of the GNU General Public License
14 #  along with this program; if not, write to the Free Software Foundation,
15 #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 #
17 # ##### END GPL LICENSE BLOCK #####
18
19 # <pep8-80 compliant>
20
21 import bpy
22 from bpy.types import Operator
23 from bpy.props import StringProperty
24
25
26 class ConsoleExec(Operator):
27     '''Execute the current console line as a python expression'''
28     bl_idname = "console.execute"
29     bl_label = "Console Execute"
30
31     def execute(self, context):
32         sc = context.space_data
33
34         module = __import__("console_" + sc.language)
35         execute = getattr(module, "execute", None)
36
37         if execute:
38             return execute(context)
39         else:
40             print("Error: bpy.ops.console.execute_" + sc.language + " - not found")
41             return {'FINISHED'}
42
43
44 class ConsoleAutocomplete(Operator):
45     '''Evaluate the namespace up until the cursor and give a list of options or complete the name if there is only one'''
46     bl_idname = "console.autocomplete"
47     bl_label = "Console Autocomplete"
48
49     def execute(self, context):
50         sc = context.space_data
51         module = __import__("console_" + sc.language)
52         autocomplete = getattr(module, "autocomplete", None)
53
54         if autocomplete:
55             return autocomplete(context)
56         else:
57             print("Error: bpy.ops.console.autocomplete_" + sc.language + " - not found")
58             return {'FINISHED'}
59
60
61 class ConsoleBanner(Operator):
62     '''Print a message whem the terminal initializes'''
63     bl_idname = "console.banner"
64     bl_label = "Console Banner"
65
66     def execute(self, context):
67         sc = context.space_data
68
69         # default to python
70         if not sc.language:
71             sc.language = 'python'
72
73         module = __import__("console_" + sc.language)
74         banner = getattr(module, "banner", None)
75
76         if banner:
77             return banner(context)
78         else:
79             print("Error: bpy.ops.console.banner_" + sc.language + " - not found")
80             return {'FINISHED'}
81
82
83 class ConsoleLanguage(Operator):
84     '''Set the current language for this console'''
85     bl_idname = "console.language"
86     bl_label = "Console Language"
87
88     language = StringProperty(
89             name="Language",
90             maxlen=32,
91             )
92
93     def execute(self, context):
94         sc = context.space_data
95
96         # defailt to python
97         sc.language = self.language
98
99         bpy.ops.console.banner()
100
101         # insert a new blank line
102         bpy.ops.console.history_append(text="", current_character=0,
103             remove_duplicates=True)
104
105         return {'FINISHED'}
106