Mercurial > hg > forks > geeqie
changeset 2597:e65df743a5a1
Ref #510: Rudimentary video support
https://github.com/BestImageViewer/geeqie/issues/510
Implement icons for FORMAT_CLASS
author | Colin Clark <colin.clark@cclark.uk> |
---|---|
date | Wed, 13 Sep 2017 11:21:58 +0100 |
parents | 9c435c86a296 |
children | b8f3f29bd641 |
files | src/filedata.c src/filefilter.c src/filefilter.h src/icons/Makefile.am src/icons/sheet_metadata.png src/icons/sheet_unknown.png src/icons/sheet_video.png src/icons/svg/Makefile.am src/icons/svg/sheet_metadata.svg src/icons/svg/sheet_unknown.svg src/icons/svg/sheet_video.svg src/image.c src/pixbuf_util.c src/pixbuf_util.h src/preferences.c src/typedefs.h |
diffstat | 16 files changed, 365 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/filedata.c Mon Sep 11 18:19:46 2017 +0100 +++ b/src/filedata.c Wed Sep 13 11:21:58 2017 +0100 @@ -429,6 +429,7 @@ fd->magick = FD_MAGICK; fd->exifdate = 0; fd->rating = 0; + fd->format_class = filter_file_get_class(path_utf8); if (disable_sidecars) fd->disable_grouping = TRUE;
--- a/src/filefilter.c Mon Sep 11 18:19:46 2017 +0100 +++ b/src/filefilter.c Wed Sep 13 11:21:58 2017 +0100 @@ -449,6 +449,15 @@ return !!filter_name_find(file_class_extension_list[file_class], name); } +FileFormatClass filter_file_get_class(const gchar *name) +{ + if (filter_file_class(name, FORMAT_CLASS_IMAGE)) return FORMAT_CLASS_IMAGE; + if (filter_file_class(name, FORMAT_CLASS_RAWIMAGE)) return FORMAT_CLASS_RAWIMAGE; + if (filter_file_class(name, FORMAT_CLASS_META)) return FORMAT_CLASS_META; + if (filter_file_class(name, FORMAT_CLASS_VIDEO)) return FORMAT_CLASS_VIDEO; + return FORMAT_CLASS_UNKNOWN; +} + gboolean filter_name_is_writable(const gchar *name) { return !!filter_name_find(file_writable_list, name);
--- a/src/filefilter.h Mon Sep 11 18:19:46 2017 +0100 +++ b/src/filefilter.h Wed Sep 13 11:21:58 2017 +0100 @@ -48,6 +48,7 @@ const gchar *registered_extension_from_path(const gchar *name); gboolean filter_name_exists(const gchar *name); gboolean filter_file_class(const gchar *name, FileFormatClass file_class); +FileFormatClass filter_file_get_class(const gchar *name); gboolean filter_name_is_writable(const gchar *name); gboolean filter_name_allow_sidecar(const gchar *name);
--- a/src/icons/Makefile.am Mon Sep 11 18:19:46 2017 +0100 +++ b/src/icons/Makefile.am Wed Sep 13 11:21:58 2017 +0100 @@ -12,6 +12,9 @@ geeqie_logo.png \ scroller.png \ sheet_broken.png \ + sheet_metadata.png \ + sheet_unknown.png \ + sheet_video.png \ icon_float.png \ icon_thumb.png \ icon_book.png \ @@ -30,6 +33,9 @@ icon_thumb $(srcdir)/icon_thumb.png \ icon_scroller $(srcdir)/scroller.png \ icon_broken $(srcdir)/sheet_broken.png \ + icon_metadata $(srcdir)/sheet_metadata.png \ + icon_unknown $(srcdir)/sheet_unknown.png \ + icon_video $(srcdir)/sheet_video.png \ icon_book $(srcdir)/icon_book.png \ icon_config $(srcdir)/icon_config.png \ icon_tools $(srcdir)/icon_tools.png \
--- a/src/icons/svg/Makefile.am Mon Sep 11 18:19:46 2017 +0100 +++ b/src/icons/svg/Makefile.am Wed Sep 13 11:21:58 2017 +0100 @@ -12,6 +12,9 @@ icon_view.svg \ sheet_blank.svg \ sheet_broken.svg \ + sheet_metadata.svg \ + sheet_unknown.svg \ + sheet_video.svg \ spinner_orbit.svg EXTRA_DIST = $(svg_images)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/icons/svg/sheet_metadata.svg Wed Sep 13 11:21:58 2017 +0100 @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg1" + sodipodi:version="0.32" + inkscape:version="0.92.1 r" + width="256.00000pt" + height="256.00000pt" + sodipodi:docname="sheet_metadata.svg" + version="1.1" + inkscape:export-filename="/home/tomaszg/src/geeqie/geeqie.org/src/icons/svg/sheet_blankx.svg.png" + inkscape:export-xdpi="13.5" + inkscape:export-ydpi="13.5"> + <metadata + id="metadata883"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs3" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="162.82316" + inkscape:cy="169.784" + inkscape:window-width="2554" + inkscape:window-height="1384" + showgrid="true" + gridtolerance="1.0000000pt" + snaptoguides="false" + guidetolerance="5.0000000pt" + snaptogrid="true" + inkscape:window-x="3" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg1"> + <inkscape:grid + id="GridFromPre046Settings" + type="xygrid" + originx="0" + originy="0" + spacingx="14.222222" + spacingy="14.222222" + color="#3f3fff" + empcolor="#3f3fff" + opacity="0.15" + empopacity="0.38" + empspacing="5" /> + </sodipodi:namedview> + <path + style="fill:#f5f5e6;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.33333349;stroke-linejoin:round" + d="M 53.333333,21.333333 V 314.66667 H 293.33333 V 128 c 0,-7.33333 0,-13.33333 -2.66666,-22 L 237.33333,26 c -10.66666,-4.666667 -18.66666,-4.666667 -24,-4.666667 z" + id="path826" + sodipodi:nodetypes="cccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:#000000;fill-opacity:0.25619836;fill-rule:evenodd;stroke:none;stroke-width:5.33333349;stroke-linejoin:round" + d="m 292,107.33333 v 0 L 238.66667,27.333333 230.51878,90.228764 C 248.96977,98.444445 269.30637,107.33333 292,107.33333 Z" + id="path829" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:#fafaeb;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.66666675;stroke-linejoin:round;stroke-dasharray:none" + d="M 225.33333,80.666667 C 252,84.84151 265.33333,83.966498 292,107.33333 L 238.66667,27.333333 c 0,31.919914 -8.88889,35.555556 -13.33334,53.333334 z" + id="path828" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + <flowRoot + xml:space="preserve" + id="flowRoot831" + style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42.66666794px;line-height:125%;font-family:FreeMono;-inkscape-font-specification:'FreeMono Italic';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#003380;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + transform="translate(-16.906653,49.002012)"><flowRegion + id="flowRegion833" + style="font-size:42.66666794px;fill:#003380"><rect + id="rect835" + width="189.33333" + height="190" + x="75" + y="60.333332" + style="font-size:42.66666794px;fill:#003380" /></flowRegion><flowPara + id="flowPara837" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:64px;font-family:FreeMono;-inkscape-font-specification:'FreeMono Bold';fill:#003380">0101 0110 1011 0101 0101</flowPara></flowRoot></svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/icons/svg/sheet_unknown.svg Wed Sep 13 11:21:58 2017 +0100 @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg1" + sodipodi:version="0.32" + inkscape:version="0.92.1 r" + width="256.00000pt" + height="256.00000pt" + sodipodi:docname="sheet_unknown.svg" + version="1.1" + inkscape:export-filename="/home/tomaszg/src/geeqie/geeqie.org/src/icons/sheet_unknown.png" + inkscape:export-xdpi="13.5" + inkscape:export-ydpi="13.5"> + <metadata + id="metadata883"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs3" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="162.82316" + inkscape:cy="169.784" + inkscape:window-width="2554" + inkscape:window-height="1384" + showgrid="true" + gridtolerance="1.0000000pt" + snaptoguides="false" + guidetolerance="5.0000000pt" + snaptogrid="true" + inkscape:window-x="3" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg1"> + <inkscape:grid + id="GridFromPre046Settings" + type="xygrid" + originx="0" + originy="0" + spacingx="14.222222" + spacingy="14.222222" + color="#3f3fff" + empcolor="#3f3fff" + opacity="0.15" + empopacity="0.38" + empspacing="5" /> + </sodipodi:namedview> + <path + style="fill:#f5f5e6;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.33333349;stroke-linejoin:round" + d="M 53.333333,21.333333 V 314.66667 H 293.33333 V 128 c 0,-7.33333 0,-13.33333 -2.66666,-22 L 237.33333,26 c -10.66666,-4.666667 -18.66666,-4.666667 -24,-4.666667 z" + id="path826" + sodipodi:nodetypes="cccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:#000000;fill-opacity:0.25619836;fill-rule:evenodd;stroke:none;stroke-width:5.33333349;stroke-linejoin:round" + d="m 292,107.33333 v 0 L 238.66667,27.333333 230.51878,90.228764 C 248.96977,98.444445 269.30637,107.33333 292,107.33333 Z" + id="path829" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:#fafaeb;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.66666675;stroke-linejoin:round;stroke-dasharray:none" + d="M 225.33333,80.666667 C 252,84.84151 265.33333,83.966498 292,107.33333 L 238.66667,27.333333 c 0,31.919914 -8.88889,35.555556 -13.33334,53.333334 z" + id="path828" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + <flowRoot + xml:space="preserve" + id="flowRoot831" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:42.66666794px;line-height:125%;font-family:FreeMono;-inkscape-font-specification:'FreeMono Bold';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + transform="translate(-15.163317,80.274016)"><flowRegion + id="flowRegion833" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:42.66666794px;font-family:FreeMono;-inkscape-font-specification:'FreeMono Bold';fill:#000000"><rect + id="rect835" + width="189.33333" + height="190" + x="75" + y="60.333332" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:42.66666794px;font-family:FreeMono;-inkscape-font-specification:'FreeMono Bold';fill:#000000" /></flowRegion><flowPara + id="flowPara837" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:85.33333588px;font-family:FreeMono;-inkscape-font-specification:'FreeMono Bold';fill:#000000">???</flowPara></flowRoot></svg>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/icons/svg/sheet_video.svg Wed Sep 13 11:21:58 2017 +0100 @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg1" + sodipodi:version="0.32" + inkscape:version="0.92.1 r" + width="256.00000pt" + height="256.00000pt" + sodipodi:docname="sheet_video.svg" + version="1.1" + inkscape:export-filename="/home/tomaszg/src/geeqie/geeqie.org/src/icons/sheet_video.png" + inkscape:export-xdpi="13.5" + inkscape:export-ydpi="13.5"> + <metadata + id="metadata883"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs3" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="148.42568" + inkscape:cy="222.41884" + inkscape:window-width="2554" + inkscape:window-height="1384" + showgrid="true" + gridtolerance="1.0000000pt" + snaptoguides="false" + guidetolerance="5.0000000pt" + snaptogrid="true" + inkscape:window-x="3" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="svg1"> + <inkscape:grid + id="GridFromPre046Settings" + type="xygrid" + originx="0" + originy="0" + spacingx="14.222222" + spacingy="14.222222" + color="#3f3fff" + empcolor="#3f3fff" + opacity="0.15" + empopacity="0.38" + empspacing="5" /> + </sodipodi:namedview> + <path + style="fill:#f5f5e6;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.33333349;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" + d="M 53.333333,21.333333 V 314.66667 H 293.33333 V 128 c 0,-7.33333 0,-13.33333 -2.66666,-22 L 237.33333,26 c -10.66666,-4.666667 -18.66666,-4.666667 -24,-4.666667 z" + id="path826" + sodipodi:nodetypes="cccccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:#000000;fill-opacity:0.25619836;fill-rule:evenodd;stroke:none;stroke-width:5.33333349;stroke-linejoin:round" + d="m 292,107.33333 v 0 L 238.66667,27.333333 230.51878,90.228764 C 248.96977,98.444445 269.30637,107.33333 292,107.33333 Z" + id="path829" + sodipodi:nodetypes="ccccc" + inkscape:connector-curvature="0" /> + <path + style="fill:#fafaeb;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.66666675;stroke-linejoin:round;stroke-dasharray:none" + d="M 225.33333,80.666667 C 252,84.84151 265.33333,83.966498 292,107.33333 L 238.66667,27.333333 c 0,31.919914 -8.88889,35.555556 -13.33334,53.333334 z" + id="path828" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + <circle + style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e6f3f5;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.33300018;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" + id="path1502" + cx="173.33333" + cy="195.55556" + r="81.777779" /> + <path + style="fill:#808080;fill-rule:evenodd;stroke:#000000;stroke-width:5.33300018;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 139.11112,124.55556 V 266.77778 L 252.16667,194.66667 Z" + id="path1506" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> +</svg>
--- a/src/image.c Mon Sep 11 18:19:46 2017 +0100 +++ b/src/image.c Wed Sep 13 11:21:58 2017 +0100 @@ -671,7 +671,21 @@ { GdkPixbuf *pixbuf; - pixbuf = pixbuf_inline(PIXBUF_INLINE_BROKEN); + switch (imd->image_fd->format_class) + { + case FORMAT_CLASS_UNKNOWN: + pixbuf = pixbuf_inline(PIXBUF_INLINE_UNKNOWN); + break; + case FORMAT_CLASS_META: + pixbuf = pixbuf_inline(PIXBUF_INLINE_METADATA); + break; + case FORMAT_CLASS_VIDEO: + pixbuf = pixbuf_inline(PIXBUF_INLINE_VIDEO); + break; + default: + pixbuf = pixbuf_inline(PIXBUF_INLINE_BROKEN); + } + image_change_pixbuf(imd, pixbuf, image_zoom_get(imd), FALSE); g_object_unref(pixbuf);
--- a/src/pixbuf_util.c Mon Sep 11 18:19:46 2017 +0100 +++ b/src/pixbuf_util.c Wed Sep 13 11:21:58 2017 +0100 @@ -108,6 +108,9 @@ { PIXBUF_INLINE_FOLDER_UP, folder_up }, { PIXBUF_INLINE_SCROLLER, icon_scroller }, { PIXBUF_INLINE_BROKEN, icon_broken }, + { PIXBUF_INLINE_METADATA, icon_metadata }, + { PIXBUF_INLINE_UNKNOWN, icon_unknown }, + { PIXBUF_INLINE_VIDEO, icon_video }, { PIXBUF_INLINE_ICON, gqview_icon }, { PIXBUF_INLINE_LOGO, geeqie_logo }, { PIXBUF_INLINE_ICON_FLOAT, icon_float }, @@ -238,7 +241,22 @@ GdkPixbuf *pixbuf_fallback(FileData *fd, gint requested_width, gint requested_height) { - GdkPixbuf *pixbuf = pixbuf_inline(PIXBUF_INLINE_BROKEN); /* FIXME use different images according to FORMAT_CLASS */ + GdkPixbuf *pixbuf; + + switch (fd->format_class) + { + case FORMAT_CLASS_UNKNOWN: + pixbuf = pixbuf_inline(PIXBUF_INLINE_UNKNOWN); + break; + case FORMAT_CLASS_META: + pixbuf = pixbuf_inline(PIXBUF_INLINE_METADATA); + break; + case FORMAT_CLASS_VIDEO: + pixbuf = pixbuf_inline(PIXBUF_INLINE_VIDEO); + break; + default: + pixbuf = pixbuf_inline(PIXBUF_INLINE_BROKEN); + } if (requested_width && requested_height) {
--- a/src/pixbuf_util.h Mon Sep 11 18:19:46 2017 +0100 +++ b/src/pixbuf_util.h Wed Sep 13 11:21:58 2017 +0100 @@ -40,6 +40,9 @@ #define PIXBUF_INLINE_FOLDER_UP "folder_up" #define PIXBUF_INLINE_SCROLLER "scroller" #define PIXBUF_INLINE_BROKEN "broken" +#define PIXBUF_INLINE_METADATA "metadata" +#define PIXBUF_INLINE_UNKNOWN "unknown" +#define PIXBUF_INLINE_VIDEO "video" #define PIXBUF_INLINE_ICON "icon" #define PIXBUF_INLINE_LOGO "logo"
--- a/src/preferences.c Mon Sep 11 18:19:46 2017 +0100 +++ b/src/preferences.c Wed Sep 13 11:21:58 2017 +0100 @@ -106,7 +106,8 @@ N_("Unknown"), N_("Image"), N_("RAW Image"), - N_("Metadata") + N_("Metadata"), + N_("Video") }; /* config memory values */
--- a/src/typedefs.h Mon Sep 11 18:19:46 2017 +0100 +++ b/src/typedefs.h Wed Sep 13 11:21:58 2017 +0100 @@ -133,6 +133,7 @@ FORMAT_CLASS_IMAGE, FORMAT_CLASS_RAWIMAGE, FORMAT_CLASS_META, + FORMAT_CLASS_VIDEO, FILE_FORMAT_CLASSES } FileFormatClass; @@ -546,6 +547,7 @@ const gchar *name; const gchar *extension; gchar *extended_extension; + FileFormatClass format_class; gchar *collate_key_name; gchar *collate_key_name_nocase; gint64 size;