Page MenuHome

First steps for a User-Preferences/Settings redesign
ClosedPublic

Authored by Julian Eisel (Severin) on Feb 28 2018, 6:13 PM.

Details

Summary

These are basically some initial changes for T54115.

  • Add sidebar region for navigation tabs
  • Rename "User Preferences" to "Settings" in the UI
  • Add placeholder sections for workspaces (commented out for now)
  • Initial grouping/categorizing of settings sections
Current look
With possible new sections

Although most changes are trivial, some affect compatibility, so rather have another pair
of eyes check over them. I'd like to commit this to blender2.8 and continue
work then (check on final sectioning, discuss final layout & contents of each
section, add search button, etc).
I'm not sure about how I made uiLayout.prop able to use sections for expanded enums.

NOTE: All changes here are tentative, some are even just experiments. Nothing is set in stone.

Diff Detail

Repository
rB Blender

Event Timeline

Julian Eisel (Severin) edited the summary of this revision. (Show Details)Feb 28 2018, 6:21 PM
Brecht Van Lommel (brecht) requested changes to this revision.EditedFeb 28 2018, 8:59 PM

Great improvement I think, some comments.

  • User Preferences -> Settings may be the most compatibility breaking change here, since it affects docs, tutorials, forum posts, etc. If the settings UI is totally changing it's unavoidable that these go out of date though so that seems acceptable? Personally I don't have a strong opinion on the name.
  • Maybe make the window wider to make the buttons the same width as before, comment out the workspace enum items, and leave the system settings in one tab for the first patch. Better to do one thing at a time and avoid half-finished stuff in intermediate commits unless we have to.
  • It's a bit weird not to have the editor switching menu all the way in the left bottom corner. The other buttons in this header belong with the main window region though, so it makes sense to have them there. Not sure about the best solution.
release/scripts/startup/bl_ui/space_info.py
138 ↗(On Diff #10129)

Keep the ..., we use it to indicate opening a window or file browser.

release/scripts/startup/bl_ui/space_userpref.py
75

Can we remove the group parameter and just always do the group if the enum has such labels? Would it break anything?

source/blender/blenkernel/intern/screen.c
683–685

I prefer to keep the ar naming convention unless we change it everywhere.

source/blender/editors/screen/screen_ops.c
4355–4356

I would simplify it to "Edit user preferences, workspaces and system settings". No need to be specific about showing a window or repeating the operator name.

source/blender/makesrna/intern/rna_userdef.c
4929

I would leave this as Editing, the current settings in this tab seem to be about editing data still, not general settings? We can rename it when that changes.

4938

No hyphen in Keymap, we don't do it elsewhere in the UI or docs.

This revision now requires changes to proceed.Feb 28 2018, 8:59 PM

I said this in a commit message but will post the comment here:

Maybe we should discuss a different ratio? 3:5 is a little strange with the "wide standard" we have today.

  • User Preferences -> Settings may be the most compatibility breaking change here, since it affects docs, tutorials, forum posts, etc. If the settings UI is totally changing it's unavoidable that these go out of date though so that seems acceptable? Personally I don't have a strong opinion on the name.

Think it's fine to break this compatibility. The changes would be in 2.80, which already breaks docs and such in a rather major way.

  • Maybe make the window wider to make the buttons the same width as before, comment out the workspace enum items, and leave the system settings in one tab for the first patch. Better to do one thing at a time and avoid half-finished stuff in intermediate commits unless we have to.

Don't have a strong opinion on the window size, but it does depend on the final layouts we choose for sections. So maybe better wait a bit to avoid too much back and forth? Rest would be fine for me.

  • It's a bit weird not to have the editor switching menu all the way in the left bottom corner. The other buttons in this header belong with the main window region though, so it makes sense to have them there. Not sure about the best solution.

Honestly I think we should just hide it. The UserPref/Settings window is quite special, even if it's realized with our regular editor design. I don't think people switch the editor there, it's just visual clutter and confuses beginners.

release/scripts/startup/bl_ui/space_userpref.py
75

Simple answer is: I don't know. Maybe it doesn't break anything, but hard to tell since many add-ons use this. I could try to check current UI scripts and bundled add-ons though.

Alternatively we could make uiLayout.props_enum more flexible. However, thinking about the search feature, I could imagine we'd want to hide or gray out sections that don't contain a result. Therefore, manually adding items using prop_enum might be better. Issue with that is, the labels are not exposed to .py I think.

source/blender/blenkernel/intern/screen.c
683–685

Ah! This is a bit of a pet peeve of mine :) First of all because I generally prefer to be explicit and avoid abbreviations. This is a perfect example why: It's very easy to confuse ar as standing for "area", instead of "a(rea)-region".

Of course the point you make is fair, but I'd actually like to propose this new convention. I'll post to the ML or devtalk.b.org to check on this further.

source/blender/makesrna/intern/rna_userdef.c
4929

I find 'Editing' a weird name for this TBH. What does it mean really? Everything you do with computers is in some way 'editing'. The section also contains a whole bunch of UI settings like for F-Curve visualization, sculpt overlay color, node auto-offset margin, etc. Where to draw a line between 'Editing' and 'Interface'? Maybe we should completely rethink this section though.

Then again, it probably doesn't matter much.

Don't have a strong opinion on the window size, but it does depend on the final layouts we choose for sections. So maybe better wait a bit to avoid too much back and forth? Rest would be fine for me.

This patch makes the Input/Theme/Addons layout look bad since there's not enough space. We never know how long it takes for such things to be fixed, so best not to break them at all and make the window smaller again when there is a solution.

Honestly I think we should just hide it. The UserPref/Settings window is quite special, even if it's realized with our regular editor design. I don't think people switch the editor there, it's just visual clutter and confuses beginners.

If you switch an area in the main window to the user preferences you need to be able to switch back though. And we could disallow that, but it's been occasionally useful with graphics drivers that crash opening new windows so I rather keep that working. In the dedicated user preferences window it could be hidden.

release/scripts/startup/bl_ui/space_userpref.py
75

I couldn't find any addon creating an enum property with such labels, so it seems pretty safe to me.

But prop_enum is fine as well, just writing the labels manually in Python is not a big deal I think.

source/blender/makesrna/intern/rna_userdef.c
4929

I don't think Editing is particularly descriptive, but General seems even less so. Some of these settings definitely belong under "Interface" or "Drawing" and could use a bigger reorganization.

Julian Eisel (Severin) marked 11 inline comments as done.
  • Address most minor points from review
  • Revert some rather experimental changes

All points should be addressed now. I kept the system "General" section (contains all system settings), think that's fine, even for an initial commit to blender2.8.

I suggest to keep Interface at the top for now, and to rename Save User Settings to Save Settings in the header.

This revision is now accepted and ready to land.Mar 20 2018, 1:17 AM
Campbell Barton (campbellbarton) requested changes to this revision.EditedMar 20 2018, 8:41 AM

Generally LGTM (one blocking issue w/ alloca).

UI for themes and add-ons has 2x columns of buttons next to each other, I find this a bit strange - though not a blocker.

Other notes inline.

source/blender/blenkernel/intern/screen.c
674

Prefer keep dunder for special cases __file__, __HEADER_H__ etc. _not_ would do? :)

source/blender/editors/interface/interface_layout.c
695

alloca in a loop will add to the stack each time.

Probably we never hit any issues here in practice but it's bad practice and reads like a bug, better use a fixed size. (otherwise mode the alloca into a function).

source/blender/makesdna/DNA_userdef_types.h
698

Could call *_DISPLAY ? - More general, not an action.

source/blender/windowmanager/WM_api.h
130 ↗(On Diff #10209)

We could keep this as-is since USER* is currently used all over the code.

OTOH. don't have a strong opinion on this.

This revision now requires changes to proceed.Mar 20 2018, 8:41 AM
  • Use new navigation region type for UserPref navigation
  • Update default theme for UserPref navigation bar
  • Scale up layout & use icons for category groups
  • Address review inline comments
  • Move interface item back to top
  • Rename operator: "Save User Preferences" -> "Save Settings"
Julian Eisel (Severin) edited the summary of this revision. (Show Details)Nov 24 2018, 2:15 AM

Hi, Looks good.
Any screenshots of the Themes/Input sections? 😃

The contents are unchanged, so except from the new navigation bar, they look like before:

Thanks. One question, will those areas be scrollable independent?

For me that's one of the main issues currently, we have to scroll a lot when configuring stuff.

Thanks. One question, will those areas be scrollable independent?

For me that's one of the main issues currently, we have to scroll a lot when configuring stuff.

The leftmost section is now independently scrollable from the rest, but the theme category (User Interface, Text Style, ...) is unmodified. I'd love to have further improvements there but that's not in scope of this patch.

Julian Eisel (Severin) updated this revision to Diff 12641.EditedNov 24 2018, 1:44 PM
  • Move File section into system group and rename to "Files"

If there are no objections I'll commit this to blender2.8 soon. All points from review should be addressed by now.

Julian Eisel (Severin) marked 3 inline comments as done.Nov 24 2018, 1:45 PM

The leftmost section is now independently scrollable from the rest, but the theme category (User Interface, Text Style, ...) is unmodified. I'd love to have further improvements there but that's not in scope of this patch.

Alright, thanks.

One last thing, could you add a button to open the blender's preferences folder?
Like:

This is somewhat an important directory for configuration, and yet a lot of people still seems to not know it's exact location. Besides, this is pretty common on the user preferences of several 3d apps.
On windows that would be %AppData%\Blender Foundation\Blender\2.80

Thx.

  • Bump subversion for adding navigation region correctly on file load
  • Rename User Preferences to Settings in new menus
  • Minor refactor of enum item grouping logic
This revision was not accepted when it landed; it landed in state Needs Review.Nov 25 2018, 5:10 PM
This revision was automatically updated to reflect the committed changes.