UI Experiment: Top Bar Quick Buttons #116967

Open
Harley Acheson wants to merge 1 commits from Harley/blender:TopBarIcons into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
Member

Just an experiment in adding an option to show quick icon buttons in the Top Bar


image

image

Just an experiment in adding an **option** to show quick icon buttons in the Top Bar --- ![image](/attachments/3a6de74d-070d-461a-bed9-f478021bdb56) ![image](/attachments/5d2efdf5-48d8-4f64-915a-650d0544cf61)
Harley Acheson added 1 commit 2024-01-10 01:10:55 +01:00
b91d522d55 UI Experiment: Top Bar Quick Buttons
Just an experiment in adding an option to show quick icon buttons in the Top Bar
Harley Acheson added this to the User Interface project 2024-01-10 01:13:38 +01:00
First-time contributor

This looks like a very interesting experiment! If this "quick bar" would accept any operator as a button (maybe taken from a list akin to the Quick Favorites and/or saved in Preferences) it would be fantastic for general use. I think something like that would cover the use of many of those little "one button" add-ons and would also help for first timers or people coming from other software to ease the migration.

This looks like a very interesting experiment! If this "quick bar" would accept any operator as a button (maybe taken from a list akin to the Quick Favorites and/or saved in Preferences) it would be fantastic for general use. I think something like that would cover the use of many of those little "one button" add-ons and would also help for first timers or people coming from other software to ease the migration.
Author
Member

This looks like a very interesting experiment! If this "quick bar" would accept any operator as a button (maybe taken from a list akin to the Quick Favorites and/or saved in Preferences) it would be fantastic for general use.

Total customization would be ideal, but that potentially requires adding, removing, reordering, dealing with grouping separators, etc. I personally think a minimum implementation might just be a right-click menu where you can toggle user preferences for showing hard-coded sections. As in there would be 10 checkboxes and you could enable "File I/O", "undo/redo", "animation controls", etc. Then someone (else) can carefully craft and improve those sections. Might be enough for most users who would actually use this kind of thing?

> This looks like a very interesting experiment! If this "quick bar" would accept any operator as a button (maybe taken from a list akin to the Quick Favorites and/or saved in Preferences) it would be fantastic for general use. Total customization would be ideal, but that potentially requires adding, removing, reordering, dealing with grouping separators, etc. I personally think a _minimum_ implementation might just be a right-click menu where you can toggle user preferences for showing hard-coded sections. As in there would be 10 checkboxes and you could enable "File I/O", "undo/redo", "animation controls", etc. Then someone (else) can carefully craft and improve those sections. Might be enough for most users who would actually use this kind of thing?
Contributor

If this space just has api and custom buttons can be added from there community will do the rest

If this space just has api and custom buttons can be added from there community will do the rest
First-time contributor

This looks like a very interesting experiment! If this "quick bar" would accept any operator as a button (maybe taken from a list akin to the Quick Favorites and/or saved in Preferences) it would be fantastic for general use.

Total customization would be ideal, but that potentially requires adding, removing, reordering, dealing with grouping separators, etc. I personally think a minimum implementation might just be a right-click menu where you can toggle user preferences for showing hard-coded sections. As in there would be 10 checkboxes and you could enable "File I/O", "undo/redo", "animation controls", etc. Then someone (else) can carefully craft and improve those sections. Might be enough for most users who would actually use this kind of thing?

Would we be able to expand this using Python, rather than C/C++? I can see this being very popular in my game dev studio.

> > This looks like a very interesting experiment! If this "quick bar" would accept any operator as a button (maybe taken from a list akin to the Quick Favorites and/or saved in Preferences) it would be fantastic for general use. > > Total customization would be ideal, but that potentially requires adding, removing, reordering, dealing with grouping separators, etc. I personally think a _minimum_ implementation might just be a right-click menu where you can toggle user preferences for showing hard-coded sections. As in there would be 10 checkboxes and you could enable "File I/O", "undo/redo", "animation controls", etc. Then someone (else) can carefully craft and improve those sections. Might be enough for most users who would actually use this kind of thing? > > > Would we be able to expand this using Python, rather than C/C++? I can see this being very popular in my game dev studio.
Author
Member

Would we be able to expand this using Python, rather than C/C++?

Fairly certain you could do this as it is now. It is really just an extra region added to the TopBar with content entirely in a python file. A python addon could add to this as easily as it could add a button to any editor's header.

I can see this being very popular in my game dev studio.

Can you explain why?

> Would we be able to expand this using Python, rather than C/C++? Fairly certain you could do this as it is now. It is really just an extra region added to the TopBar with content entirely in a python file. A python addon could add to this as easily as it could add a button to any editor's header. > I can see this being very popular in my game dev studio. Can you explain why?
First-time contributor

Would we be able to expand this using Python, rather than C/C++?

Fairly certain you could do this as it is now. It is really just an extra region added to the TopBar with content entirely in a python file. A python addon could add to this as easily as it could add a button to any editor's header.

I can see this being very popular in my game dev studio.

Can you explain why?

Great that it can be modified in Pyhon (hopefully by artists with limited coding skills)

It will be popular in my studio because it will allow the repetition of tasks to be done quicker. If I have to export a racing track from my 3d program to a mobile phone or console 30 times a day then this would speed up my workflow.

Having a button with an icon (of the art you want to export) and maybe some text would speed up work and lead to less confusing errors (artists saving over the wrong file)

If a different artist could load the top bar quick buttons then we could work on art we were unfamilar with and know its the racing track is being exported to the correct place.

> > Would we be able to expand this using Python, rather than C/C++? > > Fairly certain you could do this as it is now. It is really just an extra region added to the TopBar with content entirely in a python file. A python addon could add to this as easily as it could add a button to any editor's header. > > > I can see this being very popular in my game dev studio. > > Can you explain why? Great that it can be modified in Pyhon (hopefully by artists with limited coding skills) It will be popular in my studio because it will allow the repetition of tasks to be done quicker. If I have to export a racing track from my 3d program to a mobile phone or console 30 times a day then this would speed up my workflow. Having a button with an icon (of the art you want to export) and maybe some text would speed up work and lead to less confusing errors (artists saving over the wrong file) If a different artist could load the top bar quick buttons then we could work on art we were unfamilar with and know its the racing track is being exported to the correct place.
First-time contributor

I think kromar/blender_Shelves: Custom Header Buttons could be a nice inspiration for the customization part.

image

It adds a menu to chose different sets of buttons, which can be customized in the addon's preferences.

I guess this current change could at least allow this addon to have its own dedicated space instead of using the workspaces tabs bar. But perhaps it can serve as inspiration for the future.

I would really love this kind of things to be part of Blender. I miss that kind of ease of access in Blender compared to other softwares, especially when working via tablet or maximized viewport. Being able to make your own compact palette of tools and options is amazing.

I think [kromar/blender_Shelves: Custom Header Buttons](https://github.com/kromar/blender_Shelves) could be a nice inspiration for the customization part. ![image](/attachments/581daac9-29af-4363-bea4-13efc100792b) It adds a menu to chose different sets of buttons, which can be customized in the addon's preferences. I guess this current change could at least allow this addon to have its own dedicated space instead of using the workspaces tabs bar. But perhaps it can serve as inspiration for the future. I would really love this kind of things to be part of Blender. I miss that kind of ease of access in Blender compared to other softwares, especially when working via tablet or maximized viewport. Being able to make your own compact palette of tools and options is amazing.
213 KiB
First-time contributor

Great experiment! It's very "industry-standard" of sorts, but it also seems... lazy. I would by all means try to avoid the browser plugin era of the 2000's. What would be some arguments for implementing this? Could we solve the problems those arguments touch in better ways? I think it's important that Blender doesn't just keep duct-taping on "solutions" without a clear vision for its UI. An incredible challenge for a swiss army knife software, but doable with careful consideration.

The year 2005 in one image

too_many_toolbars-2040973849

Great experiment! It's very "industry-standard" of sorts, but it also seems... lazy. I would by all means try to avoid the browser plugin era of the 2000's. What would be some arguments for implementing this? Could we solve the problems those arguments touch in better ways? I think it's important that Blender doesn't just keep duct-taping on "solutions" without a clear vision for its UI. An incredible challenge for a swiss army knife software, but doable with careful consideration. <details><summary>The year 2005 in one image</summary> ![too_many_toolbars-2040973849](/attachments/10007157-5464-4885-ad7f-ed95f13ba438) </details>
Author
Member

Great experiment! It's very "industry-standard" of sorts, but it also seems... lazy.

That's a good summary of our feelings in the UI module as well.

I'm glad I made this, because for many ideas I can't really get a sense of them without actually seeing and using it. And sometimes failures with them lead to different and better solutions. So I love working prototypes.

> Great experiment! It's very "industry-standard" of sorts, but it also seems... lazy. That's a good summary of our feelings in the UI module as well. I'm glad I made this, because for many ideas I can't really get a sense of them without actually seeing and using it. And sometimes failures with them lead to different and better solutions. So I love working prototypes.
First-time contributor

Great experiment! It's very "industry-standard" of sorts, but it also seems... lazy.

That's a good summary of our feelings in the UI module as well.

I'm glad I made this, because for many ideas I can't really get a sense of them without actually seeing and using it. And sometimes failures with them lead to different and better solutions. So I love working prototypes.

I think lots of production artists would bite your leg off even to have this 'lazy' implementation :) At the momement we dont have anything.

> > Great experiment! It's very "industry-standard" of sorts, but it also seems... lazy. > > That's a good summary of our feelings in the UI module as well. > > I'm glad I made this, because for many ideas I can't really get a sense of them without actually seeing and using it. And sometimes failures with them lead to different and better solutions. So I love working prototypes. > > > I think lots of production artists would bite your leg off even to have this 'lazy' implementation :) At the momement we dont have anything.
Author
Member

I think lots of production artists would bite your leg off even to have this 'lazy' implementation :) At the momement we dont have anything.

What is it about this that seems useful? Why? What is the minimum requirements for something like this?

> I think lots of production artists would bite your leg off even to have this 'lazy' implementation :) At the momement we dont have anything. What is it about this that seems useful? Why? What is the minimum requirements for something like this?
First-time contributor

I am no UI designer, just a random user with experience using different softwares in addition to Blender trying to voice thoughts to make it better.

Great experiment! It's very "industry-standard" of sorts, but it also seems... lazy. I would by all means try to avoid the browser plugin era of the 2000's.

I understand you fear it would give too big of an opportunity for dumping any random thing in one place and making a mess?
If so, I think that's the state of the viewport sidebar right now, even with the workspace filtering. But I don't think the culprit here is the existence of said sidebar, nor of a potential buttons-topbar. Instead, I feel like it's a combination of things, like a lack of good options / directives for addon devs to inject their GUI, the lack of accessible user customizability, ...

I actually think that implementing "more suitable GUI targets", and pushing user customizability, are genuine solutions to these concerns.

A FOSS example of this kind of design philosophy of "have a top bar you can populate yourself" that I think is done well is in the musical notation app Musescore:

image

That "Note Input Bar" can be docked where you want, or even left floating around. And you can choose what to show in there with a drop down list:

image

Their lead designer explained how they redesigned it a bit for v4

This is one of those tweaks that lets us scale in future too,
...so when we want to add potentially useful options (...),
...we can do so without worrying too much about clutter.
Let the user chose what they want and don't want.

Another FOSS example is painting app Krita:

image

This one also allows showing multiple toolbars at once via a drop-down menu.

It doesn't mean a mess can't be done. You can get a 2000s browser. But the baseline out of the box is clean, and all the tools to control it are given to the user so that they can fix or avoid the mess, or make it their own if they like it.
Whereas now, you can't avoid having a mess with only a few addons installed, and you can solve the mess only by disabling addons, which is quite a flow-disruptive action to perform.


What would be some arguments for implementing this?

Accessibility: having a way to make your "palette of tools and options" is of a great help, allows you to choose your tools once and then let yourself go in the flow of work with all your needs at disposal with no interruption. And when using tablets and pen, buttons definitely feel better than having to unfold menus and panels.

GUI alternatives: addons GUI that are often shoved "by default" in the viewport sidebar just to add one button or are hidden in submenus or accessible only by operator search could be buttoned there either by the addon dev or the user himself.

Empowering User: Not only let the user chose what they want, but make it easy to do so. Don't make it a requirement to be an addon developer. Lower the barrier of entry from "learning python and bpy and addon development" to clicking three buttons a six-year-old could do.

Flexibility: because it is versatile and user-customizable, you could have anything you want there. Especially if you allow multiple layers/tabs/presets. It makes it easier to have different "kinds" of toolbars for different kinds of needs: thematic (file management, pipeline/project management), department/task oriented (animation, sculpting, ...), user-specific (toggle between shot-cam and face-character cam, order dinner button, toggle specific sets of overlays, toggle specific selection restriction sets, ticket my lead, ...)

I am no UI designer, just a random user with experience using different softwares in addition to Blender trying to voice thoughts to make it better. > Great experiment! It's very "industry-standard" of sorts, but it also seems... lazy. I would by all means try to avoid the browser plugin era of the 2000's. I understand you fear it would give too big of an opportunity for dumping any random thing in one place and making a mess? If so, I think that's the state of the viewport sidebar right now, even with the workspace filtering. But I don't think the culprit here is the existence of said sidebar, nor of a potential buttons-topbar. Instead, I feel like it's a combination of things, like a lack of good options / directives for addon devs to inject their GUI, the lack of accessible user customizability, ... I actually think that implementing "more suitable GUI targets", and pushing user customizability, are genuine solutions to these concerns. A FOSS example of this kind of design philosophy of "have a top bar you can populate yourself" that I think is done well is in the musical notation app Musescore: ![image](/attachments/2908b82c-59ba-4be0-b0ff-44d2ad287009) That "Note Input Bar" can be docked where you want, or even left floating around. And you can choose what to show in there with a drop down list: ![image](/attachments/838e284b-e3cd-48ea-a5c8-ccd5fdf63621) [Their lead designer explained how they redesigned it a bit for v4](https://youtu.be/Qct6LKbneKQ?si=1NRpsPo9dXyq0lXY&t=663) > This is one of those tweaks that lets us scale in future too, > ...so when we want to add potentially useful options (...), > ...we can do so without worrying too much about clutter. > Let the user chose what they want and don't want. Another FOSS example is painting app Krita: ![image](/attachments/2cedd82a-e05a-496e-bf77-0cc098cd3f51) This one also allows showing multiple toolbars at once via a drop-down menu. It doesn't mean a mess can't be done. You can get a 2000s browser. But the baseline out of the box is clean, and all the tools to control it are given to the user so that they can fix or avoid the mess, or make it their own if they like it. Whereas now, you can't avoid having a mess with only a few addons installed, and you can solve the mess only by disabling addons, which is quite a flow-disruptive action to perform. ----- > What would be some arguments for implementing this? Accessibility: having a way to make your "palette of tools and options" is of a great help, allows you to choose your tools once and then let yourself go in the flow of work with all your needs at disposal with no interruption. And when using tablets and pen, buttons definitely feel better than having to unfold menus and panels. GUI alternatives: addons GUI that are often shoved "by default" in the viewport sidebar just to add one button or are hidden in submenus or accessible only by operator search could be buttoned there either by the addon dev or the user himself. Empowering User: Not only let the user chose what they want, but make it easy to do so. Don't make it a requirement to be an addon developer. Lower the barrier of entry from "learning python and bpy and addon development" to clicking three buttons a six-year-old could do. Flexibility: because it is versatile and user-customizable, you could have anything you want there. Especially if you allow multiple layers/tabs/presets. It makes it easier to have different "kinds" of toolbars for different kinds of needs: thematic (file management, pipeline/project management), department/task oriented (animation, sculpting, ...), user-specific (toggle between shot-cam and face-character cam, order dinner button, toggle specific sets of overlays, toggle specific selection restriction sets, ticket my lead, ...)
Merge conflict checking is in progress. Try again in few moments.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u TopBarIcons:Harley-TopBarIcons
git checkout Harley-TopBarIcons
Sign in to join this conversation.
No reviewers
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
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
6 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#116967
No description provided.