Beispiel #1
0
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)
Beispiel #2
0
                new_items.append([i[0],i[1],i[2],"recent items/"+i[0].split('/')[-1]])
        items.extend(new_items)


    pop_list=[]

    for i in items:
        path=i[3].split('/')[:-1]
        extend_pop_for(pop_list,path)
        if len(path):
            append_to_inner(pop_list,(i[3].split('/')[-1],items.index(i)))
        else:
            pop_list.append((i[3].split('/')[-1],items.index(i)))


    r = Draw.PupTreeMenu(pop_list)
    if r >= 0:
        print items[r]
        set_pref_key('xplane.tools','annotate.last_item',items[r])
        cur = Window.GetCursorPos()
        mm = TranslationMatrix(Vector([0,0,0])).resize4x4()
        #mm = TranslationMatrix(Vector(Window.GetCursorPos())).resize4x4()
        importer=OBJimport(items[r][1],mm)
        importer.verbose=1
        try:
            sel = Blender.Scene.GetCurrent().objects.selected
            old_objs = set(Blender.Scene.GetCurrent().objects)
            obj_list = importer.doimport()
            new_objs = set(Blender.Scene.GetCurrent().objects)
            wrapper=Blender.Object.New('Empty','OBJ%s' % items[r][0].split('/')[-1])
            Blender.Scene.GetCurrent().objects.link(wrapper)