--- /dev/null
+Copyright 2007 The Ibarra Real Nova Project Authors (https://github.com/googlefonts/ibarrareal)\r
+\r
+This Font Software is licensed under the SIL Open Font License, Version 1.1.\r
+This license is copied below, and is also available with a FAQ at:\r
+http://scripts.sil.org/OFL\r
+\r
+\r
+-----------------------------------------------------------\r
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r
+-----------------------------------------------------------\r
+\r
+PREAMBLE\r
+The goals of the Open Font License (OFL) are to stimulate worldwide\r
+development of collaborative font projects, to support the font creation\r
+efforts of academic and linguistic communities, and to provide a free and\r
+open framework in which fonts may be shared and improved in partnership\r
+with others.\r
+\r
+The OFL allows the licensed fonts to be used, studied, modified and\r
+redistributed freely as long as they are not sold by themselves. The\r
+fonts, including any derivative works, can be bundled, embedded, \r
+redistributed and/or sold with any software provided that any reserved\r
+names are not used by derivative works. The fonts and derivatives,\r
+however, cannot be released under any other type of license. The\r
+requirement for fonts to remain under this license does not apply\r
+to any document created using the fonts or their derivatives.\r
+\r
+DEFINITIONS\r
+"Font Software" refers to the set of files released by the Copyright\r
+Holder(s) under this license and clearly marked as such. This may\r
+include source files, build scripts and documentation.\r
+\r
+"Reserved Font Name" refers to any names specified as such after the\r
+copyright statement(s).\r
+\r
+"Original Version" refers to the collection of Font Software components as\r
+distributed by the Copyright Holder(s).\r
+\r
+"Modified Version" refers to any derivative made by adding to, deleting,\r
+or substituting -- in part or in whole -- any of the components of the\r
+Original Version, by changing formats or by porting the Font Software to a\r
+new environment.\r
+\r
+"Author" refers to any designer, engineer, programmer, technical\r
+writer or other person who contributed to the Font Software.\r
+\r
+PERMISSION & CONDITIONS\r
+Permission is hereby granted, free of charge, to any person obtaining\r
+a copy of the Font Software, to use, study, copy, merge, embed, modify,\r
+redistribute, and sell modified and unmodified copies of the Font\r
+Software, subject to the following conditions:\r
+\r
+1) Neither the Font Software nor any of its individual components,\r
+in Original or Modified Versions, may be sold by itself.\r
+\r
+2) Original or Modified Versions of the Font Software may be bundled,\r
+redistributed and/or sold with any software, provided that each copy\r
+contains the above copyright notice and this license. These can be\r
+included either as stand-alone text files, human-readable headers or\r
+in the appropriate machine-readable metadata fields within text or\r
+binary files as long as those fields can be easily viewed by the user.\r
+\r
+3) No Modified Version of the Font Software may use the Reserved Font\r
+Name(s) unless explicit written permission is granted by the corresponding\r
+Copyright Holder. This restriction only applies to the primary font name as\r
+presented to the users.\r
+\r
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r
+Software shall not be used to promote, endorse or advertise any\r
+Modified Version, except to acknowledge the contribution(s) of the\r
+Copyright Holder(s) and the Author(s) or with their explicit written\r
+permission.\r
+\r
+5) The Font Software, modified or unmodified, in part or in whole,\r
+must be distributed entirely under this license, and must not be\r
+distributed under any other license. The requirement for fonts to\r
+remain under this license does not apply to any document created\r
+using the Font Software.\r
+\r
+TERMINATION\r
+This license becomes null and void if any of the above conditions are\r
+not met.\r
+\r
+DISCLAIMER\r
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r
+OTHER DEALINGS IN THE FONT SOFTWARE.\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ width="167.96584mm"
+ height="57.458946mm"
+ viewBox="0 0 167.96582 57.458946"
+ version="1.1"
+ id="svg8"
+ inkscape:version="1.0 (6e3e5246a0, 2020-05-07)"
+ sodipodi:docname="add_content.svg">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2830"
+ style="fill:#29a2a2;fill-opacity:1;fill-rule:evenodd;stroke:#29a2a2;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2812"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#29a2a2;fill-opacity:1;fill-rule:evenodd;stroke:#29a2a2;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98994949"
+ inkscape:cx="256.92807"
+ inkscape:cy="137.95738"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ inkscape:document-rotation="0"
+ showgrid="false"
+ inkscape:snap-global="false"
+ fit-margin-top="2"
+ fit-margin-left="2"
+ fit-margin-right="2"
+ fit-margin-bottom="2"
+ inkscape:window-width="1680"
+ inkscape:window-height="986"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata5">
+ <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>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-6.0998694,-20.366511)">
+ <rect
+ style="fill:#9ecece;fill-opacity:1;stroke:#000000;stroke-width:0.478665;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
+ id="rect1937-6-7"
+ width="30.287195"
+ height="7.578104"
+ x="103.13097"
+ y="68.008018"
+ rx="1.0482159"
+ ry="0.99857616" />
+ <rect
+ style="fill:#9ecece;fill-opacity:1;stroke:#000000;stroke-width:0.467859;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
+ id="rect1937"
+ width="28.894049"
+ height="7.5889091"
+ x="112.87321"
+ y="53.907749"
+ rx="1"
+ ry="1" />
+ <text
+ xml:space="preserve"
+ style="font-size:10.5833px;line-height:1.25;font-family:'Bebas Neue';-inkscape-font-specification:'Bebas Neue';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+ x="33.978741"
+ y="29.880653"
+ id="text1919"><tspan
+ sodipodi:role="line"
+ id="tspan1917"
+ x="33.978741"
+ y="29.880653"
+ style="fill:#ff0000;stroke-width:0.264583">GREAT! NOW FOR some content...</tspan></text>
+ <rect
+ ry="0.99615294"
+ rx="1.1330551"
+ y="61.197998"
+ x="131.76047"
+ height="7.5597143"
+ width="32.738548"
+ id="rect1937-6"
+ style="fill:#9ecece;fill-opacity:1;stroke:#000000;stroke-width:0.497055;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000" />
+ <text
+ xml:space="preserve"
+ style="font-size:5.64444px;line-height:1.25;font-family:'Ibarra Real Nova';-inkscape-font-specification:'Ibarra Real Nova';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+ x="34.382824"
+ y="38.162991"
+ id="text1923"><tspan
+ sodipodi:role="line"
+ x="34.382824"
+ y="38.162991"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan3767">It's time to add some content. This could be a video</tspan><tspan
+ sodipodi:role="line"
+ x="34.382824"
+ y="45.21854"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan3769">file, some audio, subtitles, another DCP... almost anything!</tspan><tspan
+ sodipodi:role="line"
+ x="34.382824"
+ y="52.27409"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan3771" /><tspan
+ sodipodi:role="line"
+ x="34.382824"
+ y="59.329639"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan3773">If it's one file, or just a few, click Add Files...</tspan><tspan
+ sodipodi:role="line"
+ x="34.382824"
+ y="66.385193"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan3775">If it's a folder containing lots of files, use Add Folder...</tspan><tspan
+ sodipodi:role="line"
+ x="34.382824"
+ y="73.440742"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan3777">It it's an existing DCP, click Add DCP... </tspan><tspan
+ sodipodi:role="line"
+ x="34.382824"
+ y="80.496292"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan1929" /></text>
+ <path
+ style="mix-blend-mode:normal;fill:none;stroke:#29a2a2;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="M 31.852662,36.688559 C 26.19738,34.419474 22.660132,30.239709 10.367561,30.016582"
+ id="path2801"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ width="119.16308mm"
+ height="48.256836mm"
+ viewBox="0 0 119.16307 48.256836"
+ version="1.1"
+ id="svg8"
+ inkscape:version="1.0 (6e3e5246a0, 2020-05-07)"
+ sodipodi:docname="file_new.svg">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2830"
+ style="fill:#29a2a2;fill-opacity:1;fill-rule:evenodd;stroke:#29a2a2;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2812"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#29a2a2;fill-opacity:1;fill-rule:evenodd;stroke:#29a2a2;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="228.73591"
+ inkscape:cy="111.96217"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ inkscape:document-rotation="0"
+ showgrid="false"
+ inkscape:snap-global="false"
+ fit-margin-top="2"
+ fit-margin-left="2"
+ fit-margin-right="2"
+ fit-margin-bottom="2"
+ inkscape:window-width="1680"
+ inkscape:window-height="986"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata5">
+ <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 />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-8.383023,-11.350459)">
+ <rect
+ ry="0.99708825"
+ rx="1.1596159"
+ y="30.740938"
+ x="106.15783"
+ height="7.7341828"
+ width="13.478274"
+ id="rect1937-3"
+ style="fill:#9ecece;fill-opacity:1;stroke:#000000;stroke-width:0.322586;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000" />
+ <rect
+ style="fill:#9ecece;fill-opacity:1;stroke:#000000;stroke-width:0.3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
+ id="rect1937"
+ width="11.62305"
+ height="7.7567682"
+ x="80.685257"
+ y="30.729647"
+ rx="1"
+ ry="1" />
+ <text
+ xml:space="preserve"
+ style="font-size:10.5833px;line-height:1.25;font-family:'Bebas Neue';-inkscape-font-specification:'Bebas Neue';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+ x="32.135391"
+ y="26.241934"
+ id="text1919"><tspan
+ sodipodi:role="line"
+ id="tspan1917"
+ x="32.135391"
+ y="26.241934"
+ style="fill:#ff0000;stroke-width:0.264583">Welcome to DCP-o-matic!</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:5.64444px;line-height:1.25;font-family:'Ibarra Real Nova';-inkscape-font-specification:'Ibarra Real Nova';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+ x="32.285839"
+ y="36.37291"
+ id="text1923"><tspan
+ sodipodi:role="line"
+ id="tspan1921"
+ x="32.285839"
+ y="36.37291"
+ style="font-size:5.64444px;stroke-width:0.264583">To get started, click File then New </tspan><tspan
+ sodipodi:role="line"
+ x="32.285839"
+ y="43.428459"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan1925">and give your first project a name.</tspan><tspan
+ sodipodi:role="line"
+ x="32.285839"
+ y="50.484009"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan1933">You can also specify where the project's</tspan><tspan
+ sodipodi:role="line"
+ x="32.285839"
+ y="57.539558"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan1935">data will be stored.</tspan><tspan
+ sodipodi:role="line"
+ x="32.285839"
+ y="64.595108"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan1929" /></text>
+ <path
+ style="mix-blend-mode:normal;fill:none;stroke:#29a2a2;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="M 29.408407,33.731144 C 23.753125,31.462059 18.741758,26.746728 11.716731,15.316581"
+ id="path2801"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ width="136.18156mm"
+ height="29.304541mm"
+ viewBox="0 0 136.18155 29.304542"
+ version="1.1"
+ id="svg8"
+ inkscape:version="1.0 (6e3e5246a0, 2020-05-07)"
+ sodipodi:docname="preview.svg">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2830"
+ style="fill:#29a2a2;fill-opacity:1;fill-rule:evenodd;stroke:#29a2a2;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2812"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#29a2a2;fill-opacity:1;fill-rule:evenodd;stroke:#29a2a2;stroke-width:1pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4"
+ inkscape:cx="300.65763"
+ inkscape:cy="228.91194"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ inkscape:document-rotation="0"
+ showgrid="false"
+ inkscape:snap-global="false"
+ fit-margin-top="2"
+ fit-margin-left="2"
+ fit-margin-right="2"
+ fit-margin-bottom="2"
+ inkscape:window-width="1680"
+ inkscape:window-height="986"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata5">
+ <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>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-8.8820517,-20.366511)">
+ <rect
+ style="fill:#9ecece;fill-opacity:1;stroke:#000000;stroke-width:0.325442;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
+ id="rect1937"
+ width="13.723092"
+ height="7.7313256"
+ x="33.275249"
+ y="39.777004"
+ rx="1"
+ ry="1" />
+ <text
+ xml:space="preserve"
+ style="font-size:10.5833px;line-height:1.25;font-family:'Bebas Neue';-inkscape-font-specification:'Bebas Neue';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+ x="33.978741"
+ y="29.880653"
+ id="text1919"><tspan
+ sodipodi:role="line"
+ id="tspan1917"
+ x="33.978741"
+ y="29.880653"
+ style="fill:#ff0000;stroke-width:0.264583">SEE hOW IT LOOKS...</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:5.64444px;line-height:1.25;font-family:'Ibarra Real Nova';-inkscape-font-specification:'Ibarra Real Nova';letter-spacing:0px;word-spacing:0px;stroke-width:0.264583"
+ x="34.382824"
+ y="38.162991"
+ id="text1923"><tspan
+ sodipodi:role="line"
+ x="34.382824"
+ y="38.162991"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan3771">Now you can preview your content by clicking</tspan><tspan
+ id="tspan3520"
+ sodipodi:role="line"
+ x="34.382824"
+ y="45.21854"
+ style="font-size:5.64444px;stroke-width:0.264583">Play. Check that it looks and sounds OK!</tspan><tspan
+ sodipodi:role="line"
+ x="34.382824"
+ y="52.27409"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan3777" /><tspan
+ sodipodi:role="line"
+ x="34.382824"
+ y="59.329639"
+ style="font-size:5.64444px;stroke-width:0.264583"
+ id="tspan1929" /></text>
+ <path
+ style="mix-blend-mode:normal;fill:none;stroke:#29a2a2;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="M 31.852662,36.688559 C 22.768894,32.701083 24.949513,29.892713 13.039582,25.652605"
+ id="path2801"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
done
convert web/favicon-16x16.png web/favicon-32x32.png web/favicon-64x64.png web/favicon-128x128.png web/favicon-256x256.png web/favicon.ico
convert src/web.png -resize 123x123 -transparent white web/logo.png
+
+ # Help
+ mkdir -p help
+ for f in src/help/*.svg; do
+ base=$(basename $f | sed -e "s/.svg//")
+ $INKSCAPE help/$base.png $f
+ done
+
fi
cp $prefix/src/dcpomatic/graphics/sequence.png "$dest"
cp $prefix/src/dcpomatic/graphics/me.jpg "$dest"
cp $prefix/src/dcpomatic/graphics/link.png "$dest"
+ cp -r $prefix/src/dcpomatic/graphics/help "$dest"
cp -r $prefix/share/libdcp/xsd "$dest"
# i18n: DCP-o-matic .mo files
File "%graphics%/tick.png"
File "%graphics%/no_tick.png"
File "%graphics%/link.png"
+File "%graphics%/help/add_content.png"
+File "%graphics%/help/file_new.png"
+File "%graphics%/help/preview.png"
SetOutPath "$INSTDIR\\xsd"
File "%cdist_deps%/share/libdcp/xsd/SMPTE-429-7-2006-CPL.xsd"
File "%cdist_deps%/share/libdcp/xsd/SMPTE-429-8-2006-PKL.xsd"
#include "check_content_change_job.h"
#include "ffmpeg_subtitle_stream.h"
#include "font.h"
+#include "help.h"
#include <libcxml/cxml.h>
#include <dcp/cpl.h>
#include <dcp/certificate_chain.h>
_playlist->add (shared_from_this(), c);
maybe_set_container_and_resolution ();
+
+ Help::instance()->event (Help::SUCCESSFUL_ADD_CONTENT);
}
--- /dev/null
+#include "help.h"
+#include <boost/bind.hpp>
+#include <boost/ref.hpp>
+
+
+Help* Help::_instance = 0;
+
+
+Help*
+Help::instance ()
+{
+ if (!_instance) {
+ _instance = new Help ();
+ }
+
+ return _instance;
+}
+
+
+void
+Help::event (EventType e)
+{
+ emit (boost::bind(boost::ref(Event), e));
+}
+
--- /dev/null
+#ifndef DCPOMATIC_HELP_H
+#define DCPOMATIC_HELP_H
+
+#include "signaller.h"
+#include <boost/signals2.hpp>
+
+class Help : public Signaller
+{
+public:
+ static Help* instance ();
+
+ enum EventType {
+ SUCCESSFUL_FILE_NEW,
+ SUCCESSFUL_ADD_CONTENT,
+ };
+
+ void event (EventType e);
+
+ boost::signals2::signal<void (EventType)> Event;
+
+private:
+ static Help* _instance;
+};
+
+#endif
+
font.cc
frame_interval_checker.cc
frame_rate_change.cc
+ help.cc
hints.cc
internet.cc
image.cc
#include "wx/initial_setup_dialog.h"
#include "wx/send_i18n_dialog.h"
#include "wx/i18n_hook.h"
+#include "wx/static_text.h"
+#include "wx/wx_help.h"
#include "lib/film.h"
#include "lib/analytics.h"
#include "lib/emailer.h"
#include "lib/job_manager.h"
#include "lib/exceptions.h"
#include "lib/cinema.h"
+#include "lib/help.h"
#include "lib/kdm_with_metadata.h"
#include "lib/send_kdm_email_job.h"
#include "lib/encode_server_finder.h"
error_dialog (this, _("Could not create folder to store film."), std_to_wx(e.what()));
#endif
}
+ Help::instance()->event (Help::SUCCESSFUL_FILE_NEW);
}
d->Destroy ();
if (Config::instance()->check_for_updates ()) {
UpdateChecker::instance()->run ();
}
+
+ signal_manager->when_idle (boost::bind(&HelpGUI::start, HelpGUI::instance()));
}
catch (exception& e)
{
#include "image_sequence_dialog.h"
#include "film_viewer.h"
#include "dcpomatic_button.h"
+#include "wx_help.h"
#include "lib/audio_content.h"
#include "lib/text_content.h"
#include "lib/video_content.h"
_add_folder = new Button (top, _("Add folder..."));
_add_folder->SetToolTip (_("Add a folder of image files (which will be used as a moving image sequence) or a folder of sound files."));
b->Add (_add_folder, 1, wxEXPAND | wxALL, DCPOMATIC_BUTTON_STACK_GAP);
+ HelpGUI::instance()->landmark (_add_folder, HelpGUI::ADD_FOLDER_BUTTON);
_add_dcp = new Button (top, _("Add DCP..."));
_add_dcp->SetToolTip (_("Add a DCP."));
/*
- Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2020 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
/*
- Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2018-2020 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
*/
-#include "standard_controls.h"
#include "film_viewer.h"
+#include "standard_controls.h"
+#include "wx_help.h"
#include <wx/wx.h>
#include <wx/tglbtn.h>
{
_button_sizer->Add (_play_button, 0, wxEXPAND);
_play_button->Bind (wxEVT_TOGGLEBUTTON, boost::bind(&StandardControls::play_clicked, this));
+ HelpGUI::instance()->landmark (_play_button, HelpGUI::PLAY_BUTTON);
}
void
playlist_controls.cc
playlist_editor_config_dialog.cc
question_dialog.cc
- rating_dialog.cc
qube_certificate_panel.cc
+ rating_dialog.cc
recipients_panel.cc
recipient_dialog.cc
recreate_chain_dialog.cc
video_view.cc
video_waveform_dialog.cc
video_waveform_plot.cc
- wx_util.cc
+ wx_help.cc
wx_signal_manager.cc
+ wx_util.cc
"""
def configure(conf):
--- /dev/null
+#include "wx_help.h"
+#include "wx_util.h"
+#include <iostream>
+
+HelpGUI* HelpGUI::_instance = 0;
+
+
+HelpGUI::HelpGUI ()
+ : _current_index (-1)
+ , _current_frame (0)
+{
+ _messages.push_back (Message("file_new", wxPoint(50, 100), Help::SUCCESSFUL_FILE_NEW));
+ _messages.push_back (Message("add_content", ADD_FOLDER_BUTTON, wxSize(24, -48), Help::SUCCESSFUL_ADD_CONTENT));
+ _messages.push_back (Message("preview", PLAY_BUTTON, wxSize(24, 0)));
+
+ Help::instance()->Event.connect (boost::bind(&HelpGUI::event, this, _1));
+}
+
+
+void
+HelpGUI::event (Help::EventType e)
+{
+ if (
+ _current_index >= 0 &&
+ _current_index < int(_messages.size() - 1) &&
+ _messages[_current_index].next_trigger &&
+ *_messages[_current_index].next_trigger == e) {
+ next ();
+ }
+}
+
+
+void
+HelpGUI::landmark (wxWindow* landmark, Landmark id)
+{
+ _landmarks[id] = landmark;
+}
+
+
+void
+HelpGUI::next ()
+{
+ ++_current_index;
+ show (_current_index);
+}
+
+
+void
+HelpGUI::start ()
+{
+ next ();
+}
+
+
+void
+HelpGUI::show (int index)
+{
+ if (_current_frame) {
+ _current_frame->Destroy ();
+ _current_frame = 0;
+ }
+
+ Message const& m = _messages[index];
+ wxBitmap bitmap (bitmap_path("help/" + m.id));
+ wxPoint pos;
+ if (m.anchor_point) {
+ pos = *m.anchor_point;
+ } else if (m.anchor_landmark) {
+ DCPOMATIC_ASSERT (_landmarks.find(*m.anchor_landmark) != _landmarks.end());
+ wxWindow* lm = _landmarks[*m.anchor_landmark];
+ pos = lm->GetScreenPosition();
+ pos.x += lm->GetSize().GetWidth();
+ }
+ pos += m.offset;
+ _current_frame = new wxFrame (0, wxID_ANY, wxT(""), pos, wxSize(bitmap.GetSize().GetWidth() + 16, bitmap.GetSize().GetHeight() + 128), wxFRAME_TOOL_WINDOW);
+ wxSizer* sizer = new wxBoxSizer (wxVERTICAL);
+ wxStaticBitmap* static_bitmap = new wxStaticBitmap (_current_frame, wxID_ANY, bitmap);
+ sizer->Add (static_bitmap, 1, wxEXPAND);
+ wxSizer* buttons_sizer = new wxBoxSizer (wxHORIZONTAL);
+ wxButton* close = new wxButton (_current_frame, wxID_ANY, _("Stop showing tips"));
+ close->Bind (wxEVT_BUTTON, boost::bind(&HelpGUI::stop, this));
+ buttons_sizer->Add (close, 1, wxEXPAND | wxALL, 8);
+ sizer->Add (buttons_sizer, 0, wxALIGN_RIGHT);
+ _current_frame->SetSizer (sizer);
+ _current_frame->Show ();
+}
+
+
+void
+HelpGUI::stop ()
+{
+ _current_index = -1;
+ if (_current_frame) {
+ _current_frame->Destroy ();
+ }
+
+ /* XXX: should write a config entry */
+}
+
+
+HelpGUI *
+HelpGUI::instance ()
+{
+ if (!_instance) {
+ _instance = new HelpGUI ();
+ }
+
+ return _instance;
+}
+
+
--- /dev/null
+#include "lib/help.h"
+#include <wx/wx.h>
+#include <boost/optional.hpp>
+#include <map>
+#include <string>
+#include <vector>
+
+class HelpGUI
+{
+public:
+ static HelpGUI* instance ();
+
+ void start ();
+
+ enum Landmark {
+ ADD_FOLDER_BUTTON,
+ PLAY_BUTTON
+ };
+
+ void landmark (wxWindow* landmark, Landmark id);
+
+private:
+ class Message
+ {
+ public:
+ Message (std::string id_, wxPoint anchor_, Help::EventType next_trigger_)
+ : id (id_)
+ , anchor_point (anchor_)
+ , next_trigger (next_trigger_)
+ {}
+
+ Message (std::string id_, Landmark anchor_, wxSize offset_)
+ : id (id_)
+ , anchor_landmark (anchor_)
+ , offset (offset_)
+ {}
+
+ Message (std::string id_, Landmark anchor_, wxSize offset_, Help::EventType next_trigger_)
+ : id (id_)
+ , anchor_landmark (anchor_)
+ , offset (offset_)
+ , next_trigger (next_trigger_)
+ {}
+
+ std::string id;
+ boost::optional<wxPoint> anchor_point;
+ boost::optional<Landmark> anchor_landmark;
+ wxSize offset;
+ boost::optional<Help::EventType> next_trigger;
+ };
+
+ HelpGUI ();
+ void event (Help::EventType e);
+ void show (int index);
+ void next ();
+ void stop ();
+
+ static HelpGUI* _instance;
+
+ int _current_index;
+ wxFrame* _current_frame;
+ std::vector<Message> _messages;
+ std::map<Landmark, wxWindow*> _landmarks;
+};
+
+