Blender V5.0
BKE_workspace.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include <string>
12
13#include "DNA_listBase.h"
14
15#include "BLI_compiler_attrs.h"
16
17#include "BLI_vector.hh"
18
19struct Main;
20struct bScreen;
21struct bToolRef;
22struct WorkSpace;
24struct WorkSpaceLayout;
25
26namespace blender::bke {
27
29 int icon = 0;
30 std::string text = {};
31 float space_factor = 0.0f;
32 bool inverted = false;
33};
34
38
39} // namespace blender::bke
40
41/* -------------------------------------------------------------------- */
44
45WorkSpace *BKE_workspace_add(Main *bmain, const char *name);
53void BKE_workspace_remove(Main *bmain, WorkSpace *workspace);
54
57
62 WorkSpace *workspace,
63 bScreen *screen,
64 const char *name) ATTR_NONNULL();
65void BKE_workspace_layout_remove(Main *bmain, WorkSpace *workspace, WorkSpaceLayout *layout)
67
68void BKE_workspace_relations_free(ListBase *relation_list);
69
71
72/* -------------------------------------------------------------------- */
75
76WorkSpaceLayout *BKE_workspace_layout_find(const WorkSpace *workspace, const bScreen *screen)
86 const bScreen *screen,
87 WorkSpace **r_workspace) ATTR_NONNULL(1, 2);
88
99 WorkSpaceLayout *start,
100 bool (*callback)(const WorkSpaceLayout *layout,
101 void *arg),
102 void *arg,
103 bool iter_backward);
104
106
118 const int space_type,
119 const int mode,
120 const char *idname_prefix_skip,
121 const char *replace_table[][2],
122 int replace_table_num) ATTR_NONNULL(1, 5);
123
125
126/* -------------------------------------------------------------------- */
129
130#define GETTER_ATTRS ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
131#define SETTER_ATTRS ATTR_NONNULL(1)
132
152 int winid,
153 WorkSpace *workspace,
157 int winid,
158 WorkSpace *workspace,
159 bScreen *screen) SETTER_ATTRS;
160
163 WorkSpaceLayout *layout,
164 const char *new_name) ATTR_NONNULL();
166
171 const WorkSpaceInstanceHook *hook, const WorkSpace *workspace) GETTER_ATTRS;
172
173bool BKE_workspace_owner_id_check(const WorkSpace *workspace, const char *owner_id) ATTR_NONNULL();
174
176
181
182#undef GETTER_ATTRS
183#undef SETTER_ATTRS
184
#define GETTER_ATTRS
WorkSpaceLayout * BKE_workspace_layout_find(const WorkSpace *workspace, const bScreen *screen) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
Definition workspace.cc:429
const char * BKE_workspace_layout_name_get(const WorkSpaceLayout *layout) GETTER_ATTRS
Definition workspace.cc:628
void BKE_workspace_layout_name_set(WorkSpace *workspace, WorkSpaceLayout *layout, const char *new_name) ATTR_NONNULL()
Definition workspace.cc:632
WorkSpace * BKE_workspace_add(Main *bmain, const char *name)
Definition workspace.cc:319
void BKE_workspace_tool_remove(WorkSpace *workspace, bToolRef *tref) ATTR_NONNULL(1
void void BKE_workspace_tool_id_replace_table(WorkSpace *workspace, const int space_type, const int mode, const char *idname_prefix_skip, const char *replace_table[][2], int replace_table_num) ATTR_NONNULL(1
void BKE_workspace_status_clear(WorkSpace *workspace)
Definition workspace.cc:650
WorkSpaceInstanceHook * BKE_workspace_instance_hook_create(const Main *bmain, int winid)
Definition workspace.cc:339
void BKE_workspace_instance_hook_free(const Main *bmain, WorkSpaceInstanceHook *hook)
Definition workspace.cc:353
bScreen * BKE_workspace_layout_screen_get(const WorkSpaceLayout *layout) GETTER_ATTRS
Definition workspace.cc:639
void BKE_workspace_active_screen_set(WorkSpaceInstanceHook *hook, int winid, WorkSpace *workspace, bScreen *screen) SETTER_ATTRS
Definition workspace.cc:618
void BKE_workspace_id_tag_all_visible(Main *bmain, int tag) ATTR_NONNULL()
Definition workspace.cc:547
void BKE_workspace_layout_remove(Main *bmain, WorkSpace *workspace, WorkSpaceLayout *layout) ATTR_NONNULL()
Definition workspace.cc:399
WorkSpaceLayout WorkSpaceLayout * BKE_workspace_layout_iter_circular(const WorkSpace *workspace, WorkSpaceLayout *start, bool(*callback)(const WorkSpaceLayout *layout, void *arg), void *arg, bool iter_backward)
Definition workspace.cc:470
bool BKE_workspace_owner_id_check(const WorkSpace *workspace, const char *owner_id) ATTR_NONNULL()
Definition workspace.cc:537
WorkSpaceLayout * BKE_workspace_layout_add(Main *bmain, WorkSpace *workspace, bScreen *screen, const char *name) ATTR_NONNULL()
Definition workspace.cc:380
void BKE_workspace_relations_free(ListBase *relation_list)
Definition workspace.cc:410
void BKE_workspace_remove(Main *bmain, WorkSpace *workspace)
Definition workspace.cc:326
void BKE_workspace_active_layout_set(WorkSpaceInstanceHook *hook, int winid, WorkSpace *workspace, WorkSpaceLayout *layout) SETTER_ATTRS
Activate a layout.
Definition workspace.cc:605
bScreen * BKE_workspace_active_screen_get(const WorkSpaceInstanceHook *hook) GETTER_ATTRS
Definition workspace.cc:614
#define SETTER_ATTRS
WorkSpaceLayout * BKE_workspace_active_layout_for_workspace_get(const WorkSpaceInstanceHook *hook, const WorkSpace *workspace) GETTER_ATTRS
Definition workspace.cc:592
WorkSpace * BKE_workspace_active_get(WorkSpaceInstanceHook *hook) GETTER_ATTRS
Definition workspace.cc:563
void BKE_workspace_active_set(WorkSpaceInstanceHook *hook, WorkSpace *workspace) SETTER_ATTRS
Definition workspace.cc:567
WorkSpaceLayout * BKE_workspace_active_layout_get(const WorkSpaceInstanceHook *hook) GETTER_ATTRS
Definition workspace.cc:587
WorkSpaceLayout * BKE_workspace_layout_find_global(const Main *bmain, const bScreen *screen, WorkSpace **r_workspace) ATTR_NONNULL(1
#define ATTR_WARN_UNUSED_RESULT
#define ATTR_NONNULL(...)
These structs are the foundation for all linked lists in the library system.
const char * name
Wrapper for bScreen.
Vector< WorkSpaceStatusItem > status
int winid
Definition wm_draw.cc:177