Outliner on "Blender File" display mode to show use count + fake user column #118655

Open
opened 2024-02-23 11:35:06 +01:00 by Dalai Felinto · 11 comments

I would like to propose these improvement to the outliner. They could be tackled one-by-one.

When in the "Blender File" Display Mode ...

  1. Show the user count (when != 1) in a little circle by the data-blocks
  2. Add a new column on the right that shows the 'F' for fake-user (it should be clickable or even draggable).

The column should be hidden by default, but toggable via the filter menu (which will need to become a menu, right now is just a toggle button).

The initial use-case for this is for animators to be able to manage their actions when bringing them from other files. But I can see this being useful for other data-block as well.

Mockup of 1 + 2:

image


Bonus thoughts:

3. The datablocks with more than 1 user could be expandable to show which data-block is using them. That even makes it more aligned with the idea that numbers in the Outliner are to show how many elements are nested inside it.

  • See Brecht's comment as one of the replies. There are other options to explore. Either way, I would first get 1 and 2 in main before worrying about the 3.

I believe the API we have supports this (the reverse path to who uses the data-block). But you could see this part as more of an exploration option. If it feels it would take too much time is worth re-evaluating it.

I would like to propose these improvement to the outliner. They could be tackled one-by-one. When in the "Blender File" Display Mode ... 1. Show the user count (when != 1) in a little circle by the data-blocks 2. Add a new column on the right that shows the 'F' for fake-user (it should be clickable or even draggable). The column should be hidden by default, but toggable via the filter menu (which will need to become a menu, right now is just a toggle button). The initial use-case for this is for animators to be able to manage their actions when bringing them from other files. But I can see this being useful for other data-block as well. Mockup of 1 + 2: ![image](/attachments/eb46ba18-77ed-4f99-bf97-160ab3cbea31) --------------------------------------------------------- Bonus thoughts: ~~3. The datablocks with more than 1 user could be expandable to show which data-block is using them. That even makes it more aligned with the idea that numbers in the Outliner are to show how many elements are nested inside it.~~ - See Brecht's comment as one of the replies. There are other options to explore. Either way, I would first get 1 and 2 in main before worrying about the 3. I believe the API we have supports this (the reverse path to who uses the data-block). But you could see this part as more of an exploration option. If it feels it would take too much time is worth re-evaluating it.
Dalai Felinto added the
Type
To Do
label 2024-02-23 11:35:06 +01:00
Dalai Felinto added this to the User Interface project 2024-02-23 11:35:08 +01:00
Harley Acheson was assigned by Dalai Felinto 2024-02-23 11:45:21 +01:00
Contributor

Yes!

Number of users and fake user shield is already shown in "Orphaned Data" mode, so probably is portable
image

Also size for data-blocks that have it (images, sounds, movie clips) would be very helpful.
https://blender.community/c/rightclickselect/q250/

Yes! Number of users and fake user shield is already shown in "Orphaned Data" mode, so probably is portable ![image](/attachments/f5ab309f-85ca-42eb-9985-319d2b5be14f) Also size for data-blocks that have it (images, sounds, movie clips) would be very helpful. https://blender.community/c/rightclickselect/q250/
1.4 KiB
Member

I believe the API we have supports this (the reverse path to who uses the data-block)

Havent checked, but at least python API has it:

bpy.data.user_map(subset=(bpy.data.actions['Jumping'], ))

https://docs.blender.org/api/4.2/bpy.types.BlendData.html#bpy.types.BlendData.user_map

>I believe the API we have supports this (the reverse path to who uses the data-block) Havent checked, but at least python API has it: `bpy.data.user_map(subset=(bpy.data.actions['Jumping'], ))` https://docs.blender.org/api/4.2/bpy.types.BlendData.html#bpy.types.BlendData.user_map

The datablocks with more than 1 user could be expandable to show which data-block is using them. That even makes it more aligned with the idea that numbers in the Outliner are to show how many elements are nested inside it.

I don't think the users should show in the outliner hierarchy. For other cases of nesting the relation goes in the other direction. I would rather imagine it in a tooltip or menu when clicking the user count.

> The datablocks with more than 1 user could be expandable to show which data-block is using them. That even makes it more aligned with the idea that numbers in the Outliner are to show how many elements are nested inside it. I don't think the users should show in the outliner hierarchy. For other cases of nesting the relation goes in the other direction. I would rather imagine it in a tooltip or menu when clicking the user count.
Member

Not sure about showing the user count as shown in the mockup, since we do that to show number of enclosed list items, including on that page.

If you collapse "Actions" I think it would then show "Actions" followed by an icon for action with little 3 at its bottom right. But that would indicate the number of actions, not the number of users. Then you'd open that up and each would be indicating a different thing in the same way. That sounds confusing.

I also don't like the indication there of 0,234, skipping 1. I understand the reasoning that 1 is the normal case, but it still doesn't explain itself well. Perhaps do show 2,3, etc skipping 1, but treat 0 as more special. Perhaps showing it as a red "X" or similar. But again, I don't like the idea of using that number for both user count and item count without a way to distinguish the two.

My only proposed solution is to just show the usercount like we do on the "Orphan Data" page. That does show the usercount unambiguously, although looking a bit redundant on one.

Not sure about showing the user count as shown in the mockup, since we do that to show number of enclosed list items, including on that page. If you collapse "Actions" I think it would then show "Actions" followed by an icon for action with little 3 at its bottom right. But that would indicate the number of actions, not the number of users. Then you'd open that up and each would be indicating a different thing in the same way. That sounds confusing. I also don't like the indication there of 0,234, skipping 1. I understand the reasoning that 1 is the normal case, but it still doesn't explain itself well. Perhaps do show 2,3, etc skipping 1, but treat 0 as more special. Perhaps showing it as a red "X" or similar. But again, I don't like the idea of using that number for both user count and item count without a way to distinguish the two. My only proposed solution is to just show the usercount like we do on the "Orphan Data" page. That does show the usercount unambiguously, although looking a bit redundant on one.
Member

Something like the following might also address my dislike for the current "Orphan Data" numbering?

image

Something like the following might also address my dislike for the current "Orphan Data" numbering? ![image](/attachments/937409ab-63aa-44ae-b277-82ec15651cb8)
9.1 KiB

The column should be hidden by default

Actually, I believe you should show it by default. I don't see why hiding it would be something particularly desireable.

> The column should be hidden by default Actually, I believe you should show it by default. I don't see why hiding it would be something particularly desireable.
Member

Agree this would be nice and agree that hiding it by default doesn't seem helpful if I am in there looking for information and know to get that far, I don't need things hidden from me as a user.

Agree this would be nice and agree that hiding it by default doesn't seem helpful if I am in there looking for information and know to get that far, I don't need things hidden from me as a user.

Something like the following might also address my dislike for the current "Orphan Data" numbering?

The fake user is a button you can toggle, I'm not sure including extra information on there is right?

Personally I think it would be good if we could make the user count show a tooltip with a list of users. Not only here, but also in datablock selectors throughout the user interface. If we do that, it's not ideal to have it shared with fake user.

> Something like the following might also address my dislike for the current "Orphan Data" numbering? The fake user is a button you can toggle, I'm not sure including extra information on there is right? Personally I think it would be good if we could make the user count show a tooltip with a list of users. Not only here, but also in datablock selectors throughout the user interface. If we do that, it's not ideal to have it shared with fake user.
Member

Personally I think it would be good if we could make the user count show a tooltip with a list of users. Not only here, but also in datablock selectors throughout the user interface. If we do that, it's not ideal to have it shared with fake user.

That's a great idea.

The fake user is a button you can toggle, I'm not sure including extra information on there is right?

It works like a hot damn actually.

In testing I'd lean into it a bit further than we currently do and show both "0" and "1." Together it really tells the story about what is going on. And if you also change the tooltip, it seems all pretty clear.

Top shows hovering over an item with zero users, middle an item with one fake user. For uses outside of "Orphaned Data", the third shows hovering over an item with more than one user.

image

A PR is available, with a more thorough explanation, for testing here: #118683

> Personally I think it would be good if we could make the user count show a tooltip with a list of users. Not only here, but also in datablock selectors throughout the user interface. If we do that, it's not ideal to have it shared with fake user. That's a great idea. > The fake user is a button you can toggle, I'm not sure including extra information on there is right? It works like a hot damn actually. In testing I'd lean into it a bit further than we currently do and show both "0" and "1." Together it really tells the story about what is going on. And if you also change the tooltip, it seems all pretty clear. Top shows hovering over an item with zero users, middle an item with one fake user. For uses outside of "Orphaned Data", the third shows hovering over an item with more than one user. ![image](/attachments/3e0ae3c3-8cfa-48fb-9cbb-c5ab1895a8f4) A PR is available, with a more thorough explanation, for testing here: #118683

Personally I think it would be good if we could make the user count show a tooltip with a list of users. Not only here, but also in datablock selectors throughout the user interface.

Very much agreed, as this sort of situation makes zero sense unless you really understand why it says '5' and not '1'. In a much more complicated scene, it can create some stress when determining "what is ACTUALLY in use here, that I still care about?"

>Personally I think it would be good if we could make the user count show a tooltip with a list of users. Not only here, but also in datablock selectors throughout the user interface. Very much agreed, as this sort of situation makes zero sense unless you really understand why it says '5' and not '1'. In a much more complicated scene, it can create some stress when determining "what is ACTUALLY in use here, that I still care about?"
Member

I have a PR here: #118691 but it is marked as a "demonstration" because it includes opinionated changes and some features we probably don't want to include. But pretty cool...

image

I have a PR here: #118691 but it is marked as a "demonstration" because it includes opinionated changes and some features we probably don't want to include. But pretty cool... ![image](/attachments/78af7aa4-3e01-4e65-b077-a523dbb77c36)
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser Project (Legacy)
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
7 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#118655
No description provided.