diff options
-rw-r--r-- | release/scripts/startup/bl_ui/space_clip.py | 16 | ||||
-rw-r--r-- | source/blender/editors/include/UI_interface.h | 1 | ||||
-rw-r--r-- | source/blender/editors/space_clip/clip_buttons.c | 59 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_ui_api.c | 6 |
4 files changed, 82 insertions, 0 deletions
diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py index d81356b3113..cadf01ccbba 100644 --- a/release/scripts/startup/bl_ui/space_clip.py +++ b/release/scripts/startup/bl_ui/space_clip.py @@ -875,6 +875,22 @@ class CLIP_PT_footage(CLIP_PT_clip_view_panel, Panel): col.prop(clip, "frame_offset") +class CLIP_PT_footage_info(CLIP_PT_clip_view_panel, Panel): + bl_space_type = 'CLIP_EDITOR' + bl_region_type = 'UI' + bl_label = "Footage Information" + bl_options = {'DEFAULT_CLOSED'} + + def draw(self, context): + layout = self.layout + + sc = context.space_data + clip = sc.clip + + col = layout.column() + col.template_movieclip_information(sc, "clip", sc.clip_user) + + class CLIP_PT_tools_clip(CLIP_PT_clip_view_panel, Panel): bl_space_type = 'CLIP_EDITOR' bl_region_type = 'TOOLS' diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index c7ed60bcdc0..f007b5ad5a7 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -855,6 +855,7 @@ void uiTemplateTextureShow(uiLayout *layout, struct bContext *C, struct PointerR void uiTemplateMovieClip(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, const char *propname, int compact); void uiTemplateTrack(struct uiLayout *layout, struct PointerRNA *ptr, const char *propname); void uiTemplateMarker(struct uiLayout *layout, struct PointerRNA *ptr, const char *propname, PointerRNA *userptr, PointerRNA *trackptr, int cmpact); +void uiTemplateMovieclipInformation(struct uiLayout *layout, struct PointerRNA *ptr, const char *propname,struct PointerRNA *userptr); void uiTemplateColorspaceSettings(struct uiLayout *layout, struct PointerRNA *ptr, const char *propname); void uiTemplateColormanagedViewSettings(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, const char *propname); diff --git a/source/blender/editors/space_clip/clip_buttons.c b/source/blender/editors/space_clip/clip_buttons.c index 8d863193b76..c8eb4157d65 100644 --- a/source/blender/editors/space_clip/clip_buttons.c +++ b/source/blender/editors/space_clip/clip_buttons.c @@ -41,7 +41,9 @@ #include "BLI_math.h" #include "BLI_utildefines.h" #include "BLI_listbase.h" +#include "BLI_path_util.h" #include "BLI_rect.h" +#include "BLI_string.h" #include "BLF_translation.h" @@ -482,3 +484,60 @@ void uiTemplateMarker(uiLayout *layout, PointerRNA *ptr, const char *propname, P uiBlockEndAlign(block); } } + +/********************* Footage Information Template ************************/ + +void uiTemplateMovieclipInformation(uiLayout *layout, PointerRNA *ptr, const char *propname, PointerRNA *userptr) +{ + PropertyRNA *prop; + PointerRNA clipptr; + MovieClip *clip; + MovieClipUser *user; + uiLayout *col; + char str[1024]; + int width, height, framenr; + + if (!ptr->data) + return; + + prop = RNA_struct_find_property(ptr, propname); + if (!prop) { + printf("%s: property not found: %s.%s\n", + __func__, RNA_struct_identifier(ptr->type), propname); + return; + } + + if (RNA_property_type(prop) != PROP_POINTER) { + printf("%s: expected pointer property for %s.%s\n", + __func__, RNA_struct_identifier(ptr->type), propname); + return; + } + + clipptr = RNA_property_pointer_get(ptr, prop); + clip = (MovieClip *)clipptr.data; + user = userptr->data; + + col = uiLayoutColumn(layout, FALSE); + + /* Display frame dimensions. */ + BKE_movieclip_get_size(clip, user, &width, &height); + BLI_snprintf(str, sizeof(str), IFACE_("Size: %dx%d"), width, height); + uiItemL(col, str, ICON_NONE); + + /* Display current frame number. */ + framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, user->framenr) + clip->frame_offset; + BLI_snprintf(str, sizeof(str), IFACE_("Frame: %d"), framenr); + uiItemL(col, str, ICON_NONE); + + /* Display current file name if it's a sequence clip. */ + if (clip->source == MCLIP_SRC_SEQUENCE) { + char filepath[FILE_MAX]; + const char *file; + + BKE_movieclip_filename_for_frame(clip, user, filepath); + file = BLI_last_slash(filepath); + + BLI_snprintf(str, sizeof(str), IFACE_("File: %s"), file); + uiItemL(col, str, ICON_NONE); + } +} diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 9c354e7f70e..c5c8789001a 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -767,6 +767,12 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_property_flag(parm, PROP_REQUIRED | PROP_RNAPTR | PROP_NEVER_NULL); RNA_def_boolean(func, "compact", 0, "", "Use more compact layout"); + func = RNA_def_function(srna, "template_movieclip_information", "uiTemplateMovieclipInformation"); + RNA_def_function_ui_description(func, "Item. Movie clip information data."); + api_ui_item_rna_common(func); + parm = RNA_def_pointer(func, "clip_user", "MovieClipUser", "", ""); + RNA_def_property_flag(parm, PROP_REQUIRED | PROP_RNAPTR | PROP_NEVER_NULL); + func = RNA_def_function(srna, "template_list", "uiTemplateList"); RNA_def_function_ui_description(func, "Item. A list widget to display data, e.g. vertexgroups."); RNA_def_function_flag(func, FUNC_USE_CONTEXT); |