From 10d4698f1915e47c09c9eab95c08784c2d415ba6 Mon Sep 17 00:00:00 2001 From: Pablo Gil Date: Wed, 9 Jan 2019 17:43:25 +0100 Subject: [PATCH 01/32] Project panel toolbar buttons with icons --- icons/icons.qrc | 12 +++++++++ icons/iconview-disabled.png | Bin 0 -> 611 bytes icons/iconview.png | Bin 0 -> 611 bytes icons/new-disabled.png | Bin 0 -> 663 bytes icons/new.png | Bin 0 -> 684 bytes icons/open-disabled.png | Bin 0 -> 827 bytes icons/open.png | Bin 0 -> 889 bytes icons/redo-disabled.png | Bin 0 -> 831 bytes icons/redo.png | Bin 0 -> 882 bytes icons/save-disabled.png | Bin 0 -> 792 bytes icons/save.png | Bin 0 -> 844 bytes icons/treeview-disabled.png | Bin 0 -> 607 bytes icons/treeview.png | Bin 0 -> 630 bytes icons/undo-disabled.png | Bin 0 -> 842 bytes icons/undo.png | Bin 0 -> 908 bytes panels/project.cpp | 48 +++++++++++++++++++++++++++--------- 16 files changed, 49 insertions(+), 11 deletions(-) create mode 100644 icons/iconview-disabled.png create mode 100644 icons/iconview.png create mode 100644 icons/new-disabled.png create mode 100644 icons/new.png create mode 100644 icons/open-disabled.png create mode 100644 icons/open.png create mode 100644 icons/redo-disabled.png create mode 100644 icons/redo.png create mode 100644 icons/save-disabled.png create mode 100644 icons/save.png create mode 100644 icons/treeview-disabled.png create mode 100644 icons/treeview.png create mode 100644 icons/undo-disabled.png create mode 100644 icons/undo.png diff --git a/icons/icons.qrc b/icons/icons.qrc index 57624c16c..1f3fd2899 100644 --- a/icons/icons.qrc +++ b/icons/icons.qrc @@ -58,5 +58,17 @@ tri-up.png hand.png hand-disabled.png + treeview.png + treeview-disabled.png + iconview.png + iconview-disabled.png + open.png + open-disabled.png + save.png + save-disabled.png + undo.png + undo-disabled.png + redo.png + redo-disabled.png diff --git a/icons/iconview-disabled.png b/icons/iconview-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..37ea7f6e9b008edf1e478304d271b0271e372476 GIT binary patch literal 611 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^7iMo$;Vkcv5PXBh?^HV|={pRs_upka>U zh0ay7z5CX>;DY^W zxdJB9AkZ<_S_>LV&{AXuhV7A~G z;|kstg$!BDSuzc`8l+H#?(lnv-Q_>4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^7iMo$;Vkcv5PXBh?^HV|={pRs_upka>U zh0ay7z5CX>;DY^W zxdJB9AkZ<_S_>LV&{AXuhV7A~G z;|kstg$!BDSuzc`8l+H#?(lnv-Q_>4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^7it)4E9Ar*7p&UW->HWYBXpK(>mDks>JyV)~yN`z5U<0ui@|` z&0RgeCrwaR$i90bVa=-RTdhwDUQqYVzd-?w(jt6F^K9{@JP<|`WK;

P379TFCI8DY>9q(oc!}QXX<~G qt(?ZUy63O4Hsokh;Al!XsK4Q0{M2c_lK+75&*16m=d#Wzp$P!`gAro@ literal 0 HcmV?d00001 diff --git a/icons/new.png b/icons/new.png new file mode 100644 index 0000000000000000000000000000000000000000..e69e392c550f30f7a993fb21e81c512cf6db11d8 GIT binary patch literal 684 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^7iQ=Tr4Ar*7p&NTF54isqHFB&L#kU2xK z>BbArmKh>V?E*)IE7G3 z@9+D*Nq|FbwpXx<688ZugX|egxoyHizvkR1RyoP!k|Jxt^z7|pg#)Gqk)cylUf3U) zvM8UHhDT2KH$}UZMr8HoQBp9Vt+oqV+)5 zB6SDL=BELx7#hq>Jv1U2t|%-lVVn@zbhUeeY4m|(>x+$s~mJ54>8xF?F%s*87*e4r~jYe{1Fs)dhkd66YQ2^UG>< zJ1}?AGQCNgGru)#{`XwXVEKykj_vmzoZs8b;wZr4Xkb^v81pPSOK0ng=fFh4;OXk; Jvd$@?2>?5(3cLUS literal 0 HcmV?d00001 diff --git a/icons/open-disabled.png b/icons/open-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..40b12f1377de0da72817b43a4b3ba40bffe3518e GIT binary patch literal 827 zcmV-B1H}A^P)VJ>fSXD@eYYiTc3VQyz{Uuk1+ZeE`# zkN^MzSxH1eRCt{2n_r6)F%(D7?Y6qO$byJ7DEJ@>`sDZj7QQR^;(zeP>RPJq^p|40#VCwq!r`l%$O2uQkaB+#qsv(kg42$+(t zw1ix>`~_Ggwtc*3f2XR5$m_)ZucY=fU`w$x;id?HLK12fppore?%APM0bhZ2WM9_V zp;iIsz-QtTvXw)v0$?bE;u2~W024^4T>uo8Q1YhcI-Ih5&++Gq&v&Y-BJ##MP^|)P zZ(bI9Rb7e5J4>URPy!YnS{u|L;CIHpZdn^dOF&gmfNo@`^F5zah8jK(?E41X8!<)^ zf&w-N|B~@%$Wg4X3oL+No7Y9YGn@s-hVi!jS+5g2#6ow*Fk@M4-Y-j7VZWU|1|D2D zQ0yShwPawyKN0SDT?DI<;5iFaA;EhZbeG^Q0GuV%@>O_&{c(G23V(iS(;E0BB4?vJ zal)D<_PgZ$z_wmhUxg&pPy$mh1NzvGLm~Lx=8yygX#%_hc+&)U2k@o|@DAWj6W|@d znrZZu?0>ykhDHlN@@4v-zkesPq1ib@HNU&sM0)7+>;zjV7Vgfz@ z%W_#JX9;`^?TG#+ud2fE_t=sPrlw#GEJdWIS*uYEe*twqgpYub3t<2N002ovPDHLk FV1j|=Uo!vz literal 0 HcmV?d00001 diff --git a/icons/open.png b/icons/open.png new file mode 100644 index 0000000000000000000000000000000000000000..0720fee850d016e03248ff093af6b4c6cbac7438 GIT binary patch literal 889 zcmV-<1BU#GP)VJ>fSXD@eYYiTc3VQyz{Uuk1+ZeE`# zkN^Mzmq|oHRA_HTd~n1et`G^;?J-Y zY^W3)m5Q@{feNqiP+ zliKdHA`7R1hd#w@QXx47+!K*8ABDNzoj&lUU|lEB;b!6ta92d0DW%p5)&aOntpZ;P z*453CXBuFuVpR#hG}GuFD;$bdlmabwM??y>uWYGBVBU~+7PuuM&Xa!GQhne#X0dY= z5Gz{>vc-Bhid8`hwAc&at0BDy+{`Oh6)Ava;3cqNNIwtU$Rk#^R0lYeI=a9+wBRr< z0N1m`ye=dQ&;@QgUULy0uCGlQ%I>M6To#c@Q({OdpU+GR9j-%300v8v1FR3naZ7<& z$dGgMgY&+gppDC@L_`h(kAS@!(!Lw6*^#5d6?D&}>;v!-*yUK>ee&H*KuaBQtiYvg*etdN{B$hqk4xqjme}+_!v9_iMu^cbA@F<{ zYDjMnjv$1br-F%vUMBsM@-Y#Qi^$>B|KGr(Qp)d3#GLr*u^w=B!?_gaj@D5ssiRc1&r?4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^7CSWg$nkcv5PXT|zoaS&;n&%CIEt#hJ7 z$>v!aGfw>fZ@5BSPe@o$U&JKkZ^hmW;mL2W=U4})J+wI)S9;6%`ONoa2McA6gVA%b zr0cPbRw{Ryzcv0oAo}6z8NHw*r~De0IeHawrS zY-4hoD#Hynv*>mH$=)Y?54btZT)9MiBhxdr2Syw2s7z~F!!qNh=m*seKU9ttobYlu zS^c0o;pV|&r?S%u4NFQN@P5$vFfG{l_XYK^X-o+=oHw}|3RO~c87_IBh+|kXb%PL- z!rYdrf()4|UxWhY-6;F9zkGl2zoI8c&iKvJW8>EF&#FFP+*SNb>!OCDN5hi#1B@RO z($=~y3v*h|;8}gZ`_mmWeQ#H%*E^RoZOzp|6?Rm0LYr*QT>!=70evXaFo3E<54E~zu{ue(e zUS+SLbL1{-9J@&GBpVZ%_S3mo z+-EvvpC-JljK8FIw6mmpk^7vb^BQC!so{8Gp6GvuXNPY_@a(?w5|~aIJYD@<);T3K F0RYjFYXSfO literal 0 HcmV?d00001 diff --git a/icons/redo.png b/icons/redo.png new file mode 100644 index 0000000000000000000000000000000000000000..cff5d8d5cc47c84d2a9c5aa92f254053341cfbd8 GIT binary patch literal 882 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^7C37#&FAr*7p&f1+V5-8HXUsy@XK+BHf zP*X2w*HR^pri+ITnQ$kq?p+`DUs6=(jjE8q+BYtN7wiwPvv5nxYg}|<`5AeJYuD#p zyNlEJ%$~FUj-~PQIr-)9x>=7G%7D=v-j2WTnYt!y5w_qw!#KZjdfK;by)h>_Cv0Je zVNUz^Phv-U+V|w=v%CHtQ1h6@ruRAj^Mu;Kbk(oP&wacYHpt(IE!-;~?Ucoo#+>wP z(z&BvGiEiEHx_ztR8dhqaK?_|Jk#OnNqhJ_IVB3%D`X{ZSNM43NwG}WGBZcZMxf#} zv+-_gzjZ3C4&_3VL>caSctkO5(O0Zwys)mNQ-I;E=L`wP3w8r=)WoEPSbKC)~4;z*K z{oK*%_CQJ2l;4?&E%>%?LPel*!p$@HOgzKdm&g^U80;zh9I)x)L=*3_4;Pguf84Rw zUW4bUEn5sHNAD$@DLL(D-$-weQ9jtwa>n4|toAQu)$31$%}RC2l@k(9NV9K@KJdZo z^LYu8t(6{MHaK6BdmwW2;cM{+p5n<99$WN*(YdyV=6^YFuV3PjdkmPg89ZJ6T-G@y GGywp%ba6%i literal 0 HcmV?d00001 diff --git a/icons/save-disabled.png b/icons/save-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..c65944d3051915fa56d0805991da5f6fdbea41f3 GIT binary patch literal 792 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^5sGfx-Ckcv5PXM5*gF%WS(uiGki!N;}L zgGGp&MQF{B|Non6C*JrlO`xMOsCR*U_Y_v+GAqBwG2tI4rakV-x0AnF>C2||`B+=Y zq%Hh94bsYKf(2P=``y-5YMx|Lk!93x`1|oO!-sQc?xn2Sd-Ps|o&O2*iU#*d^U~J* zmv?5lBWZio>}`lp8;3;69SH~Rmyz%0@(3EJ`sQ&auYG#{z|8~u`t@(#^EhXNEs<+EMT=oq>V#OQ zlS~OroJ+YI&IlFVyAso?yzRZ^zb`fWC#o1%&)u~+h*c)0CMZL7?#!FFr}$k@ zV5>7HQ(b?=>#(f$7eW(C#50&&owEx){}(qE@0z{z0`KMW2RrQ3?3$SL*#1wtn|?y? zJlph==D*u6{%g(?lTmxa|3K~K@lM?&;{~2Po3*`nv1`Sf-%8%RxZnA~!BFO-Y%}*v z6N+H?ZgkE6&})T=9+vZ)9R!8;_&2{3+QZtgxg|)iRlFqf*ShcKoOSV+KKCv&{c!P& zU$U#$!*3p?@7Qled9HU7@`_*z-oUbP0l+XkK D4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^7CEKe85kcv5PXCL$qag;f3KY6A~Bilt+ z{)H`ayV_hftYu&LNBYRCI}7af4(`h^6>5L0TMYr9?F6{*?bt41vi&8=q8_8-%%Uav7JG1CgVKj z#UCFl9FY2OOhTFS*ZW674zpD+@yM;xf1>;9!WV-}jQyR3oLE}6a3;!C z%!+afZsuI-n#4I>`Rit`8s41WubO^|HFWIp+i3XAj``oj9JMdq3?3?q;f(b%Pjw#@ z`f%>#s^HGCes#-b4v=ZV5?0{du}!8(l%c?dS*S>if!E_iEQ884f!7Kmvwt6$8+9|V z|8=y3yGvLNzxPhA9ikVO@xBSV>-cYWT?CVz&JVK_jtA^oK?Z85!}!-t8#;bYX* zzNepdm#n|JS%&$3L#g-O^ap|OXT03-ZqD-NdPW}ie|z)~RIhT6PoK$}#~g0+OX~2Z zaEau3KUj*+Hkf^6=P&5by1Do9o|e)#n-_~4x8zQHUhtOjUiQgm%Y=ys)Guwkc#CE8 z#08b&C!CtTX)vnTjntyPo{$6u|Ql^7oET3axIB|?*F3v)&=O9uOeWgHjy7WfJ-kad`? zmdKI;Vst E0Dh}fn*aa+ literal 0 HcmV?d00001 diff --git a/icons/treeview-disabled.png b/icons/treeview-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..f8fa8c2aeda53d786e4cb9e94440dc9a0ee46a62 GIT binary patch literal 607 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^7iT2B|pkcv5PXYBSn>>%KJo{f<;z*Td? zi=co{|K}fMU$U&@j-wz~+o9~^l{Y57{TlUpue+D9`{JF#+2th;PkOVf6Vmt(7;osh zeoo~NFDP5=B{pV6e#hjk_zE-qgF^*=`KTvyOm-5T!%xwv2d=;PP?-nps zUvS^_2D@=JyP0B^?-^hD3)057C%9F-_{6AO!5g5gw$?5|L$iwIXG50&v&Ti{m|qQo zHLNQHC;I_aKEES(qkpY%=WV+Lj+^>UqMGXtId$wg`A^`Asl=j9H4ah_9qkw<@H0GN z?mNNGqM;_=P~-5dJHWMT^#%c@{7v>OrMzt`bmW27ffX_QY*7Bh$k=s~T|s`rPoR^kDSM+Q$4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^7iDV{ElAr*7p&am}6>>%KF-;Jr0iPMF@ zLwQHzEWS?V3A2I&3Pmi~O-(GB?Mqo~j|SZ6%Mr3Z5~sH5dv)j}U%U5f=H9)?Jke}n z=7BSO4Z#V=bItxAHvb^y^dri2#}@_Mhin6g$xs)%Z)e;7rB8&$%q0q8gv>chHLX zxo8)|`>TzD$p_qjrfp<6dd}kZv7R|Ix6Wnaf8u^LV&>%QI~;lg9_tHbwzdjn3YShd z-yHjZ=SKg`+mp}MIEbIgVTxf6KM>b*=0r{%&p*qXIt<$nxZc-czxJy^Z;o-#qlIVL zzdSHrq1Ckx{PUDjDlWZZ-t~dW#{I;{guVPPoG$eS zywzgP0ogbCkJ^gl4dt6^8i3HDg~$I1^8|hn)Cg1-`AW1R*H?cSUhwVp^_(Qw3XEO` MPgg&ebxsLQ0QkrJ8~^|S literal 0 HcmV?d00001 diff --git a/icons/undo-disabled.png b/icons/undo-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..99306ac93fe0e56dc04ad579d7d8a77f990b1e77 GIT binary patch literal 842 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^7C3{Mxwkcv5PXT@d9*+IW7ZIbc(+cR$(8#5j@ z-~pqa=#D49l0x4y^EcK$5c;8|R9}3QTeX{U)i0ikeE~JRd&DOu_RU!MX30ONP}`(P zn*(|uyh1nk?h=?J70_iLb@_?j1%FB7X(?hXCrnJ@^qP2HbX9N|EbxAG@N&btPIi9gT^e#y zQWru$UO3R8*UjF}IPa19+0viooPXHr+TNIiOI;}XxOxY}xrThDMZR_c*$1X|tv6!w zb2+l}eT2~h=11vw801}^)Wj}+!mgy7)c%O!*~ZluWt5B<>{4G{`TwAGm0d(=q&1Vv z6A_7&*O$@+yCxPaUsv>0M8n-F+~)gp~ZUaPwT(3NLbI3(-SkPrdoa>}t zcz#vP(iccLbb3YwZ{&8q7{>ZltQTi1`U~@gevQlVaj$PX@O;)PLsvP2=^Uy%SBOk( zT;;Sm`H Omci52&t;ucLK6U(GF;yP literal 0 HcmV?d00001 diff --git a/icons/undo.png b/icons/undo.png new file mode 100644 index 0000000000000000000000000000000000000000..f709c8c241b83968fc6a3d5b40b34ee649b46230 GIT binary patch literal 908 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z2(JfW#^h&xhk=5UC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NC6dzfD}2F zmSp4?G597Hm1O2A1eF$N=a+3ieP$+5-WXy?X;E@2Lq5KliOF)uwoJ~KH#FK)iZ1O^7CRh}-6Ar*7p&hpK^>LAiKf4i1O#>y^f zaixsAJ4Ehwth>`0@P(g4smc1Ue5txdY)5ur*MbEKdM#YLM8!iLw?wS(2#I>}_45u7 zt&epoGgF>TI#y{m{mh)%lfSD@wlwB+QJUzXBGd__PSkfe&AoBv8*_WZTnF|FotNG# zYC<`a8fMOA^7}rgUUbH^FIFz+R`vX}TR78~G5v*kId{RqGiJZeMY6AFTk>dmky9Dt z@0w?8y3LurI^vU8ub*T0A*rFcqJdT3vNrHGgZszgNmixBzm`m6?0fXQadzpa)&-k@ z%y`CdmD<&_^hKt=YT$abT(xxd6RzIPjJZPmeQaBNZ7d`%xP1(`)Ud6qU5ITYHg z1C6>XYnZeTxIf_iu;`Rm@d`#>ar++r1I!OPm)uYNXKSS@9k ztWtjHS>jw~&-X3cW*9Kek-744x4Ca?i_!tYVp+!}MY0g8Jxh3yL)F zBnaDyf6-6p&sxi>HKSmi-@ZvUr(eEi$luJnRouBxO~!2V-O^&QnDaIT?f=>zhChh1 zO8s~A^y)0n&1q~;yO!FjNQ)nwP;&iD9Mf@+RYzGLB>tN4hduxOD_Nh2k5i5NORCot zbf0-$=g|3ZgG-Q>Ioo?_rIno9U&=SfKG?P7{l4OBicj2wCLai#wDg722alkOBBG#l f15G}GAJ|(?f9z*}cIF~5(KC3u`njxgN@xNA?mm7~ literal 0 HcmV?d00001 diff --git a/panels/project.cpp b/panels/project.cpp index faf05daf6..2a8bde78a 100644 --- a/panels/project.cpp +++ b/panels/project.cpp @@ -83,41 +83,67 @@ Project::Project(QWidget *parent) : toolbar->setSpacing(0); toolbar_widget->setLayout(toolbar); - QPushButton* toolbar_new = new QPushButton("New"); - toolbar_new->setIcon(QIcon(":/icons/tri-down.png")); - toolbar_new->setIconSize(QSize(8, 8)); + QPushButton* toolbar_new = new QPushButton(toolbar_widget); + QIcon icon1; + icon1.addFile(QStringLiteral(":/icons/add-button.png"), QSize(), QIcon::Normal, QIcon::On); + icon1.addFile(QStringLiteral(":/icons/add-button-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_new->setIcon(icon1); toolbar_new->setToolTip("New"); connect(toolbar_new, SIGNAL(clicked(bool)), this, SLOT(make_new_menu())); toolbar->addWidget(toolbar_new); - QPushButton* toolbar_open = new QPushButton("Open"); + QPushButton* toolbar_open = new QPushButton(toolbar_widget); + QIcon icon2; + icon2.addFile(QStringLiteral(":/icons/open.png"), QSize(), QIcon::Normal, QIcon::On); + icon2.addFile(QStringLiteral(":/icons/open-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_open->setIcon(icon2); toolbar_open->setToolTip("Open Project"); connect(toolbar_open, SIGNAL(clicked(bool)), mainWindow, SLOT(open_project())); toolbar->addWidget(toolbar_open); - QPushButton* toolbar_save = new QPushButton("Save"); + QPushButton* toolbar_save = new QPushButton(toolbar_widget); + QIcon icon3; + icon3.addFile(QStringLiteral(":/icons/save.png"), QSize(), QIcon::Normal, QIcon::On); + icon3.addFile(QStringLiteral(":/icons/save-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_save->setIcon(icon3); toolbar_save->setToolTip("Save Project"); connect(toolbar_save, SIGNAL(clicked(bool)), mainWindow, SLOT(save_project())); toolbar->addWidget(toolbar_save); - QPushButton* toolbar_undo = new QPushButton("Undo"); + QPushButton* toolbar_undo = new QPushButton(toolbar_widget); + QIcon icon4; + icon4.addFile(QStringLiteral(":/icons/undo.png"), QSize(), QIcon::Normal, QIcon::On); + icon4.addFile(QStringLiteral(":/icons/undo-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_undo->setIcon(icon4); toolbar_undo->setToolTip("Undo"); connect(toolbar_undo, SIGNAL(clicked(bool)), mainWindow, SLOT(undo())); toolbar->addWidget(toolbar_undo); - QPushButton* toolbar_redo = new QPushButton("Redo"); + QPushButton* toolbar_redo = new QPushButton(toolbar_widget); + QIcon icon5; + icon5.addFile(QStringLiteral(":/icons/redo.png"), QSize(), QIcon::Normal, QIcon::On); + icon5.addFile(QStringLiteral(":/icons/redo-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_redo->setIcon(icon5); toolbar_redo->setToolTip("Redo"); connect(toolbar_redo, SIGNAL(clicked(bool)), mainWindow, SLOT(redo())); toolbar->addWidget(toolbar_redo); toolbar->addStretch(); - QPushButton* toolbar_tree_view = new QPushButton("Tree View"); + QPushButton* toolbar_tree_view = new QPushButton(toolbar_widget); + QIcon icon6; + icon6.addFile(QStringLiteral(":/icons/treeview.png"), QSize(), QIcon::Normal, QIcon::On); + icon6.addFile(QStringLiteral(":/icons/treeview-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_tree_view->setIcon(icon6); toolbar_tree_view->setToolTip("Tree View"); connect(toolbar_tree_view, SIGNAL(clicked(bool)), this, SLOT(set_tree_view())); toolbar->addWidget(toolbar_tree_view); - QPushButton* toolbar_icon_view = new QPushButton("Icon View"); + QPushButton* toolbar_icon_view = new QPushButton(toolbar_widget); + QIcon icon7; + icon7.addFile(QStringLiteral(":/icons/iconview.png"), QSize(), QIcon::Normal, QIcon::On); + icon7.addFile(QStringLiteral(":/icons/iconview-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_icon_view->setIcon(icon7); toolbar_icon_view->setToolTip("Icon View"); connect(toolbar_icon_view, SIGNAL(clicked(bool)), this, SLOT(set_icon_view())); toolbar->addWidget(toolbar_icon_view); @@ -401,7 +427,7 @@ Media* Project::new_folder(QString name) { Media *Project::item_to_media(const QModelIndex &index) { return static_cast(sorter->mapToSource(index).internalPointer()); -// return static_cast(index.internalPointer()); +// return static_cast(index.internalPointer()); } void Project::get_all_media_from_table(QList& items, QList& list, int search_type) { @@ -527,7 +553,7 @@ void Project::delete_selected_media() { // remove if (remove) { panel_effect_controls->clear_effects(true); - if (sequence != NULL) sequence->selections.clear(); + if (sequence != NULL) sequence->selections.clear(); // remove media and parents for (int m=0;m Date: Wed, 9 Jan 2019 17:44:32 +0100 Subject: [PATCH 02/32] initial support for svg (just files) --- icons/add-button.svg | 937 ++ icons/iconview.svg | 25889 +++++++++++++++++++++++++++++++++++++++++ icons/new.svg | 4763 ++++++++ icons/open.svg | 12790 ++++++++++++++++++++ icons/redo.svg | 5603 +++++++++ icons/save.svg | 8565 ++++++++++++++ icons/treeview.svg | 25878 ++++++++++++++++++++++++++++++++++++++++ icons/undo.svg | 5603 +++++++++ 8 files changed, 90028 insertions(+) create mode 100644 icons/add-button.svg create mode 100644 icons/iconview.svg create mode 100644 icons/new.svg create mode 100644 icons/open.svg create mode 100644 icons/redo.svg create mode 100644 icons/save.svg create mode 100644 icons/treeview.svg create mode 100644 icons/undo.svg diff --git a/icons/add-button.svg b/icons/add-button.svg new file mode 100644 index 000000000..907b8f82a --- /dev/null +++ b/icons/add-button.svg @@ -0,0 +1,937 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/iconview.svg b/icons/iconview.svg new file mode 100644 index 000000000..9d932672a --- /dev/null +++ b/icons/iconview.svg @@ -0,0 +1,25889 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + + diff --git a/icons/new.svg b/icons/new.svg new file mode 100644 index 000000000..c06707d77 --- /dev/null +++ b/icons/new.svg @@ -0,0 +1,4763 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/open.svg b/icons/open.svg new file mode 100644 index 000000000..725c85078 --- /dev/null +++ b/icons/open.svg @@ -0,0 +1,12790 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + + diff --git a/icons/redo.svg b/icons/redo.svg new file mode 100644 index 000000000..aec75a806 --- /dev/null +++ b/icons/redo.svg @@ -0,0 +1,5603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/save.svg b/icons/save.svg new file mode 100644 index 000000000..1fd4a736b --- /dev/null +++ b/icons/save.svg @@ -0,0 +1,8565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + diff --git a/icons/treeview.svg b/icons/treeview.svg new file mode 100644 index 000000000..b71892e52 --- /dev/null +++ b/icons/treeview.svg @@ -0,0 +1,25878 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + + diff --git a/icons/undo.svg b/icons/undo.svg new file mode 100644 index 000000000..b637902e3 --- /dev/null +++ b/icons/undo.svg @@ -0,0 +1,5603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + From 4fb68a6b3e126946dc609b5c998f36fc4eda8af8 Mon Sep 17 00:00:00 2001 From: Pablo Gil Date: Wed, 9 Jan 2019 17:45:00 +0100 Subject: [PATCH 03/32] "add button" updated as in svg file --- icons/add-button-disabled.png | Bin 1105 -> 750 bytes icons/add-button.png | Bin 1105 -> 825 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/add-button-disabled.png b/icons/add-button-disabled.png index c44add8f83dba572bc05a904b4fe375a70b31ed4..aa7257f8f8a8eca8bdb6c6e9d578cf6716e71179 100644 GIT binary patch delta 737 zcmV<70v`R*2<`=t8Gi-<0063Kaozv`00eVFNmK|32nc)#WQYI&010qNS#tmY6R!XO z6R!bd=8nSv000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC0006ENkl@8ryY z3GJUXM_>ueV>(O003zC0Z6&I`7IQYo+@5(TG><|>F#!Y*(qe)wxXJ*0&%R$(({lQu z=MHWELu;JM0GxA2iiZ}r%HDgpNX!gaUrCGxt588q04s`H%B`^>;^f&vDCNjkSPH*H z)-Hf;jeju?z&3Qcb@&>S@*sF&)Qg169K}xf0>8;cY!(8?X?Z?aqU4bnFqbsA zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ+vq?ljRCwC#*MD6K!yphw(a(~F>%Q9jnC>fm2my^kng+%O z?)VY~;W+9L-J-Vf5C8y;qf0yC%*@*Lacltq0000000000fQvt+y82H0cD`c^0002+ zx0UeB^P1;500000003}1z*9@5z3c$KK57Set1rfS&6a1N%t5d{g!3*3gQE2<2tZ{< zeh0WpJBp|wU%!1F@cS=oz?Oq?U4M&8=<`f;=76YC($o$h`SiGc1^|3DB~w)GWS#&3 N002ovPDHLkV1jhT*+KvS diff --git a/icons/add-button.png b/icons/add-button.png index 728bd7be3b98d0c123075f544114918a16989d45..f4591f94ff98daef40b11cfc0bd8fdd0371813a8 100644 GIT binary patch delta 813 zcmV+|1JeA_2)PE38Gi-<0063Kaozv`00eVFNmK|32nc)#WQYI&010qNS#tmY6R!XO z6R!bd=8nSv000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC00074NklPrG z5QV=A1XzRv5LQ;!aE2uOh^0{u0!KkyBrGA3>;q)y6`Ld*ehxs8zygZJbfgI3>FTkk z%9-@Hw94-Ho`3D>sp^4BrBbO>DiNsarmEhK)F9pqs_HG^39t)nrwBfZ-;(*2G0UiTmCoOl%O?HGpUV(bNE<1%E_S1Bez7O${JgKr}UgXaUg_ zjiXXaJEB{&vQtv4svVZ#0yr0uAJ#XRnvOKdIiTt1EiG*%bKn>_v`m(=0i+q;YuYC{ z>&OgvlbbPGt^xa8Kl9Lx*YA zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ+vq?ljRCwC#*?&z6!ypib;crTh)f#&5niP7l>7uwuBKwK<79%kF0$@#u5Mk0000000000_&&_vZ8U%KR+az&006uF z6LLHU000000090PaFthDj@u8Mbgw*3Rn|wX7OzL-RsZaY1e{m>Q!HRvgV7ZYNI=W^ zZvnKmaX$ZeK$_1#9#Cp9l{_Bstie!n>u`HMNxE!58MVhC)2$?r0RWenZodo*4>|w< N002ovPDHLkV1ib#&kO(n From 70c9864a0b0162836a969a73f04a0c5fbdf0843c Mon Sep 17 00:00:00 2001 From: Pablo Gil Date: Sat, 19 Jan 2019 16:48:58 +0100 Subject: [PATCH 04/32] icons ported (some redesigned) to vector SVG drawings, but .png are still in use --- icons/add-button-disabled.png | Bin 750 -> 758 bytes icons/add-button.png | Bin 825 -> 806 bytes icons/add-button.svg | 1140 ++- icons/add-effect.png | Bin 1334 -> 1023 bytes icons/add-effect.svg | 840 ++ icons/add-transition.png | Bin 1295 -> 1104 bytes icons/add-transition.svg | 824 ++ icons/arrow-disabled.png | Bin 3127 -> 971 bytes icons/arrow.png | Bin 1459 -> 1080 bytes icons/arrow.svg | 129 + icons/audiosource.png | Bin 3221 -> 851 bytes icons/audiosource.svg | 818 ++ icons/beam-disabled.png | Bin 3290 -> 662 bytes icons/beam.png | Bin 1393 -> 658 bytes icons/beam.svg | 170 + icons/clock.png | Bin 5665 -> 1841 bytes icons/clock.svg | 824 ++ icons/diamond.png | Bin 1269 -> 777 bytes icons/diamond.svg | 818 ++ icons/dirup-disabled.png | Bin 1933 -> 749 bytes icons/dirup.png | Bin 1926 -> 833 bytes icons/dirup.svg | 11031 ++++++++++++++++++++++++++ icons/error.png | Bin 11806 -> 1873 bytes icons/error.svg | 11031 ++++++++++++++++++++++++++ icons/ff-disabled.png | Bin 6775 -> 745 bytes icons/ff.png | Bin 3875 -> 820 bytes icons/ff.svg | 824 ++ icons/folder.png | Bin 1506 -> 525 bytes icons/folder.svg | 11032 ++++++++++++++++++++++++++ icons/hand-disabled.png | Bin 6400 -> 1445 bytes icons/hand.png | Bin 6360 -> 1709 bytes icons/hand.svg | 826 ++ icons/imagesource.png | Bin 12280 -> 1074 bytes icons/imagesource.svg | 11044 ++++++++++++++++++++++++++ icons/magnet-disabled.png | Bin 1804 -> 1292 bytes icons/magnet.png | Bin 1676 -> 1415 bytes icons/magnet.svg | 11076 +++++++++++++++++++++++++++ icons/next-disabled.png | Bin 5852 -> 818 bytes icons/next.png | Bin 3533 -> 855 bytes icons/next.svg | 824 ++ icons/pause-disabled.png | Bin 3311 -> 459 bytes icons/pause.png | Bin 1560 -> 484 bytes icons/pause.svg | 824 ++ icons/play-disabled.png | Bin 5268 -> 734 bytes icons/play.png | Bin 3394 -> 795 bytes icons/play.svg | 818 ++ icons/prev-disabled.png | Bin 6046 -> 824 bytes icons/prev.png | Bin 3527 -> 881 bytes icons/prev.svg | 824 ++ icons/razor-disabled.png | Bin 2621 -> 693 bytes icons/razor.png | Bin 1287 -> 779 bytes icons/razor.svg | 821 ++ icons/record-disabled.png | Bin 1375 -> 748 bytes icons/record.png | Bin 1318 -> 814 bytes icons/record.svg | 818 ++ icons/rew-disabled.png | Bin 6830 -> 783 bytes icons/rew.png | Bin 3862 -> 848 bytes icons/rew.svg | 824 ++ icons/ripple-disabled.png | Bin 3219 -> 862 bytes icons/ripple.png | Bin 1158 -> 986 bytes icons/ripple.svg | 11044 ++++++++++++++++++++++++++ icons/rolling-disabled.png | Bin 3609 -> 976 bytes icons/rolling.png | Bin 1165 -> 1070 bytes icons/rolling.svg | 11055 ++++++++++++++++++++++++++ icons/sequence.png | Bin 1598 -> 545 bytes icons/sequence.svg | 11047 ++++++++++++++++++++++++++ icons/slide-disabled.png | Bin 2435 -> 866 bytes icons/slide.png | Bin 1171 -> 996 bytes icons/slide.svg | 11051 ++++++++++++++++++++++++++ icons/slip-disabled.png | Bin 2906 -> 882 bytes icons/slip.png | Bin 1153 -> 997 bytes icons/slip.svg | 11048 ++++++++++++++++++++++++++ icons/transition-tool-disabled.png | Bin 1135 -> 629 bytes icons/transition-tool.png | Bin 1132 -> 662 bytes icons/transition-tool.svg | 829 ++ icons/tri-down.png | Bin 1180 -> 837 bytes icons/tri-down.svg | 818 ++ icons/tri-left.png | Bin 1200 -> 776 bytes icons/tri-left.svg | 818 ++ icons/tri-right.png | Bin 1173 -> 796 bytes icons/tri-right.svg | 818 ++ icons/tri-up.png | Bin 1120 -> 832 bytes icons/tri-up.svg | 818 ++ icons/videosource.png | Bin 2882 -> 780 bytes icons/videosource.svg | 819 ++ icons/zoomin-disabled.png | Bin 2053 -> 1708 bytes icons/zoomin.png | Bin 1813 -> 1921 bytes icons/zoomin.svg | 822 ++ icons/zoomout-disabled.png | Bin 2035 -> 1606 bytes icons/zoomout.png | Bin 1805 -> 1828 bytes icons/zoomout.svg | 824 ++ 91 files changed, 129364 insertions(+), 627 deletions(-) create mode 100644 icons/add-effect.svg create mode 100644 icons/add-transition.svg create mode 100644 icons/arrow.svg create mode 100644 icons/audiosource.svg create mode 100644 icons/beam.svg create mode 100644 icons/clock.svg create mode 100644 icons/diamond.svg create mode 100644 icons/dirup.svg create mode 100644 icons/error.svg create mode 100644 icons/ff.svg create mode 100644 icons/folder.svg create mode 100644 icons/hand.svg create mode 100644 icons/imagesource.svg create mode 100644 icons/magnet.svg create mode 100644 icons/next.svg create mode 100644 icons/pause.svg create mode 100644 icons/play.svg create mode 100644 icons/prev.svg create mode 100644 icons/razor.svg create mode 100644 icons/record.svg create mode 100644 icons/rew.svg create mode 100644 icons/ripple.svg create mode 100644 icons/rolling.svg create mode 100644 icons/sequence.svg create mode 100644 icons/slide.svg create mode 100644 icons/slip.svg create mode 100644 icons/transition-tool.svg create mode 100644 icons/tri-down.svg create mode 100644 icons/tri-left.svg create mode 100644 icons/tri-right.svg create mode 100644 icons/tri-up.svg create mode 100644 icons/videosource.svg create mode 100644 icons/zoomin.svg create mode 100644 icons/zoomout.svg diff --git a/icons/add-button-disabled.png b/icons/add-button-disabled.png index aa7257f8f8a8eca8bdb6c6e9d578cf6716e71179..c7b22ddb4e179a929c2e699905f1dbe088d11b60 100644 GIT binary patch delta 579 zcmV-J0=)h11@;AyI|~lP000ie0hKEb8<9qbe-ueXK~#90?VCYv!Y~j;pG&1e*ML-2 z;sE6eJ$|nMH$X^*HDpnkF6^j?#)d#L1Ho@eM)3cS6Py_ZGMP*!V}po1iO7?s2B-al zBJvEp17qMNd|Uu4VBwtm(bS_FfQSr$DbSCU6u`_mx7E_5w){k-N7_8$*hi>ULG${1 zexNBQyi3^IM&~2izn%0BZr(McIRI+`*5m-J1z2;kB^J6fZ@>uun0o7>?ST!j2A0mbU8*=4z!^QfTW1T*Q$5D$ z*$my=do~Y##ZFT_#?*3t=f2IC^zmLQe@O)}YF>*O zDg$uN?eSBZu22L||46NXRZC(l_>LV&1+btStDwMpsU#Xen9|Phn~8g6iyyW|cY}4d z!bAMVLTzYqAv?VB>$k#9A|ju4>Ya06ZD~0q{|#CTuqFp!Ex?)_fVBW?asbu>f2_#? zSPQU3L?#a#fQU?h#|)q}4-a?=9GVB+04iHj5t5IvmvU?#bOYGbsBOFnQ)M1>16a3I zdy<%W&<$Y8d1rPTY8xSC9uxxzt*JTbMr(l|W;SvUIAtDeUYY6f_sUE;eJb#+>xHIy zFbLp~a$FS~T3qqHXPF1%0NS9AEqUlz0CmknhXT07Jai<0OU*+E0=ULJz%RM)o!8H~ R>{|c;002ovPDHLkV1kdR0n-2g delta 571 zcmV-B0>u6H1?~lqI|~!9000xO0b}Nl!;waZe+)@PK~#90?V3Gr!Y~v?k7>Ig7`g$K zpmYEKZ|P1YK88xD0bmRDzTjszYyLT;St|^;}H8LU>JsB7={KS(i4%MrUsXL zKoN1k7#IP4|M4DJ11sm8j8s?wfq_^7mo?GPmQTKL-iKa1}p$=0oqsq+5)t(0JH^YV*zLj z(8dDL7NE`D2avKsIc;eN)Z45KQ))$O^+XQ9&N=rT`-7;CkniNofC=rNHAi3x%wsxB z!2lxKSZyV$y%uve$K0NIC^U~kMKJ*ce-F}Pf-Shp0DRBBUscm``l06zZT~}SoXP;4 zb4QAY7PrdYd$>r<3|L=Dj0USvK}-NEid)L9u_5B**+MAg$X8ejzeLt9fNhO24!|~a z-Iqz)3-~qmSE?$2#I^m_Irmv-oK)IAog2pj&=#PL1)wcJ8w)^NfHoF@wg7GJe>wmW znci&xA~FT;Gk}wM$a@JK8mdjAY##Cku%pOZ>5(JrHhpPd@O&N zhx~VeIo0j84e)X8K`)sHz1QVO6b~)RugkB1^|jv=uQCq`0hBpCv}j_=`{P%d2ju{o zB*r{+G=Nz1(7^yw%tOZlNHq@~B?_R9dFV(0bAJ&oCH;N(X3Gi7&t}XMJ3Q*Ne;0v%CSuz3+MPz7|$xMK% ze?A9(0_!zPFMxLQCHvHu2Y3ymS5546?+C~!Z1&Yi2_9A4)|l7B_*S> z(|=UG2b?4d<3Y4b{uqqitK6kMAY4q$D?{KQRvxCi6fOvRb=!m;n|Zht{tcV~f8SbN z3U`UB{%W#bM7C088K?K(2D1R~0N!K)-T}PH0=xrwlLdGO@TS)SRQ0I00#x+~=%;}D z^3cPVz<7DE70~3jzc(oYJT4Em0?reyor+22!B)UogSDq!o;X$>YzHC*@Pn|yTE&ns z!|UYd@>S)*@EK4R8W4t*F)o3RT~_76=Pxra2zzyVJWQOgfMdd6W}*YkhUcj*4-Nvx zx!ae_Q4Rt}L0lv(A(89@Wakx|BpZGXK#;%!ip6xK2;u4Kv8T$J^tZIi?)RSU z>8a|0N~Kb%R4Ngu>ZYpRj?^ID3##fZ;0dq`Y^RsM025#$B7Z#fxCW5E?N`8~1tl}! zf31l8^3t^7wNT=K#pVGX17jyGfMWovdJlMND1EM~cl*|JiRUk11Z*1W?xb25JOkM3 zsdg#6uK`xvF3#&3fEzV{XaUjG0HOs%Qv-+=5KRprT0k^4fM@~H6pf=&OFN=lv$9iC ztEwHA-~u=okssDKn3|3>$vL3u=PfO5e{ma+k)8QyE!CpqiL40w~9FWs(2Upib48W__LkQYMpk=k0O`N~U}bXr+0LCi-1u#BMFP-0vW4e+PJB ztbGrhc39&Za3&&i>l=!C0TKBLd@NN3Ps!B2m@xjSWCm$AD`9CCxymLjm)LC-dO@7x-RKd(oGOtLDKsfODE&J;xk4 z>qEf5=D{(5bX;|8DE&~<&s+JQaCz|G1rBK+ug!pWt6p@Gd5C#jeuL)3W)FCnUj9Tg zzniZ5arrj$5D>ssE)OmGdOSX79)bht6N`BmXaH98Fu(vx%)`I}C^ZiQ3ZRR57)StJ g&BFi!SjIfSUrh_Cr5>7-Y5)KL07*qoM6N<$g7MHJmjD0& diff --git a/icons/add-button.svg b/icons/add-button.svg index 907b8f82a..b51a08205 100644 --- a/icons/add-button.svg +++ b/icons/add-button.svg @@ -13,631 +13,113 @@ sodipodi:docname="add-button.svg" inkscape:version="0.91+devel+osxmenu r12922" sodipodi:version="0.32" - id="svg11300" - height="48" - width="48" + id="svg2" + height="64" + width="64" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1" - viewBox="0 0 48 48"> + viewBox="0 0 64 64" + inkscape:export-filename="/Users/pablo/olive_pablo/icons/add-button.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + id="defs14"> + style="stop-color:#89d5f8;stop-opacity:1;" /> + style="stop-color:#00899e;stop-opacity:1;" /> + style="stop-color:#ffffff;stop-opacity:1;" /> + style="stop-color:#729fcf;stop-opacity:1" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> + id="stop2848" /> + id="stop2850" /> + id="stop2368" /> + style="stop-color:#ffffff;stop-opacity:0.21904762;" /> + id="stop2370" /> + style="stop-color:#ffffff;stop-opacity:1;" /> + style="stop-color:#ffffff;stop-opacity:0.24761905;" /> + style="stop-color:#729fcf;stop-opacity:0.20784314;" /> + style="stop-color:#729fcf;stop-opacity:0.67619050;" /> + style="stop-color:#7d7d7d;stop-opacity:1;" /> + id="stop4448" /> + style="stop-color:#686868;stop-opacity:1.0000000;" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id="perspective2833" /> + + + + + + + + + id="perspective3372" /> + id="perspective2734" /> + + + + + + + + + + + + + + + + + + - + + fx="225.26402" + cy="672.79736" + cx="225.26402" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + gradientUnits="userSpaceOnUse" + id="radialGradient3850-4-2" + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:bbox-nodes="true" + inkscape:snap-nodes="true" + inkscape:snap-smooth-nodes="true"> + empcolor="#ffffff" + empopacity="0.31372549" + dotted="false" + empspacing="8" + spacingx="1" + spacingy="1" + visible="true" + snapvisiblegridlinesonly="true" /> + id="grid0002" + spacingx="32" + spacingy="32" + empspacing="2" + empcolor="#ffffff" + empopacity="0.47058824" + color="#ffffff" + opacity="0.31372549" + visible="true" + enabled="true" /> @@ -900,7 +784,7 @@ http://commons.wikimedia.org/wiki/Tango_icon - + @@ -922,14 +806,16 @@ + id="layer1" + transform="translate(0,16)"> + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:none;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.86274511;fill-rule:nonzero;stroke:none;stroke-width:12;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 31.910156 5.9160156 A 6.0006 6.0006 0 0 0 26 12 L 26 26 L 12 26 A 6.0006 6.0006 0 1 0 12 38 L 26 38 L 26 52 A 6.0006 6.0006 0 1 0 38 52 L 38 38 L 52 38 A 6.0006 6.0006 0 1 0 52 26 L 38 26 L 38 12 A 6.0006 6.0006 0 0 0 31.910156 5.9160156 z " + transform="translate(0,-16)" + id="path11935" /> diff --git a/icons/add-effect.png b/icons/add-effect.png index 10125a31dc441ed1585d35f3b0dd227d2725831c..7b16cb66f76b744df7ecbed43053e23953514c10 100644 GIT binary patch delta 1012 zcmVMzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC0009WNkltW4fmVVLv`88&3!|VAuoj!BMG8SXn@CVQ8#O9H zD=j1DVims@yMGtY&1LWH-Fv%x-hN;?^4{Leyt%hC^JW7T?noMuG*Yx3xg+VQqz95d zN?McjP|}H_?ec+jyFt(`w8adE)ul(|#B z3@Hj12kcLoJLt=hqHuA*e@*3pq75h-1Bi3_EKyKPdw=F#_yxQI?wHw!_6bQ#z{x)4 z_e&F41s2R~-6V|zkLZ8lNw$DVGyBpSkTeC{@~o#H zfH{-22862bw}Ejp+lJ^Y0lW*SFDskF9t0272)iv;Tfcrxo$~zpK$He=5(O;ZG}#>k zN>@79%zx}XFb%xGk0Y9~tZ6g*nwXpMAm1x4$KlVZ0?dy4Gsi#O>>u_ZIG7HQRF||U z>1}-7mvpQbS^In&7aB=*q7K#Jw&AnDgrtUSyalmal?}8?8z z+#cedo7t6aI(^d30a+_Sm$SUrJRO?6&jOkAbZA02z-yik zO$Y}p5Cyy>8${iwQsLbJzVmcws*X@zhGap~sHE$XR^#iMq|p$%%GwaQ3S4UY`*Qs0 z{q$MN9RQr~Fg6uJQCS_(iQgfFmem2vj%{OoQ`Q)8H~wrr3d_K~5Q?fan3o}CW#}Ey z_aiXq4E+wM98k0YMdRXtBHsVy#ZMOpq;+@(ofVfXu-BWIL1%;bA0<=i(BT<$O5LHV isHmu@sHmu@$csPIR}vc_+6%M*0000A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ-m`OxIRCwC#n18=Z!$25@-;-9*#Xq2fx`;&4NebfTAa%8F zj?ONMlMX^19r`bbi_k@!#Klo@Q^Y}BD!SI6g9<(_EyR*07aJO-cOMyYx!gVZzW2Ky zF(}>ABM0CB9DoBzxnzFaHKs-5Lf`zymfd0j3}jHlTm|5G=+B!czT;9fB~s1Yjhh)g;^8 z)W7qZEyj}Yz>wB;u5n4yiOQM@dCSQ7lFV2nbOd3MGrnjpca-Q0@k1FXB_l#Zo*k;b z!Qa?tA$0gyBDBi_!!(ZotkIuV8h`ErHF_;2o3jP5Ps56&1ASPwzE6HCKGL%)X|4tD z+S751XI@(?r1e@b&@$quWUZ9ZmIkD!7WEU#Yqk>}2(m#|xd3k2h@7Sa`_HtcpseOp zkSA$a1- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + + + diff --git a/icons/add-transition.png b/icons/add-transition.png index 833f2970685b4e7f6937aca44c3bc2ba2349dcd6..0f2b1ba3d93827e7f7c4999a81af9bac7dde03ab 100644 GIT binary patch delta 1094 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 diff --git a/icons/add-transition.svg b/icons/add-transition.svg new file mode 100644 index 000000000..a04cf2948 --- /dev/null +++ b/icons/add-transition.svg @@ -0,0 +1,824 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/arrow-disabled.png b/icons/arrow-disabled.png index b0e6d8efb67ffb714d078e5eef09df9a2bdfe1c1..d9a767f21f10e79e5e979151b428ec9d2f566394 100644 GIT binary patch delta 960 zcmV;x13&z?7|REc8Gi-<0063Kaozv`00eVFNmK|32nc)#WQYI&010qNS#tmY4#WTe z4#WYKD-Ig~000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC0008%Nkl$TTc{0 z5JpceAP9&=5kXPB25jYhbAq3g8Z~bgKC~@Um$TI)QfcJ=$i0XOcz+ z7*BGA0=UqpeFj*SG#cnPxk3S)rD@!i&FP307K`d{j001ySp%79502s&J6MrTX#ynRk0f4I?RwYd(j@wtM z0RW8QAWUb7{f}}002sv;OP4amKUOXPa020S#xZ0C05AePku;lY0J#A`W(Xw!05^`O zlCI_mT#5{MBxx>X(2@XvgRmm0*MdtFl?DJDgol!@rwCRe062lL7&}m@0FHED(v6q_ zN(TUNPk+*_Sk9XO0ARUViXXa~0svqs281R700-gjFda4x0KiR24~FHei2wi=h6SOi z0Kh?5krcGQd88%-0Jw%Lor57X9RR=_@VMHt_f{JK09?V%B)$JnTL6HAuDwc%@68h}G!7k}si2i5Da`rfTRAGII%8RTGAX#hIF zTQmEeGGJ*+x-?!QfL1Px?*m_I_MJ(2q$UM`Enp4!;9-+24PpZ507qDSw>t^<=$L~8HF_NS~D1cri=RUA*W*_?* zm4BE9p@q;!^*)c=#@Yhjnb|=N+il#T>hm-sX*_mOG|+llh^pLvQM3CSGuwH27&|iZO=VR{+4L8hxUb!#UXjnAr|zZ)kirGw%(L+VNvK_LZasU=f(a it^e- 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 RJ7E9-002ovPDHLkV1fa#(cb_7 diff --git a/icons/arrow.png b/icons/arrow.png index 1016612d69db34d03f503600e641ea2e5a7a112c..3d352903c34769f318cc364c23c007229ad0ddf0 100644 GIT binary patch delta 1070 zcmV+}1kwAm3%Cf78Gi-<0063Kaozv`00eVFNmK|32nc)#WQYI&010qNS#tmY4#WTe z4#WYKD-Ig~000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC000A4NklIOzvIdvb{Y-S$^lvO|ta*V6?;{j#^=Om4A>^Hbv z0raJ2;A~kS_y7PfgKQ*>^wfXN0Hy%vC5`p$<1F6*044*M zBuxz9RahYa08Aho36lc(ClBNar?Ny-x0E_}INNSGY z{f}Y*02mH*NSYbR|CeF`02l^zN}3Zfho}Gmh61N0&5e~nYybdFz)4B-Vwk4@05S-t zBrOVUoPP=cfJUHA($bKoDFJ{C!cj>pLm8$90H6UlAZc|7vlIb924TOX4Ze+11pwLe z%H5JS`ZP%y0Avt$N!semAawvgwN27?A03wk0KgU>5XuAqG6*{*IqhduQ`rCjYy$R3 zs!8r;1OTue*joz-Wd#7R1~@FKVIZB982~^FaDPP7VAl@H4gg>|aNKo!z8(MoECi0Z zK&Tf001JTDqCxcp0AN+ofO-Q^SoH?rYS94a=_4_{0j>iFiw33!;4^Rscn5p}K2$#6 zSB~G?-u?V;W?x(lU0;%V=4#kq*T8%;d+DkFf0WvPfB{QF8m0ySU|C4BPyn6-mvde_ zOMlWhkGcGz5CE|d`0q6l*%vg6l^wd1#qoO+jC%znVm4Rs)*%I_E&?`hzTHx*&qsllxBmNH$zF3L2Llg%ODznf@QGSS01sS2jne-=2~uv|E|~o zZjrAH8u65CQ~+l73V4v?(x+zj%|{NgM*w8^5&fydmw9vmW_BC6(#IuTX4cpF@+V7@ oNm?iAhNLHw9!u(!w9vQr5AXFSTK=DQ*#H0l07*qoM6N<$f*=OG`v3p{ delta 1452 zcmV;d1ylOC2(t^28Gi%-0001Bxm5rF010qNS#tmY3ljhU3ljkVnw%H_00S6lLqkwd zXm50Hb7*gHAW1_*AaHVTW@&6?004N}V_;yO;OOGy$|S(RP*7A-A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ;6-h)vRCwCN*?+%F96=NZ@UKI-km9NnQVTXhK(UKl83-i7 zq`Fkv=8AN7rn3|*G?js~OtgvIwIP2&5`rk4T^d1yf_j@nP|vT0S9qDdyZQ0n?o9XI zzU8w!v&=9HqHkYkVL(=>4@#2X^93X%xAFwENPWU^fHJ`aph|E9C=y%&Y6N$H5`V!5 zph7V4X%%cixEasu#Rl_8jjS`mVYsum!a$ogo4 ziGGKX1S2qyq6kLhTZ$ma03rxdfM9|gAdnyl2qMS=0tnIoZ-P9)lb`|cBIp1-2wDJV zf*!z;pb2my=mH!FBkZ4Rp(uj*g?|}b_Deocdh%2K!Mi@2}v#y1Z!5jmc)>~MqGly@*I1#s(o z7T}xSVRc&Dup-Y;mRXG4dMRbi_>$!ifFD!l!FYB<0DMY`z0Pt+w2QA+EXj6Dwq`|| z*-gT`UhkO!M|_m!Bm}`xHYLNBWywEa@3_Mbuej(_bvppvN&MKhU-2XW0000 + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/audiosource.png b/icons/audiosource.png index 54ec5b0cfa5aa4541d9ec386ce55cc0f852e0e35..3ec97743809688a590fd0d7f6a0eb047b9bda9d2 100644 GIT binary patch literal 851 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1S@HAD-?b*ielf{R{j%-kuG6=~yc^#NK2ZD5&%Z&=;&#c~H>@}AIhp>s=E`S%q2%uxAde-6 z-EEphiSOl}9M&6h%d9?I|C%{@DZ_2)m2LNLzF+f(jIM?kOczBMFS0JuWLm`S63pTv-m#3MLr=h0 zP#{)emXg9Q2a{ZuKQGp}D&(@K?n>ViFY$X{h_GIyF( z$GE(KJy7;gdDEmiCiTX4!JiMA68sKjK8SqvMu&yL;}@F`!};K6Y03-^m%<;gd{7Ea z3j--&`C#N4SH{GkQp?uIxc=ANsY@9cJm;@a+4C;lZyQK>NtJ)a_9F{7`xzX literal 3221 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 diff --git a/icons/audiosource.svg b/icons/audiosource.svg new file mode 100644 index 000000000..15aba5f6c --- /dev/null +++ b/icons/audiosource.svg @@ -0,0 +1,818 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/beam-disabled.png b/icons/beam-disabled.png index 91f3ebd4cf3c12f86bc9764952a95c64671e61de..3344af7724f5d90374bca9f72aa8ffac9479d748 100644 GIT binary patch delta 649 zcmca5IgNFKWIY=L1H-D!!h1l9rP#?cgaZg_I8r)*e9i)o$YKTtz9S&aI8~cZ8Yn1P z;u=vBoS#-wo>-L1P+nfHmzkGcoSayYs+V7sKKq@G6i|@}NReY{Nk)DVgKuI{NoJlx zP-$^?e%bcZXJ!KBjUk4V7A4oGGGvsL6j@<^Wx@fOkiMO+~Vot7*a9k?QF-qW&;6Nd0+FpuBTXcIO<(^{GBPX^faqh z>U3YFT?<3C*bYnd6#mTbd^>;sM9CxKY>G$btz6TcdwU(}9c#r??lN*4rp-Z@jaDVJGhsH`Wum3g%i3g}y5b92`~_Oj%l5pBbPP zv#nmSMId|Q@8b)C5}g;Di8Tj3ytr}gf{+`=+kV>|_&fK(Hn`A fa|Dv^*Dz=C{?yNPle7mW0R~T3KbLh*ObJZ@BWD$B literal 3290 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 YAK0OWaynA`iU0rr07*qoM6N<$f}C(U!2kdN diff --git a/icons/beam.png b/icons/beam.png index c056807fb755c42cadeaff0cac8c5a9bdb899854..a1563674fccba4e1373efcf439e93ad552e4c17c 100644 GIT binary patch delta 644 zcmV-~0(<@O3X%no8Gi-<0063Kaozv`00eVFNmK|32nc)#WQYI&010qNS#tmY4#WTe z4#WYKD-Ig~000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC00057Nklvll{+@S#ONYt9mg5%`=q`2=jCM%&g#hn z5JE1Qpbd)10e?UT;1R&h#NGkG3xGa^@R54RLcLnLNxe}4qUaNVyBVY3oBDbEt%k4Mz{Q|1qr~rn0_+I)2 e7U>Z}E|V`3%WeJA?cd)30000A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ-(@8`@RCwC#nSV_vL{SvS|1?7=OG5HdR-;DQ7#nLPiNZ>; zU~5Axl$3=9Sr8UV!oq4SSZX#F$^si@e2j(hH47g_r2ZDTy*u+}@ec1P=O1QxnE;HAeqO4wyy9oRT4tTj)g%DmFjMV~A&Hg@031k4 z|IS*Ok`w@()&Lr%I&y$4Ua0hoVijaUYHwIq;}x;W4*-BWHA?&qz^|AAFaQR?02lxR zU;qq&PjpWg%5Z`P<>|&L^010afq$BykX)m^oiW>ss<@Qtt=EgH_z4ebV+n5_K~I|X zFL>9O6tkAumR*5X7O_&+nD|8BP8@Ln*J>WcmH81F00UqE41fVJ00!V+0tD44@BWcVZhr?~2X| z)@z;wtK0+_;+_qzaO@~Smv7{00000NkvXXu0mjf8#!IN diff --git a/icons/beam.svg b/icons/beam.svg new file mode 100644 index 000000000..830514e4a --- /dev/null +++ b/icons/beam.svg @@ -0,0 +1,170 @@ + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/icons/clock.png b/icons/clock.png index da7b5763a97f3eca4c9dfdf602d467c5345a89a8..2bc896a2911e7d8d6df2937aaab2f4df63d2ebda 100644 GIT binary patch literal 1841 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

IC``-Jo`=lxDzLxBk%<5({=jLPo zwyyzpmwR-%Vx!CFZGOM09%iO<#if?p&ivgjdoC|lsg{F1+3rS%TIPM&j;mU=TP@FJ zkL2dz%i+^9ruR#8CrfXg&_4NR6HCgM*rD&n?h`KJh~Zdq8F52lgkcA{&!ol0f692? z?cJ8Z$6k)H=2G8(ydSEjrs4~}nm(8vok*W3NIOkS>Tn4xy4yz|(AF&WcJ)4KAMh0t zusDBlbJXdx(^qn*kWM`6X3l!5??eHB#&g=O3GfA{Q6^!t!Zsm*i5bzOh z%YML$!jG(lP_Biw_TLO)5Y-;;#qGR0;vYH|-^mR)Y3`6(&5-=gJ$91oHFnlECcYy+ z7L+SkL_wNEz2$++1Y-KXkRbfl&Dc*t4dh`|gUV6rNVT=Q>xVd?1yzMsLWumLMp&BA zbE?mi(=35^koapa*6h}ta4HrFTJgDoVDMvt96(OSJ**V-7~BrdKH1AvMzJA{uX|L9 zijr$8bU8%yIHpT)3v^cNCv9Y=+P|?EvHCs`5M8w5WY)1r(;uxjZ&A#SSH6v!cj?0g2lzk!UPEjig-zr=*DO@DN z+dzhjvp-$lmR}AZ=0-nTQ(ZF`C%kf8BSKh63L2mh2oiUJapK(~A680q3#!`W&og(7 zX9S1SkV@>JY48E+$lh^h(Vu(JleJ(HGHO|*iG2Rl7nlDrO>qseud5s1FS1`uwHUtU zrXOXtub94ESO=0CB~yWvaQ>i2(2#4M4)%?PON?ct7dR`H2rPo8TE*P0*;#d+D4>ST zIP92)OR`QWBB_+)TC?&5IW^K*mv@QP)QfOafol$tyHk6QAJ~g`q!U9KLyv$ z&}on>-55}ALk>nYPyFfA2{)$?_de$MF1LECH%`!Rdj%MzYn*8!Xc3gm54wJ1S>iPi z^bP`v<8dRLm(fZYd5P7v)`QML$G*R$RqaaKf(knq#9g?Lh!4y4yfRR)Vtes)8f*!qZa&KmH+utW@!CIpC1u#5 zxQA%5Al`iaseL3ASoGZ86^8!F*Y}X&7YToJV21lV&4aCk`RUta38w++cI&SY&W{9(OnX{O*H)q(*Lc%%-aAL7|BiTA=_Na7c*uUM_!(H{=`B~)9((KV zSPBEdJFErrg*aTh`e5$3UNQq9DV`)25O8n%yBJ3K+UdjJFwZt5*C_+~HI-?{b*Z-V ztFGI82j3@{GK+K>9Naw=5#8F9NyIK1*j#;E8=7B3q=H^oUm%gLW=UG5)!h< za2eC<3QttP$flP>5KHkX2=sL4x|pcA)s=?t)G5xJzw!B(`B=OcmY5D|R1- zc)37|t1qFquT{u6Qhuo=26nw62xwYbdQI1~TH6WvMYp{fB8QeZ9dnlkM~2lY`V5ci z5IN6la3l8+xkPJ69Uu577qvTithzbi&0clc7%R@~KHNyu!z)>cMA{~KAK}(FJ8`V+ zuFC!0W-0}-LB5%38ltJpE-sUh4apT4B&vXl=Vksb%>4T@HtnI1r#<91t>gY01rq|63c!>S=19~*tO;#{!8)c&+ zay}6&4e-nCtZsOE&5AGl=vz(W=Le~#IqeggfnxG=ZvAOL<`tO1Q>hTq1!fPjxb9>F z-M@WtOv~+Dc$Ba|24)E?C9;4-X$Q@pjAI-^f0;uSj&@Y8FZC8QX7@S>6$Rrv$e(xU zeQ0xkjcLHt1J&3rQe#SF=#Q^m&Mv}KrGun1>V!wG1e0%_^!!e`fm*Fs5Ns(aN=bb8 zKD<9(kR`*o9eI9ST&nzE5(Z(owM)-k*%JjMyNJ@5Q&cp5?Z9xKhxeHfl~a`E!k-8 zMD$5s4+WrWWDR};D(C>(X9tpH$i5D{nUuBU}PxgcR0UIGobn!UPe7**!Rgw_LJ!tCcmDn*&aG$4ug(4bhaJ{(jES0 zO{3XVI5ea*F_2f~mf&y3_pThe`k(ck@c&Feq!&30a1zKQ2_0Wo!nSZ$2?FVF$Sdeb zEPXf>D2OqsB-kH>-PJP($3g%ew|e!IgaVa}45k1AHbxH;5u%P9q`94t7<*COwexO#i2-d%S zR`etD{g|kj`W9D_?kZL`Au*U3+S=#;>CHs_reRzu#$R6>7~WvRmj$L3?GW76@mav$ z!iS?MGx_PTt{UNR?a8!SnKJC6O_k%dwuOKH5XKh-rst!Xsj0ge$LLy>n)V=T5>LCg z74Q&aC z+2{-DVE%iqyw;fHmBrMZwQyM=USDJi^_1jAbE>|bIn;CxdaC`AmH=eJZ^n0som_g_ zxR14QR^VL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/diamond.png b/icons/diamond.png index aa3e74a835235601445f508f404c5d0d08af06db..ea6c471365d409960987026a04b2ad5faaf3fa78 100644 GIT binary patch delta 764 zcmVMzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC0006fNkl|xYnf<}vZKIVk?^6`nJF~#d z%#1Z6av>t$B7d?Mk)4QqiO3>EEza`GM8pAD0a&(dc?Iy|oD-{>%mftS9|2q)*}4Jn zWF^5wz<}_?OoF1vV_qBB7X=^CP^42AfoVOw1mL|A`DMP zNf;y`;_zg!gx&%Y2u}t{=p`Vb@T9kdqXH5PPkKq{6p(Oua#TXAfDFQuP6>?yG73*x zCHxVPVR+Ig;iO^X3i*WxfJ+>*Rj3Fkx-)G}iyTHXnGEK2Jm50 zjx8G;vQ_AM6n+43ty_~B{U3!%MiPd<43P{ZjDH;_2}_uMAVLz9;O|I`BqYKAp(sf} zg5I$>iCBVuV}wK~!LBt%B9dU=93>G*2-hAb0d*yWACMpcB*Zf!LkuOvHzY+2B*Z%= zM-(N*KPX8QB&0JcOFT+QZ&;dmkdW@UJeeRN{RzbMQhx`HzA6XCM2y%M>0000A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ-S4l)cRCwCN*?-G!!!Qg)Q7Y(X+Y>ZDKHU^W;#yB~D0}a7 zSC&K-n(H~O*vs_=dft;H3C}nDyfYz!cO}H|j)W+FIU$ZG$ulFM&Mzgz@(T&k{B%M* zKbfH5rxG;$M1qPRPSEj#2}*t_LCX&$sQGS!p6?`N@XdrAzLAi{ljJcPpy4YCnScCk z!j(U$evVdvp8uDS&tDRD@E-|#__u^z{9nR8{x@MKPm;&OitT)g{@>SGpfY~H&Gj*7 z1!yeKS&LA0caXOZRyHS@OY!aA=(-#um%rPPAd|n}k|B?;ZAy{F*SF>I379>YAcJoo z&7kLdhf}Ee{_z}Ieq=xaB|kQzfn|;#9a2HXkB{k~;b#VwQ1El3TEz3S!)iqH^W%EN z@+%h>h~(F + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/dirup-disabled.png b/icons/dirup-disabled.png index f23fa3f683abe3a5f18474cbb18489b37d1820f4..7dd3e7bf1de8c0f9cf61d4601e202514bc62a91d 100644 GIT binary patch literal 749 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 Hl+XkK+1OWt literal 1926 zcmZWq2{hDe8-K^x8BE#9jHOT*YsfnGu|$?6hPlQbjqD?)8S^31CL@ilvSi8D+;S!Q z6CW{&=q45MC6!OM8;wlv`0jVUbICqvI1u z5z(>X0HjS3351IGpXNRcX+V&dm#_B+l@Ia?NQD}RQbD^&yFuFxRfCS-AOkd%yUQ^) z7zRv6-%vlJ^PkWl1VQluug3bHGHAvSGsw%gmsg|Ue~r|5+x&Np55vj>tD?_y1LGHUHz5pX^*c0mfn^=L!;amf5-~k<-g@DE-U}L zV!!+w=3uE|X}57Fp?f?uZ=S#L$YM~b*&AC6|Ffrrh|c>oO(OTp3HXyu1yaK$lRfd6 zy(A@6>I~sA|IRjb3(CW~(NnX7#4{B}q*djjWn_?eq>)jI=UY1e1BZ9jtsioVOzKU? z%?))7jaVNeLfGNYSTiSNMI+WsAnmgr+HcKnw7jJM`-Oq6)XVbemSv40NWZU&P4|Eba zT@2O6qb+9wI!RsgIdP@#he@wv?#2C(Xe|Gc+WFPI6BD~br<>)i#`h@ z8kO8+$_vLOH|G|OU~X#Wh(~E)>hi>lPxraGU#5v|nm;PTyQRqFmE@m+oK!h$<4i;D z_Ls%1_9x#CLi(jXQH0~i|cQ-KuVv;FI$T!4svd9eDDk91*W1edM$)a*%L z+ED9d{)w0x+i&#(^N~7r3k|ljo&imErMq`v9nQ)8d5+Nzq z4h`9e^OnQ-KXm#FCKUzW+#SxfoN^CQ^Ai(Z*OpTGg~rErLWlMzpq= zJ4--IRGg}2kqLPo7UYMNOJjlX3q;iw1Tfqu`@a$I*%V_EPS;krO0dR1&E08oDMXKm zRp@uI*SLDmVthNKsv5}i`J+xp+&wMfGFHY0?GvJ@31e*^mginn9$jH3uFb0X%LPIa zPJ^lOKwgubBr*EFI%Dw8v>Qz{(!(}e=zS{-xIVHbTnciAX*@;L6LimU_Nm?w7Xh%p zKbHlv>K`SIKzh^6t&H`SWr}JuRbW=<{hX;h_?b|O;64C-^;@Sl{Y$j=H?sv%39#V3TqH@*f8 zr)Sy?9Ug|ATU647QERRG(5DFh2i3L(gNpM{0Mf?tHW}m}9>Rsihh-&9xwm_cYwP3G zF|U$y5|b4FIG>Z-V>%HvxrC~{uD(M=jgE-uN?H`e7pBm)W5Se%*e~L=PP$%W8mw3# zzQIuSv*jBs6?DTpbwwOa3khGFwL;#;q68N@9OF(>FxN_M7YDM1Qssj>XNEPB(jA(# zrK%=`IQq8r)|czVsB?Pr1svlx#i}xk^pnjM(%+A&w`7E{%?F4n{5>MwA0K_z%HDH7KYFA9F9_QtsGdoZ)Jy95dIJ znJOquaUgU4rYvoFvg=`C!EuD$4I72Rk$FngR&M(}?hbyBSla(DH2;6M+f0No9q$6vxCbNwfbDM-|h|8UEr`)5Rn1s9yB)z p(-o=R@{-Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/error.png b/icons/error.png index 34eb2de38fe4820ea0e4b779544b96fa2d042852..31d1673356a2c7a97f1d667889a0b9f1f49eff1e 100644 GIT binary patch literal 1873 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 diff --git a/icons/error.svg b/icons/error.svg new file mode 100644 index 000000000..19397e15d --- /dev/null +++ b/icons/error.svg @@ -0,0 +1,11031 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/ff-disabled.png b/icons/ff-disabled.png index 50ecb1538508132cad5dcad3e2f76270b6485232..aa530c75f32ef67c7adde291bbad9724dd086683 100644 GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBM!3HFm*oc5!lIL8@MUQTpt6Hc~)EA|OSM zr6n2pMGU@)MJ1Ve3PGjC+4*JLPoJ3ylsASLQd*Rp%8*e~QedU8pPZkYo1a&#SDu-j znVXuDnFumYAH>rSNz6;nkIzib&x@O{F@b@BiQUu1F(jk$?5uciX-5(F^SvuIR;-w+ zyZO-{x20xYBi79fOE+3zZ z2DrAHn1zeKQSaHmg25yCN6e*l&hbZo$}uVQK3+emPi5=eUpj}r3k4kIdzqVK@qKph zdtHX0v;U@Lo_lcayduM=vyyjy?qmshXq#T}{J9td?|kDa0s*ed&v{f?59~;**E%!z zgg!`z-IOnu4S&1j4Kr6J#Ru8XlK;s1M}G4g)|992+!6iH+_?ix?4uff%f-jmZE2XD zQMaTa+xWNi*?x^?|0T8mb~Aj_uFGU(ez1JzUGZmrPo|3$aQ`vdyu$wf>_0+Gat+-F zKK|3Q-`;SK|#!JhT7+ literal 6775 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 literal 3875 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 diff --git a/icons/ff.svg b/icons/ff.svg new file mode 100644 index 000000000..feb801b45 --- /dev/null +++ b/icons/ff.svg @@ -0,0 +1,824 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/folder.png b/icons/folder.png index 8b51987b4091c97ec7fd22823a4652fae35d1766..a6dcda3a068a6b0cca9c7d40ce1f6a3bddebb23d 100644 GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1STtT*^O%9h>tL?!Q+$)Ajq0z!!xXGiT1cX|wcF z;<=xKH<;ERC|Xi2+hF@)V$d(?m!|KPE{czK%MdN_Ttd0dd47@G@>S&!iO-cIl&FjFFl;YBx2c6)i8^B1^Wu}7_N+blh@5SmjBX#Yr}dA zm!&`Ei5;B$`*X7U-~T+<%6@jQtLgyyapu-19Jx1*>-whsmIQ`6gQu&X%Q~loCIC6> B)jI$H literal 1506 zcmbtTi8C8`6#mJf>ZrPdA#rQnH^q|1k<@)v)s@PsI@+X&IGPAqb+uDPD4}|YRkSG8 z*44D6Ydf}BRH?H~+g-QOQR3Rz+1dRA_RYNS`{vE}X5P$uFW1}CRYFur6aXNB!#ep2 zn0}BVFabteJ#ZAzVG=ed0RS;R_K%OeH<}!dx3|A9PnCyIlu~4KXty)2XOv|egqq3oXB-n0C;LDfIT$g8 z;GQqb5C_g7|yIj20t+y9lIK+ni{sjKzGTF^Zw28Ci$Q*h|RP$)qh z3T0q@lm6C12RaE`U?!*wJThLm7-xY8%1EH0BYn=Ny5wfwWwY6tgi|!%x|5{H%ea_J z&6!bQ@iZSa%_jmEBPuYD91#{oSm};5{CjV|9b5w%AbgyW)29m;5tI5s!~}*lG&s&U zqy=RF281ERfMNhf9b?}Exq4rmh~O%QBHR=Mji(9H1ks3cPGUyTEt|p=wRL5Aw~`|z z!40Vm4;#L}*B`HGrV=EhW`4WdJH%bfGP}7BDb*O0zvQtDxAV30OUX*sSv$P$@u_q! zT>p+n6J{`AHP5?lP;xFzO73RYy}5hgz1q3Tx#2f!3yO>Ew3$W*2Go-^?x#aHNQvlt@XkSE!K;Q5i{@ z!M}j*@6h?2T(ld5k`*FOReUR}rVuSBClxAXW|rhN$$+&vO;tDXt`=K7uo|{8)i*V3 z`EowIKXRaDpi%d||K_7J9h&ut0pl#u-8Y4Gp%&MkgpvIgke2fnqvll?nX!6t4im?w z0!FCqflnHn_m`bmxE7uLN+pM-Rq^X(yDi-VxLawd-CLRLd?)#*hFfj=30qxEwR+FS z%RwE)uFqF5vfM3+<1vpfZXcs!sLT{7)= z=Os7SM$NEY3iYiAE10q}GUL~s{_)&2p;>3UDzf`%O3EsEFL;Zh@Pj$kba!WdA#-KU z0Zyyr5Az4s_S1m`kTmC)tc4052Svd8dH|5BC3q+X09*S4{u2PQF#z*;08ZQjK!I2o z&UFC*;)HWT`zKE`$fRV;GNJkkAFow73C-vfPAqgs&c`X-aMT-DzY_rBw8feN8iX(< z(r`p`aaN2Lr6vSB>InWX(48ThWpNw#A+y1c!7gOhI*48bnbi%VW72YX7O0Y<6ra6DThEp@I?h!LA!tNE8Cg!=EO{XxsFxm3K z4F*4ES=S7hWOshu9=*{vN;dj$od>EK@j@85<=c+bHoCS5ZV%v`J)It%#Ap5m(i3g^ diff --git a/icons/folder.svg b/icons/folder.svg new file mode 100644 index 000000000..b9adcd958 --- /dev/null +++ b/icons/folder.svg @@ -0,0 +1,11032 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/hand-disabled.png b/icons/hand-disabled.png index ec80df67acecd73ffcb9bfe150cb0d7c03aea76e..0e115c99c7ef227fb1cb79fa398b2ef52ede2280 100644 GIT binary patch literal 1445 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/imagesource.png b/icons/imagesource.png index 734a16657201e105f3b97110001e88341c204869..794e91b69ae044aa8947f3df8ae93b6405b6a28d 100644 GIT binary patch literal 1074 zcmV-21kL-2P)VJ>fSXD@eYYiTc3VQyz{Uuk1+ZeE`# zkN^M!P)S5VRCt{2n>|kyQ51%s1IlL*{E9}60WlZ}1qDVLqr?w15ecB3A@NVxSljR) zh>1TyYC8%ODNKmHC?>{6qd=rUgRjM%B?Do1X7>(z$K8FJ-Rz!w?>X<>nS0Ki8E8=7 zSmBGL!@yHu8t4w@(ZR9~yaMLT><{b~;2H2FkYm;6g_%8v-2%J=dV;xBUDnKO1fVJQ zW4#0qu~?f*S=9q|FTkNB12el=4Mz?NNgqo6U-vVhAwXycLemf+v;(1O2oTzV&?M#o zA(7Mri~{{YC$I^u083`Jmcfk8yvVBn{TbU8C9eW>q_pew9Vo8?Y^JpPAyhPr+}m; zT#{017x@%$4OpzqEr*${1FwDhNTQM%a0fV_!tSc1G;)+l8)n6 zpR>4&@G9`e%zk9yP>5=J}X&Cp^$^fqR@4yvFv(d`rO{j9XWR@tYRnjDIm;GmH z8}KMvp}YtsK+!Bw(iz-QPs$y-aYdI`3?Vl}c4di@ELtTVlYZIl1;%`w2z_5*NYV=M z1(+aRk+qjAlD?bS`$`-LEdancAlyDerQDYE&CI@*+b|D%f^GN(5AHzDNa`xLVIBm? zicXveWzFhZ5&+;dZs|--tqB0`!kW6~s6_z)Zbln8iPWk920V~-G|8}51pv3YOeY!D zvH$>yrFX3hkVr#-&<=#AAwXycLKA;ysN{3?wMOARh`OHv4FO``GkNs%KVc`(^b literal 12280 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + diff --git a/icons/magnet-disabled.png b/icons/magnet-disabled.png index 4f19588b282a30bf98e5c84fb697a591f25727e3..0a2b0522e3b605bb0e8ccc592364dd1d4cdce9cf 100644 GIT binary patch delta 1283 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 q1KRtvY3H^?+6GpPSxg<1`0}+ zxJHx&=ckpFCl;kLl$V$5W#(lUCnpx9>g5-u&wghk1ym#gQsh`#l96A;;G0-fl9{Iv zR9c*!U$*`9nVCR&V~8Q8MalK43>hUQ1y=g{$@#gt`FX{9<(b);xv43ci6HazK|KAC z#Ju$U_{`+|ytw%q6Mzm~>gnPbQZeW4tk{mwP?6*Hr!}1~cYRPkwCIZ_Z{Cz;Ula6C zy1YmUTyVwvS%c^d{h7DgS-uI08s2cukY|x(othG0CG;i1?_u+|#Cn#q4gwJ~eX^1# z9DDWf&Ca@%+y2rIz(O&dl6^8b8|0PCC=#2yqb&0 znoowMkD>X%`2z+9k1TvtZ%IBAcq?Mgu${q}>qv!kg`dkmJ%eR4fCkG}i0-hgZ~tlV zL2yH~%RWsZb+Pq~cUZqLOn)k2#IQzqqW$M%Cv+QDonyGiu1HK{$-5NRa(BO zCXMUCy`R?`k7}klA4pdER6A|I)`C@^8|&>J%o5qmnBW`cH)D$Oz2GJOb@~P6%hmW5 zl-xVF-TSMV=G~yaxn?QXf>q^AtAl;+v0vMseRBCh)m`q5v6^Y$S7-UJl3(o{nl42c3+X$v-s}Qm0Azt&d+uGo}1U_yJgy{Dvxzfc$n+oPgPyMN}TERopieb)xahz zw-Dw#{9n3H+?=%V9;001AJ$de5q@t>GizCQ@wQi=s{6gFiv5EB7ME}VQTOEnv8~Sq zJMXiFSSG4(5YCpm#?(K(&H1zdWpVr4YqQ0}Q|JuP&%==i`jwR;M?H9(|SZB}GmzOcSHM_W%yI^gi z%@fHQ$%3sH%{gp*rW8xLNZ#%;X5Vpla`RK;K!()}KPRUbbbnDOnBP$k^lHcNH_Y#j zs=d)}I9mJcg>wwU>u1v=!;BK1P7$Bv6}s;2(WZTy3NB^rulSM}6qL+e(=EHX_nUsu zF&Tqf>pwh6DD)RmFuXX$VyY_FtT0Rjm|D~Xq-NU32Va%1uy$18e*4JqVYmZ^3LF}@GHiTqZzZ7b-_!T0gZsf> z>jg|FgcmQid8E4W`Q7`~4c^*(6+%B0#FTlTbN5RLGyP{0?a`Yz^?K$eV9Cee>FVdQ I&MBb@00U@fe*gdg delta 1670 zcmV;126_313yckr8Gi%-0001Bxm5rF010qNS#tmY3ljhU3ljkVnw%H_00S6lLqkwd zXm50Hb7*gHAW1_*AaHVTW@&6?004N}V_;yO;OOGy$|S(RP*7A-A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ;?ny*JRCwC#mw!JH$tY{+XT{WTR8b$W#eXkA6Hlc48@qfJFSRayl{rq>odGoR#^ey#Vye@VTm#2f;a+v)2vaA&*7q zTGh&f;F`#K%sOX)3CY^&m@vU1&NIg={^Bm@ImCoxe5cGi;RFzqd;WWeWPgKP*Y5u7 z9CT2=Kn75+myetA{W@tCk*icTiMS=78UP+%^8ucTnlQzlI|19Ra{u2a-cK-VL1Wy^M6HnuYZ}cooFduOGKx&aCx&Q-Z;C3b5kpQE#EHXxZF}QZdmKz z6y6t=03*URsTGzMUdDCH$;d^i^G*uyNa;yXUX7lLeou34YDWhE;0kYDui0;K1pw&4 zbB%Y;QcVG96@6AC>lS?mc~^jAELv2mWi8bdfYQY?r;+uDe$~@ojek{(O0}G&nlc9p zVsxUKkvkN=Mo$M%qr8Gt`s#%5qVif^`Vr7@7ZCygL{Rkb1wta~w@_KH;bnEa0XX^K zGv4A0;vbsBm41fVJ00zJS7ytwC9{~Iv07y|J54ZYv Q3IG5A07*qoM6N<$f + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + + + + diff --git a/icons/next-disabled.png b/icons/next-disabled.png index 49e21fe2046cc2f6e3d116c554d3fcc924eda2fe..1e4ad364d4520e80d021a642552dca8df7f4cc07 100644 GIT binary patch literal 818 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 literal 3533 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 LZ+2&|PvU<7?Qw!I diff --git a/icons/next.svg b/icons/next.svg new file mode 100644 index 000000000..799097592 --- /dev/null +++ b/icons/next.svg @@ -0,0 +1,824 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/pause-disabled.png b/icons/pause-disabled.png index 75046c8efcd676f638278d46573b2108e9a8b8b3..1f2b0e3c07ef2e1fdfda7b81e3ed9c2e455e8f93 100644 GIT binary patch literal 459 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1S* zyWY9p)3uaIkp1aVbo*zD-={yO+pgZ#ovz#;=KQVy%&*&wd!j>x7vz6gcJ=O}Sq#zt z&)za$`%dgC%MWh01?(4i9QYSVHpn>`GuSqyF;p>}W%$A{i}3}c3G)T!415Z<%wl-& zmLGLjcNM3BY1QRdd4awShWGiWe4BOM{L0-$m+RHkJtwKWoMRVSY~kmrBrXW_G=rzB KpUXO@geCwCQ>`cf literal 3311 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 TW7yUM3`_=3S3j3^P6YW zV3x>qb`A*0$S=t+&d4uN@N{-oC@9KL%gjk-V5qp2oRBc@!HY*vPN^I?5D*X&^hEB7 zgruP4(gSt#8haaOHiCen;m#cg3>6NvgV_4^`coN24U7zGb{{)%;=q9e1(DY;9z8j= z(d59an1GN&K!JwF#)BHFTP=XPA96D@J6BbDI&v~IC-X2fH+uw?f!T~8cA3WnW1u)t zjj+FGmMc&Vb8~T>V`^Ypm0M@i!lg@>HYI!21+8)_NGQs=vWt+%m?J64+@o8ZdU3iXeipM4)se;BW`KzW1n zh0qUO0jn%?rM+51d(C+xeN)cKTUwbkpG*%r4Qti!9b*^}L6)lJh?#aY8E%~{J+`Ahv{^@a1L z<;(9U>}UD^r{ULuPDk(N^41uhTFG-FisG4~qJpu4#>Qp-cbZwYx!hf{;Yr&R)0O6z zEsb=Hj5j|^i$9Zke)IYD8aG0Itc%#KvbrSn=4`INrzWk6HSO6NR~r0U-t3j>Rg?L- zQ?s>m>~Cq_4ZTvkD}3wvjsM@d%=X-@{(r8N{o4;by)*xA-gn+}Ms?M`pG`}u?|s^qJKM)B|7O;v+~0hw=l(9={myc?e$M~qX3O?ExlDVt zx|*Y&uY;eTQA&co<>GcGwMKvcyn5aA{-Hf<-P~W7f1UsMzn+1Yf#2lUw2!gCjH8h35#-CjP^HSi z(9q1l@bf>Ae#yX4YQVtoDuIE)Y6b&?c>bjLqi(=lSLNyA7*cWT&Gmzv3<^9f2VE}J zpWetW-(_{Vq2N^0O~yZ2GZvr)(t*JTSWp}+^sxj~!Fo;x dhX4PW8U9^jXF0P!e>MXUc)I$ztaD0e0s!%B#Jd0h diff --git a/icons/pause.svg b/icons/pause.svg new file mode 100644 index 000000000..77cbdbaa6 --- /dev/null +++ b/icons/pause.svg @@ -0,0 +1,824 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/play-disabled.png b/icons/play-disabled.png index c135ad1c9ef46ecbe984f1917faa43f1658b1cd7..04204e3eb3d7a18445190c4ef1f3835898c92e16 100644 GIT binary patch literal 734 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 Z_ks=SHz@0=5Un+oc^TDk&*B!raPsDYp#| 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/prev-disabled.png b/icons/prev-disabled.png index db5a44fe119a49d77e7265cb1799dd7d5cfe4eba..179e4e8304a633ce031f403cd8aedfb6a5a92345 100644 GIT binary patch literal 824 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1Sq83b+2;JbU(S>$%UL%F5HePro~N=4nR( z7BGtOo??9B%(h0x3+v^58y7B-=RKP}@x9#!{x2(@*)t!TwD0K+Z?Oe&e~KSGv-cH0 zuyHy^+BQ}j*0Sd%KXo!^WPNu#7Q^;uf5ofxW}a$q!_9IZntpb(-!R`?y>i?7s1ruN zX68oDxXJv0bM@P6whAvbo^WiKdUIOK%)3l{4ZArHSFNloVkua@?*(7O?M~;(^$mWU z3297nO#Qb$-IQcJ^Mo)#6z$^|l(D3TE_coUA znZ<&xKat*8Q6SK;O6|Uc4U5ORlirUM54b&4JTSA_*W89>hQ*DN#f6NozJH!SYuoGA z)3ORLl?#|+s&3>9ZTAkiq*>r{{5{Kc4TYC76|6lrf7diuOH4_bcNbV>Pv=vD8zqm~OFov>tm$nJ$-=PVRva@aX%p)r%g%sC5#nf@g9&Qbg+cTzAR zu<>%l$Is#CJ~Un}Zi`$sUxslRFt9zOf}ip{*DjG?e(Sto!ilTVZx`id&#_9kVDb|$ zk@ocR+id>R`K0Ws#f5A>MPl-hM8I-=#{KJe7O2eHv?~snKp8w;{an^LB{Ts5kyvH) literal 6046 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 diff --git a/icons/prev.png b/icons/prev.png index 25518f45d886b1e461f535f3da63ecb30d5cf2b2..c56efc0cf9d1efa1d42eb22d395546bba52abc18 100644 GIT binary patch literal 881 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1Sdm`L?g}RLzF7=Vn)@ojdntud&UF5Ur_ROM_O1X#Gv9zVU6#Tl2f;x4eDWw&nZH zd0YQp`WAh=JXiiy@A4i-9%lYVUF}(7jlz@cp75pd-c@{{WpL~9#OO(CL67rJNSwA< zt?vJQ_s5=!?4)Xz3YYgMndfY-H83sfW2`p5J!zxv?c@Ws3GVW-=ayvUc)exFIhW&o z=v&wWwgQEPw>?(*^)WuYagW)D;kM9jzNJ}PPchtwWW_3h!3e@~_7+K9w4);{@G&?T8rEnXmeBQlF8Ac0%w^jm%no63v|)|6-80;G%+ zWOv$5DPZ<`@=e5vS7Yk!V2;PuwI9W*GtF9u8(PrldB(!~=61W+d|5Ves^CeCc?+S80jBBooi)T{W6Y z{}eb^v#6eBbZ-a`lxkM^QlRwGxIk(KQ=NO(Q=vMm$zQxLi5RfebYAmby7BSKCC?88 zChXHZTbJ>rM(?F|f!GeVKRH3W#e3reJT@(fe4z4SW9HwfBD)t({K99!cSqZlO{2zD zHPiEw=mVh-dyhy&6}qdxVLeWjHpo6YGQ?`6@(ci8+G=l^SPgg&ebxsLQ E0Cx6n#Q*>R literal 3527 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 ZfpePg$!ax}%g_rZusCdG`p}pV`yXsNgeU+2 diff --git a/icons/prev.svg b/icons/prev.svg new file mode 100644 index 000000000..2f84badf0 --- /dev/null +++ b/icons/prev.svg @@ -0,0 +1,824 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/razor-disabled.png b/icons/razor-disabled.png index 8e69b117dbf5030d5d70d9d1842037d1911869c8..9ac9298a3af5b23ea810cf106427e97f6dcd2bf4 100644 GIT binary patch delta 680 zcmdlhvXym$WIY=L1H-D!!h1l9rP#?cgaZg_I8r)*e9i)o$YKTtz9S&aI8~cZ8Yn1P z;u=vBoS#-wo>-L1P+nfHmzkGcoSayYs+V7sKKq@G6i|@}NReY{Nk)DVgKuI{NoJlx zP-$^?e%bcZXJ!KBjUk4V7A4oGGGvsL6j@<^Wx@fOkiMOyzJ@X7*a9k?Tmwdha3dj_Gdcqw!Gl{_~`fknO)+dhJqf) zowqL&%M8E$PQp6=5aWyu|NmHTmKBpZUI;?zQ#cw{`88@kkU8N~FUsrBw};tZY18xx ze@y?|f3&jvFd^{GpBt0fm7bsOS@h=kDc55b<@;5ni$5LMQ7&J=e22mOKt(ODzOfox z_Ok=rAJmlC8A9hW6el=7^7YI;AXlLytk3y=erPGTPVg(Qm)k!1ehNKQo-MS^)r;B8 z_vG}J8NN)mN2|W_hlDn08q_a-adPpD_#%C!-7_3QZJEPt*RB?6+s9Zf_%kTheXkf( z*#W=M_?PR|zcU{-D`dFlJN5bvrm6GJ?ABUoeLp;h*;4nU^AX7jyVR>yUY+T*W!Wx! zG(uph<*9}TOI{xN=4_Jo{a~Glnfj>)gH_+YTKF`woLze)?7*I8i3i2|Uf6DHtk*cZ zmW@SSeC|_`!&e11E{`}8;<%XcA^Wu4!ii_tx@=w9bZ+~2SaN9>Traa?KWJ{dzPd<6 zEOhVN%!LwC?w7res{Xc~^UE%QX-!BebI$)mtsbwqRs>I5d{g<_Bd;}GKXVKjb+ix2 z$hWR#jd;u!!M))a?*_4iUg-qg15)M(q8b!U7n>gd$I5X@ZTT-%{gc)19rOn#5e83J KKbLh*2~7ai#TYpN literal 2621 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 diff --git a/icons/razor.png b/icons/razor.png index 3a53fa62d37831fbff2d077e708ff3046e8fe773..7234af9e13c30461bfe698d045708429a34ef218 100644 GIT binary patch delta 766 zcmZqY>SmiDSRtvY3H^?+6GpPSxg<1`0}+ zxJHx&=ckpFCl;kLl$V$5W#(lUCnpx9>g5-u&wghk1ym#gQsh`#l96A;;G0-fl9{Iv zR9c*!U$*`9nVCR&V~8Q8MalK43>hUQ1y=g{$@#gt`FX{9<(b);xv43ci6HazK|KAC z#Ju$U_{`+|ytw%q6BrnnG(BA$Ln`LHow3(XI#8f>|3-#jq1_9)QyYwgraV-2(pvIC z%!YU3rK5XXq`DLuryNpp?b@PuV*+2!l7%;3cj#1npR{+M^247h=GW?P6hHg%Pe$LO z?=c9Sb5dehb&LI5!}SAQOBe9;G{zqY7t~bYsb^R->(r_9ydQQt|2(aK>qEe~KkJ-# zz7e0=%coy|{`$qY5!xG$@oo@H=#@^;Js_3M{O-`{9@XY~<_9DVL?+rZtlGtv!))zf zzI?_VHjx9{;qc3+iZ*zx{f=g)kjX(Q!SkLwz zS=aDZEU97tPo>IS-e^PDUN#o>@~G2||K?<+Zs>A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ-X-PyuRCwC#*?&DR1W^>m@&C-e48;(VX()uKi4esmI<1eO z@Bt*EqN4X5)S^^MHVPy}bc&5qXA_Bx5JdJ-tl3zJ;@&B4vFA)N)w$=Fx#!+_i$vIn zF@OOKU;qOczyN~|r~6(QTgA<2gHI-aIxCJtY;nabdrmnW&H%V%A5j0XBbRtlEYxty>1g?P z#lHab;V{^p5SnoUocGs@ORb7W0NT7d*bOGZlC%M}{Y zsdD9Vjawl!rH*6XyK?0^P*U{3ns@x7ErjOf8*@buB%bRyV-i^O%ofANK9G2CCC8kw z?U@^qlm|3ul-P<{9 diff --git a/icons/razor.svg b/icons/razor.svg new file mode 100644 index 000000000..9fe5aa1b4 --- /dev/null +++ b/icons/razor.svg @@ -0,0 +1,821 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/record-disabled.png b/icons/record-disabled.png index 9510d9c8c3b6f85c2cb979285f8678684aa90ffd..fb76cd5cb4fb8bfff4fe11092aa7dac10cd378cc 100644 GIT binary patch delta 735 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 delta 1310 zcmV+(1>yRx2Br#-8Gi%-0001Bxm5rF010qNS#tmY3ljhU3ljkVnw%H_00S6lLqkwd zXm50Hb7*gHAW1_*AaHVTW@&6?004N}V_;yO;OOGy$|S(RP*7A-A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ-h)G02RCwC#nSZ@b!cY{)|23i@7#(#qEsG|^@CJqreIOpe zPP*f+51=FQ5ugk@2yv7!DPIXN{2gE<^xk{g;K%vjwLRx|PkYZt>k*sP78F1M6hHwK zKminB!`gPbtAI;f;2bA70Pux(wD624j2vvyb_J|+#8n!x&cN25-Q`(cbINs^GJj+? zEdZZQny6_L2Xpsj_Gqde%Si(S?9)bl(d6F^19zRGr-ec~s?(pdzX@6*)jj1W=L#_#yyb z{t`~HBLJ9T_t$qs1CjlK9H1)#=zq!q+9H6q9H1crXvj~2Bo$9^Bu~XdJUH+FKF&Ri z%5i`f$8vmzw5XO~XKS6$(j3he ztH?UXE1gex$D*x0&*^i00awfM{1CwBay)-@8P7faU!VXApa2S>01EK$0T;dp0K&X| U+6nKW&;S4c07*qoM6N<$g86(sU;qFB diff --git a/icons/record.svg b/icons/record.svg new file mode 100644 index 000000000..a69eb2141 --- /dev/null +++ b/icons/record.svg @@ -0,0 +1,818 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/rew-disabled.png b/icons/rew-disabled.png index 216e22fcfa65528d0e7c4e82644bd43825ceff5a..0b07237e1b9641a95f3cd754a902ff765a50a0f6 100644 GIT binary patch literal 783 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1S>1#F8!Iv{cky;=FE-)EFknD ze$g!^?o*Ym{JokbAx-#!Dk-%8Vtt5 z9|S5)o>mHN%x0I3R#adU1)AgDSp)cNA#&9HrR#o#o2O2Au z+pTFd@7bfL@$a8lZ#jLA)xSPDt$gnjhI{|o%KYDTuHL`!!Mr`{>;4@Ju9MAZ5PmKd z^Ox7)yUu~z_e+*AU;;^{e*J+9%E4;{BOrhPPB||HHTZO$rbl`~Uy| literal 6830 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 mvr8Z(6ZZf6mav4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1SanIEu9Izc01Ap|y4D zg4U&uxkr_5bS_$X#7|K4NQu}rO_qrbLIOG}nXa=HI_7eUZCiBF-eH5-?2s<~qp^or zZ{B(H=FFagbK$WYi|;=++?=0w&uMAU$`GxoUQ0j4FS^5IY|Va$DXpRTfOtaWrQdhn z3Dj?6nQ_x(1H+lEHlJcHE!uAH&2%P*t%6HN`tysqGR6zL_j~G0n|YTZj`aj%Ue)i( zXBmvGd2HCyta)xvDLHl7eyT^ESOiO7iHz0Tx9_I{B^mB8KWkiadgT;*E5@`kkqV|c zoqzl7mV9zgJ$puvA^+E@WY3rHO_-UovcrmgGz%xBsY_nD_ITx!*b`6XceA)kiGA$_1Pe=Or7q*XN|4IKvXdE@$v!-7?+bdPcR$J@p#pWWlF z{7%hNJo%lmHmmH6kjG2^qPKSzr~Uu*O?`Ly^e@6Ycx{;K*!g}xd+UFzVnWKKIEL`X z_l(YAd;UgR=}$6~*t0Y|TFx-R^U|*E`=7K=THa{Sv+h8cO6`fa_xS&LL6br1{7tM! X6m*0_${Q8~6E1_NtDnm{r-UW|c}8lL literal 3862 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/ripple-disabled.png b/icons/ripple-disabled.png index 79cc89bb264b813e5fafbdc0c6308f3a347224af..61a74950a202681a9cdaba5b1773216620958188 100644 GIT binary patch delta 850 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + diff --git a/icons/rolling-disabled.png b/icons/rolling-disabled.png index cbcb2413263f9d22e89b121d2f9db72c3cd8eddf..e720a271092a0c8515267839f89c3a6921d4f300 100644 GIT binary patch delta 965 zcmV;$13LVf9MA`l8Gi-<0063Kaozv`00eVFNmK|32nc)#WQYI&010qNS#tmY4#WTe z4#WYKD-Ig~000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC0008+Nkl){|f7BQu{6QjA3ZSE|CHbj{{0^ua1?7H6LJ>*@ z(BxlWOWr&US)uEUWFiy_u&>E`q!eLmA!JPce?s9ObxVL2C-1Q(!die1B=2!c1c6Q^ z@39ua{C_UcHsnX(W=RJ`C?5npS}a2SH0aUvLdZGyrs%qeyfttnX=C9an0mRH8Y%yv z(pg|%MM&K{E2lvfVTw(JgMhkGQ0}CUX6-sa2`nOv0_w$LMB;HNXdz@2Vd$JoK7%;t z9ulzMh;dL3UI`jSxG$JzB-2tjP=vXNBo|3U{(k^fhb~e366SY-8WFC53oEAq?={9I zc6TrWYY`@_j>A0Wz__VXA&t8L#v03G#_BXGYDX%1uo97yMD(;;} z>s=+@RNT(*2XtP5=trO}{(z_+pf5cyfyb;w>;cEXxpVF?hBGj(_Xiwn%)YkaRqTsc z=YRbHCIM3U17cwC2be^-FMog;ZSx1jqBZ`2SY&?y*&mSo0oflAiR=#``vZXN4*;@1 z;2QZ6xLMKx5wbrZ`vW$R{Q+fn?W+jcAJ7tiKoM66e{1{!UjwhL(Kdg;CGc6fmijxz zPLg>>GJiK1uthc(k+GFGF!pO;P*R-z0X{LCGI#xScEt5_IR`G9^ap6%LyhaF+!^pe nkL!02=Ul%DQ`El3Z5{prE|w#R*e^sf00000NkvXXu0mjfK{t~J literal 3609 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 diff --git a/icons/rolling.png b/icons/rolling.png index ace97caadfca20d40ab8edb5beab0e79d1f48216..ffc6f510946b5317cf323dbac978ad1d0a09fbd6 100644 GIT binary patch delta 1060 zcmV+<1l#+K39bl`8Gi-<0063Kaozv`00eVFNmK|32nc)#WQYI&010qNS#tmY4#WTe z4#WYKD-Ig~000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC0009_Nklxov^G&FjE$cK z=U%z@?%kbpc7H=)IbX8P+1Z&hU(Vmz4>IaOk{#yQBQ=6gN?HOwNZOS2RMNS+9dg7y zFKJEEW{ABcX)@Jc5`&U104ucuiteJgI?NCMBY2XELqVLrI)$B4AJQVbf)OW-o_pRTAX|b10-|_ zI0DIc&_ja3kxIUUE(x7QP~kaB5cE!gX?90}=Rk6p(X(syFM@3+VPMNH+6LQ7Lg9I( z@OBkRLgD^e21#2*?PfL=;iHkmTH#5s>EmY8Xn*pgI`l4ZP)TU|m|l7t3?$qRj;b&Q zEK70^<5);K4Xn}N9i_4!5FE_mBVinP=&(!0BL1tn>w@O02t|@`SyJOCN=c`HOAgbh z+o`)I7(s%OSZ;UttwQwGJgO?}Bw@qMJPT(O%jSbrpa(8}K>k@W#&eL&U+WPLy)vVT5+tPcRPJ^;x203hoFvOWOF`hctt$oha` zUma8uvOb_C`hcQQ2n*{T+@w e5wr;zb?^`D2cRSA zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ+?@2^KRCwC#nSa3&gCGnO-g5qyy_ zLnh62N*PAXs}3xcRp_$?%lAiE+KScy33Kfj#;yRdb_`3k;L<|WuN3=py`XI~a_5^- z4xs@EwN40u7=<^aH6s84=nLoz=nLoz=nLoz=nLoz=nLoz2tWV=5TMPqX!P&<`vCjq VnMjHQ`&$42002ovPDHLkV1kX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + + + diff --git a/icons/sequence.png b/icons/sequence.png index b09483a06d8237fc5ed9b462b60c859d977453b7..6585a67622f44c9dc9638f9549b1dd3e852d53ef 100644 GIT binary patch literal 545 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1S*>77KtpwY zgzb31e@1zq=&|jG_KAL5TOh)|Ky1M=MwkIL+CFE^z6;*xa+m+Mc0;6Px#s`Kt9?h@ R_5)*r!PC{xWt~$(697Lp)p-B_ literal 1598 zcmZ`&eKga19R4yZ%_Jd{%6p_CFXi<%Yg^f5TQkWuEDI4vS)$D5cPZ4V6k#!x5=tU< zTh{7&ONF9aBJW9*msCQtJKb~tx##pb=kq+zdCuqg{P8{CPb!tXLlvtF4 z!5}x<;h$PzQ6F|YV=MRNGa3|P7(qS*gAQ@ALA!$Ex2Gl*78e&Mu}EB6>9(k#Xku7o zWm1U$LGCUrcUK@W3?U!xSiVGF{uh3%gwNDHb%7hfyq1_lCz{OQ$|~wxm93TBEG^8T zr6w>4K#Gt81j7NGA?~-o6jLrC*{FIQKa{(U_og1!N){q8R}#bb$#%?$Gnm$0<({=X z%eOqf{CfG!Yjo$8$^@2LNbj@4y65#%$+l;w6)zaQS{3Or4tJrsc*Z3kF`ZgA?J;c#dlA1KLw@a80`Sa&EknSo5uY0)&$4%O09_fxmEJxu9_lxpyAFW($WIluXueY>L# z+QznOI5^;GP-|6dh1qNR_Zxde#$_>HodSfkIiu8X^U2%(9M3VmEu))X+6f~v4{Qv_ zyxH*9t0Uo__w9;G**IQ6tTL75t;T$sM4rl#R*74Q*+=8Wvq{D2_*Hi-XKT=hW@|GI z%E%SbJ|cGQyOapQ&MoZDuv-!H%ggfSV@2bRBCBv21UVk(t_#Ji=N_vkj(NUsF&0WW z+!usT?mH@s{iU%9Egk~j*olr_PjTYF-X2z^>AWyVydo}clC$7D8>_w5F2P3nV{|NO zq8|h2=FPRwwNA+rfhth5o6DN=lOK*g%Z=s%K)i|kpdbKdWpe%i0A~{bqf7vtvH{R$ zX9U!52SBlah{w{8y!qH&d%$zACU5G!zk6YU8&-)B(`IS%(xlJuZfaQ~t_-r|x_-DK zAm8JRcVm^-R*%ru;>W1DuUB(JQS7@NDfI z7-0>azoQ45X1j|-Qfr*1w$o;K_{Ed;22{7OqO zR&DqsJs<41=Ju)f1RK^!HNoWB#-+#JX>7%7Yd=r~IJC_{-jfk{O_961wZhH%BaM12 z#QK3Q3LLO=#wWGfpI$XXKSO{ug%3Z}P!fw9g41rvpFjLyE!1xRqFT5T3}=T<4km563C%!7SCfRxsH<*Il?y$j*XEC2(gi&E<;6%2EFXfFEaA>hmZuFl($?OTc2_`Sgfy8I4?CZRvn7(T}2Ymd_yXfVKCku}QMP+^0fJX4)29)PF zl6Iz?%v-d60bin#bWQ-bx9K8KP+H+C2jxV)wuovOJRNOTq4BHO;=WIWnHhM|_~5+s szvziXy*>;z3jXh+pWFTq1(bnSpi-h*#oUSMl>ci$B#`kpwlS0b0Zv$>H~;_u diff --git a/icons/sequence.svg b/icons/sequence.svg new file mode 100644 index 000000000..49390f8fb --- /dev/null +++ b/icons/sequence.svg @@ -0,0 +1,11047 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + diff --git a/icons/slide-disabled.png b/icons/slide-disabled.png index 6bdb6f879421acd1a9ab99225ada1bf206aa2149..fd832fcb548af4913b1ca90f5bf58440d2851ec8 100644 GIT binary patch delta 854 zcmZn`e#ACGvYw5Bfnil<;XNS5Qtadz!T|&|94Q?@K4*bPWHAE+-w_aIoT|+y4HT3t zag8Vm&QB{TPb^AhC@(M9%goCzPEIUH)ypqRpZ(583aCf~q{y+fBqP6w!8fs}Br{JT zsI)jczij*IGc$qm#t=hFi<0Y888S*r3as??lk;hE&XXJNuyj6$g=H_3IC@mNp6;4)oda@YVnS=?z7f zG~6vt?vnDoW+3-%>&;7-_GK=goAtb0QE~G7+V{6#ZmHcc!9zvJ*sZNzsO%hP0hbJO zwQQ={0owv~CA}%zV|PhyF5uepYURfLiwkcDub!5}5%{!XQIu*MkHV98QaQ`{BoEj- zaw%+Uys?BKNxH)qompXFMY z=XOp%U|s*9CAUDbfJJ9+@%gvg4lg*Xf7N-}JimtTudcReGKlV3P^NIe34zLy7edeP|WAm3{tyI zWUInH@#oC_zvu>IEZ+PkaZ6K2&5D&5Z)ZOhxH7k(_rCD8#>Cu!Eotxh zSAEl4z+LNPVZMg@tflSj`u4W%j^_o$&h5N7PkB!9?;B|Xy=R?I+Z-@%S$Xl6jf9%h zF@bAJMo}J0n;2)YZCv*3poMS_=R?LHITtz4sIUDiQT+LVp=j7a?QM%c%rPy{RI*=d zweZ5M>8}*iSz{t+xA*;5n=W7Bd%LdZIfJ~t|HYS2vsjzWNLLRc2Sz>G36)sugkAGj|OZr Q2PS9+Pgg&ebxsLQ02bYN`2YX_ literal 2435 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 diff --git a/icons/slide.svg b/icons/slide.svg new file mode 100644 index 000000000..1c03d11a5 --- /dev/null +++ b/icons/slide.svg @@ -0,0 +1,11051 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + + diff --git a/icons/slip-disabled.png b/icons/slip-disabled.png index 57012f76fef9c4adff5edbc2b9bd06f871a3282e..d7d0169aa4b1772df0608123487ee0b87ae8ec37 100644 GIT binary patch delta 870 zcmca5_K9tRWIY=L1H-D!!h1l9rP#?cgaZg_I8r)*e9i)o$YKTtz9S&aI8~cZ8Yn1P z;u=vBoS#-wo>-L1P+nfHmzkGcoSayYs+V7sKKq@G6i|@}NReY{Nk)DVgKuI{NoJlx zP-$^?e%bcZXJ!KBjUk4V7A4oGGGvsL6j@<^Wx@fOkiMOn&9c;7*a9k?d*ej!iEA4_jMj#n${4)sbUeZhk9gzHR%=S0e zo$d~??kt9FPc51481nyDzqfX1*loxx)0i-i_k-1kXBRfF6h5<=F|ASD>HIQ3gY#)$ z48HYfEhu4Fx{}F@Jzy3RbB*ZyRdS5)8>eq6s=pw&Mo##*^+MYNXByQX9Q^uS+xtMu z9L80@n0~O#xzv?g-w=La=_)z(FXc=zyXrLLkUkiGxF z^p?bTF}L-qJPo)DR&Q4QDJ}RjSN8bUooNZ2YK(e6`)^E&k8J+5qyAT70Ov)fV}AFH zx3sLddV9v6_usv?o;bT}y1-ZV7jqanPrhfqXq>pbp;PUB=cEmx2aZhsUgBl(D_Uw%i5kvc&b2byNhmt(x(-xu8U~2B-~KasS=b~tix+q!kTr9 z_1H86x1YK9*ygrK=Lq$!dA!4{zPbL%q*n~)6I>5f9x`~|v*DhKxRV=aacJ*4jnJ=_ zh2J~&irQ8_H^jy-OSzr4c@C?UiVfp@;az)6bIngi zC8t>P>};5}CBD5f?0}QYHO{|l8(Uu={>-3LtjhoM{pWfn@BI%Vm;Igg@7e*S@cMW~ zHp|z~`ARyD*nYLc8k=nef9;lXUx;X`G&`{U0QbW5VD%Z#d%j(lK6T7qxL4%L3>mL^ fQ@xf7owqN1pb>T8;gTe~DWM4f-Nb@T literal 2906 zcmV-g3#IglP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+QnE|lItiC{I65Y5!jdGutvNa%<(4+kS)6{cdO-z zXLV~qKoyxuQHa{Ve>(kxpHV`Pu|BxyoWRdS6IH@Z5c4;$QkZcbKeJxp`JtR{FBFP2 zu6jPYw(2L8+j|4Q8p!-uPQI*u!s=+f*gDi~8Lo>}FRYHVn&ommQ(Wzm*$rp?Yd^ZU zRepXp9$-|9Laj(OEw#XTSkdr62c2+rIOADyiO0PiXM@gOVn?^zC-81}PuPjH%Jm}@ zB;2ato-kVF(!R!SAhh>L-Yq}8uu62X|Lw5ry@uY~99=RFNI6=A+J-XjP%#5aJ(@Wj z9{(2iejE`;zz_>SuV6FdC?um)K)XvLt4y-XHm*e$xM);U9#^G`(xWVBuc9i06vKz? z%Il~rfg`00Skow0H(%ti8;89j11wjGno6QGi56cDdR6$F%RYx3b1INeF~t^FdUKo^GryRv%fDPt3h%O)l1$F*EA^l{$n{uO)3B6U@Tkzfat~5?1+uCym+BIN(vOWsylkkP(4xsi3gd7cH zqabwdNd^32G{3*ny9zq~96dUQ?;Lt`4Bt8Q=omg;33*Iii(v|~>=+vW?{%~=m0Jw) z)J&Eesa!fYOzdZHC_|K;jd7oKy)}MeZjwb;*?P;G4rc~6$3#~KwKqpUv-iC@`VPd8 zDEm)vKrlr*VP373nTvvkVt11gWTXjYpE>NBK6?5|1K3te#1I>0Uks%kaO=@4!6-B!Wb^^{OV zUL7Gmfj)XO!iFfM48nfW1>YFOSpK zz5Ym{rSkNNl!n2j>uKmOGPZZAJY7#iCx&!=P;*Rl zJq?}a=rf!l(fa*<=oHvLPvzr+hv~=;#iT9g3piCTM|wc+3w21IR|id z%fbV)@Kk=XkPFV2kwcbZktA@h=+W>-ZzWIxel(N$W4O2ci9I4;9t-wuD_Cw@L25R- zwHIu2FQ}9F%O9d%gLf7?Is)%3c60>Z3+y^;gZ=}?AOD>5*KY~{00Q`FLqkwdXm50H zb7*gHAW1_*AaHVTW@&6?001bFV_;yO;OOGy$|S(RP*7A-Aje(f~ z3=)%z3mgLid_e5H{Jc~KRKUo<@a-CiWMH_g3o?s=G{Bk+v=~Sq0Aiz*)Z%0y{RN2A z%S#G?;*2pswn$Pom|Xy3XNLqi1KBMM3`{&FsTCl-49@ull|`B986^samX?+Zjw$&` zsS3fB#U-h^#R{Hz$@xVE`9+B(sVP9UP&+_?*CoG1!96iEPr=AQl|*+F1fXz)un^&c z5JQ0E(xNg53#>?hL4m=5!GR%wA(5e;VFANYhBu7jj4q6&j4K%LF^Mq+F->5)z%0xh z$-I#H4T~j92g@y1J=Rv%du*0$)7ZYThqLeIP~zy~_`;dUd4bE3YYVp~_W~X%o~gV- zyp#BZ`KIy9@Gln75!fN}N%Zc`jG!Wl7bp8pc|$x~cUK8}*uM zn$Nb%wH3A>?Ue2+>OS48+Sk~BccRUt*^~cHjh}XShQ`ePS>NX*%soBde8JL1B8yv> zd|Q^e{NBotRj1dutlhWXa>KSwCY!fxHQBa(ht6_NAj&60iQdKIf**t-E*X?4iEY5nK;|33f?01q^@-A=dw0007FOGiWi|A&vvzW@LL32;bR za{vGf6951U69E94oEQKA00(qQO+^Rd1{DA~FWQRo#{d8UG)Y83RA}Dq*;|f;AQS}9 z(y%Ob+Q+^wwJ))K?aTR@$!L_8Ry$^r%P&YBK%!za;of2Z&I}TLK605C-#h_OfC3bt z00k&O0SZun0{#zx3G3jtHIqvLOju(;89b~K16>$m7r>P6t?=JcV4!1q3c!>OJ&MB% zT%f08b_l@iWcVMVdxeNS;SIVA!sm!)8xecL^UL>Jj*ibYBAOOot7!4~@Wx*x-0^iB ztcXWJ*8dNnpH@PmS3=!FGUM0-R23&#z;Hl%wR9O6`!!uZ&w-L zHPWMC206VM8_*a267Yj4nZh1M?1b+E06+$mOkm%B8Z@vn>^CzZeaVQ532bnMzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC00096NklXt$R*-x^CT`fkYyaIL}C$m9#GDvwN*envI=T(-i5P0iFPB zV`H=TFS}2(RdRKjq)))Y#Nb0STk0yaE-2DD$T>*CvA&b5bI^GjXN+V(>;z(y42YdT zY?1-76NpVRppBrCtPe4vVFM&BO4&AW1iYZD4-l)Nf$f%=QE0T?5_#7bi{~0c&RVH85VT&PJ{PCw_<1;$bAHXuMe z!26Kc&VQ_T9z$!JP|1Km@kdnaE^WBamQl-uU<2H;wuPVgV@7xEpP}=Z*$?0$aOg2S zGvQX~JV6FH@vneO9>b4;)zIZ?95WjNEBKqR9cqHN0bPsFXxjv@LMTxDSs?rB?PUil z7eYN04*^%gR0Db{KEum|LIZj(KBLrxX;*;U>wkZsP)DHwfp_1tO6h7e^&Zf36TFt< z(p8|RCV1B&Gd|JGY$$1k(M{3kx#6jGxDIU=VcwNs7iDQ4ZC9W{dx5S^=%V}%-VHhv z9=Qq2m;<&X1@#vJBwYn|X?gEasUP4bTE)+VdEiBbX*TfRa#!AXRqhA{ny@6vyP}kI z8GpF#F|_usvsO|P2Z0HY8Gi%-0001Bxm5rF010qNS#tmY3ljhU3ljkVnw%H_00S6lLqkwd zXm50Hb7*gHAW1_*AaHVTW@&6?004N}V_;yO;OOGy$|S(RP*7A-A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ+<4Ht8RCwC#*?&2*Yat8^YEB>{oa#AVw4bEIiJt761T#M`Qr0@NiZD z0IaY%z=~hjF=0R>Qn@}bU#vp=Ettz5!YP4h0j!wrZbRP<;O}n3R4;h65%p=sw*4%q zKa5PD!ze_Q0$lPWjPextnT`Mg2q1s}0tg_000IV=8vXnJGXVVBADh3E0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + + diff --git a/icons/transition-tool-disabled.png b/icons/transition-tool-disabled.png index e8313318cb99626ae3afd5942e1bfb77e91834c4..a6e188b79d7b186e4eb2f9fab38340feb389610c 100644 GIT binary patch delta 615 zcmaFQ@s(wQWIY=L1H-D!!h1l9rP#?cgaZg_I8r)*e9i)o$YKTtz9S&aI8~cZ8Yn1P z;u=vBoS#-wo>-L1P+nfHmzkGcoSayYs+V7sKKq@G6i|@}NReY{Nk)DVgKuI{NoJlx zP-$^?e%bcZXJ!KBjUk4V7A4oGGGvsL6j@<^Wx@fOkiMOob2i17*a9k?QLJb!v-R)7ay-m;_O-Qrat_@2JZwRwx|9a zm&^*^JZCR|<6#$XwK`~7rdGuP-Ml9^xce%!miiR4fA{;bTWovQ4(a;&%Z~4Cwq9;N zzcfA9y0Y$@{o6IU*B^;Z{4T%XJFC{)%9qWOOg7Vl{^c};RvhEoAa#BRx94hkDP7~6bgGC3-&?En;EDmf^u z>|k#5m$~HVWpjseo4-sg2QJsEJ4o2PWo|ii+04Ph<}Fjpk;`fh5jMBkIeOD?Gd%p5 zBc8xvbDKqi&Hpch^TUA zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ+(Md!>RCwC#*?&O}!Y~X((T>Hv5hsT&LWsuBxPO7OtP=gF zHtnL(^I%6D0~o*n;BouB@M!)p+%=D201QAZK{}rAH5B_D(CWls z^F07%CI_4M1C(75Y~Bk{Wl^wsA3)WG!R9>x?JN#9zYox^KiK>pK#u(zY`zXKMzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC0005BNklkelym-p z-?+rN81sxR?tfECFZ&LrobxTNo2=D-o>EG8`wnby)o7U>^Xt%ojX1CUNAvU0flZ4o zMxO5gy%#7nk4qnn5a2PT^koCA!ZUY()p+I&Pz2AM0gB<7FF;W|a|I}lXPy96@XQgQ z8lLe3RK+uPfa-Y04bTM7m;svM881LnJYxlDj%S2-0Ycze79b3s(*uOUb6S9Kc#aPc63=k~!s0m`AT&Pb ze6ue=cz--@QqK8L?`3LEO6lVLy&azZpT?Tc|9HMwfcJRb0zCIwr^)=?U3`S+Ex@+r zMvZ67=Xf~7{lDugasD6L{WkZo4-cu?N*(49p1=W)!4ovVv3LRoI0a9z0H@*!6krLS jAOV)*2@qfn9$o>2L5A7BJA7~e0000A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ+&PhZ;RCwC#*?+MPgD?z5QJ%&B|8hHaXjNk8nLFT&DA7HF zz(Djm*b&D71~344oL^VEKMa~jFaQQ179jQxh2sZBpsIn;7ybqx2!eH|rfOZxKo8Jd$*B@+t44K`l~nDSMCEn8m$ z81of?HJ=BV^I3pBp93`HGk})-I-n`P3TVr(0UGlwfY$sqpgDg9XwUx#+>rnEulO@= oIZm2Cr8q!yZa9DeJRa~K01>+cry(eEJpcdz07*qoM6N<$f+kYoNdN!< diff --git a/icons/transition-tool.svg b/icons/transition-tool.svg new file mode 100644 index 000000000..590aaee7a --- /dev/null +++ b/icons/transition-tool.svg @@ -0,0 +1,829 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + + diff --git a/icons/tri-down.png b/icons/tri-down.png index e2b953eb4df6dcc3be6f5ab4f741b29858ae34fa..d088299a6636139b5111fe4f64f4b1fb9c753cba 100644 GIT binary patch delta 825 zcmbQkd6aE}WIY=L1H-D!!h1l9rP#?cgaZg_I8r)*e9i)o$YKTtz9S&aI8~cZ8Yn1P z;u=vBoS#-wo>-L1P+nfHmzkGcoSayYs+V7sKKq@G6i|@}NReY{Nk)DVgKuI{NoJlx zP-$^?e%bcZXJ!KBjUk4V7A4oGGGvsL6j@<^Wx@fOkiMOO7?Vd45^s&c7|b|u%n2>{pE>_oSdCqO6d*?QbFz=$q6i$ z49_1hC^Svcx}%`N-Z9~lLY5YnmWm3OkjqC+n{3{`&9CSFG)~t1U+<~8r>yK>_3mxQ z*p3&f#t=ahs6&#Ds+|ZzdgP+ z`PH9IU(SDT{C?oA_qqSvH$*1}pI*2&;41q8>$d0fJ5N0ScR;CO)jdYO#@))V|FF%= zk75a}WqHGB?jHAxxk5|HzMgTNtN$5^>FPQg#KrD#sGT@`r|_D62lE@Bh~i`=pDFJn zcN}Bf7PhCLw9ynX8}==sxXz8u4ucP%oL*4OyghcRSGDMrijFgZ--Q2X@ZKflt+mhboVK7UWn z^lL~L`;<_^{v~9G@R@Zr{h16JQU_z?xL6vL1iMZ&Uraw>bZkE7viCnzyY4XBvXwh+ z)V?2V!jR&sp~o-E-12?kE3KhsuZEnoF})i2XO zMzSkj^$ Aod5s; delta 1171 zcmV;E1Z?}o2Am0y8Gi%-0001Bxm5rF010qNS#tmY3ljhU3ljkVnw%H_00S6lLqkwd zXm50Hb7*gHAW1_*AaHVTW@&6?004N}V_;yO;OOGy$|S(RP*7A-A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ+{z*hZRCwC#*?-**f-nq*;bOe)enfA)9uR}#7;X2{0}JPU zp9C_tun5IoH%dSP5|DrdBp?Cd0452%nS_KT>SCb{!cqA*AcDYKd4C)nk^cnDB=BDS zekpl&{sflIBkHL^be<P zfF1)CjA6n(sh^UU@H|L|A>3{Kq=<$hQDK39Elf+u;_id7*pL;r>ZP3q4v!Ecw46 l0SQPz0uqpbzX!Yq0Lqwm1R9mzGYkL#002ovPDHLkV1f}V`E>vQ diff --git a/icons/tri-down.svg b/icons/tri-down.svg new file mode 100644 index 000000000..a87e7229e --- /dev/null +++ b/icons/tri-down.svg @@ -0,0 +1,818 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/tri-left.png b/icons/tri-left.png index 361eadb8845af47a7f549d79adaa7f3bacef5bdb..59a4842297046a418ab20b74de185db68e57ff56 100644 GIT binary patch delta 763 zcmVMzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC0006eNklzo0-GSdKrL+!g0*k;La0i?NXCm@X8`nL6l+rA41gw4W$OCX7 zBDb3Ot^uT!=71Am<%dWA0~;c8pWDWirej?w!#uzOaHwg=Wd>xLf71Y15|QVew%ldF ztNCN{%)@YE{FB?BD*z4itJ)B`FU%+#GM6&#n;J0uG=FBvMFtp{2RP3i|KMN}G%_Fa zGiYS~5!lg~haLeG%=S$^0ed2HqYco@5HOhSVQ79=M6OEu(m4Q6=AmN%-poUX06dz9 zjsSQy4;=vTY#v$$;N3j52q1!aXbC_R^Uwl-Nan#9Ks57U2q2<)Fai+OJQx5lT+(if z$aQIda(`8{95!Ckc5WUDG9Yr=H>CnFF6Kc2Ao`dem39uu-hUsF0MmsrOjL(}_Qi35 zQ1l-#4iM^(P-y@W83230MM0Q(;54PQT-u*p)y0ryu!s=qhDaMhBSEN}qHP6+7!c~g zh;_ivn-mb}cfppO8Jwd~z^p^IfSiLA&(5Q(T`w5o? zVdB>d7+sc*TQ6X+vlPEx;1$9?dI;I)6|Mll2MD=yLfm?RQ7I?JnDqkRX`;*K;5`#| t8CHmXr3c`zwqC$>1~k=H>1@@c>je)JP(;sr!twwB002ovPDHLkV1m%fJoEqn delta 1191 zcmV;Y1X%ls2CxZ`8Gi%-0001Bxm5rF010qNS#tmY3ljhU3ljkVnw%H_00S6lLqkwd zXm50Hb7*gHAW1_*AaHVTW@&6?004N}V_;yO;OOGy$|S(RP*7A-A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ-5=lfsRCwCl*?&O}!Y~X((SW!$G~IA-vp^LE8XPAck44#5 z`cJBW#x7EzpR0BUIxkGXO@s+}=4pT}PXfI16u>@D0KDhJ0iXF`z;`|raFh=O9OuIT zt$Yxmoeu#lB22*VJRG3q!2mrE1@z>BfWABo(3=MV`tuNgB@Y1D^6mg@-Wg!eyMF?z z2oo@tcLR*(odDx`7r;#30WgL0e1hWLEui?rDj1&Inr+Ad${C8a0 z06PKjN>7*#P?CG{Nya!GI#ch(;p>jp-IPpiKxI)h=uReOR4f zT%TZJkzi$$U}=?LZI@tinP7Fh5g?R%F3_X*y@+* diff --git a/icons/tri-left.svg b/icons/tri-left.svg new file mode 100644 index 000000000..0a13f9f5e --- /dev/null +++ b/icons/tri-left.svg @@ -0,0 +1,818 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/tri-right.png b/icons/tri-right.png index a597a9d92a4acdc0f7af015da1038b700fbb1c7b..789a7cca320f273c72cec4b1ac292f83b03797a8 100644 GIT binary patch delta 784 zcmV+r1MmEm37iIy8Gi-<0063Kaozv`00eVFNmK|32nc)#WQYI&010qNS#tmY4#WTe z4#WYKD-Ig~000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC0006yNkl;}afS)ASf`B15=U*zcX|&BF`4&pF>M9H+U~j)0u=9h_nvQ(+^a zBm$mV&phXmaFBDpS1?{vl>o?vV=eF@8iW!6-<(f(C4X9AKT=Lu8$e3wH@;Mi87eWh zo(8W{h{RYl4W^X7V-G(o#tsn)wV%Sz@e%hce&z(PQc5*2i&X`H@gY8@4)I9>0iV_L40U!p1SphIVgzh=uvgXbSvje!$ALZu_OWjrw(VO%N z?531{t=n-^l3^#ZeI z`&H^yFED$yU!@-P0-@gd%i5OBm2|qO7udy*E1De%Zk}!F>{d5ke*p*DQ7A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ+_en%SRCwCt*?(OQfG`LH;Kg(6I659-K-)A%eO>Gq|F*%( zbvWPDA)yM85$XUDp#zW*dH?~T3!oGFfXv4Ypb};PB4G-k5#|6A z0Rd157=S=P0WbjvfCL5rB5(izfd$CiZorVh1dIq=z<|I8vzVr@+_Ys8mB@FLp7~UUIcz?y=os7ae9mlViWc%04^6lN2 zZ12_#h-UzxcpL!6qX0Pm(?u$Cna*6OG?!}4#cFDNA3%=p0_gFdYFe4wcIL*Vxpix9 eUW?oJ?*PRSje4a$)!qOA002ovP6b4+LSTX!`|{KP diff --git a/icons/tri-right.svg b/icons/tri-right.svg new file mode 100644 index 000000000..8c1ac39c8 --- /dev/null +++ b/icons/tri-right.svg @@ -0,0 +1,818 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/tri-up.png b/icons/tri-up.png index 8c7ff0febf6bf0f8a072619f969c98428d985c01..06de4807969af9f49796f0054458d4fb143e69f9 100644 GIT binary patch delta 820 zcmaFBae!@tWIY=L1H-D!!h1l9rP#?cgaZg_I8r)*e9i)o$YKTtz9S&aI8~cZ8Yn1P z;u=vBoS#-wo>-L1P+nfHmzkGcoSayYs+V7sKKq@G6i|@}NReY{Nk)DVgKuI{NoJlx zP-$^?e%bcZXJ!KBjUk4V7A4oGGGvsL6j@<^Wx@fOkiMOit}`F45^s&cIN&pkwB65{n^PEyf%Cj%uzXe>o@x+hG|{_ zpG>Z4xoq6DZPNyEMTJU+)mNGX3WQfDPpod=EWCMl@&7s2jh_#SS)Z<-Q(bp|j^w*{ zO^+@5AjnW@ld_Wa-rp~rc>V{v*ma&*d++azMTh?Ptj`l_`r1_ZySyypZ^f3S zsrJj5uC@5j@HPlt|usn7CQp|v3Khf68v)p?9l-~IFrsaFe`$5jVY=vJbQ-s4X*~*`iia7R<`sq z=^S2ddRAqP=mq6HQMX+VO=YTT3%50y{vn>Rm}7larq;tr4VJCpwx*LeC^_WjdzV$5 z-f7gbK@uzKAGb!mp1KXh^lwXKPAI9Hza`9r4@P(t@XO47u< zhr+BN@dMX6S$DPjr+7(h;`_}YxRbet@m-!prP)JM;cuM#8A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZ+!bwCyRCwC#*?&O}!Y~X((Ufy1z51|02ntP;*kcPZ_TK;P zy`kjJtq35100IagfB-)ZXk|BEfMpv1V7J_`=Zyr9younGHxRt?%LKnX0JI3ed47rD zn_nP!=cft&`AGsJKSki=CkU+kFoBmJBrx+s1a5wSz|LP1`1uP$M7~Ri$#)1*c~1bS zqX16+gbX@^6Hk{0ku~|0Lw)AB4<20Mt$Y0s#aNKmY** c_k07*qoM6N<$g2AobdjJ3c diff --git a/icons/tri-up.svg b/icons/tri-up.svg new file mode 100644 index 000000000..da669c0c9 --- /dev/null +++ b/icons/tri-up.svg @@ -0,0 +1,818 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/videosource.png b/icons/videosource.png index 784f8c3612e211477d54fd7bf5c8ebd628ebe178..d96e9eee232884a8b77820a5e5d7e91ced4ce304 100644 GIT binary patch literal 780 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ z@ErkR#;MwT(m+AU64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq=1SV{35F1QK2jnx+A2@BiEchD(tL)^wqonq58b^fk)6>yQ3)(*7JO_~xL_~CiP89fd) zYvbL@`uTg~Yv0YRK5vuOX3pQFzyU@7`5ABAKVYx&2rP<4lZu`zC z-l%-woBf`9Sq6V>6Uw`J|7+VZ%X+?lEq23>=MGca^^aDu0r!5&w6Wh{jaj9=tyX5o z;roaA_fAXstvb8-X1+`OrGr`%-|`j6-mp5gT4DV|#vCd z${EZXlOI>5NH@HVd|+0PAv9lydBfiJPt4B`EQyO`V_3sboGT%kJ40o`)Q5`q8KRV# zJnlMVDK%W-U807>yv`t%-<$8Uj`0lh`dbF4fVQnZVEN!E*a(G{>~q-V{2xuuWnh@J zk4e0N{c%;uJ9d+s^Sv9Fyx%6?D3_emmA03u&Epqm4CA!f*Zf?83UyX;moQ#mJ9`#G zn@1GeI;Q=vUT~kPe{XqlwU9>?qgbQ7=%uYqpEfx7*{oEaR5Je)@5kJhH#2k2GnQ-q zpPpZ47brL3N5J-kBaEG<4}1(QiY_tAG5+0Vl{?e!!-TfO%pO&IbC%3`ue`zPgO%#b j*weLajsh$Y6!}4#by>@-i3hwu$(g~^)z4*}Q$iB}1Jp8z literal 2882 zcmdUx`8OL_8^ddMG#BuZ_wI{mQb|HSR0B~r*B~BhY zS=bzr8Sd38xLj)1Q#6;ervQftl@u9h&C0Zz|; z{>UJ}Is9=$-KNk;Mj{GRV{ECOX$PF#$Op9e#*~DGujnF*PQZT^?%Ux{!)7gS;kMnaKd0PJ!tC7e^ypUL!s3@_5ibwII z%<%Qi=X+pX)a0E*2?$e2x6*a=$n}v>uXL}W(Z*Ngs+Bnl#yn&DT~=psRQF>~p<1~u zUTOKowt8SZZJDcs7S;4p5Gofn7+O))Pn zPs`1tD{_7i5EAxGa!T|zn>EWabI7(sP7+_Wk)o|~0?W-P-g!ACzrMNm>e<88?5dQ6 z=o0Fa=!Vzi`d`X3;%k#0HTYIKMBk0Tgip2Q6}B`OT!?KHc6*SVQ2pRRTzOp9$%eDb z7kO_M_*mMI3~AXPpDe&mie+Wp@UK#yd(9kUT8nxqgjtu`rC8M$v&>>5Tug?`B|B^@ z>WemxNNr?$WcSz5-khkBS^9ZdVNq|QWc<_U-8%)n&&N{t&6A$q4vOvQ*}E~xJkx_l zPlmM&VoxXB%m}-g{+3OrC0qUSsjhUQmQHG|F_U{z>-FPUO*nbDkJDhcMVSz<*>7o~ z80tT&mJ!i!WIW#}@^?$=-_zD#DA+7~W_`S3uR)LbqPMK!&f<#vr2ZOm<<)2^r(eY( zj;gz@yVep;pYjIl+c3 z=&w?0sCSBLbU{3NMvY8YJT@fkcYbPHOJLMgv3Ud7&!Q)fJfD}m7k1R0A$7>2#CaaviC3{qQ%8Jm(eKcOz|Iw?PZTH72C5xZ|^=Dw*T;bJDQ zoCuAvw0Dh?j`m60(sl$&WYAQ*WxE*t{R;7=Fj~=Xz6#+2 zFCk{as-i2m2YEi$$1y9EmpZ0_$4w2$LOFr25%SWmdpomVL5Ho!_p!K;<&^n?rZEdV zKFIx6ZRK|DaNdaMjq#+`E%4@f%vORD*Q<&tb0?hrVR-+oH^f3}1ld75qs}tLYzF#K zX1ZVzkmSH#YI{au8SDLwDdzSUiSxchjl+;+EA;Hbl?Vw)GFGv(N;W4Sh8a;q^;}4Q z@gs$=GbOGJ7S~iQMds^#_#or<%AtOh z+G)-Ao;K*5=2*8HB-EvT8f1I6e2cvUqOhQPO^$Q%ztVqyQTD3acS_RgM>M>kL&#$wHNACKEd<0Q*Un{Uc+g(?jBFZGHu@5_Ps#;%-2~gqTAPfHfi5w?j50MUtKo$&hlGoE#z7Tuz7sqPjVt7RUW%SY_$+dHwjCV2TA z>8bdM^ndGhJ=Ll@?P}B4F4`gg`aWgmG}*BKUTJF)Y;O!P%M`OWcnBS!-N-iVkI5ry z7uS|MMDu4P`!|bzt`iGUpA{WVUz{d)Cst<1-+W5p)ZwEuRv`vN1*GP_#dAieI=%ir ztoPK`M&hnPatcvEQ_PPoP*X(~s|!||k~o#9DiY$eNEe<7IDlp&TN`w*e?zOZ8eSm85|zUvA70}?-jV;OKoRgzhDy4%{>4Z{;A+7EiEnhMS`!B3;bHJe}Id( zKitH}*_Y(!OX4;|KzZ$Zb5p?nOhIt*cP0`20*Jmoz{ocMe%X=e16M&JQZv*>xZJ5f wId4awKvzfSfIyN9>2Kic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + diff --git a/icons/zoomin-disabled.png b/icons/zoomin-disabled.png index ad008a3f56607263b25a55cba820bbbb9c5b91f2..203c829386c43faed5890919f242bf8b32c8668d 100644 GIT binary patch delta 1703 zcmV;Y23Yxp5UdT58Gi-<0063Kaozv`00eVFNmK|32nc)#WQYI&010qNS#tmY4#WTe z4#WYKD-Ig~000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC000HbNklNmg)Fa=BkCxLNb%)7LK9bgk^0vo_b5!tAFE(b<{ zs?Gp&z&YS}MKRmJd*F?Te5_+$BPBpp1(*jeVNbeFG=XJ|46Q0;WCW<{1z-U)?@?kC zcp@V2s@z;V0jfFyECOfhmK|UfcqAgNoSSMTKvmBJKYwBl?J&>={?4(6+6Yk9tH71I zV0=FvAX69$V1PGT#^X)I{H&VL;&w*tT*{M3F zk2?-r#(!dq)cOA@BJYbDDiPpI-7V5yp$*`Hh%~B;X(Abl(Af7m>~WhGP}S zUnEWWcfg%gN>P>;-0z%|U-sj9AF(Oqfs zBO;$w^#SHQ=YwI+s_JZijF4pk{&W@+y1vU$et!b^8B-qYwLAmd^sKQIzRW$slB5U= z{T7z{3d|G7_6^`+hRp9N_UdE6)f53v!b2as3=>#J+C?q_mx6W${t}VT88T-ow(Wt4 zw1EdchcaC5y+|g&^Z6*HeO|%am#yhJ>pku>UIg7HRdu>^kz)aKL3h;6_pP#hB>pFo+^iP>VLxoq!SQX%DyZMi|t3Dct6IlqD()w67EYT zAX22=d*Si+^nkvjz)V3F*)Ht4i!1^vZ#;bINF^W&aQ0Y;Cnsx_W>gKU1;x)Kt4$?f zJ7_O*l23@uunx3=#|6KiNVu;y3)ts{eQCM_d|)(0v|aX{0lPub(%pjeIG{m!G=F%S zg3^>nWcSMim#p(08Na1WumF)0ZbG^RL_tMz-hP0H=G1`t2skw$7&#Ppq7#+V)*z7p zPjn(j7!@TC646|?I)$5@dcfPD{i1JL94dSc(NVGTPW@cDo_c0cM^9l2M(w{R_@!A`}XJYc^fpJxR=$jS;;mhp34q>Us-hbTeualH6#fbQu$uAftT3n&a5poUtZ_2ASb8P_Ebcc1~rBR)Tn$vHZaE*9g>>H5}R9oDtfGE&-mv++w&1w}88yr{Iy@9JXdx@#1A@Vu{V$ zT0WRi)yt%v02_oo%J;+f3g>_eRR3gV3#$az|H+K1{zCQ7T1u7ghkw@(Py62_M##AT z7j{3IYGF^h0j$-1+7utOWByf@-vsXEI3G`bn#5J6k)z|Os~(!(#GZWCXDVM3jzRZ~ zUDon}ndcuzS$WvIR_A=3unfOovd_~Gb4*?>wjqT%=k+8v6q&yUd!pE`t x{w%xO-VMxSzsNiXd?2);s>d=*-2daK;a`zJ0xpi>1*QN1002ovPDHLkV1ic{5sCl+ delta 2050 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 diff --git a/icons/zoomin.png b/icons/zoomin.png index cc49cdebfe3569fb9a616463911c6970a3cd3c94..f0a5f979cc46aa01d13939a90b16fe79371de67d 100644 GIT binary patch delta 1917 zcmV-@2ZH#O4uKDl8Gi-<0063Kaozv`00eVFNmK|32nc)#WQYI&010qNS#tmY4#WTe z4#WYKD-Ig~000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0000KbVXQn zL3MO!Z*l-lVRCe7ZXi;1b8ByQx690#0000pbVXQnQ*U*0V}E4;XmoUNIxjC{Z*6UF zZgVboX=`b1Wn^h#E^l&YFL!BcX)jb^Zf9>_X=870UY{tC000J`Nkl#3_~J(}Vxy(>lKm*Z^$Bt>{O98ZT>w ziw(L0eSd+0K%a#6NBiF|#wq1B161{Cl1=+#z!G4oi0n()S1B+O7z4CU&~$#>>yVlN zRUHZ}2vk1>ECLpa$g#A2`hMF06M%7q&0qx{7m+nl!c+vPY8PN7&?Z2A2QXPgcBSbn zW(>W6xwvrJLNzc%meN=RI7j?B62$OAn6P!!*+fb@JxvF9?w(X zd4F)J@stn)ey^Vj>^4+81H-c)1QX!*{6`J7Q^1pcYKCH9jBG%t5#Q%z;IyGy?tKB0 z&47N`Dea;Zt9{g`pFyi6hD4+iSZt`30=H!TNkTxGAwQ1G&zl-=;R3EWoP7;~2=G&8 zu%T8VB7cY2D<*uP^?{)_B=Z`C&Vb(7$A4JM0&O)0mKyRafbI}ZKz~ENO+@wv+A2Ck zWDihjsNDwP1oSfG>jUjHCN>!Io)Df6cQfQaMm_Y=+!Wk)7Ps0r2vu!pZ$Ala1ZMly zKNnkoM`BEuLO21}81j0lt*Z6`J|v~%0cZi-0Sr*pVIs2M8dDBBL-;FT<=?+XJb#-; z@tn^_OJI7$^CL#P)(}pB6_C_q|D&oUz^#F{3xR)_NQYHv{TzlOpmn?htb= z#UY}`+a4(*2SUb_gDME$26q#mnt$F*#L<*LwknS^9J9}7Z1e~jU z$M~W}lR{P7QCk*k2w!Dxmn1n6vhw}bxQb0vVbT#YG|P(Lzs1|BTK&}ZU%)ozfMHP=RQnY z8|(yB09_I^+l?!aTMK9+_yunc_Ou813pb+<=L&)eNa=hAr*RAD+ah8mR@OM$;kLT5 z*b5%G3lfis$l54j5CM5QpN$%7ugL64(oj`<;IhlnBrBQC5s?OOvVWKa6wvuxRN{`V ze*pFazfk{@R5x5!HwZhnk3xlrycDMpOF$8wZwyobFI#2$1_?NiomXI*WV6OoX6LqJ3zyyuC+8@LPCgs>+ zb0JU#JRu_EqxN|VXMbM-pG+*nE`-M6An;V=6D?=m4C}a~b z0e8_TE$TR*3tuZN1MUYdPua&&U=6SW*iz81%&6*We8n^cVx7;0s&)l#!tL?hf%ZT< z|I-W?4^#t(sQuE^CK0i2fhC6c0bL6GM7pc9hj7j(`liOYf_6)?eqVIXgD1eJt5!KV z7YBjS=d<%rcNNY>s{>1h00000NkvXXu0mjf D43tlj delta 1809 zcmV+s2k!WR50ws(8Gi%-0001Bxm5rF010qNS#tmY3ljhU3ljkVnw%H_00S6lLqkwd zXm50Hb7*gHAW1_*AaHVTW@&6?004N}V_;yO;OOGy$|S(RP*7A-A zje(hgfq{X6Au+kQz%d}ehk=2CAum5Kl>rqnGBA9*#=ywHz<L4HwU zNoooM0|V3!27d+y240u^5(W3f%sd4n162kpgNVo|1qcffJ_s=cNG>fZg9jx8g8+j9 zg8_pBLjXe}Lp{R+hNBE`7{wV~7)u#fFy3PlV+vxLz;uCGm^qSpA@ds+OO_6nTdaDl zt*rOhEZL^9ePa)2-_4=K(Z%tFGm-NGmm}8}ZcXk5JbzL=Q+b7WC-DjMP2-p0Uo4;_ zutU&Q@QP5X&=28W5fzcWqT!-n#3qRwiC>YZkd%`=CY3KOEqy|!Ojcd?mRz5_i~Jvj zt%`+8dP;AV*Qyk#nyCI%JE-2J5vr-A`9bS|_9UHDT`N67y;u523>FyH8pRmfn#h|n zo4z!=V1K^TVu|Ght2*mkn>gD*J6C&a2V+MaCpBj!7X?>&HwAZP4|PvnFB5MYA9vqi zzXbpMfcn6RK}&;ognhg9Nrj-K4POhLkm_H`6&XEHX2* z=4M~aWzVzEuPE45_^w#HB&&2)*_#Ue%95&GHGhn?UUgIJA2#YW)ij@Nm1`?(KiVnX zRn&dDSGBLP|L#PaNwX*aof<#w@C=Qa{jz2$~&n@l!u*=n+F`wpv}`**wUIlC`x|AT`$hkhPuKPG;B#YyW^=guUb{dIoQ zMStx}N3SGa{daxNO`BVH@6_K@zJKCj-ea*R`=4dL5P5mg$5< z;Xeg_o%+-I&+-3%01W^SH2RkDT>t<8AY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQAR zU;qF*m;eA5Z<1fdMgRZn$7ATSQmf*s~ol%5^ zY+wN&pt`9GS?~ya5;kIdtuVoFAR-hBx={%UCJI7Djerud!~oHR@OMGNWA4o5+!vl% z^!D_g)8EXTIdf(Th!Z4^CN$v^&Z80~0JgD?ub9I$ve<-wp}9qw;xq2jB)c48ihohU zPc!{c#D0FGL{`|(qM!j@fsa zj6Iy!+C20!1#Mba_ZV?BkMN$>u7AxfKuo*tyG1U#HI_N~lHC93(>O_sdvRN1-RA}% z$`zY~PFJzqX|rFIjsXa!G+E7ULa}GhlpJ70F4to4*)RG}k3&g=kPTV}G8DE7h_= z24E?g1*O$Z4$$Meq&UM8JKLA{{Jg@BN8iUn0s&6yAo#?1)2;JSaB2!DF6Hka3Q5*gFS zg40Fis>tyg-}*r~>8f_r@v3%|DMnetaq&bX%$HOqDMK@^;Uel#g;D@p_<>J&k5|YZ zl%y6O%MN15;EqzNF_>mCD;k46W{!_SPynFCNg=|-(O3u$0JJ#4J-690NB}Uwj1b{q zn+g^Hw3rdDh^c*qpnn0tgm_VASsMlbXmL!4@RX4-0KlXep*b7?Fe#jf;jjR}dQmuj z2@e2Fa^ggQ?Jxl(33?-30MO!;Bfx0b0ASJ)Ass#dnB=tK@8@{-GyqJakmuEKGNG>3 za#;EMcf1nLUSO^=TR6;R?r?)yrdhtP|2F{i*pbp%)yhZ!015yANkvXXu0mjf6`Uhr diff --git a/icons/zoomin.svg b/icons/zoomin.svg new file mode 100644 index 000000000..475be8ff0 --- /dev/null +++ b/icons/zoomin.svg @@ -0,0 +1,822 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + diff --git a/icons/zoomout-disabled.png b/icons/zoomout-disabled.png index a2b254cdaecfc49fbd708e47b6b9bc136c1300d7..fc2aebb706f55c4d54f2aba45a4f9c27e9eb69d1 100644 GIT binary patch delta 1600 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 diff --git a/icons/zoomout.svg b/icons/zoomout.svg new file mode 100644 index 000000000..c3f928aa1 --- /dev/null +++ b/icons/zoomout.svg @@ -0,0 +1,824 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Martin Ruskov + + + http://commons.wikimedia.org/wiki/Tango_icon + + + + + + + + + + + + + + + + + + From 92c8fcbfd975e15d7829a918d0a4df7910ef374a Mon Sep 17 00:00:00 2001 From: Pablo Gil Date: Sat, 19 Jan 2019 16:52:06 +0100 Subject: [PATCH 05/32] SVG icons (plus their .png versions) for Project pane --- icons/iconview-disabled.png | Bin 611 -> 507 bytes icons/iconview.png | Bin 611 -> 534 bytes icons/iconview.svg | 26108 +--------------------------------- icons/new-disabled.png | Bin 663 -> 535 bytes icons/new.png | Bin 684 -> 667 bytes icons/new.svg | 13127 ++++++++++++----- icons/open-disabled.png | Bin 827 -> 735 bytes icons/open.png | Bin 889 -> 826 bytes icons/open.svg | 18046 +++++++++++------------ icons/redo-disabled.png | Bin 831 -> 836 bytes icons/redo.png | Bin 882 -> 885 bytes icons/redo.svg | 5553 +------- icons/save-disabled.png | Bin 792 -> 693 bytes icons/save.png | Bin 844 -> 759 bytes icons/save.svg | 8530 +---------- icons/treeview-disabled.png | Bin 607 -> 510 bytes icons/treeview.png | Bin 630 -> 538 bytes icons/treeview.svg | 26084 +-------------------------------- icons/undo-disabled.png | Bin 842 -> 845 bytes icons/undo.png | Bin 908 -> 905 bytes icons/undo.svg | 5553 +------- 21 files changed, 19042 insertions(+), 83959 deletions(-) diff --git a/icons/iconview-disabled.png b/icons/iconview-disabled.png index 37ea7f6e9b008edf1e478304d271b0271e372476..8752a2f72e20066792e823fad62be7a5d9fa61f3 100644 GIT binary patch delta 326 zcmaFN@|$^rH8?;!^PmhX)%JwkUF|4w&g zy}+2laq@(UOM#5Xk9_9yE&r~+&C*e~<7AlT(=F$BdCOE2k6WHm=O+|TFPT`9wKjHh z_tl&EO!HX3O)@iX*>B`!RWs?qi8xmAc0blHbF5XKKfO7zA$B>_{xkaL`&iC=yqlWx z`Sj*`WyWqM#&=A40uS^au;E|`*z7JpCo_5Tr#Bu4mKJyB)K!+LJXrEa_wQkimow%} zPY-{`dTvtR+O5%L7iaP^FnBkA{n5^}=D4-Ugoyt7x#z3)Sk3;A!)OC!Yumn76m)*w h5z)U{j=drE1B07jLAc?cEC~i6@O1TaS?83{1OU;FkRSj6 delta 431 zcmey({Fr5eHMj731_t5vjLFaX4o`GzuW$5paSW-L^LCbD&|w1+m-!hBxC(&Aq6;Xewr?34HXGH0n@ay`qJuyJ;^QC{8I}b=j{C$|TWL4eu zt2bKGs-mP4z9n+sX&1QnYtNEv=Er)NzcX_kddL2t?m)s0`G((&@7RIFe|Gi-W($rn zuHao!$dJXHCDU-LK?+sq4!?)kUH$`q8NM?EnLRrsGm8mxN4a6xm*4}XU}-9qOoay6MKIvm%-lew#Mt{$#Q0JiSGD3 zZDxJw`92n%kN2P6NKL!CS($P6A*L&=S0WmAHAry>hzBGyzGBMKafo&3WnIC&Vk1K- zqp6s{9Nt#rdgINnZcc1iSJ1is%$lmQ674@+b2N%AE1CH;mu8!Uq}bOmUfx>B9n(;^ z@PnL%JL|Pcxjlwy-4(WW!3SP{WMVz=x)6xgANLM#MVP!mZ^1Dv)+<(&Aq6;Xewr?34HXGH0n@ay`qJuyJ;^QC{8I}b=j{C$|TWL4eu zt2bKGs-mP4z9n+sX&1QnYtNEv=Er)NzcX_kddL2t?m)s0`G((&@7RIFe|Gi-W($rn zuHao!$dJXHCDU-LK?+sq4!?)kUH$`q8NM?EnLRrs + viewBox="0 0 64 64" + inkscape:export-filename="/Users/pablo/olive_pablo/icons/iconview.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + id="defs14"> + style="stop-color:#89d5f8;stop-opacity:1;" /> + style="stop-color:#00899e;stop-opacity:1;" /> + style="stop-color:#ffffff;stop-opacity:1;" /> + style="stop-color:#729fcf;stop-opacity:1" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> + id="stop2848" /> + id="stop2850" /> + id="stop2368" /> + style="stop-color:#ffffff;stop-opacity:0.21904762;" /> + id="stop2370" /> + style="stop-color:#ffffff;stop-opacity:1;" /> + style="stop-color:#ffffff;stop-opacity:0.24761905;" /> + style="stop-color:#729fcf;stop-opacity:0.20784314;" /> + style="stop-color:#729fcf;stop-opacity:0.67619050;" /> + style="stop-color:#7d7d7d;stop-opacity:1;" /> + id="stop4448" /> + style="stop-color:#686868;stop-opacity:1.0000000;" /> + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> + x1="16.874998" + y1="22.851799" + x2="27.900846" + y2="34.976799" + gradientUnits="userSpaceOnUse" /> - - + y1="45.264122" + x2="45.380436" + y2="50.939667" /> + - + - + y1="13.604306" + x2="22.374878" + y2="23.554308" + gradientTransform="rotate(180,23.96967,25.01237)" /> + + id="linearGradient4975" + x1="34.892849" + y1="36.422989" + x2="45.918697" + y2="48.547989" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-18.01785,-13.57119)" /> + style="stop-color:#729fcf" /> + style="stop-color:#5187d6;stop-opacity:1.0000000;" /> - - - - - - - - - - - - - + x1="5.9649177" + y1="26.048164" + x2="52.854095" + y2="26.048164" /> + id="stop2404" /> + id="stop2406" /> + inkscape:collect="always" + id="linearGradient2871"> + id="stop2873" /> + id="stop2875" /> + id="linearGradient2696" + x1="32.647972" + y1="30.748846" + x2="37.124462" + y2="24.842253" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.77039,-5.765705)" /> + inkscape:collect="always" + id="linearGradient2690"> + id="stop2692" /> + id="stop2694" /> + id="linearGradient2688" + x1="36.713837" + y1="31.455952" + x2="37.124462" + y2="24.842253" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.77039,-5.765705)" /> + id="stop2684" /> + id="stop2686" /> + id="stop2382" /> + id="stop2384" /> + id="linearGradient1486" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.30498,-6.043298)" + x1="13.478554" + y1="10.612206" + x2="15.419417" + y2="19.115122" /> + id="stop2833" /> + style="stop-color:#5b86be;stop-opacity:1;" /> + id="stop2835" /> - - - - - + - - - - - - - - - - - - + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" + cx="24.837126" + cy="36.421127" + fx="24.837126" + fy="36.421127" + r="15.644737" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective2833" /> + style="stop-color:#71b2f8;stop-opacity:1;" /> + style="stop-color:#002795;stop-opacity:1;" /> - + + id="radialGradient3352" + gradientUnits="userSpaceOnUse" + cx="345.28433" + cy="15.560534" + fx="345.28433" + fy="15.560534" + r="19.571428" + gradientTransform="translate(-0.1767767,-2.6516504)" /> + id="stop3595" /> + id="stop3597" /> - - + + - + - + - + - + - + - + - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + visible="true" + snapvisiblegridlinesonly="true" /> + empcolor="#ffffff" + empopacity="0.47058824" + color="#ffffff" + opacity="0.31372549" + visible="true" + enabled="true" /> @@ -25849,41 +806,42 @@ + id="layer1" + transform="translate(0,16)"> - - + + diff --git a/icons/new-disabled.png b/icons/new-disabled.png index 6d9b6ab3004d7965709a8f6c4b3129ad134a756e..1f2a976a31455b023d1bea9fbbdef47455f4bb8d 100644 GIT binary patch delta 389 zcmbQvI-NzaGr-TCmrII^fq{Y7)59eQNNWMH4F?;L6!6iwJ5f=Jo9_q%1K$zGsoH$f z6W!YDO+8&4LoyoQ-rAUV$UwyH;bRWN(wB!qF0QNn-~N(EIV+SiRCdv-?aVA3!Fj zZv5IN|J{t|CI6>Mzy4JsT$~u~aIi5pwePKL!`qJQeDyaLv0lq^Ywt?mCica+cnwE1 z_pehfIcJ0IIir7DzdE)p!bdM>b*R16?V@U_*4(}Q`vN<1c}-7kxP3=8zopr00vR382|tP delta 518 zcmbQvGM!biGr-TCmrII^fq{Y7)59eQNIQTq2OE%Fm05UiqM{VH@OlOY;q{Ek&-xBe zbZf8Q>gnPbQZeW4Y)5ZqLjkw@8CR7&zCIFTvfLw-{ea+xXoGGhd8JR08_sT3;SRVeSisD4>Nw+r zK$mygTkj^SFMc+uN}Ru7-KucW+y9;W8V*0w+|~1YQvC#Fh3va064tD`zSa7q;01Nx zT+XG>J{cRFU9&f$cu!!c%M-KBf2UT+Gjgx$ZTYXnpyl~N%VB!Wy(#;wD?~pq)#zG= zeR=mF^Z@^dBSoA?moX=HNSL?=ecRh4@?&?)1S2Y=^Dn#KYw$k{x{jmX?&}D{u*mTjwS_;ri6p~8xF=# Uo#rd~4;Zx!p00i_>zopr00Rc%a{vGU diff --git a/icons/new.png b/icons/new.png index e69e392c550f30f7a993fb21e81c512cf6db11d8..ddb69f86fe23cd1cef0dc23a01ccb025e7947293 100644 GIT binary patch delta 487 zcmZ3(I-7NZH8)TYR^@`UT;N-U+SZ z2J;Tg-6bSG?@(`^OJGUfgtZEKE-d^HS$ot2c-|h8Xqk|xHFMtj<5!v!#bRgvs<`qc z=hB7;EZ&7Zg{&4#+ZuaWD%l+5Ew~kH)GGe5gfSjJ5VuIDzLJG+)`SfyYu>AR8hVQF z=&3hcw=^$BbVAab0?&Y)OYG6}+qQxLJ zX~JfP3j8}FrkRTKY)fs%fvT+TEVouoF*dLq)jK_XCP7?Y0DNS=5*9+;_ xqBD%5{wtSQ?fRbajVDp`*zvrpjxx(#YnUx;a`-1HZ%||a0#8>zmvv4FO#t=o$x;9S delta 504 zcmbQux`uUvHMj731_t5vjLFaX4o`GzuRrDK;uumf=j}{GFXljjw*8`kf(My16q|0m z;B1*8($p?+RJej&Ur9^sn^~MgwYF_ThGIvnVpEEa5I3*kzQlXyxM%WDJCK+5t^WSL z@0$cT)Mk4Ht0-|F&@#xLv6R~;Ec9#6jbfFPOfD(17EI6HK2|tjS`ZmJHRXloWc}vqVrm_Hkt4#$-_WCbmP!UoMwZEzhQoJ+UP<*#W1Fe!BmH$JgWQy@ z$CcNaGq^laIeskS7tas1+ddNFj1xSaRx;VO&&g+CpC;rbTEJ?P_m>d<*)L?!%u6re`D#wnGdn!4r59og2TEl3}S=#;LTbKM41%?Ov z>X&TjYitmj)}XC;z`DVl1R@DpwXptySL-*XF1Fix|FYMCZGrP|&HSOdK=4E2yhD9{ zS&eQ7<}O;MH)(U`w}#FCo~s!wUvb{C{oaG~dz)Dt1y~#n>}nWeo+W4LY<=;Z0SG)@ L{an^LB{Ts5SDw}k diff --git a/icons/new.svg b/icons/new.svg index c06707d77..82429f30b 100644 --- a/icons/new.svg +++ b/icons/new.svg @@ -10,1085 +10,739 @@ 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" - sodipodi:docname="Std_New.svg" + sodipodi:docname="new.svg" inkscape:version="0.91+devel+osxmenu r12922" sodipodi:version="0.32" - id="svg11300" - height="48" - width="48" + id="svg2" + height="64" + width="64" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1" - viewBox="0 0 48 48"> + viewBox="0 0 64 64" + inkscape:export-filename="/Users/pablo/olive_pablo/icons/new.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + id="defs14"> + style="stop-color:#89d5f8;stop-opacity:1;" /> + style="stop-color:#00899e;stop-opacity:1;" /> + style="stop-color:#ffffff;stop-opacity:1;" /> + style="stop-color:#729fcf;stop-opacity:1" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> + id="stop2848" /> + id="stop2850" /> + id="stop2368" /> + style="stop-color:#ffffff;stop-opacity:0.21904762;" /> + id="stop2370" /> + style="stop-color:#ffffff;stop-opacity:1;" /> + style="stop-color:#ffffff;stop-opacity:0.24761905;" /> + style="stop-color:#729fcf;stop-opacity:0.20784314;" /> + style="stop-color:#729fcf;stop-opacity:0.67619050;" /> + style="stop-color:#7d7d7d;stop-opacity:1;" /> + id="stop4448" /> + style="stop-color:#686868;stop-opacity:1.0000000;" /> + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> + x1="16.874998" + y1="22.851799" + x2="27.900846" + y2="34.976799" + gradientUnits="userSpaceOnUse" /> - - + y1="45.264122" + x2="45.380436" + y2="50.939667" /> + - + - + y1="13.604306" + x2="22.374878" + y2="23.554308" + gradientTransform="rotate(180,23.96967,25.01237)" /> + + id="linearGradient4975" + x1="34.892849" + y1="36.422989" + x2="45.918697" + y2="48.547989" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-18.01785,-13.57119)" /> + style="stop-color:#729fcf" /> + style="stop-color:#5187d6;stop-opacity:1.0000000;" /> - - - - - - - - - - - - - + x1="5.9649177" + y1="26.048164" + x2="52.854095" + y2="26.048164" /> + id="stop2404" /> + id="stop2406" /> + inkscape:collect="always" + id="linearGradient2871"> + id="stop2873" /> + id="stop2875" /> + id="linearGradient2696" + x1="32.647972" + y1="30.748846" + x2="37.124462" + y2="24.842253" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.77039,-5.765705)" /> + inkscape:collect="always" + id="linearGradient2690"> + id="stop2692" /> + id="stop2694" /> + id="linearGradient2688" + x1="36.713837" + y1="31.455952" + x2="37.124462" + y2="24.842253" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.77039,-5.765705)" /> + id="stop2684" /> + id="stop2686" /> + id="stop2382" /> + id="stop2384" /> + id="linearGradient1486" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.30498,-6.043298)" + x1="13.478554" + y1="10.612206" + x2="15.419417" + y2="19.115122" /> + id="stop2833" /> + style="stop-color:#5b86be;stop-opacity:1;" /> + id="stop2835" /> - - - - - + - - - - - - - - - - - - + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" + cx="24.837126" + cy="36.421127" + fx="24.837126" + fy="36.421127" + r="15.644737" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective2833" /> + style="stop-color:#71b2f8;stop-opacity:1;" /> + style="stop-color:#002795;stop-opacity:1;" /> - + + id="radialGradient3352" + gradientUnits="userSpaceOnUse" + cx="345.28433" + cy="15.560534" + fx="345.28433" + fy="15.560534" + r="19.571428" + gradientTransform="translate(-0.1767767,-2.6516504)" /> + id="stop3595" /> + id="stop3597" /> - - + + - + - + - + - + - + - + - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-1" /> - + inkscape:collect="always" /> - - - - - - - - - - - - - - - - - - - - - - - - + id="perspective2833-5-8" /> + id="perspective3372-5-4" /> - - + id="perspective2734-9-2" /> + id="perspective5736-9" /> - - - + + + + + + + + + + + + + + + + + + + style="stop-color:#956363;stop-opacity:1;" /> + style="stop-color:#d17878;stop-opacity:1;" /> + style="stop-color:#e3d328;stop-opacity:1;" /> + style="stop-color:#e1dec3;stop-opacity:1;" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-7" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-5" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + - - + + - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-8-6" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-1-2" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-85" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-51" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + id="perspective2833-5-09" /> + id="perspective3372-5-2" /> - - + id="perspective2734-9-36" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:snap-nodes="true" + inkscape:snap-smooth-nodes="true"> + visible="true" + snapvisiblegridlinesonly="true" /> + empcolor="#ffffff" + empopacity="0.47058824" + color="#ffffff" + opacity="0.31372549" + visible="true" + enabled="true" /> @@ -4748,16 +11020,21 @@ + id="layer1" + transform="translate(0,16)"> + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:none;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.86274511;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 14,1 c -1.656786,1.657e-4 -2.999834,1.3432144 -3,3 0,18 0,36 0,54 1.66e-4,1.656786 1.343214,2.999834 3,3 l 36,0 c 1.656786,-1.66e-4 2.999834,-1.343214 3,-3 0,-13 0,-26 0,-39 -1.53e-4,-0.795597 -0.316297,-1.558559 -0.878906,-2.121094 l -15,-14.9999998 C 36.558559,1.3162974 35.795597,1.0001531 35,1 Z m 3,6 13,0 0,14 c 1.66e-4,1.656786 1.343214,2.999834 3,3 l 14,0 0,31 -30,0 z M 36,9.2421875 44.757812,18 36,18 Z" + transform="translate(0,-16)" + id="path10890" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccccccccccc" /> + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:none;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.23529412;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 17,7 0,48 30,0 0,-31 -14,0 c -1.656786,-1.66e-4 -2.999834,-1.343214 -3,-3 L 30,7 Z M 36,9.2421875 36,18 l 8.757812,0 z" + transform="translate(0,-16)" + id="path10888" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccc" /> diff --git a/icons/open-disabled.png b/icons/open-disabled.png index 40b12f1377de0da72817b43a4b3ba40bffe3518e..0319c825e76d8e39600d83619c94abe26c3f5033 100644 GIT binary patch delta 557 zcmV+|0@D4v2HypcI|~lP000ie0hKEb8<9qae*yhTL_t(|ob8*@O2aS|hQG)t3W9jE zD{S226oU zAX_KUGPw&n0l{y_e<_BRzmdvk#F(g1X@& ze^Hl^y8uv@Fo{&pqQ^ehg0hW-=pEw_T0nzJOUO~c>w#_2CFCgJk%SU*6aWb&sh)$q|De%y>@Q_+SS44l= z|DymAmI6KukG;iGz>DFrw^(+9tIhkle`OBqQDDW7h&~)UVzdkBvHpM2p^OLKH?M36 zwSXD%*Z&=GO5N|gMXtLyp-xb9{l5av6zdle5}>{QpN#~|VK55`)-yqK3DyF@SV9g0 zz)*tqL}-_aNS&|u{%+@EbI-xtIp_bD&7}osQc=%oW^EhCAfTajZZjqUtv|0Ze+g)% z2(S)dO%Y%nz?ve!I)F7rfOP9VIg$xm8lnVG1mbXBZF(hCe_ORt`Q}~gA?cKCFOFIV7s--u?ap)0o*MJF00000NkvXXu0mjfY_R$< delta 649 zcmV;40(Sl11-k~2I|~!9000xO0b}Nl!;waYe*#%aL_t(|ob8)mixV*vN6+oHy12-K zh%+eoAPV~A_x~2YEBNAn@Wtv{s_yk+T3oluc5XJAo25BW3Nuaeo5S2mXPQFeu#uET zsyYYm0!JCMC~zhsKQs2Z7qb9WJq2C>^ZaoDcrPMv3-!IjETPR4${jqwBUOD`u>b!^ ze-Usedx~B9sU)NbNV;w$(5vdR(u1T3n3Arvgj}`!1z07veY|IXr>cm^>%{)Ar1mpl zOR+QIrU-yS5^5Eok?mdX*`ZbeUx9UGU)I^7RsrY0XW|mFl|!upU?_v)5^5Fz6G*6C z02G!`@}}lGoU(h*@#l)qcdDu)^2Rz)f2{&;Z(bI9Rb7e5J4>URPy!YnS{u|L;CIHp zZdn^dOF&gmfNo@`^F5zah8jK(?E41X8!<)^f&w-N|B~@%$Wg4X3oL+No7Y9YGn@s- zhVi!jS+5g2#6ow*Fk@M4-Y-j7VZWU|1|D2DQ0yShwPawyKN0SDT?DI<;5iFae<8tp z8g!T7EdZP))bdq$f&FoNYzlvVY110`BqC>{J8{CACHA}I{lKwP4PcB4Ea_+M}j3VY>pwd^{-^ zK_TzI#d46Gsa*uU158M;WMcw;6b#};@R(u(J^;&dSte%*d<^Y~{wA-g!tnRlk_)D$ jU=1uqq^4P`Q4N0qbv}fTfRGDe00000NkvXXu0mjfmW(TQ diff --git a/icons/open.png b/icons/open.png index 0720fee850d016e03248ff093af6b4c6cbac7438..e68a7ad8bf0fbef0c7ca57dff7bca1687311b592 100644 GIT binary patch delta 682 zcmV;b0#*I_2D%0ziBL{Q4GJ0x0000DNk~Le0000$0000$2nGNE0IF$m-jN|13l78p z01m_fl`9S#kw%AqSV=@dRCt{2o4-yJK^(_FV^BjuafSB+Vs!;C0HNRofG4n0sl zy9*7+Ns7Jq4}mwpI?z_ga}M-?J?Gq|!uIbV6|e)mRLXLHo6o>j6%rl@>o-(V++`Iw z^xi+#9!M%cW7>yU0S>e!NCi}lx`fyTfU*SXPVi@->v@5(yTbY}z$@q6MS-z`)L{mU zP?-ra3iy`Ow*u^Y?;n*lSd0RWfUi0Ir5++<6mSi^BVR&kKZh6vK!p-w6#x}Uh*@k)CJ{gWZ#&Re4arnN5@ON7#mIAJU55recy0eDJ6i{IOe|d_Uf50hl zHg&oR2+e?P;6=$}%>z$?1>gtZOWuAVLOVgt_5U`1@C@O4q!u9o+Ux((NU%H%Mj^ra zpP;z}YXM*^AqD|pC?TfP;Wj1hd?&78jqW+vbuqFwx4q#0ZU>(4kB)~d=HA#SV0Be!}>j2gy0oDPmNdl|`Skrg` znaj{|InM>u8t2^NWLx8BKoTIV@2jLJm%ox?seoU?dJBF_ibDd<1MMB)J8{m0K7(wX zK!4_U3JK^1+UI~Jpe2e{4J`)QLf1P_vKm9hyTkVls(o5igYg5|)Px# delta 746 zcmVHTd~n1 zet`G^;?J-YY^dY z08_vN5lMU&YLnXTvmy(pfrmcDY*HaP1>6&nF&~Aw-km=1reIws(BWp{3~*OOo++i) z3f2L*ORWN53f9%lk!KoUt726Nzckb69xEJ*Rg?lPc1J`CwXbZcMPS~Lb{4oLBF>Y3 z*;0MrIcBkca}*FOTMDwpdN_(zK?=0k3*f6Ey$9UPD^?XLfMwt%uwY0(58TKjR<=|J zIFvfNz&o_yFfIVsv&6hEBn!|5ZaZFc5go3tO&QAWsiIsKkx5fxNGYGsObQ*YLrDMz zOOgYu565v!fmz6qbMu4qzMi0s%cw*|4g!yWy&KYhz8kLDk)y&DbkC&a7J#?FC16{Q zG76IbGi(;xDs6O+tgv3}1Mm^p1EVc&xbS&$SOXe1q*z`cc z|6U75h|w=0@O&6*NN*30AcUN!f{BG*CjFE0F%gf8$l=ug-@u|$%I{0WocQXo9&mNT zxgR2b@+8)^pNajzOx>gaj@D5ssiRc1&r?3)SR`!2FK(`~Uy|07*qoM6N<$f;Y=m4*&oF diff --git a/icons/open.svg b/icons/open.svg index 725c85078..765e28a68 100644 --- a/icons/open.svg +++ b/icons/open.svg @@ -10,1085 +10,739 @@ 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" - sodipodi:docname="Std_Open.svg" + sodipodi:docname="open.svg" inkscape:version="0.91+devel+osxmenu r12922" sodipodi:version="0.32" - id="svg11300" - height="48" - width="48" + id="svg2" + height="64" + width="64" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1" - viewBox="0 0 48 48"> + viewBox="0 0 64 64" + inkscape:export-filename="/Users/pablo/olive_pablo/icons/open.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + id="defs14"> + style="stop-color:#89d5f8;stop-opacity:1;" /> + style="stop-color:#00899e;stop-opacity:1;" /> + style="stop-color:#ffffff;stop-opacity:1;" /> + style="stop-color:#729fcf;stop-opacity:1" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> + id="stop2848" /> + id="stop2850" /> + id="stop2368" /> + style="stop-color:#ffffff;stop-opacity:0.21904762;" /> + id="stop2370" /> + style="stop-color:#ffffff;stop-opacity:1;" /> + style="stop-color:#ffffff;stop-opacity:0.24761905;" /> + style="stop-color:#729fcf;stop-opacity:0.20784314;" /> + style="stop-color:#729fcf;stop-opacity:0.67619050;" /> + style="stop-color:#7d7d7d;stop-opacity:1;" /> + id="stop4448" /> + style="stop-color:#686868;stop-opacity:1.0000000;" /> + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> + x1="16.874998" + y1="22.851799" + x2="27.900846" + y2="34.976799" + gradientUnits="userSpaceOnUse" /> - - + y1="45.264122" + x2="45.380436" + y2="50.939667" /> + - + - + y1="13.604306" + x2="22.374878" + y2="23.554308" + gradientTransform="rotate(180,23.96967,25.01237)" /> + + id="linearGradient4975" + x1="34.892849" + y1="36.422989" + x2="45.918697" + y2="48.547989" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-18.01785,-13.57119)" /> + style="stop-color:#729fcf" /> + style="stop-color:#5187d6;stop-opacity:1.0000000;" /> - - - - - - - - - - - - - + x1="5.9649177" + y1="26.048164" + x2="52.854095" + y2="26.048164" /> + id="stop2404" /> + id="stop2406" /> + inkscape:collect="always" + id="linearGradient2871"> + id="stop2873" /> + id="stop2875" /> + id="linearGradient2696" + x1="32.647972" + y1="30.748846" + x2="37.124462" + y2="24.842253" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.77039,-5.765705)" /> + inkscape:collect="always" + id="linearGradient2690"> + id="stop2692" /> + id="stop2694" /> + id="linearGradient2688" + x1="36.713837" + y1="31.455952" + x2="37.124462" + y2="24.842253" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.77039,-5.765705)" /> + id="stop2684" /> + id="stop2686" /> + id="stop2382" /> + id="stop2384" /> + id="linearGradient1486" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.30498,-6.043298)" + x1="13.478554" + y1="10.612206" + x2="15.419417" + y2="19.115122" /> + id="stop2833" /> + style="stop-color:#5b86be;stop-opacity:1;" /> + id="stop2835" /> - - - - - + - - - - - - - - - - - - + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" + cx="24.837126" + cy="36.421127" + fx="24.837126" + fy="36.421127" + r="15.644737" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective2833" /> + style="stop-color:#71b2f8;stop-opacity:1;" /> + style="stop-color:#002795;stop-opacity:1;" /> - + + id="radialGradient3352" + gradientUnits="userSpaceOnUse" + cx="345.28433" + cy="15.560534" + fx="345.28433" + fy="15.560534" + r="19.571428" + gradientTransform="translate(-0.1767767,-2.6516504)" /> + id="stop3595" /> + id="stop3597" /> - - + + - + - + - + - + - + - + - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-1" /> - + inkscape:collect="always" /> - - - - - - - - - - - - - - - - - - - - - - - - + id="perspective2833-5-8" /> + id="perspective3372-5-4" /> - - + id="perspective2734-9-2" /> + id="perspective5736-9" /> - - - + + + + + + + + + + + + + + + + + + + style="stop-color:#956363;stop-opacity:1;" /> + style="stop-color:#d17878;stop-opacity:1;" /> + style="stop-color:#e3d328;stop-opacity:1;" /> + style="stop-color:#e1dec3;stop-opacity:1;" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-7" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-5" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + - - + + - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-8-6" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-1-2" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-85" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-51" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + - - + + - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-3" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-99" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + - - + + - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-8-4" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-0-7" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-1-4" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-5-2" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-1-8-0" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-6-1" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-9-4-3" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + - - + + - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-02-2" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-0-9" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + - - + + - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-2" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-55" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-1-0" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-9-47" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-7-6" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-5-2" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + - - + + - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - + + - + - + - - + + - + - + - + - - + gradientTransform="matrix(0.9829174,1.3240854,-1.2330051,0.8105158,-131.04134,-483.74563)" + cx="320.44025" + cy="113.23357" + fx="320.44025" + fy="113.23357" + r="19.571428" /> - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4-8-6-9" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> - + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> - - - - - - - - - - - - - - - - - - - - - + id="perspective2833-9-9" /> + id="perspective3372-4-0" /> - - + id="perspective2734-86-5" /> + id="perspective5736-4-1-2-0" /> - - - - + id="perspective2833-13-4" /> + id="perspective3372-3-8" /> - - + id="perspective2734-7-7" /> + + + + + + + + + + + + + + + + + + - + + fx="225.26402" + cy="672.79736" + cx="225.26402" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + gradientUnits="userSpaceOnUse" + id="radialGradient3850-4-2-5-2" + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:snap-nodes="true" + inkscape:snap-smooth-nodes="true"> + visible="true" + snapvisiblegridlinesonly="true" /> + empcolor="#ffffff" + empopacity="0.47058824" + color="#ffffff" + opacity="0.31372549" + visible="true" + enabled="true" /> @@ -12744,7 +10998,7 @@ http://commons.wikimedia.org/wiki/Tango_icon - + @@ -12766,25 +11020,33 @@ + id="layer1" + transform="translate(0,16)"> + + + - - - diff --git a/icons/redo-disabled.png b/icons/redo-disabled.png index b79499e42d4963111f28c494d201371199218812..4c33a0991a538973fe50c86dab80080c97f1ab25 100644 GIT binary patch delta 657 zcmV;C0&e}k2E+!CI|~lP000ie0hKEb8<9qbe_}~QK~#90?U`Fo6hRP1&j*Sc4H6Oq z>Si@wFp>ZNV+cODNYp4|6g2CimJc(D$|mw?^f5DzEt;u<2a7vIF92u z&NW1r-GMU9>=v*K+yUmm7fEMB#7a(pnQa35!1~gonWT5I~_#D`L5@R|fB_QVw z@IA0??=>O0Z4kiB)`8c+{lKprOM2TSR+0i>JPFAPfN>-wEdYj>kh}mGR>DdMfZ-&p zi~tx$LMH+FiEWGjwfl|ylOjiwj;bC8e+$S@YCFJVvUB<>Q7IuvfSKI`UIKSx_G)BG zB{T{!vmM|$X_n1xDM+ZDw`R5ryco1gmrUhbHM1?UH-A+qodTr-^6h4i7276js9XfA zM!*Ev7_L8~Qo9Wn)&MhGBfFAr;v9Gn`~Vh`E;@HHkbGqBlhq#~)Fuz*i{LiRe|K{y zz=0$S>_~5hNFK_kz=MYGEP%tSkUW$NXbN&H=}%xsdNXA5up}V=OR8!3e+vEaz6_l_ z6h}bQ%KuZ+?=}ItGDh-H6wvhc=WPRYVXWk#D4=O>|LPK?4Pzz`MFD3(-F|-BHBbv) zF;eodBtX(%;E?i>@KMs&KEayEdoNnH1Dp3w9x7^mGur?jl3jdU04I{Z^$pg9nLPrY z1vHJ4JX9QqB`ttii~ubODW{_)59wWUoKnBgMok_P6OdP!2S8b^F^io%BzoS@E7A$s r9pnP|Fvc3>IF92uj^j9vb8Ywsx`f$bVZwK^00000NkvXXu0mjfjDICG delta 652 zcmV;70(1Su2EPW7I|~!9000xO0b}Nl!;waZe_csLK~#90?V4Rr)Ib!5p97+Z28oeC zbhDZ$n8^SCF{l?V5)%j)9LI4S$8j9z z7Gl?3fjT7J1NMRYz!mV-%q~*I%1(f!ZQux4U$`_gvyZXkt;K%e5F{CJNHuwY=aQze ze`97P0N4gLTdq%IOUO;YMnIXVq!+OQ<|g1Wu-qh;gscRZ*%k05u=pg#aL7tP$$Q{? zVA;WQLUzj_fTVTc4e%)NmQyqP&?i=w0$@A|*$RMhBxEfB(o4u*0Hl?$5&|Hdgq0Bh zX(aR#P@dR!_`i3*Q~q+~#LP~bE(QxIe@|+Az%z<-`YO>VAxMCvhrj{wAZD#brdC3y z07-kmOY+<{FH1#2>$sJ)54=iRrE8|KRVD3EwERt>b_mo8D3_ZYyy>H!nr zZo2x6O6xLMnFA!PQM{7w;u81-`~c==_N#Xl11Wpv5yk!^gx2JteiD34_q(}sf8f~6 z6j+hLq(~m>hrn*fJ#*mQO-LT<1#|^DHM2i~6&Xy*!O^{-hpK?C)=e&8%;cde;DYuf&-(^if&)fM9u@?Y zOWQF}x2c(#S?C9gUP#&ko&**jcAPvk?DZvW08c5-|8wATsy`?!#N7p62NaExJTx4K z%Wdr}Mt~&=Sz)3j5Ba_1_(sv=nuwY_WG2AO{sM1-x}D}McJh$vd0)~d#ffx_qDP#i mo`4<4aU92S9LI5P75@O{!`WC2yVU6b0000K~#90?V3S|O<@$rf5)JRlu%?b zWg*JOyprtHY;2XVvU}OQq{!ZK63tE|S+KB}vYIH9valm!V^$(zrbLvIzs0lQx%b`g z-uvBe?wdKkdaHN7d(QXk-qXG3UT_@8aU92S9LHIK*isjeg{1Ak31A#}2i!Nar%PH? ze<~z(Bt4Tf|JU!eq|;60Yte z2Q~p4s~jrNNt)Llw@53M+(+_ z1kNvq%|o_;iGnrP%3GMD~vWNjrcoL*jn{Goc5sON#m6;2E&3Ab#G=K9@;Q zl~lvgK>?!N&qHYi3XCCJSI+U|h7<>S6RT?+sJ002ovPDHLkV1nALK~ew! delta 704 zcmV;x0zdur2J!}wI|~!9000xO0b}Nl!;waZe~?K;K~#90?V7u56j2n1zY`)FFe*L> z!h($nilrh5g3-dlGz(&@jjvY!85Jz-B@z&=>_kz}KfnhB3mYFO(Lx0IS5}cY$$Bu_PoVz|1}X&jQ1jV!RGX2^eq(cpVtqcuYuc8U&EEnQSUN5O~W2GrK!Z zt|SFOcM_5n0NqGPS^%^!A$bANu7rsYe*o=Cm>2=jj)buUNSX%@k*(e5fUV>=FsZO& zW-DbEg9S*M0!{#@fxQt5>ylClK>{T011w)iF5<(^b)u z7Rj2QsKIg+N;gB24g%*{Kg}1u0)+x3%>Y-+u1_GPgJ4;MXMpYP)zc}J(_n54e;6E0 zE(Sb!6?jB;inC^BYvWcJili;TbzmXzmdfU#cn~~H{n^|L;D(v~3M`~CZ8Q(XufWlo zd%gm<*F*DAEMUIoo`+`kBe0OhwAnli36Qi4*j7~!@HF({O=-J%$o~R%)Wp9xv+tuM z7?&=ZhrEEg!SBYjf9~6DT|k%3Ltelt@UbHP`M8Nj;36G04?_Y5Q`=2o zcu^x@+05QFNmhrX9&jWuym9kTveA(=OLp+lBa`vCtv@IXC}nuqjud#}h=nq@?79ugB^Wlffj m7h{m)IF92uj^jAahT%8;3EQuvKyAhV0000 + viewBox="0 0 64 64" + inkscape:export-filename="/Users/pablo/olive_pablo/icons/redo.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + id="defs14" /> + visible="true" + snapvisiblegridlinesonly="true" /> + empcolor="#ffffff" + empopacity="0.47058824" + color="#ffffff" + opacity="0.31372549" + visible="true" + enabled="true" /> @@ -5593,11 +116,13 @@ + id="layer1" + transform="translate(0,16)"> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccssccssccc" /> diff --git a/icons/save-disabled.png b/icons/save-disabled.png index c65944d3051915fa56d0805991da5f6fdbea41f3..03983fb54751cfffebd60f9692374981b5a4366d 100644 GIT binary patch delta 514 zcmV+d0{#7%2DJr{I|~lP000ie0hKEb8<9qae*x1;L_t(|ob8*jPQx%1MUPR{0WpA( zIw8u+Kk)y*z)Cw-Af$pAs;Xv4Q-o@xxXtr*h|iKCZhU=Y#jj2RBgdsQ_TD>S4$Oe5 zL7ok;0+!CXox$~wNEPq^+}T9=#XInvL&8O3`gc1cnMhT?~ zfJ_of762I}lr8{_B@96T7)lt50Dw0PBn(M_r<;V73bVITxKEM>5MTzpbZtDO8PJua zzwG}}KoUv;TVdY^lmb45eIHQX1lRlHf0Z(adKFmnBjOa!T`|G}PT2qN5@bs=?LTPN z^dgAe1LidQ|9$QPPk?LSmc-`~mc#^D?*Cs>kc5~3>;3;?Bq*1`A|$9QLAeCA01!(k zK>!FP1UvNJKjjW$Nc+yg!Z~+Tf0Qx3Qz}7Qw694sEG;K zWKEHW;Fw|pR)#@T1jiJ6OKh<}T74v)lf%PNb&w+Y1}D30Gd;WELjV8(07*qoM6N<$ Ef|$|Qp#T5? delta 614 zcmV-s0-61_1(*hqI|~!9000xO0b}Nl!;waYe*!j1L_t(|ob8)SZ`3dpM$avU7SK#Z zg-8Sv3j`9Z`2YWceUaGkmJo=6QjMS=i#1)Kw)h)Wo4Ig}~@x@C}ELdgPP0tuxH zfXotd-qc)$Bew53{`7pmkt8#Fow}n^e+3*|d{Ss7otfF&lup-S38e5awL=L4eveq| zR%(an5|DHkXaYq;YjH{cbAofao2AeV(|6#wKW09H0xkyslHF&>F3$#+bc6l2(f)&O z791w*58x*0$B8XsGoVQfvnxxw2P$7T+GDe$k3-fT^(X0X?*8l(j07*qoM6N<$f-9vF A`Tzg` diff --git a/icons/save.png b/icons/save.png index ca3ef3f619c35c464dffb0ea621dcc286b6dbfea..ab4b3f22a9d4b7482392e9b04883e77491610ec5 100644 GIT binary patch delta 580 zcmV-K0=xap2KNP!I|~lP000ie0hKEb8<9qbe-%kYK~#90?VCML92j$4Ol9x=6tD*@0kZ~qo`4JBz&ZD7aQtt?3iu0b8fE#+4Y1vWgkO>MmrYW9 ze`gUm_TEohHxw(tqT7d90FJCB#0qE{a|x*n0AmTUgWyA;Xl;nLJCXHofi36U%Mfh^ zX+sa_VbT*)6mVZrwg4P@?|;|TSc(EpfV+zFT5pjl3itrdsFqOM<&dHPXi!3`0-zxY zDGPuGB&03?j3u-|02C6=F}OvxMF7A%e{f2*ghgN{=Ae_KBr>8i;`dj8e}h(TQx6!F znV8ByQ9u+*0nfs=`zQrm3)}9a90aer+do8Jw{@Zv@Bv(QKf}@)HAJa^A?E)F3Gz(Q z?XM_KJ_$l&z%H;sy|chGz$&l~Ow@SXkq8N}od2Jvkeh^rkO1rX|2Yzopu7zxe<4Br zOHeLBEdaz4QV;+_38hblDxLtfk=~kvedpZU*TPhKfF-jOYZ`XT3dcb}kCn2W<0PQ; z57#&eC?yL}2T+p*r~|0U0@MN2WC7{`YO(-z05w^FI)IuiKpj9$7N8EGCJRspP?H6y z1E|RY)B)6l1UxmGq8T2`c7_C8E*J(;QF>0HRbu4{xcYZ50 S%NIBR0000Q*<*=LlQy+gtQ4^9(bBsLQ{hY zrA1;1mm~GF3VaQ0`|5)F7J!JnPO&lOJ_G)dY$o)J07xVuR{?(<e@t{3AqY51XgfMh_)PZ6##HV0}^r;e*g_g$Xx&=mJsV86r20Nom$yZkLz1NM?_Y9 z4@&0uO-kTGfu_^1F1e*|Qu2 z-+*;X-DluY@0jVZ?wqHCe*p|f{=6^1d#XoYXPE_V16Mry8pEU+4 z4{(oa*}dbugmvt*qZc!TZIzY5uhDFn<79vfHp;db^vXP0PO(U6am@+ zv?&6#187qOXa~@y2+$6oO%b3SKpU5UPNONB!8#_F0P8QQea=r?p-aFA;Cs3(jk5uK zv{g7?N)VADs=vq9-xKUNegi*@F@Lp#6msMQG6jd?K{*u;00000NkvXX1g=70f_c{= A761SM diff --git a/icons/save.svg b/icons/save.svg index 1fd4a736b..840663468 100644 --- a/icons/save.svg +++ b/icons/save.svg @@ -7,8474 +7,40 @@ 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" - sodipodi:docname="Std_Save.svg" + sodipodi:docname="save.svg" inkscape:version="0.91+devel+osxmenu r12922" sodipodi:version="0.32" - id="svg11300" - height="48" - width="48" + id="svg2" + height="64" + width="64" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1" - viewBox="0 0 48 48"> + viewBox="0 0 64 64" + inkscape:export-filename="/Users/pablo/olive_pablo/icons/save.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + id="defs14" /> + inkscape:snap-nodes="true" + inkscape:snap-smooth-nodes="true"> + visible="true" + snapvisiblegridlinesonly="true" /> + empcolor="#ffffff" + empopacity="0.47058824" + color="#ffffff" + opacity="0.31372549" + visible="true" + enabled="true" /> @@ -8546,20 +116,28 @@ + id="layer1" + transform="translate(0,16)"> + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:none;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:0.8627451;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="m 14,1 c -1.656786,1.657e-4 -2.999834,1.3432144 -3,3 l 0,21 6,0 0,-18 13,0 0,14 c 1.66e-4,1.656786 1.343214,2.999834 3,3 l 14,0 0,9 6,0 0,-14 c -1.53e-4,-0.795597 -0.316297,-1.558559 -0.878906,-2.121094 l -15,-14.9999998 C 36.558559,1.3162974 35.795597,1.0001531 35,1 Z M 36,9.2421875 44.757812,18 36,18 Z" + transform="translate(0,-16)" + id="path10890" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccccc" /> - + diff --git a/icons/treeview-disabled.png b/icons/treeview-disabled.png index f8fa8c2aeda53d786e4cb9e94440dc9a0ee46a62..be95cb9f06551ef59108aa2ef2460ac680b667e7 100644 GIT binary patch delta 329 zcmV-P0k;0%1pWh%I|~lP000ie0hKEb8<9qbe;i3fK~#90?bxvn!XOkz;U8U{T#fPl zAImgdom>qrjVV~G5&~ZD`8KO*;5tB#1h^KK9>y5=k`9t~lD17(RNqa~Rnizjxa40x z4IsvNl5}jaupWjG!g>B+GygFC^Z&YeNjgq@eAr|^I5b>LFUcPB0qhzsq?crm`2gI> ze+O{wvWm8nJ>~-#8!n`mWRJ-JrgL&=x}3I#{4U`BA_M^NZ1ET@^`pn+_ z=u%Mf|DVAJq^5}6K@kdu!fVHQ*pcn^TI;<>N)tz;xf5%5bU@^dYkOd355P09ir3C0 z`~lz2x!-FKF9zU)Z-Mp1jm4$_cISgQ8GsM}0X#-*EG7rwvpIzG*L%xy!$X;E+x(&) ze}Mn@m-gCUW9_p7r*FX149(0%oi+6nel*Pi{LI!xeCn+A0Q|{V%+gL=imqE=M|o8& zl>=qQ8ZAO?zs_Y97DD7r>mfJKz<1tFRCvZ?ZoGbq$87EFX|Yc#sbOh1*K~#90?U*r612GUqzbQFP4#81U zM55*#)GJZsC>(<1EGaQf3fl=5jI41+ey{Ud8hy{M)}to@EKR!iFz5UtX)kFf>De{W zcrKE@Bpp*qpY7&N19Hx9l3pEx&0tF@y_XNF23+6#hifE%4&|5d)NJmZ!_1&MW7~k8 ze`AnYRA+1(kR5}};=5e54LCUlnZ>zWv<)~q2AM^5#;O6=zvJc_$Cs_01(qL#003ZR z?p}jd9`ySBpAWDS#3S^5fR$h#q3Z*zMDhq-A7CYtN9g(hE0H`x*9TaMK z@VgJN638R`%?DVCI0yj%z{)It4dMevPgKPR-~;dh_<%umJirH(3w*%H>JbMa003B- z<*z|}z=*2&0DJ&G03R@@jtBUFa)A#RSv}$)1h6mzY$o4!|vPV%*Tzh>^;i_8Q{ zU|;<&6Q8=;#8VaB?R&Omer-O=BvNkwdEP~_6J1e_zl00URQ&s#%kn9z@#%gCt%#qC zb}_ua+9;TO!2M_1Muwy3EN&m`nKN_iTqgb}?nfhLPQJdwp*P^MzEEast3al3>2&kW zu@87|^v}FK`D~4Y_?aB080PQ;aXn{FwO*eYrh)w<{0-pT6mWI z%L5~)HuYY+1={L@Mm7`q7aU|Sd8!K(T3zeFKTj#8;?gVTT_2ci+)sQ=*vtRI=~8dN zTP@}skcE@~sI5reP`;_A0SFyhc>JF*Pv8eZjX-6QuUHl7U{mG#>JP&UzP-MllLT8C OfWXt$&t;ucLK6VRhsTTn diff --git a/icons/treeview.svg b/icons/treeview.svg index b71892e52..bda0c0248 100644 --- a/icons/treeview.svg +++ b/icons/treeview.svg @@ -10,25773 +10,727 @@ 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" - sodipodi:docname="icon_treeview.svg" + sodipodi:docname="treeview.svg" inkscape:version="0.91+devel+osxmenu r12922" sodipodi:version="0.32" - id="svg11300" - height="48" - width="48" + id="svg2" + height="64" + width="64" inkscape:output_extension="org.inkscape.output.svg.inkscape" version="1.1" - viewBox="0 0 48 48"> + viewBox="0 0 64 64" + inkscape:export-filename="/Users/pablo/olive_pablo/icons/treeview.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + id="defs14"> + style="stop-color:#89d5f8;stop-opacity:1;" /> + style="stop-color:#00899e;stop-opacity:1;" /> + style="stop-color:#ffffff;stop-opacity:1;" /> + style="stop-color:#729fcf;stop-opacity:1" /> + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> + id="stop2848" /> + id="stop2850" /> + id="stop2368" /> + style="stop-color:#ffffff;stop-opacity:0.21904762;" /> + id="stop2370" /> + style="stop-color:#ffffff;stop-opacity:1;" /> + style="stop-color:#ffffff;stop-opacity:0.24761905;" /> + style="stop-color:#729fcf;stop-opacity:0.20784314;" /> + style="stop-color:#729fcf;stop-opacity:0.67619050;" /> + style="stop-color:#7d7d7d;stop-opacity:1;" /> + id="stop4448" /> + style="stop-color:#686868;stop-opacity:1.0000000;" /> + cx="23.070683" + cy="35.127438" + fx="23.070683" + fy="35.127438" + r="10.31934" + gradientTransform="matrix(0.914812,0.01265023,-0.00821502,0.213562,2.253914,27.18889)" + gradientUnits="userSpaceOnUse" /> + x1="16.874998" + y1="22.851799" + x2="27.900846" + y2="34.976799" + gradientUnits="userSpaceOnUse" /> - - + y1="45.264122" + x2="45.380436" + y2="50.939667" /> + - + - + y1="13.604306" + x2="22.374878" + y2="23.554308" + gradientTransform="rotate(180,23.96967,25.01237)" /> + + id="linearGradient4975" + x1="34.892849" + y1="36.422989" + x2="45.918697" + y2="48.547989" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-18.01785,-13.57119)" /> + style="stop-color:#729fcf" /> + style="stop-color:#5187d6;stop-opacity:1.0000000;" /> - - - - - - - - - - - - - + x1="5.9649177" + y1="26.048164" + x2="52.854095" + y2="26.048164" /> + id="stop2404" /> + id="stop2406" /> + inkscape:collect="always" + id="linearGradient2871"> + id="stop2873" /> + id="stop2875" /> + id="linearGradient2696" + x1="32.647972" + y1="30.748846" + x2="37.124462" + y2="24.842253" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.77039,-5.765705)" /> + inkscape:collect="always" + id="linearGradient2690"> + id="stop2692" /> + id="stop2694" /> + id="linearGradient2688" + x1="36.713837" + y1="31.455952" + x2="37.124462" + y2="24.842253" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.77039,-5.765705)" /> + id="stop2684" /> + id="stop2686" /> + id="stop2382" /> + id="stop2384" /> + id="linearGradient1486" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-48.30498,-6.043298)" + x1="13.478554" + y1="10.612206" + x2="15.419417" + y2="19.115122" /> + id="stop2833" /> + style="stop-color:#5b86be;stop-opacity:1;" /> + id="stop2835" /> - - - - - + - - - - - - - - - - - - + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" + cx="24.837126" + cy="36.421127" + fx="24.837126" + fy="36.421127" + r="15.644737" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="64 : 32 : 1" + inkscape:persp3d-origin="32 : 21.333333 : 1" + id="perspective2833" /> + style="stop-color:#71b2f8;stop-opacity:1;" /> + style="stop-color:#002795;stop-opacity:1;" /> - + + id="radialGradient3352" + gradientUnits="userSpaceOnUse" + cx="345.28433" + cy="15.560534" + fx="345.28433" + fy="15.560534" + r="19.571428" + gradientTransform="translate(-0.1767767,-2.6516504)" /> + id="stop3595" /> + id="stop3597" /> - - + + - + - + - + - + - + - + - + - + - - + + - + + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.6985294,0,202.82863)" + cx="225.26402" + cy="672.79736" + fx="225.26402" + fy="672.79736" + r="34.345188" /> + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective5736-4" /> - + inkscape:collect="always" /> + xlink:href="#linearGradient4467" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> - + + xlink:href="#linearGradient3593" + inkscape:collect="always" /> - - + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + xlink:href="#linearGradient3593" + inkscape:collect="always" /> + xlink:href="#linearGradient3864" + inkscape:collect="always" /> + inkscape:vp_z="64 : 32 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 32 : 1" + sodipodi:type="inkscape:persp3d" /> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + visible="true" + snapvisiblegridlinesonly="true" /> + empcolor="#ffffff" + empopacity="0.47058824" + color="#ffffff" + opacity="0.31372549" + visible="true" + enabled="true" /> @@ -25849,30 +806,31 @@ - + id="layer1" + transform="translate(0,16)"> - + + diff --git a/icons/undo-disabled.png b/icons/undo-disabled.png index 99306ac93fe0e56dc04ad579d7d8a77f990b1e77..8667795e28892e1b7a5298ed4b774d919e2480fa 100644 GIT binary patch delta 667 zcmV;M0%ZNl2F(VLI|~lP000ie0hKEb8<9qbe``rZK~#90?V3?<(=Zf;zcbbj38*R! z34~z0pb3fp|0j3{!C(?p6&nMMYEZ`3Zg&sKq^wQj#BoNN`IGt(+sVy2jg#w}KqL~0 zL?V$$Boc|-LDbZN&1?W{16#l;a46}lsd&CLVt|>w0A4OM&w=-nPMV16%SPw}n%NG^ zf8qf)fn76e?5gu2r~#??oq{3vfkDWabqQub3Gvr#hKd=2AO=(r4=@c8GZeKAs3`tO z(!aVfLsH9tisDaz{W|fQ!26EuA^x4D3*UH6;blNq#Dj+cT@nu!4d|M9s9-=B#Y0I0 zx+)$@7|><$;4q+~_}gZl{!W44z{F>zf4S0tmWyA-U*H??U6PgAA=iL46`y4a>`8L2 zJC+RSfcR@JfzOhTiUtKQh_r|ek^;;V*Pt6n8UbG#I;sD`D>ECe>dd_YB#nVlW2bbx zh~!GRm)E&+3Zz#;S4`*w&+|IgHW4zj9*M9Az%$^XW0x85cJcApiBvePG`}W!e-BZ_ z2T4D(4W*s}6{o`hc(ZEGH9`8X?g8hHp^q0EN=?FGlCP8pwA}>Yhoir5 zW?R{Y%85{$O^`GrSq~J^&u(~Sf^9YdaFyMA*$wYhxWy*8ZiMsfMy<7ghY7oN;+5pM zpzj>`lWnNI7^-N(wwXPu8`E(;^W;CbRPuH{0_-FLq{0}p|H;1c*MB7bwm3nhyIs`?CgzEFG(ycdySj+mkBr2axxJz`lr zf50yAN>#Isx)72YP>MfV)8sDDPZ=|oWCk=4KVvsl%oHRsz(YL1C`HUvL>u5K{#-<^ zVq>Nx$^cLCL*Qdfyc`6t$N}QtiO4iGUM_+R=!$p@-&zf6#LAtGEEpfNvtAO+HX-z?O=yG6GIS#JTTS zGN1$EXWRfEMC5#3qvQu7En(XWs ziji=qu5#rRC`Uq9Oy~hm>ngT35mMDX3SkGp6X3q%BNO25;_I;!sc?DH{F>q(e_|cS zBJ!hJ(C97TIUV}In^kiz2jzeD1QO)W_*k%&|*RlIv^&vPFZm|ij8|X>(A!;uWV8Y9ocnw*% z4qO3$ss+)TAx{$yRrOwMOhP3o92 yzyJ%)F&1^CCTi7tARzx2GW;PCtcL~1-MkW1>UAHLPVje6*Jis2{K+KwDiDp0! z@tf?7RWk-r31sgD#dqTsFa=CYTF>)`js|Q|@oAm|6Ox`~CAM{f4G<5o7nnA)6IqE- z*8^(CcHo+so$Qs=Z3>(RCaO5Af51A)bI5F`VAC#w-B==7ifg+)cbx)~CV|N+f6uCq z3Uuzq>F@z~7_(+sL832+Y?yEZ zu$IsYaJg>p2dn%@>IiTO7y+IFHzj?ns-ELGj^j9v<2a5Jz#n^%23o<^r0@U$002ov JPDHLkV1m-DKV|>` delta 730 zcmV<00ww*42aE@hI|~!9000xO0b}Nl!;waZf2v7DK~#90?V3$%)j$-6pSLO~XsL=D z7b0lgxD?%puH1=G^bZIkf;;^mbtfoYh-*=bpr9ZwgbKP97ga&DSg(jwTIlujxJWAT zek7S>=90#FHkZtto0In?lQ}a9L?V$$Boc{4B9X{{h(ev%%=QC^fSo`Gcr58lsC-ok ze`0`{odQnxoPQOVmh?JA&Z><0KB1XS0cYqpcMEXA%r^SYSqHBMq~fP?LUsZBeCDi+ zHv>wDUt_DUoIdbkfP;8|1s^$mQQH7V@pFB;-@8btK@S@5}bEp9g7e9;-zysikq~B%!FwlT?Dn845U`EorqQE`_S|EOnAHWSsb9q7D zH$)o5Cg8l89nTBuGeFWTa4XbRjTixE&FtW?fPr^_qer6j(l)@u3VGT3e09+(_50S@J zNzbzlrDg%g;cx)BJZ#K`K+-Q@23RTxJ<{7ydKz2@CUk-O1!0rD4Ni4H(@g-L0+!Q1 zVP-qB4bFv7lTDDc3@jFeZOFWS*vkkQuLyjgKHnZJza~53BJaC8phv8S?S~_L^#mlQ|Nwa1K<%*>}BpVmO zkaX9~UINERs>KE1Vfv8#2XF7{9ZXp9l{1fYd#rGa%2ZYP + viewBox="0 0 64 64" + inkscape:export-filename="/Users/pablo/olive_pablo/icons/undo.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + id="defs14" /> + visible="true" + snapvisiblegridlinesonly="true" /> + empcolor="#ffffff" + empopacity="0.47058824" + color="#ffffff" + opacity="0.31372549" + visible="true" + enabled="true" /> @@ -5593,11 +116,13 @@ + id="layer1" + transform="translate(0,16)"> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccssccssccc" /> From 6d73277c6679a0a340e313282ae5d47df022df28 Mon Sep 17 00:00:00 2001 From: Pablo Gil Date: Sat, 19 Jan 2019 16:52:23 +0100 Subject: [PATCH 06/32] Project pane now with icons --- panels/project.cpp | 72 +++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/panels/project.cpp b/panels/project.cpp index bf1b44e02..fb6deffb8 100644 --- a/panels/project.cpp +++ b/panels/project.cpp @@ -25,6 +25,7 @@ #include "ui/sourcetable.h" #include "ui/sourceiconview.h" #include "project/sourcescommon.h" +#include "project/projectfilter.h" #include "debug.h" #include @@ -37,7 +38,6 @@ #include #include #include -#include #include #include #include @@ -72,7 +72,7 @@ Project::Project(QWidget *parent) : sources_common = new SourcesCommon(this); - sorter = new QSortFilterProxyModel(this); + sorter = new ProjectFilter(this); sorter->setSourceModel(&project_model); // optional toolbar @@ -84,66 +84,66 @@ Project::Project(QWidget *parent) : toolbar_widget->setLayout(toolbar); QPushButton* toolbar_new = new QPushButton(toolbar_widget); - QIcon icon1; - icon1.addFile(QStringLiteral(":/icons/add-button.png"), QSize(), QIcon::Normal, QIcon::On); - icon1.addFile(QStringLiteral(":/icons/add-button-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); - toolbar_new->setIcon(icon1); + QIcon icon1; + icon1.addFile(QStringLiteral(":/icons/add-button.png"), QSize(), QIcon::Normal, QIcon::On); + icon1.addFile(QStringLiteral(":/icons/add-button-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_new->setIcon(icon1); toolbar_new->setToolTip("New"); connect(toolbar_new, SIGNAL(clicked(bool)), this, SLOT(make_new_menu())); toolbar->addWidget(toolbar_new); QPushButton* toolbar_open = new QPushButton(toolbar_widget); - QIcon icon2; - icon2.addFile(QStringLiteral(":/icons/open.png"), QSize(), QIcon::Normal, QIcon::On); - icon2.addFile(QStringLiteral(":/icons/open-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); - toolbar_open->setIcon(icon2); + QIcon icon2; + icon2.addFile(QStringLiteral(":/icons/open.png"), QSize(), QIcon::Normal, QIcon::On); + icon2.addFile(QStringLiteral(":/icons/open-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_open->setIcon(icon2); toolbar_open->setToolTip("Open Project"); connect(toolbar_open, SIGNAL(clicked(bool)), mainWindow, SLOT(open_project())); toolbar->addWidget(toolbar_open); QPushButton* toolbar_save = new QPushButton(toolbar_widget); - QIcon icon3; - icon3.addFile(QStringLiteral(":/icons/save.png"), QSize(), QIcon::Normal, QIcon::On); - icon3.addFile(QStringLiteral(":/icons/save-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); - toolbar_save->setIcon(icon3); + QIcon icon3; + icon3.addFile(QStringLiteral(":/icons/save.png"), QSize(), QIcon::Normal, QIcon::On); + icon3.addFile(QStringLiteral(":/icons/save-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_save->setIcon(icon3); toolbar_save->setToolTip("Save Project"); connect(toolbar_save, SIGNAL(clicked(bool)), mainWindow, SLOT(save_project())); toolbar->addWidget(toolbar_save); QPushButton* toolbar_undo = new QPushButton(toolbar_widget); - QIcon icon4; - icon4.addFile(QStringLiteral(":/icons/undo.png"), QSize(), QIcon::Normal, QIcon::On); - icon4.addFile(QStringLiteral(":/icons/undo-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); - toolbar_undo->setIcon(icon4); + QIcon icon4; + icon4.addFile(QStringLiteral(":/icons/undo.png"), QSize(), QIcon::Normal, QIcon::On); + icon4.addFile(QStringLiteral(":/icons/undo-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_undo->setIcon(icon4); toolbar_undo->setToolTip("Undo"); connect(toolbar_undo, SIGNAL(clicked(bool)), mainWindow, SLOT(undo())); toolbar->addWidget(toolbar_undo); QPushButton* toolbar_redo = new QPushButton(toolbar_widget); - QIcon icon5; - icon5.addFile(QStringLiteral(":/icons/redo.png"), QSize(), QIcon::Normal, QIcon::On); - icon5.addFile(QStringLiteral(":/icons/redo-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); - toolbar_redo->setIcon(icon5); + QIcon icon5; + icon5.addFile(QStringLiteral(":/icons/redo.png"), QSize(), QIcon::Normal, QIcon::On); + icon5.addFile(QStringLiteral(":/icons/redo-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_redo->setIcon(icon5); toolbar_redo->setToolTip("Redo"); connect(toolbar_redo, SIGNAL(clicked(bool)), mainWindow, SLOT(redo())); toolbar->addWidget(toolbar_redo); toolbar->addStretch(); - QPushButton* toolbar_tree_view = new QPushButton(toolbar_widget); - QIcon icon6; - icon6.addFile(QStringLiteral(":/icons/treeview.png"), QSize(), QIcon::Normal, QIcon::On); - icon6.addFile(QStringLiteral(":/icons/treeview-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); - toolbar_tree_view->setIcon(icon6); - toolbar_tree_view->setToolTip("Tree View"); - connect(toolbar_tree_view, SIGNAL(clicked(bool)), this, SLOT(set_tree_view())); - toolbar->addWidget(toolbar_tree_view); + QPushButton* toolbar_tree_view = new QPushButton(toolbar_widget); + QIcon icon6; + icon6.addFile(QStringLiteral(":/icons/treeview.png"), QSize(), QIcon::Normal, QIcon::On); + icon6.addFile(QStringLiteral(":/icons/treeview-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_tree_view->setIcon(icon6); + toolbar_tree_view->setToolTip("Tree View"); + connect(toolbar_tree_view, SIGNAL(clicked(bool)), this, SLOT(set_tree_view())); + toolbar->addWidget(toolbar_tree_view); QPushButton* toolbar_icon_view = new QPushButton(toolbar_widget); - QIcon icon7; - icon7.addFile(QStringLiteral(":/icons/iconview.png"), QSize(), QIcon::Normal, QIcon::On); - icon7.addFile(QStringLiteral(":/icons/iconview-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); - toolbar_icon_view->setIcon(icon7); + QIcon icon7; + icon7.addFile(QStringLiteral(":/icons/iconview.png"), QSize(), QIcon::Normal, QIcon::On); + icon7.addFile(QStringLiteral(":/icons/iconview-disabled.png"), QSize(), QIcon::Disabled, QIcon::On); + toolbar_icon_view->setIcon(icon7); toolbar_icon_view->setToolTip("Icon View"); connect(toolbar_icon_view, SIGNAL(clicked(bool)), this, SLOT(set_icon_view())); toolbar->addWidget(toolbar_icon_view); @@ -442,7 +442,7 @@ Media* Project::new_folder(QString name) { Media *Project::item_to_media(const QModelIndex &index) { return static_cast(sorter->mapToSource(index).internalPointer()); -// return static_cast(index.internalPointer()); +// return static_cast(index.internalPointer()); } void Project::get_all_media_from_table(QList& items, QList& list, int search_type) { @@ -939,7 +939,7 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only, } // save_folder(stream, item, type, set_ids_only); } else { - int folder = (m->parentItem() != nullptr) ? m->parentItem()->temp_id : 0; + int folder = m->parentItem()->temp_id; if (type == MEDIA_TYPE_FOOTAGE) { Footage* f = m->to_footage(); f->save_id = media_id; From 0c6335eb67d5f46026f85cd6a1f2e80a9e6b8790 Mon Sep 17 00:00:00 2001 From: eszlari Date: Sat, 19 Jan 2019 18:18:19 +0100 Subject: [PATCH 07/32] snap: use make install --- snap/snapcraft.yaml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index be32acb53..baf03cbf6 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -41,13 +41,9 @@ parts: - libslang2 - libglu1-mesa override-build: | - qmake olive.pro + qmake PREFIX=$SNAPCRAFT_PART_INSTALL make - mkdir -p $SNAPCRAFT_PART_INSTALL/bin/effects - cp olive-editor $SNAPCRAFT_PART_INSTALL/bin - cp effects/*.xml $SNAPCRAFT_PART_INSTALL/bin/effects - cp effects/*.frag $SNAPCRAFT_PART_INSTALL/bin/effects - cp effects/*.vert $SNAPCRAFT_PART_INSTALL/bin/effects + make install snapcraftctl set-version $(git rev-parse --short HEAD) desktop-qt5: build-packages: From 1c620af9f5fc67af9d3eefb22a86d8f4a9104b6d Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Jan 2019 12:07:22 +1100 Subject: [PATCH 08/32] work on frei0r support --- effects/internal/frei0reffect.cpp | 64 +++++++++++ effects/internal/frei0reffect.h | 20 ++++ io/path.cpp | 9 ++ io/path.h | 1 + main.cpp | 11 +- olive.pro | 8 +- panels/panels.cpp | 1 + playback/playback.cpp | 27 +++-- project/effect.cpp | 178 +----------------------------- project/effect.h | 6 +- project/effectloaders.cpp | 178 ++++++++++++++++++++++++++++++ project/effectloaders.h | 8 ++ 12 files changed, 318 insertions(+), 193 deletions(-) create mode 100644 effects/internal/frei0reffect.cpp create mode 100644 effects/internal/frei0reffect.h create mode 100644 project/effectloaders.cpp create mode 100644 project/effectloaders.h diff --git a/effects/internal/frei0reffect.cpp b/effects/internal/frei0reffect.cpp new file mode 100644 index 000000000..dddbc5c90 --- /dev/null +++ b/effects/internal/frei0reffect.cpp @@ -0,0 +1,64 @@ +#include "frei0reffect.h" + +#include + +#include + +typedef f0r_instance_t (*f0rConstructFunc)(unsigned int width, unsigned int height); +typedef int (*f0rInitFunc) (); +typedef void (*f0rDeinitFunc) (); +typedef void (*f0rUpdateFunc) (f0r_instance_t instance, + double time, const uint32_t* inframe, uint32_t* outframe); +typedef void (*f0rDestructFunc)(f0r_instance_t instance); + +Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : Effect(c, em) { + enable_image = true; + + add_row("Heck"); + + + // Windows DLL loading routine + QString dll_fn = "E:/invert0r.dll"; + LPCWSTR dll_fn_w = reinterpret_cast(dll_fn.utf16()); + + modulePtr = LoadLibrary(dll_fn_w); + if(modulePtr == nullptr) { + DWORD dll_err = GetLastError(); + qCritical() << "Failed to load VST" << dll_fn_w << "-" << dll_err; + QString msg_err = tr("Failed to load VST plugin \"%1\": %2").arg(dll_fn, QString::number(dll_err)); + if (dll_err == 193) { +#ifdef _WIN64 + msg_err += "\n\n" + tr("NOTE: You can't load 32-bit VST plugins into a 64-bit build of Olive. Please find a 64-bit version of this plugin or switch to a 32-bit build of Olive."); +#elif _WIN32 + msg_err += "\n\n" + tr("NOTE: You can't load 64-bit VST plugins into a 32-bit build of Olive. Please find a 32-bit version of this plugin or switch to a 64-bit build of Olive."); +#endif + } + QMessageBox::critical(nullptr, tr("Error loading VST plugin"), msg_err); + return; + } + + f0rConstructFunc construct = reinterpret_cast(GetProcAddress(modulePtr, "f0r_construct")); + + f0rInitFunc init = reinterpret_cast(GetProcAddress(modulePtr, "f0r_init")); + + init(); + + instance = construct(1920, 1080); +} + +Frei0rEffect::~Frei0rEffect() { + if (modulePtr != nullptr) { + FreeModule(modulePtr); + + f0rDestructFunc destruct = reinterpret_cast(GetProcAddress(modulePtr, "f0r_destruct")); + destruct(instance); + + f0rDeinitFunc deinit = reinterpret_cast(GetProcAddress(modulePtr, "f0r_deinit")); + deinit(); + } +} + +void Frei0rEffect::process_image(double timecode, uint8_t *input, uint8_t *output, int size) { + f0rUpdateFunc update_func = reinterpret_cast(GetProcAddress(modulePtr, "f0r_update")); + update_func(instance, timecode, reinterpret_cast(input), reinterpret_cast(output)); +} diff --git a/effects/internal/frei0reffect.h b/effects/internal/frei0reffect.h new file mode 100644 index 000000000..241941921 --- /dev/null +++ b/effects/internal/frei0reffect.h @@ -0,0 +1,20 @@ +#ifndef FREI0REFFECT_H +#define FREI0REFFECT_H + +#include "project/effect.h" + +#include + +class Frei0rEffect : public Effect { + Q_OBJECT +public: + Frei0rEffect(Clip* c, const EffectMeta* em); + ~Frei0rEffect(); + + virtual void process_image(double timecode, uint8_t* input, uint8_t* output, int size); +private: + HMODULE modulePtr; + f0r_instance_t instance; +}; + +#endif // FREI0REFFECT_H diff --git a/io/path.cpp b/io/path.cpp index 2d24812f0..79248904d 100644 --- a/io/path.cpp +++ b/io/path.cpp @@ -32,3 +32,12 @@ QString get_config_path() { return QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation); } } + +QList get_effects_paths() { + QList effects_paths; + effects_paths.append(get_app_dir() + "/effects"); + effects_paths.append(get_app_dir() + "/../share/olive-editor/effects"); + QString env_path(qgetenv("OLIVE_EFFECTS_PATH")); + if (!env_path.isEmpty()) effects_paths.append(env_path); + return effects_paths; +} diff --git a/io/path.h b/io/path.h index 9eff9033f..2e2f6d841 100644 --- a/io/path.h +++ b/io/path.h @@ -6,5 +6,6 @@ QString get_app_dir(); QString get_data_path(); QString get_config_path(); +QList get_effects_paths(); #endif // PATH_H diff --git a/main.cpp b/main.cpp index 2b15e5bac..d11e9886d 100644 --- a/main.cpp +++ b/main.cpp @@ -20,9 +20,7 @@ int main(int argc, char *argv[]) { bool launch_fullscreen = false; QString load_proj; -#ifndef NODEBUG - qInstallMessageHandler(debug_message_handler); -#endif + bool use_internal_logger = true; if (argc > 1) { for (int i=1;i diff --git a/playback/playback.cpp b/playback/playback.cpp index 4e16d8d54..b8573942e 100644 --- a/playback/playback.cpp +++ b/playback/playback.cpp @@ -255,26 +255,35 @@ void get_clip_frame(Clip* c, long playhead, bool& texture_failed) { int nb_components = av_pix_fmt_desc_get(static_cast(c->pix_fmt))->nb_components; glPixelStorei(GL_UNPACK_ROW_LENGTH, target_frame->linesize[0]/nb_components); - bool copied = false; - uint8_t* data = target_frame->data[0]; + // 2 data buffers to ping-pong between + bool using_db_1 = true; + uint8_t* data_buffer_1 = target_frame->data[0]; + uint8_t* data_buffer_2 = nullptr; + int frame_size; for (int i=0;ieffects.size();i++) { Effect* e = c->effects.at(i); if (e->enable_image) { - if (!copied) { + if (data_buffer_1 == target_frame->data[0]) { frame_size = target_frame->linesize[0]*target_frame->height; - data = new uint8_t[frame_size]; - memcpy(data, target_frame->data[0], frame_size); - copied = true; + + data_buffer_1 = new uint8_t[frame_size]; + data_buffer_2 = new uint8_t[frame_size]; + + memcpy(data_buffer_1, target_frame->data[0], frame_size); } - e->process_image(get_timecode(c, playhead), data, frame_size); + e->process_image(get_timecode(c, playhead), using_db_1 ? data_buffer_1 : data_buffer_2, using_db_1 ? data_buffer_2 : data_buffer_1, frame_size); + using_db_1 = !using_db_1; } } - c->texture->setData(0, get_gl_pix_fmt_from_av(c->pix_fmt), QOpenGLTexture::UInt8, data); + c->texture->setData(0, get_gl_pix_fmt_from_av(c->pix_fmt), QOpenGLTexture::UInt8, using_db_1 ? data_buffer_1 : data_buffer_2); - if (copied) delete [] data; + if (data_buffer_1 != target_frame->data[0]) { + delete [] data_buffer_1; + delete [] data_buffer_2; + } glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); } diff --git a/project/effect.cpp b/project/effect.cpp index 8812364a3..386d006c9 100644 --- a/project/effect.cpp +++ b/project/effect.cpp @@ -32,6 +32,7 @@ #include "effects/internal/vsthostwin.h" #endif #include "effects/internal/fillleftrighteffect.h" +#include "effects/internal/frei0reffect.h" #include #include @@ -69,6 +70,7 @@ Effect* create_effect(Clip* c, const EffectMeta* em) { #ifdef _WIN32 case EFFECT_INTERNAL_VST: return new VSTHostWin(c, em); #endif + case EFFECT_INTERNAL_FREI0R: return new Frei0rEffect(c, em); } } else { qCritical() << "Invalid effect data"; @@ -88,180 +90,6 @@ const EffectMeta* get_internal_meta(int internal_id, int type) { return nullptr; } -void load_internal_effects() { - if (!shaders_are_enabled) qWarning() << "Shaders are disabled, some effects may be nonfunctional"; - - EffectMeta em; - - // internal effects - em.type = EFFECT_TYPE_EFFECT; - em.subtype = EFFECT_TYPE_AUDIO; - - em.name = "Volume"; - em.internal = EFFECT_INTERNAL_VOLUME; - effects.append(em); - - em.name = "Pan"; - em.internal = EFFECT_INTERNAL_PAN; - effects.append(em); - -#ifdef _WIN32 - em.name = "VST Plugin 2.x"; - em.internal = EFFECT_INTERNAL_VST; - effects.append(em); -#endif - - em.name = "Tone"; - em.internal = EFFECT_INTERNAL_TONE; - effects.append(em); - - em.name = "Noise"; - em.internal = EFFECT_INTERNAL_NOISE; - effects.append(em); - - em.name = "Fill Left/Right"; - em.internal = EFFECT_INTERNAL_FILLLEFTRIGHT; - effects.append(em); - - em.subtype = EFFECT_TYPE_VIDEO; - - em.name = "Transform"; - em.category = "Distort"; - em.internal = EFFECT_INTERNAL_TRANSFORM; - effects.append(em); - - em.name = "Corner Pin"; - em.internal = EFFECT_INTERNAL_CORNERPIN; - effects.append(em); - - /*em.name = "Mask"; - em.internal = EFFECT_INTERNAL_MASK; - effects.append(em);*/ - - em.name = "Shake"; - em.internal = EFFECT_INTERNAL_SHAKE; - effects.append(em); - - em.name = "Text"; - em.category = "Render"; - em.internal = EFFECT_INTERNAL_TEXT; - effects.append(em); - - em.name = "Timecode"; - em.internal = EFFECT_INTERNAL_TIMECODE; - effects.append(em); - - em.name = "Solid"; - em.internal = EFFECT_INTERNAL_SOLID; - effects.append(em); - - // internal transitions - em.type = EFFECT_TYPE_TRANSITION; - em.category = ""; - - em.name = "Cross Dissolve"; - em.internal = TRANSITION_INTERNAL_CROSSDISSOLVE; - effects.append(em); - - em.subtype = EFFECT_TYPE_AUDIO; - - em.name = "Linear Fade"; - em.internal = TRANSITION_INTERNAL_LINEARFADE; - effects.append(em); - - em.name = "Exponential Fade"; - em.internal = TRANSITION_INTERNAL_EXPONENTIALFADE; - effects.append(em); - - em.name = "Logarithmic Fade"; - em.internal = TRANSITION_INTERNAL_LOGARITHMICFADE; - effects.append(em); -} - -QList get_effects_paths() { - QList effects_paths; - effects_paths.append(get_app_dir() + "/effects"); - effects_paths.append(get_app_dir() + "/../share/olive-editor/effects"); - QString env_path(qgetenv("OLIVE_EFFECTS_PATH")); - if (!env_path.isEmpty()) effects_paths.append(env_path); - return effects_paths; -} - -void load_shader_effects() { - QList effects_paths = get_effects_paths(); - - for (int h=0;h entries = effects_dir.entryList(QStringList("*.xml"), QDir::Files); - for (int i=0;istart(); -} - -EffectInit::EffectInit() { - panel_effect_controls->effects_loaded.lock(); -} - -void EffectInit::run() { - qInfo() << "Initializing effects..."; - load_internal_effects(); - load_shader_effects(); - load_vst_effects(); - panel_effect_controls->effects_loaded.unlock(); - qInfo() << "Finished initializing effects"; -} - Effect::Effect(Clip* c, const EffectMeta *em) : parent_clip(c), meta(em), @@ -866,7 +694,7 @@ void Effect::endEffect() { bound = false; } -void Effect::process_image(double, uint8_t *, int) {} +void Effect::process_image(double, uint8_t *input, uint8_t *output, int) {} Effect* Effect::copy(Clip* c) { Effect* copy = create_effect(c, meta); diff --git a/project/effect.h b/project/effect.h index 330426b2c..2bc940458 100644 --- a/project/effect.h +++ b/project/effect.h @@ -38,7 +38,6 @@ extern bool shaders_are_enabled; extern QVector effects; double log_volume(double linear); -void init_effects(); Effect* create_effect(Clip* c, const EffectMeta *em); const EffectMeta* get_internal_meta(int internal_id, int type); @@ -65,7 +64,8 @@ const EffectMeta* get_internal_meta(int internal_id, int type); #define EFFECT_INTERNAL_FILLLEFTRIGHT 10 #define EFFECT_INTERNAL_VST 11 #define EFFECT_INTERNAL_CORNERPIN 12 -#define EFFECT_INTERNAL_COUNT 13 +#define EFFECT_INTERNAL_FREI0R 13 +#define EFFECT_INTERNAL_COUNT 14 #define KEYFRAME_TYPE_LINEAR 0 #define KEYFRAME_TYPE_BEZIER 1 @@ -156,7 +156,7 @@ public: const char* ffmpeg_filter; - virtual void process_image(double timecode, uint8_t* data, int size); + virtual void process_image(double timecode, uint8_t* input, uint8_t* output, int size); virtual void process_shader(double timecode, GLTextureCoords&); virtual void process_coords(double timecode, GLTextureCoords& coords, int data); virtual GLuint process_superimpose(double timecode); diff --git a/project/effectloaders.cpp b/project/effectloaders.cpp new file mode 100644 index 000000000..1af06cca9 --- /dev/null +++ b/project/effectloaders.cpp @@ -0,0 +1,178 @@ +#include "effectloaders.h" + +#include "project/effect.h" +#include "project/transition.h" +#include "io/path.h" +#include "panels/panels.h" +#include "panels/effectcontrols.h" + +#include +#include + +#include + +void load_internal_effects() { + if (!shaders_are_enabled) qWarning() << "Shaders are disabled, some effects may be nonfunctional"; + + EffectMeta em; + + // internal effects + em.type = EFFECT_TYPE_EFFECT; + em.subtype = EFFECT_TYPE_AUDIO; + + em.name = "Volume"; + em.internal = EFFECT_INTERNAL_VOLUME; + effects.append(em); + + em.name = "Pan"; + em.internal = EFFECT_INTERNAL_PAN; + effects.append(em); + +#ifdef _WIN32 + em.name = "VST Plugin 2.x"; + em.internal = EFFECT_INTERNAL_VST; + effects.append(em); +#endif + + em.name = "Tone"; + em.internal = EFFECT_INTERNAL_TONE; + effects.append(em); + + em.name = "Noise"; + em.internal = EFFECT_INTERNAL_NOISE; + effects.append(em); + + em.name = "Fill Left/Right"; + em.internal = EFFECT_INTERNAL_FILLLEFTRIGHT; + effects.append(em); + + em.subtype = EFFECT_TYPE_VIDEO; + + // TEMPORARY begin + em.name = "Frei0r Plugin"; + em.internal = EFFECT_INTERNAL_FREI0R; + effects.append(em); + // TEMPORARY end + + em.name = "Transform"; + em.category = "Distort"; + em.internal = EFFECT_INTERNAL_TRANSFORM; + effects.append(em); + + em.name = "Corner Pin"; + em.internal = EFFECT_INTERNAL_CORNERPIN; + effects.append(em); + + /*em.name = "Mask"; + em.internal = EFFECT_INTERNAL_MASK; + effects.append(em);*/ + + em.name = "Shake"; + em.internal = EFFECT_INTERNAL_SHAKE; + effects.append(em); + + em.name = "Text"; + em.category = "Render"; + em.internal = EFFECT_INTERNAL_TEXT; + effects.append(em); + + em.name = "Timecode"; + em.internal = EFFECT_INTERNAL_TIMECODE; + effects.append(em); + + em.name = "Solid"; + em.internal = EFFECT_INTERNAL_SOLID; + effects.append(em); + + // internal transitions + em.type = EFFECT_TYPE_TRANSITION; + em.category = ""; + + em.name = "Cross Dissolve"; + em.internal = TRANSITION_INTERNAL_CROSSDISSOLVE; + effects.append(em); + + em.subtype = EFFECT_TYPE_AUDIO; + + em.name = "Linear Fade"; + em.internal = TRANSITION_INTERNAL_LINEARFADE; + effects.append(em); + + em.name = "Exponential Fade"; + em.internal = TRANSITION_INTERNAL_EXPONENTIALFADE; + effects.append(em); + + em.name = "Logarithmic Fade"; + em.internal = TRANSITION_INTERNAL_LOGARITHMICFADE; + effects.append(em); +} + +void load_shader_effects() { + QList effects_paths = get_effects_paths(); + + for (int h=0;h entries = effects_dir.entryList(QStringList("*.xml"), QDir::Files); + for (int i=0;istart(); +} + +EffectInit::EffectInit() { + panel_effect_controls->effects_loaded.lock(); +} + +void EffectInit::run() { + qInfo() << "Initializing effects..."; + load_internal_effects(); + load_shader_effects(); + panel_effect_controls->effects_loaded.unlock(); + qInfo() << "Finished initializing effects"; +} diff --git a/project/effectloaders.h b/project/effectloaders.h new file mode 100644 index 000000000..3d88cf64e --- /dev/null +++ b/project/effectloaders.h @@ -0,0 +1,8 @@ +#ifndef EFFECTLOADERS_H +#define EFFECTLOADERS_H + +#include + +void init_effects(); + +#endif // EFFECTLOADERS_H From d5eab3673c69ac34a72cec81aa64b1f7294687e7 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Jan 2019 21:06:21 +1100 Subject: [PATCH 09/32] windows frei0r support done --- effects/internal/frei0reffect.cpp | 118 +++++++++++++++++++++++++++--- effects/internal/frei0reffect.h | 5 ++ io/avtogl.cpp | 8 +- io/config.h | 4 +- io/loadthread.cpp | 16 +++- panels/grapheditor.cpp | 12 +-- playback/cacher.cpp | 2 +- project/effect.cpp | 12 +-- project/effect.h | 56 +++++++------- project/effectfield.cpp | 88 +++++++++++----------- project/effectloaders.cpp | 64 ++++++++++++++-- project/effectrow.cpp | 2 +- ui/graphview.cpp | 30 ++++---- ui/keyframedrawing.cpp | 6 +- ui/keyframeview.cpp | 18 ++--- 15 files changed, 305 insertions(+), 136 deletions(-) diff --git a/effects/internal/frei0reffect.cpp b/effects/internal/frei0reffect.cpp index dddbc5c90..46d5e5cf0 100644 --- a/effects/internal/frei0reffect.cpp +++ b/effects/internal/frei0reffect.cpp @@ -1,6 +1,7 @@ #include "frei0reffect.h" #include +#include #include @@ -10,15 +11,15 @@ typedef void (*f0rDeinitFunc) (); typedef void (*f0rUpdateFunc) (f0r_instance_t instance, double time, const uint32_t* inframe, uint32_t* outframe); typedef void (*f0rDestructFunc)(f0r_instance_t instance); +typedef void (*f0rGetPluginInfo)(f0r_plugin_info_t* info); +typedef void (*f0rSetParamValue) (f0r_instance_t instance, + f0r_param_t param, int param_index); Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : Effect(c, em) { enable_image = true; - add_row("Heck"); - - // Windows DLL loading routine - QString dll_fn = "E:/invert0r.dll"; + QString dll_fn = QDir(em->path).filePath(em->filename); LPCWSTR dll_fn_w = reinterpret_cast(dll_fn.utf16()); modulePtr = LoadLibrary(dll_fn_w); @@ -37,28 +38,125 @@ Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : Effect(c, em) { return; } - f0rConstructFunc construct = reinterpret_cast(GetProcAddress(modulePtr, "f0r_construct")); - f0rInitFunc init = reinterpret_cast(GetProcAddress(modulePtr, "f0r_init")); - init(); + f0rConstructFunc construct = reinterpret_cast(GetProcAddress(modulePtr, "f0r_construct")); instance = construct(1920, 1080); + + f0r_plugin_info_t info; + f0rGetPluginInfo info_func = reinterpret_cast(GetProcAddress(modulePtr, "f0r_get_plugin_info")); + info_func(&info); + + param_count = info.num_params; + + qDebug() << "Frei0r Name:" << info.name; + qDebug() << "Frei0r Param Count:" << info.num_params; + qDebug() << "Frei0r Explanation:" << info.explanation; + + get_param_info = reinterpret_cast(GetProcAddress(modulePtr, "f0r_get_param_info")); + for (int i=0;i= 0 && param_info.type <= F0R_PARAM_STRING) { + EffectRow* row = add_row(param_info.name); + switch (param_info.type) { + case F0R_PARAM_BOOL: + row->add_field(EFFECT_FIELD_BOOL, QString::number(i)); + break; + case F0R_PARAM_DOUBLE: + { + EffectField* f = row->add_field(EFFECT_FIELD_DOUBLE, QString::number(i)); + f->set_double_minimum_value(0); + f->set_double_maximum_value(100); + } + break; + case F0R_PARAM_COLOR: + row->add_field(EFFECT_FIELD_COLOR, QString::number(i)); + break; + case F0R_PARAM_POSITION: + { + EffectField* fx = row->add_field(EFFECT_FIELD_DOUBLE, QString("%1X").arg(QString::number(i))); + fx->set_double_minimum_value(0); + fx->set_double_maximum_value(100); + EffectField* fy = row->add_field(EFFECT_FIELD_DOUBLE, QString("%1Y").arg(QString::number(i))); + fy->set_double_minimum_value(0); + fy->set_double_maximum_value(100); + } + break; + case F0R_PARAM_STRING: + row->add_field(EFFECT_FIELD_STRING, QString::number(i)); + break; + } + } + } } Frei0rEffect::~Frei0rEffect() { if (modulePtr != nullptr) { - FreeModule(modulePtr); - f0rDestructFunc destruct = reinterpret_cast(GetProcAddress(modulePtr, "f0r_destruct")); destruct(instance); f0rDeinitFunc deinit = reinterpret_cast(GetProcAddress(modulePtr, "f0r_deinit")); deinit(); + + FreeModule(modulePtr); } } -void Frei0rEffect::process_image(double timecode, uint8_t *input, uint8_t *output, int size) { +void Frei0rEffect::process_image(double timecode, uint8_t *input, uint8_t *output, int) { f0rUpdateFunc update_func = reinterpret_cast(GetProcAddress(modulePtr, "f0r_update")); + + for (int i=0;i(GetProcAddress(modulePtr, "f0r_set_param_value")); + switch (param_info.type) { + case F0R_PARAM_BOOL: + { + double b = param_row->field(0)->get_bool_value(timecode); + set_param(instance, &b, i); + } + break; + case F0R_PARAM_DOUBLE: + { + double d = param_row->field(0)->get_double_value(timecode)*0.01; + set_param(instance, &d, i); + } + break; + case F0R_PARAM_COLOR: + { + QColor qcolor = param_row->field(0)->get_color_value(timecode);; + + f0r_param_color fcolor; + fcolor.r = float(qcolor.redF()); + fcolor.g = float(qcolor.greenF()); + fcolor.b = float(qcolor.blueF()); + + set_param(instance, &fcolor, i); + } + break; + case F0R_PARAM_POSITION: + { + f0r_param_position pos; + pos.x = param_row->field(0)->get_double_value(timecode); + pos.y = param_row->field(1)->get_double_value(timecode); + set_param(instance, &pos, i); + } + break; + case F0R_PARAM_STRING: + { + QByteArray bytes = param_row->field(0)->get_string_value(timecode).toUtf8(); + char* byte_data = bytes.data(); + set_param(instance, &byte_data, i); + } + break; + } + } + update_func(instance, timecode, reinterpret_cast(input), reinterpret_cast(output)); } diff --git a/effects/internal/frei0reffect.h b/effects/internal/frei0reffect.h index 241941921..1992cbda3 100644 --- a/effects/internal/frei0reffect.h +++ b/effects/internal/frei0reffect.h @@ -5,6 +5,9 @@ #include +typedef void (*f0rGetParamInfo)(f0r_param_info_t * info, + int param_index ); + class Frei0rEffect : public Effect { Q_OBJECT public: @@ -15,6 +18,8 @@ public: private: HMODULE modulePtr; f0r_instance_t instance; + int param_count; + f0rGetParamInfo get_param_info; }; #endif // FREI0REFFECT_H diff --git a/io/avtogl.cpp b/io/avtogl.cpp index 895612c6b..3b2e39c4e 100644 --- a/io/avtogl.cpp +++ b/io/avtogl.cpp @@ -5,15 +5,15 @@ extern "C" { } enum QOpenGLTexture::PixelFormat get_gl_pix_fmt_from_av(int format) { - switch (format) { + /*switch (format) { case AV_PIX_FMT_RGB24: return QOpenGLTexture::RGB; - } + }*/ return QOpenGLTexture::RGBA; } enum QOpenGLTexture::TextureFormat get_gl_tex_fmt_from_av(int format) { - switch (format) { + /*switch (format) { case AV_PIX_FMT_RGB24: return QOpenGLTexture::RGB8_UNorm; - } + }*/ return QOpenGLTexture::RGBA8_UNorm; } diff --git a/io/config.h b/io/config.h index 9a6806216..6ab3078bc 100644 --- a/io/config.h +++ b/io/config.h @@ -3,7 +3,7 @@ #include -#define SAVE_VERSION 190104 // YYMMDD +#define SAVE_VERSION 190120 // YYMMDD #define MIN_SAVE_VERSION 190104 // lowest compatible project version #define TIMECODE_DROP 0 @@ -63,7 +63,7 @@ struct Config { bool seek_also_selects; QString css_path; int effect_textbox_lines; - bool use_software_fallback; + bool use_software_fallback; void load(QString path); void save(QString path); diff --git a/io/loadthread.cpp b/io/loadthread.cpp index 64d87ff9a..c7cd80f40 100644 --- a/io/loadthread.cpp +++ b/io/loadthread.cpp @@ -37,9 +37,21 @@ LoadThread::LoadThread(LoadDialog* l, bool a) : ld(l), autorecovery(a), cancelle connect(this, SIGNAL(start_create_effect_ui(QXmlStreamReader*, Clip*, int, const QString*, const EffectMeta*, long, bool)), this, SLOT(create_effect_ui(QXmlStreamReader*, Clip*, int, const QString*, const EffectMeta*, long, bool))); } -const EffectMeta* get_meta_from_name(const QString& name) { +const EffectMeta* get_meta_from_name(const QString& input) { + int split_index = input.indexOf('/'); + QString category; + if (split_index > -1) { + category = input.left(split_index); + } + QString name = input.mid(split_index + 1); + + qDebug() << "CAT:" << category; + qDebug() << "NAM:" << name; + for (int j=0;jaddStretch(); linear_button = new QPushButton(tr("Linear")); - linear_button->setProperty("type", KEYFRAME_TYPE_LINEAR); + linear_button->setProperty("type", EFFECT_KEYFRAME_LINEAR); linear_button->setCheckable(true); bezier_button = new QPushButton(tr("Bezier")); - bezier_button->setProperty("type", KEYFRAME_TYPE_BEZIER); + bezier_button->setProperty("type", EFFECT_KEYFRAME_BEZIER); bezier_button->setCheckable(true); hold_button = new QPushButton(tr("Hold")); - hold_button->setProperty("type", KEYFRAME_TYPE_HOLD); + hold_button->setProperty("type", EFFECT_KEYFRAME_HOLD); hold_button->setCheckable(true); center_tool_layout->addStretch(); @@ -216,11 +216,11 @@ void GraphEditor::select_all() { void GraphEditor::set_key_button_enabled(bool e, int type) { linear_button->setEnabled(e); - linear_button->setChecked(type == KEYFRAME_TYPE_LINEAR); + linear_button->setChecked(type == EFFECT_KEYFRAME_LINEAR); bezier_button->setEnabled(e); - bezier_button->setChecked(type == KEYFRAME_TYPE_BEZIER); + bezier_button->setChecked(type == EFFECT_KEYFRAME_BEZIER); hold_button->setEnabled(e); - hold_button->setChecked(type == KEYFRAME_TYPE_HOLD); + hold_button->setChecked(type == EFFECT_KEYFRAME_HOLD); } void GraphEditor::passthrough_slider_value() { diff --git a/playback/cacher.cpp b/playback/cacher.cpp index 3066402e1..9770279d2 100644 --- a/playback/cacher.cpp +++ b/playback/cacher.cpp @@ -767,7 +767,7 @@ void open_clip_worker(Clip* clip) { }*/ enum AVPixelFormat valid_pix_fmts[] = { - AV_PIX_FMT_RGB24, +// AV_PIX_FMT_RGB24, AV_PIX_FMT_RGBA, AV_PIX_FMT_NONE }; diff --git a/project/effect.cpp b/project/effect.cpp index 386d006c9..83ddad8d8 100644 --- a/project/effect.cpp +++ b/project/effect.cpp @@ -50,10 +50,7 @@ bool shaders_are_enabled = true; QVector effects; Effect* create_effect(Clip* c, const EffectMeta* em) { - if (!em->filename.isEmpty()) { - // load effect from file - return new Effect(c, em); - } else if (em->internal >= 0 && em->internal < EFFECT_INTERNAL_COUNT) { + if (em->internal >= 0 && em->internal < EFFECT_INTERNAL_COUNT) { // must be an internal effect switch (em->internal) { case EFFECT_INTERNAL_TRANSFORM: return new TransformEffect(c, em); @@ -72,6 +69,9 @@ Effect* create_effect(Clip* c, const EffectMeta* em) { #endif case EFFECT_INTERNAL_FREI0R: return new Frei0rEffect(c, em); } + } else if (!em->filename.isEmpty()) { + // load effect from file + return new Effect(c, em); } else { qCritical() << "Invalid effect data"; QMessageBox::critical(mainWindow, @@ -118,7 +118,7 @@ Effect::Effect(Clip* c, const EffectMeta *em) : // set up UI from effect file container->setText(em->name); - if (!em->filename.isEmpty()) { + if (!em->filename.isEmpty() && em->internal == -1) { QFile effect_file(em->filename); if (effect_file.open(QFile::ReadOnly)) { QXmlStreamReader reader(&effect_file); @@ -563,7 +563,7 @@ void Effect::load(QXmlStreamReader& stream) { void Effect::custom_load(QXmlStreamReader &) {} void Effect::save(QXmlStreamWriter& stream) { - stream.writeAttribute("name", meta->name); + stream.writeAttribute("name", meta->category + "/" + meta->name); stream.writeAttribute("enabled", QString::number(is_enabled())); for (int i=0;i keyframes.at(key).time) == post) - && (comp_key == -1 - || ((keyframes.at(i).time < keyframes.at(comp_key).time) == post))) { - // compare with next keyframe for post or previous frame for pre - comp_key = i; - } - } + // find keyframe before or after this one + for (int i=0;i keyframes.at(key).time) == post) + && (comp_key == -1 + || ((keyframes.at(i).time < keyframes.at(comp_key).time) == post))) { + // compare with next keyframe for post or previous frame for pre + comp_key = i; + } + } - double adjusted_key = post ? keyframes.at(key).post_handle_x : keyframes.at(key).pre_handle_x; + double adjusted_key = post ? keyframes.at(key).post_handle_x : keyframes.at(key).pre_handle_x; - // if this is the earliest/latest keyframe, no validation is required - if (comp_key == -1) { - return adjusted_key; - } + // if this is the earliest/latest keyframe, no validation is required + if (comp_key == -1) { + return adjusted_key; + } - double comp = keyframes.at(comp_key).time - keyframes.at(key).time; + double comp = keyframes.at(comp_key).time - keyframes.at(key).time; - // if comp keyframe is bezier, validate with its accompanying handle - if (keyframes.at(comp_key).type == KEYFRAME_TYPE_BEZIER) { - double relative_comp_handle = comp + (post ? keyframes.at(comp_key).pre_handle_x : keyframes.at(comp_key).post_handle_x); - // return an average - if ((post && keyframes.at(key).post_handle_x > relative_comp_handle) - || (!post && keyframes.at(key).pre_handle_x < relative_comp_handle)) { - adjusted_key = (adjusted_key + relative_comp_handle)*0.5; - } - } + // if comp keyframe is bezier, validate with its accompanying handle + if (keyframes.at(comp_key).type == EFFECT_KEYFRAME_BEZIER) { + double relative_comp_handle = comp + (post ? keyframes.at(comp_key).pre_handle_x : keyframes.at(comp_key).post_handle_x); + // return an average + if ((post && keyframes.at(key).post_handle_x > relative_comp_handle) + || (!post && keyframes.at(key).pre_handle_x < relative_comp_handle)) { + adjusted_key = (adjusted_key + relative_comp_handle)*0.5; + } + } - // don't let handle go beyond the compare keyframe's time - if (post == (adjusted_key > comp)) { - return comp; - } + // don't let handle go beyond the compare keyframe's time + if (post == (adjusted_key > comp)) { + return comp; + } - if (post == (adjusted_key < 0)) { - return 0; - } + if (post == (adjusted_key < 0)) { + return 0; + } - // original value is valid - return adjusted_key; + // original value is valid + return adjusted_key; } QVariant EffectField::get_previous_data() { @@ -162,7 +162,7 @@ QVariant EffectField::get_current_data() { } double EffectField::frameToTimecode(long frame) { - return ((double) frame / parent_row->parent_effect->parent_clip->sequence->frame_rate); + return (double(frame) / parent_row->parent_effect->parent_clip->sequence->frame_rate); } long EffectField::timecodeToFrame(double timecode) { @@ -242,22 +242,22 @@ QVariant EffectField::validate_keyframe_data(double timecode, bool async) { double before_dbl = before_key.data.toDouble(); double after_dbl = after_key.data.toDouble(); - if (before_key.type == KEYFRAME_TYPE_HOLD) { + if (before_key.type == EFFECT_KEYFRAME_HOLD) { // hold value = before_dbl; - } else if (before_key.type == KEYFRAME_TYPE_BEZIER || after_key.type == KEYFRAME_TYPE_BEZIER) { + } else if (before_key.type == EFFECT_KEYFRAME_BEZIER || after_key.type == EFFECT_KEYFRAME_BEZIER) { // bezier interpolation - if (before_key.type == KEYFRAME_TYPE_BEZIER && after_key.type == KEYFRAME_TYPE_BEZIER) { + if (before_key.type == EFFECT_KEYFRAME_BEZIER && after_key.type == EFFECT_KEYFRAME_BEZIER) { // cubic bezier - double t = cubic_t_from_x(timecode*parent_row->parent_effect->parent_clip->sequence->frame_rate, before_key.time, before_key.time+get_validated_keyframe_handle(before_keyframe, true), after_key.time+get_validated_keyframe_handle(after_keyframe, false), after_key.time); + double t = cubic_t_from_x(timecode*parent_row->parent_effect->parent_clip->sequence->frame_rate, before_key.time, before_key.time+get_validated_keyframe_handle(before_keyframe, true), after_key.time+get_validated_keyframe_handle(after_keyframe, false), after_key.time); value = cubic_from_t(before_dbl, before_dbl+before_key.post_handle_y, after_dbl+after_key.pre_handle_y, after_dbl, t); - } else if (after_key.type == KEYFRAME_TYPE_LINEAR) { // quadratic bezier + } else if (after_key.type == EFFECT_KEYFRAME_LINEAR) { // quadratic bezier // last keyframe is the bezier one - double t = quad_t_from_x(timecode*parent_row->parent_effect->parent_clip->sequence->frame_rate, before_key.time, before_key.time+get_validated_keyframe_handle(before_keyframe, true), after_key.time); + double t = quad_t_from_x(timecode*parent_row->parent_effect->parent_clip->sequence->frame_rate, before_key.time, before_key.time+get_validated_keyframe_handle(before_keyframe, true), after_key.time); value = quad_from_t(before_dbl, before_dbl+before_key.post_handle_y, after_dbl, t); } else { // this keyframe is the bezier one - double t = quad_t_from_x(timecode*parent_row->parent_effect->parent_clip->sequence->frame_rate, before_key.time, after_key.time+get_validated_keyframe_handle(after_keyframe, false), after_key.time); + double t = quad_t_from_x(timecode*parent_row->parent_effect->parent_clip->sequence->frame_rate, before_key.time, after_key.time+get_validated_keyframe_handle(after_keyframe, false), after_key.time); value = quad_from_t(before_dbl, after_dbl+after_key.pre_handle_y, after_dbl, t); } } else { diff --git a/project/effectloaders.cpp b/project/effectloaders.cpp index 1af06cca9..017d3d08f 100644 --- a/project/effectloaders.cpp +++ b/project/effectloaders.cpp @@ -11,6 +11,9 @@ #include +#include +typedef void (*f0rGetPluginInfo)(f0r_plugin_info_t* info); + void load_internal_effects() { if (!shaders_are_enabled) qWarning() << "Shaders are disabled, some effects may be nonfunctional"; @@ -48,12 +51,6 @@ void load_internal_effects() { em.subtype = EFFECT_TYPE_VIDEO; - // TEMPORARY begin - em.name = "Frei0r Plugin"; - em.internal = EFFECT_INTERNAL_FREI0R; - effects.append(em); - // TEMPORARY end - em.name = "Transform"; em.category = "Distort"; em.internal = EFFECT_INTERNAL_TRANSFORM; @@ -165,6 +162,60 @@ void init_effects() { init_thread->start(); } +void load_frei0r_effects() { + QList effect_dirs = get_effects_paths(); + int lim = effect_dirs.size(); + + // add extra search paths for frei0r effects + for (int i=0;i entry_list = search_dir.entryList(QStringList("*.dll")); + for (int j=0;j(search_dir.filePath(entry_list.at(j)).utf16())); + if (effect != nullptr) { + f0rGetPluginInfo get_info_func = reinterpret_cast(GetProcAddress(effect, "f0r_get_plugin_info")); + if (get_info_func != nullptr) { + f0r_plugin_info_t info; + get_info_func(&info); + + if (info.plugin_type == F0R_PLUGIN_TYPE_FILTER + && info.color_model == F0R_COLOR_MODEL_RGBA8888) { + em.name = info.name; + em.path = effect_dirs.at(i); + em.filename = entry_list.at(j); + + effects.append(em); + } + +// qDebug() << "Found:" << info.name << "by" << info.author; + } + FreeLibrary(effect); + } + + +// qDebug() << search_dir.filePath(entry_list.at(j)); + } + } + } +} + EffectInit::EffectInit() { panel_effect_controls->effects_loaded.lock(); } @@ -173,6 +224,7 @@ void EffectInit::run() { qInfo() << "Initializing effects..."; load_internal_effects(); load_shader_effects(); + load_frei0r_effects(); panel_effect_controls->effects_loaded.unlock(); qInfo() << "Finished initializing effects"; } diff --git a/project/effectrow.cpp b/project/effectrow.cpp index d40c77bcf..8a378cd51 100644 --- a/project/effectrow.cpp +++ b/project/effectrow.cpp @@ -197,7 +197,7 @@ void EffectRow::set_keyframe_now(ComboAction* ca) { } } if (exist_key == -1) { - key.type = (f->keyframes.size() == 0) ? KEYFRAME_TYPE_LINEAR : f->keyframes.at(closest_key).type; + key.type = (f->keyframes.size() == 0) ? EFFECT_KEYFRAME_LINEAR : f->keyframes.at(closest_key).type; key.data = f->get_current_data();//f->keyframes.at(closest_key).data; unsafe_keys[i] = f->keyframes.size(); f->keyframes.append(key); diff --git a/ui/graphview.cpp b/ui/graphview.cpp index 30cee5707..9fb8377f1 100644 --- a/ui/graphview.cpp +++ b/ui/graphview.cpp @@ -238,33 +238,33 @@ void GraphView::paintEvent(QPaintEvent *) { } else { const EffectKeyframe& last_key = field->keyframes.at(sorted_keys.at(j-1)); - double pre_handle = field->get_validated_keyframe_handle(sorted_keys.at(j), false); - double last_post_handle = field->get_validated_keyframe_handle(sorted_keys.at(j-1), true); + double pre_handle = field->get_validated_keyframe_handle(sorted_keys.at(j), false); + double last_post_handle = field->get_validated_keyframe_handle(sorted_keys.at(j-1), true); - if (last_key.type == KEYFRAME_TYPE_HOLD) { + if (last_key.type == EFFECT_KEYFRAME_HOLD) { // hold p.drawLine(last_key_x, last_key_y, key_x, last_key_y); p.drawLine(key_x, last_key_y, key_x, key_y); - } else if (last_key.type == KEYFRAME_TYPE_BEZIER || key.type == KEYFRAME_TYPE_BEZIER) { + } else if (last_key.type == EFFECT_KEYFRAME_BEZIER || key.type == EFFECT_KEYFRAME_BEZIER) { QPainterPath bezier_path; bezier_path.moveTo(last_key_x, last_key_y); - if (last_key.type == KEYFRAME_TYPE_BEZIER && key.type == KEYFRAME_TYPE_BEZIER) { + if (last_key.type == EFFECT_KEYFRAME_BEZIER && key.type == EFFECT_KEYFRAME_BEZIER) { // cubic bezier bezier_path.cubicTo( - QPointF(last_key_x+last_post_handle*zoom, last_key_y-last_key.post_handle_y*zoom), - QPointF(key_x+pre_handle*zoom, key_y-key.pre_handle_y*zoom), + QPointF(last_key_x+last_post_handle*zoom, last_key_y-last_key.post_handle_y*zoom), + QPointF(key_x+pre_handle*zoom, key_y-key.pre_handle_y*zoom), QPointF(key_x, key_y) ); - } else if (key.type == KEYFRAME_TYPE_LINEAR) { // quadratic bezier + } else if (key.type == EFFECT_KEYFRAME_LINEAR) { // quadratic bezier // last keyframe is the bezier one bezier_path.quadTo( - QPointF(last_key_x+last_post_handle*zoom, last_key_y-last_key.post_handle_y*zoom), + QPointF(last_key_x+last_post_handle*zoom, last_key_y-last_key.post_handle_y*zoom), QPointF(key_x, key_y) ); } else { // this keyframe is the bezier one bezier_path.quadTo( - QPointF(key_x+pre_handle*zoom, key_y-key.pre_handle_y*zoom), + QPointF(key_x+pre_handle*zoom, key_y-key.pre_handle_y*zoom), QPointF(key_x, key_y) ); } @@ -286,7 +286,7 @@ void GraphView::paintEvent(QPaintEvent *) { int key_x = get_screen_x(key.time); int key_y = get_screen_y(key.data.toDouble()); - if (key.type == KEYFRAME_TYPE_BEZIER) { + if (key.type == EFFECT_KEYFRAME_BEZIER) { p.setPen(Qt::gray); // pre handle line @@ -612,24 +612,24 @@ void GraphView::mouseMoveEvent(QMouseEvent *event) { && event->pos().x() <= key_x) { QRect mouse_rect(event->pos().x()-BEZIER_LINE_SIZE, event->pos().y()-BEZIER_LINE_SIZE, BEZIER_LINE_SIZE+BEZIER_LINE_SIZE, BEZIER_LINE_SIZE+BEZIER_LINE_SIZE); // NOTE: FILTHY copy/paste from paintEvent - if (last_key.type == KEYFRAME_TYPE_HOLD) { + if (last_key.type == EFFECT_KEYFRAME_HOLD) { // hold if (event->pos().y() >= last_key_y-BEZIER_LINE_SIZE && event->pos().y() <= last_key_y+BEZIER_LINE_SIZE) { // dout << "make an HOLD key on field" << i << "after key" << j; click_add = true; } - } else if (last_key.type == KEYFRAME_TYPE_BEZIER || key.type == KEYFRAME_TYPE_BEZIER) { + } else if (last_key.type == EFFECT_KEYFRAME_BEZIER || key.type == EFFECT_KEYFRAME_BEZIER) { QPainterPath bezier_path; bezier_path.moveTo(last_key_x, last_key_y); - if (last_key.type == KEYFRAME_TYPE_BEZIER && key.type == KEYFRAME_TYPE_BEZIER) { + if (last_key.type == EFFECT_KEYFRAME_BEZIER && key.type == EFFECT_KEYFRAME_BEZIER) { // cubic bezier bezier_path.cubicTo( QPointF(last_key_x+last_key.post_handle_x*zoom, last_key_y-last_key.post_handle_y*zoom), QPointF(key_x+key.pre_handle_x*zoom, key_y-key.pre_handle_y*zoom), QPointF(key_x, key_y) ); - } else if (key.type == KEYFRAME_TYPE_LINEAR) { // quadratic bezier + } else if (key.type == EFFECT_KEYFRAME_LINEAR) { // quadratic bezier // last keyframe is the bezier one bezier_path.quadTo( QPointF(last_key_x+last_key.post_handle_x*zoom, last_key_y-last_key.post_handle_y*zoom), diff --git a/ui/keyframedrawing.cpp b/ui/keyframedrawing.cpp index 53229e46c..2621472b7 100644 --- a/ui/keyframedrawing.cpp +++ b/ui/keyframedrawing.cpp @@ -14,16 +14,16 @@ void draw_keyframe(QPainter &p, int type, int x, int y, bool darker, int r, int p.setBrush(QColor(r, g, b)); switch (type) { - case KEYFRAME_TYPE_LINEAR: + case EFFECT_KEYFRAME_LINEAR: { QPoint points[KEYFRAME_POINT_COUNT] = {QPoint(x-KEYFRAME_SIZE, y), QPoint(x, y-KEYFRAME_SIZE), QPoint(x+KEYFRAME_SIZE, y), QPoint(x, y+KEYFRAME_SIZE)}; p.drawPolygon(points, KEYFRAME_POINT_COUNT); } break; - case KEYFRAME_TYPE_BEZIER: + case EFFECT_KEYFRAME_BEZIER: p.drawEllipse(QPoint(x, y), KEYFRAME_SIZE, KEYFRAME_SIZE); break; - case KEYFRAME_TYPE_HOLD: + case EFFECT_KEYFRAME_HOLD: p.drawRect(QRect(x - KEYFRAME_SIZE, y - KEYFRAME_SIZE, KEYFRAME_SIZE*2, KEYFRAME_SIZE*2)); break; } diff --git a/ui/keyframeview.cpp b/ui/keyframeview.cpp index 014029b08..99ea806ae 100644 --- a/ui/keyframeview.cpp +++ b/ui/keyframeview.cpp @@ -50,12 +50,12 @@ void KeyframeView::show_context_menu(const QPoint& pos) { if (selected_fields.size() > 0) { QMenu menu(this); - QAction* linear = menu.addAction(tr("Linear")); - linear->setData(KEYFRAME_TYPE_LINEAR); - QAction* bezier = menu.addAction(tr("Bezier")); - bezier->setData(KEYFRAME_TYPE_BEZIER); - QAction* hold = menu.addAction(tr("Hold")); - hold->setData(KEYFRAME_TYPE_HOLD); + QAction* linear = menu.addAction(tr("Linear")); + linear->setData(EFFECT_KEYFRAME_LINEAR); + QAction* bezier = menu.addAction(tr("Bezier")); + bezier->setData(EFFECT_KEYFRAME_BEZIER); + QAction* hold = menu.addAction(tr("Hold")); + hold->setData(EFFECT_KEYFRAME_HOLD); menu.addSeparator(); menu.addAction("Graph Editor"); @@ -199,9 +199,9 @@ void KeyframeView::set_y_scroll(int s) { } void KeyframeView::resize_move(double d) { - panel_effect_controls->zoom *= d; - header->update_zoom(panel_effect_controls->zoom); - update(); + panel_effect_controls->zoom *= d; + header->update_zoom(panel_effect_controls->zoom); + update(); } void KeyframeView::mousePressEvent(QMouseEvent *event) { From 3882288238c97009ca54b2e30482774901bdc74a Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Jan 2019 23:05:59 +1100 Subject: [PATCH 10/32] added linux support --- effects/internal/frei0reffect.cpp | 55 +-- effects/internal/frei0reffect.h | 6 +- io/crossplatformlib.cpp | 25 ++ io/crossplatformlib.h | 21 ++ io/loadthread.cpp | 5 +- olive.pro | 583 +++++++++++++++--------------- project/effectloaders.cpp | 87 +++-- 7 files changed, 426 insertions(+), 356 deletions(-) create mode 100644 io/crossplatformlib.cpp create mode 100644 io/crossplatformlib.h diff --git a/effects/internal/frei0reffect.cpp b/effects/internal/frei0reffect.cpp index 46d5e5cf0..fef9c937b 100644 --- a/effects/internal/frei0reffect.cpp +++ b/effects/internal/frei0reffect.cpp @@ -3,8 +3,6 @@ #include #include -#include - typedef f0r_instance_t (*f0rConstructFunc)(unsigned int width, unsigned int height); typedef int (*f0rInitFunc) (); typedef void (*f0rDeinitFunc) (); @@ -20,32 +18,45 @@ Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : Effect(c, em) { // Windows DLL loading routine QString dll_fn = QDir(em->path).filePath(em->filename); - LPCWSTR dll_fn_w = reinterpret_cast(dll_fn.utf16()); - modulePtr = LoadLibrary(dll_fn_w); - if(modulePtr == nullptr) { + handle = LibLoad(dll_fn); + if(handle == nullptr) { + QString dll_error; + +#ifdef _WIN32 DWORD dll_err = GetLastError(); - qCritical() << "Failed to load VST" << dll_fn_w << "-" << dll_err; - QString msg_err = tr("Failed to load VST plugin \"%1\": %2").arg(dll_fn, QString::number(dll_err)); + dll_error = QString::number(dll_err); + qCritical() << "Failed to load Frei0r plugin" << dll_fn_w << "-" << dll_err; +#elif __linux__ + dll_error = dlerror(); + qCritical() << "Failed to load Frei0r plugin" << dll_fn << "-" << dll_error; +#endif + + QString msg_err = tr("Failed to load Frei0r plugin \"%1\": %2").arg(dll_fn, dll_error); + +#ifdef _WIN32 if (dll_err == 193) { #ifdef _WIN64 - msg_err += "\n\n" + tr("NOTE: You can't load 32-bit VST plugins into a 64-bit build of Olive. Please find a 64-bit version of this plugin or switch to a 32-bit build of Olive."); + msg_err += "\n\n" + tr("NOTE: You can't load 32-bit Frei0r plugins into a 64-bit build of Olive. Please find a 64-bit version of this plugin or switch to a 32-bit build of Olive."); #elif _WIN32 - msg_err += "\n\n" + tr("NOTE: You can't load 64-bit VST plugins into a 32-bit build of Olive. Please find a 32-bit version of this plugin or switch to a 64-bit build of Olive."); + msg_err += "\n\n" + tr("NOTE: You can't load 64-bit Frei0r plugins into a 32-bit build of Olive. Please find a 32-bit version of this plugin or switch to a 64-bit build of Olive."); #endif } - QMessageBox::critical(nullptr, tr("Error loading VST plugin"), msg_err); - return; - } +#endif - f0rInitFunc init = reinterpret_cast(GetProcAddress(modulePtr, "f0r_init")); + QMessageBox::critical(nullptr, tr("Error loading Frei0r plugin"), msg_err); + + return; + } + + f0rInitFunc init = reinterpret_cast(LibAddress(handle, "f0r_init")); init(); - f0rConstructFunc construct = reinterpret_cast(GetProcAddress(modulePtr, "f0r_construct")); + f0rConstructFunc construct = reinterpret_cast(LibAddress(handle, "f0r_construct")); instance = construct(1920, 1080); f0r_plugin_info_t info; - f0rGetPluginInfo info_func = reinterpret_cast(GetProcAddress(modulePtr, "f0r_get_plugin_info")); + f0rGetPluginInfo info_func = reinterpret_cast(LibAddress(handle, "f0r_get_plugin_info")); info_func(&info); param_count = info.num_params; @@ -54,7 +65,7 @@ Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : Effect(c, em) { qDebug() << "Frei0r Param Count:" << info.num_params; qDebug() << "Frei0r Explanation:" << info.explanation; - get_param_info = reinterpret_cast(GetProcAddress(modulePtr, "f0r_get_param_info")); + get_param_info = reinterpret_cast(LibAddress(handle, "f0r_get_param_info")); for (int i=0;i(GetProcAddress(modulePtr, "f0r_destruct")); + if (handle != nullptr) { + f0rDestructFunc destruct = reinterpret_cast(LibAddress(handle, "f0r_destruct")); destruct(instance); - f0rDeinitFunc deinit = reinterpret_cast(GetProcAddress(modulePtr, "f0r_deinit")); + f0rDeinitFunc deinit = reinterpret_cast(LibAddress(handle, "f0r_deinit")); deinit(); - FreeModule(modulePtr); + LibClose(handle); } } void Frei0rEffect::process_image(double timecode, uint8_t *input, uint8_t *output, int) { - f0rUpdateFunc update_func = reinterpret_cast(GetProcAddress(modulePtr, "f0r_update")); + f0rUpdateFunc update_func = reinterpret_cast(LibAddress(handle, "f0r_update")); for (int i=0;i(GetProcAddress(modulePtr, "f0r_set_param_value")); + f0rSetParamValue set_param = reinterpret_cast(LibAddress(handle, "f0r_set_param_value")); switch (param_info.type) { case F0R_PARAM_BOOL: { diff --git a/effects/internal/frei0reffect.h b/effects/internal/frei0reffect.h index 1992cbda3..8f528499f 100644 --- a/effects/internal/frei0reffect.h +++ b/effects/internal/frei0reffect.h @@ -3,7 +3,9 @@ #include "project/effect.h" -#include +#include + +#include "io/crossplatformlib.h" typedef void (*f0rGetParamInfo)(f0r_param_info_t * info, int param_index ); @@ -16,7 +18,7 @@ public: virtual void process_image(double timecode, uint8_t* input, uint8_t* output, int size); private: - HMODULE modulePtr; + ModulePtr handle; f0r_instance_t instance; int param_count; f0rGetParamInfo get_param_info; diff --git a/io/crossplatformlib.cpp b/io/crossplatformlib.cpp new file mode 100644 index 000000000..d05558dc3 --- /dev/null +++ b/io/crossplatformlib.cpp @@ -0,0 +1,25 @@ +#include "crossplatformlib.h" + +#include + +void *LibLoad(const QString &filename) { +#ifdef _WIN32 + LPCWSTR dll_fn_w = reinterpret_cast(filename.utf16()); + return LoadLibrary(dll_fn_w); +#elif __linux__ + return dlopen(filename.toUtf8(), RTLD_LAZY); +#else + qWarning() << "Olive doesn't know how to open dynamic libraries on this platform, external libraries will not be functional"; + return nullptr; +#endif +} + +QStringList LibFilter() { +#ifdef _WIN32 + return QStringList("*.dll"); +#elif __linux__ + return QStringList("*.so"); +#elif __APPLE__ + return QStringList("*.dylib"); +#endif +} diff --git a/io/crossplatformlib.h b/io/crossplatformlib.h new file mode 100644 index 000000000..1b3eb266b --- /dev/null +++ b/io/crossplatformlib.h @@ -0,0 +1,21 @@ +#ifndef CROSSPLATFORMLIB_H +#define CROSSPLATFORMLIB_H + +#include + +#ifdef _WIN32 + #include + #define LibAddress GetProcAddress + #define CloseLib FreeModule + #define ModulePtr HMODULE +#elif __linux__ + #include + #define LibAddress dlsym + #define LibClose dlclose + #define ModulePtr void* +#endif + +ModulePtr LibLoad(const QString& filename); +QStringList LibFilter(); + +#endif // CROSSPLATFORMLIB_H diff --git a/io/loadthread.cpp b/io/loadthread.cpp index c7cd80f40..3c8ba1c63 100644 --- a/io/loadthread.cpp +++ b/io/loadthread.cpp @@ -43,10 +43,7 @@ const EffectMeta* get_meta_from_name(const QString& input) { if (split_index > -1) { category = input.left(split_index); } - QString name = input.mid(split_index + 1); - - qDebug() << "CAT:" << category; - qDebug() << "NAM:" << name; + QString name = input.mid(split_index + 1); for (int j=0;j #include #include -#include +#ifndef NOFREI0R +#include typedef void (*f0rGetPluginInfo)(f0r_plugin_info_t* info); +#endif void load_internal_effects() { if (!shaders_are_enabled) qWarning() << "Shaders are disabled, some effects may be nonfunctional"; @@ -162,6 +165,40 @@ void init_effects() { init_thread->start(); } +void load_frei0r_effects_worker(const QString& dir, EffectMeta& em) { + QDir search_dir(dir); + if (search_dir.exists()) { + QList entry_list = search_dir.entryList(LibFilter(), QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot); + for (int j=0;j(LibAddress(effect, "f0r_get_plugin_info")); + if (get_info_func != nullptr) { + f0r_plugin_info_t info; + get_info_func(&info); + + if (info.plugin_type == F0R_PLUGIN_TYPE_FILTER + && info.color_model == F0R_COLOR_MODEL_RGBA8888) { + em.name = info.name; + em.path = dir; + em.filename = entry_list.at(j); + + effects.append(em); + } +// qDebug() << "Found:" << info.name << "by" << info.author; + } + LibClose(effect); + } +// qDebug() << search_dir.filePath(entry_list.at(j)); + } + } + } +} + void load_frei0r_effects() { QList effect_dirs = get_effects_paths(); int lim = effect_dirs.size(); @@ -173,46 +210,20 @@ void load_frei0r_effects() { // add defined paths for frei0r plugins on unix #if defined(__APPLE__) || defined(__linux__) - + effect_dirs.append(QDir::homePath() + "/.frei0r-1/lib"); + effect_dirs.append("/usr/local/lib/frei0r-1"); + effect_dirs.append("/usr/lib/frei0r-1"); #endif - // search for paths - EffectMeta em; - em.category = "Frei0r"; - em.type = EFFECT_TYPE_EFFECT; - em.subtype = EFFECT_TYPE_VIDEO; - em.internal = EFFECT_INTERNAL_FREI0R; + // search for paths + EffectMeta em; + em.category = "Frei0r"; + em.type = EFFECT_TYPE_EFFECT; + em.subtype = EFFECT_TYPE_VIDEO; + em.internal = EFFECT_INTERNAL_FREI0R; + for (int i=0;i entry_list = search_dir.entryList(QStringList("*.dll")); - for (int j=0;j(search_dir.filePath(entry_list.at(j)).utf16())); - if (effect != nullptr) { - f0rGetPluginInfo get_info_func = reinterpret_cast(GetProcAddress(effect, "f0r_get_plugin_info")); - if (get_info_func != nullptr) { - f0r_plugin_info_t info; - get_info_func(&info); - - if (info.plugin_type == F0R_PLUGIN_TYPE_FILTER - && info.color_model == F0R_COLOR_MODEL_RGBA8888) { - em.name = info.name; - em.path = effect_dirs.at(i); - em.filename = entry_list.at(j); - - effects.append(em); - } - -// qDebug() << "Found:" << info.name << "by" << info.author; - } - FreeLibrary(effect); - } - - -// qDebug() << search_dir.filePath(entry_list.at(j)); - } - } + load_frei0r_effects_worker(effect_dirs.at(i), em); } } From 6d49f598a3002bb6725b045ba29028f71fc159eb Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Jan 2019 23:11:19 +1100 Subject: [PATCH 11/32] some corrections on windows --- effects/internal/frei0reffect.cpp | 43 +++++++++++++++---------------- io/crossplatformlib.cpp | 18 ++++++------- io/crossplatformlib.h | 16 ++++++------ playback/playback.cpp | 2 +- 4 files changed, 39 insertions(+), 40 deletions(-) diff --git a/effects/internal/frei0reffect.cpp b/effects/internal/frei0reffect.cpp index fef9c937b..c0ae93f8e 100644 --- a/effects/internal/frei0reffect.cpp +++ b/effects/internal/frei0reffect.cpp @@ -19,44 +19,43 @@ Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : Effect(c, em) { // Windows DLL loading routine QString dll_fn = QDir(em->path).filePath(em->filename); - handle = LibLoad(dll_fn); - if(handle == nullptr) { - QString dll_error; + handle = LibLoad(dll_fn); + if(handle == nullptr) { + QString dll_error; #ifdef _WIN32 DWORD dll_err = GetLastError(); - dll_error = QString::number(dll_err); - qCritical() << "Failed to load Frei0r plugin" << dll_fn_w << "-" << dll_err; + dll_error = QString::number(dll_err); #elif __linux__ - dll_error = dlerror(); - qCritical() << "Failed to load Frei0r plugin" << dll_fn << "-" << dll_error; + dll_error = dlerror(); #endif + qCritical() << "Failed to load Frei0r plugin" << dll_fn << "-" << dll_error; - QString msg_err = tr("Failed to load Frei0r plugin \"%1\": %2").arg(dll_fn, dll_error); + QString msg_err = tr("Failed to load Frei0r plugin \"%1\": %2").arg(dll_fn, dll_error); #ifdef _WIN32 if (dll_err == 193) { #ifdef _WIN64 - msg_err += "\n\n" + tr("NOTE: You can't load 32-bit Frei0r plugins into a 64-bit build of Olive. Please find a 64-bit version of this plugin or switch to a 32-bit build of Olive."); + msg_err += "\n\n" + tr("NOTE: You can't load 32-bit Frei0r plugins into a 64-bit build of Olive. Please find a 64-bit version of this plugin or switch to a 32-bit build of Olive."); #elif _WIN32 - msg_err += "\n\n" + tr("NOTE: You can't load 64-bit Frei0r plugins into a 32-bit build of Olive. Please find a 32-bit version of this plugin or switch to a 64-bit build of Olive."); + msg_err += "\n\n" + tr("NOTE: You can't load 64-bit Frei0r plugins into a 32-bit build of Olive. Please find a 32-bit version of this plugin or switch to a 64-bit build of Olive."); #endif } #endif - QMessageBox::critical(nullptr, tr("Error loading Frei0r plugin"), msg_err); + QMessageBox::critical(nullptr, tr("Error loading Frei0r plugin"), msg_err); return; - } + } - f0rInitFunc init = reinterpret_cast(LibAddress(handle, "f0r_init")); + f0rInitFunc init = reinterpret_cast(LibAddress(handle, "f0r_init")); init(); - f0rConstructFunc construct = reinterpret_cast(LibAddress(handle, "f0r_construct")); + f0rConstructFunc construct = reinterpret_cast(LibAddress(handle, "f0r_construct")); instance = construct(1920, 1080); f0r_plugin_info_t info; - f0rGetPluginInfo info_func = reinterpret_cast(LibAddress(handle, "f0r_get_plugin_info")); + f0rGetPluginInfo info_func = reinterpret_cast(LibAddress(handle, "f0r_get_plugin_info")); info_func(&info); param_count = info.num_params; @@ -65,7 +64,7 @@ Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : Effect(c, em) { qDebug() << "Frei0r Param Count:" << info.num_params; qDebug() << "Frei0r Explanation:" << info.explanation; - get_param_info = reinterpret_cast(LibAddress(handle, "f0r_get_param_info")); + get_param_info = reinterpret_cast(LibAddress(handle, "f0r_get_param_info")); for (int i=0;i(LibAddress(handle, "f0r_destruct")); + if (handle != nullptr) { + f0rDestructFunc destruct = reinterpret_cast(LibAddress(handle, "f0r_destruct")); destruct(instance); - f0rDeinitFunc deinit = reinterpret_cast(LibAddress(handle, "f0r_deinit")); + f0rDeinitFunc deinit = reinterpret_cast(LibAddress(handle, "f0r_deinit")); deinit(); - LibClose(handle); + LibClose(handle); } } void Frei0rEffect::process_image(double timecode, uint8_t *input, uint8_t *output, int) { - f0rUpdateFunc update_func = reinterpret_cast(LibAddress(handle, "f0r_update")); + f0rUpdateFunc update_func = reinterpret_cast(LibAddress(handle, "f0r_update")); for (int i=0;i(LibAddress(handle, "f0r_set_param_value")); + f0rSetParamValue set_param = reinterpret_cast(LibAddress(handle, "f0r_set_param_value")); switch (param_info.type) { case F0R_PARAM_BOOL: { diff --git a/io/crossplatformlib.cpp b/io/crossplatformlib.cpp index d05558dc3..41d525525 100644 --- a/io/crossplatformlib.cpp +++ b/io/crossplatformlib.cpp @@ -2,24 +2,24 @@ #include -void *LibLoad(const QString &filename) { +ModulePtr LibLoad(const QString &filename) { #ifdef _WIN32 - LPCWSTR dll_fn_w = reinterpret_cast(filename.utf16()); - return LoadLibrary(dll_fn_w); + LPCWSTR dll_fn_w = reinterpret_cast(filename.utf16()); + return LoadLibrary(dll_fn_w); #elif __linux__ - return dlopen(filename.toUtf8(), RTLD_LAZY); + return dlopen(filename.toUtf8(), RTLD_LAZY); #else - qWarning() << "Olive doesn't know how to open dynamic libraries on this platform, external libraries will not be functional"; - return nullptr; + qWarning() << "Olive doesn't know how to open dynamic libraries on this platform, external libraries will not be functional"; + return nullptr; #endif } QStringList LibFilter() { #ifdef _WIN32 - return QStringList("*.dll"); + return QStringList("*.dll"); #elif __linux__ - return QStringList("*.so"); + return QStringList("*.so"); #elif __APPLE__ - return QStringList("*.dylib"); + return QStringList("*.dylib"); #endif } diff --git a/io/crossplatformlib.h b/io/crossplatformlib.h index 1b3eb266b..c4f21d9d2 100644 --- a/io/crossplatformlib.h +++ b/io/crossplatformlib.h @@ -4,15 +4,15 @@ #include #ifdef _WIN32 - #include - #define LibAddress GetProcAddress - #define CloseLib FreeModule - #define ModulePtr HMODULE + #include + #define LibAddress GetProcAddress + #define LibClose FreeModule + #define ModulePtr HMODULE #elif __linux__ - #include - #define LibAddress dlsym - #define LibClose dlclose - #define ModulePtr void* + #include + #define LibAddress dlsym + #define LibClose dlclose + #define ModulePtr void* #endif ModulePtr LibLoad(const QString& filename); diff --git a/playback/playback.cpp b/playback/playback.cpp index b8573942e..4495023e3 100644 --- a/playback/playback.cpp +++ b/playback/playback.cpp @@ -264,7 +264,7 @@ void get_clip_frame(Clip* c, long playhead, bool& texture_failed) { for (int i=0;ieffects.size();i++) { Effect* e = c->effects.at(i); - if (e->enable_image) { + if (e->enable_image && e->is_enabled()) { if (data_buffer_1 == target_frame->data[0]) { frame_size = target_frame->linesize[0]*target_frame->height; From 8ef885452df8661880de99d4b14299e068acd4b0 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Jan 2019 23:17:47 +1100 Subject: [PATCH 12/32] updated travis yaml for frei0r --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7a3e27080..e207f875d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ before_install: - sudo apt-get update -qq install: - - sudo apt-get -y install qt59base qt59multimedia libavformat-dev libavcodec-dev libavfilter-dev libavutil-dev libswscale-dev libswresample-dev + - sudo apt-get -y install qt59base qt59multimedia libavformat-dev libavcodec-dev libavfilter-dev libavutil-dev libswscale-dev libswresample-dev frei0r-plugins-dev frei0r-plugins - source /opt/qt*/bin/qt*-env.sh script: From db453f8dc1dee2bfd1153409a916f0e861936499 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Jan 2019 23:22:31 +1100 Subject: [PATCH 13/32] updated debian and snap package files --- debian/control | 4 ++-- snap/snapcraft.yaml | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/debian/control b/debian/control index e46c0c253..bb50de7f3 100644 --- a/debian/control +++ b/debian/control @@ -2,12 +2,12 @@ Source: olive-editor Section: video Priority: optional Maintainer: Olive Team -Build-Depends: debhelper (>=9), build-essential, qt5-default, qtmultimedia5-dev, libqt5opengl5-dev, libqt5multimedia5-plugins, libavformat-dev, libavcodec-dev, libavutil-dev, libswscale-dev, libswresample-dev, libavfilter-dev, libpostproc-dev, git +Build-Depends: debhelper (>=9), build-essential, qt5-default, qtmultimedia5-dev, libqt5opengl5-dev, libqt5multimedia5-plugins, libavformat-dev, libavcodec-dev, libavutil-dev, libswscale-dev, libswresample-dev, libavfilter-dev, libpostproc-dev, git, frei0r-plugins-dev Standards-Version: 3.9.6 Homepage: https://olivevideoeditor.org/ Package: olive-editor Architecture: any -Depends: ${misc:Depends}, ${shlibs:Depends}, libqt5multimedia5-plugins +Depends: ${misc:Depends}, ${shlibs:Depends}, libqt5multimedia5-plugins, frei0r-plugins Description: Nonlinear video editor focused on performance and simplicity diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index be32acb53..4601e9f95 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -33,6 +33,7 @@ parts: - qtmultimedia5-dev - libavformat-dev - libavfilter-dev + - frei0r-plugins-dev stage-packages: - ffmpeg - libqt5multimedia5 @@ -40,6 +41,7 @@ parts: - libpulse0 - libslang2 - libglu1-mesa + - frei0r-plugins override-build: | qmake olive.pro make From f94a7677fd4654619a3c17ca30c516ae0b7b4786 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Jan 2019 04:51:57 -0800 Subject: [PATCH 14/32] added mac support to frei0r --- io/crossplatformlib.cpp | 8 +++----- io/crossplatformlib.h | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/io/crossplatformlib.cpp b/io/crossplatformlib.cpp index 41d525525..217635f2a 100644 --- a/io/crossplatformlib.cpp +++ b/io/crossplatformlib.cpp @@ -6,7 +6,7 @@ ModulePtr LibLoad(const QString &filename) { #ifdef _WIN32 LPCWSTR dll_fn_w = reinterpret_cast(filename.utf16()); return LoadLibrary(dll_fn_w); -#elif __linux__ +#elif defined(__linux__) || defined(__APPLE__) return dlopen(filename.toUtf8(), RTLD_LAZY); #else qWarning() << "Olive doesn't know how to open dynamic libraries on this platform, external libraries will not be functional"; @@ -17,9 +17,7 @@ ModulePtr LibLoad(const QString &filename) { QStringList LibFilter() { #ifdef _WIN32 return QStringList("*.dll"); -#elif __linux__ - return QStringList("*.so"); -#elif __APPLE__ - return QStringList("*.dylib"); +#elif defined(__linux__) || defined(__APPLE__) + return {"*.so", "*.dylib"}; #endif } diff --git a/io/crossplatformlib.h b/io/crossplatformlib.h index c4f21d9d2..d186f554b 100644 --- a/io/crossplatformlib.h +++ b/io/crossplatformlib.h @@ -8,7 +8,7 @@ #define LibAddress GetProcAddress #define LibClose FreeModule #define ModulePtr HMODULE -#elif __linux__ +#elif defined(__linux__) || defined(__APPLE__) #include #define LibAddress dlsym #define LibClose dlclose From 722c2cde3b38952f2b4db9805f502ac419e2af06 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 01:17:38 +1100 Subject: [PATCH 15/32] removed redundant widget addition --- panels/viewer.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/panels/viewer.cpp b/panels/viewer.cpp index 3f212c691..c296be36e 100644 --- a/panels/viewer.cpp +++ b/panels/viewer.cpp @@ -560,8 +560,7 @@ void Viewer::setup_ui() { QHBoxLayout* current_timecode_container_layout = new QHBoxLayout(current_timecode_container); current_timecode_container_layout->setSpacing(0); current_timecode_container_layout->setMargin(0); - current_timecode_slider = new LabelSlider(current_timecode_container); - current_timecode_container_layout->addWidget(current_timecode_slider); + current_timecode_slider = new LabelSlider(current_timecode_container); lower_control_layout->addWidget(current_timecode_container); QWidget* playback_controls = new QWidget(lower_controls); @@ -616,7 +615,6 @@ void Viewer::setup_ui() { QHBoxLayout* end_timecode_layout = new QHBoxLayout(end_timecode_container); end_timecode_layout->setSpacing(0); end_timecode_layout->setMargin(0); - end_timecode = new QLabel(end_timecode_container); end_timecode->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); From 2746e727f676c6ebe5e0ab022f4bcd6a22763376 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 01:37:20 +1100 Subject: [PATCH 16/32] made frei0r disableable --- effects/internal/frei0reffect.cpp | 4 ++++ effects/internal/frei0reffect.h | 4 ++++ project/effect.cpp | 2 ++ project/effectloaders.cpp | 4 ++++ 4 files changed, 14 insertions(+) diff --git a/effects/internal/frei0reffect.cpp b/effects/internal/frei0reffect.cpp index c0ae93f8e..5fdde78e9 100644 --- a/effects/internal/frei0reffect.cpp +++ b/effects/internal/frei0reffect.cpp @@ -1,5 +1,7 @@ #include "frei0reffect.h" +#ifndef NOFREI0R + #include #include @@ -170,3 +172,5 @@ void Frei0rEffect::process_image(double timecode, uint8_t *input, uint8_t *outpu update_func(instance, timecode, reinterpret_cast(input), reinterpret_cast(output)); } + +#endif diff --git a/effects/internal/frei0reffect.h b/effects/internal/frei0reffect.h index 8f528499f..a9730b6c5 100644 --- a/effects/internal/frei0reffect.h +++ b/effects/internal/frei0reffect.h @@ -1,6 +1,8 @@ #ifndef FREI0REFFECT_H #define FREI0REFFECT_H +#ifndef NOFREI0R + #include "project/effect.h" #include @@ -24,4 +26,6 @@ private: f0rGetParamInfo get_param_info; }; +#endif + #endif // FREI0REFFECT_H diff --git a/project/effect.cpp b/project/effect.cpp index 83ddad8d8..328f4fc28 100644 --- a/project/effect.cpp +++ b/project/effect.cpp @@ -67,7 +67,9 @@ Effect* create_effect(Clip* c, const EffectMeta* em) { #ifdef _WIN32 case EFFECT_INTERNAL_VST: return new VSTHostWin(c, em); #endif +#ifndef NOFREI0R case EFFECT_INTERNAL_FREI0R: return new Frei0rEffect(c, em); +#endif } } else if (!em->filename.isEmpty()) { // load effect from file diff --git a/project/effectloaders.cpp b/project/effectloaders.cpp index 2805563cd..2d9ede9fc 100644 --- a/project/effectloaders.cpp +++ b/project/effectloaders.cpp @@ -165,6 +165,7 @@ void init_effects() { init_thread->start(); } +#ifndef NOFREI0R void load_frei0r_effects_worker(const QString& dir, EffectMeta& em) { QDir search_dir(dir); if (search_dir.exists()) { @@ -226,6 +227,7 @@ void load_frei0r_effects() { load_frei0r_effects_worker(effect_dirs.at(i), em); } } +#endif EffectInit::EffectInit() { panel_effect_controls->effects_loaded.lock(); @@ -235,7 +237,9 @@ void EffectInit::run() { qInfo() << "Initializing effects..."; load_internal_effects(); load_shader_effects(); +#ifndef NOFREI0R load_frei0r_effects(); +#endif panel_effect_controls->effects_loaded.unlock(); qInfo() << "Finished initializing effects"; } From ae4fdf484681aae99f0f5ad3c71f391730b8e887 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 10:02:37 +1100 Subject: [PATCH 17/32] fixed audio buffer size overflow on long clips --- playback/audio.cpp | 8 ++++---- playback/audio.h | 4 ++-- playback/cacher.cpp | 4 +++- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/playback/audio.cpp b/playback/audio.cpp index 19e2f656f..bfdf8972e 100644 --- a/playback/audio.cpp +++ b/playback/audio.cpp @@ -33,7 +33,7 @@ bool audio_rendering = false; bool recording = false; qint8 audio_ibuffer[audio_ibuffer_size]; -int audio_ibuffer_read = 0; +unsigned long audio_ibuffer_read = 0; long audio_ibuffer_frame = 0; double audio_ibuffer_timecode = 0; @@ -114,9 +114,9 @@ int current_audio_freq() { return audio_rendering ? sequence->audio_frequency : audio_output->format().sampleRate(); } -int get_buffer_offset_from_frame(double framerate, long frame) { +unsigned long get_buffer_offset_from_frame(double framerate, long frame) { if (frame >= audio_ibuffer_frame) { - return qFloor(((double) (frame - audio_ibuffer_frame)/framerate)*current_audio_freq())*av_get_bytes_per_sample(AV_SAMPLE_FMT_S16)*av_get_channel_layout_nb_channels(AV_CH_LAYOUT_STEREO); + return static_cast(((double(frame - audio_ibuffer_frame)/framerate)*current_audio_freq())*av_get_bytes_per_sample(AV_SAMPLE_FMT_S16)*av_get_channel_layout_nb_channels(AV_CH_LAYOUT_STEREO)); } else { qWarning() << "Invalid values passed to get_buffer_offset_from_frame"; return 0; @@ -168,7 +168,7 @@ int AudioSenderThread::send_audio_to_output(int offset, int max) { // send audio to device int actual_write = audio_io_device->write((const char*) audio_ibuffer+offset, max); - int audio_ibuffer_limit = audio_ibuffer_read + actual_write; + unsigned long audio_ibuffer_limit = audio_ibuffer_read + actual_write; // send samples to audio monitor cache // TODO make this work for the footage viewer - currently, enabling it causes crash due to an ASSERT diff --git a/playback/audio.h b/playback/audio.h index c2836a6f0..980641854 100644 --- a/playback/audio.h +++ b/playback/audio.h @@ -37,7 +37,7 @@ extern QMutex audio_write_lock; #define audio_ibuffer_size 192000 extern qint8 audio_ibuffer[audio_ibuffer_size]; -extern int audio_ibuffer_read; +extern unsigned long audio_ibuffer_read; extern long audio_ibuffer_frame; extern double audio_ibuffer_timecode; extern bool audio_scrub; @@ -51,7 +51,7 @@ bool is_audio_device_set(); void init_audio(); void stop_audio(); -int get_buffer_offset_from_frame(double framerate, long frame); +unsigned long get_buffer_offset_from_frame(double framerate, long frame); bool start_recording(); void stop_recording(); diff --git a/playback/cacher.cpp b/playback/cacher.cpp index 9770279d2..e11269088 100644 --- a/playback/cacher.cpp +++ b/playback/cacher.cpp @@ -364,7 +364,9 @@ void cache_audio_worker(Clip* c, bool scrubbing, QVector& nests) { if (frame->nb_samples == 0) { break; } else { - long buffer_timeline_out = get_buffer_offset_from_frame(c->sequence->frame_rate, timeline_out); + unsigned long buffer_timeline_out = get_buffer_offset_from_frame(c->sequence->frame_rate, timeline_out); + qDebug() << "bto:" << buffer_timeline_out; + audio_write_lock.lock(); while (c->frame_sample_index < nb_bytes From 80507264ec6a0f15273dd25a6c05b80d0a9b41c4 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 11:42:24 +1100 Subject: [PATCH 18/32] added correct frei0r overriding and fixed loading message boxes --- effects/internal/frei0reffect.cpp | 6 +-- io/loadthread.cpp | 53 +++++++++++++------- io/loadthread.h | 5 ++ playback/cacher.cpp | 1 - project/clip.h | 80 +++++++++++++++---------------- project/effectloaders.cpp | 79 +++++++++++++++--------------- 6 files changed, 125 insertions(+), 99 deletions(-) diff --git a/effects/internal/frei0reffect.cpp b/effects/internal/frei0reffect.cpp index 5fdde78e9..50ccd6698 100644 --- a/effects/internal/frei0reffect.cpp +++ b/effects/internal/frei0reffect.cpp @@ -62,9 +62,9 @@ Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : Effect(c, em) { param_count = info.num_params; - qDebug() << "Frei0r Name:" << info.name; - qDebug() << "Frei0r Param Count:" << info.num_params; - qDebug() << "Frei0r Explanation:" << info.explanation; +// qDebug() << "Frei0r Name:" << info.name; +// qDebug() << "Frei0r Param Count:" << info.num_params; +// qDebug() << "Frei0r Explanation:" << info.explanation; get_param_info = reinterpret_cast(LibAddress(handle, "f0r_get_param_info")); for (int i=0;i -#include #include struct TransitionData { @@ -35,6 +34,7 @@ LoadThread::LoadThread(LoadDialog* l, bool a) : ld(l), autorecovery(a), cancelle connect(this, SIGNAL(error()), this, SLOT(error_func())); connect(this, SIGNAL(start_create_dual_transition(const TransitionData*,Clip*,Clip*,const EffectMeta*)), this, SLOT(create_dual_transition(const TransitionData*,Clip*,Clip*,const EffectMeta*))); connect(this, SIGNAL(start_create_effect_ui(QXmlStreamReader*, Clip*, int, const QString*, const EffectMeta*, long, bool)), this, SLOT(create_effect_ui(QXmlStreamReader*, Clip*, int, const QString*, const EffectMeta*, long, bool))); + connect(this, SIGNAL(start_question(const QString&, const QString &, int)), this, SLOT(question_func(const QString &, const QString &, int))); } const EffectMeta* get_meta_from_name(const QString& input) { @@ -43,7 +43,7 @@ const EffectMeta* get_meta_from_name(const QString& input) { if (split_index > -1) { category = input.left(split_index); } - QString name = input.mid(split_index + 1); + QString name = input.mid(split_index + 1); for (int j=0;j SAVE_VERSION) { - if (QMessageBox::warning( - mainWindow, - tr("Version Mismatch"), - tr("This project was saved in a different version of Olive and may not be fully compatible with this version. Would you like to attempt loading it anyway?"), - QMessageBox::Yes, - QMessageBox::No) == QMessageBox::No) { + if (proj_version < MIN_SAVE_VERSION || proj_version > SAVE_VERSION) { + emit start_question( + tr("Version Mismatch"), + tr("This project was saved in a different version of Olive and may not be fully compatible with this version. Would you like to attempt loading it anyway?"), + QMessageBox::Yes | QMessageBox::No + ); + waitCond.wait(&mutex); + if (question_btn == QMessageBox::No) { show_err = false; return false; } @@ -453,11 +454,14 @@ bool LoadThread::load_worker(QFile& f, QXmlStreamReader& stream, int type) { if (!found) { correct_clip->linked.removeAt(j); j--; - if (QMessageBox::warning(mainWindow, - tr("Invalid Clip Link"), - tr("This project contains an invalid clip link. It may be corrupt. Would you like to continue loading it?"), - QMessageBox::Yes, - QMessageBox::No) == QMessageBox::No) { + + emit start_question( + tr("Invalid Clip Link"), + tr("This project contains an invalid clip link. It may be corrupt. Would you like to continue loading it?"), + QMessageBox::Yes | QMessageBox::No + ); + waitCond.wait(&mutex); + if (question_btn == QMessageBox::No) { delete s; return false; } @@ -574,10 +578,14 @@ void LoadThread::run() { cont = !cancelled; // find project file version - cont = load_worker(file, stream, LOAD_TYPE_VERSION); + if (cont) { + cont = load_worker(file, stream, LOAD_TYPE_VERSION); + } // find project's internal URL - cont = load_worker(file, stream, LOAD_TYPE_URL); + if (cont) { + cont = load_worker(file, stream, LOAD_TYPE_URL); + } // load folders first if (cont) { @@ -614,7 +622,6 @@ void LoadThread::run() { xml_error = true; emit error(); cont = false; - } else { // attach nested sequence clips to their sequences for (int i=0;istart_preview_generator(loaded_media_items.at(i), true); } + } else { + error_str = tr("User aborted loading"); + emit error(); } file.close(); @@ -647,6 +657,15 @@ void LoadThread::cancel() { cancelled = true; } +void LoadThread::question_func(const QString &title, const QString &text, int buttons) { + question_btn = QMessageBox::warning( + mainWindow, + title, + text, + static_cast(buttons)); + waitCond.wakeAll(); +} + void LoadThread::error_func() { if (xml_error) { qCritical() << "Error parsing XML." << error_str; diff --git a/io/loadthread.h b/io/loadthread.h index f591fb966..3aba462ce 100644 --- a/io/loadthread.h +++ b/io/loadthread.h @@ -6,6 +6,7 @@ #include #include #include +#include class Media; struct Footage; @@ -23,12 +24,14 @@ public: void run(); void cancel(); signals: + void start_question(const QString &title, const QString &text, int buttons); void success(); void error(); void start_create_effect_ui(QXmlStreamReader* stream, Clip* c, int type, const QString *effect_name, const EffectMeta* meta, long effect_length, bool effect_enabled); void start_create_dual_transition(const TransitionData* td, Clip* primary, Clip* secondary, const EffectMeta* meta); void report_progress(int p); private slots: + void question_func(const QString &title, const QString &text, int buttons); void error_func(); void success_func(); void create_effect_ui(QXmlStreamReader* stream, Clip* c, int type, const QString *effect_name, const EffectMeta* meta, long effect_length, bool effect_enabled); @@ -67,6 +70,8 @@ private: bool cancelled; bool xml_error; + + QMessageBox::StandardButton question_btn; }; #endif // LOADTHREAD_H diff --git a/playback/cacher.cpp b/playback/cacher.cpp index e11269088..f7deb4334 100644 --- a/playback/cacher.cpp +++ b/playback/cacher.cpp @@ -365,7 +365,6 @@ void cache_audio_worker(Clip* c, bool scrubbing, QVector& nests) { break; } else { unsigned long buffer_timeline_out = get_buffer_offset_from_frame(c->sequence->frame_rate, timeline_out); - qDebug() << "bto:" << buffer_timeline_out; audio_write_lock.lock(); diff --git a/project/clip.h b/project/clip.h index 69e757d5f..99e896472 100644 --- a/project/clip.h +++ b/project/clip.h @@ -33,17 +33,17 @@ class QOpenGLTexture; struct Clip { - Clip(Sequence* s); + Clip(Sequence* s); ~Clip(); - Clip* copy(Sequence* s); - void reset_audio(); + Clip* copy(Sequence* s); + void reset_audio(); void reset(); void refresh(); - long get_clip_in_with_transition(); + long get_clip_in_with_transition(); long get_timeline_in_with_transition(); long get_timeline_out_with_transition(); long getLength(); - double getMediaFrameRate(); + double getMediaFrameRate(); long getMaximumLength(); void recalculateMaxLength(); int getWidth(); @@ -56,39 +56,39 @@ struct Clip void queue_remove_earliest(); // timeline variables (should be copied in copy()) - bool enabled; - long clip_in; - long timeline_in; - long timeline_out; - int track; + bool enabled; + long clip_in; + long timeline_in; + long timeline_out; + int track; QString name; - quint8 color_r; - quint8 color_g; - quint8 color_b; - Media* media; - int media_stream; + quint8 color_r; + quint8 color_g; + quint8 color_b; + Media* media; + int media_stream; double speed; - double cached_fr; + double cached_fr; bool reverse; bool maintain_audio_pitch; bool autoscale; // other variables (should be deep copied/duplicated in copy()) - QList effects; - QVector linked; - int opening_transition; - Transition* get_opening_transition(); - int closing_transition; - Transition* get_closing_transition(); + QList effects; + QVector linked; + int opening_transition; + Transition* get_opening_transition(); + int closing_transition; + Transition* get_closing_transition(); // media handling - AVFormatContext* formatCtx; - AVStream* stream; - AVCodec* codec; - AVCodecContext* codecCtx; - AVPacket* pkt; + AVFormatContext* formatCtx; + AVStream* stream; + AVCodec* codec; + AVCodecContext* codecCtx; + AVPacket* pkt; AVFrame* frame; - AVDictionary* opts; + AVDictionary* opts; long calculated_length; // temporary variables @@ -96,23 +96,23 @@ struct Clip bool undeletable; bool reached_end; bool pkt_written; - bool open; - bool finished_opening; - bool replaced; + bool open; + bool finished_opening; + bool replaced; bool ignore_reverse; int pix_fmt; // caching functions bool use_existing_frame; - bool multithreaded; + bool multithreaded; Cacher* cacher; - QWaitCondition can_cache; + QWaitCondition can_cache; int max_queue_size; QVector queue; QMutex queue_lock; - QMutex lock; + QMutex lock; QMutex open_lock; - int64_t last_invalid_ts; + int64_t last_invalid_ts; // converters/filters AVFilterGraph* filter_graph; @@ -121,15 +121,15 @@ struct Clip // video playback variables QOpenGLFramebufferObject** fbo; - QOpenGLTexture* texture; + QOpenGLTexture* texture; long texture_frame; // audio playback variables int64_t reverse_target; - int frame_sample_index; - int audio_buffer_write; - bool audio_reset; - bool audio_just_reset; + int frame_sample_index; + unsigned long audio_buffer_write; + bool audio_reset; + bool audio_just_reset; long audio_target_frame; }; diff --git a/project/effectloaders.cpp b/project/effectloaders.cpp index 2d9ede9fc..83616e3cd 100644 --- a/project/effectloaders.cpp +++ b/project/effectloaders.cpp @@ -166,38 +166,39 @@ void init_effects() { } #ifndef NOFREI0R -void load_frei0r_effects_worker(const QString& dir, EffectMeta& em) { - QDir search_dir(dir); - if (search_dir.exists()) { - QList entry_list = search_dir.entryList(LibFilter(), QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot); - for (int j=0;j(LibAddress(effect, "f0r_get_plugin_info")); - if (get_info_func != nullptr) { - f0r_plugin_info_t info; - get_info_func(&info); +void load_frei0r_effects_worker(const QString& dir, EffectMeta& em, QVector& loaded_names) { + QDir search_dir(dir); + if (search_dir.exists()) { + QList entry_list = search_dir.entryList(LibFilter(), QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot); + for (int j=0;j(LibAddress(effect, "f0r_get_plugin_info")); + if (get_info_func != nullptr) { + f0r_plugin_info_t info; + get_info_func(&info); - if (info.plugin_type == F0R_PLUGIN_TYPE_FILTER - && info.color_model == F0R_COLOR_MODEL_RGBA8888) { - em.name = info.name; - em.path = dir; - em.filename = entry_list.at(j); + if (!loaded_names.contains(info.name) + && info.plugin_type == F0R_PLUGIN_TYPE_FILTER + && info.color_model == F0R_COLOR_MODEL_RGBA8888) { + em.name = info.name; + em.path = dir; + em.filename = entry_list.at(j); - effects.append(em); - } + effects.append(em); + } // qDebug() << "Found:" << info.name << "by" << info.author; - } - LibClose(effect); - } + } + LibClose(effect); + } // qDebug() << search_dir.filePath(entry_list.at(j)); - } - } - } + } + } + } } void load_frei0r_effects() { @@ -211,20 +212,22 @@ void load_frei0r_effects() { // add defined paths for frei0r plugins on unix #if defined(__APPLE__) || defined(__linux__) - effect_dirs.append(QDir::homePath() + "/.frei0r-1/lib"); - effect_dirs.append("/usr/local/lib/frei0r-1"); - effect_dirs.append("/usr/lib/frei0r-1"); + effect_dirs.append(QDir::homePath() + "/.frei0r-1/lib"); + effect_dirs.append("/usr/local/lib/frei0r-1"); + effect_dirs.append("/usr/lib/frei0r-1"); #endif - // search for paths - EffectMeta em; - em.category = "Frei0r"; - em.type = EFFECT_TYPE_EFFECT; - em.subtype = EFFECT_TYPE_VIDEO; - em.internal = EFFECT_INTERNAL_FREI0R; + QVector loaded_names; + + // search for paths + EffectMeta em; + em.category = "Frei0r"; + em.type = EFFECT_TYPE_EFFECT; + em.subtype = EFFECT_TYPE_VIDEO; + em.internal = EFFECT_INTERNAL_FREI0R; for (int i=0;i Date: Mon, 21 Jan 2019 12:19:37 +1100 Subject: [PATCH 19/32] huge optimization to timeline header drawing --- ui/timelineheader.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ui/timelineheader.cpp b/ui/timelineheader.cpp index 89be63626..3b4858e6a 100644 --- a/ui/timelineheader.cpp +++ b/ui/timelineheader.cpp @@ -320,7 +320,6 @@ void TimelineHeader::paintEvent(QPaintEvent*) { int textWidth = 0; int lastTextBoundary = INT_MIN; - int i = 0; int lastLineX = INT_MIN; int sublineCount = 1; @@ -337,6 +336,9 @@ void TimelineHeader::paintEvent(QPaintEvent*) { int text_x, fullTextWidth; QString timecode; + // find where to start drawing lines (lineX algorithm reversed if lineX = 0) + int i = qFloor(double(scroll)/zoom/interval); + while (true) { long frame = qRound(interval*i); int lineX = qRound(frame*zoom) - scroll; @@ -375,7 +377,6 @@ void TimelineHeader::paintEvent(QPaintEvent*) { lastLineX = lineX; } - // TODO wastes cycles here, could just bring it up to 0 i++; } From e2ceda74dbecbe7be6797ede20009aa844d9bc73 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 12:34:36 +1100 Subject: [PATCH 20/32] moved vst to cross platform defs (still untested on other platforms --- .../internal/{vsthostwin.cpp => vsthost.cpp} | 54 +- effects/internal/{vsthostwin.h => vsthost.h} | 10 +- olive.pro | 588 +++++++++--------- project/effect.cpp | 4 +- 4 files changed, 330 insertions(+), 326 deletions(-) rename effects/internal/{vsthostwin.cpp => vsthost.cpp} (83%) rename effects/internal/{vsthostwin.h => vsthost.h} (84%) diff --git a/effects/internal/vsthostwin.cpp b/effects/internal/vsthost.cpp similarity index 83% rename from effects/internal/vsthostwin.cpp rename to effects/internal/vsthost.cpp index 0d04513ba..ae53eeff5 100644 --- a/effects/internal/vsthostwin.cpp +++ b/effects/internal/vsthost.cpp @@ -1,9 +1,7 @@ -#include "vsthostwin.h" +#include "vsthost.h" // adapted from http://teragonaudio.com/article/How-to-make-your-own-VST-host.html -#include - #include #include #include @@ -52,20 +50,22 @@ typedef VstInt32 (*processEventsFuncPtr)(VstEvents *events); // Plugin's process() method typedef void (*processFuncPtr)(AEffect *effect, float **inputs, float **outputs, VstInt32 sampleFrames); -void VSTHostWin::loadPlugin() { +void VSTHost::loadPlugin() { QString dll_fn = file_field->get_filename(0, true); - LPCWSTR dll_fn_w = reinterpret_cast(dll_fn.utf16()); - modulePtr = LoadLibrary(dll_fn_w); + modulePtr = LibLoad(dll_fn); if(modulePtr == nullptr) { DWORD dll_err = GetLastError(); - qCritical() << "Failed to load VST" << dll_fn_w << "-" << dll_err; + qCritical() << "Failed to load VST" << dll_fn << "-" << dll_err; + +#ifdef _WIN32 QString msg_err = tr("Failed to load VST plugin \"%1\": %2").arg(dll_fn, QString::number(dll_err)); if (dll_err == 193) { #ifdef _WIN64 msg_err += "\n\n" + tr("NOTE: You can't load 32-bit VST plugins into a 64-bit build of Olive. Please find a 64-bit version of this plugin or switch to a 32-bit build of Olive."); #elif _WIN32 msg_err += "\n\n" + tr("NOTE: You can't load 64-bit VST plugins into a 32-bit build of Olive. Please find a 32-bit version of this plugin or switch to a 64-bit build of Olive."); +#endif #endif } QMessageBox::critical(mainWindow, tr("Error loading VST plugin"), msg_err); @@ -73,20 +73,20 @@ void VSTHostWin::loadPlugin() { } vstPluginFuncPtr mainEntryPoint = - reinterpret_cast(GetProcAddress(modulePtr, "VSTPluginMain")); + reinterpret_cast(LibAddress(modulePtr, "VSTPluginMain")); // Instantiate the plugin plugin = mainEntryPoint(hostCallback); } -void VSTHostWin::freePlugin() { +void VSTHost::freePlugin() { if (plugin != nullptr) { stopPlugin(); - FreeLibrary(modulePtr); + LibClose(modulePtr); plugin = nullptr; } } -bool VSTHostWin::configurePluginCallbacks() { +bool VSTHost::configurePluginCallbacks() { // Check plugin's magic number // If incorrect, then the file either was not loaded properly, is not a // real VST plugin, or is otherwise corrupt. @@ -107,7 +107,7 @@ bool VSTHostWin::configurePluginCallbacks() { return true; } -void VSTHostWin::startPlugin() { +void VSTHost::startPlugin() { dispatcher(plugin, effOpen, 0, 0, nullptr, 0.0f); // Set some default properties @@ -117,25 +117,25 @@ void VSTHostWin::startPlugin() { resumePlugin(); } -void VSTHostWin::stopPlugin() { +void VSTHost::stopPlugin() { suspendPlugin(); dispatcher(plugin, effClose, 0, 0, nullptr, 0); } -void VSTHostWin::resumePlugin() { +void VSTHost::resumePlugin() { dispatcher(plugin, effMainsChanged, 0, 1, nullptr, 0.0f); } -void VSTHostWin::suspendPlugin() { +void VSTHost::suspendPlugin() { dispatcher(plugin, effMainsChanged, 0, 0, nullptr, 0.0f); } -bool VSTHostWin::canPluginDo(char *canDoString) { +bool VSTHost::canPluginDo(char *canDoString) { return (dispatcher(plugin, effCanDo, 0, 0, static_cast(canDoString), 0.0f) > 0); } -void VSTHostWin::initializeIO() { +void VSTHost::initializeIO() { // inputs and outputs are assumed to be float** and are declared elsewhere, // most likely the are fields owned by this class. numChannels and blocksize // are also fields, both should be size_t (or unsigned int, if you prefer). @@ -147,7 +147,7 @@ void VSTHostWin::initializeIO() { } } -void VSTHostWin::processAudio(long numFrames) { +void VSTHost::processAudio(long numFrames) { // Always reset the output array before processing. for (int i=0;iprocessReplacing(plugin, inputs, outputs, numFrames); } -VSTHostWin::VSTHostWin(Clip* c, const EffectMeta *em) : Effect(c, em) { +VSTHost::VSTHost(Clip* c, const EffectMeta *em) : Effect(c, em) { plugin = nullptr; initializeIO(); @@ -178,11 +178,11 @@ VSTHostWin::VSTHostWin(Clip* c, const EffectMeta *em) : Effect(c, em) { connect(dialog, SIGNAL(finished(int)), this, SLOT(uncheck_show_button())); } -VSTHostWin::~VSTHostWin() { +VSTHost::~VSTHost() { freePlugin(); } -void VSTHostWin::process_audio(double, double, quint8* samples, int nb_bytes, int) { +void VSTHost::process_audio(double, double, quint8* samples, int nb_bytes, int) { if (plugin != nullptr) { int interval = BLOCK_SIZE*4; for (int i=0;isetVisible(show); } -void VSTHostWin::uncheck_show_button() { +void VSTHost::uncheck_show_button() { show_interface_btn->setChecked(false); } -void VSTHostWin::change_plugin() { +void VSTHost::change_plugin() { freePlugin(); loadPlugin(); if (plugin != nullptr) { @@ -258,7 +258,7 @@ void VSTHostWin::change_plugin() { dialog->setFixedWidth(eRect->right); dialog->setFixedHeight(eRect->bottom); } else { - FreeLibrary(modulePtr); + LibClose(modulePtr); plugin = nullptr; } } diff --git a/effects/internal/vsthostwin.h b/effects/internal/vsthost.h similarity index 84% rename from effects/internal/vsthostwin.h rename to effects/internal/vsthost.h index cf057cfee..5b6aa04ee 100644 --- a/effects/internal/vsthostwin.h +++ b/effects/internal/vsthost.h @@ -3,6 +3,8 @@ #include "project/effect.h" +#include "io/crossplatformlib.h" + #include // Plugin's dispatcher function @@ -11,11 +13,11 @@ typedef VstIntPtr (*dispatcherFuncPtr)(AEffect *effect, VstInt32 opCode, VstInt3 struct AEffect; class QDialog; -class VSTHostWin : public Effect { +class VSTHost : public Effect { Q_OBJECT public: - VSTHostWin(Clip* c, const EffectMeta* em); - ~VSTHostWin(); + VSTHost(Clip* c, const EffectMeta* em); + ~VSTHost(); void process_audio(double timecode_start, double timecode_end, quint8* samples, int nb_bytes, int channel_count); void custom_load(QXmlStreamReader& stream); @@ -43,7 +45,7 @@ private: float** outputs; QDialog* dialog; QPushButton* show_interface_btn; - HMODULE modulePtr; + ModulePtr modulePtr; }; #endif // VSTHOSTWIN_H diff --git a/olive.pro b/olive.pro index 34feb3a9c..97f4572ea 100644 --- a/olive.pro +++ b/olive.pro @@ -1,293 +1,295 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2018-05-11T10:31:59 -# -#------------------------------------------------- - -QT += core gui multimedia opengl - -greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - -mac { - TARGET = Olive -} -!mac { - TARGET = olive-editor -} -TEMPLATE = app - -# The following define makes your compiler emit warnings if you use -# any feature of Qt which has been marked as deprecated (the exact warnings -# depend on your compiler). Please consult the documentation of the -# deprecated API in order to know how to port your code away from it. -DEFINES += QT_DEPRECATED_WARNINGS - -# You can also make your code fail to compile if you use deprecated APIs. -# In order to do so, uncomment the following line. -# You can also select to disable deprecated APIs only up to a certain version of Qt. -#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 - -# Tries to get the current Git short hash -system("which git") { - GITHASHVAR = $$system(git --git-dir $$PWD/.git --work-tree $$PWD log -1 --format=%h) - DEFINES += GITHASH=\\"\"$$GITHASHVAR\\"\" -} - -CONFIG += c++11 - -SOURCES += \ - main.cpp \ - mainwindow.cpp \ - panels/project.cpp \ - panels/effectcontrols.cpp \ - panels/viewer.cpp \ - panels/timeline.cpp \ - ui/sourcetable.cpp \ - dialogs/aboutdialog.cpp \ - ui/timelinewidget.cpp \ - project/media.cpp \ - project/footage.cpp \ - project/sequence.cpp \ - project/clip.cpp \ - playback/playback.cpp \ - playback/audio.cpp \ - io/config.cpp \ - dialogs/newsequencedialog.cpp \ - ui/viewerwidget.cpp \ - ui/viewercontainer.cpp \ - dialogs/exportdialog.cpp \ - ui/collapsiblewidget.cpp \ - panels/panels.cpp \ - playback/cacher.cpp \ - io/exportthread.cpp \ - ui/timelineheader.cpp \ - io/previewgenerator.cpp \ - ui/labelslider.cpp \ - dialogs/preferencesdialog.cpp \ - ui/audiomonitor.cpp \ - project/undo.cpp \ - ui/scrollarea.cpp \ - ui/comboboxex.cpp \ - ui/colorbutton.cpp \ - dialogs/replaceclipmediadialog.cpp \ - ui/fontcombobox.cpp \ - ui/checkboxex.cpp \ - ui/keyframeview.cpp \ - ui/texteditex.cpp \ - dialogs/demonotice.cpp \ - project/marker.cpp \ - dialogs/speeddialog.cpp \ - dialogs/mediapropertiesdialog.cpp \ - io/crc32.cpp \ - project/projectmodel.cpp \ - io/loadthread.cpp \ - dialogs/loaddialog.cpp \ - debug.cpp \ - io/path.cpp \ - effects/internal/linearfadetransition.cpp \ - effects/internal/transformeffect.cpp \ - effects/internal/solideffect.cpp \ - effects/internal/texteffect.cpp \ - effects/internal/timecodeeffect.cpp \ - effects/internal/audionoiseeffect.cpp \ - effects/internal/paneffect.cpp \ - effects/internal/toneeffect.cpp \ - effects/internal/volumeeffect.cpp \ - effects/internal/crossdissolvetransition.cpp \ - effects/internal/shakeeffect.cpp \ - effects/internal/exponentialfadetransition.cpp \ - effects/internal/logarithmicfadetransition.cpp \ - effects/internal/cornerpineffect.cpp \ - io/math.cpp \ - io/qpainterwrapper.cpp \ - project/effect.cpp \ - project/transition.cpp \ - project/effectrow.cpp \ - project/effectfield.cpp \ - effects/internal/cubetransition.cpp \ - project/effectgizmo.cpp \ - io/clipboard.cpp \ - dialogs/stabilizerdialog.cpp \ - io/avtogl.cpp \ - ui/resizablescrollbar.cpp \ - ui/sourceiconview.cpp \ - project/sourcescommon.cpp \ - ui/keyframenavigator.cpp \ - panels/grapheditor.cpp \ - ui/graphview.cpp \ - ui/keyframedrawing.cpp \ - ui/clickablelabel.cpp \ - project/keyframe.cpp \ - ui/rectangleselect.cpp \ - dialogs/actionsearch.cpp \ - ui/embeddedfilechooser.cpp \ - effects/internal/fillleftrighteffect.cpp \ - effects/internal/voideffect.cpp \ - dialogs/texteditdialog.cpp \ - dialogs/debugdialog.cpp \ - ui/renderthread.cpp \ - ui/renderfunctions.cpp \ - ui/viewerwindow.cpp \ - project/projectfilter.cpp \ - effects/internal/frei0reffect.cpp \ - project/effectloaders.cpp \ - io/crossplatformlib.cpp - -HEADERS += \ - mainwindow.h \ - panels/project.h \ - panels/effectcontrols.h \ - panels/viewer.h \ - panels/timeline.h \ - ui/sourcetable.h \ - dialogs/aboutdialog.h \ - ui/timelinewidget.h \ - project/media.h \ - project/footage.h \ - project/sequence.h \ - project/clip.h \ - playback/playback.h \ - playback/audio.h \ - io/config.h \ - dialogs/newsequencedialog.h \ - ui/viewerwidget.h \ - ui/viewercontainer.h \ - dialogs/exportdialog.h \ - ui/collapsiblewidget.h \ - panels/panels.h \ - playback/cacher.h \ - io/exportthread.h \ - ui/timelinetools.h \ - ui/timelineheader.h \ - io/previewgenerator.h \ - ui/labelslider.h \ - dialogs/preferencesdialog.h \ - ui/audiomonitor.h \ - project/undo.h \ - ui/scrollarea.h \ - ui/comboboxex.h \ - ui/colorbutton.h \ - dialogs/replaceclipmediadialog.h \ - ui/fontcombobox.h \ - ui/checkboxex.h \ - ui/keyframeview.h \ - ui/texteditex.h \ - dialogs/demonotice.h \ - project/marker.h \ - project/selection.h \ - dialogs/speeddialog.h \ - dialogs/mediapropertiesdialog.h \ - io/crc32.h \ - project/projectmodel.h \ - io/loadthread.h \ - dialogs/loaddialog.h \ - debug.h \ - io/path.h \ - effects/internal/transformeffect.h \ - effects/internal/solideffect.h \ - effects/internal/texteffect.h \ - effects/internal/timecodeeffect.h \ - effects/internal/audionoiseeffect.h \ - effects/internal/paneffect.h \ - effects/internal/toneeffect.h \ - effects/internal/volumeeffect.h \ - effects/internal/shakeeffect.h \ - effects/internal/linearfadetransition.h \ - effects/internal/crossdissolvetransition.h \ - effects/internal/exponentialfadetransition.h \ - effects/internal/logarithmicfadetransition.h \ - effects/internal/cornerpineffect.h \ - io/math.h \ - io/qpainterwrapper.h \ - project/effect.h \ - project/transition.h \ - project/effectrow.h \ - project/effectfield.h \ - effects/internal/cubetransition.h \ - project/effectgizmo.h \ - io/clipboard.h \ - dialogs/stabilizerdialog.h \ - io/avtogl.h \ - ui/resizablescrollbar.h \ - ui/sourceiconview.h \ - project/sourcescommon.h \ - ui/keyframenavigator.h \ - panels/grapheditor.h \ - ui/graphview.h \ - ui/keyframedrawing.h \ - ui/clickablelabel.h \ - project/keyframe.h \ - ui/rectangleselect.h \ - dialogs/actionsearch.h \ - ui/embeddedfilechooser.h \ - effects/internal/fillleftrighteffect.h \ - effects/internal/voideffect.h \ - dialogs/texteditdialog.h \ - dialogs/debugdialog.h \ - ui/renderthread.h \ - ui/renderfunctions.h \ - ui/viewerwindow.h \ - project/projectfilter.h \ - effects/internal/frei0reffect.h \ - project/effectloaders.h \ - io/crossplatformlib.h - -FORMS += - -win32 { - RC_FILE = packaging/windows/resources.rc - LIBS += -lavutil -lavformat -lavcodec -lavfilter -lswscale -lswresample -lopengl32 -luser32 - - SOURCES += effects/internal/vsthostwin.cpp - HEADERS += effects/internal/vsthostwin.h -} - -mac { - LIBS += -L/usr/local/lib -lavutil -lavformat -lavcodec -lavfilter -lswscale -lswresample - ICON = packaging/macos/olive.icns - INCLUDEPATH = /usr/local/include -} - -unix:!mac { - CONFIG += link_pkgconfig - PKGCONFIG += libavutil libavformat libavcodec libavfilter libswscale libswresample - LIBS += -ldl -} - -RESOURCES += \ - icons/icons.qrc - -unix:!mac:isEmpty(PREFIX) { - PREFIX = /usr/local -} - -unix:!mac:target.path = $$PREFIX/bin - -effects.files = $$PWD/effects/*.frag $$PWD/effects/*.xml $$PWD/effects/*.vert -unix:!mac:effects.path = $$PREFIX/share/olive-editor/effects - -unix:!mac { - metainfo.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.appdata.xml - metainfo.path = $$PREFIX/share/metainfo - desktop.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.desktop - desktop.path = $$PREFIX/share/applications - mime.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.xml - mime.path = $$PREFIX/share/mime/packages - icon16.files = $$PWD/packaging/linux/icons/16x16/org.olivevideoeditor.Olive.png - icon16.path = $$PREFIX/share/icons/hicolor/16x16/apps - icon32.files = $$PWD/packaging/linux/icons/32x32/org.olivevideoeditor.Olive.png - icon32.path = $$PREFIX/share/icons/hicolor/32x32/apps - icon48.files = $$PWD/packaging/linux/icons/48x48/org.olivevideoeditor.Olive.png - icon48.path = $$PREFIX/share/icons/hicolor/48x48/apps - icon64.files = $$PWD/packaging/linux/icons/64x64/org.olivevideoeditor.Olive.png - icon64.path = $$PREFIX/share/icons/hicolor/64x64/apps - icon128.files = $$PWD/packaging/linux/icons/128x128/org.olivevideoeditor.Olive.png - icon128.path = $$PREFIX/share/icons/hicolor/128x128/apps - icon256.files = $$PWD/packaging/linux/icons/256x256/org.olivevideoeditor.Olive.png - icon256.path = $$PREFIX/share/icons/hicolor/256x256/apps - icon512.files = $$PWD/packaging/linux/icons/512x512/org.olivevideoeditor.Olive.png - icon512.path = $$PREFIX/share/icons/hicolor/512x512/apps - icon1024.files = $$PWD/packaging/linux/icons/1024x1024/org.olivevideoeditor.Olive.png - icon1024.path = $$PREFIX/share/icons/hicolor/1024x1024/apps - INSTALLS += target effects metainfo desktop mime icon16 icon32 icon48 icon64 icon128 icon256 icon512 icon1024 -} +#------------------------------------------------- +# +# Project created by QtCreator 2018-05-11T10:31:59 +# +#------------------------------------------------- + +QT += core gui multimedia opengl + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +mac { + TARGET = Olive +} +!mac { + TARGET = olive-editor +} +TEMPLATE = app + +# The following define makes your compiler emit warnings if you use +# any feature of Qt which has been marked as deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if you use deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +# Tries to get the current Git short hash +system("which git") { + GITHASHVAR = $$system(git --git-dir $$PWD/.git --work-tree $$PWD log -1 --format=%h) + DEFINES += GITHASH=\\"\"$$GITHASHVAR\\"\" +} + +CONFIG += c++11 + +SOURCES += \ + main.cpp \ + mainwindow.cpp \ + panels/project.cpp \ + panels/effectcontrols.cpp \ + panels/viewer.cpp \ + panels/timeline.cpp \ + ui/sourcetable.cpp \ + dialogs/aboutdialog.cpp \ + ui/timelinewidget.cpp \ + project/media.cpp \ + project/footage.cpp \ + project/sequence.cpp \ + project/clip.cpp \ + playback/playback.cpp \ + playback/audio.cpp \ + io/config.cpp \ + dialogs/newsequencedialog.cpp \ + ui/viewerwidget.cpp \ + ui/viewercontainer.cpp \ + dialogs/exportdialog.cpp \ + ui/collapsiblewidget.cpp \ + panels/panels.cpp \ + playback/cacher.cpp \ + io/exportthread.cpp \ + ui/timelineheader.cpp \ + io/previewgenerator.cpp \ + ui/labelslider.cpp \ + dialogs/preferencesdialog.cpp \ + ui/audiomonitor.cpp \ + project/undo.cpp \ + ui/scrollarea.cpp \ + ui/comboboxex.cpp \ + ui/colorbutton.cpp \ + dialogs/replaceclipmediadialog.cpp \ + ui/fontcombobox.cpp \ + ui/checkboxex.cpp \ + ui/keyframeview.cpp \ + ui/texteditex.cpp \ + dialogs/demonotice.cpp \ + project/marker.cpp \ + dialogs/speeddialog.cpp \ + dialogs/mediapropertiesdialog.cpp \ + io/crc32.cpp \ + project/projectmodel.cpp \ + io/loadthread.cpp \ + dialogs/loaddialog.cpp \ + debug.cpp \ + io/path.cpp \ + effects/internal/linearfadetransition.cpp \ + effects/internal/transformeffect.cpp \ + effects/internal/solideffect.cpp \ + effects/internal/texteffect.cpp \ + effects/internal/timecodeeffect.cpp \ + effects/internal/audionoiseeffect.cpp \ + effects/internal/paneffect.cpp \ + effects/internal/toneeffect.cpp \ + effects/internal/volumeeffect.cpp \ + effects/internal/crossdissolvetransition.cpp \ + effects/internal/shakeeffect.cpp \ + effects/internal/exponentialfadetransition.cpp \ + effects/internal/logarithmicfadetransition.cpp \ + effects/internal/cornerpineffect.cpp \ + io/math.cpp \ + io/qpainterwrapper.cpp \ + project/effect.cpp \ + project/transition.cpp \ + project/effectrow.cpp \ + project/effectfield.cpp \ + effects/internal/cubetransition.cpp \ + project/effectgizmo.cpp \ + io/clipboard.cpp \ + dialogs/stabilizerdialog.cpp \ + io/avtogl.cpp \ + ui/resizablescrollbar.cpp \ + ui/sourceiconview.cpp \ + project/sourcescommon.cpp \ + ui/keyframenavigator.cpp \ + panels/grapheditor.cpp \ + ui/graphview.cpp \ + ui/keyframedrawing.cpp \ + ui/clickablelabel.cpp \ + project/keyframe.cpp \ + ui/rectangleselect.cpp \ + dialogs/actionsearch.cpp \ + ui/embeddedfilechooser.cpp \ + effects/internal/fillleftrighteffect.cpp \ + effects/internal/voideffect.cpp \ + dialogs/texteditdialog.cpp \ + dialogs/debugdialog.cpp \ + ui/renderthread.cpp \ + ui/renderfunctions.cpp \ + ui/viewerwindow.cpp \ + project/projectfilter.cpp \ + effects/internal/frei0reffect.cpp \ + project/effectloaders.cpp \ + io/crossplatformlib.cpp \ + effects/internal/vsthost.cpp + +HEADERS += \ + mainwindow.h \ + panels/project.h \ + panels/effectcontrols.h \ + panels/viewer.h \ + panels/timeline.h \ + ui/sourcetable.h \ + dialogs/aboutdialog.h \ + ui/timelinewidget.h \ + project/media.h \ + project/footage.h \ + project/sequence.h \ + project/clip.h \ + playback/playback.h \ + playback/audio.h \ + io/config.h \ + dialogs/newsequencedialog.h \ + ui/viewerwidget.h \ + ui/viewercontainer.h \ + dialogs/exportdialog.h \ + ui/collapsiblewidget.h \ + panels/panels.h \ + playback/cacher.h \ + io/exportthread.h \ + ui/timelinetools.h \ + ui/timelineheader.h \ + io/previewgenerator.h \ + ui/labelslider.h \ + dialogs/preferencesdialog.h \ + ui/audiomonitor.h \ + project/undo.h \ + ui/scrollarea.h \ + ui/comboboxex.h \ + ui/colorbutton.h \ + dialogs/replaceclipmediadialog.h \ + ui/fontcombobox.h \ + ui/checkboxex.h \ + ui/keyframeview.h \ + ui/texteditex.h \ + dialogs/demonotice.h \ + project/marker.h \ + project/selection.h \ + dialogs/speeddialog.h \ + dialogs/mediapropertiesdialog.h \ + io/crc32.h \ + project/projectmodel.h \ + io/loadthread.h \ + dialogs/loaddialog.h \ + debug.h \ + io/path.h \ + effects/internal/transformeffect.h \ + effects/internal/solideffect.h \ + effects/internal/texteffect.h \ + effects/internal/timecodeeffect.h \ + effects/internal/audionoiseeffect.h \ + effects/internal/paneffect.h \ + effects/internal/toneeffect.h \ + effects/internal/volumeeffect.h \ + effects/internal/shakeeffect.h \ + effects/internal/linearfadetransition.h \ + effects/internal/crossdissolvetransition.h \ + effects/internal/exponentialfadetransition.h \ + effects/internal/logarithmicfadetransition.h \ + effects/internal/cornerpineffect.h \ + io/math.h \ + io/qpainterwrapper.h \ + project/effect.h \ + project/transition.h \ + project/effectrow.h \ + project/effectfield.h \ + effects/internal/cubetransition.h \ + project/effectgizmo.h \ + io/clipboard.h \ + dialogs/stabilizerdialog.h \ + io/avtogl.h \ + ui/resizablescrollbar.h \ + ui/sourceiconview.h \ + project/sourcescommon.h \ + ui/keyframenavigator.h \ + panels/grapheditor.h \ + ui/graphview.h \ + ui/keyframedrawing.h \ + ui/clickablelabel.h \ + project/keyframe.h \ + ui/rectangleselect.h \ + dialogs/actionsearch.h \ + ui/embeddedfilechooser.h \ + effects/internal/fillleftrighteffect.h \ + effects/internal/voideffect.h \ + dialogs/texteditdialog.h \ + dialogs/debugdialog.h \ + ui/renderthread.h \ + ui/renderfunctions.h \ + ui/viewerwindow.h \ + project/projectfilter.h \ + effects/internal/frei0reffect.h \ + project/effectloaders.h \ + io/crossplatformlib.h \ + effects/internal/vsthost.h + +FORMS += + +win32 { + RC_FILE = packaging/windows/resources.rc + LIBS += -lavutil -lavformat -lavcodec -lavfilter -lswscale -lswresample -lopengl32 -luser32 + + SOURCES += + HEADERS += +} + +mac { + LIBS += -L/usr/local/lib -lavutil -lavformat -lavcodec -lavfilter -lswscale -lswresample + ICON = packaging/macos/olive.icns + INCLUDEPATH = /usr/local/include +} + +unix:!mac { + CONFIG += link_pkgconfig + PKGCONFIG += libavutil libavformat libavcodec libavfilter libswscale libswresample + LIBS += -ldl +} + +RESOURCES += \ + icons/icons.qrc + +unix:!mac:isEmpty(PREFIX) { + PREFIX = /usr/local +} + +unix:!mac:target.path = $$PREFIX/bin + +effects.files = $$PWD/effects/*.frag $$PWD/effects/*.xml $$PWD/effects/*.vert +unix:!mac:effects.path = $$PREFIX/share/olive-editor/effects + +unix:!mac { + metainfo.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.appdata.xml + metainfo.path = $$PREFIX/share/metainfo + desktop.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.desktop + desktop.path = $$PREFIX/share/applications + mime.files = $$PWD/packaging/linux/org.olivevideoeditor.Olive.xml + mime.path = $$PREFIX/share/mime/packages + icon16.files = $$PWD/packaging/linux/icons/16x16/org.olivevideoeditor.Olive.png + icon16.path = $$PREFIX/share/icons/hicolor/16x16/apps + icon32.files = $$PWD/packaging/linux/icons/32x32/org.olivevideoeditor.Olive.png + icon32.path = $$PREFIX/share/icons/hicolor/32x32/apps + icon48.files = $$PWD/packaging/linux/icons/48x48/org.olivevideoeditor.Olive.png + icon48.path = $$PREFIX/share/icons/hicolor/48x48/apps + icon64.files = $$PWD/packaging/linux/icons/64x64/org.olivevideoeditor.Olive.png + icon64.path = $$PREFIX/share/icons/hicolor/64x64/apps + icon128.files = $$PWD/packaging/linux/icons/128x128/org.olivevideoeditor.Olive.png + icon128.path = $$PREFIX/share/icons/hicolor/128x128/apps + icon256.files = $$PWD/packaging/linux/icons/256x256/org.olivevideoeditor.Olive.png + icon256.path = $$PREFIX/share/icons/hicolor/256x256/apps + icon512.files = $$PWD/packaging/linux/icons/512x512/org.olivevideoeditor.Olive.png + icon512.path = $$PREFIX/share/icons/hicolor/512x512/apps + icon1024.files = $$PWD/packaging/linux/icons/1024x1024/org.olivevideoeditor.Olive.png + icon1024.path = $$PREFIX/share/icons/hicolor/1024x1024/apps + INSTALLS += target effects metainfo desktop mime icon16 icon32 icon48 icon64 icon128 icon256 icon512 icon1024 +} diff --git a/project/effect.cpp b/project/effect.cpp index 328f4fc28..443ed2d5f 100644 --- a/project/effect.cpp +++ b/project/effect.cpp @@ -29,7 +29,7 @@ #include "effects/internal/shakeeffect.h" #include "effects/internal/cornerpineffect.h" #ifdef _WIN32 -#include "effects/internal/vsthostwin.h" +#include "effects/internal/vsthost.h" #endif #include "effects/internal/fillleftrighteffect.h" #include "effects/internal/frei0reffect.h" @@ -65,7 +65,7 @@ Effect* create_effect(Clip* c, const EffectMeta* em) { case EFFECT_INTERNAL_CORNERPIN: return new CornerPinEffect(c, em); case EFFECT_INTERNAL_FILLLEFTRIGHT: return new FillLeftRightEffect(c, em); #ifdef _WIN32 - case EFFECT_INTERNAL_VST: return new VSTHostWin(c, em); + case EFFECT_INTERNAL_VST: return new VSTHost(c, em); #endif #ifndef NOFREI0R case EFFECT_INTERNAL_FREI0R: return new Frei0rEffect(c, em); From c48af9016d2dd45c3e870ac3ed1b3ebeac9e4a94 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 12:37:18 +1100 Subject: [PATCH 21/32] fixed memory leak in vst host --- effects/internal/vsthost.cpp | 26 +++++++++++++------------- effects/internal/vsthost.h | 1 - 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/effects/internal/vsthost.cpp b/effects/internal/vsthost.cpp index ae53eeff5..c42125d94 100644 --- a/effects/internal/vsthost.cpp +++ b/effects/internal/vsthost.cpp @@ -135,18 +135,6 @@ bool VSTHost::canPluginDo(char *canDoString) { return (dispatcher(plugin, effCanDo, 0, 0, static_cast(canDoString), 0.0f) > 0); } -void VSTHost::initializeIO() { - // inputs and outputs are assumed to be float** and are declared elsewhere, - // most likely the are fields owned by this class. numChannels and blocksize - // are also fields, both should be size_t (or unsigned int, if you prefer). - inputs = new float* [CHANNEL_COUNT]; - outputs = new float* [CHANNEL_COUNT]; - for(int channel = 0; channel < CHANNEL_COUNT; channel++) { - inputs[channel] = new float[BLOCK_SIZE]; - outputs[channel] = new float[BLOCK_SIZE]; - } -} - void VSTHost::processAudio(long numFrames) { // Always reset the output array before processing. for (int i=0;iadd_field(EFFECT_FIELD_FILE, "filename"); connect(file_field, SIGNAL(changed()), this, SLOT(change_plugin())); @@ -179,6 +172,13 @@ VSTHost::VSTHost(Clip* c, const EffectMeta *em) : Effect(c, em) { } VSTHost::~VSTHost() { + for(int channel = 0; channel < CHANNEL_COUNT; channel++) { + delete [] inputs[channel]; + delete [] outputs[channel]; + } + delete [] outputs; + delete [] inputs; + freePlugin(); } diff --git a/effects/internal/vsthost.h b/effects/internal/vsthost.h index 5b6aa04ee..e36105cfd 100644 --- a/effects/internal/vsthost.h +++ b/effects/internal/vsthost.h @@ -39,7 +39,6 @@ private: void resumePlugin(); void suspendPlugin(); bool canPluginDo(char *canDoString); - void initializeIO(); void processAudio(long numFrames); float** inputs; float** outputs; From d726052fe7717f43908d5cfcc6c7b635f851aa30 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 13:08:30 +1100 Subject: [PATCH 22/32] frei0r improvements --- panels/effectcontrols.cpp | 6 ++++++ project/effect.cpp | 2 +- project/effect.h | 1 + project/effectloaders.cpp | 15 ++++++--------- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/panels/effectcontrols.cpp b/panels/effectcontrols.cpp index 1e3e6a857..c6a8740b1 100644 --- a/panels/effectcontrols.cpp +++ b/panels/effectcontrols.cpp @@ -155,6 +155,8 @@ void EffectControls::show_effect_menu(int type, int subtype) { effects_loaded.lock(); QMenu effects_menu(this); + effects_menu.setToolTipsVisible(true); + for (int i=0;isetText(em.name); action->setData(reinterpret_cast(&em)); + if (!em.tooltip.isEmpty()) { + action->setToolTip(em.tooltip); + } QMenu* parent = &effects_menu; if (!em.category.isEmpty()) { @@ -178,6 +183,7 @@ void EffectControls::show_effect_menu(int type, int subtype) { } if (!found) { parent = new QMenu(&effects_menu); + parent->setToolTipsVisible(true); parent->setTitle(em.category); bool found = false; diff --git a/project/effect.cpp b/project/effect.cpp index 443ed2d5f..4ba72f4d8 100644 --- a/project/effect.cpp +++ b/project/effect.cpp @@ -360,7 +360,7 @@ EffectGizmo *Effect::gizmo(int i) { return gizmos.at(i); } -int Effect::gizmo_count(){ +int Effect::gizmo_count() { return gizmos.size(); } diff --git a/project/effect.h b/project/effect.h index 72baa3b07..cc48d9d72 100644 --- a/project/effect.h +++ b/project/effect.h @@ -29,6 +29,7 @@ struct EffectMeta { QString category; QString filename; QString path; + QString tooltip; int internal; int type; int subtype; diff --git a/project/effectloaders.cpp b/project/effectloaders.cpp index 83616e3cd..b434eda86 100644 --- a/project/effectloaders.cpp +++ b/project/effectloaders.cpp @@ -188,6 +188,9 @@ void load_frei0r_effects_worker(const QString& dir, EffectMeta& em, QVector effect_dirs = get_effects_paths(); - int lim = effect_dirs.size(); - - // add extra search paths for frei0r effects - for (int i=0;i loaded_names; From 096aa0dc14f768008a680c0e3428a60c8d8a284c Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 13:27:20 +1100 Subject: [PATCH 23/32] fixed vst define --- effects/internal/vsthost.cpp | 4 ++++ effects/internal/vsthost.h | 4 ++++ olive.pro | 3 --- project/effect.cpp | 4 ++-- project/effect.h | 4 ++-- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/effects/internal/vsthost.cpp b/effects/internal/vsthost.cpp index c42125d94..e56393fe8 100644 --- a/effects/internal/vsthost.cpp +++ b/effects/internal/vsthost.cpp @@ -1,5 +1,7 @@ #include "vsthost.h" +#ifdef _WIN32 + // adapted from http://teragonaudio.com/article/How-to-make-your-own-VST-host.html #include @@ -264,3 +266,5 @@ void VSTHost::change_plugin() { } show_interface_btn->setEnabled(plugin != nullptr); } + +#endif diff --git a/effects/internal/vsthost.h b/effects/internal/vsthost.h index e36105cfd..13a99a816 100644 --- a/effects/internal/vsthost.h +++ b/effects/internal/vsthost.h @@ -1,6 +1,8 @@ #ifndef VSTHOSTWIN_H #define VSTHOSTWIN_H +#ifdef _WIN32 + #include "project/effect.h" #include "io/crossplatformlib.h" @@ -47,4 +49,6 @@ private: ModulePtr modulePtr; }; +#endif + #endif // VSTHOSTWIN_H diff --git a/olive.pro b/olive.pro index 97f4572ea..8ce6d9483 100644 --- a/olive.pro +++ b/olive.pro @@ -239,9 +239,6 @@ FORMS += win32 { RC_FILE = packaging/windows/resources.rc LIBS += -lavutil -lavformat -lavcodec -lavfilter -lswscale -lswresample -lopengl32 -luser32 - - SOURCES += - HEADERS += } mac { diff --git a/project/effect.cpp b/project/effect.cpp index 4ba72f4d8..ddf2748ad 100644 --- a/project/effect.cpp +++ b/project/effect.cpp @@ -693,10 +693,10 @@ void Effect::startEffect() { void Effect::endEffect() { if (bound) glslProgram->release(); - bound = false; + bound = false; } -void Effect::process_image(double, uint8_t *input, uint8_t *output, int) {} +void Effect::process_image(double, uint8_t *, uint8_t *, int){} Effect* Effect::copy(Clip* c) { Effect* copy = create_effect(c, meta); diff --git a/project/effect.h b/project/effect.h index cc48d9d72..6779501c4 100644 --- a/project/effect.h +++ b/project/effect.h @@ -1,4 +1,4 @@ -#ifndef EFFECT_H +#ifndef EFFECT_H #define EFFECT_H #include @@ -159,7 +159,7 @@ public: const char* ffmpeg_filter; - virtual void process_image(double timecode, uint8_t* input, uint8_t* output, int size); + virtual void process_image(double timecode, uint8_t* input, uint8_t* output, int size); virtual void process_shader(double timecode, GLTextureCoords&); virtual void process_coords(double timecode, GLTextureCoords& coords, int data); virtual GLuint process_superimpose(double timecode); From 63bd1ac597715f09c9a19b2f34a3e517dc8a3b6f Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 16:22:42 +1100 Subject: [PATCH 24/32] fixed clip sizes not updating in frei0r --- effects/internal/frei0reffect.cpp | 38 +++++++++++++++++++++++-------- effects/internal/frei0reffect.h | 7 +++++- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/effects/internal/frei0reffect.cpp b/effects/internal/frei0reffect.cpp index 50ccd6698..a45efcf36 100644 --- a/effects/internal/frei0reffect.cpp +++ b/effects/internal/frei0reffect.cpp @@ -5,6 +5,8 @@ #include #include +#include "project/clip.h" + typedef f0r_instance_t (*f0rConstructFunc)(unsigned int width, unsigned int height); typedef int (*f0rInitFunc) (); typedef void (*f0rDeinitFunc) (); @@ -15,7 +17,10 @@ typedef void (*f0rGetPluginInfo)(f0r_plugin_info_t* info); typedef void (*f0rSetParamValue) (f0r_instance_t instance, f0r_param_t param, int param_index); -Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : Effect(c, em) { +Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : + Effect(c, em), + open(false) +{ enable_image = true; // Windows DLL loading routine @@ -53,8 +58,7 @@ Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : Effect(c, em) { f0rInitFunc init = reinterpret_cast(LibAddress(handle, "f0r_init")); init(); - f0rConstructFunc construct = reinterpret_cast(LibAddress(handle, "f0r_construct")); - instance = construct(1920, 1080); + construct_module(); f0r_plugin_info_t info; f0rGetPluginInfo info_func = reinterpret_cast(LibAddress(handle, "f0r_get_plugin_info")); @@ -62,10 +66,6 @@ Frei0rEffect::Frei0rEffect(Clip *c, const EffectMeta *em) : Effect(c, em) { param_count = info.num_params; -// qDebug() << "Frei0r Name:" << info.name; -// qDebug() << "Frei0r Param Count:" << info.num_params; -// qDebug() << "Frei0r Explanation:" << info.explanation; - get_param_info = reinterpret_cast(LibAddress(handle, "f0r_get_param_info")); for (int i=0;i(LibAddress(handle, "f0r_destruct")); - destruct(instance); - f0rDeinitFunc deinit = reinterpret_cast(LibAddress(handle, "f0r_deinit")); deinit(); @@ -173,4 +170,25 @@ void Frei0rEffect::process_image(double timecode, uint8_t *input, uint8_t *outpu update_func(instance, timecode, reinterpret_cast(input), reinterpret_cast(output)); } +void Frei0rEffect::refresh() { + destruct_module(); + construct_module(); +} + +void Frei0rEffect::destruct_module() { + if (open) { + f0rDestructFunc destruct = reinterpret_cast(LibAddress(handle, "f0r_destruct")); + destruct(instance); + + open = false; + } +} + +void Frei0rEffect::construct_module() { + f0rConstructFunc construct = reinterpret_cast(LibAddress(handle, "f0r_construct")); + instance = construct(parent_clip->getWidth(), parent_clip->getHeight()); + + open = true; +} + #endif diff --git a/effects/internal/frei0reffect.h b/effects/internal/frei0reffect.h index a9730b6c5..413baf676 100644 --- a/effects/internal/frei0reffect.h +++ b/effects/internal/frei0reffect.h @@ -19,11 +19,16 @@ public: ~Frei0rEffect(); virtual void process_image(double timecode, uint8_t* input, uint8_t* output, int size); + + virtual void refresh(); private: - ModulePtr handle; + ModulePtr handle; f0r_instance_t instance; int param_count; f0rGetParamInfo get_param_info; + void destruct_module(); + void construct_module(); + bool open; }; #endif From b0b26dbd8a80f34f192a4a829ed669ce7f16d7e3 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 16:26:54 +1100 Subject: [PATCH 25/32] fixed #340 --- .gitignore | 2 ++ panels/timeline.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 0c3654b81..e4bce1768 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ *.pro.user* Makefile .qmake.stash +effects/frei0r + diff --git a/panels/timeline.cpp b/panels/timeline.cpp index 6216ed0bb..84f18808a 100644 --- a/panels/timeline.cpp +++ b/panels/timeline.cpp @@ -778,6 +778,7 @@ bool selection_contains_transition(const Selection& s, Clip* c, int type) { void Timeline::delete_areas_and_relink(ComboAction* ca, QVector& areas) { clean_up_selections(areas); + panel_effect_controls->clear_effects(true); QVector pre_clips; QVector post_clips; From 38069c6f9ceb457620293cb91ceba2a8f3cdcf9a Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 19:11:53 +1100 Subject: [PATCH 26/32] deselect clips underneath when deleting --- panels/timeline.cpp | 1 + playback/audio.cpp | 13 +++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/panels/timeline.cpp b/panels/timeline.cpp index 84f18808a..c65838279 100644 --- a/panels/timeline.cpp +++ b/panels/timeline.cpp @@ -830,6 +830,7 @@ void Timeline::delete_areas_and_relink(ComboAction* ca, QVector& area } } } + deselect_area(s.in, s.out, s.track); } relink_clips_using_ids(pre_clips, post_clips); ca->append(new AddClipCommand(sequence, post_clips)); diff --git a/playback/audio.cpp b/playback/audio.cpp index bfdf8972e..87be6a646 100644 --- a/playback/audio.cpp +++ b/playback/audio.cpp @@ -166,7 +166,7 @@ void AudioSenderThread::run() { int AudioSenderThread::send_audio_to_output(int offset, int max) { // send audio to device - int actual_write = audio_io_device->write((const char*) audio_ibuffer+offset, max); + unsigned long actual_write = audio_io_device->write((const char*) audio_ibuffer+offset, max); unsigned long audio_ibuffer_limit = audio_ibuffer_read + actual_write; @@ -185,19 +185,20 @@ int AudioSenderThread::send_audio_to_output(int offset, int max) { } int channel_count = av_get_channel_layout_nb_channels(s->audio_layout); long sample_cache_playhead = panel_timeline->audio_monitor->sample_cache_offset + (panel_timeline->audio_monitor->sample_cache.size()/channel_count); - int next_buffer_offset, buffer_offset_adjusted, i; - int buffer_offset = get_buffer_offset_from_frame(s->frame_rate, sample_cache_playhead); + unsigned long next_buffer_offset, buffer_offset_adjusted; + int i; + unsigned long buffer_offset = get_buffer_offset_from_frame(s->frame_rate, sample_cache_playhead); if (samples.size() != channel_count) samples.resize(channel_count); samples.fill(0); // TODO: I don't like this, but i'm not sure if there's a smarter way to do it - while (buffer_offset < audio_ibuffer_limit) { + while (static_cast(buffer_offset) < audio_ibuffer_limit) { sample_cache_playhead++; - next_buffer_offset = qMin(get_buffer_offset_from_frame(s->frame_rate, sample_cache_playhead), audio_ibuffer_limit); + next_buffer_offset = qMin(get_buffer_offset_from_frame(s->frame_rate, sample_cache_playhead), static_cast(audio_ibuffer_limit)); while (buffer_offset < next_buffer_offset) { for (i=0;i Date: Mon, 21 Jan 2019 19:50:50 +1100 Subject: [PATCH 27/32] free codec contexts in previewgenerator --- io/previewgenerator.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/io/previewgenerator.cpp b/io/previewgenerator.cpp index 01ea6e548..2c89a851d 100644 --- a/io/previewgenerator.cpp +++ b/io/previewgenerator.cpp @@ -401,6 +401,7 @@ void PreviewGenerator::generate_waveform() { for (unsigned int i=0;inb_streams;i++) { if (codec_ctx[i] != nullptr) { avcodec_close(codec_ctx[i]); + avcodec_free_context(&codec_ctx[i]); } } if (retrieve_duration) { From 30460c08a3b87f0ff205293267f37d8a710368c4 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Jan 2019 19:53:36 +1100 Subject: [PATCH 28/32] cleanup function for qimage thumbnails --- io/previewgenerator.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/io/previewgenerator.cpp b/io/previewgenerator.cpp index 2c89a851d..0bd8eaa38 100644 --- a/io/previewgenerator.cpp +++ b/io/previewgenerator.cpp @@ -217,6 +217,10 @@ void PreviewGenerator::finalize_media() { } } +void thumb_data_cleanup(void *info) { + delete [] static_cast(info); +} + void PreviewGenerator::generate_waveform() { SwsContext* sws_ctx; SwrContext* swr_ctx; @@ -296,7 +300,7 @@ void PreviewGenerator::generate_waveform() { linesize[0] = dstW*4; sws_scale(sws_ctx, temp_frame->data, temp_frame->linesize, 0, temp_frame->height, &data, linesize); - s->video_preview = QImage(data, dstW, dstH, linesize[0], QImage::Format_RGBA8888); + s->video_preview = QImage(data, dstW, dstH, linesize[0], QImage::Format_RGBA8888, thumb_data_cleanup); s->make_square_thumb(); // is video interlaced? From 46feccfa9d5f0495c6cc0be6c4d07f173543a47f Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 22 Jan 2019 02:29:55 +1100 Subject: [PATCH 29/32] fixed thread desync when exporting --- io/exportthread.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/io/exportthread.cpp b/io/exportthread.cpp index 5e4f1a34e..f6b6dc134 100644 --- a/io/exportthread.cpp +++ b/io/exportthread.cpp @@ -489,5 +489,7 @@ void ExportThread::run() { } void ExportThread::wake() { + mutex.lock(); waitCond.wakeAll(); + mutex.unlock(); } From 963e46af99dc58c065e41faddda20c5b75d4699e Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 22 Jan 2019 02:48:52 +1100 Subject: [PATCH 30/32] made all icon sizes relative to their defaults --- panels/grapheditor.cpp | 5 ++--- ui/collapsiblewidget.cpp | 2 +- ui/keyframenavigator.cpp | 30 +++++++++--------------------- 3 files changed, 12 insertions(+), 25 deletions(-) diff --git a/panels/grapheditor.cpp b/panels/grapheditor.cpp index 5a7c39b93..7d13a905d 100644 --- a/panels/grapheditor.cpp +++ b/panels/grapheditor.cpp @@ -162,9 +162,8 @@ void GraphEditor::set_row(EffectRow *r) { slider_button->setCheckable(true); slider_button->setChecked(field->is_enabled()); slider_button->setIcon(QIcon(":/icons/record.png")); - slider_button->setProperty("field", i); - slider_button->setIconSize(QSize(8, 8)); - slider_button->setMaximumSize(QSize(12, 12)); + slider_button->setProperty("field", i); + slider_button->setIconSize(slider_button->iconSize()*0.5); connect(slider_button, SIGNAL(toggled(bool)), this, SLOT(set_field_visibility(bool))); slider_proxy_buttons.append(slider_button); value_layout->addWidget(slider_button); diff --git a/ui/collapsiblewidget.cpp b/ui/collapsiblewidget.cpp index fce861a11..324f8627d 100644 --- a/ui/collapsiblewidget.cpp +++ b/ui/collapsiblewidget.cpp @@ -31,7 +31,7 @@ CollapsibleWidget::CollapsibleWidget(QWidget* parent) : QWidget(parent) { enabled_check->setChecked(true); header = new QLabel(); collapse_button = new QPushButton(); - collapse_button->setIconSize(QSize(8, 8)); + collapse_button->setIconSize(collapse_button->iconSize()*0.5); collapse_button->setStyleSheet("QPushButton { border: none; }"); setText(tr("")); title_bar_layout->addWidget(collapse_button); diff --git a/ui/keyframenavigator.cpp b/ui/keyframenavigator.cpp index 8115ed42f..228314d4c 100644 --- a/ui/keyframenavigator.cpp +++ b/ui/keyframenavigator.cpp @@ -6,52 +6,40 @@ #include KeyframeNavigator::KeyframeNavigator(QWidget *parent) : QWidget(parent) { - int icon_size_val = 8*QApplication::desktop()->devicePixelRatio(); - int clock_size_val = 12*QApplication::desktop()->devicePixelRatio(); - int button_size_val = 20*QApplication::desktop()->devicePixelRatio(); - - QSize icon_size(icon_size_val, icon_size_val); - QSize clock_size(clock_size_val, clock_size_val); - QSize button_size(button_size_val, button_size_val); - key_controls = new QHBoxLayout(); key_controls->setSpacing(0); key_controls->setMargin(0); - //key_controls->addStretch(); + key_controls->addStretch(); setLayout(key_controls); left_key_nav = new QPushButton(); - left_key_nav->setIcon(QIcon(":/icons/tri-left.png")); - left_key_nav->setMaximumSize(button_size); - left_key_nav->setIconSize(icon_size); + left_key_nav->setIcon(QIcon(":/icons/tri-left.png")); + left_key_nav->setIconSize(left_key_nav->iconSize()*0.5); left_key_nav->setVisible(false); key_controls->addWidget(left_key_nav); connect(left_key_nav, SIGNAL(clicked(bool)), this, SIGNAL(goto_previous_key())); connect(left_key_nav, SIGNAL(clicked(bool)), this, SIGNAL(clicked())); key_addremove = new QPushButton(); - key_addremove->setIcon(QIcon(":/icons/diamond.png")); - key_addremove->setMaximumSize(button_size); - key_addremove->setIconSize(QSize(8, 8)); + key_addremove->setIcon(QIcon(":/icons/diamond.png")); + key_addremove->setIconSize(key_addremove->iconSize()*0.5); key_addremove->setVisible(false); key_controls->addWidget(key_addremove); connect(key_addremove, SIGNAL(clicked(bool)), this, SIGNAL(toggle_key())); connect(key_addremove, SIGNAL(clicked(bool)), this, SIGNAL(clicked())); right_key_nav = new QPushButton(); - right_key_nav->setIcon(QIcon(":/icons/tri-right.png")); - right_key_nav->setMaximumSize(button_size); - right_key_nav->setIconSize(icon_size); + right_key_nav->setIcon(QIcon(":/icons/tri-right.png")); + right_key_nav->setIconSize(right_key_nav->iconSize()*0.5); right_key_nav->setVisible(false); key_controls->addWidget(right_key_nav); connect(right_key_nav, SIGNAL(clicked(bool)), this, SIGNAL(goto_next_key())); connect(right_key_nav, SIGNAL(clicked(bool)), this, SIGNAL(clicked())); keyframe_enable = new QPushButton(QIcon(":/icons/clock.png"), ""); - keyframe_enable->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed); - keyframe_enable->setMaximumSize(button_size); - keyframe_enable->setIconSize(clock_size); + keyframe_enable->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed); + keyframe_enable->setIconSize(keyframe_enable->iconSize()*0.75); keyframe_enable->setCheckable(true); keyframe_enable->setToolTip(tr("Enable Keyframes")); connect(keyframe_enable, SIGNAL(clicked(bool)), this, SIGNAL(keyframe_enabled_changed(bool))); From 4abf37a27db9944e64cdf80b6d069f033071d13d Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 22 Jan 2019 02:57:54 +1100 Subject: [PATCH 31/32] prevent timeline sections from collapsing --- panels/timeline.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/panels/timeline.cpp b/panels/timeline.cpp index c65838279..939bc649c 100644 --- a/panels/timeline.cpp +++ b/panels/timeline.cpp @@ -1760,6 +1760,7 @@ void Timeline::setup_ui() { editAreaLayout->setSpacing(0); editAreaLayout->setContentsMargins(0, 0, 0, 0); QSplitter* splitter = new QSplitter(editAreas); + splitter->setChildrenCollapsible(false); splitter->setOrientation(Qt::Vertical); QWidget* videoContainer = new QWidget(splitter); QHBoxLayout* videoContainerLayout = new QHBoxLayout(videoContainer); From 2530608ca7935664874ebe86ca3531e026580b30 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 22 Jan 2019 03:18:52 +1100 Subject: [PATCH 32/32] various scrolling fixes for the effect keyframes --- panels/effectcontrols.cpp | 26 ++++++++++++++++++-------- panels/effectcontrols.h | 9 +++++++-- ui/keyframeview.cpp | 6 +++++- ui/keyframeview.h | 3 +++ 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/panels/effectcontrols.cpp b/panels/effectcontrols.cpp index c6a8740b1..505d4bb43 100644 --- a/panels/effectcontrols.cpp +++ b/panels/effectcontrols.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include "panels/panels.h" #include "project/effect.h" @@ -52,6 +53,7 @@ EffectControls::EffectControls(QWidget *parent) : lblMultipleClipsSelected->setVisible(false); + connect(keyframeView, SIGNAL(wheel_event_signal(QWheelEvent*)), effects_area, SLOT(receive_wheel_event(QWheelEvent*))); connect(horizontalScrollBar, SIGNAL(valueChanged(int)), headers, SLOT(set_scroll(int))); connect(horizontalScrollBar, SIGNAL(resize_move(double)), keyframeView, SLOT(resize_move(double))); connect(horizontalScrollBar, SIGNAL(valueChanged(int)), keyframeView, SLOT(set_x_scroll(int))); @@ -439,7 +441,17 @@ void EffectControls::setup_ui() { hlayout->addWidget(splitter); - setWidget(contents); + setWidget(contents); +} + +void EffectControls::update_scrollbar() { + verticalScrollBar->setMaximum(qMax(0, effects_area->height() - keyframeView->height() - headers->height())); + verticalScrollBar->setPageStep(verticalScrollBar->height()); +} + +void EffectControls::queue_post_update() { + keyframeView->update(); + update_scrollbar(); } void EffectControls::load_effects() { @@ -469,10 +481,10 @@ void EffectControls::load_effects() { } if (selected_clips.size() > 0) { setWindowTitle(panel_name + sequence->clips.at(selected_clips.at(0))->name); - verticalScrollBar->setMaximum(qMax(0, effects_area->sizeHint().height() - headers->height() + scrollArea->horizontalScrollBar()->height()/* - keyframeView->height() - headers->height()*/)); keyframeView->setEnabled(true); headers->setVisible(true); - keyframeView->update(); + + QTimer::singleShot(50, this, SLOT(queue_post_update())); } } } @@ -532,7 +544,7 @@ void EffectControls::audio_transition_click() { } void EffectControls::resizeEvent(QResizeEvent*) { - verticalScrollBar->setMaximum(qMax(0, effects_area->height() - keyframeView->height() - headers->height())); + update_scrollbar(); } bool EffectControls::is_focused() { @@ -556,8 +568,6 @@ EffectsArea::EffectsArea(QWidget* parent) : QWidget(parent) {} -void EffectsArea::resizeEvent(QResizeEvent*) { -// parent_widget->setMinimumWidth(sizeHint().width()); -// parent_widget->resize(sizeHint().width(), parent_widget->height()); -// parent_widget->updateGeometry(); +void EffectsArea::receive_wheel_event(QWheelEvent *e) { + QApplication::sendEvent(this, e); } diff --git a/panels/effectcontrols.h b/panels/effectcontrols.h index 67d88e819..cce0b2dda 100644 --- a/panels/effectcontrols.h +++ b/panels/effectcontrols.h @@ -19,12 +19,14 @@ class QScrollBar; class QHBoxLayout; class EffectsArea : public QWidget { + Q_OBJECT public: - EffectsArea(QWidget* parent = 0); - void resizeEvent(QResizeEvent *event); + EffectsArea(QWidget* parent = 0); QScrollArea* parent_widget; KeyframeView* keyframe_area; TimelineHeader* header; +public slots: + void receive_wheel_event(QWheelEvent* e); }; class EffectControls : public QDockWidget @@ -65,6 +67,9 @@ private slots: void audio_transition_click(); void deselect_all_effects(QWidget*); + + void update_scrollbar(); + void queue_post_update(); protected: void resizeEvent(QResizeEvent *event); private: diff --git a/ui/keyframeview.cpp b/ui/keyframeview.cpp index 99ea806ae..8cfb38f0c 100644 --- a/ui/keyframeview.cpp +++ b/ui/keyframeview.cpp @@ -167,7 +167,11 @@ void KeyframeView::paintEvent(QPaintEvent*) { /*if (mouseover && mouseover_row < rowY.size()) { draw_keyframe(p, getScreenPointFromFrame(panel_effect_controls->zoom, mouseover_frame - visible_in), rowY.at(mouseover_row), true); - }*/ + }*/ +} + +void KeyframeView::wheelEvent(QWheelEvent *e) { + emit wheel_event_signal(e); } bool KeyframeView::keyframeIsSelected(EffectField *field, int keyframe) { diff --git a/ui/keyframeview.h b/ui/keyframeview.h index 51bbd361d..984a3b541 100644 --- a/ui/keyframeview.h +++ b/ui/keyframeview.h @@ -21,6 +21,8 @@ public: long visible_in; long visible_out; +signals: + void wheel_event_signal(QWheelEvent*); public slots: void set_x_scroll(int); void set_y_scroll(int); @@ -36,6 +38,7 @@ private: void mouseMoveEvent(QMouseEvent* event); void mouseReleaseEvent(QMouseEvent *event); void paintEvent(QPaintEvent *event); + void wheelEvent(QWheelEvent* e); bool mousedown; bool dragging; bool keys_selected;