[Bf-taskforce25] operators and context
Ton Roosendaal
ton at blender.org
Sun Nov 23 11:58:34 CET 2008
Hi,
Multiple scenes inside 1 screen I've tried long ago when experimenting
with Blender 1.x design. It was immediately dropped because of
confusing context... a Screen itself is perceived as a single Context
UI unit, reacting to what a user activates. Users (back then) even
required a preset to enforce the 'current scene' to be global for all
Screens in a list. It's also useful to have one area (InfoWindow)
defining/visualizing entire Screen context.
My suggestion is that such a feature will be better served making
available on Window level, each with an own list of Screens having the
same Scene.
Note that allownig multiple Scene contextes means a local 'current
frame', with multiple object displaylists/states, which is not
supported yet.
BTW: Modes like "EditMode" or "WeightPaint mode" can be moved to Object
level itself, like PoseMode currently.
-Ton-
------------------------------------------------------------------------
Ton Roosendaal Blender Foundation ton at blender.org www.blender.org
Blender Institute BV Entrepotdok 57A 1018AD Amsterdam The Netherlands
On 23 Nov, 2008, at 8:05, Dietrich Bollmann wrote:
> Hi,
>
> On Sat, 2008-11-22 at 17:13 +0100, Ton Roosendaal wrote:
>> 1) Replace ugly globals in Blender code
> [...]
>> The first spec already is quite succesfully in use for
>> Window/Screen/Area context. Unresolved is for example "current .blend
>> file" or future features like local editmode, multiple scenes active,
>> etc. It should be well possible to refine that on moments when we
>> tackle the issue, and now stick to how Blender did it in past. Means:
>> "G.scene" and "G.obedit" will be just become a Context property,
>> effectively like a global, until we make it more local. It makes the
>> migration roadmap for 2.5 easier too.
>
> Does this mean that it will be possible to see different scenes in
> parallel in the future?
>
> I mean something like this:
>
> +--------------+--------------+
> | | |
> | 3D view | 3D view |
> | of Scene 1 | of Scene 2 |
> | | |
> +--------------+--------------+
> | button window |
> +-----------------------------+
>
> I actually hacked this together for my private blender version (here is
> a screen shot:
> http://formgames.org/blender/multi-scene-view/multi-scene-view.png )
> but I am sure that other people might find this useful also...
>
> Dietrich
>
>
>> -Ton-
>>
>> ----------------------------------------------------------------------
>> --
>> Ton Roosendaal Blender Foundation ton at blender.org
>> www.blender.org
>> Blender Institute BV Entrepotdok 57A 1018AD Amsterdam The
>> Netherlands
>>
>> On 7 Oct, 2008, at 18:03, Brecht Van Lommel wrote:
>>
>>>
>>> Hi,
>>>
>>> I'm trying to get a grip on the design of this context concept in
>>> 2.5,
>>> but parts of it are quite unclear to me. One of the areas that I'm
>>> unsure about is how operators figure out which data to operate on.
>>>
>>> Let's take a practical example, a "delete object" operator. In the
>>> 3D
>>> view the delete object operator would work on all selected objects.
>>> However you can also delete objects from the outliner, were it would
>>> work on the objects as selected there (selection state is completely
>>> separate here). One could also imagine a button that would delete the
>>> active object in the buttons window.
>>>
>>> There's a few possibilities to figure out this data:
>>> a) The operator is aware of the space it is running in, and knows
>>> that
>>> for the 3d view it uses the selected objects, for the outliner the
>>> selection state there, .. etc. Here you could have multiple
>>> operators,
>>> one for each case, or a single operator handling all these cases.
>>> b) The operator is directly passed the objects it operates on
>>> somehow,
>>> for example through a property of the operator.
>>> c) There is an abstraction that allows you to ask the context things
>>> like 'give a list of selected objects', and then the context can
>>> return
>>> different things based on the space, etc.
>>>
>>> Case b) is not a ideal solution I think because it makes it difficult
>>> to
>>> create custom operators, as the space would need to know about it's
>>> operators. Solution c) seems reasonable at first but it becomes more
>>> difficult as you involve more data like active objects, and object's
>>> materials, copying things from on datablock to another, etc. In a way
>>> case a) means you have smarter operators, while case c) means you
>>> have
>>> a
>>> smarter context.
>>>
>>> Some other examples of operators:
>>> * An "attach IPO to this property" operator. Does it get the property
>>> from the context or is that passed to the operator?
>>> * "Remove object from this group" operator.
>>> * "Select faces with this material" operator.
>>> * "Copy Location from one object to other objects" operator.
>>>
>>> So I'm wondering if it is worth trying to decouple operators from the
>>> specific spaces/menus/.. they run in. If we do this you need an
>>> extensive and well defined context and it needs to be ensured that
>>> context is set when the operator runs. In the other case you'd have
>>> more
>>> code in operators to adapt to the context.
>>>
>>> I'm thinking you should have some abstraction of the context that the
>>> operators don't have to know about, but there should then a list of
>>> well
>>> defined context types that exist.
>>>
>>> Thid also touches on UI design but it's something that should be
>>> figured
>>> out before converting Blender code to operators..
>>>
>>> Brecht.
>>>
>>>
>>> _______________________________________________
>>> Bf-taskforce25 mailing list
>>> Bf-taskforce25 at blender.org
>>> http://lists.blender.org/mailman/listinfo/bf-taskforce25
>>>
>>>
>>
>> _______________________________________________
>> Bf-taskforce25 mailing list
>> Bf-taskforce25 at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-taskforce25
>
>
> _______________________________________________
> Bf-taskforce25 mailing list
> Bf-taskforce25 at blender.org
> http://lists.blender.org/mailman/listinfo/bf-taskforce25
>
>
More information about the Bf-taskforce25
mailing list