[Bf-blender-cvs] [56598fd] multi_previews_id: Some UI access to multi-frames icons...

Bastien Montagne noreply at git.blender.org
Sat Oct 22 22:09:16 CEST 2016


Commit: 56598fd342aa888bf36f24034c5e369a7c2acd90
Author: Bastien Montagne
Date:   Sun Oct 16 20:42:24 2016 +0200
Branches: multi_previews_id
https://developer.blender.org/rB56598fd342aa888bf36f24034c5e369a7c2acd90

Some UI access to multi-frames icons...

Not so happy to have to change whole UI API like that, but... can't
really see another solution, since layout API does not return any
handler to button(s) it creates. :/

===================================================================

M	source/blender/editors/animation/fmodifier_ui.c
M	source/blender/editors/include/UI_interface.h
M	source/blender/editors/include/UI_interface_icons.h
M	source/blender/editors/interface/interface.c
M	source/blender/editors/interface/interface_icons.c
M	source/blender/editors/interface/interface_intern.h
M	source/blender/editors/interface/interface_layout.c
M	source/blender/editors/interface/interface_panel.c
M	source/blender/editors/interface/interface_regions.c
M	source/blender/editors/interface/interface_templates.c
M	source/blender/editors/interface/interface_utils.c
M	source/blender/editors/interface/interface_widgets.c
M	source/blender/editors/io/io_alembic.c
M	source/blender/editors/io/io_collada.c
M	source/blender/editors/screen/area.c
M	source/blender/editors/sculpt_paint/sculpt.c
M	source/blender/editors/space_buttons/buttons_context.c
M	source/blender/editors/space_buttons/buttons_texture.c
M	source/blender/editors/space_clip/clip_buttons.c
M	source/blender/editors/space_clip/clip_toolbar.c
M	source/blender/editors/space_file/file_draw.c
M	source/blender/editors/space_graph/graph_buttons.c
M	source/blender/editors/space_image/image_buttons.c
M	source/blender/editors/space_image/image_ops.c
M	source/blender/editors/space_info/space_info.c
M	source/blender/editors/space_logic/logic_window.c
M	source/blender/editors/space_nla/nla_buttons.c
M	source/blender/editors/space_node/drawnode.c
M	source/blender/editors/space_node/node_buttons.c
M	source/blender/editors/space_node/node_templates.c
M	source/blender/editors/space_outliner/outliner_draw.c
M	source/blender/editors/space_view3d/view3d_buttons.c
M	source/blender/editors/space_view3d/view3d_toolbar.c
M	source/blender/makesrna/intern/rna_ui_api.c
M	source/blender/windowmanager/intern/wm_dragdrop.c
M	source/blender/windowmanager/intern/wm_operators.c
M	source/blenderplayer/bad_level_call_stubs/stubs.c

===================================================================

diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c
index 6bb7341..8f28040 100644
--- a/source/blender/editors/animation/fmodifier_ui.c
+++ b/source/blender/editors/animation/fmodifier_ui.c
@@ -290,13 +290,13 @@ static void draw_modifier__cycles(uiLayout *layout, ID *id, FModifier *fcm, shor
 	
 	/* before range */
 	col = uiLayoutColumn(split, true);
-	uiItemL(col, IFACE_("Before:"), ICON_NONE);
+	uiItemL(col, IFACE_("Before:"), ICON_NONE, 0);
 	uiItemR(col, &ptr, "mode_before", 0, "", ICON_NONE);
 	uiItemR(col, &ptr, "cycles_before", 0, NULL, ICON_NONE);
 		
 	/* after range */
 	col = uiLayoutColumn(split, true);
-	uiItemL(col, IFACE_("After:"), ICON_NONE);
+	uiItemL(col, IFACE_("After:"), ICON_NONE, 0);
 	uiItemR(col, &ptr, "mode_after", 0, "", ICON_NONE);
 	uiItemR(col, &ptr, "cycles_after", 0, NULL, ICON_NONE);
 }
@@ -428,7 +428,7 @@ static void draw_modifier__envelope(uiLayout *layout, ID *id, FModifier *fcm, sh
 	
 	/* general settings */
 	col = uiLayoutColumn(layout, true);
-	uiItemL(col, IFACE_("Envelope:"), ICON_NONE);
+	uiItemL(col, IFACE_("Envelope:"), ICON_NONE, 0);
 	uiItemR(col, &ptr, "reference_value", 0, NULL, ICON_NONE);
 
 	row = uiLayoutRow(col, true);
@@ -587,9 +587,9 @@ void ANIM_uiTemplate_fmodifier_draw(uiLayout *layout, ID *id, ListBase *modifier
 		
 		/* name */
 		if (fmi)
-			uiItemL(sub, IFACE_(fmi->name), ICON_NONE);
+			uiItemL(sub, IFACE_(fmi->name), ICON_NONE, 0);
 		else
-			uiItemL(sub, IFACE_("<Unknown Modifier>"), ICON_NONE);
+			uiItemL(sub, IFACE_("<Unknown Modifier>"), ICON_NONE, 0);
 		
 		/* right-align ------------------------------------------- */
 		sub = uiLayoutRow(row, true);
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index fd53513..7a3fb8d 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -984,7 +984,7 @@ PointerRNA uiItemFullO_ptr(uiLayout *layout, struct wmOperatorType *ot, const ch
 PointerRNA uiItemFullO(uiLayout *layout, const char *idname, const char *name, int icon, struct IDProperty *properties, int context, int flag);
 
 void uiItemR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, int flag, const char *name, int icon);
-void uiItemFullR(uiLayout *layout, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int flag, const char *name, int icon);
+void uiItemFullR(uiLayout *layout, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int flag, const char *name, int icon, const unsigned short icon_frame);
 void uiItemEnumR_prop(uiLayout *layout, const char *name, int icon, struct PointerRNA *ptr, PropertyRNA *prop, int value);
 void uiItemEnumR(uiLayout *layout, const char *name, int icon, struct PointerRNA *ptr, const char *propname, int value);
 void uiItemEnumR_string(uiLayout *layout, struct PointerRNA *ptr, const char *propname, const char *value, const char *name, int icon);
@@ -998,7 +998,7 @@ void uiItemsFullEnumO_items(
         IDProperty *properties, int context, int flag,
         const EnumPropertyItem *item_array, int totitem);
 
-void uiItemL(uiLayout *layout, const char *name, int icon); /* label */
+void uiItemL(uiLayout *layout, const char *name, int icon, const unsigned short icon_frame); /* label */
 void uiItemLDrag(uiLayout *layout, struct PointerRNA *ptr, const char *name, int icon); /* label icon for dragging */
 void uiItemM(uiLayout *layout, struct bContext *C, const char *menuname, const char *name, int icon); /* menu */
 void uiItemV(uiLayout *layout, const char *name, int icon, int argval); /* value */
diff --git a/source/blender/editors/include/UI_interface_icons.h b/source/blender/editors/include/UI_interface_icons.h
index 945ac1b..473170a 100644
--- a/source/blender/editors/include/UI_interface_icons.h
+++ b/source/blender/editors/include/UI_interface_icons.h
@@ -70,7 +70,7 @@ void UI_icon_draw_preview(float x, float y, int icon_id);
 void UI_icon_draw_preview_aspect(float x, float y, int icon_id, float aspect);
 void UI_icon_draw_preview_aspect_size(float x, float y, int icon_id, float aspect, float alpha, int size);
 
-void UI_icon_draw_aspect(float x, float y, int icon_id, float aspect, float alpha);
+void UI_icon_draw_aspect(float x, float y, int icon_id, const short frame, float aspect, float alpha);
 void UI_icon_draw_aspect_color(float x, float y, int icon_id, float aspect, const float rgb[3]);
 void UI_icon_draw_size(float x, float y, int size, int icon_id, float alpha);
 void UI_icons_free(void);
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index 6bba35e..3eb915b 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -719,6 +719,7 @@ static bool ui_but_update_from_old_block(const bContext *C, uiBlock *block, uiBu
 
 		/* drawing */
 		oldbut->icon = but->icon;
+		oldbut->icon_frame = but->icon_frame;
 		oldbut->iconadd = but->iconadd;
 		oldbut->alignnr = but->alignnr;
 
@@ -3202,12 +3203,15 @@ static uiBut *ui_def_but(
 	return but;
 }
 
-void ui_def_but_icon(uiBut *but, const int icon, const int flag)
+/* Note that we may extend this further in future (thinking e.g. to some animated icons for active widget,
+ * could be nice for videos or animations previews... */
+void ui_def_but_icon_ex(uiBut *but, const int icon, const short frame, const int flag)
 {
 	if (icon) {
 		ui_icon_ensure_deferred(but->block->evil_C, icon, (flag & UI_BUT_ICON_PREVIEW) != 0);
 	}
 	but->icon = (BIFIconID)icon;
+	but->icon_frame = frame;
 	but->flag |= flag;
 
 	if (but->str && but->str[0]) {
@@ -3215,6 +3219,11 @@ void ui_def_but_icon(uiBut *but, const int icon, const int flag)
 	}
 }
 
+void ui_def_but_icon(uiBut *but, const int icon, const int flag)
+{
+	ui_def_but_icon_ex(but, icon, 0, flag);
+}
+
 static void ui_def_but_rna__disable(uiBut *but, const char *info)
 {
 	but->flag |= UI_BUT_DISABLED;
@@ -3312,7 +3321,7 @@ static void ui_def_but_rna__menu(bContext *UNUSED(C), uiLayout *layout, void *bu
 		if (!item->identifier[0]) {
 			if (item->name) {
 				if (item->icon) {
-					uiItemL(column, item->name, item->icon);
+					uiItemL(column, item->name, item->icon, 0);
 				}
 				else {
 					/* Do not use uiItemL here, as our root layout is a menu one, it will add a fake blank icon! */
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c
index eaf9e79..a4d5285 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -1606,16 +1606,16 @@ int UI_idcode_icon_get(const int idcode)
 }
 
 static void icon_draw_at_size(
-        float x, float y, int icon_id, float aspect, float alpha,
+        float x, float y, int icon_id, const short frame, float aspect, float alpha,
         enum eIconSizes size, const bool nocreate)
 {
 	int draw_size = get_draw_size(size);
-	icon_draw_size(x, y, icon_id, 0, aspect, alpha, NULL, size, draw_size, nocreate, false);
+	icon_draw_size(x, y, icon_id, frame, aspect, alpha, NULL, size, draw_size, nocreate, false);
 }
 
-void UI_icon_draw_aspect(float x, float y, int icon_id, float aspect, float alpha)
+void UI_icon_draw_aspect(float x, float y, int icon_id, const short frame, float aspect, float alpha)
 {
-	icon_draw_at_size(x, y, icon_id, aspect, alpha, ICON_SIZE_ICON, 0);
+	icon_draw_at_size(x, y, icon_id, frame, aspect, alpha, ICON_SIZE_ICON, 0);
 }
 
 void UI_icon_draw_aspect_color(float x, float y, int icon_id, float aspect, const float rgb[3])
@@ -1627,7 +1627,7 @@ void UI_icon_draw_aspect_color(float x, float y, int icon_id, float aspect, cons
 /* draws icon with dpi scale factor */
 void UI_icon_draw(float x, float y, int icon_id)
 {
-	UI_icon_draw_aspect(x, y, icon_id, 1.0f / UI_DPI_FAC, 1.0f);
+	UI_icon_draw_aspect(x, y, icon_id, 0, 1.0f / UI_DPI_FAC, 1.0f);
 }
 
 void UI_icon_draw_size(float x, float y, int size, int icon_id, float alpha)
@@ -1637,12 +1637,12 @@ void UI_icon_draw_size(float x, float y, int size, int icon_id, float alpha)
 
 void UI_icon_draw_preview(float x, float y, int icon_id)
 {
-	icon_draw_at_size(x, y, icon_id, 1.0f, 1.0f, ICON_SIZE_PREVIEW, 0);
+	icon_draw_at_size(x, y, icon_id, 0, 1.0f, 1.0f, ICON_SIZE_PREVIEW, 0);
 }
 
 void UI_icon_draw_preview_aspect(float x, float y, int icon_id, float aspect)
 {
-	icon_draw_at_size(x, y, icon_id, aspect, 1.0f, ICON_SIZE_PREVIEW, 0);
+	icon_draw_at_size(x, y, icon_id, 0, aspect, 1.0f, ICON_SIZE_PREVIEW, 0);
 }
 
 void UI_icon_draw_preview_aspect_size(float x, float y, int icon_id, float aspect, float alpha, int size)
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index fcf827b..ccb48d8 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -275,6 +275,7 @@ struct uiBut {
 	const char *disabled_info;
 
 	BIFIconID icon;
+	short icon_frame;  /* For icon pointing to multi-frames ImagePreview. */
 	char dt; /* drawtype: UI_EMBOSS, UI_EMBOSS_NONE ... etc, copied from the block */
 	signed char pie_dir; /* direction in a pie menu, used for collision detection (RadialDirection) */
 	char changed; /* could be made into a single flag */
@@ -482,6 +483,7 @@ extern bool ui_but_string_set_eval_num(struct bContext *C, uiBut *but, const cha
 extern int  ui_but_string_get_max_length(uiBut *but);
 extern uiBut *ui_but_drag_multi_edit_get(uiBut *but);
 
+void ui_def_but_icon_ex(uiBut *but, const int icon, const short frame, const int flag);
 void ui_def_but_icon(uiBut *but, const int icon, const int flag);
 extern uiButExtraIconType ui_but_icon_extra_get(uiBut *but);
 
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index 875522e..fb55757 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -973,7 +973,7 @@ void uiItemsFullEnumO_items(
 				}
 
 				if (item->icon || radial) {
-					uiItemL(target, item->name, item->icon);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list