Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/gpencil/gpencil_buttons.c')
-rw-r--r--source/blender/editors/gpencil/gpencil_buttons.c221
1 files changed, 111 insertions, 110 deletions
diff --git a/source/blender/editors/gpencil/gpencil_buttons.c b/source/blender/editors/gpencil/gpencil_buttons.c
index 46241f3d378..1036921db4b 100644
--- a/source/blender/editors/gpencil/gpencil_buttons.c
+++ b/source/blender/editors/gpencil/gpencil_buttons.c
@@ -27,7 +27,7 @@
* \ingroup edgpencil
*/
-
+
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -37,6 +37,8 @@
#include "BLI_math.h"
#include "BLI_blenlib.h"
+#include "BLF_translation.h"
+
#include "DNA_gpencil_types.h"
#include "DNA_screen_types.h"
@@ -69,207 +71,206 @@
/* These are just 'dummy wrappers' around gpencil api calls */
/* make layer active one after being clicked on */
-static void gp_ui_activelayer_cb (bContext *C, void *gpd, void *gpl)
+static void gp_ui_activelayer_cb(bContext *C, void *gpd, void *gpl)
{
/* make sure the layer we want to remove is the active one */
gpencil_layer_setactive(gpd, gpl);
- WM_event_add_notifier(C, NC_SCREEN|ND_GPENCIL|NA_EDITED, NULL); // XXX please work!
+ WM_event_add_notifier(C, NC_SCREEN|ND_GPENCIL|NA_EDITED, NULL); /* XXX please work! */
}
/* delete 'active' layer */
-static void gp_ui_dellayer_cb (bContext *C, void *gpd, void *gpl)
+static void gp_ui_dellayer_cb(bContext *C, void *gpd, void *gpl)
{
/* make sure the layer we want to remove is the active one */
- gpencil_layer_setactive(gpd, gpl);
+ gpencil_layer_setactive(gpd, gpl);
gpencil_layer_delactive(gpd);
-
- WM_event_add_notifier(C, NC_SCREEN|ND_GPENCIL|NA_EDITED, NULL); // XXX please work!
-}
+ WM_event_add_notifier(C, NC_SCREEN|ND_GPENCIL|NA_EDITED, NULL); /* XXX please work! */
+}
/* ------- Drawing Code ------- */
/* draw the controls for a given layer */
-static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl, const short is_v3d)
+static void gp_drawui_layer(uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl, const short is_v3d)
{
- uiLayout *box=NULL, *split=NULL;
- uiLayout *col=NULL;
- uiLayout *row=NULL, *sub=NULL;
+ uiLayout *box = NULL, *split = NULL;
+ uiLayout *col = NULL;
+ uiLayout *row = NULL, *sub = NULL;
uiBlock *block;
uiBut *but;
PointerRNA ptr;
int icon;
-
+
/* make pointer to layer data */
RNA_pointer_create((ID *)gpd, &RNA_GPencilLayer, gpl, &ptr);
-
+
/* unless button has own callback, it adds this callback to button */
- block= uiLayoutGetBlock(layout);
+ block = uiLayoutGetBlock(layout);
uiBlockSetFunc(block, gp_ui_activelayer_cb, gpd, gpl);
-
+
/* draw header ---------------------------------- */
/* get layout-row + UI-block for header */
- box= uiLayoutBox(layout);
-
- row= uiLayoutRow(box, 0);
+ box = uiLayoutBox(layout);
+
+ row = uiLayoutRow(box, 0);
uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_EXPAND);
- block= uiLayoutGetBlock(row); // err...
-
+ block = uiLayoutGetBlock(row); /* err... */
+
uiBlockSetEmboss(block, UI_EMBOSSN);
-
+
/* left-align ............................... */
- sub= uiLayoutRow(row, 0);
-
+ sub = uiLayoutRow(row, 0);
+
/* active */
- block= uiLayoutGetBlock(sub);
- icon= (gpl->flag & GP_LAYER_ACTIVE) ? ICON_RADIOBUT_ON : ICON_RADIOBUT_OFF;
- but= uiDefIconButBitI(block, TOG, GP_LAYER_ACTIVE, 0, icon, 0, 0, UI_UNIT_X, UI_UNIT_Y, &gpd->flag, 0.0, 0.0, 0.0, 0.0, "Set active layer");
+ block = uiLayoutGetBlock(sub);
+ icon = (gpl->flag & GP_LAYER_ACTIVE) ? ICON_RADIOBUT_ON : ICON_RADIOBUT_OFF;
+ but = uiDefIconButBitI(block, TOG, GP_LAYER_ACTIVE, 0, icon, 0, 0, UI_UNIT_X, UI_UNIT_Y,
+ &gpd->flag, 0.0, 0.0, 0.0, 0.0, TIP_("Set active layer"));
uiButSetFunc(but, gp_ui_activelayer_cb, gpd, gpl);
/* locked */
- icon= (gpl->flag & GP_LAYER_LOCKED) ? ICON_LOCKED : ICON_UNLOCKED;
+ icon = (gpl->flag & GP_LAYER_LOCKED) ? ICON_LOCKED : ICON_UNLOCKED;
uiItemR(sub, &ptr, "lock", 0, "", icon);
-
+
/* when layer is locked or hidden, only draw header */
if (gpl->flag & (GP_LAYER_LOCKED|GP_LAYER_HIDE)) {
char name[256]; /* gpl->info is 128, but we need space for 'locked/hidden' as well */
-
+
/* visibility button (only if hidden but not locked!) */
if ((gpl->flag & GP_LAYER_HIDE) && !(gpl->flag & GP_LAYER_LOCKED))
- uiItemR(sub, &ptr, "hide", 0, "", ICON_RESTRICT_VIEW_ON);
-
-
+ uiItemR(sub, &ptr, "hide", 0, "", ICON_RESTRICT_VIEW_ON);
+
/* name */
if (gpl->flag & GP_LAYER_HIDE)
- BLI_snprintf(name, sizeof(name), "%s (Hidden)", gpl->info);
+ BLI_snprintf(name, sizeof(name), IFACE_("%s (Hidden)"), gpl->info);
else
- BLI_snprintf(name, sizeof(name), "%s (Locked)", gpl->info);
+ BLI_snprintf(name, sizeof(name), IFACE_("%s (Locked)"), gpl->info);
uiItemL(sub, name, ICON_NONE);
-
+
/* delete button (only if hidden but not locked!) */
if ((gpl->flag & GP_LAYER_HIDE) && !(gpl->flag & GP_LAYER_LOCKED)) {
/* right-align ............................... */
- sub= uiLayoutRow(row, 1);
+ sub = uiLayoutRow(row, 1);
uiLayoutSetAlignment(sub, UI_LAYOUT_ALIGN_RIGHT);
- block= uiLayoutGetBlock(sub); // XXX... err...
-
- but= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete layer");
+ block = uiLayoutGetBlock(sub); /* XXX... err... */
+
+ but = uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y,
+ NULL, 0.0, 0.0, 0.0, 0.0, TIP_("Delete layer"));
uiButSetFunc(but, gp_ui_dellayer_cb, gpd, gpl);
- }
+ }
uiBlockSetEmboss(block, UI_EMBOSS);
}
else {
/* draw rest of header -------------------------------- */
/* visibility button */
- uiItemR(sub, &ptr, "hide", 0, "", ICON_RESTRICT_VIEW_OFF);
-
+ uiItemR(sub, &ptr, "hide", 0, "", ICON_RESTRICT_VIEW_OFF);
+
/* frame locking */
- // TODO: this needs its own icons...
- icon= (gpl->flag & GP_LAYER_FRAMELOCK) ? ICON_RENDER_STILL : ICON_RENDER_ANIMATION;
- uiItemR(sub, &ptr, "lock_frame", 0, "", icon);
-
+ /* TODO: this needs its own icons... */
+ icon = (gpl->flag & GP_LAYER_FRAMELOCK) ? ICON_RENDER_STILL : ICON_RENDER_ANIMATION;
+ uiItemR(sub, &ptr, "lock_frame", 0, "", icon);
+
uiBlockSetEmboss(block, UI_EMBOSS);
-
+
/* name */
uiItemR(sub, &ptr, "info", 0, "", ICON_NONE);
-
+
/* delete 'button' */
uiBlockSetEmboss(block, UI_EMBOSSN);
- /* right-align ............................... */
- sub= uiLayoutRow(row, 1);
- uiLayoutSetAlignment(sub, UI_LAYOUT_ALIGN_RIGHT);
- block= uiLayoutGetBlock(sub); // XXX... err...
-
- but= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0.0, 0.0, "Delete layer");
- uiButSetFunc(but, gp_ui_dellayer_cb, gpd, gpl);
+ /* right-align ............................... */
+ sub = uiLayoutRow(row, 1);
+ uiLayoutSetAlignment(sub, UI_LAYOUT_ALIGN_RIGHT);
+ block = uiLayoutGetBlock(sub); /* XXX... err... */
+
+ but = uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y,
+ NULL, 0.0, 0.0, 0.0, 0.0, TIP_("Delete layer"));
+ uiButSetFunc(but, gp_ui_dellayer_cb, gpd, gpl);
uiBlockSetEmboss(block, UI_EMBOSS);
-
-
+
/* new backdrop ----------------------------------- */
- box= uiLayoutBox(layout);
- split= uiLayoutSplit(box, 0.5f, 0);
-
+ box = uiLayoutBox(layout);
+ split = uiLayoutSplit(box, 0.5f, 0);
+
/* draw settings ---------------------------------- */
/* left column ..................... */
- col= uiLayoutColumn(split, 0);
-
+ col = uiLayoutColumn(split, 0);
+
/* color */
- sub= uiLayoutColumn(col, 1);
+ sub = uiLayoutColumn(col, 1);
uiItemR(sub, &ptr, "color", 0, "", ICON_NONE);
uiItemR(sub, &ptr, "alpha", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
-
+
/* stroke thickness */
uiItemR(col, &ptr, "line_width", UI_ITEM_R_SLIDER, NULL, ICON_NONE);
-
+
/* debugging options */
if (G.f & G_DEBUG) {
uiItemR(col, &ptr, "show_points", 0, NULL, ICON_NONE);
}
-
+
/* right column ................... */
- col= uiLayoutColumn(split, 0);
-
+ col = uiLayoutColumn(split, 0);
+
/* onion-skinning */
- sub= uiLayoutColumn(col, 1);
- uiItemR(sub, &ptr, "use_onion_skinning", 0, "Onion Skinning", ICON_NONE);
- uiItemR(sub, &ptr, "ghost_range_max", 0, "Frames", ICON_NONE); // XXX shorter name here? i.e. GStep
-
+ sub = uiLayoutColumn(col, 1);
+ uiItemR(sub, &ptr, "use_onion_skinning", 0, NULL, ICON_NONE);
+ uiItemR(sub, &ptr, "ghost_range_max", 0, IFACE_("Frames"), ICON_NONE);
+
/* 3d-view specific drawing options */
if (is_v3d) {
- uiItemR(col, &ptr, "show_x_ray", 0, "X-Ray", ICON_NONE);
+ uiItemR(col, &ptr, "show_x_ray", 0, NULL, ICON_NONE);
}
-
}
-}
+}
/* stroke drawing options available */
typedef enum eGP_Stroke_Ops {
- STROKE_OPTS_NORMAL = 0,
- STROKE_OPTS_V3D_OFF,
- STROKE_OPTS_V3D_ON,
+ STROKE_OPTS_NORMAL = 0,
+ STROKE_OPTS_V3D_OFF = 1,
+ STROKE_OPTS_V3D_ON = 2,
} eGP_Stroke_Ops;
/* Draw the contents for a grease-pencil panel*/
-static void draw_gpencil_panel (bContext *C, uiLayout *layout, bGPdata *gpd, PointerRNA *ctx_ptr)
+static void draw_gpencil_panel(bContext *C, uiLayout *layout, bGPdata *gpd, PointerRNA *ctx_ptr)
{
PointerRNA gpd_ptr;
bGPDlayer *gpl;
uiLayout *col, *row;
short v3d_stroke_opts = STROKE_OPTS_NORMAL;
- const short is_v3d= CTX_wm_view3d(C) != NULL;
-
+ const short is_v3d = CTX_wm_view3d(C) != NULL;
+
/* make new PointerRNA for Grease Pencil block */
RNA_id_pointer_create((ID *)gpd, &gpd_ptr);
-
+
/* draw gpd settings first ------------------------------------- */
- col= uiLayoutColumn(layout, 0);
- /* current Grease Pencil block */
- // TODO: show some info about who owns this?
- uiTemplateID(col, C, ctx_ptr, "grease_pencil", "GPENCIL_OT_data_add", NULL, "GPENCIL_OT_data_unlink");
-
- /* add new layer button - can be used even when no data, since it can add a new block too */
- uiItemO(col, "New Layer", ICON_NONE, "GPENCIL_OT_layer_add");
- row= uiLayoutRow(col, 1);
- uiItemO(row, "Delete Frame", ICON_NONE, "GPENCIL_OT_active_frame_delete");
- uiItemO(row, "Convert", ICON_NONE, "GPENCIL_OT_convert");
-
+ col = uiLayoutColumn(layout, 0);
+ /* current Grease Pencil block */
+ /* TODO: show some info about who owns this? */
+ uiTemplateID(col, C, ctx_ptr, "grease_pencil", "GPENCIL_OT_data_add", NULL, "GPENCIL_OT_data_unlink");
+
+ /* add new layer button - can be used even when no data, since it can add a new block too */
+ uiItemO(col, IFACE_("New Layer"), ICON_NONE, "GPENCIL_OT_layer_add");
+ row = uiLayoutRow(col, 1);
+ uiItemO(row, IFACE_("Delete Frame"), ICON_NONE, "GPENCIL_OT_active_frame_delete");
+ uiItemO(row, IFACE_("Convert"), ICON_NONE, "GPENCIL_OT_convert");
+
/* sanity checks... */
if (gpd == NULL)
return;
-
+
/* draw each layer --------------------------------------------- */
- for (gpl= gpd->layers.first; gpl; gpl= gpl->next) {
- col= uiLayoutColumn(layout, 1);
- gp_drawui_layer(col, gpd, gpl, is_v3d);
+ for (gpl = gpd->layers.first; gpl; gpl = gpl->next) {
+ col = uiLayoutColumn(layout, 1);
+ gp_drawui_layer(col, gpd, gpl, is_v3d);
}
-
+
/* draw gpd drawing settings first ------------------------------------- */
- col= uiLayoutColumn(layout, 1);
+ col = uiLayoutColumn(layout, 1);
/* label */
- uiItemL(col, "Drawing Settings:", ICON_NONE);
-
+ uiItemL(col, IFACE_("Drawing Settings:"), ICON_NONE);
+
/* check whether advanced 3D-View drawing space options can be used */
if (is_v3d) {
if (gpd->flag & (GP_DATA_DEPTH_STROKE|GP_DATA_DEPTH_VIEW))
@@ -277,7 +278,7 @@ static void draw_gpencil_panel (bContext *C, uiLayout *layout, bGPdata *gpd, Poi
else
v3d_stroke_opts = STROKE_OPTS_V3D_OFF;
}
-
+
/* drawing space options */
row= uiLayoutRow(col, 1);
uiItemEnumR_string(row, &gpd_ptr, "draw_mode", "VIEW", NULL, ICON_NONE);
@@ -286,11 +287,11 @@ static void draw_gpencil_panel (bContext *C, uiLayout *layout, bGPdata *gpd, Poi
uiLayoutSetActive(row, v3d_stroke_opts);
uiItemEnumR_string(row, &gpd_ptr, "draw_mode", "SURFACE", NULL, ICON_NONE);
uiItemEnumR_string(row, &gpd_ptr, "draw_mode", "STROKE", NULL, ICON_NONE);
-
+
row= uiLayoutRow(col, 0);
uiLayoutSetActive(row, v3d_stroke_opts==STROKE_OPTS_V3D_ON);
uiItemR(row, &gpd_ptr, "use_stroke_endpoints", 0, NULL, ICON_NONE);
-}
+}
/* Standard panel to be included wherever Grease Pencil is used... */
@@ -298,12 +299,12 @@ void gpencil_panel_standard(const bContext *C, Panel *pa)
{
bGPdata **gpd_ptr = NULL;
PointerRNA ptr;
-
- //if (v3d->flag2 & V3D_DISPGP)... etc.
-
+
+ /* if (v3d->flag2 & V3D_DISPGP)... etc. */
+
/* get pointer to Grease Pencil Data */
- gpd_ptr= gpencil_data_get_pointers((bContext *)C, &ptr);
-
+ gpd_ptr = gpencil_data_get_pointers((bContext *)C, &ptr);
+
if (gpd_ptr)
draw_gpencil_panel((bContext *)C, pa->layout, *gpd_ptr, &ptr);
}