From BlenderWiki

Jump to: navigation, search

Proposals, ideas, suggestions, discussions!

(To keep this section readable, please just insert a single line of text with link to the full proposal)

A Proposal for Blender Interface Creation, Editing and Configuration

Agenda Topics


  • Navigation; where are things (data, properties, tools), and how do you find them
  • Communication; uniform methods for errors, messages, menus, colors, icons, ...?
  • Classifying; mental models, locus of attention, etc. (editing Screen layouts, edit modes, painting?)
  • Context; what is 'active' or 'selected', editing multiple selected items, how do editors cooperate?
  • Implementation of UI layouts, fully automated lists (RNA), versus semi-automated lists (style sheets), versus fully custom UIs. Python?
  • Keymap definition rules
  • User presets; coping with multi-window layouts, where to save this (.B.blend ?), multiple config files? Separate out user prefs + themes?
  • Python; 2.5 or 3.0? Compatibility issues... how to get this design solved!


  • Tools - blocking vs non-blocking. What constitutes a mode vs a tool? How to unblock tools like knife, loop cut, etc? How to make tools and tool properties 'editable' in realtime.
  • User preferences, saving preferences, presets for transitioning users
  • Defining custom UI functionality (custom menus, radial menus, hotkeys, toolbars)
    • (William) What do you mean by 'custom'? You mean user-generated?
  • Design proposals for potential future editors (integrated console, logging/reporting system, media/data library)


  • Tools context: Are tools local to the current view, or are they global, for use in both 3d, uv, sequencer, etc? Do they get their own window type, or are they tucked into each view?
  • Drag and drop: Perhaps adding an API for dealing with this, for use in assigning materials, meshes, colors, parenting, moving texture layers around etc.
  • Define how Python scripts integrate in the UI. If buttons and tool lists are auto generated, perhaps Python tools can nicely reside inline with C-tools.
  • Also regarding Python: How import scrips can be called from within the File Browser, so we don't need separate import commands for each file type.
  • Define a uniform tool interaction model. Most tools manipulate things in a range such as 0% - 100%, but currently it varies how this is manipulated using the keyboard and mouse. Also, for things with infinite ranges, such as translations, how about cursor screen wrap?
  • Mac platform compatibility: Switch from Carbon to Cocoa for 64 bits, put .blender folder in /Library/Application Support/, menus in OS menu bar?


  • Meta operators (transform, subdivide, ...) and how to simplify them
  • Modal operators keymap: how to set hotkeys used during modal operators on the same level of customizability as operator keymaps (if user remaps rotation to a key X, you want that key to switch to rotation during transform too. Same for axis keys, confirm/cancel mouse buttons, ...)
  • Talk to William about Transform Input fonctions -> uniform tool interactions


  • File operators and keymap
  • Define desired functionality and workflow for filebrowser
  • Drag and Drop for Linking/Appending?
  • Large icons, how to integrate them
  • UI Design: Layout of buttons etc...

(Aligorith - Unable to attend. Move the following info to a more appropriate place if needed...)

  • User-definable names - feasibility for changing the length of these, and/or some guidelines on what to use (64+ ?)
  • Roles of 'headers' vs 'toolbars' - where would quick-access settings for things like values of active keyframe go?
  • Grease Pencil - on what level(s) of the interface should this be exposed at, and what would be the optimum interaction method (i.e. modal 'enter drawing mode -> draw stroke -> draw another stroke -> ... -> end drawing mode' or what?)
  • (Probably falling under some of the other mentioned categories) where and how should settings for various editors (i.e. animation - graph, dopesheet - editors, sequencer, nodes, image?) should be presented. Are the current NKEY regions here to stay, or should this info be put in other spaces? If so, how do we define coherent context(s) so that user knows what (or where the data comes from) they are editing.
  • Any cool ideas for further streamlining anim workflow? (Currently, in my ideas stack are: 2d-transform manipulators, 'tension drivers', bone chain combing, bone path editing)
  • Behaviour of slider widgets - narrower soft limits which make their dragging abilities actually useful? adaptive step sizes based on movement speed and/or secondary (y/vertical) axis movement?


  • The UI topics I can think of have been mentioned, so these are more technical and perhaps not suited as part of the main discussion.
  • Clarify the use of operators for tools and python api. Operators are not completely fit for use as python functions. The selection sets discussion and Blender API proposal demonstrate this. The main issue is, how does the operator know which data to work on?
  • Various RNA properties are not editable, mainly because setting them involves more code than just setting the variable. This code may be in blenkernel or in an operator, how clever do we want to make RNA set functions?
  • User preferences and operator properties overlap. Additionally for macros and python scripting it may be good if they can run with different user preferences than the current ones, for reliable results. Perhaps we need a better way for operators to access user preferences.


  • Python context - need to define a direction. data context. push/pop user context, copy user context?
  • Pythons view on data, How does python reference data - Selection groups?
  • RNA/Operators - grey area inbetween this, alredy discussed.
  • PyAPI Memory managing - tooltips, pointer invlidation. Dissallow PyObjects to persist.
  • Other API's - UI / Keymaps / OpenGL access?
  • Remove old API - Scriptlinks
  • Do we have manual lauout panels??? - if so do we want a py api. Should the UI even use python? ID Props define RNA?? -
  • Python Version (3.x?)

Python API - Review what we have.

Wintercamp agenda

We started the first session with giving everyone time to communicate issues or give an overview of all the work that has been done. Whenever topics popped up we didn't find clear or discussed on, it was added to the design list:

- Multiwindow conventions
- i8n and hotkeys
- Modal tools design
- Visualize active vs. selected
- Icons and color language
- Generated UI concepts
- Screen top-level tools
- Per Editor Reviews
- Python: how to handle Context / selection
- Install Standards
- Py 3.0?
- Review current py status for blender 2.5
- Operator and RNA design
- UI Layout concept/conventions
- Grease Pencil...
- Layer Editor
- Defaults, .B.blend
- Python Terminal Command Context
- Pin vs. follow context
- Tool settings, toolbars and 'redo'

Not every topic got enough attention, there's enough to continue on online.
On the other wintercamp page you can find the notes related to the above.