Collection Editor based on patch by Julian Eisel

This is extracted from the layer-manager branch. With the following
changes:

* Renamed references of layer manager to collections manager
* I didn't include the editors/space_collections/ draw and util files.

I still need to bring the drawing code here, so we see something.
This commit is contained in:
Dalai Felinto
2017-01-30 14:14:27 +01:00
parent dce8ef49ff
commit 3da834e83c
32 changed files with 481 additions and 5 deletions

View File

@@ -566,6 +566,7 @@ function(SETUP_BLENDER_SORTED_LIBS)
bf_editor_space_userpref
bf_editor_space_view3d
bf_editor_space_clip
bf_editor_space_collections
bf_editor_transform
bf_editor_util

View File

@@ -69,6 +69,7 @@ _modules = [
"space_graph",
"space_image",
"space_info",
"space_collections",
"space_logic",
"space_nla",
"space_node",

View File

@@ -0,0 +1,35 @@
# ##### BEGIN GPL LICENSE BLOCK #####
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####
# <pep8 compliant>
import bpy
from bpy.types import Header, Menu
class COLLECTIONS_HT_header(Header):
bl_space_type = 'COLLECTION_MANAGER'
def draw(self, context):
layout = self.layout
layout.template_header()
layout.label(text="Work in progress")
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)

View File

@@ -169,6 +169,7 @@ struct SpaceAction *CTX_wm_space_action(const bContext *C);
struct SpaceInfo *CTX_wm_space_info(const bContext *C);
struct SpaceUserPref *CTX_wm_space_userpref(const bContext *C);
struct SpaceClip *CTX_wm_space_clip(const bContext *C);
struct SpaceCollections *CTX_wm_space_collections(const bContext *C);
void CTX_wm_manager_set(bContext *C, struct wmWindowManager *wm);
void CTX_wm_window_set(bContext *C, struct wmWindow *win);

View File

@@ -815,6 +815,14 @@ struct SpaceClip *CTX_wm_space_clip(const bContext *C)
return NULL;
}
struct SpaceCollections *CTX_wm_space_collections(const bContext *C)
{
ScrArea *sa = CTX_wm_area(C);
if (sa && sa->spacetype == SPACE_COLLECTIONS)
return sa->spacedata.first;
return NULL;
}
void CTX_wm_manager_set(bContext *C, wmWindowManager *wm)
{
C->wm.manager = wm;

View File

@@ -103,6 +103,8 @@
#include "DNA_movieclip_types.h"
#include "DNA_mask_types.h"
#include "RNA_access.h"
#include "MEM_guardedalloc.h"
#include "BLI_endian_switch.h"
@@ -6552,6 +6554,10 @@ static void lib_link_screen(FileData *fd, Main *main)
slogic->gpd = newlibadr_us(fd, sc->id.lib, slogic->gpd);
}
else if (sl->spacetype == SPACE_COLLECTIONS) {
SpaceCollections *slayer = (SpaceCollections *)sl;
slayer->flag |= SC_COLLECTION_DATA_REFRESH;
}
}
}
sc->id.tag &= ~LIB_TAG_NEED_LINK;
@@ -6937,6 +6943,10 @@ void blo_lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *cursc
slogic->gpd = restore_pointer_by_name(id_map, (ID *)slogic->gpd, USER_REAL);
}
else if (sl->spacetype == SPACE_COLLECTIONS) {
SpaceCollections *slayer = (SpaceCollections *)sl;
slayer->flag |= SC_COLLECTION_DATA_REFRESH;
}
}
}
}
@@ -7331,6 +7341,10 @@ static bool direct_link_screen(FileData *fd, bScreen *sc)
sclip->scopes.track_preview = NULL;
sclip->scopes.ok = 0;
}
else if (sl->spacetype == SPACE_COLLECTIONS) {
SpaceCollections *slayer = (SpaceCollections *)sl;
slayer->flag |= SC_COLLECTION_DATA_REFRESH;
}
}
BLI_listbase_clear(&sa->actionzones);

View File

@@ -3200,6 +3200,9 @@ static void write_screens(WriteData *wd, ListBase *scrbase)
else if (sl->spacetype == SPACE_INFO) {
writestruct(wd, DATA, SpaceInfo, 1, sl);
}
else if (sl->spacetype == SPACE_COLLECTIONS) {
writestruct(wd, DATA, SpaceCollections, 1, sl);
}
sl = sl->next;
}

View File

@@ -47,6 +47,7 @@ if(WITH_BLENDER)
add_subdirectory(space_graph)
add_subdirectory(space_image)
add_subdirectory(space_info)
add_subdirectory(space_collections)
add_subdirectory(space_logic)
add_subdirectory(space_nla)
add_subdirectory(space_node)

View File

@@ -49,6 +49,7 @@ struct ColorManagedDisplaySettings;
void fdrawline(float x1, float y1, float x2, float y2); /* DEPRECATED */
void fdrawbox(float x1, float y1, float x2, float y2); /* DEPRECATED */
void fdrawbox_filled(float x1, float y1, float x2, float y2);
void sdrawline(int x1, int y1, int x2, int y2); /* DEPRECATED */
void sdrawbox(int x1, int y1, int x2, int y2); /* DEPRECATED */

View File

@@ -55,6 +55,7 @@ struct wmOperatorType;
struct PointerRNA;
struct PropertyRNA;
struct EnumPropertyItem;
struct LayerTree;
/* object_edit.c */
struct Object *ED_object_context(struct bContext *C); /* context.object */

View File

@@ -162,6 +162,7 @@ int ED_operator_image_active(struct bContext *C);
int ED_operator_nla_active(struct bContext *C);
int ED_operator_logic_active(struct bContext *C);
int ED_operator_info_active(struct bContext *C);
int ED_operator_collections_active(struct bContext *C);
int ED_operator_console_active(struct bContext *C);

View File

@@ -58,6 +58,7 @@ void ED_spacetype_logic(void);
void ED_spacetype_console(void);
void ED_spacetype_userpref(void);
void ED_spacetype_clip(void);
void ED_spacetype_collections(void);
/* calls for instancing and freeing spacetype static data
* called in WM_init_exit */

View File

@@ -212,6 +212,9 @@ enum {
UI_BUT_ALIGN_STITCH_TOP = (1 << 18),
UI_BUT_ALIGN_STITCH_LEFT = (1 << 19),
UI_BUT_ALIGN_ALL = (UI_BUT_ALIGN | UI_BUT_ALIGN_STITCH_TOP | UI_BUT_ALIGN_STITCH_LEFT),
/* Another hack, in some rare cases we don't want any text margin */
UI_BUT_TEXT_NO_MARGIN = (1 << 20),
};
/* scale fixed button widths by this to account for DPI */

View File

@@ -83,5 +83,6 @@ struct PreviewImage *UI_icon_to_preview(int icon_id);
int UI_rnaptr_icon_get(struct bContext *C, struct PointerRNA *ptr, int rnaicon, const bool big);
int UI_idcode_icon_get(const int idcode);
int UI_colorset_icon_get(const int set_idx);
#endif /* __UI_INTERFACE_ICONS_H__ */

View File

@@ -1385,6 +1385,14 @@ int UI_idcode_icon_get(const int idcode)
}
}
/**
* \param set_idx: A value from #rna_enum_color_sets_items.
*/
int UI_colorset_icon_get(const int set_idx)
{
return (set_idx < 1) ? ICON_NONE : VICO_COLORSET_01_VEC - 1 + set_idx;
}
static void icon_draw_at_size(
float x, float y, int icon_id, float aspect, float alpha,
enum eIconSizes size, const bool nocreate)

View File

@@ -1575,7 +1575,10 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
}
}
if (but->editstr || (but->drawflag & UI_BUT_TEXT_LEFT)) {
if (but->drawflag & UI_BUT_TEXT_NO_MARGIN) {
/* skip */
}
else if (but->editstr || (but->drawflag & UI_BUT_TEXT_LEFT)) {
rect->xmin += (UI_TEXT_MARGIN_X * U.widget_unit) / but->block->aspect;
}
else if ((but->drawflag & UI_BUT_TEXT_RIGHT)) {

View File

@@ -165,6 +165,9 @@ const unsigned char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colo
case SPACE_CLIP:
ts = &btheme->tclip;
break;
case SPACE_COLLECTIONS:
ts = &btheme->tcollections;
break;
default:
ts = &btheme->tv3d;
break;
@@ -1206,6 +1209,11 @@ void ui_theme_init_default(void)
rgba_char_args_set(btheme->tclip.strip_select, 0xff, 0x8c, 0x00, 0xff);
btheme->tclip.handle_vertex_size = 5;
ui_theme_space_init_handles_color(&btheme->tclip);
/* space collection manager */
btheme->tcollections = btheme->tv3d;
rgba_char_args_set_fl(btheme->tcollections.back, 0.42, 0.42, 0.42, 1.0);
rgba_char_args_set(btheme->tcollections.hilite, 255, 140, 25, 255); /* selected files */
}
void ui_style_init_default(void)
@@ -2834,7 +2842,11 @@ void init_userdef_do_versions(void)
* (keep this block even if it becomes empty).
*/
{
for (bTheme *btheme = U.themes.first; btheme; btheme = btheme->next) {
btheme->tcollections = btheme->tv3d;
rgba_char_args_set_fl(btheme->tcollections.back, 0.42, 0.42, 0.42, 1.0);
rgba_char_args_set(btheme->tcollections.hilite, 255, 140, 25, 255); /* selected files */
}
}
if (U.pixelsize == 0.0f)

View File

@@ -75,6 +75,18 @@ void fdrawbox(float x1, float y1, float x2, float y2)
glEnd();
}
void fdrawbox_filled(float x1, float y1, float x2, float y2)
{
glBegin(GL_POLYGON);
glVertex2f(x1, y1);
glVertex2f(x1, y2);
glVertex2f(x2, y2);
glVertex2f(x2, y1);
glEnd();
}
void fdrawcheckerboard(float x1, float y1, float x2, float y2) /* DEPRECATED */
{
unsigned char col1[4] = {40, 40, 40}, col2[4] = {50, 50, 50};

View File

@@ -321,6 +321,10 @@ int ED_operator_info_active(bContext *C)
return ed_spacetype_test(C, SPACE_INFO);
}
int ED_operator_collections_active(bContext *C)
{
return ed_spacetype_test(C, SPACE_COLLECTIONS);
}
int ED_operator_console_active(bContext *C)
{

View File

@@ -96,6 +96,7 @@ void ED_spacetypes_init(void)
ED_spacetype_console();
ED_spacetype_userpref();
ED_spacetype_clip();
ED_spacetype_collections();
// ...
/* register operator types for screen and all spaces */

View File

@@ -0,0 +1,45 @@
# ***** BEGIN GPL LICENSE BLOCK *****
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Contributor(s): Jacques Beaurain.
#
# ***** END GPL LICENSE BLOCK *****
set(INC
../include
../../blenkernel
../../blenlib
../../blentranslation
../../gpu
../../makesdna
../../makesrna
../../windowmanager
../../../../intern/guardedalloc
../../../../intern/glew-mx
)
set(INC_SYS
${GLEW_INCLUDE_PATH}
)
set(SRC
collections_ops.c
space_collections.c
collections_intern.h
)
blender_add_lib(bf_editor_space_collections "${SRC}" "${INC}" "${INC_SYS}")

View File

@@ -0,0 +1,35 @@
/*
* ***** BEGIN GPL LICENSE BLOCK *****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/editors/space_collections/collections_intern.h
* \ingroup spcollections
*/
#ifndef __COLLECTIONS_INTERN_H__
#define __COLLECTIONS_INTERN_H__
struct wmKeyConfig;
/* collections_ops.c */
void collections_operatortypes(void);
void collections_keymap(struct wmKeyConfig *keyconf);
#endif /* __COLLECTIONS_INTERN_H__ */

View File

@@ -0,0 +1,37 @@
/*
* ***** BEGIN GPL LICENSE BLOCK *****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/editors/space_collections/collections_ops.c
* \ingroup spcollections
*/
#include "WM_api.h"
#include "collections_intern.h" /* own include */
/* ************************** registration - operator types **********************************/
void collections_operatortypes(void)
{
}
void collections_keymap(wmKeyConfig *UNUSED(keyconf))
{
}

View File

@@ -0,0 +1,182 @@
/*
* ***** BEGIN GPL LICENSE BLOCK *****
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* ***** END GPL LICENSE BLOCK *****
*/
/** \file blender/editors/space_collections/space_collections.c
* \ingroup spcollections
*/
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BIF_gl.h"
#include "BKE_context.h"
#include "BKE_screen.h"
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "ED_screen.h"
#include "ED_space_api.h"
#include "UI_resources.h"
#include "UI_view2d.h"
#include "WM_api.h"
#include "WM_types.h"
#include "collections_intern.h" /* own include */
/* ******************** default callbacks for collection manager space ***************** */
static SpaceLink *collections_new(const bContext *UNUSED(C))
{
ARegion *ar;
SpaceCollections *scollection; /* hmm, that's actually a good band name... */
scollection = MEM_callocN(sizeof(SpaceCollections), __func__);
scollection->spacetype = SPACE_COLLECTIONS;
/* header */
ar = MEM_callocN(sizeof(ARegion), "header for collection manager");
BLI_addtail(&scollection->regionbase, ar);
ar->regiontype = RGN_TYPE_HEADER;
ar->alignment = RGN_ALIGN_BOTTOM;
/* main region */
ar = MEM_callocN(sizeof(ARegion), "main region for collection manager");
BLI_addtail(&scollection->regionbase, ar);
ar->regiontype = RGN_TYPE_WINDOW;
ar->v2d.scroll = (V2D_SCROLL_RIGHT | V2D_SCROLL_BOTTOM | V2D_SCROLL_HORIZONTAL_HIDE | V2D_SCROLL_VERTICAL_HIDE);
ar->v2d.align = (V2D_ALIGN_NO_NEG_X | V2D_ALIGN_NO_POS_Y);
return (SpaceLink *)scollection;
}
static void collections_free(SpaceLink *UNUSED(sl))
{
}
static SpaceLink *collections_duplicate(SpaceLink *sl)
{
SpaceCollections *scollection = MEM_dupallocN(sl);
/* clear or remove stuff from old */
return (SpaceLink *)scollection;
}
/* add handlers, stuff you only do once or on area/region changes */
static void collection_main_region_init(wmWindowManager *wm, ARegion *ar)
{
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy);
ar->v2d.scroll |= (V2D_SCROLL_VERTICAL_FULLR | V2D_SCROLL_HORIZONTAL_FULLR);
/* own keymap */
wmKeyMap *keymap = WM_keymap_find(wm->defaultconf, "Layer Manager", SPACE_COLLECTIONS, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
static void collections_main_region_draw(const bContext *C, ARegion *ar)
{
SpaceCollections *spc = CTX_wm_space_collections(C);
View2D *v2d = &ar->v2d;
if (spc->flag & SC_COLLECTION_DATA_REFRESH) {
}
/* v2d has initialized flag, so this call will only set the mask correct */
UI_view2d_region_reinit(v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy);
UI_ThemeClearColor(TH_BACK);
glClear(GL_COLOR_BUFFER_BIT);
/* reset view matrix */
UI_view2d_view_restore(C);
/* scrollers */
View2DScrollers *scrollers;
scrollers = UI_view2d_scrollers_calc(C, v2d, V2D_ARG_DUMMY, V2D_ARG_DUMMY, V2D_ARG_DUMMY, V2D_ARG_DUMMY);
UI_view2d_scrollers_draw(C, v2d, scrollers);
UI_view2d_scrollers_free(scrollers);
}
/* add handlers, stuff you only do once or on area/region changes */
static void collections_header_region_init(wmWindowManager *UNUSED(wm), ARegion *ar)
{
ED_region_header_init(ar);
}
static void collections_header_region_draw(const bContext *C, ARegion *ar)
{
ED_region_header(C, ar);
}
static void collections_main_region_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa), ARegion *ar, wmNotifier *wmn)
{
switch (wmn->category) {
case NC_SCENE:
if (wmn->data == ND_LAYER) {
ED_region_tag_redraw(ar);
}
break;
case NC_SPACE:
if (wmn->data == ND_SPACE_COLLECTIONS) {
ED_region_tag_redraw(ar);
}
}
}
/* only called once, from space/spacetypes.c */
void ED_spacetype_collections(void)
{
SpaceType *st = MEM_callocN(sizeof(SpaceType), "spacetype collections");
ARegionType *art;
st->spaceid = SPACE_COLLECTIONS;
strncpy(st->name, "LayerManager", BKE_ST_MAXNAME);
st->new = collections_new;
st->free = collections_free;
st->duplicate = collections_duplicate;
st->operatortypes = collections_operatortypes;
st->keymap = collections_keymap;
/* regions: main window */
art = MEM_callocN(sizeof(ARegionType), "spacetype collections region");
art->regionid = RGN_TYPE_WINDOW;
art->init = collection_main_region_init;
art->draw = collections_main_region_draw;
art->listener = collections_main_region_listener;
art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D;
BLI_addhead(&st->regiontypes, art);
/* regions: header */
art = MEM_callocN(sizeof(ARegionType), "spacetype collections header");
art->regionid = RGN_TYPE_HEADER;
art->prefsizey = HEADERY;
art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D | ED_KEYMAP_HEADER;
art->init = collections_header_region_init;
art->draw = collections_header_region_draw;
BLI_addhead(&st->regiontypes, art);
BKE_spacetype_register(st);
}

View File

@@ -1343,6 +1343,20 @@ typedef enum eSpaceClip_GPencil_Source {
SC_GPENCIL_SRC_TRACK = 1,
} eSpaceClip_GPencil_Source;
/* Collection Manager ======================================= */
typedef struct SpaceCollections {
SpaceLink *next, *prev;
ListBase regionbase; /* storage of regions for inactive spaces */
int spacetype;
int flag; /* eSpaceCollections_Flag */
} SpaceCollections;
/* SpaceClip->flag */
typedef enum eSpaceCollections_Flag {
SC_COLLECTION_DATA_REFRESH = (1 << 0), /* recreate/update SpaceCollections layer data, needed for undo/read/write */
} eSpaceCollections_Flag;
/* **************** SPACE DEFINES ********************* */
/* space types, moved from DNA_screen_types.h */
@@ -1372,8 +1386,9 @@ typedef enum eSpace_Type {
SPACE_CONSOLE = 18,
SPACE_USERPREF = 19,
SPACE_CLIP = 20,
SPACEICONMAX = SPACE_CLIP
SPACE_COLLECTIONS = 21,
SPACEICONMAX = SPACE_COLLECTIONS
} eSpace_Type;
/* use for function args */

View File

@@ -390,7 +390,8 @@ typedef struct bTheme {
ThemeSpace tuserpref;
ThemeSpace tconsole;
ThemeSpace tclip;
ThemeSpace tcollections;
/* 20 sets of bone colors for this theme */
ThemeWireColor tarm[20];
/*ThemeWireColor tobj[20];*/

View File

@@ -574,6 +574,7 @@ extern StructRNA RNA_SpaceFileBrowser;
extern StructRNA RNA_SpaceGraphEditor;
extern StructRNA RNA_SpaceImageEditor;
extern StructRNA RNA_SpaceInfo;
extern StructRNA RNA_SpaceCollectionManager;
extern StructRNA RNA_SpaceLogicEditor;
extern StructRNA RNA_SpaceNLA;
extern StructRNA RNA_SpaceNodeEditor;
@@ -642,6 +643,7 @@ extern StructRNA RNA_ThemeFontStyle;
extern StructRNA RNA_ThemeGraphEditor;
extern StructRNA RNA_ThemeImageEditor;
extern StructRNA RNA_ThemeInfo;
extern StructRNA RNA_ThemeCollectionManager;
extern StructRNA RNA_ThemeLogicEditor;
extern StructRNA RNA_ThemeNLAEditor;
extern StructRNA RNA_ThemeNodeEditor;

View File

@@ -79,6 +79,7 @@ EnumPropertyItem rna_enum_space_type_items[] = {
{0, "", ICON_NONE, NULL, NULL},
{SPACE_BUTS, "PROPERTIES", ICON_BUTS, "Properties", "Edit properties of active object and related data-blocks"},
{SPACE_OUTLINER, "OUTLINER", ICON_OOPS, "Outliner", "Overview of scene graph and all available data-blocks"},
{SPACE_COLLECTIONS, "COLLECTION_MANAGER", ICON_COLLAPSEMENU, "Collections", "Edit collections of active render layer"},
{SPACE_USERPREF, "USER_PREFERENCES", ICON_PREFERENCES, "User Preferences", "Edit persistent configuration settings"},
{SPACE_INFO, "INFO", ICON_INFO, "Info", "Main menu bar and list of error messages (drag down to expand and display)"},
{0, "", ICON_NONE, NULL, NULL},
@@ -315,6 +316,8 @@ static StructRNA *rna_Space_refine(struct PointerRNA *ptr)
return &RNA_SpaceUserPreferences;
case SPACE_CLIP:
return &RNA_SpaceClipEditor;
case SPACE_COLLECTIONS:
return &RNA_SpaceCollectionManager;
default:
return &RNA_Space;
}
@@ -4812,6 +4815,15 @@ static void rna_def_space_clip(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_CLIP, NULL);
}
static void rna_def_space_collections(BlenderRNA *brna)
{
StructRNA *srna;
srna = RNA_def_struct(brna, "SpaceCollectionManager", "Space");
RNA_def_struct_sdna(srna, "SpaceCollections");
RNA_def_struct_ui_text(srna, "Space Collection Manager", "Layer Collection space data");
}
void RNA_def_space(BlenderRNA *brna)
{
@@ -4838,6 +4850,7 @@ void RNA_def_space(BlenderRNA *brna)
rna_def_space_node(brna);
rna_def_space_logic(brna);
rna_def_space_clip(brna);
rna_def_space_collections(brna);
}
#endif

View File

@@ -2956,6 +2956,26 @@ static void rna_def_userdef_theme_space_clip(BlenderRNA *brna)
rna_def_userdef_theme_spaces_curves(srna, false, false, false, true);
}
static void rna_def_userdef_theme_space_collections(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
srna = RNA_def_struct(brna, "ThemeCollectionManager", NULL);
RNA_def_struct_sdna(srna, "ThemeSpace");
RNA_def_struct_clear_flag(srna, STRUCT_UNDO);
RNA_def_struct_ui_text(srna, "Theme Collection Manager", "Theme settings for the Collection Manager");
rna_def_userdef_theme_spaces_main(srna);
rna_def_userdef_theme_spaces_list_main(srna);
prop = RNA_def_property(srna, "selected_collection", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_float_sdna(prop, NULL, "hilite");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Selected Collection", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
}
static void rna_def_userdef_themes(BlenderRNA *brna)
{
StructRNA *srna;
@@ -2982,6 +3002,7 @@ static void rna_def_userdef_themes(BlenderRNA *brna)
{16, "FILE_BROWSER", ICON_FILESEL, "File Browser", ""},
{17, "CONSOLE", ICON_CONSOLE, "Python Console", ""},
{20, "CLIP_EDITOR", ICON_CLIP, "Movie Clip Editor", ""},
{21, "COLLECTION_MANAGER", ICON_COLLAPSEMENU, "Collection Manager", ""},
{0, NULL, 0, NULL, NULL}
};
@@ -3115,6 +3136,12 @@ static void rna_def_userdef_themes(BlenderRNA *brna)
RNA_def_property_pointer_sdna(prop, NULL, "tclip");
RNA_def_property_struct_type(prop, "ThemeClipEditor");
RNA_def_property_ui_text(prop, "Clip Editor", "");
prop = RNA_def_property(srna, "collection_manager", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "tcollections");
RNA_def_property_struct_type(prop, "ThemeCollectionManager");
RNA_def_property_ui_text(prop, "Collection Manager", "");
}
static void rna_def_userdef_addon(BlenderRNA *brna)
@@ -3205,6 +3232,7 @@ static void rna_def_userdef_dothemes(BlenderRNA *brna)
rna_def_userdef_theme_space_console(brna);
rna_def_userdef_theme_space_logic(brna);
rna_def_userdef_theme_space_clip(brna);
rna_def_userdef_theme_space_collections(brna);
rna_def_userdef_theme_colorset(brna);
rna_def_userdef_themes(brna);
}

View File

@@ -174,6 +174,7 @@ static eSpace_Type rna_Space_refine_reverse(StructRNA *srna)
if (srna == &RNA_SpaceConsole) return SPACE_CONSOLE;
if (srna == &RNA_SpaceUserPreferences) return SPACE_USERPREF;
if (srna == &RNA_SpaceClipEditor) return SPACE_CLIP;
if (srna == &RNA_SpaceCollectionManager) return SPACE_COLLECTIONS;
return SPACE_EMPTY;
}

View File

@@ -364,6 +364,7 @@ typedef struct wmNotifier {
#define ND_SPACE_CHANGED (18<<16) /*sent to a new editor type after it's replaced an old one*/
#define ND_SPACE_CLIP (19<<16)
#define ND_SPACE_FILE_PREVIEW (20<<16)
#define ND_SPACE_COLLECTIONS (21<<16)
/* subtype, 256 entries too */
#define NOTE_SUBTYPE 0x0000FF00

View File

@@ -1861,6 +1861,10 @@ wmKeyMap *WM_keymap_guess_opname(const bContext *C, const char *opname)
else if (STRPREFIX(opname, "OUTLINER_OT")) {
km = WM_keymap_find_all(C, "Outliner", sl->spacetype, 0);
}
/* Layer Manager */
else if (STRPREFIX(opname, "COLLECTIONS_OT")) {
km = WM_keymap_find_all(C, "Collection Manager", sl->spacetype, 0);
}
/* Transform */
else if (STRPREFIX(opname, "TRANSFORM_OT")) {
/* check for relevant editor */