New operator: Copy Color

Duplicate active palette color
This commit is contained in:
2016-06-18 11:34:37 +02:00
parent da17bffcdb
commit 5dc6d10a81
4 changed files with 43 additions and 1 deletions

View File

@@ -718,6 +718,7 @@ class GPENCIL_MT_palettecolor_specials(Menu):
layout.operator("gpencil.palettecolor_lock_all", icon='LOCKED', text="Lock All")
layout.operator("gpencil.palettecolor_unlock_all", icon='UNLOCKED', text="UnLock All")
layout.operator("gpencil.palettecolor_copy", icon='PASTEDOWN', text="Copy Color")
class GreasePencilDataPanel:

View File

@@ -1895,7 +1895,7 @@ void GPENCIL_OT_palettecolor_remove(wmOperatorType *ot)
/* callbacks */
ot->exec = gp_palettecolor_remove_exec;
ot->poll = gp_active_layer_poll;
ot->poll = gp_active_palettecolor_poll;
}
/* ********************** Isolate palette color **************************** */
@@ -2264,3 +2264,42 @@ void GPENCIL_OT_palettecolor_select(wmOperatorType *ot)
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
}
/* ***************** Copy Palette color ************************ */
static int gp_palettecolor_copy_exec(bContext *C, wmOperator *UNUSED(op))
{
bGPdata *gpd = ED_gpencil_data_get_active(C);
bGPDpalette *palette = gpencil_palette_getactive(gpd);
bGPDpalettecolor *palcolor = gpencil_palettecolor_getactive(palette);
bGPDpalettecolor *newcolor;
/* sanity checks */
if (ELEM(NULL, gpd, palette, palcolor))
return OPERATOR_CANCELLED;
/* create a new color and duplicate data */
newcolor = gpencil_palettecolor_addnew(palette, DATA_("Color"), true);
copy_v4_v4(newcolor->color, palcolor->color);
copy_v4_v4(newcolor->fill, palcolor->fill);
newcolor->flag = palcolor->flag;
/* notifiers */
WM_event_add_notifier(C, NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
return OPERATOR_FINISHED;
}
void GPENCIL_OT_palettecolor_copy(wmOperatorType *ot)
{
/* identifiers */
ot->name = "Copy Color";
ot->idname = "GPENCIL_OT_palettecolor_copy";
ot->description = "Copy current palette color";
/* callbacks */
ot->exec = gp_palettecolor_copy_exec;
ot->poll = gp_active_palettecolor_poll;
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
}

View File

@@ -277,6 +277,7 @@ void GPENCIL_OT_palettecolor_lock_all(struct wmOperatorType *ot);
void GPENCIL_OT_palettecolor_unlock_all(struct wmOperatorType *ot);
void GPENCIL_OT_palettecolor_move(struct wmOperatorType *ot);
void GPENCIL_OT_palettecolor_select(struct wmOperatorType *ot);
void GPENCIL_OT_palettecolor_copy(struct wmOperatorType *ot);
/* undo stack ---------- */

View File

@@ -389,6 +389,7 @@ void ED_operatortypes_gpencil(void)
WM_operatortype_append(GPENCIL_OT_palettecolor_unlock_all);
WM_operatortype_append(GPENCIL_OT_palettecolor_move);
WM_operatortype_append(GPENCIL_OT_palettecolor_select);
WM_operatortype_append(GPENCIL_OT_palettecolor_copy);
WM_operatortype_append(GPENCIL_OT_brush_add);
WM_operatortype_append(GPENCIL_OT_brush_remove);