From 97a2d3b97944aab8f8f8a1eeab5e420f5579e3e4 Mon Sep 17 00:00:00 2001 From: Oliver Duis Date: Sun, 9 Jan 2011 00:09:38 +0100 Subject: [PATCH] Panel hiding enhancements on behalf of Michael Ezra; See issue #458 --- rtdata/images/beforeafter.png | Bin 752 -> 3304 bytes rtdata/images/folder_bw.png | Bin 0 -> 355 bytes rtdata/images/info.png | Bin 1652 -> 3454 bytes rtdata/images/panel_to_left.png | Bin 0 -> 692 bytes rtdata/images/panel_to_right.png | Bin 0 -> 699 bytes rtdata/images/right.png | Bin 0 -> 612 bytes rtdata/images/right_red.png | Bin 0 -> 609 bytes rtdata/images/stock-flip-horizontal-16.png | Bin 387 -> 400 bytes rtdata/images/stock-flip-vertical-16.png | Bin 407 -> 411 bytes rtdata/images/stock-rotate-270-16.png | Bin 405 -> 471 bytes rtdata/images/stock-rotate-90-16.png | Bin 418 -> 480 bytes rtdata/images/warnhl.png | Bin 600 -> 728 bytes rtdata/images/warnsh.png | Bin 578 -> 627 bytes rtdata/languages/default | 10 +- rtgui/batchqueuepanel.cc | 2 + rtgui/coarsepanel.cc | 4 +- rtgui/editorpanel.cc | 31 +++++-- rtgui/editorpanel.h | 1 + rtgui/filecatalog.cc | 101 ++++++++++++++++++++- rtgui/filecatalog.h | 25 ++++- rtgui/filepanel.cc | 3 +- rtgui/filepanel.h | 5 +- rtgui/rtwindow.cc | 26 ++++++ 23 files changed, 186 insertions(+), 22 deletions(-) create mode 100644 rtdata/images/folder_bw.png create mode 100644 rtdata/images/panel_to_left.png create mode 100644 rtdata/images/panel_to_right.png create mode 100644 rtdata/images/right.png create mode 100644 rtdata/images/right_red.png diff --git a/rtdata/images/beforeafter.png b/rtdata/images/beforeafter.png index 973721ecbaa67b4eb213ed6b47cd6b3605b2d26d..ed434aa3633e01843dab20ff30f90525c8674136 100644 GIT binary patch delta 3300 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 literal 0 HcmV?d00001 diff --git a/rtdata/images/info.png b/rtdata/images/info.png index 22cd5420a9f8c0d951ea553b3a76b217121bb8b6..77573fdaa8f4baabee5c1c55aa0a470760437d00 100644 GIT binary patch delta 3406 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 delta 1574 zcmV+>2HE-k8uSd1I1T^=XF*Lt006O$eEU(8laUH8e+BAEL_t(|+G70w|33pQ06+jS zqVUAy7#JiRfQ&yt%*(*Q$Y{*K#$v?I%WlrY!z%OtKjYueZ(l$B{pHsQhNlNFFudD) ziGlG41H<1p7zP6b5DO~z9}xX#VqoEnl~57Qu`?AjvCtA^(30V15aeNH0Qv6C=f4b> z9(>6>e|6oI;m{$s1Mkjmn#%BImFvtn9Gw8{3e}LKN9(`kY@!>ZE&|C(fT?}08j6ktJ z3|%viKYX{X(2?QK-TNTp00M{^5+L#t{GR=LN|TJFC3u+_-hcbc@Cz8szkwn1{r7){ zUqBb@$Z|2TGBYxK{rQjK&Z}P#p8(}P0@aFgF)}EsN(r2PDrNoq;r`_e3_pJX1Q6I@ ze!ky0yQi3cDuRi@@Sa|R)11}#t zQ0_m&&%Z$Y=Rd=zAAcDHIe_W~WTb9i|M-{T)7kw10mR6_EFmfvv+PE4poS1AT$osZ zLcjoI0b(X5CI&{JD?wiV@a{V(l`!xNe{e8>Qs_URq5uBq9d;;DfHtHPyx`TEFcVYEi)s~U?BbHFC)Xx58oNu!=%8W zmbdr`gOC_EI5PhM<$z`~{P_*UK$ipE#2~MxDD#$GSr;IHSeV$kh5j(HGQ0vNeOe|m)FySzK z2L{E*FaH=`z5m7V{LOcU&)@$8e}j{a9UuS?Wsm|O3|kC_^~*F z(^rUc%-F8>bVMuHCxDn3zCC^P_02~HZhlUn7l7VpV_{%tX8~Kn%f-wf%EJgOE)YQh zlwuI(W@O;z1gha+1FB^O>tSYLV&D_zVfggq`A>##ckTcL5HNP`Uw(G#_(fJ`HU=(k zRt9EZ*s_2O=3r(3+QlHme+BgB&%cN;28O9HHvT~F zW0x8JzrO_#K)^r*rbb|hzh^h~F*cV31{6pkGXozd6EM*Oiw`~qhBv@8eCXm^hP~H6 zF);FSGDwPZ0+S)oLQql!CN*|eMg}fm`Eh37O@=Qg`q~+OJv|B#e?X83|Ml?l_jl~t zZ<$pzjr0W>gav^v2g>lUGk^`(Rpn+-P~u^bSL9=ml;mRg0nF~-fCl~s8ZHDZ0{;E@ z&2Z}2Q-&A2CawDOVoNi~M1TN-rlkLW89raw_vI6>$>T5Lib8^H4C>PC43dJ3417R? zK|vx7OopHW2NWv6f8-5Jj=+cn7AUuFe_*(H?is`LJ@fZ`xiU2uXx1x`i2wnFltll2 z`~UXHmY;7vbHDg3tn>U62kW1oKyUsBMkX)?{QU)Vp9@@W zeERy0;obW;f8Rd5^X%n?14o{nUb*D&kC%Hu-bXeAAb=S0*IZ00%$!nM9Q-m0Y+{PuKR!Ht^!w|R8$bnj(G7$FfB<47vTg*1G%y1)fb#$_+JMCcxE{j|00ImE Y6cHSXeye+K3;+NC07*qoM6N<$g8ppotpET3 diff --git a/rtdata/images/panel_to_left.png b/rtdata/images/panel_to_left.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9455fd4996d670c436d3c07a818a02c1894b77 GIT binary patch literal 692 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 literal 0 HcmV?d00001 diff --git a/rtdata/images/stock-flip-horizontal-16.png b/rtdata/images/stock-flip-horizontal-16.png index 249c125c2237108208a3510719c5ebd3a7be7839..3c5e42edaeb2375c1defa176886aad99d81fb80a 100644 GIT binary patch delta 373 zcmV-*0gC>E1CRrdB!3BTNLh0L01FZT01FZU(%pXi0000WV@Og>004&y004{)00AET z003vA002H%00Brx000h50000AoVJ}+0003NNklb;@5Jle@$tdCm9Koea zcPS`b(9m%a?m&l6;F2S3n~ILc_y(2{rQISWKSkEo5*LX=k$;u`7GE=OcV>1?63?uN zC)ZN|GczQO^1xM+Bmxxp^4_!htx zP*D_4C;^BSczI53QD!Dg%~+;pESZ^Df6$AI z@V18fxgp1=7t%eyD*kRy7$vgb31z9`iyMZYI@K%#Z9ooB&Sti7(6wG$`M=g!&LJ(F m>8pEdURXmGs)aZByS@R!dTRrYCPz&G0000004&y004{)00AET z003vA002H%00Brx000h50000AoVJ}+0003YNklZrE5JlhGTR;a#h!iOj zU2+2F2$Zy3%%$D=2+jqpP#|y-fv^i&4q!1U%%aVPK$4NRn15ye+dsn&BEr-HR=~#2 zC(q4@p8#qUSqE{Z~2h`Ux;p_Ed<18^>if~INM?REf1rPPLrSULGK@L|LNK@iMB zz5t>qI+bO~<#Iu5J?@8L$bP>EIJy8e)NSnd=0l$6T(4K!w(Zk29WN3QWdpPk%blc# zTnt!i-4DM|{duMbe-1s^61RkV3b)&BZCsfWEXUZjNfbp?RYhIb^!=UX`@YJujIu1T z&wgv-aLWsDIvfsoo;U7yT}P560IwqQHrIo9;4zM4x~^Lk8#_Nf`HM#{UhI e16dsB&jA2NE?D|qeHpR<0000SB delta 360 zcmV-u0hj)p1D6AkBo78+OGiWi{{a60|De66laV19e+P6)O+^RO1rin@Ik=>!EdT%k zBuPX;RCt`7lfO$sQ5c4wbCooQ68sB-AUK;%jXAe8wzjr4_8+tb4b6?UIl1Z(n1ci& zSA&Q$FM)AG+=4i#!Orz~&%Ii{)A{ke&-Z=j2c*jb_G9xu%L8@*9fM^4Wp4U`PJlSU zwgj*RfApJvfIkSixTyow(;#s`8F(^gfQ@2lA!H69rEIr)0lh)UT6VUzSuAmR8$q0s z?XfbGyY7(3;U}Z_H+6P=;H7w?3Ix-`5+*=v4L~mIDJy2q?6k0o48UYJ*M<<&WMAJZ zW5sBz8m9s+rKIybqWkiJ`fVY9+@eO0|DmoG$%lX1xDQ3ap^ zG?H2{dH}Xh4)>Uh!=>glMNj$sy0-KwFVf1N$(C(Syz(C}S!2v}9!0SL0000004&y004{)00AET z003vA002H%00Brx000h50000AoVJ}+00049Nkl_Tx9UOd!`VvCkq2Sh`ZVo|c9a0gJ8h>hk2h-BT#HAO0?sCq# z_ndpKs4AN*!=_7BD+kyI?g14M1=dGY6}w7UL@wIx_Fb>nYc(2;`E)v+MN#Acw&!^O zu872@f_&ELbZ-0o{*f_;FbwS|inbwl;2vPAGC1sZyC>uE*iMoJ$8pLq4j@$)9%{AP zVltVSG))$*kp$84_y zDe$eTD(giO5giN$G@DH<%VIbj<`lB@>p-Fzu_$l=gh3Gev6PXofG1$8s*AEFz5(YM zxJbSMo`J8dNaalgEWiUa2!dtne4qvF0w#yAsPIYzxHbfi%gCyl&!F%k1~>&?vTMgn n-#OfW-&sTikYA_ez@GsC9nQ^a4B~8400000NkvXXu0mjfv3|Jy delta 378 zcmV-=0fqk81C;}iB!32COGiWi{{a60|De66lK=n#N=ZaPRCwCWlD$d;K@^3*S=W%b z8^u@zQG5Y^2-sPsQXv*%DPfj7XF1H9l6k45CW zLx0zRZ=eZyLURr{IlE>o*^jCSPA?vRUHa44fO=3&4j2I*3dQoDmV9^xI0g*B1(09i z30UyWGMoiUz*lRl?bHLz0bZe44u0J_kOBtU6zv=WECG|<{907*qoM6N<$f*A0r`~Uy| diff --git a/rtdata/images/stock-rotate-90-16.png b/rtdata/images/stock-rotate-90-16.png index cdac3bcd98ba7366b6ffd89abfca8d5bb4581d60..51e6b68ef41fc3c6a67f10180369c53cba7b1ff5 100644 GIT binary patch delta 454 zcmV;%0XhDn1K004&y004{)00AET z003vA002H%00Brx000h50000AoVJ}+0004INkl zpL;m>+-s89COo!`C4reKC7;b~e-lA=^)VO>0GyeH!0%)-xokF@FJ|^2=`oGKVh_wr zK@cz+jR45yayaJ}u?If*@cx9O9gdiM(#NOTXWbp#_WBEqRG%b`HGyzQ1N_tyTlL z2D-qfB$u{@9&i+alg;6xDd4{W01kA@;CHV|8~^|S07*qoM6N<$g2S`God5s; delta 392 zcmV;30eAl31EK?vB!32COGiWi{{a60|De66lK=n#S4l)cRCwCWlRrqqKp4e;mzEl7 zRZyow!9f&?7U}5dq=S>IpdwBcoI8r(nap=kw6Jpaj<9$Vx=mzLfR(h zU{XVjeC$Ff)e diff --git a/rtdata/images/warnhl.png b/rtdata/images/warnhl.png index 5b907554e26d2562dd6a2180b850cb32bdd773ec..2f062f8f1b323de477b1ad66526e88a3de0bf367 100644 GIT binary patch delta 704 zcmV;x0zduO1lR?TB!3BTNLh0L01FcU01FcV0GgZ_0000WV@Og>004&y004{)00AET z003vA002H%00Brx000h50000AoVJ}+0007BNklC(~39Vp0sTiihTu(BdJ`Q&>z6u@C}QJo_IMA?Ue6L4WL}NDl=my-M3-kNpdz z2dSFP^w8PF5X3d~!NShG@B8qbw>vYUl)_8cBKH6~O8xet_u)Mn`tcOv#j!2&82GM- z*^W{_{+Hu7H@uJU*cMp?J{zHs0noj;=mO6=N_`pIu`S{QwgDq&+vIE;zyP*&ZtPY( z2Ue|Ej6$P9p?}f9ip2m{b?)w9TOoV*0bYRKz1sf zX1-blARdo1H8}~ue6`9{It`H3+S|dl$bDebbsL(P0Dr(VO)Sd-AQXvEXg1xFO^GLr#F>6)9tw#WmZ39!^^5ireuZe?YKwY9bWIAEGA zwOa15scUa^{2G`}<@3yxN<)coIE-nUT;HiPr4p%p9$;G6j)HBGM?g(PSZ=rR8^#cL zXJ?1?^?!A`-EM!*Zx}4M+lUB2O*2Luw}4otTqa#Cjx_%5-X5P$P6z~s_e8o_BvUQ} z#57}Y2-zY}fUia{XuaIs<>A~M&NXMQI}xFKbu}{o>-3cO^*Y_l%X8pqN2zb_dS3um z&vE$BY7L-nKmRRtIF#zo`wfGh;{aHi)dwE|nK_>0Sm$SF4&#L%IM=Mfd2EZMfiTb; m6YK;2bd>t(`Dz*`{tf_c-J#jL))J&)1=s|TB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0005{ zNkls1%*QdZdOo380`*C(a}_sC^bklh(Z5B%?;t&6hR>P z2M9%@bE`|(P&7nV_If|=O!L$;d+>pG@AG*d-o5Yl&O}5&0DnIibI@B$o+kK@eFy%+ z=fn%hQpLi5PJGlMA86ur!Uv9wpn!9&4Ky+H$Akc+(;(nnYvv#mZ^&N9#}O+P1?Rf! zjcyZnGae?~iX@xGMsTjiw~nT7<87g5W)Q1Yyu7-?^L$=%sj2yPzs944vd||dGN^6a zxV*BWQ=gu?#(!l;>-+F_35yVo0;Ez>2#3QkH94s)*O+6CYCTW=cT5m+k{uq>M?5B} zWmy7=P)IqAoYT|Oc#kj#u^7P4PNNtM2EjC&#wc6A5y3Gj$T|7bXAz diff --git a/rtdata/images/warnsh.png b/rtdata/images/warnsh.png index 30053a6bc41c42a3a94db7ff9e912dbbe170e881..a7fcfe1df937c2799ece1e473847b64230fe2df7 100644 GIT binary patch delta 602 zcmV-g0;T=J1oH%tB!3BTNLh0L01FcU01FcV0GgZ_0000WV@Og>004&y004{)00AET z003vA002H%00Brx000h50000AoVJ}+0005`Nkl%e;K)|Q3u`}lq|gg>WUuUpTB zj$Z(Chrn(M41$0#43qmVa2OrutY`WIaUwT?4?t}j_aV<&PSco#zX4KM`65iy3D-qrT?h2Hz!ZG<`#$Nl@neNVgLXD delta 553 zcmV+^0@nTW1i}Q6B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0005x zNklJiHE#M&@Js4#D0LlQwV~GF6E(4K^^=GUV=J!h;AJM zL+B=cfR-Q+f;W$XAchD9i>$S;ncZ=BT~}SV8u-7RotgLJy?@#FR^Xg7CJ4-ftT<8!`}TwjN-3P{G1qAgssz%tb=4bEb^1B!xq3nBuV1w^yCT4 zS-tMk+?hST0L5e&o*apBD+Jr05Nl+^jnQ1!6>ozEuzy*8=yHOp)hchd+gudIi8$73 z#;OOzm^yAHe67s5Osml--;Bpya}}#4r7>8bAN?M@zo?8wPQiHvg+Sv?WAPUVKb`0j z-v`|rIXpH8KyHMnCIgBDVYnqIa{!zs*y0Ee8g7JGCioe&3(3ejW8ci5AzLAq*$VV` rKw;XkA0opOHqCtrl+E MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen MAIN_FRAME_BATCHQUEUE;Batch Queue +MAIN_FRAME_BATCHQUEUE_TOOLTIP; Batch Queue Ctrl-F3 MAIN_FRAME_EDITOR;Editor +MAIN_FRAME_EDITOR_TOOLTIP; Editor Ctrl-F4 MAIN_FRAME_FILEBROWSER;File Browser +MAIN_FRAME_FILEBROWSER_TOOLTIP; File Browser Ctrl-F2 MAIN_FRAME_PLACES;Places MAIN_FRAME_PLACES_ADD;Add MAIN_FRAME_PLACES_DEL;Del @@ -363,6 +368,7 @@ MAIN_TOOLTIP_QINFO;Quick info on the image I MAIN_TOOLTIP_SAVE;Save image to the default folder MAIN_TOOLTIP_SAVEAS;Save image to a selected folder MAIN_TOOLTIP_TOGGLE;Toggle before/after view B +MAIN_TOOLTIP_SHOWHIDELP1;Show/hide the left panel H NAVIGATOR_B_NA;B = n/a NAVIGATOR_B_VALUE;B = %1 NAVIGATOR_G_NA;G = n/a @@ -585,8 +591,8 @@ TP_CHMIXER_LABEL;Channel Mixer TP_CHMIXER_RED;Red TP_COARSETRAF_DEGREE;degree: TP_COARSETRAF_TOOLTIP_HFLIP;Flip horizontally -TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left -TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right +TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left [ +TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right ] TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically TP_COLORBOOST_ACHANNEL;Channel "a" TP_COLORBOOST_AMOUNT;Amount diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index eee5f4d6a..1d6e337d6 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -187,6 +187,7 @@ void BatchQueuePanel::updateTab (int qsize) l->set_angle (90); vbb->pack_start (*l); vbb->set_spacing (2); + vbb->set_tooltip_markup (M("MAIN_FRAME_BATCHQUEUE_TOOLTIP")); vbb->show_all (); nb->set_tab_label(*this,*vbb); } else { @@ -202,6 +203,7 @@ void BatchQueuePanel::updateTab (int qsize) hbb->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]" ))); } hbb->set_spacing (2); + hbb->set_tooltip_markup (M("MAIN_FRAME_BATCHQUEUE_TOOLTIP")); hbb->show_all (); nb->set_tab_label(*this,*hbb); } diff --git a/rtgui/coarsepanel.cc b/rtgui/coarsepanel.cc index d2c6f0644..c5b05b228 100644 --- a/rtgui/coarsepanel.cc +++ b/rtgui/coarsepanel.cc @@ -51,8 +51,8 @@ CoarsePanel::CoarsePanel () : ToolPanel () { vflip->set_relief(Gtk::RELIEF_NONE); pack_start (*vflip); - rotate_left->set_tooltip_text (M("TP_COARSETRAF_TOOLTIP_ROTLEFT")); - rotate_right->set_tooltip_text (M("TP_COARSETRAF_TOOLTIP_ROTRIGHT")); + rotate_left->set_tooltip_markup (M("TP_COARSETRAF_TOOLTIP_ROTLEFT")); + rotate_right->set_tooltip_markup (M("TP_COARSETRAF_TOOLTIP_ROTRIGHT")); vflip->set_tooltip_text (M("TP_COARSETRAF_TOOLTIP_VFLIP")); hflip->set_tooltip_text (M("TP_COARSETRAF_TOOLTIP_HFLIP")); diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 1bc71833f..53f4e93db 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -88,16 +88,19 @@ EditorPanel::EditorPanel (FilePanel* filePanel) : beforePreviewHandler(NULL), be Gtk::VSeparator* vseph = Gtk::manage (new Gtk::VSeparator ()); hidehp = Gtk::manage (new Gtk::ToggleButton ()); - Gtk::Label* hidehpLabel = Gtk::manage (new Gtk::Label ()); - hidehpLabel->set_markup ("H"); - Gtk::Image* hpimg = Gtk::manage (new Gtk::Image (argv0+"/images/left.png")); - Gtk::HBox* hidehpBox = Gtk::manage (new Gtk::HBox ()); - hidehpBox->pack_start (*hpimg, Gtk::PACK_SHRINK, 2); - hidehpBox->pack_start (*hidehpLabel, Gtk::PACK_SHRINK, 2); - hidehp->add (*hidehpBox); + + iHistoryShow = new Gtk::Image(argv0+"/images/panel_to_right.png"); + iHistoryHide = new Gtk::Image(argv0+"/images/panel_to_left.png"); + hidehp->set_relief(Gtk::RELIEF_NONE); hidehp->set_active (options.showHistory); hidehp->set_tooltip_markup (M("MAIN_TOOLTIP_HIDEHP")); + if (options.showHistory){ + hidehp->set_image (*iHistoryHide); + } + else { + hidehp->set_image (*iHistoryShow); + } Gtk::VSeparator* vsepcl = Gtk::manage (new Gtk::VSeparator ()); Gtk::VSeparator* vsepz2 = Gtk::manage (new Gtk::VSeparator ()); @@ -661,6 +664,13 @@ void EditorPanel::hideHistoryActivated () { if (hidehp->get_active()) hpanedl->pack1 (*leftbox, false, true); options.showHistory = hidehp->get_active(); + + if (options.showHistory){ + hidehp->set_image (*iHistoryHide); + } + else { + hidehp->set_image (*iHistoryShow); + } } bool EditorPanel::handleShortcutKey (GdkEventKey* event) { @@ -671,6 +681,13 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) { if (!ctrl) { // Normal switch(event->keyval) { + case GDK_bracketright: + tpc->coarse->rotateRight(); + return true; + case GDK_bracketleft: + tpc->coarse->rotateLeft(); + return true; + case GDK_h: case GDK_H: hidehp->set_active (!hidehp->get_active()); diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h index 29506fbb5..ade69f5ca 100644 --- a/rtgui/editorpanel.h +++ b/rtgui/editorpanel.h @@ -60,6 +60,7 @@ class EditorPanel : public Gtk::VBox, Gtk::HBox* statusBox; Gtk::Image* red; Gtk::Image* green; + Gtk::Image *iHistoryShow, *iHistoryHide; Gtk::VBox* leftbox, *vboxright; Gtk::Button* queueimg; diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 9e4cc790f..d49f648ff 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include +#include #include #include #include @@ -27,6 +28,7 @@ #include #include + #define CHECKTIME 2000 extern Glib::ustring argv0; @@ -44,7 +46,17 @@ int _directoryUpdater (void* cat) { } #endif -FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb) : selectedDirectoryId(1), listener(NULL), fslistener(NULL), hasValidCurrentEFS(false), filterPanel(NULL), coarsePanel(cp), toolBar(tb) { +FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : + selectedDirectoryId(1), + listener(NULL), + fslistener(NULL), + dirlistener(NULL), + hasValidCurrentEFS(false), + filterPanel(NULL), + coarsePanel(cp), + toolBar(tb), + filepanel(filepanel) { + inTabMode=false; // construct and initialize thumbnail browsers @@ -68,10 +80,23 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb) : selectedDirectoryId(1) buttonBar = new Gtk::HBox (); pack_start (*buttonBar, Gtk::PACK_SHRINK); + buttonBar->pack_start (*(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"); + + tbLeftPanel_1->set_relief(Gtk::RELIEF_NONE); + tbLeftPanel_1->set_active (true); + tbLeftPanel_1->set_tooltip_markup (M("MAIN_TOOLTIP_SHOWHIDELP1")); + tbLeftPanel_1->set_image (*iLeftPanel_1_Hide); + tbLeftPanel_1->signal_toggled().connect( sigc::mem_fun(*this, &FileCatalog::tbLeftPanel_1_Activated) ); + buttonBar->pack_start (*tbLeftPanel_1, Gtk::PACK_SHRINK); + buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK); bDir = new Gtk::ToggleButton (); bDir->set_active (true); - bDir->set_image (*(new Gtk::Image (argv0+"/images/folder.png"))); + bDir->set_image (*(new Gtk::Image (argv0+"/images/folder_bw.png"))); bDir->set_relief (Gtk::RELIEF_NONE); bDir->set_tooltip_markup (M("FILEBROWSER_SHOWDIRHINT")); bDir->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event),false); @@ -162,7 +187,26 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb) : selectedDirectoryId(1) buttonBar2->pack_start (*progressBar, Gtk::PACK_SHRINK, 4); progressBar->set_size_request (-1, 16); - buttonBar->pack_start (*zoomBox, Gtk::PACK_SHRINK); + buttonBar->pack_start (*zoomBox, Gtk::PACK_SHRINK); + + // add browserPath + buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK); + + iRightArrow = new Gtk::Image(argv0+"/images/right.png"); + iRightArrow_red = new Gtk::Image(argv0+"/images/right_red.png"); + + BrowsePath = new Gtk::Entry (); + BrowsePath->set_width_chars (50); // !!! add this value to options + BrowsePath->set_tooltip_markup (M("FILEBROWSER_BROWSEPATHHINT")); + Gtk::HBox* hbBrowsePath = new Gtk::HBox (); + buttonBrowsePath = new Gtk::Button (); + buttonBrowsePath->set_image (*iRightArrow); + buttonBrowsePath->set_tooltip_markup (M("FILEBROWSER_BROWSEPATHBUTTONHINT")); + buttonBrowsePath->set_relief (Gtk::RELIEF_NONE); + hbBrowsePath->pack_start (*BrowsePath); + hbBrowsePath->pack_start (*buttonBrowsePath,Gtk::PACK_SHRINK, 4); + buttonBar->pack_start (*hbBrowsePath, Gtk::PACK_EXPAND_WIDGET,4); + buttonBrowsePath->signal_clicked().connect( sigc::mem_fun(*this, &FileCatalog::buttonBrowsePathPressed) ); buttonBar->pack_end (*coarsePanel, Gtk::PACK_SHRINK); buttonBar->pack_end (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK, 4); @@ -262,6 +306,8 @@ void FileCatalog::dirSelected (const Glib::ustring& dirname, const Glib::ustring addAndOpenFile (openfile); selectedDirectory = dir->get_parse_name(); + BrowsePath->set_text (selectedDirectory); + buttonBrowsePath->set_image (*iRightArrow); fileNameList = getFileList (); for (unsigned int i=0; iget_text(); + // validate the path + if (safe_file_test(sel, Glib::FILE_TEST_IS_DIR) && dirlistener){ + dirlistener->selectDir (sel); + } + else + // error, likely path not found: show red arrow + buttonBrowsePath->set_image (*iRightArrow_red); +} + +void FileCatalog::tbLeftPanel_1_visible (bool visible){ + if (visible) + tbLeftPanel_1->show(); + else + tbLeftPanel_1->hide(); +} +void FileCatalog::tbLeftPanel_1_Activated () { + removeIfThere (filepanel->dirpaned, filepanel->placespaned, false); + if (tbLeftPanel_1->get_active()) + filepanel->dirpaned->pack1 (*filepanel->placespaned, false, true); + + tbLeftPanel_1_Active = tbLeftPanel_1->get_active(); + + if (tbLeftPanel_1_Active){ + tbLeftPanel_1->set_image (*iLeftPanel_1_Hide); + } + else { + tbLeftPanel_1->set_image (*iLeftPanel_1_Show); + } + +} bool FileCatalog::handleShortcutKey (GdkEventKey* event) { bool ctrl = event->state & GDK_CONTROL_MASK; @@ -932,14 +1010,31 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) { case GDK_T: categoryButtonToggled(bTrash); return true; + case GDK_Return: + case GDK_KP_Enter: + FileCatalog::buttonBrowsePathPressed (); + return true; } if (!ctrl) { switch(event->keyval) { + + case GDK_bracketright: + coarsePanel->rotateRight(); + return true; + case GDK_bracketleft: + coarsePanel->rotateLeft(); + return true; + + case GDK_h: + case GDK_H: + tbLeftPanel_1->set_active (!tbLeftPanel_1->get_active()); + return true; case GDK_i: case GDK_I: exifInfo->set_active (!exifInfo->get_active()); return true; + case GDK_plus: case GDK_equal: zoomIn(); diff --git a/rtgui/filecatalog.h b/rtgui/filecatalog.h index b9cdb9fc6..1a731c295 100644 --- a/rtgui/filecatalog.h +++ b/rtgui/filecatalog.h @@ -22,6 +22,7 @@ #ifdef _WIN32 #include #endif +#include #include #include #include @@ -34,6 +35,8 @@ #include #include #include +#include + class DirEntry { @@ -46,7 +49,7 @@ class DirEntry { return fullName.casefold() < other.fullName.casefold(); } }; - +class FilePanel; class FileCatalog : public Gtk::VBox, public DirSelectionListener, public PreviewLoaderListener, @@ -57,7 +60,7 @@ class FileCatalog : public Gtk::VBox, #endif { - + FilePanel* filepanel; Gtk::HBox* hBox; Glib::ustring selectedDirectory; int selectedDirectoryId; @@ -67,9 +70,12 @@ class FileCatalog : public Gtk::VBox, FileSelectionListener* listener; FileSelectionChangeListener* fslistener; ImageAreaToolListener* iatlistener; + DirBrowserRemoteInterface* dirlistener; Gtk::HBox* buttonBar; Gtk::HBox* buttonBar2; + Gtk::ToggleButton* tbLeftPanel_1; + bool tbLeftPanel_1_Active; Gtk::ToggleButton* bDir; Gtk::ToggleButton* bUnRanked; Gtk::ToggleButton* bRank[5]; @@ -78,7 +84,10 @@ class FileCatalog : public Gtk::VBox, Gtk::ToggleButton* exifInfo; sigc::connection bCateg[8]; Gtk::Image* iranked[5], *igranked[5]; - Gtk::Image *iTrashEmpty, *iTrashFull; + Gtk::Image *iTrashEmpty, *iTrashFull, *iRightArrow_red, *iRightArrow, *iLeftPanel_1_Show, *iLeftPanel_1_Hide; + Gtk::Entry* BrowsePath; + Gtk::Button* buttonBrowsePath; + sigc::connection BrowsePathconn; double hScrollPos[8]; double vScrollPos[8]; @@ -118,7 +127,7 @@ class FileCatalog : public Gtk::VBox, std::vector getFileList (); BrowserFilter getFilter (); void trashChanged (); - + public: // thumbnail browsers FileBrowser* fileBrowser; @@ -126,7 +135,7 @@ class FileCatalog : public Gtk::VBox, CoarsePanel* coarsePanel; ToolBar* toolBar; - FileCatalog (CoarsePanel* cp, ToolBar* tb); + FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel); void dirSelected (const Glib::ustring& dirname, const Glib::ustring& openfile=""); void closeDir (); void refreshEditedState (const std::set& efiles); @@ -160,6 +169,8 @@ class FileCatalog : public Gtk::VBox, void setFileSelectionListener (FileSelectionListener* l) { listener = l; } void setFileSelectionChangeListener (FileSelectionChangeListener* l) { fslistener = l; } void setImageAreaToolListener (ImageAreaToolListener* l) { iatlistener = l; } + void setDirBrowserRemoteInterface (DirBrowserRemoteInterface* l) { dirlistener = l; } + void setFilterPanel (FilterPanel* fpanel); void exifInfoButtonToggled(); void categoryButtonToggled (Gtk::ToggleButton* b); @@ -175,6 +186,10 @@ class FileCatalog : public Gtk::VBox, void zoomIn (); void zoomOut (); + void buttonBrowsePathPressed (); + void tbLeftPanel_1_Activated (); + void tbLeftPanel_1_visible (bool visible); + void openNextImage () { fileBrowser->openNextImage(); } void openPrevImage () { fileBrowser->openPrevImage(); } diff --git a/rtgui/filepanel.cc b/rtgui/filepanel.cc index f62c6f0e7..9140b60cb 100644 --- a/rtgui/filepanel.cc +++ b/rtgui/filepanel.cc @@ -54,7 +54,7 @@ FilePanel::FilePanel () : parent(NULL) { dirpaned->pack1 (*placespaned, false, true); tpc = new BatchToolPanelCoordinator (this); - fileCatalog = new FileCatalog (tpc->coarse, tpc->getToolBar()); + fileCatalog = new FileCatalog (tpc->coarse, tpc->getToolBar(), this); ribbonPane = new Gtk::Paned(); ribbonPane->add(*fileCatalog); ribbonPane->set_size_request(50,150); @@ -66,6 +66,7 @@ FilePanel::FilePanel () : parent(NULL) { dirBrowser->addDirSelectionListener (recentBrowser); dirBrowser->addDirSelectionListener (placesBrowser); fileCatalog->setFileSelectionListener (this); + fileCatalog->setDirBrowserRemoteInterface (dirBrowser); rightBox = new Gtk::HBox (); rightBox->set_size_request(50,100); diff --git a/rtgui/filepanel.h b/rtgui/filepanel.h index 383e4a14d..a3412adb9 100644 --- a/rtgui/filepanel.h +++ b/rtgui/filepanel.h @@ -38,8 +38,6 @@ class FilePanel : public Gtk::HPaned, { protected: - Gtk::Paned* placespaned; - Gtk::HPaned* dirpaned; //DirBrowser* dirBrowser; PlacesBrowser* placesBrowser; RecentBrowser* recentBrowser; @@ -57,6 +55,9 @@ class FilePanel : public Gtk::HPaned, public: FilePanel (); + Gtk::Paned* placespaned; + Gtk::HPaned* dirpaned; + DirBrowser* dirBrowser; FilterPanel* filterPanel; FileCatalog* fileCatalog; diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 2a3fef054..62c3c3344 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -84,6 +84,7 @@ RTWindow::RTWindow () l->set_angle (90); vbf->pack_start (*l); vbf->set_spacing (2); + vbf->set_tooltip_markup (M("MAIN_FRAME_FILEBROWSER_TOOLTIP")); vbf->show_all (); mainNB->append_page (*fpanel, *vbf); } else { @@ -91,6 +92,7 @@ RTWindow::RTWindow () hbf->pack_start (*Gtk::manage (new Gtk::Image (Gtk::Stock::DIRECTORY, Gtk::ICON_SIZE_MENU))); hbf->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_FILEBROWSER")))); hbf->set_spacing (2); + hbf->set_tooltip_markup (M("MAIN_FRAME_FILEBROWSER_TOOLTIP")); hbf->show_all (); mainNB->append_page (*fpanel, *hbf); } @@ -115,6 +117,7 @@ RTWindow::RTWindow () l->set_angle (90); vbe->pack_start (*l); vbe->set_spacing (2); + vbe->set_tooltip_markup (M("MAIN_FRAME_EDITOR_TOOLTIP")); vbe->show_all (); mainNB->append_page (*epanel, *vbe); } else { @@ -122,6 +125,7 @@ RTWindow::RTWindow () 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->set_spacing (2); + hbe->set_tooltip_markup (M("MAIN_FRAME_EDITOR_TOOLTIP")); hbe->show_all (); mainNB->append_page (*epanel, *hbe); } @@ -257,6 +261,26 @@ void RTWindow::remEditorPanel (EditorPanel* ep) { } bool RTWindow::keyPressed (GdkEventKey* event) { + + bool ctrl = event->state & GDK_CONTROL_MASK; + bool shift = event->state & GDK_SHIFT_MASK; + + if (ctrl) { + switch(event->keyval) { + case GDK_F2: // file browser panel + mainNB->set_current_page (mainNB->page_num (*fpanel)); + return true; + case GDK_F3: // batch queue panel + mainNB->set_current_page (mainNB->page_num (*bpanel)); + return true; + case GDK_F4: //single tab mode, editor panel + if (isSingleTabMode() && epanel) { + mainNB->set_current_page (mainNB->page_num (*epanel)); + } + return true; + } + } + if(event->keyval == GDK_F11) { toggle_fullscreen(); } @@ -377,6 +401,7 @@ void RTWindow::MoveFileBrowserToMain() epanel->catalogPane->remove(*fCatalog); fpanel->ribbonPane->add(*fCatalog); fCatalog->enableTabMode(false); + fCatalog->tbLeftPanel_1_visible(true); } } @@ -389,6 +414,7 @@ void RTWindow::MoveFileBrowserToEditor() epanel->catalogPane->add(*fCatalog); fCatalog->enableTabMode(true); fCatalog->refreshHeight(); + fCatalog->tbLeftPanel_1_visible(false); } }