Multi-Selection Popup List?

Hello!

I’m wondering if there is such a thing as a muli-selection popup list available in blender 2.80+?
I’m trying to either find or possibly make something to emulate what 3DS Max has.

I know we got the outliner in Blender now, but it’s still not really ideal for quickly showing ALL objects and filtering your selection. Unless there are some better ways/things i’m missing.

image

I’m hoping for a list where I don’t see all this sub menu / modifier stuff/etc.
Just a nice and clean list to select things quickly.

image

Edit: I guess if I turn off quite a few things I get closer to what I want…
So then I guess the question is. Could I somehow tear off this panel as a popup then, with these settings I wonder…

image

Actually I found using the Floating Windows Addon, I can get more of what I want.
I can quickly/easily popup that Menu, with those settings customized/leave it open and basically get similar functionality.

https://blenderartists.org/t/floating-windows-the-missing-feature-of-blender-2-8-release/1163493/215

But I’m still curious if something else like this exists.

1 Like

Create PropertyGroup with names of the objects or with PointerProperty to them. Add BooleanProperty that would represent the selection state of an object in the panel.

Then create CollectionProperty and set its type to your PropertyGroup.
Then draw the objects from the CollectionProperty in the panel using UILayout.prop with the property attribute set to your BooleanProperty

This is how multiselection implemented in NameStack

1 Like

1 Like

Thank you for both replies!

I may try to code something, for fun/to learn. I was able to setup a hotkey with PME to popup the window, which works great. I just need to see if I can customize the filters now somehow in there if possible, then might be good to go.

image

Hmmmm… Interesting. So if I popup that menu, it’s fine. But if I click outside of it, into the main window, then it crashes blender.

If you have a question about the pie menu editor, I suggest you ask roaoao here

1 Like

Yeah, I posted in there asking. I was messing with some stuff here in python, but still not sure.
I can get the Outliner area Duplicated/popped up via Python. But not sure if it’s possible to change the filter options.

bpy.context.space_data.use_filter_collection = False
bpy.context.space_data.use_filter_object_content = False
bpy.context.space_data.use_filter_children = False
bpy.context.space_data.use_filter_object_light = False
bpy.context.space_data.use_filter_object_camera = False
bpy.context.space_data.use_filter_object_empty = False
bpy.context.space_data.filter_text = “”

Yes, that’s the right properties. But you need to execute them from the outliner area or to create a context override. Here’s an example how to find an area and create an override https://blender.stackexchange.com/a/145568/21828

1 Like

Yeah, I was trying to call/figure out the context area stuff. Trying to see how to call on that specific area.
If I wanted to do the area thing, I wonder if I have to then find the Outliner/Dupe it then search again for the new duped Outliner area?

I’ll mess with the override stuff. Although that seems more like for object than spaces/areas? But I can prob. modify/use it in that way.

I somehow figured it out. Testing out some code/totally random.

I can set the states I want, then Dupe it,then set it back to what it was/default. !

import bpy 

context = bpy.context.copy()

for area in bpy.context.screen.areas:
    if area.type == 'OUTLINER':
        context['area'] = area
        
        context['area'].spaces[0].use_filter_collection = False
        context['area'].spaces[0].use_filter_collection = False
        context['area'].spaces[0].use_filter_object_content = False
        context['area'].spaces[0].use_filter_children = False
        context['area'].spaces[0].use_filter_object_light = False
        context['area'].spaces[0].use_filter_object_camera = False
        context['area'].spaces[0].use_filter_object_empty = False
        context['area'].spaces[0].filter_text = ""

        dupe = bpy.ops.screen.area_dupli(context, 'INVOKE_DEFAULT')
        
        context['area'].spaces[0].use_filter_collection = True
        context['area'].spaces[0].use_filter_collection = True
        context['area'].spaces[0].use_filter_object_content = True
        context['area'].spaces[0].use_filter_children = True
        context['area'].spaces[0].use_filter_object_light = True
        context['area'].spaces[0].use_filter_object_camera = True
        context['area'].spaces[0].use_filter_object_empty = True
        context['area'].spaces[0].filter_text = ""

        
        break

.

Edit: So yeah, overall this “works”. Not sure if i can easily set it to be a certain size/centered. But isn’t a huge deal if not…

I found this post, and I was able to actually get this to work, where I can popup my custom outliner, with my filters, and then resize/position the window and even set to always be on-top. Pretty neat!

Although that’s funny because I just bought this add-on I realized. So I am basically doing what his Addon does in a sense. Although he doesn’t let you customize the settings of the Outliner, so that’s the main reason I was looking into all of this, haha.

I thought of suggesting you autohotkey, but your solution is much better.

Also I noticed a bug in the outliner. If you disable collections, then objects that have a parent won’t display.

1 Like

Oh interesting… I didn’t try the parent thing yet… hm. I don’t do alot of that kinda thing in my work, but is definitely something I’ll have to watch out for then, unless they fix that.

I reported this bug
https://developer.blender.org/T74796

1 Like

Great, thank you!

I added Preferences now to my little Addon, so can set Custom WIndow Position/Size or try to Center the the Main Window/Set Always On Top. :slight_smile:

image

2 Likes