From 4dd7a470406cb219642e15a4a1bac9a4f28464f4 Mon Sep 17 00:00:00 2001 From: michael Date: Thu, 23 Jun 2011 22:33:17 -0400 Subject: [PATCH] File Browser context menu improvements (issue 781) --- rtdata/images/logoicon_wind_16.png | Bin 0 -> 3374 bytes rtdata/languages/default | 26 +++-- rtgui/filebrowser.cc | 165 ++++++++++++++++++++++------- rtgui/filebrowser.h | 6 +- rtgui/options.cc | 12 +++ rtgui/options.h | 5 + rtgui/preferences.cc | 33 +++++- rtgui/preferences.h | 5 + 8 files changed, 198 insertions(+), 54 deletions(-) create mode 100644 rtdata/images/logoicon_wind_16.png diff --git a/rtdata/images/logoicon_wind_16.png b/rtdata/images/logoicon_wind_16.png new file mode 100644 index 0000000000000000000000000000000000000000..811e2cbebadbd33fc5baf2375a420f8e56cb1fcd GIT binary patch literal 3374 zcmV+}4bk$6P)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0$WK$K~#9!q?1cX)L|6Ge|P@#pYcD=q!XE@MndHyL-AEci^#HEIABsCVMVk^P+IiZ zMJ-xH;3kBkpr|NlDH#$&??5Dxqztl>ipekxtQ=?5dE6Gw*dVp?z}Mvms?XY+t={+da^p|R4fmSzkw|`>9;4l z!{P9WKp>DkG90US1&fKkgm=#dXdgUqBhJhjVp#tBR7@|E+oyagIc2c5jOt{6K2Qi; z5VI;S)={-wz3Q^HL;x3%1}p`N3Jc`pCtrl+Q -MAIN_BUTTON_QUEUE;Put to queue +MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue Ctrl+Q +MAIN_BUTTON_QUEUE;Put to Queue MAIN_BUTTON_SAVE_TOOLTIP;Save current image Ctrl+S MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor Ctrl+E MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels m MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen -MAIN_FRAME_BATCHQUEUE;Batch Queue -MAIN_FRAME_BATCHQUEUE_TOOLTIP; Batch Queue Ctrl-F3 +MAIN_FRAME_BATCHQUEUE;Queue +MAIN_FRAME_BATCHQUEUE_TOOLTIP; Processing Queue Ctrl-F3 MAIN_FRAME_EDITOR;Editor MAIN_FRAME_EDITOR_TOOLTIP; Editor Ctrl-F4 MAIN_FRAME_FILEBROWSER;File Browser @@ -593,6 +596,11 @@ PREFERENCES_INTENT_RELATIVE;Relative Colorimetric PREFERENCES_INTENT_SATURATION;Saturation PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show RAW internal thumbnail if unedited PREFERENCES_LIVETHUMBNAILS;Live Thumbnails (slower) +PREFERENCES_MENUOPTIONS;Menu Options +PREFERENCES_MENUGROUPRANK;Group Ranking +PREFERENCES_MENUGROUPLABEL;Group Labeling +PREFERENCES_MENUGROUPFILEOPERATIONS;Group File Operations +PREFERENCES_MENUGROUPPROFILEOPERATIONS;Group Profile Operations PREFERENCES_METADATA;Metadata PREFERENCES_MONITORICC;Monitor Profile PREFERENCES_MULTITAB;Multiple tabs mode @@ -631,7 +639,7 @@ PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows PREFERENCES_SINGLETAB;Single tab mode PREFERENCES_SINGLETABVERTAB;Single tab mode, vertical tabs PREFERENCES_SLIMUI;Slim interface -PREFERENCES_SND_BATCHQUEUEDONE;Batch queue done +PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done PREFERENCES_SND_HELP;Either enter filepath or nothing (for no sound). On Windows use "SystemDefault", "SystemAsterisk" etc. for system sounds. PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done PREFERENCES_SND_TRESHOLDSECS;after secs diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index 93bc2f702..61191217d 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -45,52 +45,135 @@ FileBrowser::FileBrowser () int p = 0; 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::MenuItem (M("FILEBROWSER_POPUPPROCESS"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(rank[0] = new Gtk::MenuItem (M("FILEBROWSER_POPUPUNRANK"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(rank[1] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK1"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(rank[2] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK2"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(rank[3] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK3"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(rank[4] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK4"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(rank[5] = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK5"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - - pmenu->attach (*Gtk::manage(colorlabel[0] = new Gtk::ImageMenuItem (M("FILEBROWSER_POPUPCOLORLABEL0"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(colorlabel[1] = new Gtk::ImageMenuItem (M("FILEBROWSER_POPUPCOLORLABEL1"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(colorlabel[2] = new Gtk::ImageMenuItem (M("FILEBROWSER_POPUPCOLORLABEL2"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(colorlabel[3] = new Gtk::ImageMenuItem (M("FILEBROWSER_POPUPCOLORLABEL3"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(colorlabel[4] = new Gtk::ImageMenuItem (M("FILEBROWSER_POPUPCOLORLABEL4"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(colorlabel[5] = new Gtk::ImageMenuItem (M("FILEBROWSER_POPUPCOLORLABEL5"))), 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"))); + 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++; + + /*********************** + * rank + ***********************/ + if (options.menuGroupRank){ + pmenu->attach (*Gtk::manage(menuRank = new Gtk::MenuItem (M("FILEBROWSER_POPUPRANK"))), 0, 1, p, p+1); p++; + Gtk::Menu* submenuRank = Gtk::manage (new Gtk::Menu ()); + submenuRank->attach (*Gtk::manage(rank[0] = new Gtk::MenuItem (M("FILEBROWSER_POPUPUNRANK"))), 0, 1, p, p+1); p++; + for (int i=1; i<=5; i++){ + submenuRank->attach (*Gtk::manage(rank[i] = new Gtk::MenuItem (M(Glib::ustring::compose("%1%2","FILEBROWSER_POPUPRANK",i)))), 0, 1, p, p+1); p++; + } + submenuRank->show_all (); + menuRank->set_submenu (*submenuRank); + } + else{ + pmenu->attach (*Gtk::manage(rank[0] = new Gtk::MenuItem (M("FILEBROWSER_POPUPUNRANK"))), 0, 1, p, p+1); p++; + for (int i=1; i<=5; i++){ + pmenu->attach (*Gtk::manage(rank[i] = new Gtk::MenuItem (M(Glib::ustring::compose("%1%2","FILEBROWSER_POPUPRANK",i)))), 0, 1, p, p+1); p++; + } + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + } + + if (!options.menuGroupRank || !options.menuGroupLabel) // separate Rank and Color Labels if either is not grouped + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + + /*********************** + * color labels + ***********************/ + if (options.menuGroupLabel){ + pmenu->attach (*Gtk::manage(menuLabel = new Gtk::MenuItem (M("FILEBROWSER_POPUPCOLORLABEL"))), 0, 1, p, p+1); p++; + Gtk::Menu* submenuLabel = Gtk::manage (new Gtk::Menu ()); + + for (int i=0; i<=5; i++){ + submenuLabel->attach (*Gtk::manage(colorlabel[i] = new Gtk::ImageMenuItem (M(Glib::ustring::compose("%1%2","FILEBROWSER_POPUPCOLORLABEL",i)))), 0, 1, p, p+1); p++; + } + submenuLabel->show_all (); + menuLabel->set_submenu (*submenuLabel); + } + else{ + for (int i=0; i<=5; i++){ + pmenu->attach (*Gtk::manage(colorlabel[i] = new Gtk::ImageMenuItem (M(Glib::ustring::compose("%1%2","FILEBROWSER_POPUPCOLORLABEL",i)))), 0, 1, p, p+1); p++; + } + } 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")))); } pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(trash = new Gtk::MenuItem (M("FILEBROWSER_POPUPTRASH"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(untrash = new Gtk::MenuItem (M("FILEBROWSER_POPUPUNTRASH"))), 0, 1, p, p+1); p++; + + /*********************** + * File Operations + * *********************/ + if (options.menuGroupFileOperations){ + pmenu->attach (*Gtk::manage(menuFileOperations = new Gtk::MenuItem (M("FILEBROWSER_POPUPFILEOPERATIONS"))), 0, 1, p, p+1); p++; + Gtk::Menu* submenuFileOperations = Gtk::manage (new Gtk::Menu ()); + + submenuFileOperations->attach (*Gtk::manage(trash = new Gtk::MenuItem (M("FILEBROWSER_POPUPTRASH"))), 0, 1, p, p+1); p++; + submenuFileOperations->attach (*Gtk::manage(untrash = new Gtk::MenuItem (M("FILEBROWSER_POPUPUNTRASH"))), 0, 1, p, p+1); p++; + submenuFileOperations->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + submenuFileOperations->attach (*Gtk::manage(rename = new Gtk::MenuItem (M("FILEBROWSER_POPUPRENAME"))), 0, 1, p, p+1); p++; + submenuFileOperations->attach (*Gtk::manage(remove = new Gtk::MenuItem (M("FILEBROWSER_POPUPREMOVE"))), 0, 1, p, p+1); p++; + submenuFileOperations->attach (*Gtk::manage(removeInclProc = new Gtk::MenuItem (M("FILEBROWSER_POPUPREMOVEINCLPROC"))), 0, 1, p, p+1); p++; + submenuFileOperations->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + submenuFileOperations->attach (*Gtk::manage(copyTo = new Gtk::MenuItem (M("FILEBROWSER_POPUPCOPYTO"))), 0, 1, p, p+1); p++; + submenuFileOperations->attach (*Gtk::manage(moveTo = new Gtk::MenuItem (M("FILEBROWSER_POPUPMOVETO"))), 0, 1, p, p+1); p++; + + submenuFileOperations->show_all (); + menuFileOperations->set_submenu (*submenuFileOperations); + } + else{ + pmenu->attach (*Gtk::manage(trash = new Gtk::MenuItem (M("FILEBROWSER_POPUPTRASH"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(untrash = new Gtk::MenuItem (M("FILEBROWSER_POPUPUNTRASH"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(rename = new Gtk::MenuItem (M("FILEBROWSER_POPUPRENAME"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(remove = new Gtk::MenuItem (M("FILEBROWSER_POPUPREMOVE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(removeInclProc = new Gtk::MenuItem (M("FILEBROWSER_POPUPREMOVEINCLPROC"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(copyTo = new Gtk::MenuItem (M("FILEBROWSER_POPUPCOPYTO"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(moveTo = new Gtk::MenuItem (M("FILEBROWSER_POPUPMOVETO"))), 0, 1, p, p+1); p++; + } + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(rename = new Gtk::MenuItem (M("FILEBROWSER_POPUPRENAME"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(remove = new Gtk::MenuItem (M("FILEBROWSER_POPUPREMOVE"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(removeInclProc = new Gtk::MenuItem (M("FILEBROWSER_POPUPREMOVEINCLPROC"))), 0, 1, p, p+1); p++; - 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++; - pmenu->attach (*Gtk::manage(copyTo = new Gtk::MenuItem (M("FILEBROWSER_POPUPCOPYTO"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(moveTo = new Gtk::MenuItem (M("FILEBROWSER_POPUPMOVETO"))), 0, 1, p, p+1); p++; + + /*********************** + * Profile Operations + * *********************/ + 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"))); + + Gtk::Menu* submenuProfileOperations = Gtk::manage (new Gtk::Menu ()); + + submenuProfileOperations->attach (*Gtk::manage(copyprof = new Gtk::MenuItem (M("FILEBROWSER_COPYPROFILE"))), 0, 1, p, p+1); p++; + submenuProfileOperations->attach (*Gtk::manage(pasteprof = new Gtk::MenuItem (M("FILEBROWSER_PASTEPROFILE"))), 0, 1, p, p+1); p++; + submenuProfileOperations->attach (*Gtk::manage(partpasteprof = new Gtk::MenuItem (M("FILEBROWSER_PARTIALPASTEPROFILE"))), 0, 1, p, p+1); p++; + submenuProfileOperations->attach (*Gtk::manage(applyprof = new Gtk::MenuItem (M("FILEBROWSER_APPLYPROFILE"))), 0, 1, p, p+1); p++; + submenuProfileOperations->attach (*Gtk::manage(applypartprof = new Gtk::MenuItem (M("FILEBROWSER_APPLYPROFILE_PARTIAL"))), 0, 1, p, p+1); p++; + submenuProfileOperations->attach (*Gtk::manage(clearprof = new Gtk::MenuItem (M("FILEBROWSER_CLEARPROFILE"))), 0, 1, p, p+1); p++; + + submenuProfileOperations->show_all (); + menuProfileOperations->set_submenu (*submenuProfileOperations); + } + else{ + pmenu->attach (*Gtk::manage(copyprof = new Gtk::MenuItem (M("FILEBROWSER_COPYPROFILE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(pasteprof = new Gtk::MenuItem (M("FILEBROWSER_PASTEPROFILE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(partpasteprof = new Gtk::MenuItem (M("FILEBROWSER_PARTIALPASTEPROFILE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(applyprof = new Gtk::MenuItem (M("FILEBROWSER_APPLYPROFILE"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(applypartprof = new Gtk::MenuItem (M("FILEBROWSER_APPLYPROFILE_PARTIAL"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(clearprof = new Gtk::MenuItem (M("FILEBROWSER_CLEARPROFILE"))), 0, 1, p, p+1); p++; + } + + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(menuDF = new Gtk::MenuItem (M("FILEBROWSER_DARKFRAME"))), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(menuFF = new Gtk::MenuItem (M("FILEBROWSER_FLATFIELD"))), 0, 1, p, p+1); p++; + pmenu->attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(copyprof = new Gtk::MenuItem (M("FILEBROWSER_COPYPROFILE"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(pasteprof = new Gtk::MenuItem (M("FILEBROWSER_PASTEPROFILE"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(partpasteprof = new Gtk::MenuItem (M("FILEBROWSER_PARTIALPASTEPROFILE"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(applyprof = new Gtk::MenuItem (M("FILEBROWSER_APPLYPROFILE"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(applypartprof = new Gtk::MenuItem (M("FILEBROWSER_APPLYPROFILE_PARTIAL"))), 0, 1, p, p+1); p++; - pmenu->attach (*Gtk::manage(clearprof = new Gtk::MenuItem (M("FILEBROWSER_CLEARPROFILE"))), 0, 1, p, p+1); p++; pmenu->attach (*Gtk::manage(cachemenu = new Gtk::MenuItem (M("FILEBROWSER_CACHE"))), 0, 1, p, p+1); p++; pmenu->show_all (); + /*********************** + * Accelerators + * *********************/ pmaccelgroup = Gtk::AccelGroup::create (); pmenu->set_accel_group (pmaccelgroup); selall->add_accelerator ("activate", pmenu->get_accel_group(), GDK_a, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE); @@ -163,18 +246,19 @@ void FileBrowser::rightClicked (ThumbBrowserEntryBase* entry) { applyprof->set_submenu (*applmenu); // submenu applpartmenu - p = 0; - Gtk::Menu* applpartmenu = Gtk::manage (new Gtk::Menu ()); - //std::vector profnames = profileStore.getProfileNames (); // this is already created for submenu applmenu above - for (int i=0; iattach (*mi, 0, 1, p, p+1); p++; - mi->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::applyPartialMenuItemActivated), profnames[i])); - mi->show (); - } + p = 0; + Gtk::Menu* applpartmenu = Gtk::manage (new Gtk::Menu ()); + //std::vector profnames = profileStore.getProfileNames (); // this is already created for submenu applmenu above + for (int i=0; iattach (*mi, 0, 1, p, p+1); p++; + mi->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::applyPartialMenuItemActivated), profnames[i])); + mi->show (); + } applypartprof->set_submenu (*applpartmenu); // submenuDF + p = 0; Gtk::Menu* submenuDF = Gtk::manage (new Gtk::Menu ()); submenuDF->attach (*Gtk::manage(selectDF = new Gtk::MenuItem (M("FILEBROWSER_SELECTDARKFRAME"))), 0, 1, p, p+1); p++; submenuDF->attach (*Gtk::manage(autoDF = new Gtk::MenuItem (M("FILEBROWSER_AUTODARKFRAME"))), 0, 1, p, p+1); p++; @@ -186,6 +270,7 @@ void FileBrowser::rightClicked (ThumbBrowserEntryBase* entry) { menuDF->set_submenu (*submenuDF); // submenuFF + p = 0; Gtk::Menu* submenuFF = Gtk::manage (new Gtk::Menu ()); submenuFF->attach (*Gtk::manage(selectFF = new Gtk::MenuItem (M("FILEBROWSER_SELECTFLATFIELD"))), 0, 1, p, p+1); p++; submenuFF->attach (*Gtk::manage(autoFF = new Gtk::MenuItem (M("FILEBROWSER_AUTOFLATFIELD"))), 0, 1, p, p+1); p++; diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h index da45ed682..5ced80149 100644 --- a/rtgui/filebrowser.h +++ b/rtgui/filebrowser.h @@ -56,7 +56,7 @@ class FileBrowser : public ThumbBrowserBase, public LWButtonListener { Gtk::ImageMenuItem* colorlabel[6]; Gtk::MenuItem* trash; Gtk::MenuItem* untrash; - Gtk::MenuItem* develop; + Gtk::ImageMenuItem* develop; Gtk::MenuItem* rename; Gtk::MenuItem* remove; Gtk::MenuItem* removeInclProc; @@ -65,6 +65,10 @@ class FileBrowser : public ThumbBrowserBase, public LWButtonListener { Gtk::MenuItem* copyTo; Gtk::MenuItem* moveTo; + Gtk::MenuItem* menuRank; + Gtk::MenuItem* menuLabel; + Gtk::MenuItem* menuFileOperations; + Gtk::ImageMenuItem* menuProfileOperations; Gtk::MenuItem* menuDF; Gtk::MenuItem* selectDF; Gtk::MenuItem* thisIsDF; diff --git a/rtgui/options.cc b/rtgui/options.cc index d399c7076..e2da4f587 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -139,6 +139,10 @@ void Options::setDefaults () { histogramPosition = 2; showProfileSelector = true; FileBrowserToolbarSingleRow = true; + menuGroupRank = true; + menuGroupLabel = true; + menuGroupFileOperations = true; + menuGroupProfileOperations = true; cutOverlayBrush = std::vector (4); cutOverlayBrush[3] = 0.667; // :-p @@ -317,6 +321,10 @@ if (keyFile.has_group ("File Browser")) { if (keyFile.has_key ("File Browser", "OverlayedFileNames")) overlayedFileNames = keyFile.get_boolean ("File Browser", "OverlayedFileNames"); if (keyFile.has_key ("File Browser", "ShowFileNames")) showFileNames = keyFile.get_boolean ("File Browser", "ShowFileNames"); if (keyFile.has_key ("File Browser", "InternalThumbIfUntouched")) internalThumbIfUntouched = keyFile.get_boolean ("File Browser", "InternalThumbIfUntouched"); + if (keyFile.has_key ("File Browser", "menuGroupRank")) menuGroupRank = keyFile.get_boolean ("File Browser", "menuGroupRank"); + if (keyFile.has_key ("File Browser", "menuGroupLabel")) menuGroupLabel = keyFile.get_boolean ("File Browser", "menuGroupLabel"); + if (keyFile.has_key ("File Browser", "menuGroupFileOperations")) menuGroupFileOperations = keyFile.get_boolean ("File Browser", "menuGroupFileOperations"); + if (keyFile.has_key ("File Browser", "menuGroupProfileOperations")) menuGroupProfileOperations = keyFile.get_boolean ("File Browser", "menuGroupProfileOperations"); } if (keyFile.has_group ("Clipping Indication")) { @@ -450,6 +458,10 @@ int Options::saveToFile (Glib::ustring fname) { keyFile.set_boolean ("File Browser", "OverlayedFileNames", overlayedFileNames); keyFile.set_boolean ("File Browser", "ShowFileNames", showFileNames ); keyFile.set_boolean ("File Browser", "InternalThumbIfUntouched", internalThumbIfUntouched ); + keyFile.set_boolean ("File Browser", "menuGroupRank", menuGroupRank); + keyFile.set_boolean ("File Browser", "menuGroupLabel", menuGroupLabel); + keyFile.set_boolean ("File Browser", "menuGroupFileOperations", menuGroupFileOperations); + keyFile.set_boolean ("File Browser", "menuGroupProfileOperations", menuGroupProfileOperations); keyFile.set_integer ("Clipping Indication", "HighlightThreshold", highlightThreshold); keyFile.set_integer ("Clipping Indication", "ShadowThreshold", shadowThreshold); diff --git a/rtgui/options.h b/rtgui/options.h index bf8767a6a..ca148e761 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -148,6 +148,11 @@ class Options { bool showProfileSelector; bool FileBrowserToolbarSingleRow; + bool menuGroupRank; + bool menuGroupLabel; + bool menuGroupFileOperations; + bool menuGroupProfileOperations; + Options (); Options* copyFrom (Options* other); diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index a1a44fc5a..496775e4f 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -708,6 +708,23 @@ Gtk::Widget* Preferences::getFileBrowserPanel () { fro->add (*vbro); + + Gtk::Frame* frmnu = Gtk::manage( new Gtk::Frame (M("PREFERENCES_MENUOPTIONS")) ); + ckbmenuGroupRank = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_MENUGROUPRANK")) ); + ckbmenuGroupLabel = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_MENUGROUPLABEL")) ); + ckbmenuGroupFileOperations = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_MENUGROUPFILEOPERATIONS")) ); + ckbmenuGroupProfileOperations = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_MENUGROUPPROFILEOPERATIONS")) ); + Gtk::VBox* vbmnu = Gtk::manage( new Gtk::VBox () ); + + vbmnu->set_border_width (4); + vbmnu->pack_start (*ckbmenuGroupRank, Gtk::PACK_SHRINK, 0); + vbmnu->pack_start (*ckbmenuGroupLabel, Gtk::PACK_SHRINK, 0); + vbmnu->pack_start (*ckbmenuGroupFileOperations, Gtk::PACK_SHRINK, 0); + vbmnu->pack_start (*ckbmenuGroupProfileOperations, Gtk::PACK_SHRINK, 0); + + frmnu->add (*vbmnu); + + Gtk::Frame* fre = Gtk::manage( new Gtk::Frame (M("PREFERENCES_PARSEDEXT")) ); Gtk::VBox* vbre = Gtk::manage( new Gtk::VBox () ); vbre->set_border_width (4); @@ -747,6 +764,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel () { vbc->set_border_width (4); Gtk::Label* cflab = Gtk::manage( new Gtk::Label (M("PREFERENCES_CACHETHUMBFORM")+":") ); + cflab->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_TOP); cformat = Gtk::manage( new Gtk::ComboBoxText () ); cformat->set_size_request(50, -1); cformat->append_text (M("PREFERENCES_CACHEFORMAT1")); @@ -754,10 +772,8 @@ Gtk::Widget* Preferences::getFileBrowserPanel () { cformat->append_text (M("PREFERENCES_CACHEFORMAT1")+", 16 bit"); cformat->signal_changed().connect( sigc::mem_fun(*this, &Preferences::cacheFormatComboChanged) ); cacheFormatComboChanged(); // update the tooltip - Gtk::HBox* hb2 = Gtk::manage( new Gtk::HBox () ); - hb2->pack_start (*cflab, Gtk::PACK_SHRINK, 4); - hb2->pack_start (*cformat); - vbc->pack_start (*hb2, Gtk::PACK_SHRINK, 4); + vbc->pack_start (*cflab, Gtk::PACK_SHRINK, 2); + vbc->pack_start (*cformat); Gtk::HBox* hb3 = Gtk::manage( new Gtk::HBox () ); Gtk::Label* chlab = Gtk::manage( new Gtk::Label (M("PREFERENCES_CACHETHUMBHEIGHT")+":") ); @@ -794,6 +810,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel () { Gtk::VBox* vb6 = Gtk::manage( new Gtk::VBox () ); vb6->pack_start (*fro); + vb6->pack_start (*frmnu); vb6->pack_end (*frc); hb6->pack_start (*vb6); hb6->pack_start (*fre); @@ -885,6 +902,10 @@ void Preferences::storePreferences () { moptions.dateFormat = dateformat->get_text(); moptions.fbShowDateTime = showDateTime->get_active (); moptions.fbShowBasicExif = showBasicExif->get_active (); + moptions.menuGroupRank = ckbmenuGroupRank->get_active(); + moptions.menuGroupLabel = ckbmenuGroupLabel->get_active(); + moptions.menuGroupFileOperations = ckbmenuGroupFileOperations->get_active(); + moptions.menuGroupProfileOperations = ckbmenuGroupProfileOperations->get_active(); moptions.blinkClipped = blinkClipped->get_active (); moptions.highlightThreshold = (int)hlThresh->get_value (); moptions.shadowThreshold = (int)shThresh->get_value (); @@ -1019,6 +1040,10 @@ void Preferences::fillPreferences () { fontbutton->set_font_name(moptions.font); showDateTime->set_active (moptions.fbShowDateTime); showBasicExif->set_active (moptions.fbShowBasicExif); + ckbmenuGroupRank->set_active(moptions.menuGroupRank); + ckbmenuGroupLabel->set_active(moptions.menuGroupLabel); + ckbmenuGroupFileOperations->set_active(moptions.menuGroupFileOperations); + ckbmenuGroupProfileOperations->set_active(moptions.menuGroupProfileOperations); blinkClipped->set_active (moptions.blinkClipped); hlThresh->set_value (moptions.highlightThreshold); shThresh->set_value (moptions.shadowThreshold); diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 503996e7f..ce62a2504 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -103,6 +103,11 @@ class Preferences : public Gtk::Dialog { Gtk::Button* delExt; Gtk::CheckButton* overlayedFileNames; + Gtk::CheckButton* ckbmenuGroupRank; + Gtk::CheckButton* ckbmenuGroupLabel; + Gtk::CheckButton* ckbmenuGroupFileOperations; + Gtk::CheckButton* ckbmenuGroupProfileOperations; + Gtk::CheckButton* chOverwriteOutputFile; Gtk::CheckButton* saveParamsFile;