pep8 cleanup and fix for keymap test operator from my own recent fix.
[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_%s - not found" %
41                   sc.language)
42             return {'FINISHED'}
43
44
45 class ConsoleAutocomplete(Operator):
46     """Evaluate the namespace up until the cursor and give a list of """ \
47     """options or complete the name if there is only one"""
48     bl_idname = "console.autocomplete"
49     bl_label = "Console Autocomplete"
50
51     def execute(self, context):
52         sc = context.space_data
53         module = __import__("console_" + sc.language)
54         autocomplete = getattr(module, "autocomplete", None)
55
56         if autocomplete:
57             return autocomplete(context)
58         else:
59             print("Error: bpy.ops.console.autocomplete_%s - not found" %
60                   sc.language)
61             return {'FINISHED'}
62
63
64 class ConsoleBanner(Operator):
65     '''Print a message whem the terminal initializes'''
66     bl_idname = "console.banner"
67     bl_label = "Console Banner"
68
69     def execute(self, context):
70         sc = context.space_data
71
72         # default to python
73         if not sc.language:
74             sc.language = 'python'
75
76         module = __import__("console_" + sc.language)
77         banner = getattr(module, "banner", None)
78
79         if banner:
80             return banner(context)
81         else:
82             print("Error: bpy.ops.console.banner_%s - not found" %
83                   sc.language)
84             return {'FINISHED'}
85
86
87 class ConsoleLanguage(Operator):
88     '''Set the current language for this console'''
89     bl_idname = "console.language"
90     bl_label = "Console Language"
91
92     language = StringProperty(
93             name="Language",
94             maxlen=32,
95             )
96
97     def execute(self, context):
98         sc = context.space_data
99
100         # defailt to python
101         sc.language = self.language
102
103         bpy.ops.console.banner()
104
105         # insert a new blank line
106         bpy.ops.console.history_append(text="", current_character=0,
107             remove_duplicates=True)
108
109         return {'FINISHED'}