forked from bartvdbraak/blender
GPencil: Initial support for GP Layers in Outliner
This is still very rudimentary, and lacks many things. * This needs a better icon. Perhaps we can look into using colour swatches here too like in all the other places? * The "active" check needs to be implemented still * Various restriction toggles to come still
This commit is contained in:
parent
68fc2e210e
commit
5ebae1c0c0
@ -31,6 +31,7 @@
|
||||
|
||||
#include "DNA_anim_types.h"
|
||||
#include "DNA_armature_types.h"
|
||||
#include "DNA_gpencil_types.h"
|
||||
#include "DNA_group_types.h"
|
||||
#include "DNA_lamp_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
@ -549,6 +550,17 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname)
|
||||
WM_event_add_notifier(C, NC_OBJECT | ND_POSE, ob);
|
||||
break;
|
||||
}
|
||||
case TSE_GP_LAYER:
|
||||
{
|
||||
bGPdata *gpd = (bGPdata *)tselem->id; // id = GP Datablock
|
||||
bGPDlayer *gpl = te->directdata;
|
||||
|
||||
// XXX: name needs translation stuff
|
||||
BLI_uniquename(&gpd->layers, gpl, "GP Layer", '.',
|
||||
offsetof(bGPDlayer, info), sizeof(gpl->info));
|
||||
WM_event_add_notifier(C, NC_GPENCIL | ND_DATA, gpd);
|
||||
break;
|
||||
}
|
||||
case TSE_R_LAYER:
|
||||
break;
|
||||
}
|
||||
@ -1074,6 +1086,8 @@ static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeSto
|
||||
else
|
||||
UI_icon_draw(x, y, RNA_struct_ui_icon(te->rnaptr.type));
|
||||
break;
|
||||
case TSE_GP_LAYER:
|
||||
UI_icon_draw(x, y, ICON_DOT); break; // XXX: needs a dedicated icon?
|
||||
default:
|
||||
UI_icon_draw(x, y, ICON_DOT); break;
|
||||
}
|
||||
|
@ -104,6 +104,7 @@ typedef struct TreeElement {
|
||||
#define TSE_KEYMAP 34
|
||||
#define TSE_KEYMAP_ITEM 35
|
||||
#define TSE_ID_BASE 36
|
||||
#define TSE_GP_LAYER 37
|
||||
|
||||
/* button events */
|
||||
#define OL_NAMEBUTTON 1
|
||||
|
@ -873,6 +873,9 @@ eOLDrawState tree_element_type_active(
|
||||
return tree_element_active_sequence_dup(scene, te, tselem, set);
|
||||
case TSE_KEYMAP_ITEM:
|
||||
return tree_element_active_keymap_item(C, te, tselem, set);
|
||||
case TSE_GP_LAYER:
|
||||
//return tree_element_active_gplayer(C, scene, te, tselem, set);
|
||||
break;
|
||||
|
||||
}
|
||||
return OL_DRAWSEL_NONE;
|
||||
|
@ -823,8 +823,9 @@ static void outliner_add_id_contents(SpaceOops *soops, TreeElement *te, TreeStor
|
||||
if (outliner_animdata_test(gpd->adt))
|
||||
outliner_add_element(soops, &te->subtree, gpd, te, TSE_ANIM_DATA, 0);
|
||||
|
||||
// TODO: base element for layers?
|
||||
for (gpl = gpd->layers.first; gpl; gpl = gpl->next) {
|
||||
// TODO
|
||||
outliner_add_element(soops, &te->subtree, gpl, te, TSE_GP_LAYER, a);
|
||||
a++;
|
||||
}
|
||||
}
|
||||
@ -875,6 +876,9 @@ static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *i
|
||||
else if (type == TSE_ANIM_DATA) {
|
||||
/* pass */
|
||||
}
|
||||
else if (type == TSE_GP_LAYER) {
|
||||
/* pass */
|
||||
}
|
||||
else if (type == TSE_ID_BASE) {
|
||||
/* pass */
|
||||
}
|
||||
@ -957,6 +961,12 @@ static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *i
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (type == TSE_GP_LAYER) {
|
||||
bGPDlayer *gpl = (bGPDlayer *)idv;
|
||||
|
||||
te->name = gpl->info;
|
||||
te->directdata = gpl;
|
||||
}
|
||||
else if (type == TSE_SEQUENCE) {
|
||||
Sequence *seq = (Sequence *) idv;
|
||||
Sequence *p;
|
||||
|
Loading…
Reference in New Issue
Block a user