Blender  V3.3
Classes | Typedefs | Enumerations
DNA_workspace_types.h File Reference
#include "DNA_ID.h"
#include "DNA_asset_types.h"

Go to the source code of this file.

Classes

struct  bToolRef_Runtime
 
struct  bToolRef
 
struct  WorkSpaceLayout
 Wrapper for bScreen. More...
 
struct  wmOwnerID
 
struct  WorkSpace
 
struct  WorkSpaceDataRelation
 
struct  WorkSpaceInstanceHook
 

Typedefs

typedef struct bToolRef_Runtime bToolRef_Runtime
 
typedef struct bToolRef bToolRef
 
typedef struct WorkSpaceLayout WorkSpaceLayout
 Wrapper for bScreen. More...
 
typedef struct wmOwnerID wmOwnerID
 
typedef struct WorkSpace WorkSpace
 
typedef struct WorkSpaceDataRelation WorkSpaceDataRelation
 
typedef struct WorkSpaceInstanceHook WorkSpaceInstanceHook
 
typedef enum eWorkSpaceFlags eWorkSpaceFlags
 

Enumerations

enum  { TOOLREF_FLAG_FALLBACK_KEYMAP = (1 << 0) }
 
enum  eWorkSpaceFlags { WORKSPACE_USE_FILTER_BY_ORIGIN = (1 << 1) , WORKSPACE_USE_PIN_SCENE = (1 << 2) }
 

Detailed Description

Use API in BKE_workspace.h to edit these.

Definition in file DNA_workspace_types.h.

Typedef Documentation

◆ bToolRef

typedef struct bToolRef bToolRef
Note
Stored per mode.

◆ bToolRef_Runtime

◆ eWorkSpaceFlags

◆ wmOwnerID

typedef struct wmOwnerID wmOwnerID

Optional tags, which features to use, aligned with bAddon names by convention.

◆ WorkSpace

typedef struct WorkSpace WorkSpace

◆ WorkSpaceDataRelation

Generic (and simple/primitive) struct for storing a history of assignments/relations of workspace data to non-workspace data in a listbase inside the workspace.

Using this we can restore the old state of a workspace if the user switches back to it.

Usage

When activating a workspace, it should activate the screen-layout that was active in that workspace before in this window. More concretely:

  • There are two windows, win1 and win2.
  • Both show workspace ws1, but both also had workspace ws2 activated at some point before.
  • Last time ws2 was active in win1, screen-layout sl1 was activated.
  • Last time ws2 was active in win2, screen-layout sl2 was activated.
  • When changing from ws1 to ws2 in win1, screen-layout sl1 should be activated again.
  • When changing from ws1 to ws2 in win2, screen-layout sl2 should be activated again. So that means we have to store the active screen-layout in a per workspace, per window relation. This struct is used to store an active screen-layout for each window within the workspace. To find the screen-layout to activate for this window-workspace combination, simply lookup the WorkSpaceDataRelation with the workspace-hook of the window set as parent.

◆ WorkSpaceInstanceHook

Little wrapper to store data that is going to be per window, but coming from the workspace. It allows us to keep workspace and window data completely separate.

◆ WorkSpaceLayout

Wrapper for bScreen.

#bScreens are IDs and thus stored in a main list-base. We also want to store a list-base of them within the workspace (so each workspace can have its own set of screen-layouts) which would mess with the next/prev pointers. So we use this struct to wrap a bScreen pointer with another pair of next/prev pointers.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

bToolRef_Runtime.flag

Enumerator
TOOLREF_FLAG_FALLBACK_KEYMAP 

This tool should use the fallback key-map. Typically gizmos handle this but some tools (such as the knife tool) don't use a gizmo.

Definition at line 19 of file DNA_workspace_types.h.

◆ eWorkSpaceFlags

Enumerator
WORKSPACE_USE_FILTER_BY_ORIGIN 
WORKSPACE_USE_PIN_SCENE 

Definition at line 200 of file DNA_workspace_types.h.