From 81c988a85247fe541e584e89a07345542604e10b Mon Sep 17 00:00:00 2001 From: natureh Date: Wed, 12 Oct 2011 01:10:45 +0200 Subject: [PATCH] Patch from issue 1012: Proposal of an icon theme for RT This patch add multiple iconset capabilities, on a per theme basis. See comment #61 and #68 from issue 1012 to see how it works. --- rtdata/images/Dark/curveType-NURBS.png | Bin 0 -> 618 bytes .../images/Dark/curveType-controlPoints.png | Bin 0 -> 470 bytes rtdata/images/Dark/curveType-flatLinear.png | Bin 0 -> 197 bytes rtdata/images/Dark/curveType-linear.png | Bin 0 -> 334 bytes rtdata/images/Dark/curveType-parametric.png | Bin 0 -> 456 bytes rtdata/images/Dark/curveType-spline.png | Bin 0 -> 421 bytes rtdata/images/Light/curveType-NURBS.png | Bin 0 -> 507 bytes .../images/Light/curveType-controlPoints.png | Bin 0 -> 466 bytes rtdata/images/Light/curveType-flatLinear.png | Bin 0 -> 196 bytes rtdata/images/Light/curveType-linear.png | Bin 0 -> 327 bytes rtdata/images/Light/curveType-parametric.png | Bin 0 -> 455 bytes rtdata/images/Light/curveType-spline.png | Bin 0 -> 409 bytes rtdata/images/add.png | Bin 0 -> 323 bytes .../{undo.png => default-settings-ltr.png} | Bin rtdata/images/default-settings-rtl.png | Bin 0 -> 208 bytes rtdata/images/gtk-undo-ltr.png | Bin 920 -> 784 bytes rtdata/images/gtk-undo-rtl.png | Bin 0 -> 779 bytes ...do-ltr-big.png => gtk-undoall-ltr-big.png} | Bin rtdata/images/gtk-undoall-ltr.png | Bin 0 -> 920 bytes rtdata/images/gtk-undoall-rtl-big.png | Bin 0 -> 1262 bytes rtdata/images/gtk-undoall-rtl.png | Bin 0 -> 910 bytes rtdata/themes/09-Gray-Orange.iconset | 2 + rtdata/themes/17-Gray-Red.iconset | 2 + rtdata/themes/21-Gray-Gray.iconset | 2 + rtdata/themes/25-Gray-Gray.iconset | 2 + rtdata/themes/25-Gray-Purple.iconset | 2 + rtdata/themes/25-Gray-Red.iconset | 2 + rtdata/themes/37-Gray-Red-Textured.iconset | 2 + rtdata/themes/37-Gray-Red.iconset | 2 + rtdata/themes/63-Gray-Cyan.gtkrc | 2 +- rtdata/themes/63-Gray-Cyan.iconset | 2 + rtdata/themes/Default.iconset | 3 + rtdata/themes/system.iconset | 2 + rtengine/safegtk.cc | 258 +++++++++--------- rtengine/safegtk.h | 2 +- rtgui/CMakeLists.txt | 2 +- rtgui/adjuster.cc | 5 +- rtgui/adjuster.h | 1 + rtgui/batchqueue.cc | 7 +- rtgui/batchqueuebuttonset.cc | 6 +- rtgui/batchqueuepanel.cc | 17 +- rtgui/chmixer.cc | 19 +- rtgui/coarsepanel.cc | 9 +- rtgui/crop.cc | 4 +- rtgui/cropwindow.cc | 12 +- rtgui/cursormanager.cc | 9 +- rtgui/curveeditor.cc | 12 +- rtgui/curveeditorgroup.cc | 5 +- rtgui/dirbrowser.cc | 15 +- rtgui/distortion.cc | 3 +- rtgui/editorpanel.cc | 27 +- rtgui/editwindow.cc | 8 +- rtgui/exifpanel.cc | 11 +- rtgui/filebrowser.cc | 7 +- rtgui/filebrowserentry.cc | 6 +- rtgui/filecatalog.cc | 67 ++--- rtgui/filethumbnailbuttonset.cc | 26 +- rtgui/guiutils.cc | 3 +- rtgui/histogrampanel.cc | 13 +- rtgui/history.cc | 5 +- rtgui/indclippedpanel.cc | 5 +- rtgui/iptcpanel.cc | 9 +- rtgui/lensgeom.cc | 3 +- rtgui/main.cc | 3 + rtgui/popupcommon.cc | 17 +- rtgui/popupcommon.h | 9 +- rtgui/preferences.cc | 16 +- rtgui/renamedlg.cc | 5 +- rtgui/rotate.cc | 3 +- rtgui/rtimage.cc | 128 +++++++++ rtgui/rtimage.h | 35 +++ rtgui/rtwindow.cc | 18 +- rtgui/splash.cc | 2 +- rtgui/toolbar.cc | 9 +- rtgui/toolpanelcoord.cc | 15 +- rtgui/whitebalance.cc | 3 +- rtgui/zoompanel.cc | 11 +- tools/CurveType-Dark.svg | 202 ++++++++++++++ tools/CurveType-Light.svg | 161 +++++++++++ tools/FlatCurveType-Dark.svg | 177 ++++++++++++ tools/FlatCurveType-Light.svg | 164 +++++++++++ 81 files changed, 1257 insertions(+), 322 deletions(-) create mode 100644 rtdata/images/Dark/curveType-NURBS.png create mode 100644 rtdata/images/Dark/curveType-controlPoints.png create mode 100644 rtdata/images/Dark/curveType-flatLinear.png create mode 100644 rtdata/images/Dark/curveType-linear.png create mode 100644 rtdata/images/Dark/curveType-parametric.png create mode 100644 rtdata/images/Dark/curveType-spline.png create mode 100644 rtdata/images/Light/curveType-NURBS.png create mode 100644 rtdata/images/Light/curveType-controlPoints.png create mode 100644 rtdata/images/Light/curveType-flatLinear.png create mode 100644 rtdata/images/Light/curveType-linear.png create mode 100644 rtdata/images/Light/curveType-parametric.png create mode 100644 rtdata/images/Light/curveType-spline.png create mode 100644 rtdata/images/add.png rename rtdata/images/{undo.png => default-settings-ltr.png} (100%) create mode 100644 rtdata/images/default-settings-rtl.png create mode 100644 rtdata/images/gtk-undo-rtl.png rename rtdata/images/{gtk-undo-ltr-big.png => gtk-undoall-ltr-big.png} (100%) create mode 100644 rtdata/images/gtk-undoall-ltr.png create mode 100644 rtdata/images/gtk-undoall-rtl-big.png create mode 100644 rtdata/images/gtk-undoall-rtl.png create mode 100644 rtdata/themes/09-Gray-Orange.iconset create mode 100644 rtdata/themes/17-Gray-Red.iconset create mode 100644 rtdata/themes/21-Gray-Gray.iconset create mode 100644 rtdata/themes/25-Gray-Gray.iconset create mode 100644 rtdata/themes/25-Gray-Purple.iconset create mode 100644 rtdata/themes/25-Gray-Red.iconset create mode 100644 rtdata/themes/37-Gray-Red-Textured.iconset create mode 100644 rtdata/themes/37-Gray-Red.iconset create mode 100644 rtdata/themes/63-Gray-Cyan.iconset create mode 100644 rtdata/themes/Default.iconset create mode 100644 rtdata/themes/system.iconset create mode 100644 rtgui/rtimage.cc create mode 100644 rtgui/rtimage.h create mode 100644 tools/CurveType-Dark.svg create mode 100644 tools/CurveType-Light.svg create mode 100644 tools/FlatCurveType-Dark.svg create mode 100644 tools/FlatCurveType-Light.svg diff --git a/rtdata/images/Dark/curveType-NURBS.png b/rtdata/images/Dark/curveType-NURBS.png new file mode 100644 index 0000000000000000000000000000000000000000..c40911063fa8341ac36f3b1a6bbe711a1a8d8d27 GIT binary patch literal 618 zcmV-w0+s!VP)+jjrnkfrG$&I-NdIC=}AMSj_A7 zdapa3&PoVCDHQ=u0SAD4BC?^IcLQ_4JaEjiEF8!Am`bJkrfEJ727^~cnY`5F{00(#ntQL#KmyY9{2BN?n;E{+7{2pUC99qB^!19YqsqJR7xeTn< zYPAnasafDU@C`UGB3pm2?oYG{%#PG6B63Tkhk+}=7H~mCKL6{60i7>;p7&`m82kVp z0uMBD5?BJ>01M-g-xKM>K8r@9jcT>p(8vOC26zfoMWjCt0SIX%0POE}yBiugs*xwa zjnSiy3xBn|&hM2{dw@k?b5dj!ngL!_Disr02D-rINfFSiY3Mm{2}lFyM5Hq*^2bEw zaybAT0d9-Pi=7|%je;BK|~~TrOvY!{I)#A|k`7pky+6D4WfG zHw9}c{9&mSB1b%(mbzn_IuKf@66An+97}Dc1(EtDd07*qoM6N<$ Ef@^mDO8@`> literal 0 HcmV?d00001 diff --git a/rtdata/images/Dark/curveType-controlPoints.png b/rtdata/images/Dark/curveType-controlPoints.png new file mode 100644 index 0000000000000000000000000000000000000000..42c6474e18f27835ecebe88e6cc3fdb0a682436e GIT binary patch literal 470 zcmV;{0V)28P)XK{cJqktN{UT+rn3-lpcwfr77O1v5o`)7fg z_<@(0C>7Loh<&W0JE)>D9N{shu#7oe$9e(H<4r{T9tK*%H9U=okJ$X1%*;vL!ackg z1Zv_Dz7)tmiij>g;dW+T8U||N^#IR%v~gz`=xapmoMniJ#CP1y%<+Dn%p7mx-JqL_ z)-b7hc$wMG%;{Qwu`%k3WacYO<0lqy8QXY{<)NU`&JEQM&#Q*EU9=qPc2+2 z@ivZ6fx7rSa%;5;pQv_HfzCw4*116ic2za~8xgS!{{`x&=7mu32U`zWmV#}`Bme*a M07*qoM6N<$f(rD^q5uE@ literal 0 HcmV?d00001 diff --git a/rtdata/images/Dark/curveType-flatLinear.png b/rtdata/images/Dark/curveType-flatLinear.png new file mode 100644 index 0000000000000000000000000000000000000000..89155931e41f5e14ed6c361fe6ecf22b0378b6c5 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mSQK*5Dp-y;YjHK@;M7UB8wRq zxcoqvQ9|qJYM`KGiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0vco-U3d z7QM+KAt5OX*b)|XX)b2t4Q!V9|NsB|-ZSopk8~Is0KoM>IBG0+_^Z!J_=9S3_ hGQKw#vjs9TFmyBU$D9u}R0NvF;OXk;vd$@?2>`onILrV5 literal 0 HcmV?d00001 diff --git a/rtdata/images/Dark/curveType-linear.png b/rtdata/images/Dark/curveType-linear.png new file mode 100644 index 0000000000000000000000000000000000000000..6a413f488478bc2f75eaa615c39084976119df7c GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mSQK*5Dp-y;YjHK@;M7UB8wRq zxcoqvQ9|qJYM`KGiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0wgJzX3_ zEP9uoi3~gBz~FMR-P&`l1EYFEd1FhU`Qa5Crrz@Uk!cgix%~2#_p6JoBc~Of&*^XY zczEs!0SV?xqm*g}pN5!Anw*>d#@Id8k)z%(Of!nFVguLToI)@;u>@hzM8=fB&F z6>jSv5Ybq#7&zf=dIFn|YOU$tJSWDP>`w|_-{#orD5ZG&Z^N0S39Bc(mD|AZY|=Nw z6ZR*{%oVsjcSk%CPx;Lm!Q}0E+w26t$OO?1UXBb_p`o^HPn<8QvF>zGe-M1hN|e!p ZIreHqt#xR|SD?2TJYD@<);T3K0RV%zdglND literal 0 HcmV?d00001 diff --git a/rtdata/images/Dark/curveType-parametric.png b/rtdata/images/Dark/curveType-parametric.png new file mode 100644 index 0000000000000000000000000000000000000000..089fbe29c98e41a72def5d28c3f52bea4a9ad1bf GIT binary patch literal 456 zcmV;(0XP1MP)TG#QO_N4iUs^9)e*-FbN_k zrok9YgF(<>5Me=0Lj{vfqb@3ftS_88#b8kcMXzCBnAh+7cD){W%X`jw-t)ql8;wS0 ziK;q+^Eih?!x?}fF5nV|c!g*G1Xa}n))2hL{UjeX;6>V!L2e}3 z+z)Ams%p{hl08bYSyl5m+|mCf$@X7RRgJKUci3pImvOQK+QQX8psG5EJNSy5Nq#k{ zdwmnNeQgy-aV^Q`J@?a3)U5s@9wynED1L$W9nj9?M3?aiPg{!To6{ECb{Ey4s!rfE y9w+(H(XemKjmP749K%wQ@3TS!oWhg;LEty6n_$0HZ1RWz0000;=~DlWCix zME)?aC7w?*;xu!VJZ{i;!r+zl`^@RZ74P25d`s}(%+C-eRd9rJ5dCl;58J5uo?5)u(Fa;w#X6-nVn=Y zWnsgDkg`BYc1n#Yg=~}+8*3IMc_|A$rb#I;vl&@TUKaQHPq%60-s@~m&*?ee&iS2l zT1gCIrIhtJf_)en?jx~<4cLUe*pD`zV`{j5YGVRBFrDOSjgMfgCXZnic47-&;bM|E z&`P3|GF8iL>@eoAvHBUba0V-J1NV~rY7$ylfv?p!_6R5OA<29xWg9MI9>d|3{%s8LNifcHsW*7s!9 z>M_nIS@;`dv7$QKwV18%Jr!~vXa5E1Zf#BVbETAVoWe6)>7Gn4pi!O4wQ&jGajsVg zG@HE+pK)4e@s1_=)+?kNG>UQT#`PpG`hmbuDTU4n9K;jc>K8&sqt!b1)56sxzXt_v x##TH`GCK&Q0Zrg1ZVn1*K-+OA$;bZz{Q)WgaBSnoGjkRg z8QvGjIYmSZZ!wdZBmF=PZ1nKFK@$)Afj&gU@kNG+_=-<>l$pcbJefIM$Ln65incI@ z*;3fd%!x{VzBcHJWac_1aEJ%Ejw7t%d0$Yu&ZPDW&uV|#X2tRYA3Im1n;N)T;v@X( z0JZRL;Hy<8e4)LQ3iM7ye7Q8Jz;59#b|T^%{1>R3>Q_R+UqZ-N6FRdrtpET307*qo IM6N<$g2pPvv;Y7A literal 0 HcmV?d00001 diff --git a/rtdata/images/Light/curveType-flatLinear.png b/rtdata/images/Light/curveType-flatLinear.png new file mode 100644 index 0000000000000000000000000000000000000000..9ce38da3cfb43e801542d1cbb447cf6f637c8810 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mSQK*5Dp-y;YjHK@;M7UB8wRq zxcoqvQ9|qJYM`KGiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0wHo-U3d z7QM+KAt5OX*b)|XX)b2t4Q!T>l#tkT@yCf75{7IbAO^&FD$W0t6HETt>m(VJ^7Jg$ etiGb4#lXNVz!N`9`))AMFa}RoKbLh*2~7ZT&NGex literal 0 HcmV?d00001 diff --git a/rtdata/images/Light/curveType-linear.png b/rtdata/images/Light/curveType-linear.png new file mode 100644 index 0000000000000000000000000000000000000000..bcbeb46f86ab6ff2b3554166b5c95a5ae6ed237d GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mSQK*5Dp-y;YjHK@;M7UB8wRq zxcoqvQ9|qJYM`KGiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0vVJY5_^ zEP9uoIbO)*$l!93e`X0=!-om7_tcvwvurHUib-2}RL9i%%h&R~T`K!#zEw0>SJ%nY zU})ggmh-)l(_m7GZ&S|qPaF=JC(6WUFiqys&-ky?gYJ;>tB2qm3 Q73d!ZPgg&ebxsLQ04Ke2W&i*H literal 0 HcmV?d00001 diff --git a/rtdata/images/Light/curveType-parametric.png b/rtdata/images/Light/curveType-parametric.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8799e6cf021f9c510652206bb72724121504da GIT binary patch literal 455 zcmV;&0XY7NP)O6X^GZm2?|_he7B_IVKLXIlE!;sL@3H<*P*qJ~5f|_Q&ysxAh{Gb+@c=uxpXB4=`=Ow!x{Z7I zgvBJg$8$QNs_J1LGkAw5Nq)8E4uq=e3?AbeR+GH!dbAa4kmtCBr%B#)AzdBKH^{>z z8>b<`{~%q00aD%8Ujy#5~q{r~{@U1){*Y)t?F002ovPDHLkV1n4|!>#}T literal 0 HcmV?d00001 diff --git a/rtdata/images/Light/curveType-spline.png b/rtdata/images/Light/curveType-spline.png new file mode 100644 index 0000000000000000000000000000000000000000..eb718b95b9765db9ba3e8bbaec214cd70053771f GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mSQK*5Dp-y;YjHK@;M7UB8wRq zxcoqvQ9|qJYM`KGiEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$QVa}?VxBIJ zAr`%JFWGCi7K*TcIR7=@Kx)dtf=!Wo7}(e*dU| z{)q05Yz>~&X9nLcb~Dd$I}*J(p5xRR!<>hlS34>)=DpNtIFrQRc{S|B{!XLKU8ymN z#!7K@vvWC9)6~rjn~UGLxx8KPzklJGH^*e$KD24dxE=Wz@37iMJ>t*DdzxJV@nvb> z68EhP*X*ist~iz){C-=mhSI&l=I}kgqdr7h2Z*OUV_^$C>gr;${P%XPuOZ77hmi)!cT|6FkAON{jSt(_u!Lq7!B=^4B;IBq%dL`6}O%gpGjO3}J1 z4Y?KfzQ;%l3Rp(0FF*F|EI&io>j^)N99Xu9ZE@HjcqrgTrepSr)S!;v7$d z7#j|r*sm7k|1`qSzwL6X$#3JGkN$s>{Cx9Ec6v|es;&OpMC)hUh7@^ocW)~11Nx1@ M)78&qol`;+0M{XYA^-pY literal 0 HcmV?d00001 diff --git a/rtdata/images/undo.png b/rtdata/images/default-settings-ltr.png similarity index 100% rename from rtdata/images/undo.png rename to rtdata/images/default-settings-ltr.png diff --git a/rtdata/images/default-settings-rtl.png b/rtdata/images/default-settings-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..d888b458cd8575a077720f5f31823697d2ad61d0 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=(3?#Lsx0C=W#^NA%Cx&(BWL^R}oB=)|uK)l4 zR}Y)jwC44--UZDd6(vD_!3+-1Zlr-YN#5=*3>~bp9w6lf9+AZi4BWyX%*Zfnjs#GU zy~NYkmHieAr=Sw|ty(P~ppdbri(?4Kb=BjBj0_4Kt_P1Nu>4A3X5TNnVWObQ(&p{5 rCq4+RbB<`Te;IT|SaefwW^{L9a%BK_cXuvnZfkR6VQ^(GZ*pgw?mQX*00NCk zL_t(Ijg6DfOH@%5$G`X9_vVL_Ihr$?KNAQ1K~PLY>8nMXYEu}rFcKcLD2SHzC$w$X zF34x;u0>c85h2XHlopAZFlyvvGm|!H&hH=Z-FsW;2$fm~f6nHfbH9Agxt|LuC3eg3 zFowdzsNbuHVwZS3LT&>X0e0^J0A;7c$w%a#>QJs*Wm`yz@?HYJshb92laI+*RZYW< zp3^ry00aQ*zZ{qbaZ`rz8h@bw(9t0`Ap`&zWmuXTCF=mb3y#-PVqDYZbmbnAQo=Nd zmomJmZw>Y~e|MjCTInZncy$P#h2R{53)tli!s zV`mlUe;O2$fE4ZcGCL98=0MYBTnHRXtuD`fn}1PcNP-Y)3t_j|Kb?(mc%yZl6 z@WJKj!CGu7&uu*1cJK!e&s-k0FQ2xYnl4$THZ{r?JA>x~#azaYMMBepgi=QHr}>e}fYL zv{1Cmxj{{riER@96{bM~gsPD$Z!asPXYco2<+m!eUlK@EF;3NLK>z>%07*qoM6N<$ Ef~6@`Qvd(} delta 911 zcmV;A191G12ABsxiBL{Q4GJ0x0000DNk~Le0000M0000G2nGNE021wwCIA2c0drDE zLIAGL9O(c600v@9M??T303rY)tm_nUkuey52XskIMF-de4iyC$;V?9b0009RNkl2xjFab=9~+E z4++m@(sM~Ys_zeZSYmF9kAMpY&m86l!+a3VU*NoHnePXUP-#u$C_l1e&&8Pkii@qC z-5-p;@?jgGfZ#BHq>eq87HKfu*)=lp_;ZsjLI?muNHRjuYFddzM`~2=`3(R=8m#^L zH3i_7iuh4$rfr8m@6;2`qDg7+Q)*y;e5~)u*Wy9>8)C_`sHlpHB2=UZ8@JiLy+Lv7 zU$m++@YI`_v5uza8im|);8!xsD&ig6AtOAOUMZRFed5)D^uW{BUg;t_+Cj+n=Dh-h zL>R}B=3|(NaZ1}+))&8Hc&wFpTY8^gSDA(Bnu?-l#oQDtsUdqLJ^X^K=D$FHg%z|0 zDZwXxz#Jw)Ionq<}+8)rtNUqa~m(_S7&BV42>U8 z^}cOX3zz6fzlGKsts}H*5cpYt_UhNzE^N@9u452^Hb|!I`&?@hV&7EsNy%(y&tQMo z@PwsFusS!Tgpi>$TdejIgCf~80&)jaY@*c=>x;jr_S9%S*>ke>UjNyNuRwy$6FqfmWPy1Dd!adu%QyyH6? zYqcok%X=2Yb||WdiE6PtzrJ|M*BaAy*tQ+6YQ-rbm5*vr-Y!!uX0HP0?X!F?4V^(X zsO(h2N@0BoaPQl9+rd{6uh*-=w}A9qtY#{0CAx)HA)9~yL33V}=Q3!d!VLODtyPiu1hy#H}lzf`(>Na!#tk$ETHVqU2_IudaJ!3m;-rc;T!gCoB(pqj! ljv0P=@w16Zb?#vf@E=x%r87Q8e=7h0002ovPDHLkV1lNWxcC47 diff --git a/rtdata/images/gtk-undo-rtl.png b/rtdata/images/gtk-undo-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..6e847015fe160e416a57579d8e71fe16cfb99e4e GIT binary patch literal 779 zcmV+m1N8ifP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2ipn@ z6f_W&E-}*p00N6iL_t(I%bk-=Xp~nJhM#-yH#7O28Iv&)oJtV1<3d6Zq53(SP%1(L zg>G7Z_%=eJZtcD<1XnJ^g}cu9wc7(`eQ&4V=GoUL9XguwJbyg^R_#pGPmK)1ML$ z0&YkC$M&{V?+>FF)#Z_*GH(l%h^!4GMKz!lL)!2q&?7>ZIJyT8oX{e|KX)%SYO~{a zoMp%lq_Gw-QdE7~@M~*lU#@F&F4msj9QWdBw9#l|(58dcYLQs-Tc-ZHwK6|he&{TN zejrsbFZ&|s4bQGOh?T!E}B8?0*C_y5X3E^OgD+tLFOj!htp%jlg^R%wBbzl z^WCkTX|0?8o&yO15CLl;iXgJ!94J*m*9#;!9gVFt!oK;ZrC|?YZ>o2j3F|iq!;sob zSZ@4h08k3h8YK?nwUNvmpfdAFDwDr2iEzXdp#>~9YBIl|@Df?lnXSZHx1e+!r3^|b z7U!Xmv5?T$EKxBEuXr zW7nIt7ZVShW7iuqfGQQx+VER8mmg?p@AMv*Z;pR)$ZmU!4cnHCtu*W5sIz?i=KgCW z`hhrS`DXf2xgjpXOY~$%ifYSia}3bUrSPh=?0?_9hO!^XbhKLkZfgARX1b@>)0&g7 z_X*(Co+I+TA4v2e*55&S^pZK-n%sG8x%$wG3v+%T;~)7IUIEE)S*XaWf=d7Z002ov JPDHLkV1o81W_kbs literal 0 HcmV?d00001 diff --git a/rtdata/images/gtk-undo-ltr-big.png b/rtdata/images/gtk-undoall-ltr-big.png similarity index 100% rename from rtdata/images/gtk-undo-ltr-big.png rename to rtdata/images/gtk-undoall-ltr-big.png diff --git a/rtdata/images/gtk-undoall-ltr.png b/rtdata/images/gtk-undoall-ltr.png new file mode 100644 index 0000000000000000000000000000000000000000..56cc85f52ffe9d5e60f668b556b98f7e87dc7b3a GIT binary patch literal 920 zcmV;J184k+P)Px#24YJ`L;xZHA^;++>lASS000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iOA+ z6$KdKFf@q(00S6FL_t(I%Z=2}Ph3?L!13?B@4cDfSD3alfc%t{R6(N#CS~gjA@K9@<8oELn#JO%P?i2?Z8au2lIw`@7?Rd zX+vo#JtD30GVs)!n6Zwg=Ng6Fa^P1o%PQg>+aV)7mtHBE?S10af%L%B z)?Vo%I@&?V_U63;ghUv}k>+EViE&EXS=JZ7V|c8Ucw2g(Ussuh>6(h7XT{tUE2$xS zBt86stmeN!g%z|0DZwXxz#Jw)Ionq<}+8)rtNUq za~m(_S7&BV42>U8^}cOX3zz6fzlGKsts}H*5cpa4>etvVY|x#qV-SHhNT%%jTx$|y z-&FKT$!urOV1L)}gr!NaIya?+kfAhNto9RwBH1$natBjvqSX-Vi@&J$)M!1~bF%eb z|Jl1c$F@UGDV{Ig%r0%Md|x-nBZLmMj{2gY`b_!OUmMwl8RD@tiMCO;uV3?{P<>Lm zx%6>%VJ5ueI~!}YDCEm~7Q}Was)&hdu{^)Nc*)lq({|Xl9j0K{crCRKiMOeF<>y+jrZ+R}rt*tHHN`^jxfFDs3gYg;pV(fB!*qUX|xE zXvVwxo9?TK)3$?p;9p@oguuI=O9qGofs}lj?CLgi|E$)dpf(K@0QP&>*ga!AY~J0x uqr!6;5z<<2O^z9UdGWJ}Np^+0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2ipn@ z6Du;@Wn*+r7;7 z_&_PWTKeQk=H-_;-!Jo>^Zf_@@1+!CCVc$TrhDPkUaEg>;^RlLik81Sy4X~F#)47@M}y#rx~<`8`Mi;0Q}Jm9N+C`+@!FYhIB}+#zls)p zLIbIXsj8_D8==tl)_n{-mrk9TP z!-Pw!sj6Ad1Fq>NAaF8=kdbvH&+jkf()V^YZ03Urf|k83mAY}J_L(_%=Htl7t0XTT7$X@Gv^JAmymG^$a3m|-q2qu8;MP@` zzwC7)(IG~2KLE!8$AusOAs}4#0-9XNt+TrWG_|6B6Ib-%;c{Y% zB(|gIAAnF~5n*N_BhCaKOVlB>5Wa7ND&Q8bV@95$tNl>kD-Ld3-N?QNozVe=z*e54 zP!6sO6^S(<%IWGnRg6{4wov96-h1)xMsUM}sj%>O|AI*Vd4UO!6ZX-RumzTHOPUc-VzrDVZ z&!-%;Ra@xSlyi1yAcdw^A$5TeSgW?suLaJz@f_g77Z^@4rTN9ehYcI~Y}%;seLn3< zUK;`(Gh6}46$dsTU7ua|{=90B=UqBhpm@Kok)8h;mcz3k_IyXOalN}n3TJ+4JSH<~ zTdJyD&)TgV+`Qha*EMHeX*?#ggN_u5q3&0WV2x@CFQ($Qt z;qw<^;XE#f$*hZ%#f((%KxnX^*26!OiC1vB(#pIPtBe`x)Idnu{B-^XnOqJLk3%*~ zFsUFC!88hlgd!|7BB%afuqvi*#EkUIy?=9j*FjDSjnKL443vd~Yw>XU#lEyUwqp-R zH4UZf1fGY#Fi()WFBl_{i3BoZqoJeWqUi$8-Jp9;1?|lzIMSb?7NgdmU- z-z?%53|z~?>+Z${d?xtz>% literal 0 HcmV?d00001 diff --git a/rtdata/images/gtk-undoall-rtl.png b/rtdata/images/gtk-undoall-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..340434d5e3b971371c25e7552ac348cdc82d5e08 GIT binary patch literal 910 zcmV;919AL`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2ipn@ z6D=Kd(DL&D00Rz5L_t(I%Z=1eXdGo6#_{j_&g^df?>5;aN@5I^rs<*9A|k}erHE26 zAm~Ah+Bpb{UKOu;5IprDBHrBA;zdCeROqE3YY?HqViFq@O|zS9nq+sg|7Wu^^ZvXf zC8;6gIerG7!~4$j!VyWQNTyS~c3j^d&C$`owO_CD-ZA~y#Vw^Uk*NLQ^fj&=!;f9; z1Ln-+JDnZz!MCQr;_Gw@>j=Le^}yMkSBfcZ@hmVPLa!M5PEWk8%bRy7WPdY(-)xG| zK$Gr#(+`gHczVP&Rhj7&N%3%0hnRWIcnrTd8| z&w=Tqbnl;r($ZEh<@7;cqE@&iCh&X_V~;&^S)UlVz~=HVe)(Qz)fgrnmo)$#27Fmq zU2e2>o*@?PCv*G9pu92nei)b!^4WjAeNJU_el_%KkBfvuN=aa`#rnce&GJTO&KRED zE8QDNs#;u`s}`yOriHfTu5+2sfh)D`%xooJ0nzPf8OwF+m&e( zGU2#vA6TB_Vob=3xy2bzOn@C57*3}c+4Yxmi!+D`h_nqVpnvzjj{v$^^S?JC&+m=m zf0K4xazU&9%G%Q3&BVZ #endif +#include +#include -Glib::RefPtr safe_create_from_file(const std::string& filename) +Glib::RefPtr safe_create_from_file(const Glib::ustring& filename) { - Glib::RefPtr res; -#ifdef GLIBMM_EXCEPTIONS_ENABLED - try { - res = Gdk::Pixbuf::create_from_file (filename); - } - catch (Glib::Exception& ex) { - printf ("%s\n", ex.what().c_str()); - } -#else - std::auto_ptr error; - res = Gdk::Pixbuf::create_from_file (filename, error); - if (error.get()) - printf ("%s\n", error->what().c_str()); -#endif - + Glib::RefPtr res; + Glib::ustring path = RTImage::findIconAbsolutePath(filename); + if (path.length()) { + try { + res = Gdk::Pixbuf::create_from_file (path); + } + catch (Glib::Exception& ex) { + printf ("ERROR: (ustring) File \"%s\" not found.\n", ex.what().c_str()); + } + } return res; } Cairo::RefPtr safe_create_from_png(const Glib::ustring& filename) { - Cairo::RefPtr res; - - // files_test need a std::string which (as stated in its proto) but will only work if - // we use the Glib::ustring filename !? - if (!Glib::file_test (filename, Glib::FILE_TEST_EXISTS)) { - printf ("ERROR: (ustring) File \"%s\" not found.\n", filename.c_str()); - } else { - try { - // create_from_png need a std::string converted from UTF8 with safe_locale_from_utf8 - res = Cairo::ImageSurface::create_from_png (safe_locale_from_utf8(filename)); - } catch (...) {} - } - - return res; + Cairo::RefPtr res; + Glib::ustring path = RTImage::findIconAbsolutePath(filename); + if (path.length()) { + // files_test need a std::string which (as stated in its proto) but will only work if + // we use the Glib::ustring filename !? + try { + // create_from_png need a std::string converted from UTF8 with safe_locale_from_utf8 + res = Cairo::ImageSurface::create_from_png (safe_locale_from_utf8(path)); + } catch (...) { + printf("ERROR: (ustring) File \"%s\" not found.\n", path.c_str()); + } + } + return res; } Glib::RefPtr safe_query_file_info (Glib::RefPtr &file) { Glib::RefPtr info; -#ifdef GLIBMM_EXCEPTIONS_ENABLED +#ifdef GLIBMM_EXCEPTIONS_ENABLED try { info = file->query_info(); }catch (...) { } #else std::auto_ptr error; info = file->query_info("*", Gio::FILE_QUERY_INFO_NONE, error); -#endif +#endif return info; } -#ifdef GLIBMM_EXCEPTIONS_ENABLED +#ifdef GLIBMM_EXCEPTIONS_ENABLED # define SAFE_ENUMERATOR_CODE_START \ do{try { if ((dirList = dir->enumerate_children ())) \ for (Glib::RefPtr info = dirList->next_file(); info; info = dirList->next_file()) { @@ -99,12 +95,12 @@ Glib::RefPtr safe_query_file_info (Glib::RefPtr &file) void safe_build_file_list (Glib::RefPtr &dir, std::vector &flist) { - Glib::RefPtr dirList; - if (dir) { - SAFE_ENUMERATOR_CODE_START - flist.push_back (FileMTimeInfo (removeExtension(info->get_name()), info->modification_time())); - SAFE_ENUMERATOR_CODE_END; - } + Glib::RefPtr dirList; + if (dir) { + SAFE_ENUMERATOR_CODE_START + flist.push_back (FileMTimeInfo (removeExtension(info->get_name()), info->modification_time())); + SAFE_ENUMERATOR_CODE_END; + } } /* @@ -112,16 +108,16 @@ void safe_build_file_list (Glib::RefPtr &dir, std::vector &dir, std::vector &names, const Glib::ustring &directory, const std::vector *extensions) { - Glib::RefPtr dirList; + Glib::RefPtr dirList; - if (dir) { - if (!extensions) { + if (dir) { + if (!extensions) { SAFE_ENUMERATOR_CODE_START names.push_back (Glib::build_filename (directory, info->get_name())); SAFE_ENUMERATOR_CODE_END; - } - else { - // convert extensions to lowercase in a new vector list + } + else { + // convert extensions to lowercase in a new vector list std::vector lcExtensions; for (unsigned int i=0; isize(); i++) lcExtensions.push_back ((*extensions)[i].lowercase()); @@ -145,24 +141,24 @@ void safe_build_file_list (Glib::RefPtr &dir, std::vector &dir, std::vector &subDirs, bool add_hidden) { - Glib::RefPtr dirList; - if (dir) - { - // CD-ROMs with no drive inserted are reported, but do not exist, causing RT to crash - if (!safe_file_test(dir->get_path(),Glib::FILE_TEST_EXISTS)) return; + Glib::RefPtr dirList; + if (dir) + { + // CD-ROMs with no drive inserted are reported, but do not exist, causing RT to crash + if (!safe_file_test(dir->get_path(),Glib::FILE_TEST_EXISTS)) return; SAFE_ENUMERATOR_CODE_START if (info->get_file_type() == Gio::FILE_TYPE_DIRECTORY && (!info->is_hidden() || add_hidden)) subDirs.push_back (info->get_name()); SAFE_ENUMERATOR_CODE_END; - } + } } /* @@ -174,22 +170,22 @@ Glib::ustring safe_filename_to_utf8 (const std::string& src) Glib::ustring utf8_str; #ifdef WIN32 #ifdef GLIBMM_EXCEPTIONS_ENABLED - try { - utf8_str = Glib::locale_to_utf8(src); - } - catch (const Glib::ConvertError& e) { - utf8_str = Glib::convert_with_fallback(src, "UTF8", "LATIN1","?"); - } + try { + utf8_str = Glib::locale_to_utf8(src); + } + catch (const Glib::ConvertError& e) { + utf8_str = Glib::convert_with_fallback(src, "UTF8", "LATIN1","?"); + } #else - { - std::auto_ptr error; - utf8_str = locale_to_utf8(src, error); - if (error.get()) - utf8_str = Glib::convert_with_fallback(src, "UTF8", "LATIN1","?", error); - } + { + std::auto_ptr error; + utf8_str = locale_to_utf8(src, error); + if (error.get()) + utf8_str = Glib::convert_with_fallback(src, "UTF8", "LATIN1","?", error); + } #endif //GLIBMM_EXCEPTIONS_ENABLED #else - utf8_str = Glib::filename_to_utf8(src); + utf8_str = Glib::filename_to_utf8(src); #endif return utf8_str; } @@ -198,40 +194,40 @@ Glib::ustring safe_locale_to_utf8 (const std::string& src) { Glib::ustring utf8_str; #ifdef GLIBMM_EXCEPTIONS_ENABLED - try { - utf8_str = Glib::locale_to_utf8(src); - } - catch (const Glib::ConvertError& e) { - utf8_str = Glib::convert_with_fallback(src, "UTF8", "LATIN1","?"); - } + try { + utf8_str = Glib::locale_to_utf8(src); + } + catch (const Glib::ConvertError& e) { + utf8_str = Glib::convert_with_fallback(src, "UTF8", "LATIN1","?"); + } #else - { - std::auto_ptr error; - utf8_str = locale_to_utf8(src, error); - if (error.get()) - utf8_str = Glib::convert_with_fallback(src, "UTF8", "LATIN1","?", error); - } + { + std::auto_ptr error; + utf8_str = locale_to_utf8(src, error); + if (error.get()) + utf8_str = Glib::convert_with_fallback(src, "UTF8", "LATIN1","?", error); + } #endif //GLIBMM_EXCEPTIONS_ENABLED return utf8_str; } std::string safe_locale_from_utf8 (const Glib::ustring& utf8_str) { - std::string str; + std::string str; #ifdef GLIBMM_EXCEPTIONS_ENABLED - try { - str = Glib::locale_from_utf8(utf8_str); - } - catch (const Glib::ConvertError& e) { - //str = Glib::convert_with_fallback(utf8_str, "LATIN1", "UTF8", "?"); - } + try { + str = Glib::locale_from_utf8(utf8_str); + } + catch (const Glib::ConvertError& e) { + //str = Glib::convert_with_fallback(utf8_str, "LATIN1", "UTF8", "?"); + } #else - { - std::auto_ptr error; + { + std::auto_ptr error; str = Glib::locale_from_utf8(utf8_str, error); /*if (error.get()) {str = Glib::convert_with_fallback(utf8_str, "LATIN1", "UTF8", "?", error);}*/ - } + } #endif //GLIBMM_EXCEPTIONS_ENABLED return str; } @@ -240,7 +236,7 @@ bool safe_spawn_command_line_async (const Glib::ustring& cmd_utf8) { std::string cmd; bool success = false; -#ifdef GLIBMM_EXCEPTIONS_ENABLED +#ifdef GLIBMM_EXCEPTIONS_ENABLED try { cmd = Glib::filename_from_utf8(cmd_utf8); printf ("command line: %s\n", cmd.c_str()); @@ -266,46 +262,46 @@ bool safe_spawn_command_line_async (const Glib::ustring& cmd_utf8) bool safe_spawn_command_line_sync (const Glib::ustring& cmd_utf8) { - std::string cmd; - std::string stdOut; - std::string stdErr; + std::string cmd; + std::string stdOut; + std::string stdErr; - bool success = false; + //bool success = false; // unused - int exitStatus=-1; - try { - //cmd = Glib::filename_from_utf8(cmd_utf8); - printf ("command line: %s\n", cmd_utf8.c_str()); + int exitStatus=-1; + try { + //cmd = Glib::filename_from_utf8(cmd_utf8); + printf ("command line: %s\n", cmd_utf8.c_str()); - // if it crashes here on windows, make sure you have the GTK runtime files gspawn-win32-helper*.exe files in RT directory - Glib::spawn_command_line_sync (cmd_utf8, NULL, NULL, &exitStatus); - } catch (Glib::Exception& ex) { - printf ("%s\n", ex.what().c_str()); - } - return (exitStatus==0); + // if it crashes here on windows, make sure you have the GTK runtime files gspawn-win32-helper*.exe files in RT directory + Glib::spawn_command_line_sync (cmd_utf8, NULL, NULL, &exitStatus); + } catch (Glib::Exception& ex) { + printf ("%s\n", ex.what().c_str()); + } + return (exitStatus==0); } // Opens a file for binary writing and request exclusive lock (cases were you need "wb" mode plus locking) // (Important on Windows to prevent Explorer to crash RT when parallel scanning e.g. a currently written image file) FILE * safe_g_fopen_WriteBinLock(const Glib::ustring& fname) { - FILE* f=NULL; + FILE* f=NULL; #ifdef WIN32 - // g_fopen just uses _wfopen internally on Windows, does not lock access and has no options to set this - // so use a native function to work around this problem - wchar_t *wFname = (wchar_t*)g_utf8_to_utf16 (fname.c_str(), -1, NULL, NULL, NULL); - HANDLE hFile = CreateFileW(wFname, GENERIC_READ | GENERIC_WRITE, 0 /* no sharing allowed */, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - g_free(wFname); + // g_fopen just uses _wfopen internally on Windows, does not lock access and has no options to set this + // so use a native function to work around this problem + wchar_t *wFname = (wchar_t*)g_utf8_to_utf16 (fname.c_str(), -1, NULL, NULL, NULL); + HANDLE hFile = CreateFileW(wFname, GENERIC_READ | GENERIC_WRITE, 0 /* no sharing allowed */, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + g_free(wFname); - if (hFile==INVALID_HANDLE_VALUE) - f=NULL; - else - f=_fdopen( _open_osfhandle((intptr_t)hFile, 0) , "wb"); + if (hFile==INVALID_HANDLE_VALUE) + f=NULL; + else + f=_fdopen( _open_osfhandle((intptr_t)hFile, 0) , "wb"); #else - f = safe_g_fopen(fname, "wb"); + f = safe_g_fopen(fname, "wb"); #endif - return f; + return f; } // Covers old UNIX ::open, which expects ANSI instead of UTF8 on Windows @@ -313,44 +309,44 @@ int safe_open_ReadOnly(const char *fname) { int fd=-1; #ifdef WIN32 - // First convert UTF8 to UTF16, then use Windows function to open + // First convert UTF8 to UTF16, then use Windows function to open wchar_t *wFname = (wchar_t*)g_utf8_to_utf16 (fname, -1, NULL, NULL, NULL); - HANDLE hFile = CreateFileW(wFname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - g_free(wFname); + HANDLE hFile = CreateFileW(wFname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + g_free(wFname); // convert back to old file descriptor format - if (hFile!=INVALID_HANDLE_VALUE) fd = _open_osfhandle((intptr_t)hFile, 0); + if (hFile!=INVALID_HANDLE_VALUE) fd = _open_osfhandle((intptr_t)hFile, 0); #else - fd = ::open(fname, O_RDONLY); + fd = ::open(fname, O_RDONLY); #endif - return fd; + return fd; } FILE * safe_g_fopen(const Glib::ustring& src,const gchar *mode) -{ - return g_fopen(src.c_str(),mode); +{ + return g_fopen(src.c_str(),mode); } bool safe_file_test (const Glib::ustring& filename, Glib::FileTest test) { - return Glib::file_test (filename, test); + return Glib::file_test (filename, test); } int safe_g_remove(const Glib::ustring& filename) { - return ::g_remove(filename.c_str()); + return ::g_remove(filename.c_str()); } int safe_g_rename(const Glib::ustring& oldFilename, const Glib::ustring& newFilename) { - return ::g_rename(oldFilename.c_str(), newFilename.c_str()); + return ::g_rename(oldFilename.c_str(), newFilename.c_str()); } int safe_g_mkdir_with_parents(const Glib::ustring& dirName, int mode) { - return ::g_mkdir_with_parents(dirName.c_str(), mode); + return ::g_mkdir_with_parents(dirName.c_str(), mode); } Glib::ustring safe_get_user_picture_dir() { @@ -360,9 +356,9 @@ Glib::ustring safe_get_user_picture_dir() { // so we use the safe native functions here WCHAR pathW[MAX_PATH]={0}; if (SHGetSpecialFolderPathW(NULL,pathW,CSIDL_MYPICTURES,false)) { - char pathA[MAX_PATH]; - WideCharToMultiByte(CP_UTF8,0,pathW,-1,pathA,MAX_PATH,0,0); - return Glib::ustring(pathA); + char pathA[MAX_PATH]; + WideCharToMultiByte(CP_UTF8,0,pathW,-1,pathA,MAX_PATH,0,0); + return Glib::ustring(pathA); } else return Glib::ustring("C:\\"); #else @@ -370,4 +366,4 @@ Glib::ustring safe_get_user_picture_dir() { return Glib::get_user_special_dir (G_USER_DIRECTORY_PICTURES); #endif -} \ No newline at end of file +} diff --git a/rtengine/safegtk.h b/rtengine/safegtk.h index 831f73035..c9e832b00 100644 --- a/rtengine/safegtk.h +++ b/rtengine/safegtk.h @@ -5,7 +5,7 @@ #include #include -Glib::RefPtr safe_create_from_file(const std::string& filename); +Glib::RefPtr safe_create_from_file(const Glib::ustring& filename); Cairo::RefPtr safe_create_from_png(const Glib::ustring& filename); class FileMTimeInfo { diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index 89fb6210a..13e32e1af 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -14,7 +14,7 @@ set (BASESOURCEFILES crophandler.cc dirbrowser.cc curveeditor.cc curveeditorgroup.cc diagonalcurveeditorsubgroup.cc flatcurveeditorsubgroup.cc filecatalog.cc - previewloader.cc + previewloader.cc rtimage.cc histogrampanel.cc history.cc imagearea.cc imageareapanel.cc iptcpanel.cc labcurve.cc main.cc multilangmgr.cc mycurve.cc myflatcurve.cc mydiagonalcurve.cc options.cc diff --git a/rtgui/adjuster.cc b/rtgui/adjuster.cc index 403a1e624..ba7dab662 100644 --- a/rtgui/adjuster.cc +++ b/rtgui/adjuster.cc @@ -23,6 +23,7 @@ #include #include #include +#include extern Glib::ustring argv0; @@ -58,7 +59,7 @@ Adjuster::Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep hbox->pack_start (*label); reset = Gtk::manage (new Gtk::Button ()); - reset->add (*Gtk::manage (new Gtk::Image (argv0+"/images/undo.png"))); + reset->add (*Gtk::manage (new RTImage ("default-settings-ltr.png", "default-settings-rtl.png"))); reset->set_relief (Gtk::RELIEF_NONE); reset->set_border_width (0); reset->set_tooltip_text (M("ADJUSTER_RESET_TO_DEFAULT")); @@ -121,7 +122,7 @@ Adjuster::Adjuster (Gtk::Image *imgIcon, double vmin, double vmax, double vstep, reset = Gtk::manage (new Gtk::Button ()); - reset->add (*Gtk::manage (new Gtk::Image (argv0+"/images/undo.png"))); + reset->add (*Gtk::manage (new RTImage ("default-settings-ltr.png", "default-settings-rtl.png"))); reset->set_relief (Gtk::RELIEF_NONE); reset->set_border_width (0); reset->set_tooltip_text (M("ADJUSTER_RESET_TO_DEFAULT")); diff --git a/rtgui/adjuster.h b/rtgui/adjuster.h index e37b14997..abd444c47 100644 --- a/rtgui/adjuster.h +++ b/rtgui/adjuster.h @@ -77,6 +77,7 @@ class Adjuster : public Gtk::VBox { void setLimits (double vmin, double vmax, double vstep, double vdefault); void setEnabled (bool enabled); void setDefault (double def); + void setNbDisplayedChars (int nbr) { spin->set_width_chars(nbr); } void setEditedState (EditedState eState); EditedState getEditedState (); void setDefaultEditedState (EditedState eState); diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc index 327f94c8a..b0d223a0e 100644 --- a/rtgui/batchqueue.cc +++ b/rtgui/batchqueue.cc @@ -24,6 +24,7 @@ #include #include #include +#include #include @@ -37,15 +38,15 @@ BatchQueue::BatchQueue () : processing(NULL), listener(NULL) { pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(head = new Gtk::ImageMenuItem (M("FILEBROWSER_POPUPMOVEHEAD"))), 0, 1, p, p+1); p++; - head->set_image(*Gtk::manage(new Gtk::Image (argv0+"/images/toleftend.png"))); + head->set_image(*Gtk::manage(new RTImage ("toleftend.png"))); pmenu->attach (*Gtk::manage(tail = new Gtk::ImageMenuItem (M("FILEBROWSER_POPUPMOVEEND"))), 0, 1, p, p+1); p++; - tail->set_image(*Gtk::manage(new Gtk::Image (argv0+"/images/torightend.png"))); + tail->set_image(*Gtk::manage(new RTImage ("torightend.png"))); pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(cancel = new Gtk::ImageMenuItem (M("FILEBROWSER_POPUPCANCELJOB"))), 0, 1, p, p+1); p++; - cancel->set_image(*Gtk::manage(new Gtk::Image (argv0+"/images/deltags.png"))); + cancel->set_image(*Gtk::manage(new RTImage ("deltags.png"))); pmenu->show_all (); diff --git a/rtgui/batchqueuebuttonset.cc b/rtgui/batchqueuebuttonset.cc index 84b35657b..91a834841 100644 --- a/rtgui/batchqueuebuttonset.cc +++ b/rtgui/batchqueuebuttonset.cc @@ -31,9 +31,9 @@ Cairo::RefPtr BatchQueueButtonSet::tailIcon; BatchQueueButtonSet::BatchQueueButtonSet (BatchQueueEntry* myEntry) { if (!iconsLoaded) { - cancelIcon = safe_create_from_png (argv0+"/images/deltags.png"); - headIcon = safe_create_from_png (argv0+"/images/toleftend.png"); - tailIcon = safe_create_from_png (argv0+"/images/torightend.png"); + cancelIcon = safe_create_from_png ("deltags.png"); + headIcon = safe_create_from_png ("toleftend.png"); + tailIcon = safe_create_from_png ("torightend.png"); iconsLoaded = true; } diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index 4c479ebc6..b502faa42 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -23,6 +23,7 @@ #include #include #include +#include BatchQueuePanel::BatchQueuePanel () { @@ -114,13 +115,13 @@ BatchQueuePanel::BatchQueuePanel () { zoomLabel->set_use_markup (true); zoomBox->pack_start (*zoomLabel, Gtk::PACK_SHRINK, 4); zoomInButton = Gtk::manage (new Gtk::Button ()); - zoomInButton->set_image (*Gtk::manage (new Gtk::Image (Gtk::StockID("gtk-zoom-in"), Gtk::ICON_SIZE_SMALL_TOOLBAR))); + zoomInButton->set_image (*Gtk::manage (new RTImage ("gtk-zoom-in.png"))); zoomInButton->signal_pressed().connect (sigc::mem_fun(*batchQueue, &BatchQueue::zoomIn)); zoomInButton->set_relief (Gtk::RELIEF_NONE); zoomInButton->set_tooltip_markup (M("FILEBROWSER_ZOOMINHINT")); zoomBox->pack_end (*zoomInButton, Gtk::PACK_SHRINK); zoomOutButton = Gtk::manage (new Gtk::Button ()); - zoomOutButton->set_image (*Gtk::manage (new Gtk::Image (Gtk::StockID("gtk-zoom-out"), Gtk::ICON_SIZE_SMALL_TOOLBAR))); + zoomOutButton->set_image (*Gtk::manage (new RTImage ("gtk-zoom-out.png"))); zoomOutButton->signal_pressed().connect (sigc::mem_fun(*batchQueue, &BatchQueue::zoomOut)); zoomOutButton->set_relief (Gtk::RELIEF_NONE); zoomOutButton->set_tooltip_markup (M("FILEBROWSER_ZOOMOUTHINT")); @@ -144,13 +145,13 @@ void BatchQueuePanel::updateTab (int qsize) Gtk::Label* l; if(!qsize ){ - vbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing.png"))); + vbb->pack_start (*Gtk::manage (new RTImage ("processing.png"))); l=Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE")) ); } else if( start->get_active () ){ - vbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing-play.png"))); + vbb->pack_start (*Gtk::manage (new RTImage ("processing-play.png"))); l=Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]")); } else { - vbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing-pause.png"))); + vbb->pack_start (*Gtk::manage (new RTImage ("processing-pause.png"))); l=Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]" )); } l->set_angle (90); @@ -162,13 +163,13 @@ void BatchQueuePanel::updateTab (int qsize) } else { Gtk::HBox* hbb = Gtk::manage (new Gtk::HBox ()); if (!qsize ) { - hbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing.png"))); + hbb->pack_start (*Gtk::manage (new RTImage ("processing.png"))); hbb->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE") ))); } else if ( start->get_active () ){ - hbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing-play.png"))); + hbb->pack_start (*Gtk::manage (new RTImage ("processing-play.png"))); hbb->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]" ))); } else { - hbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing-pause.png"))); + hbb->pack_start (*Gtk::manage (new RTImage ("processing-pause.png"))); hbb->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]" ))); } hbb->set_spacing (2); diff --git a/rtgui/chmixer.cc b/rtgui/chmixer.cc index 96102a501..bc7b7d8a6 100644 --- a/rtgui/chmixer.cc +++ b/rtgui/chmixer.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include +#include using namespace rtengine; using namespace rtengine::procparams; @@ -25,15 +26,15 @@ extern Glib::ustring argv0; ChMixer::ChMixer (): Gtk::VBox(), FoldableToolPanel(this) { - imgIcon[0] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_RR.png")); - imgIcon[1] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_RG.png")); - imgIcon[2] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_RB.png")); - imgIcon[3] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_GR.png")); - imgIcon[4] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_GG.png")); - imgIcon[5] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_GB.png")); - imgIcon[6] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_BR.png")); - imgIcon[7] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_BG.png")); - imgIcon[8] = Gtk::manage (new Gtk::Image (argv0+"/images/Chanmixer_BB.png")); + imgIcon[0] = Gtk::manage (new RTImage ("Chanmixer_RR.png")); + imgIcon[1] = Gtk::manage (new RTImage ("Chanmixer_RG.png")); + imgIcon[2] = Gtk::manage (new RTImage ("Chanmixer_RB.png")); + imgIcon[3] = Gtk::manage (new RTImage ("Chanmixer_GR.png")); + imgIcon[4] = Gtk::manage (new RTImage ("Chanmixer_GG.png")); + imgIcon[5] = Gtk::manage (new RTImage ("Chanmixer_GB.png")); + imgIcon[6] = Gtk::manage (new RTImage ("Chanmixer_BR.png")); + imgIcon[7] = Gtk::manage (new RTImage ("Chanmixer_BG.png")); + imgIcon[8] = Gtk::manage (new RTImage ("Chanmixer_BB.png")); Gtk::Label* rlabel = Gtk::manage (new Gtk::Label ()); rlabel->set_markup (Glib::ustring("\t") + M("TP_CHMIXER_RED") + Glib::ustring(":")); diff --git a/rtgui/coarsepanel.cc b/rtgui/coarsepanel.cc index c5b05b228..866828fd2 100644 --- a/rtgui/coarsepanel.cc +++ b/rtgui/coarsepanel.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include +#include extern Glib::ustring argv0; @@ -27,25 +28,25 @@ CoarsePanel::CoarsePanel () : ToolPanel () { degree = 0; - Gtk::Image* rotateli = Gtk::manage (new Gtk::Image (argv0+"/images/stock-rotate-270-16.png")); + Gtk::Image* rotateli = Gtk::manage (new RTImage ("stock-rotate-270-16.png")); rotate_left = Gtk::manage (new Gtk::Button ()); rotate_left->add (*rotateli); rotate_left->set_relief(Gtk::RELIEF_NONE); pack_start (*rotate_left); - Gtk::Image* rotateri = Gtk::manage (new Gtk::Image (argv0+"/images/stock-rotate-90-16.png")); + Gtk::Image* rotateri = Gtk::manage (new RTImage ("stock-rotate-90-16.png")); rotate_right = Gtk::manage (new Gtk::Button ()); rotate_right->add (*rotateri); rotate_right->set_relief(Gtk::RELIEF_NONE); pack_start (*rotate_right); - Gtk::Image* fliphi = Gtk::manage (new Gtk::Image (argv0+"/images/stock-flip-horizontal-16.png")); + Gtk::Image* fliphi = Gtk::manage (new RTImage ("stock-flip-horizontal-16.png")); hflip = Gtk::manage (new Gtk::ToggleButton ()); hflip->add (*fliphi); hflip->set_relief(Gtk::RELIEF_NONE); pack_start (*hflip); - Gtk::Image* flipvi = Gtk::manage (new Gtk::Image (argv0+"/images/stock-flip-vertical-16.png")); + Gtk::Image* flipvi = Gtk::manage (new RTImage ("stock-flip-vertical-16.png")); vflip = Gtk::manage (new Gtk::ToggleButton ()); vflip->add (*flipvi); vflip->set_relief(Gtk::RELIEF_NONE); diff --git a/rtgui/crop.cc b/rtgui/crop.cc index 30957d4ac..e16996b5b 100644 --- a/rtgui/crop.cc +++ b/rtgui/crop.cc @@ -18,6 +18,8 @@ */ #include #include +#include + using namespace rtengine; using namespace rtengine::procparams; @@ -75,7 +77,7 @@ Crop::Crop (): Gtk::VBox(), FoldableToolPanel(this) { pack_start (*hb2, Gtk::PACK_SHRINK, 4); selectCrop = Gtk::manage (new Gtk::Button (M("TP_CROP_SELECTCROP"))); - selectCrop->set_image (*Gtk::manage (new Gtk::Image (argv0+"/images/crop22.png"))); + selectCrop->set_image (*Gtk::manage (new RTImage ("crop22.png"))); pack_start (*selectCrop, Gtk::PACK_SHRINK, 2); diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index fecf2a9a5..dd9ffd4d2 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -69,12 +69,12 @@ CropWindow::CropWindow (ImageArea* parent, rtengine::StagedImageProcessor* ipc_, titleHeight = ih; - resizeSurface = safe_create_from_png (argv0+"/images/resize.png"); - bZoomIn = new LWButton (safe_create_from_png (argv0+"/images/gtk-zoom-in.png"), 0, NULL, LWButton::Left, LWButton::Center, "Zoom In"); - bZoomOut = new LWButton (safe_create_from_png (argv0+"/images/gtk-zoom-out.png"), 1, NULL, LWButton::Left, LWButton::Center, "Zoom Out"); - bZoom100 = new LWButton (safe_create_from_png (argv0+"/images/gtk-zoom-100.png"), 2, NULL, LWButton::Left, LWButton::Center, "Zoom 100/%"); - //bZoomFit = new LWButton (safe_create_from_png (argv0+"/images/gtk-zoom-fit.png"), 3, NULL, LWButton::Left, LWButton::Center, "Zoom Fit"); - bClose = new LWButton (safe_create_from_png (argv0+"/images/gtk-close.png"), 4, NULL, LWButton::Right, LWButton::Center, "Close"); + resizeSurface = safe_create_from_png ("resize.png"); + bZoomIn = new LWButton (safe_create_from_png ("gtk-zoom-in.png"), 0, NULL, LWButton::Left, LWButton::Center, "Zoom In"); + bZoomOut = new LWButton (safe_create_from_png ("gtk-zoom-out.png"), 1, NULL, LWButton::Left, LWButton::Center, "Zoom Out"); + bZoom100 = new LWButton (safe_create_from_png ("gtk-zoom-100.png"), 2, NULL, LWButton::Left, LWButton::Center, "Zoom 100/%"); + //bZoomFit = new LWButton (safe_create_from_png ("gtk-zoom-fit.png"), 3, NULL, LWButton::Left, LWButton::Center, "Zoom Fit"); + bClose = new LWButton (safe_create_from_png ("gtk-close.png"), 4, NULL, LWButton::Right, LWButton::Center, "Close"); buttonSet.add (bZoomIn); buttonSet.add (bZoomOut); diff --git a/rtgui/cursormanager.cc b/rtgui/cursormanager.cc index 7e09678df..3c938ddf5 100644 --- a/rtgui/cursormanager.cc +++ b/rtgui/cursormanager.cc @@ -19,6 +19,7 @@ #include #include #include +#include CursorManager cursorManager; @@ -35,10 +36,10 @@ void CursorManager::init (Glib::RefPtr mainWin) { cAdd = new Gdk::Cursor (Gdk::PLUS); cWait = new Gdk::Cursor (Gdk::CLOCK); - Glib::RefPtr hand = safe_create_from_file(argv0+"/images/cross22.png"); - Glib::RefPtr close_hand = safe_create_from_file(argv0+"/images/closedhand22.png"); - Glib::RefPtr wbpick = safe_create_from_file(argv0+"/images/wbpicker16.png"); - Glib::RefPtr empty = safe_create_from_file(argv0+"/images/empty.png"); + Glib::RefPtr hand = safe_create_from_file("cross22.png"); + Glib::RefPtr close_hand = safe_create_from_file("closedhand22.png"); + Glib::RefPtr wbpick = safe_create_from_file("wbpicker16.png"); + Glib::RefPtr empty = safe_create_from_file("empty.png"); cHand = hand ? new Gdk::Cursor (cAdd->get_display(), hand, 10, 10) : new Gdk::Cursor (Gdk::HAND2); cClosedHand = close_hand ? new Gdk::Cursor (cAdd->get_display(), close_hand, 10, 10) : new Gdk::Cursor (Gdk::HAND2); diff --git a/rtgui/curveeditor.cc b/rtgui/curveeditor.cc index c7136259f..219ddb13d 100644 --- a/rtgui/curveeditor.cc +++ b/rtgui/curveeditor.cc @@ -31,10 +31,10 @@ extern Glib::ustring argv0; DiagonalCurveEditor::DiagonalCurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup) : CurveEditor::CurveEditor(text, (CurveEditorGroup*) ceGroup, ceSubGroup) { // Order set in the same order than "enum DiagonalCurveType". Shouldn't change, for compatibility reason - curveType->addEntry(argv0+"/images/curveType-linear.png", M("CURVEEDITOR_LINEAR")); // 0 Linear - curveType->addEntry(argv0+"/images/curveType-spline.png", M("CURVEEDITOR_CUSTOM")); // 1 Spline - curveType->addEntry(argv0+"/images/curveType-parametric.png", M("CURVEEDITOR_PARAMETRIC")); // 2 Parametric - curveType->addEntry(argv0+"/images/curveType-NURBS.png", M("CURVEEDITOR_NURBS")); // 3 NURBS + curveType->addEntry("curveType-linear.png", M("CURVEEDITOR_LINEAR")); // 0 Linear + curveType->addEntry("curveType-spline.png", M("CURVEEDITOR_CUSTOM")); // 1 Spline + curveType->addEntry("curveType-parametric.png", M("CURVEEDITOR_PARAMETRIC")); // 2 Parametric + curveType->addEntry("curveType-NURBS.png", M("CURVEEDITOR_NURBS")); // 3 NURBS curveType->setSelected(DCT_Linear); curveType->show(); } @@ -61,8 +61,8 @@ FlatCurveEditor::FlatCurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, periodic = isPeriodic; // Order set in the same order than "enum FlatCurveType". Shouldn't change, for compatibility reason - curveType->addEntry(argv0+"/images/curveType-flatLinear.png", M("CURVEEDITOR_LINEAR")); // 0 Linear - curveType->addEntry(argv0+"/images/curveType-controlPoints.png", M("CURVEEDITOR_MINMAXCPOINTS")); // 1 Min/Max ControlPoints + curveType->addEntry("curveType-flatLinear.png", M("CURVEEDITOR_LINEAR")); // 0 Linear + curveType->addEntry("curveType-controlPoints.png", M("CURVEEDITOR_MINMAXCPOINTS")); // 1 Min/Max ControlPoints curveType->setSelected(FCT_Linear); curveType->show(); } diff --git a/rtgui/curveeditorgroup.cc b/rtgui/curveeditorgroup.cc index 59624d251..2ed7c201f 100644 --- a/rtgui/curveeditorgroup.cc +++ b/rtgui/curveeditorgroup.cc @@ -25,6 +25,7 @@ #include #include #include +#include extern Glib::ustring argv0; @@ -90,7 +91,7 @@ void CurveEditorGroup::newLine() { headerBox->pack_start(*curveGroupLabel, Gtk::PACK_SHRINK, 2); curve_reset = Gtk::manage (new Gtk::Button ()); - curve_reset->add (*Gtk::manage (new Gtk::Image (argv0+"/images/undo.png"))); + curve_reset->add (*Gtk::manage (new RTImage ("default-settings-ltr.png", "default-settings-rtl.png"))); curve_reset->set_relief (Gtk::RELIEF_NONE); curve_reset->set_border_width (0); curve_reset->set_tooltip_text (M("CURVEEDITOR_TOOLTIPLINEAR")); @@ -268,7 +269,7 @@ void CurveEditorGroup::curveResetPressed () { void CurveEditorGroup::setBatchMode (bool batchMode) { for (std::vector::iterator i = curveEditors.begin(); i != curveEditors.end(); ++i) { - (*i)->curveType->addEntry(argv0+"/images/curveType-unchanged.png", M("GENERAL_UNCHANGED")); + (*i)->curveType->addEntry("curveType-unchanged.png", M("GENERAL_UNCHANGED")); (*i)->curveType->show(); } } diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc index e95344c36..a6711e696 100644 --- a/rtgui/dirbrowser.cc +++ b/rtgui/dirbrowser.cc @@ -26,6 +26,7 @@ #include #include +#include #define CHECKTIME 5000 extern Glib::ustring argv0; @@ -54,13 +55,13 @@ DirBrowser::DirBrowser () { void DirBrowser::fillDirTree () { - openfolder = safe_create_from_file (argv0+"/images/folder_open.png"); - closedfolder = safe_create_from_file (argv0+"/images/folder.png"); - icdrom = safe_create_from_file (argv0+"/images/cdrom.png"); - ifloppy = safe_create_from_file (argv0+"/images/floppy.png"); - ihdd = safe_create_from_file (argv0+"/images/hdd.png"); - iremovable = safe_create_from_file (argv0+"/images/usbpendrive.png"); - inetwork = safe_create_from_file (argv0+"/images/network.png"); + openfolder = safe_create_from_file ("folder_open.png"); + closedfolder = safe_create_from_file ("folder.png"); + icdrom = safe_create_from_file ("cdrom.png"); + ifloppy = safe_create_from_file ("floppy.png"); + ihdd = safe_create_from_file ("hdd.png"); + iremovable = safe_create_from_file ("usbpendrive.png"); + inetwork = safe_create_from_file ("network.png"); //Create the Tree model: dirTreeModel = Gtk::TreeStore::create(dtColumns); diff --git a/rtgui/distortion.cc b/rtgui/distortion.cc index a1e7e3589..769255a3f 100644 --- a/rtgui/distortion.cc +++ b/rtgui/distortion.cc @@ -18,6 +18,7 @@ */ #include #include +#include extern Glib::ustring argv0; @@ -28,7 +29,7 @@ Distortion::Distortion (): Gtk::VBox(), FoldableToolPanel(this) { rlistener = NULL; autoDistor = Gtk::manage (new Gtk::Button (M("TP_DISTORTION_AUTO"))); - autoDistor->set_image (*Gtk::manage (new Gtk::Image (argv0+"/images/distortion_auto.png"))); + autoDistor->set_image (*Gtk::manage (new RTImage ("distortion_auto.png"))); autoDistor->set_tooltip_text (M("TP_DISTORTION_AUTO_TIP")); idConn = autoDistor->signal_pressed().connect( sigc::mem_fun(*this, &Distortion::idPressed) ); autoDistor->show(); diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 993b33eba..750479164 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -26,6 +26,7 @@ #include #include #include +#include using namespace rtengine::procparams; @@ -71,19 +72,19 @@ EditorPanel::EditorPanel (FilePanel* filePanel) Gtk::VBox* editbox = Gtk::manage (new Gtk::VBox ()); info = Gtk::manage (new Gtk::ToggleButton ()); - Gtk::Image* infoimg = Gtk::manage (new Gtk::Image (argv0+"/images/info.png")); + Gtk::Image* infoimg = Gtk::manage (new RTImage ("info.png")); info->add (*infoimg); info->set_relief(Gtk::RELIEF_NONE); info->set_tooltip_markup (M("MAIN_TOOLTIP_QINFO")); beforeAfter = Gtk::manage (new Gtk::ToggleButton ()); - Gtk::Image* beforeAfterIcon = Gtk::manage (new Gtk::Image (argv0+"/images/beforeafter.png")); + Gtk::Image* beforeAfterIcon = Gtk::manage (new RTImage ("beforeafter.png")); beforeAfter->add(*beforeAfterIcon); beforeAfter->set_relief(Gtk::RELIEF_NONE); beforeAfter->set_tooltip_markup (M("MAIN_TOOLTIP_TOGGLE")); - iBeforeLockON = new Gtk::Image(argv0+"/images/lock_on.png"); - iBeforeLockOFF = new Gtk::Image(argv0+"/images/lock_off.png"); + iBeforeLockON = new RTImage ("lock_on.png"); + iBeforeLockOFF = new RTImage ("lock_off.png"); Gtk::VSeparator* vsept = Gtk::manage (new Gtk::VSeparator ()); Gtk::VSeparator* vsepz = Gtk::manage (new Gtk::VSeparator ()); @@ -93,8 +94,8 @@ EditorPanel::EditorPanel (FilePanel* filePanel) hidehp = Gtk::manage (new Gtk::ToggleButton ()); - iHistoryShow = new Gtk::Image(argv0+"/images/panel_to_right.png"); - iHistoryHide = new Gtk::Image(argv0+"/images/panel_to_left.png"); + iHistoryShow = new RTImage ("panel_to_right.png"); + iHistoryHide = new RTImage ("panel_to_left.png"); hidehp->set_relief(Gtk::RELIEF_NONE); hidehp->set_active (options.showHistory); @@ -107,16 +108,16 @@ EditorPanel::EditorPanel (FilePanel* filePanel) } tbTopPanel_1 = new Gtk::ToggleButton (); - iTopPanel_1_Show = new Gtk::Image(argv0+"/images/panel_to_bottom.png"); - iTopPanel_1_Hide = new Gtk::Image(argv0+"/images/panel_to_top.png"); + iTopPanel_1_Show = new RTImage ("panel_to_bottom.png"); + iTopPanel_1_Hide = new RTImage ("panel_to_top.png"); tbTopPanel_1->set_relief(Gtk::RELIEF_NONE); tbTopPanel_1->set_active (true); tbTopPanel_1->set_tooltip_markup (M("MAIN_TOOLTIP_SHOWHIDETP1")); tbTopPanel_1->set_image (*iTopPanel_1_Hide); tbRightPanel_1 = new Gtk::ToggleButton (); - iRightPanel_1_Show = new Gtk::Image(argv0+"/images/panel_to_left.png"); - iRightPanel_1_Hide = new Gtk::Image(argv0+"/images/panel_to_right.png"); + iRightPanel_1_Show = new RTImage ("panel_to_left.png"); + iRightPanel_1_Hide = new RTImage ("panel_to_right.png"); tbRightPanel_1->set_relief(Gtk::RELIEF_NONE); tbRightPanel_1->set_active (true); tbRightPanel_1->set_tooltip_markup (M("MAIN_TOOLTIP_SHOWHIDERP1")); @@ -167,7 +168,7 @@ EditorPanel::EditorPanel (FilePanel* filePanel) Gtk::HBox* iops = Gtk::manage (new Gtk::HBox ()); //Gtk::Image *saveButtonImage = Gtk::manage (new Gtk::Image (Gtk::StockID("gtk-save"), Gtk::ICON_SIZE_BUTTON)); - Gtk::Image *saveButtonImage = Gtk::manage (new Gtk::Image (argv0+"/images/save_hdd_01.png")); + Gtk::Image *saveButtonImage = Gtk::manage (new RTImage ("save_hdd_01.png")); saveimgas = Gtk::manage (new Gtk::Button ()); saveimgas->add(*saveButtonImage); saveimgas->set_tooltip_markup(M("MAIN_BUTTON_SAVE_TOOLTIP")); @@ -177,7 +178,7 @@ EditorPanel::EditorPanel (FilePanel* filePanel) queueimg->add(*queueButtonImage); queueimg->set_tooltip_markup(M("MAIN_BUTTON_PUTTOQUEUE_TOOLTIP")); - Gtk::Image *sendToEditorButtonImage = Gtk::manage (new Gtk::Image (argv0+"/images/gimp.png")); + Gtk::Image *sendToEditorButtonImage = Gtk::manage (new RTImage ("gimp.png")); sendtogimp = Gtk::manage (new Gtk::Button ()); sendtogimp->add(*sendToEditorButtonImage); sendtogimp->set_tooltip_markup(M("MAIN_BUTTON_SENDTOEDITOR_TOOLTIP")); @@ -201,7 +202,7 @@ EditorPanel::EditorPanel (FilePanel* filePanel) // ShowHideSidePanels tbShowHideSidePanels = new Gtk::ToggleButton (); - iShowHideSidePanels = new Gtk::Image(argv0+"/images/crossed_arrows_out_45_02.png"); + iShowHideSidePanels = new RTImage ("crossed_arrows_out_45_02.png"); tbShowHideSidePanels->set_relief(Gtk::RELIEF_NONE); tbShowHideSidePanels->set_active (false); tbShowHideSidePanels->set_tooltip_markup (M("MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP")); diff --git a/rtgui/editwindow.cc b/rtgui/editwindow.cc index 1b996172c..208e58d35 100644 --- a/rtgui/editwindow.cc +++ b/rtgui/editwindow.cc @@ -19,6 +19,7 @@ #include #include #include +#include #include static EditWindow* editWnd = NULL; @@ -59,12 +60,15 @@ EditWindow* EditWindow::getInstance(RTWindow* p) EditWindow::EditWindow (RTWindow* p) : parent(p) , isFullscreen(false) { + Glib::ustring fName = "logoicon16.png"; + Glib::ustring fullPath = RTImage::findIconAbsolutePath(fName); + #ifdef GLIBMM_EXCEPTIONS_ENABLED - try { set_default_icon_from_file (argv0+"/images/logoicon16.png"); + try { set_default_icon_from_file (fullPath); } catch(Glib::Exception& ex) { printf ("%s\n", ex.what().c_str()); } #else { std::auto_ptr error; - set_default_icon_from_file (argv0+"/images/logoicon16.png", error); + set_default_icon_from_file (fullPath, error); } #endif //GLIBMM_EXCEPTIONS_ENABLED diff --git a/rtgui/exifpanel.cc b/rtgui/exifpanel.cc index 1c112c4c4..4be631af6 100644 --- a/rtgui/exifpanel.cc +++ b/rtgui/exifpanel.cc @@ -19,6 +19,7 @@ #include #include #include +#include using namespace rtengine; using namespace rtengine::procparams; @@ -46,9 +47,9 @@ ExifPanel::ExifPanel () : idata(NULL) { exifTreeModel = Gtk::TreeStore::create(exifColumns); exifTree->set_model (exifTreeModel); - delicon = safe_create_from_file (argv0+"/images/deltags.png"); - keepicon = safe_create_from_file (argv0+"/images/addtags.png"); - editicon = safe_create_from_file (argv0+"/images/logoicon16.png"); + delicon = safe_create_from_file ("deltags.png"); + keepicon = safe_create_from_file ("addtags.png"); + editicon = safe_create_from_file ("logoicon16.png"); Gtk::TreeView::Column *viewcol = Gtk::manage(new Gtk::TreeView::Column ("Field Name")); Gtk::CellRendererPixbuf* render_pb = Gtk::manage(new Gtk::CellRendererPixbuf ()); @@ -95,12 +96,12 @@ ExifPanel::ExifPanel () : idata(NULL) { buttons1->pack_start (*add); reset = Gtk::manage(new Gtk::Button (M("EXIFPANEL_RESET"))); - reset->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID ("gtk-undo"), Gtk::IconSize (2)))); + reset->set_image (*Gtk::manage(new RTImage ("gtk-undo-ltr.png", "gtk-undo-rtl.png"))); reset->set_tooltip_text (M("EXIFPANEL_RESETHINT")); buttons2->pack_start (*reset); resetAll = Gtk::manage(new Gtk::Button (M("EXIFPANEL_RESETALL"))); - resetAll->set_image (*Gtk::manage(new Gtk::Image (argv0+"/images/gtk-undo-ltr.png"))); + resetAll->set_image (*Gtk::manage(new RTImage ("gtk-undoall-ltr.png", "gtk-undoall-rtl.png"))); resetAll->set_tooltip_text (M("EXIFPANEL_RESETALLHINT")); buttons2->pack_start (*resetAll); diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index 64de4c9e8..96936f038 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -27,6 +27,7 @@ #include #include #include +#include extern Options options; @@ -46,7 +47,7 @@ FileBrowser::FileBrowser () pmenu = new Gtk::Menu (); pmenu->attach (*Gtk::manage(open = new Gtk::MenuItem (M("FILEBROWSER_POPUPOPEN"))), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(develop = new Gtk::ImageMenuItem (M("FILEBROWSER_POPUPPROCESS"))), 0, 1, p, p+1); p++; - develop->set_image(*Gtk::manage(new Gtk::Image (argv0+"/images/processing.png"))); + develop->set_image(*Gtk::manage(new RTImage ("processing.png"))); pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(selall = new Gtk::MenuItem (M("FILEBROWSER_POPUPSELECTALL"))), 0, 1, p, p+1); p++; @@ -94,7 +95,7 @@ FileBrowser::FileBrowser () } } for (int i=1; i<=5; i++){//set color label images - colorlabel[i]->set_image(*Gtk::manage(new Gtk::Image (Glib::ustring::compose("%1%2%3%4",argv0,"/images/clabel",i,".png")))); + colorlabel[i]->set_image(*Gtk::manage(new RTImage (Glib::ustring::compose("%1%2%3","clabel",i,".png")))); } pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; @@ -138,7 +139,7 @@ FileBrowser::FileBrowser () * *********************/ if (options.menuGroupProfileOperations){ pmenu->attach (*Gtk::manage(menuProfileOperations = new Gtk::ImageMenuItem (M("FILEBROWSER_POPUPPROFILEOPERATIONS"))), 0, 1, p, p+1); p++; - menuProfileOperations->set_image(*Gtk::manage(new Gtk::Image (argv0+"/images/logoicon_wind_16.png"))); + menuProfileOperations->set_image(*Gtk::manage(new RTImage ("logoicon_wind_16.png"))); Gtk::Menu* submenuProfileOperations = Gtk::manage (new Gtk::Menu ()); diff --git a/rtgui/filebrowserentry.cc b/rtgui/filebrowserentry.cc index 66c8c0f7b..8ada3bb2d 100644 --- a/rtgui/filebrowserentry.cc +++ b/rtgui/filebrowserentry.cc @@ -48,9 +48,9 @@ FileBrowserEntry::FileBrowserEntry (Thumbnail* thm, const Glib::ustring& fname) scale = 1; if (!iconsLoaded) { - editedIcon = safe_create_from_file (argv0+"/images/edited.png"); - recentlySavedIcon = safe_create_from_file (argv0+"/images/saved.png"); - enqueuedIcon = safe_create_from_file (argv0+"/images/processing.png"); + editedIcon = safe_create_from_file ("edited.png"); + recentlySavedIcon = safe_create_from_file ("saved.png"); + enqueuedIcon = safe_create_from_file ("processing.png"); iconsLoaded = true; } diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 3841771f2..b83ecfe78 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -30,6 +30,7 @@ #include #include #include +#include #define CHECKTIME 2000 @@ -73,8 +74,8 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : hbToolBar1 = Gtk::manage(new Gtk::HBox ()); //setup BrowsePath - iRefreshWhite = new Gtk::Image(argv0+"/images/refresh_white.png"); - iRefreshRed = new Gtk::Image(argv0+"/images/refresh_red.png"); + iRefreshWhite = new RTImage("refresh_white.png"); + iRefreshRed = new RTImage("refresh_red.png"); BrowsePath = Gtk::manage(new Gtk::Entry ()); BrowsePath->set_width_chars (50); @@ -92,7 +93,7 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : BrowsePath->signal_activate().connect (sigc::mem_fun(*this, &FileCatalog::buttonBrowsePathPressed)); //respond to the Enter key //setup Query - iQueryClear = new Gtk::Image(argv0+"/images/x_10.png"); + iQueryClear = new RTImage("x_10.png"); Gtk::Label* labelQuery = Gtk::manage(new Gtk::Label(M("FILEBROWSER_QUERYLABEL"))); Query = Gtk::manage(new Gtk::Entry ()); // cannot use Gtk::manage here as FileCatalog::getFilter will fail on Query->get_text() Query->set_text(""); @@ -121,8 +122,8 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : buttonBar->pack_start (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK); tbLeftPanel_1 = new Gtk::ToggleButton (); - iLeftPanel_1_Show = new Gtk::Image(argv0+"/images/panel_to_right.png"); - iLeftPanel_1_Hide = new Gtk::Image(argv0+"/images/panel_to_left.png"); + iLeftPanel_1_Show = new RTImage("panel_to_right.png"); + iLeftPanel_1_Hide = new RTImage("panel_to_left.png"); tbLeftPanel_1->set_relief(Gtk::RELIEF_NONE); tbLeftPanel_1->set_active (true); @@ -134,11 +135,11 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK); - iFilterClear = new Gtk::Image (argv0+"/images/filterclear_18.png"); - igFilterClear = new Gtk::Image (argv0+"/images/filterclearg_18.png"); + iFilterClear = new RTImage ("filterclear_18.png"); + igFilterClear = new RTImage ("filterclearg_18.png"); bFilterClear = Gtk::manage(new Gtk::ToggleButton ()); bFilterClear->set_active (true); - bFilterClear->set_image(*iFilterClear);//(*Gtk::manage(new Gtk::Image (argv0+"/images/filterclear.png"))); + bFilterClear->set_image(*iFilterClear);//(*Gtk::manage(new RTImage ("filterclear.png"))); bFilterClear->set_relief (Gtk::RELIEF_NONE); bFilterClear->set_tooltip_markup (M("FILEBROWSER_SHOWDIRHINT")); bFilterClear->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event),false); @@ -150,8 +151,8 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : fltrRankbox = Gtk::manage (new Gtk::HBox()); fltrLabelbox = Gtk::manage (new Gtk::HBox()); - iUnRanked = new Gtk::Image (argv0+"/images/ratednot_10.png"); - igUnRanked = new Gtk::Image (argv0+"/images/ratednotg_10.png"); + iUnRanked = new RTImage ("ratednot_10.png"); + igUnRanked = new RTImage ("ratednotg_10.png"); bUnRanked = Gtk::manage( new Gtk::ToggleButton () ); bUnRanked->set_active (false); bUnRanked->set_image (*igUnRanked); @@ -162,8 +163,8 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : bUnRanked->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event),false); for (int i=0; i<5; i++) { - iranked[i] = new Gtk::Image (argv0+"/images/rated.png"); - igranked[i] = new Gtk::Image (argv0+"/images/grayrated.png"); + iranked[i] = new RTImage ("rated.png"); + igranked[i] = new RTImage ("grayrated.png"); iranked[i]->show (); igranked[i]->show (); bRank[i] = Gtk::manage( new Gtk::ToggleButton () ); @@ -174,8 +175,8 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : bRank[i]->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event),false); } - iUnCLabeled = new Gtk::Image (argv0+"/images/clabel0.png"); - igUnCLabeled = new Gtk::Image (argv0+"/images/cglabel0.png"); + iUnCLabeled = new RTImage ("clabel0.png"); + igUnCLabeled = new RTImage ("cglabel0.png"); bUnCLabeled = Gtk::manage(new Gtk::ToggleButton ()); bUnCLabeled->set_active (false); bUnCLabeled->set_image (*igUnCLabeled); @@ -186,8 +187,8 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : bUnCLabeled->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event),false); for (int i=0; i<5; i++) { - iCLabeled[i] = new Gtk::Image (Glib::ustring::compose("%1%2%3%4",argv0,"/images/clabel",i+1,".png")); - igCLabeled[i] = new Gtk::Image (Glib::ustring::compose("%1%2%3%4",argv0,"/images/cglabel",i+1,".png")); + iCLabeled[i] = new RTImage (Glib::ustring::compose("%1%2%3","clabel",i+1,".png")); + igCLabeled[i] = new RTImage (Glib::ustring::compose("%1%2%3","cglabel",i+1,".png")); iCLabeled[i]->show (); igCLabeled[i]->show (); bCLabel[i] = Gtk::manage(new Gtk::ToggleButton ()); @@ -221,10 +222,10 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : fltrRecentlySavedBox = Gtk::manage (new Gtk::HBox()); // bEdited - iEdited[0] = new Gtk::Image (argv0+"/images/editednot_10.png"); - igEdited[0] = new Gtk::Image (argv0+"/images/editednotg_10.png"); - iEdited[1] = new Gtk::Image (argv0+"/images/edited_10.png"); - igEdited[1] = new Gtk::Image (argv0+"/images/editedg_10.png"); + iEdited[0] = new RTImage ("editednot_10.png"); + igEdited[0] = new RTImage ("editednotg_10.png"); + iEdited[1] = new RTImage ("edited_10.png"); + igEdited[1] = new RTImage ("editedg_10.png"); for (int i=0; i<2; i++) { iEdited[i]->show (); bEdited[i] = Gtk::manage(new Gtk::ToggleButton ()); @@ -240,10 +241,10 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : bEdited[1]->set_tooltip_markup (M("FILEBROWSER_SHOWEDITEDHINT")); // RecentlySaved - iRecentlySaved[0] = new Gtk::Image (argv0+"/images/savednot_10.png"); - igRecentlySaved[0] = new Gtk::Image (argv0+"/images/savednotg_10.png"); - iRecentlySaved[1] = new Gtk::Image (argv0+"/images/saved_10.png"); - igRecentlySaved[1] = new Gtk::Image (argv0+"/images/savedg_10.png"); + iRecentlySaved[0] = new RTImage ("savednot_10.png"); + igRecentlySaved[0] = new RTImage ("savednotg_10.png"); + iRecentlySaved[1] = new RTImage ("saved_10.png"); + igRecentlySaved[1] = new RTImage ("savedg_10.png"); for (int i=0; i<2; i++) { iRecentlySaved[i]->show (); bRecentlySaved[i] = Gtk::manage(new Gtk::ToggleButton ()); @@ -265,8 +266,8 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : buttonBar->pack_start (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK); // Trash - iTrashEmpty = new Gtk::Image(argv0+"/images/trash-show-empty.png") ; - iTrashFull = new Gtk::Image(argv0+"/images/trash-show-full.png") ; + iTrashEmpty = new RTImage("trash-show-empty.png") ; + iTrashFull = new RTImage("trash-show-full.png") ; bTrash = Gtk::manage( new Gtk::ToggleButton () ); bTrash->set_image (*iTrashEmpty); @@ -307,7 +308,7 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : categoryButtons[17] = bTrash; exifInfo = Gtk::manage(new Gtk::ToggleButton ()); - exifInfo->set_image (*Gtk::manage(new Gtk::Image (argv0+"/images/info.png"))); + exifInfo->set_image (*Gtk::manage(new RTImage ("info.png"))); exifInfo->set_relief (Gtk::RELIEF_NONE); exifInfo->set_tooltip_markup (M("FILEBROWSER_SHOWEXIFINFO")); exifInfo->set_active( options.showFileNames ); @@ -317,13 +318,13 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : // thumbnail zoom Gtk::HBox* zoomBox = Gtk::manage( new Gtk::HBox () ); zoomInButton = Gtk::manage( new Gtk::Button () ); - zoomInButton->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID("gtk-zoom-in"), Gtk::ICON_SIZE_SMALL_TOOLBAR))); + zoomInButton->set_image (*Gtk::manage(new RTImage ("gtk-zoom-in.png"))); zoomInButton->signal_pressed().connect (sigc::mem_fun(*this, &FileCatalog::zoomIn)); zoomInButton->set_relief (Gtk::RELIEF_NONE); zoomInButton->set_tooltip_markup (M("FILEBROWSER_ZOOMINHINT")); zoomBox->pack_end (*zoomInButton, Gtk::PACK_SHRINK); zoomOutButton = Gtk::manage( new Gtk::Button () ); - zoomOutButton->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID("gtk-zoom-out"), Gtk::ICON_SIZE_SMALL_TOOLBAR))); + zoomOutButton->set_image (*Gtk::manage(new RTImage ("gtk-zoom-out.png"))); zoomOutButton->signal_pressed().connect (sigc::mem_fun(*this, &FileCatalog::zoomOut)); zoomOutButton->set_relief (Gtk::RELIEF_NONE); zoomOutButton->set_tooltip_markup (M("FILEBROWSER_ZOOMOUTHINT")); @@ -332,15 +333,15 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : buttonBar->pack_start (*zoomBox, Gtk::PACK_SHRINK); buttonBar->pack_start (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK); - //iRightArrow = new Gtk::Image(argv0+"/images/right.png"); - //iRightArrow_red = new Gtk::Image(argv0+"/images/right_red.png"); + //iRightArrow = new RTImage("right.png"); + //iRightArrow_red = new RTImage("right_red.png"); // if it IS a single row toolbar if (options.FileBrowserToolbarSingleRow) buttonBar->pack_start (*hbToolBar1, Gtk::PACK_EXPAND_WIDGET,0); tbRightPanel_1 = new Gtk::ToggleButton (); - iRightPanel_1_Show = new Gtk::Image(argv0+"/images/panel_to_left.png"); - iRightPanel_1_Hide = new Gtk::Image(argv0+"/images/panel_to_right.png"); + iRightPanel_1_Show = new RTImage("panel_to_left.png"); + iRightPanel_1_Hide = new RTImage("panel_to_right.png"); tbRightPanel_1->set_relief(Gtk::RELIEF_NONE); tbRightPanel_1->set_active (true); diff --git a/rtgui/filethumbnailbuttonset.cc b/rtgui/filethumbnailbuttonset.cc index 05a0c4a3b..f32e09a19 100644 --- a/rtgui/filethumbnailbuttonset.cc +++ b/rtgui/filethumbnailbuttonset.cc @@ -40,19 +40,19 @@ Cairo::RefPtr FileThumbnailButtonSet::colorLabelIcon_5; FileThumbnailButtonSet::FileThumbnailButtonSet (FileBrowserEntry* myEntry) { if (!iconsLoaded) { - unRankIcon = safe_create_from_png (argv0+"/images/unrated.png"); - rankIcon = safe_create_from_png (argv0+"/images/rated.png"); - gRankIcon = safe_create_from_png (argv0+"/images/grayrated.png"); - trashIcon = safe_create_from_png (argv0+"/images/trash.png"); - unTrashIcon = safe_create_from_png (argv0+"/images/undelete.png"); - processIcon = safe_create_from_png (argv0+"/images/processing.png"); - - colorLabelIcon_0 = safe_create_from_png (argv0+"/images/nocolorlabel.png"); - colorLabelIcon_1 = safe_create_from_png (Glib::ustring::compose("%1%2%3%4",argv0,"/images/clabel",1,".png")); - colorLabelIcon_2 = safe_create_from_png (Glib::ustring::compose("%1%2%3%4",argv0,"/images/clabel",2,".png")); - colorLabelIcon_3 = safe_create_from_png (Glib::ustring::compose("%1%2%3%4",argv0,"/images/clabel",3,".png")); - colorLabelIcon_4 = safe_create_from_png (Glib::ustring::compose("%1%2%3%4",argv0,"/images/clabel",4,".png")); - colorLabelIcon_5 = safe_create_from_png (Glib::ustring::compose("%1%2%3%4",argv0,"/images/clabel",5,".png")); + unRankIcon = safe_create_from_png ("unrated.png"); + rankIcon = safe_create_from_png ("rated.png"); + gRankIcon = safe_create_from_png ("grayrated.png"); + trashIcon = safe_create_from_png ("trash.png"); + unTrashIcon = safe_create_from_png ("undelete.png"); + processIcon = safe_create_from_png ("processing.png"); + + colorLabelIcon_0 = safe_create_from_png ("nocolorlabel.png"); + colorLabelIcon_1 = safe_create_from_png ("clabel1.png"); + colorLabelIcon_2 = safe_create_from_png ("clabel2.png"); + colorLabelIcon_3 = safe_create_from_png ("clabel3.png"); + colorLabelIcon_4 = safe_create_from_png ("clabel4.png"); + colorLabelIcon_5 = safe_create_from_png ("clabel5.png"); iconsLoaded = true; } diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc index 5229eda69..dcbd476a7 100644 --- a/rtgui/guiutils.cc +++ b/rtgui/guiutils.cc @@ -18,6 +18,7 @@ #include #include #include +#include bool removeIfThere (Gtk::Container* cont, Gtk::Widget* w, bool increference) { @@ -375,7 +376,7 @@ void TextOrIcon::switchTo(TOITypes type) { removeIfThere(this, label, false); delete label; label = 0; - imgIcon = new Gtk::Image (filename); + imgIcon = new RTImage (filename); pack_start(*imgIcon, Gtk::PACK_SHRINK, 0); set_tooltip_markup ("" + labelText + "\n" + tooltipText); } diff --git a/rtgui/histogrampanel.cc b/rtgui/histogrampanel.cc index a0e3b99c6..fd60637db 100644 --- a/rtgui/histogrampanel.cc +++ b/rtgui/histogrampanel.cc @@ -22,6 +22,7 @@ #include #include #include +#include extern Glib::ustring argv0; extern Options options; @@ -42,12 +43,12 @@ HistogramPanel::HistogramPanel () { if (options.histogramBar) gfxVBox->pack_start (*histogramRGBArea, Gtk::PACK_SHRINK, 0); - Gtk::Image* redImage = Gtk::manage( new Gtk::Image (Glib::ustring::compose("%1%2",argv0,"/images/histRed.png")) ); - Gtk::Image* greenImage = Gtk::manage( new Gtk::Image (Glib::ustring::compose("%1%2",argv0,"/images/histGreen.png")) ); - Gtk::Image* blueImage = Gtk::manage( new Gtk::Image (Glib::ustring::compose("%1%2",argv0,"/images/histBlue.png")) ); - Gtk::Image* valueImage = Gtk::manage( new Gtk::Image (Glib::ustring::compose("%1%2",argv0,"/images/histValue.png")) ); - Gtk::Image* rawImage = Gtk::manage( new Gtk::Image (Glib::ustring::compose("%1%2",argv0,"/images/histRaw.png")) ); - Gtk::Image* barImage = Gtk::manage( new Gtk::Image (Glib::ustring::compose("%1%2",argv0,"/images/histBar.png")) ); + Gtk::Image* redImage = Gtk::manage( new RTImage ("histRed.png") ); + Gtk::Image* greenImage = Gtk::manage( new RTImage ("histGreen.png") ); + Gtk::Image* blueImage = Gtk::manage( new RTImage ("histBlue.png") ); + Gtk::Image* valueImage = Gtk::manage( new RTImage ("histValue.png") ); + Gtk::Image* rawImage = Gtk::manage( new RTImage ("histRaw.png") ); + Gtk::Image* barImage = Gtk::manage( new RTImage ("histBar.png") ); showRed = Gtk::manage (new Gtk::ToggleButton ()); showGreen = Gtk::manage (new Gtk::ToggleButton ()); diff --git a/rtgui/history.cc b/rtgui/history.cc index e538ea3c8..6baf812dc 100644 --- a/rtgui/history.cc +++ b/rtgui/history.cc @@ -18,6 +18,7 @@ */ #include #include +#include using namespace rtengine; using namespace rtengine::procparams; @@ -77,12 +78,12 @@ History::History (bool bookmarkSupport) : blistener(NULL), tpc (NULL), bmnum (1) Gtk::HBox* ahbox = Gtk::manage (new Gtk::HBox ()); addBookmark = Gtk::manage (new Gtk::Button (M("HISTORY_NEWSNAPSHOT"))); - Gtk::Image* addimg = Gtk::manage (new Gtk::Image (argv0+"/images/list-add.png")); + Gtk::Image* addimg = Gtk::manage (new RTImage ("list-add.png")); addBookmark->set_image (*addimg); ahbox->pack_start (*addBookmark); delBookmark = Gtk::manage (new Gtk::Button (M("HISTORY_DELSNAPSHOT"))); - Gtk::Image* delimg = Gtk::manage (new Gtk::Image (argv0+"/images/list-remove.png")); + Gtk::Image* delimg = Gtk::manage (new RTImage ("list-remove.png")); delBookmark->set_image (*delimg); ahbox->pack_start (*delBookmark); diff --git a/rtgui/indclippedpanel.cc b/rtgui/indclippedpanel.cc index 609dfdb48..b5f700b86 100644 --- a/rtgui/indclippedpanel.cc +++ b/rtgui/indclippedpanel.cc @@ -19,6 +19,7 @@ #include #include #include +#include IndicateClippedPanel::IndicateClippedPanel (ImageArea* ia) : imageArea(ia) { @@ -26,14 +27,14 @@ IndicateClippedPanel::IndicateClippedPanel (ImageArea* ia) : imageArea(ia) { indclippedh = Gtk::manage (new Gtk::ToggleButton ()); indclippedh->set_relief(Gtk::RELIEF_NONE); - indclippedh->add (*Gtk::manage (new Gtk::Image (argv0+"/images/warnhl.png"))); + indclippedh->add (*Gtk::manage (new RTImage ("warnhl.png"))); tt = M("MAIN_TOOLTIP_INDCLIPPEDH"); if (tt.find("<") == Glib::ustring::npos && tt.find(">") == Glib::ustring::npos) indclippedh->set_tooltip_text (tt); else indclippedh->set_tooltip_markup (tt); indclippeds = Gtk::manage (new Gtk::ToggleButton ()); indclippeds->set_relief(Gtk::RELIEF_NONE); - indclippeds->add (*Gtk::manage (new Gtk::Image (argv0+"/images/warnsh.png"))); + indclippeds->add (*Gtk::manage (new RTImage ("warnsh.png"))); tt = M("MAIN_TOOLTIP_INDCLIPPEDS"); if (tt.find("<") == Glib::ustring::npos && tt.find(">") == Glib::ustring::npos) indclippeds->set_tooltip_text (tt); else indclippeds->set_tooltip_markup (tt); diff --git a/rtgui/iptcpanel.cc b/rtgui/iptcpanel.cc index f812ec364..0b698ed1e 100644 --- a/rtgui/iptcpanel.cc +++ b/rtgui/iptcpanel.cc @@ -18,6 +18,7 @@ */ #include #include +#include extern Glib::ustring argv0; @@ -90,8 +91,8 @@ IPTCPanel::IPTCPanel () { keyword->set_tooltip_text (M("IPTCPANEL_KEYWORDSHINT")); addKW = Gtk::manage( new Gtk::Button () ); delKW = Gtk::manage( new Gtk::Button () ); - Gtk::Image* addKWImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-add12.png") ); - Gtk::Image* delKWImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-remove12r.png") ); + Gtk::Image* addKWImg = Gtk::manage( new RTImage ("list-add12.png") ); + Gtk::Image* delKWImg = Gtk::manage( new RTImage ("list-remove12r.png") ); addKW->add (*addKWImg); delKW->add (*delKWImg); Gtk::HBox* kwhb = Gtk::manage( new Gtk::HBox () ); @@ -126,8 +127,8 @@ IPTCPanel::IPTCPanel () { suppCategory->set_tooltip_text (M("IPTCPANEL_SUPPCATEGORIESHINT")); addSC = Gtk::manage( new Gtk::Button () ); delSC = Gtk::manage( new Gtk::Button () ); - Gtk::Image* addSCImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-add12.png") ); - Gtk::Image* delSCImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-remove12r.png") ); + Gtk::Image* addSCImg = Gtk::manage( new RTImage ("list-add12.png") ); + Gtk::Image* delSCImg = Gtk::manage( new RTImage ("list-remove12r.png") ); addSC->add (*addSCImg); delSC->add (*delSCImg); Gtk::HBox* schb = Gtk::manage( new Gtk::HBox () ); diff --git a/rtgui/lensgeom.cc b/rtgui/lensgeom.cc index 49e119e3c..8a6b9acdc 100644 --- a/rtgui/lensgeom.cc +++ b/rtgui/lensgeom.cc @@ -18,6 +18,7 @@ */ #include #include +#include extern Glib::ustring argv0; @@ -30,7 +31,7 @@ LensGeometry::LensGeometry () : Gtk::VBox(), FoldableToolPanel(this), rlistener( pack_start (*fill); autoCrop = Gtk::manage (new Gtk::Button (M("TP_LENSGEOM_AUTOCROP"))); - autoCrop->set_image (*Gtk::manage (new Gtk::Image (argv0+"/images/crop_auto_22.png"))); + autoCrop->set_image (*Gtk::manage (new RTImage ("crop_auto_22.png"))); pack_start (*autoCrop, Gtk::PACK_SHRINK, 2); packBox = Gtk::manage (new Gtk::VBox ()); diff --git a/rtgui/main.cc b/rtgui/main.cc index 7630d97c2..6272eebd8 100644 --- a/rtgui/main.cc +++ b/rtgui/main.cc @@ -32,6 +32,7 @@ #include #include #include +#include #include "version.h" #ifndef WIN32 @@ -137,6 +138,8 @@ int main(int argc, char **argv) } Gtk::Main m(&argc, &argv); + RTImage::setPaths(options); + #ifndef WIN32 // For an unknown reason, gtkmm 2.22 don't know the gtk-button-images property, while it exists in the documentation... // Anyway, the problem was Linux only diff --git a/rtgui/popupcommon.cc b/rtgui/popupcommon.cc index 6ea5a36ca..aad280e06 100644 --- a/rtgui/popupcommon.cc +++ b/rtgui/popupcommon.cc @@ -22,6 +22,7 @@ #include #include #include +#include extern Glib::ustring argv0; @@ -40,7 +41,7 @@ PopUpCommon::PopUpCommon (Gtk::Button* thisButton, const Glib::ustring& label) { buttonGroup = Gtk::manage( new Gtk::HBox(false, 0)); buttonGroup->pack_start(*button, Gtk::PACK_EXPAND_WIDGET, 0); // Create the list entry - imagePaths.clear(); + imageFilenames.clear(); images.clear(); sItems.clear(); items.clear(); @@ -51,7 +52,7 @@ PopUpCommon::PopUpCommon (Gtk::Button* thisButton, const Glib::ustring& label) { } PopUpCommon::~PopUpCommon () { - for (std::vector::iterator i = images.begin(); i != images.end(); ++i) + for (std::vector::iterator i = images.begin(); i != images.end(); ++i) { delete *i; } @@ -68,13 +69,13 @@ PopUpCommon::type_signal_changed PopUpCommon::signal_changed() { return message; } -bool PopUpCommon::addEntry (Glib::ustring imagePath, Glib::ustring label) { +bool PopUpCommon::addEntry (Glib::ustring fileName, Glib::ustring label) { bool added = false; - if ( safe_file_test(imagePath, Glib::FILE_TEST_EXISTS) && label.size() ) { - imagePaths.push_back(imagePath); + if ( label.size() ) { + imageFilenames.push_back(fileName); sItems.push_back(label); // Create the image - Gtk::Image* newImage = new Gtk::Image(imagePath); + RTImage* newImage = new RTImage(fileName); images.push_back(newImage); int currPos = (int)images.size(); // Create the menu item @@ -84,7 +85,7 @@ bool PopUpCommon::addEntry (Glib::ustring imagePath, Glib::ustring label) { // Create the menu on the first item menu = new Gtk::Menu (); // Create the image for the button - buttonImage = new Gtk::Image(imagePath); + buttonImage = new RTImage(fileName); // Use the first image by default imageContainer->pack_start(*buttonImage,Gtk::PACK_EXPAND_WIDGET); selected = 0; @@ -124,7 +125,7 @@ bool PopUpCommon::setSelected (int entryNum) { return false; else { // Maybe we could do something better than loading the image file each time the selection is changed !? - buttonImage->set(imagePaths.at(entryNum)); + buttonImage->changeImage(imageFilenames.at(entryNum)); selected = entryNum; setButtonHint(); return true; diff --git a/rtgui/popupcommon.h b/rtgui/popupcommon.h index ef7f47c13..f6711d5b3 100644 --- a/rtgui/popupcommon.h +++ b/rtgui/popupcommon.h @@ -24,6 +24,7 @@ #include #include +#include class PopUpCommon { @@ -35,7 +36,7 @@ public: PopUpCommon (Gtk::Button* button, const Glib::ustring& label = ""); virtual ~PopUpCommon (); - bool addEntry (Glib::ustring imagePath, Glib::ustring label); + bool addEntry (Glib::ustring fileName, Glib::ustring label); bool setSelected (int entryNum); int getSelected () { return selected; } void setButtonHint(); @@ -50,11 +51,11 @@ private: That's why we store entries strings in sItems, but it would be nice to get ride of it... */ std::vector sItems; - std::vector imagePaths; - std::vector images; + std::vector imageFilenames; + std::vector images; std::vector items; Glib::ustring buttonHint; - Gtk::Image* buttonImage; + RTImage* buttonImage; Gtk::HBox* imageContainer; Gtk::Menu* menu; Gtk::Button* button; diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 8977a6708..235e5421b 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -26,6 +26,7 @@ #include #include #include +#include extern Options options; extern Glib::ustring argv0; @@ -61,7 +62,7 @@ Preferences::Preferences (RTWindow *rtwindow):parent(rtwindow) { Gtk::Button* ok = Gtk::manage (new Gtk::Button (M("GENERAL_OK"))); Gtk::Button* cancel = Gtk::manage (new Gtk::Button (M("GENERAL_CANCEL"))); - about->set_image (*Gtk::manage(new Gtk::Image (argv0+"/images/logoicon16.png"))); + about->set_image (*Gtk::manage(new RTImage ("logoicon16.png"))); ok->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID("gtk-ok"), Gtk::ICON_SIZE_BUTTON))); cancel->set_image (*Gtk::manage(new Gtk::Image (Gtk::StockID("gtk-cancel"), Gtk::ICON_SIZE_BUTTON))); @@ -778,8 +779,8 @@ Gtk::Widget* Preferences::getFileBrowserPanel () { delExt = Gtk::manage( new Gtk::Button () ); addExt->set_tooltip_text (M("PREFERENCES_PARSEDEXTADDHINT")); delExt->set_tooltip_text (M("PREFERENCES_PARSEDEXTDELHINT")); - Gtk::Image* addExtImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-add12.png") ); - Gtk::Image* delExtImg = Gtk::manage( new Gtk::Image (argv0+"/images/list-remove12r.png") ); + Gtk::Image* addExtImg = Gtk::manage( new RTImage ("list-add12.png") ); + Gtk::Image* delExtImg = Gtk::manage( new RTImage ("list-remove12r.png") ); addExt->add (*addExtImg); delExt->add (*delExtImg); hb0->pack_end (*delExt, Gtk::PACK_SHRINK, 4); @@ -1248,8 +1249,11 @@ void Preferences::okPressed () { void Preferences::cancelPressed () { // set the initial theme back - if (theme->get_active_text () != options.theme) + if (theme->get_active_text () != options.theme) { + RTImage::setPaths(options); + RTImage::updateImages(); switchThemeTo(options.theme, options.slimUI); + } // set the initial font back if (fontbutton->get_font_name() != options.font) @@ -1282,6 +1286,10 @@ void Preferences::aboutPressed () { void Preferences::themeChanged () { + moptions.theme = theme->get_active_text (); + moptions.useSystemTheme = chUseSystemTheme->get_active (); + RTImage::setPaths(moptions); + RTImage::updateImages(); switchThemeTo(theme->get_active_text (), slimUI->get_active()); } diff --git a/rtgui/renamedlg.cc b/rtgui/renamedlg.cc index 9f790ac3b..41863cacd 100644 --- a/rtgui/renamedlg.cc +++ b/rtgui/renamedlg.cc @@ -19,6 +19,7 @@ #include #include #include +#include RenameDialog::RenameDialog (Gtk::Window* parent) : Gtk::Dialog (M("FILEBROWSER_RENAMEDLGLABEL"), *parent, true, true), p(parent), imageData(NULL) { @@ -157,8 +158,8 @@ RenameTemplateEditor::RenameTemplateEditor (Gtk::Window* parent) templ = Gtk::manage (new Gtk::Entry ()); Gtk::Button* add = Gtk::manage (new Gtk::Button ()); Gtk::Button* del = Gtk::manage (new Gtk::Button ()); - add->add (*Gtk::manage (new Gtk::Image (argv0+"/images/list-add12.png"))); - del->add (*Gtk::manage (new Gtk::Image (argv0+"/images/list-remove12r.png"))); + add->add (*Gtk::manage (new RTImage ("list-add12.png"))); + del->add (*Gtk::manage (new RTImage ("list-remove12r.png"))); hb->pack_start (*templ); hb->pack_start (*add, Gtk::PACK_SHRINK, 2); hb->pack_start (*del, Gtk::PACK_SHRINK, 2); diff --git a/rtgui/rotate.cc b/rtgui/rotate.cc index cd7c8ef9b..d5f969e57 100644 --- a/rtgui/rotate.cc +++ b/rtgui/rotate.cc @@ -19,6 +19,7 @@ #include #include #include +#include extern Glib::ustring argv0; @@ -34,7 +35,7 @@ Rotate::Rotate () : Gtk::VBox(), FoldableToolPanel(this) { pack_start (*degree); selectStraight = Gtk::manage (new Gtk::Button (M("TP_ROTATE_SELECTLINE"))); - Gtk::Image* selimg = Gtk::manage (new Gtk::Image (argv0+"/images/straighten16.png")); + Gtk::Image* selimg = Gtk::manage (new RTImage ("straighten16.png")); selectStraight->set_image (*selimg); pack_start (*selectStraight, Gtk::PACK_SHRINK, 2); diff --git a/rtgui/rtimage.cc b/rtgui/rtimage.cc new file mode 100644 index 000000000..85ef34aca --- /dev/null +++ b/rtgui/rtimage.cc @@ -0,0 +1,128 @@ +/* + * This file is part of RawTherapee. + * + * Copyright (c) 2004-2010 Gabor Horvath + * Copyright (c) 2011 Jean-Christophe FRISCH + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ + +#include +#include +#include + +extern Glib::ustring argv0; +extern Options options; + +std::vector imagesPaths; +std::vector imagesList; // List of images in order to live update them on theme switch + +/* + * RTImage is a derived class of Gtk::Image, in order to handle theme related iconsets + */ +RTImage::RTImage(Glib::ustring fileName, Glib::ustring rtlFileName) : Gtk::Image() { + Glib::ustring path; + if (rtlFileName.length()) { + const Gtk::TextDirection dir = get_direction(); + if (dir == Gtk::TEXT_DIR_RTL) + path = findIconAbsolutePath(rtlFileName); + else + path = findIconAbsolutePath(fileName); + } + else + path = findIconAbsolutePath(fileName); + + set(path); + imagesList.push_back(this); +} + +RTImage::~RTImage() { + // Remove the image from the global images list + std::vector::iterator i = std::find (imagesList.begin(), imagesList.end(), this); + if (i!=imagesList.end()) + imagesList.erase(i); +} + +void RTImage::updateImages() { + for (unsigned int i=0; iproperty_file(); + Glib::ustring fileName = Glib::path_get_basename(oldPath); + imagesList[i]->clear(); + Glib::ustring fullPath = findIconAbsolutePath(fileName); + imagesList[i]->set(fullPath); + } +} + +// TODO: Maybe this could be optimized: in order to avoid looking up for an icon file in the filesystem on each popupmenu selection, maybe we could find a way to copy the image data from another RTImage +void RTImage::changeImage(Glib::ustring &newImage) { + clear(); + Glib::ustring fullPath = findIconAbsolutePath(newImage); + set(fullPath); +} + +Glib::ustring RTImage::findIconAbsolutePath(const Glib::ustring &iconFName) { + Glib::ustring path; + for (unsigned int i=0; i + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ +#ifndef _RTIMAGE_ +#define _RTIMAGE_ + +#include +#include + +class RTImage : public Gtk::Image { +public: + RTImage(Glib::ustring fileName, Glib::ustring rtlFileName = ""); + ~RTImage(); + static void setPaths(Options &opt); + static void updateImages(); + void changeImage(Glib::ustring &newImage); + static Glib::ustring findIconAbsolutePath(const Glib::ustring &iconFName); +}; + +#endif diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index ef50bdb91..aa17ceeb3 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -20,6 +20,7 @@ #include #include #include +#include RTWindow::RTWindow () :fpanel(NULL) @@ -30,12 +31,15 @@ RTWindow::RTWindow () cacheMgr->init (); + Glib::ustring fName = "logoicon16.png"; + Glib::ustring fullPath = RTImage::findIconAbsolutePath(fName); + #ifdef GLIBMM_EXCEPTIONS_ENABLED - try { set_default_icon_from_file (argv0+"/images/logoicon16.png"); + try { set_default_icon_from_file (fullPath); } catch(Glib::Exception& ex) { printf ("%s\n", ex.what().c_str()); } #else { std::auto_ptr error; - set_default_icon_from_file (argv0+"/images/logoicon16.png", error); + set_default_icon_from_file (fullPath, error); } #endif //GLIBMM_EXCEPTIONS_ENABLED @@ -114,7 +118,7 @@ RTWindow::RTWindow () // decorate tab if (options.mainNBVertical) { Gtk::VBox* vbe = Gtk::manage (new Gtk::VBox ()); - vbe->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/logoicon16.png"))); + vbe->pack_start (*Gtk::manage (new RTImage ("logoicon16.png"))); Gtk::Label* l=Gtk::manage (new Gtk::Label( Glib::ustring(" ") + M("MAIN_FRAME_EDITOR") )); //l->set_markup(Glib::ustring("Editor")); Bold difficult to read l->set_angle (90); @@ -126,8 +130,8 @@ RTWindow::RTWindow () mainNB->append_page (*epanel, *vbe); } else { Gtk::HBox* hbe = Gtk::manage (new Gtk::HBox ()); - hbe->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/logoicon16.png"))); - hbe->pack_start (*Gtk::manage (new Gtk::Label(M("MAIN_FRAME_EDITOR")))); + hbe->pack_start (*Gtk::manage (new RTImage ("logoicon16.png"))); + hbe->pack_start (*Gtk::manage (new Gtk::Label( Glib::ustring(" ") + M("MAIN_FRAME_EDITOR") ))); hbe->set_spacing (2); hbe->set_tooltip_markup (M("MAIN_FRAME_EDITOR_TOOLTIP")); hbe->show_all (); @@ -143,8 +147,8 @@ RTWindow::RTWindow () mainBox->pack_start (*mainNB); // filling bottom box - iFullscreen = new Gtk::Image(argv0+"/images/fullscreen.png"); - iFullscreen_exit = new Gtk::Image(argv0+"/images/fullscreen_exit.png"); + iFullscreen = new RTImage ("fullscreen.png"); + iFullscreen_exit = new RTImage ("fullscreen_exit.png"); Gtk::LinkButton* rtWeb = Gtk::manage (new Gtk::LinkButton ("http://rawtherapee.com")); //Gtk::Button* preferences = Gtk::manage (new Gtk::Button (M("MAIN_BUTTON_PREFERENCES")+"...")); diff --git a/rtgui/splash.cc b/rtgui/splash.cc index f3b8300e3..6d22d16e4 100644 --- a/rtgui/splash.cc +++ b/rtgui/splash.cc @@ -28,7 +28,7 @@ extern Glib::ustring versionString; SplashImage::SplashImage () { - pixbuf = safe_create_from_file (argv0+"/images/splash.png"); + pixbuf = safe_create_from_file ("splash.png"); set_size_request (pixbuf->get_width(), pixbuf->get_height()); } diff --git a/rtgui/toolbar.cc b/rtgui/toolbar.cc index 65b765b9d..60f4ee15f 100644 --- a/rtgui/toolbar.cc +++ b/rtgui/toolbar.cc @@ -18,13 +18,14 @@ */ #include "toolbar.h" #include +#include extern Glib::ustring argv0; ToolBar::ToolBar () : listener (NULL) { handTool = Gtk::manage (new Gtk::ToggleButton ()); - Gtk::Image* handimg = Gtk::manage (new Gtk::Image (argv0+"/images/openhand_gray22.png")); + Gtk::Image* handimg = Gtk::manage (new RTImage ("openhand_gray22.png")); handTool->add (*handimg); handimg->show (); handTool->set_relief(Gtk::RELIEF_NONE); @@ -33,7 +34,7 @@ ToolBar::ToolBar () : listener (NULL) { pack_start (*handTool); wbTool = Gtk::manage (new Gtk::ToggleButton ()); - Gtk::Image* wbimg = Gtk::manage (new Gtk::Image (argv0+"/images/wbpicker22.png")); + Gtk::Image* wbimg = Gtk::manage (new RTImage ("wbpicker22.png")); wbTool->add (*wbimg); wbimg->show (); wbTool->set_relief(Gtk::RELIEF_NONE); @@ -42,7 +43,7 @@ ToolBar::ToolBar () : listener (NULL) { pack_start (*wbTool); cropTool = Gtk::manage (new Gtk::ToggleButton ()); - Gtk::Image* cropimg = Gtk::manage (new Gtk::Image (argv0+"/images/crop22.png")); + Gtk::Image* cropimg = Gtk::manage (new RTImage ("crop22.png")); cropTool->add (*cropimg); cropimg->show (); cropTool->set_relief(Gtk::RELIEF_NONE); @@ -51,7 +52,7 @@ ToolBar::ToolBar () : listener (NULL) { pack_start (*cropTool); straTool = Gtk::manage (new Gtk::ToggleButton ()); - Gtk::Image* straimg = Gtk::manage (new Gtk::Image (argv0+"/images/straighten22.png")); + Gtk::Image* straimg = Gtk::manage (new RTImage ("straighten22.png")); straTool->add (*straimg); straimg->show (); straTool->set_relief(Gtk::RELIEF_NONE); diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index d06aecfbc..17478bcfb 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -27,6 +27,7 @@ #include #include #include +#include using namespace rtengine::procparams; @@ -122,7 +123,7 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) { // load panel endings for (int i=0; i<5; i++) { vbPanelEnd[i] = Gtk::manage (new Gtk::VBox ()); - imgPanelEnd[i] = Gtk::manage (new Gtk::Image (argv0+"/images/PanelEnding_01.png")); + imgPanelEnd[i] = Gtk::manage (new RTImage("PanelEnding_01.png")); imgPanelEnd[i]->show (); vbPanelEnd[i]->pack_start (*imgPanelEnd[i],Gtk::PACK_SHRINK); vbPanelEnd[i]->show_all(); @@ -150,12 +151,12 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) { TOITypes type = options.UseIconNoText ? TOI_ICON : TOI_TEXT; - toiE = Gtk::manage (new TextOrIcon (argv0+"/images/exposure-24.png" , M("MAIN_TAB_EXPOSURE") , M("MAIN_TAB_EXPOSURE_TOOLTIP") , type)); - toiD = Gtk::manage (new TextOrIcon (argv0+"/images/detail-24.png" , M("MAIN_TAB_DETAIL") , M("MAIN_TAB_DETAIL_TOOLTIP") , type)); - toiC = Gtk::manage (new TextOrIcon (argv0+"/images/colour-24.png" , M("MAIN_TAB_COLOR") , M("MAIN_TAB_COLOR_TOOLTIP") , type)); - toiT = Gtk::manage (new TextOrIcon (argv0+"/images/transform-24.png", M("MAIN_TAB_TRANSFORM"), M("MAIN_TAB_TRANSFORM_TOOLTIP"), type)); - toiR = Gtk::manage (new TextOrIcon (argv0+"/images/raw-24.png" , M("MAIN_TAB_RAW") , M("MAIN_TAB_RAW_TOOLTIP") , type)); - toiM = Gtk::manage (new TextOrIcon (argv0+"/images/exif-24.png" , M("MAIN_TAB_METADATA") , M("MAIN_TAB_METADATA_TOOLTIP") , type)); + toiE = Gtk::manage (new TextOrIcon ("exposure-24.png" , M("MAIN_TAB_EXPOSURE") , M("MAIN_TAB_EXPOSURE_TOOLTIP") , type)); + toiD = Gtk::manage (new TextOrIcon ("detail-24.png" , M("MAIN_TAB_DETAIL") , M("MAIN_TAB_DETAIL_TOOLTIP") , type)); + toiC = Gtk::manage (new TextOrIcon ("colour-24.png" , M("MAIN_TAB_COLOR") , M("MAIN_TAB_COLOR_TOOLTIP") , type)); + toiT = Gtk::manage (new TextOrIcon ("transform-24.png", M("MAIN_TAB_TRANSFORM"), M("MAIN_TAB_TRANSFORM_TOOLTIP"), type)); + toiR = Gtk::manage (new TextOrIcon ("raw-24.png" , M("MAIN_TAB_RAW") , M("MAIN_TAB_RAW_TOOLTIP") , type)); + toiM = Gtk::manage (new TextOrIcon ("exif-24.png" , M("MAIN_TAB_METADATA") , M("MAIN_TAB_METADATA_TOOLTIP") , type)); toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index a096610a8..daeb85ad0 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -18,6 +18,7 @@ */ #include #include +#include #include #define MINTEMP 1200 @@ -51,7 +52,7 @@ WhiteBalance::WhiteBalance () : Gtk::VBox(), FoldableToolPanel(this), wbp(NULL), spotbox->show (); spotbutton = Gtk::manage (new Gtk::Button (M("TP_WBALANCE_SPOTWB"))); - Gtk::Image* spotimg = Gtk::manage (new Gtk::Image (argv0+"/images/wbpicker16.png")); + Gtk::Image* spotimg = Gtk::manage (new RTImage ("wbpicker16.png")); spotimg->show (); spotbutton->set_image (*spotimg); spotbutton->show (); diff --git a/rtgui/zoompanel.cc b/rtgui/zoompanel.cc index f9fffb011..d86aae816 100644 --- a/rtgui/zoompanel.cc +++ b/rtgui/zoompanel.cc @@ -19,18 +19,19 @@ #include #include #include +#include ZoomPanel::ZoomPanel (ImageArea* iarea) : iarea(iarea) { set_border_width (0); - Gtk::Image* imageOut = Gtk::manage (new Gtk::Image (Gtk::StockID ("gtk-zoom-out"), Gtk::ICON_SIZE_SMALL_TOOLBAR)); + Gtk::Image* imageOut = Gtk::manage (new RTImage ("gtk-zoom-out.png")); imageOut->set_padding(0,0); - Gtk::Image* imageIn = Gtk::manage (new Gtk::Image (Gtk::StockID ("gtk-zoom-in"), Gtk::ICON_SIZE_SMALL_TOOLBAR)); + Gtk::Image* imageIn = Gtk::manage (new RTImage ("gtk-zoom-in.png")); imageIn->set_padding(0,0); - Gtk::Image* image11 =Gtk::manage ( new Gtk::Image (Gtk::StockID ("gtk-zoom-100"), Gtk::ICON_SIZE_SMALL_TOOLBAR)); + Gtk::Image* image11 =Gtk::manage ( new RTImage ("gtk-zoom-100.png")); image11->set_padding(0,0); - Gtk::Image* imageFit = Gtk::manage (new Gtk::Image (Gtk::StockID ("gtk-zoom-fit"), Gtk::ICON_SIZE_SMALL_TOOLBAR)); + Gtk::Image* imageFit = Gtk::manage (new RTImage ("gtk-zoom-fit.png")); imageFit->set_padding(0,0); zoomOut = Gtk::manage (new Gtk::Button()); @@ -54,7 +55,7 @@ ZoomPanel::ZoomPanel (ImageArea* iarea) : iarea(iarea) { zoomLabel = Gtk::manage (new Gtk::Label ()); pack_start (*zoomLabel, Gtk::PACK_SHRINK, 4); - Gtk::Image* imageCrop = Gtk::manage (new Gtk::Image (Gtk::StockID ("gtk-add"), Gtk::ICON_SIZE_SMALL_TOOLBAR)); + Gtk::Image* imageCrop = Gtk::manage (new RTImage ("add.png")); imageCrop->set_padding(0,0); newCrop = Gtk::manage (new Gtk::Button()); newCrop->add (*imageCrop); diff --git a/tools/CurveType-Dark.svg b/tools/CurveType-Dark.svg new file mode 100644 index 000000000..e976a7ae9 --- /dev/null +++ b/tools/CurveType-Dark.svg @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/tools/CurveType-Light.svg b/tools/CurveType-Light.svg new file mode 100644 index 000000000..268f957f6 --- /dev/null +++ b/tools/CurveType-Light.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/tools/FlatCurveType-Dark.svg b/tools/FlatCurveType-Dark.svg new file mode 100644 index 000000000..2ce09efbe --- /dev/null +++ b/tools/FlatCurveType-Dark.svg @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/tools/FlatCurveType-Light.svg b/tools/FlatCurveType-Light.svg new file mode 100644 index 000000000..2d9275271 --- /dev/null +++ b/tools/FlatCurveType-Light.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + +