[pitivi: 5/9] ui/mainwindow, timeline: added timeline button, menu item and key accel to add and create editing key



commit 542495867fe83dc3a093b1a369bc507b78c540a6
Author: Luis de Bethencourt <luis debethencourt com>
Date:   Tue Aug 31 15:31:57 2010 +0200

    ui/mainwindow,timeline: added timeline button, menu item and key accel to add and create editing keyframes

 pitivi/pixmaps/Makefile.am            |    2 +
 pitivi/pixmaps/pitivi-keyframe-24.svg |  485 +++++++++++++++++++++++++++++++++
 pitivi/pixmaps/pitivi-keyframe.svg    |  419 ++++++++++++++++++++++++++++
 pitivi/ui/mainwindow.py               |    3 +-
 pitivi/ui/timeline.py                 |   29 ++
 5 files changed, 937 insertions(+), 1 deletions(-)
---
diff --git a/pitivi/pixmaps/Makefile.am b/pitivi/pixmaps/Makefile.am
index a4d71e4..8dff59e 100644
--- a/pitivi/pixmaps/Makefile.am
+++ b/pitivi/pixmaps/Makefile.am
@@ -5,6 +5,8 @@ pixmap_DATA = \
 	pitivi-advanced-16.png	\
 	pitivi-advanced-22.png	\
 	pitivi-advanced-24.png	\
+    pitivi-keyframe-24.png  \
+    pitivi-keyframe.png   \
 	pitivi-relink-24.svg	\
 	pitivi-relink.svg	\
 	pitivi-render-16.png	\
diff --git a/pitivi/pixmaps/pitivi-keyframe-24.svg b/pitivi/pixmaps/pitivi-keyframe-24.svg
new file mode 100644
index 0000000..c8ce0b8
--- /dev/null
+++ b/pitivi/pixmaps/pitivi-keyframe-24.svg
@@ -0,0 +1,485 @@
+<?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:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="24"
+   height="24"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.47 r22583"
+   sodipodi:modified="true"
+   version="1.0"
+   sodipodi:docname="pitivi-keyframe-24.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3766">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop3768" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop3770" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3758">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop3760" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop3762" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3243">
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1;"
+         offset="0"
+         id="stop3245" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:0;"
+         offset="1"
+         id="stop3247" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective7" />
+    <linearGradient
+       gradientTransform="matrix(1.004639,0,0,1,-1.037685,4.7681e-2)"
+       gradientUnits="userSpaceOnUse"
+       y2="40.231434"
+       x2="34.744495"
+       y1="10.445395"
+       x1="17.498823"
+       id="linearGradient5315"
+       xlink:href="#linearGradient5113"
+       inkscape:collect="always" />
+    <radialGradient
+       r="8.0625"
+       fy="19.03125"
+       fx="11.25"
+       cy="19.03125"
+       cx="11.25"
+       gradientTransform="matrix(1,0,0,0.282946,0,13.64644)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4354"
+       xlink:href="#linearGradient5105"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5113"
+       inkscape:collect="always">
+      <stop
+         id="stop5115"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop5117"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5105"
+       inkscape:collect="always">
+      <stop
+         id="stop5107"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop5109"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <inkscape:perspective
+       id="perspective3181"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 24 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5113"
+       id="linearGradient3199"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.2905223,-0.2891808,0,18.630492,26.384583)"
+       x1="17.498823"
+       y1="10.445395"
+       x2="34.744495"
+       y2="40.231434" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5105"
+       id="radialGradient3204"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.282946,0,13.64644)"
+       cx="11.25"
+       cy="19.03125"
+       fx="11.25"
+       fy="19.03125"
+       r="8.0625" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.444008,0,21.02345)"
+       r="7.953125"
+       fy="37.8125"
+       fx="25.015625"
+       cy="37.8125"
+       cx="25.015625"
+       id="radialGradient3131"
+       xlink:href="#linearGradient3125"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.39823,0,25.31195)"
+       r="7.0625"
+       fy="42.0625"
+       fx="16.6875"
+       cy="42.0625"
+       cx="16.6875"
+       id="radialGradient3117"
+       xlink:href="#linearGradient3109"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.39823,0,25.31195)"
+       r="7.0625"
+       fy="42.0625"
+       fx="16.6875"
+       cy="42.0625"
+       cx="16.6875"
+       id="radialGradient3115"
+       xlink:href="#linearGradient3109"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3109"
+       inkscape:collect="always">
+      <stop
+         id="stop3111"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3113"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3125"
+       inkscape:collect="always">
+      <stop
+         id="stop3127"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3129"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <inkscape:perspective
+       id="perspective2435"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 24 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3243"
+       id="linearGradient3479"
+       gradientUnits="userSpaceOnUse"
+       x1="11.976621"
+       y1="5.1620197"
+       x2="0.75"
+       y2="4.8084664" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3243"
+       id="linearGradient3621"
+       gradientUnits="userSpaceOnUse"
+       x1="-6.2459664"
+       y1="10.0739"
+       x2="-3.0284903"
+       y2="11.345978"
+       gradientTransform="matrix(1.1145165,0,0,1.1095789,40.201481,4.7203315)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3243"
+       id="linearGradient3639"
+       gradientUnits="userSpaceOnUse"
+       x1="4.8276639"
+       y1="5.2473125"
+       x2="0.74999982"
+       y2="4.6316895"
+       gradientTransform="matrix(0.97223518,-0.23400589,0.23400589,0.97223518,-1.9889438,9.45988)" />
+    <inkscape:perspective
+       id="perspective2868"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3243-1"
+       id="linearGradient3639-2"
+       gradientUnits="userSpaceOnUse"
+       x1="4.8276639"
+       y1="5.2473125"
+       x2="0.74999982"
+       y2="4.6316895"
+       gradientTransform="translate(-0.827664,5.7526874)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3243-1">
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1;"
+         offset="0"
+         id="stop3245-5" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:0;"
+         offset="1"
+         id="stop3247-9" />
+    </linearGradient>
+    <linearGradient
+       y2="4.6316895"
+       x2="0.74999982"
+       y1="5.2473125"
+       x1="4.8276639"
+       gradientTransform="matrix(-0.76362812,0.64565634,-0.64565634,-0.76362812,27.010613,6.252417)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2877"
+       xlink:href="#linearGradient3243-1"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective2859"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3243-9"
+       id="linearGradient3639-3"
+       gradientUnits="userSpaceOnUse"
+       x1="4.8276639"
+       y1="5.2473125"
+       x2="0.74999982"
+       y2="4.6316895"
+       gradientTransform="matrix(0.97223518,-0.23400589,0.23400589,0.97223518,-1.9889438,9.45988)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3243-9">
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1;"
+         offset="0"
+         id="stop3245-0" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:0;"
+         offset="1"
+         id="stop3247-8" />
+    </linearGradient>
+    <linearGradient
+       y2="4.6316895"
+       x2="0.74999982"
+       y1="5.2473125"
+       x1="4.8276639"
+       gradientTransform="matrix(-0.01930431,1.1812884,-0.73119538,0.05792925,17.122136,-5.0366374)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2868"
+       xlink:href="#linearGradient3243-9"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective2897"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       y2="4.6316895"
+       x2="0.74999982"
+       y1="5.2473125"
+       x1="4.8276639"
+       gradientTransform="matrix(-0.01930431,1.1812884,-0.73119538,0.05792925,17.122136,-5.0366374)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2868-7"
+       xlink:href="#linearGradient3243-9-7"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3243-9-7">
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1;"
+         offset="0"
+         id="stop3245-0-6" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:0;"
+         offset="1"
+         id="stop3247-8-4" />
+    </linearGradient>
+    <linearGradient
+       y2="4.6316895"
+       x2="0.74999982"
+       y1="5.2473125"
+       x1="4.8276639"
+       gradientTransform="matrix(-0.01930431,1.1812884,-0.73119538,0.05792925,5.1280996,10.647059)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2906"
+       xlink:href="#linearGradient3243-9-7"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective2956"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3243-9-7-3"
+       id="linearGradient2946-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.06349797,-1.1797385,0.73285107,-0.03052526,8.1998181,26.903462)"
+       x1="4.8276639"
+       y1="5.2473125"
+       x2="-1.0660375"
+       y2="5.2778435" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3243-9-7-3">
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1;"
+         offset="0"
+         id="stop3245-0-6-8" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:0;"
+         offset="1"
+         id="stop3247-8-4-0" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3758"
+       id="linearGradient3764"
+       x1="12"
+       y1="-3.805639"
+       x2="13.209049"
+       y2="-3.805639"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3766"
+       id="linearGradient3772"
+       x1="12.365561"
+       y1="25.812646"
+       x2="13.295311"
+       y2="25.812646"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627416"
+     inkscape:cx="6.4495935"
+     inkscape:cy="12.325449"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="48px"
+     height="48px"
+     borderlayer="true"
+     inkscape:showpageshadow="false"
+     showgrid="true"
+     inkscape:window-width="1440"
+     inkscape:window-height="856"
+     inkscape:window-x="0"
+     inkscape:window-y="21"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2380"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Calque 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       style="fill:url(#linearGradient3639);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M -10.146721,14.763412 C -4.051718,13.283469 2.726342,12.693571 9.5319882,11.05553 L 10,13 c -6.8056463,1.638041 -13.1334185,4.115928 -19.210698,5.652353 l -0.936023,-3.888941 z"
+       id="rect2382"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       sodipodi:nodetypes="cccc"
+       id="path10844"
+       d="M 10.861186,3.3028055 11.666995,15.250175 11.712235,2.6329213 10.861186,3.3028055 z"
+       style="opacity:0.6;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+    <path
+       style="fill:url(#linearGradient2877);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 31.918219,-2.1494989 C 27.136798,1.909728 21.345396,5.480405 16,10 L 14.708692,8.472741 C 20.05409,3.953148 24.595377,-1.1022792 29.335597,-5.2040146 l 2.582625,3.0545124 z"
+       id="rect2382-9"
+       sodipodi:nodetypes="ccccc" />
+    <rect
+       style="fill:none;stroke:none"
+       id="rect2898"
+       width="3.0398445"
+       height="3.4073012"
+       x="10.960155"
+       y="9.5926991" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="path2909"
+       sodipodi:cx="13"
+       sodipodi:cy="11"
+       sodipodi:rx="2"
+       sodipodi:ry="2"
+       d="m 15,11 a 2,2 0 1 1 -4,0 2,2 0 1 1 4,0 z" />
+    <path
+       style="fill:url(#linearGradient3772);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 12.365561,37.625293 C 12.366451,30 12.683225,22 12.683225,14 L 13,14 c 0,8 0.316775,16 0.294155,23.503193 l -0.928594,0.1221 z"
+       id="rect2382-8-3"
+       sodipodi:nodetypes="ccccc" />
+    <path
+       style="fill:url(#linearGradient3764);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 13.185644,-15.645838 C 13.291322,-8.025004 12.99834,0.00478 13.110405,8 L 12.705358,8.03456 C 12.593294,0.039343 12.076182,-7.921314 12,-15.422492 l 1.185644,-0.223346 z"
+       id="rect2382-8-3-4"
+       sodipodi:nodetypes="ccccc"
+       inkscape:transform-center-x="0.95582947"
+       inkscape:transform-center-y="1.7451722" />
+  </g>
+</svg>
diff --git a/pitivi/pixmaps/pitivi-keyframe.svg b/pitivi/pixmaps/pitivi-keyframe.svg
new file mode 100644
index 0000000..7151fbd
--- /dev/null
+++ b/pitivi/pixmaps/pitivi-keyframe.svg
@@ -0,0 +1,419 @@
+<?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:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="22"
+   height="22"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.47 r22583"
+   sodipodi:modified="true"
+   version="1.0"
+   sodipodi:docname="pitivi-keyframe.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3243">
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1;"
+         offset="0"
+         id="stop3245" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:0;"
+         offset="1"
+         id="stop3247" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       id="perspective7" />
+    <linearGradient
+       gradientTransform="matrix(1.004639,0,0,1,-1.037685,4.7681e-2)"
+       gradientUnits="userSpaceOnUse"
+       y2="40.231434"
+       x2="34.744495"
+       y1="10.445395"
+       x1="17.498823"
+       id="linearGradient5315"
+       xlink:href="#linearGradient5113"
+       inkscape:collect="always" />
+    <radialGradient
+       r="8.0625"
+       fy="19.03125"
+       fx="11.25"
+       cy="19.03125"
+       cx="11.25"
+       gradientTransform="matrix(1,0,0,0.282946,0,13.64644)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4354"
+       xlink:href="#linearGradient5105"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient5113"
+       inkscape:collect="always">
+      <stop
+         id="stop5115"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop5117"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5105"
+       inkscape:collect="always">
+      <stop
+         id="stop5107"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop5109"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <inkscape:perspective
+       id="perspective3181"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 24 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5113"
+       id="linearGradient3199"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.2905223,-0.2891808,0,18.630492,26.384583)"
+       x1="17.498823"
+       y1="10.445395"
+       x2="34.744495"
+       y2="40.231434" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5105"
+       id="radialGradient3204"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.282946,0,13.64644)"
+       cx="11.25"
+       cy="19.03125"
+       fx="11.25"
+       fy="19.03125"
+       r="8.0625" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.444008,0,21.02345)"
+       r="7.953125"
+       fy="37.8125"
+       fx="25.015625"
+       cy="37.8125"
+       cx="25.015625"
+       id="radialGradient3131"
+       xlink:href="#linearGradient3125"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.39823,0,25.31195)"
+       r="7.0625"
+       fy="42.0625"
+       fx="16.6875"
+       cy="42.0625"
+       cx="16.6875"
+       id="radialGradient3117"
+       xlink:href="#linearGradient3109"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.39823,0,25.31195)"
+       r="7.0625"
+       fy="42.0625"
+       fx="16.6875"
+       cy="42.0625"
+       cx="16.6875"
+       id="radialGradient3115"
+       xlink:href="#linearGradient3109"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3109"
+       inkscape:collect="always">
+      <stop
+         id="stop3111"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3113"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3125"
+       inkscape:collect="always">
+      <stop
+         id="stop3127"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3129"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <inkscape:perspective
+       id="perspective2435"
+       inkscape:persp3d-origin="24 : 16 : 1"
+       inkscape:vp_z="48 : 24 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 24 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3243"
+       id="linearGradient3479"
+       gradientUnits="userSpaceOnUse"
+       x1="11.976621"
+       y1="5.1620197"
+       x2="0.75"
+       y2="4.8084664" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3243"
+       id="linearGradient3621"
+       gradientUnits="userSpaceOnUse"
+       x1="-6.2459664"
+       y1="10.0739"
+       x2="-3.0284903"
+       y2="11.345978"
+       gradientTransform="translate(23.260723,1.1964693)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3243"
+       id="linearGradient3639"
+       gradientUnits="userSpaceOnUse"
+       x1="4.2868342"
+       y1="4.9758639"
+       x2="0.74999982"
+       y2="4.6316895"
+       gradientTransform="translate(-8.8388326e-2,1.5071295)" />
+    <inkscape:perspective
+       id="perspective2893"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3243-6"
+       id="linearGradient3639-5"
+       gradientUnits="userSpaceOnUse"
+       x1="4.8276639"
+       y1="5.2473125"
+       x2="0.74999982"
+       y2="4.6316895"
+       gradientTransform="matrix(0.97223518,-0.23400589,0.23400589,0.97223518,-1.9889438,9.45988)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3243-6">
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1;"
+         offset="0"
+         id="stop3245-6" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:0;"
+         offset="1"
+         id="stop3247-4" />
+    </linearGradient>
+    <linearGradient
+       y2="4.6316895"
+       x2="0.74999982"
+       y1="5.2473125"
+       x1="4.8276639"
+       gradientTransform="matrix(-0.76362812,0.64565634,-0.64565634,-0.76362812,27.010613,6.252417)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2877"
+       xlink:href="#linearGradient3243-1"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3243-1">
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1;"
+         offset="0"
+         id="stop3245-5" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:0;"
+         offset="1"
+         id="stop3247-9" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3766"
+       id="linearGradient3772"
+       x1="12.365561"
+       y1="25.812647"
+       x2="13.295311"
+       y2="25.812647"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3766">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop3768" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop3770" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3758"
+       id="linearGradient3764"
+       x1="12"
+       y1="-3.805639"
+       x2="13.209049"
+       y2="-3.805639"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3758">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop3760" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop3762" />
+    </linearGradient>
+    <linearGradient
+       y2="-3.805639"
+       x2="13.209049"
+       y1="-3.805639"
+       x1="12"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2919"
+       xlink:href="#linearGradient3758"
+       inkscape:collect="always" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313708"
+     inkscape:cx="13.336976"
+     inkscape:cy="4.6539205"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="48px"
+     height="48px"
+     borderlayer="true"
+     inkscape:showpageshadow="false"
+     showgrid="true"
+     inkscape:window-width="1440"
+     inkscape:window-height="856"
+     inkscape:window-x="0"
+     inkscape:window-y="21"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2380"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Calque 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="opacity:0.5;fill:#73d216;fill-opacity:1;fill-rule:evenodd;stroke:#4e9a06;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect3162"
+       width="18.8125"
+       height="5.125"
+       x="-10.3125"
+       y="23.5" />
+    <path
+       style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       d="M 39.460726,14.961509 C 37.869651,16.793387 36.278575,18.625264 34.6875,20.457142 C 33.1044,18.625264 31.5213,16.793387 29.9382,14.961509 C 30.696802,14.961509 31.455404,14.961509 32.214005,14.961509 C 32.214005,13.516006 32.214005,13.133003 32.214005,11.6875 C 33.858011,11.6875 35.502017,11.6875 37.146023,11.6875 C 37.146023,13.133003 37.146023,13.516006 37.146023,14.961509 C 37.91759,14.961509 38.689158,14.961509 39.460726,14.961509 z"
+       id="path4348"
+       sodipodi:nodetypes="cccccccc" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#path4348"
+       id="use3209"
+       transform="matrix(1,0,0,-1,-6.25e-2,20.457142)"
+       width="22"
+       height="22" />
+    <use
+       x="0"
+       y="0"
+       xlink:href="#rect3162"
+       id="use2398"
+       transform="translate(23.75,6.25e-2)"
+       width="22"
+       height="22" />
+    <g
+       transform="matrix(0.91359467,0,0,0.83770079,0.12326929,1.1098897)"
+       id="g2878">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="rect2382-0"
+         d="M -10.146721,14.763412 C -4.051718,13.283469 2.726342,12.693571 9.5319882,11.05553 L 10,13 c -6.8056463,1.638041 -13.1334185,4.115928 -19.210698,5.652353 l -0.936023,-3.888941 z"
+         style="fill:url(#linearGradient3639-5);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="rect2382-9"
+         d="M 31.918219,-2.1494989 C 27.136798,1.909728 21.345396,5.480405 16,10 L 14.708692,8.472741 C 20.05409,3.953148 24.595377,-1.1022792 29.335597,-5.2040146 l 2.582625,3.0545124 z"
+         style="fill:url(#linearGradient2877);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         d="m 15,11 c 0,1.104569 -0.895431,2 -2,2 -1.104569,0 -2,-0.895431 -2,-2 0,-1.1045695 0.895431,-2 2,-2 1.104569,0 2,0.8954305 2,2 z"
+         sodipodi:ry="2"
+         sodipodi:rx="2"
+         sodipodi:cy="11"
+         sodipodi:cx="13"
+         id="path2909"
+         style="fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="rect2382-8-3"
+         d="M 12.365561,37.625293 C 12.366451,30 12.683225,22 12.683225,14 L 13,14 c 0,8 0.316775,16 0.294155,23.503193 l -0.928594,0.1221 z"
+         style="fill:url(#linearGradient3772);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         inkscape:transform-center-y="1.7451722"
+         inkscape:transform-center-x="0.95582947"
+         sodipodi:nodetypes="ccccc"
+         id="rect2382-8-3-4"
+         d="M 13.185644,-15.645838 C 13.291322,-8.025004 12.99834,0.00478 13.110405,8 L 12.705358,8.03456 C 12.593294,0.039343 12.076182,-7.921314 12,-15.422492 l 1.185644,-0.223346 z"
+         style="fill:url(#linearGradient2919);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    </g>
+  </g>
+</svg>
diff --git a/pitivi/ui/mainwindow.py b/pitivi/ui/mainwindow.py
index eb4b7e5..bcc4c2f 100644
--- a/pitivi/ui/mainwindow.py
+++ b/pitivi/ui/mainwindow.py
@@ -127,6 +127,7 @@ def create_stock_icons():
     gtk.stock_add([
             ('pitivi-render', _('Render'), 0, 0, 'pitivi'),
             ('pitivi-split', _('Split'), 0, 0, 'pitivi'),
+            ('pitivi-keyframe', _('Keyframe'), 0, 0, 'pitivi'),
             ('pitivi-unlink', _('Unlink'), 0, 0, 'pitivi'),
             # Translators: This is an action, the title of a button
             ('pitivi-link', _('Link'), 0, 0, 'pitivi'),
@@ -137,6 +138,7 @@ def create_stock_icons():
     pixmaps = {
         "pitivi-render" : "pitivi-render-24.png",
         "pitivi-split" : "pitivi-split-24.svg",
+        "pitivi-keyframe" : "pitivi-keyframe-24.svg",
         "pitivi-unlink" : "pitivi-unlink-24.svg",
         "pitivi-link" : "pitivi-relink-24.svg",
         "pitivi-ungroup" : "pitivi-unlink-24.svg",
@@ -1114,4 +1116,3 @@ class PitiviMainWindow(gtk.Window, Loggable):
             self.project.pipeline.seek(position, format)
         except:
             self.debug("Seeking failed")
-
diff --git a/pitivi/ui/timeline.py b/pitivi/ui/timeline.py
index d0958be..9861262 100644
--- a/pitivi/ui/timeline.py
+++ b/pitivi/ui/timeline.py
@@ -41,10 +41,12 @@ from pitivi.ui.common import LAYER_HEIGHT_EXPANDED, LAYER_SPACING
 from pitivi.timeline.timeline import MoveContext
 from pitivi.utils import Seeker
 from pitivi.ui.filelisterrordialog import FileListErrorDialog
+from pitivi.ui.curve import Curve
 
 # tooltip text for toolbar
 DELETE = _("Delete Selected")
 SPLIT = _("Split clip at playhead position")
+KEYFRAME = _("Create a keyframe")
 ZOOM_IN =  _("Zoom In")
 ZOOM_OUT =  _("Zoom Out")
 UNLINK = _("Break links between clips")
@@ -66,6 +68,7 @@ ui = '''
         <menu action="Timeline">
             <placeholder name="Timeline">
                 <menuitem action="Split" />
+                <menuitem action="Keyframe" />
                 <separator />
                 <menuitem action="DeleteObj" />
                 <menuitem action="LinkObj" />
@@ -79,6 +82,7 @@ ui = '''
         <placeholder name="Timeline">
             <separator />
             <toolitem action="Split" />
+            <toolitem action="Keyframe" />
             <separator />
             <toolitem action="DeleteObj" />
             <toolitem action="UnlinkObj" />
@@ -294,6 +298,8 @@ class Timeline(gtk.Table, Loggable, Zoomable):
         playhead_actions = (
             ("Split", "pitivi-split", _("Split"), "S", SPLIT,
                 self.split),
+            ("Keyframe", "pitivi-keyframe", _("Keyframe"), "K", KEYFRAME,
+                self.keyframe),
         )
 
         actiongroup = gtk.ActionGroup("timelinepermanent")
@@ -628,3 +634,26 @@ class Timeline(gtk.Table, Loggable, Zoomable):
         self.app.action_log.commit()
         # work-around for 603149
         self.project.seeker.seek(self._position)
+
+    def keyframe(self, action):
+        timeline_position = self._position
+        selected = self.timeline.selection.getSelectedTrackObjs()
+        
+        for obj in selected:
+            keyframe_exists = False
+
+            position_in_obj = timeline_position - obj.start
+            interpolators = obj.getInterpolators()
+            for value in interpolators:
+                interpolator = obj.getInterpolator(value)
+                keyframes = interpolator.getInteriorKeyframes()
+                for kf in keyframes:
+                    if kf.getTime() == position_in_obj:
+                        keyframe_exists = True
+                        self.app.action_log.begin("remove volume point")
+                        interpolator.removeKeyframe(kf)
+                        self.app.action_log.commit()
+                if keyframe_exists == False:
+                    self.app.action_log.begin("add volume point")
+                    interpolator.newKeyframe(position_in_obj)
+                    self.app.action_log.commit()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]