diff options
Diffstat (limited to 'release/scripts/textplugin_outliner.py')
-rw-r--r-- | release/scripts/textplugin_outliner.py | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/release/scripts/textplugin_outliner.py b/release/scripts/textplugin_outliner.py deleted file mode 100644 index 3879a2819a5..00000000000 --- a/release/scripts/textplugin_outliner.py +++ /dev/null @@ -1,142 +0,0 @@ -#!BPY -""" -Name: 'Code Outline | Ctrl T' -Blender: 246 -Group: 'TextPlugin' -Shortcut: 'Ctrl+T' -Tooltip: 'Provides a menu for jumping to class and functions definitions.' -""" - -# Only run if we have the required modules -try: - import bpy - from BPyTextPlugin import * - from Blender import Draw -except ImportError: - OK = False -else: - OK = True - -def make_menu(items, eventoffs): - n = len(items) - if n < 20: - return [(items[i], i+1+eventoffs) for i in range(len(items))] - - letters = [] - check = 'abcdefghijklmnopqrstuvwxyz_' # Names cannot start 0-9 - for c in check: - for item in items: - if item[0].lower() == c: - letters.append(c) - break - - entries = {} - i = 0 - for item in items: - i += 1 - c = item[0].lower() - entries.setdefault(c, []).append((item, i+eventoffs)) - - subs = [] - for c in letters: - subs.append((c, entries[c])) - - return subs - -def find_word(txt, word): - i = 0 - txt.reset() - while True: - try: - line = txt.readline() - except StopIteration: - break - c = line.find(word) - if c != -1: - txt.setCursorPos(i, c) - break - i += 1 - -def main(): - txt = bpy.data.texts.active - if not txt: - return - - # Identify word under cursor - if get_context(txt) == CTX_NORMAL: - line, c = current_line(txt) - start = c-1 - end = c - while start >= 0: - if not line[start].lower() in 'abcdefghijklmnopqrstuvwxyz0123456789_': - break - start -= 1 - while end < len(line): - if not line[end].lower() in 'abcdefghijklmnopqrstuvwxyz0123456789_': - break - end += 1 - word = line[start+1:end] - if word in KEYWORDS: - word = None - else: - word = None - - script = get_cached_descriptor(txt) - items = [] - desc = None - - tmp = script.classes.keys() - tmp.sort(cmp = suggest_cmp) - class_menu = make_menu(tmp, len(items)) - class_menu_length = len(tmp) - items.extend(tmp) - - tmp = script.defs.keys() - tmp.sort(cmp = suggest_cmp) - defs_menu = make_menu(tmp, len(items)) - defs_menu_length = len(tmp) - items.extend(tmp) - - tmp = script.vars.keys() - tmp.sort(cmp = suggest_cmp) - vars_menu = make_menu(tmp, len(items)) - vars_menu_length = len(tmp) - items.extend(tmp) - - menu = [('Script %t', 0), - ('Classes', class_menu), - ('Functions', defs_menu), - ('Variables', vars_menu)] - if word: - menu.extend([None, ('Locate', [(word, -10)])]) - - i = Draw.PupTreeMenu(menu) - if i == -1: - return - - # Chosen to search for word under cursor - if i == -10: - if script.classes.has_key(word): - desc = script.classes[word] - elif script.defs.has_key(word): - desc = script.defs[word] - elif script.vars.has_key(word): - desc = script.vars[word] - else: - find_word(txt, word) - return - else: - i -= 1 - if i < class_menu_length: - desc = script.classes[items[i]] - elif i < class_menu_length + defs_menu_length: - desc = script.defs[items[i]] - elif i < class_menu_length + defs_menu_length + vars_menu_length: - desc = script.vars[items[i]] - - if desc: - txt.setCursorPos(desc.lineno-1, 0) - -# Check we are running as a script and not imported as a module -if __name__ == "__main__" and OK: - main() |