diff --git a/rtdata/languages/default b/rtdata/languages/default
index 466dbd256..8d64ed824 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -93,6 +93,7 @@ FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full
FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial
FILEBROWSER_CACHE;Cache
FILEBROWSER_CLEARPROFILE;Clear
+FILEBROWSER_COLORLABEL_TOOLTIP;Color label\n\nUse dropdown menu or Shortcuts:\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple
FILEBROWSER_COPYPROFILE;Copy
FILEBROWSER_CURRENT_NAME;Current name:
FILEBROWSER_DARKFRAME;Dark frame
@@ -151,6 +152,11 @@ FILEBROWSER_PROCESSINGSETTINGS;Settings
FILEBROWSER_QUERYBUTTONHINT;Clear the Find query
FILEBROWSER_QUERYHINT;Type a partial filename to search for or a comma-separated list.\nE.g. 1001,1004,1199 \n\nCtrl-F to focus to the Find text box.\nEnter to commence search.\nEsc to clear.\nShift-Esc to remove focus.
FILEBROWSER_QUERYLABEL; Find:
+FILEBROWSER_RANK1_TOOLTIP;Rank 1 *\nShortcut: Shift-1
+FILEBROWSER_RANK2_TOOLTIP;Rank 2 *\nShortcut: Shift-2
+FILEBROWSER_RANK3_TOOLTIP;Rank 3 *\nShortcut: Shift-3
+FILEBROWSER_RANK4_TOOLTIP;Rank 4 *\nShortcut: Shift-4
+FILEBROWSER_RANK5_TOOLTIP;Rank 5 *\nShortcut: Shift-5
FILEBROWSER_RENAMEDLGLABEL;Rename file
FILEBROWSER_RENAMEDLGMSG;Rename file "%1" to:
FILEBROWSER_SELECTDARKFRAME;Select dark frame...
@@ -181,6 +187,7 @@ FILEBROWSER_STOPPROCESSINGHINT;Stop processing the images in the queue
FILEBROWSER_STOPPROCESSING;Stop Processing
FILEBROWSER_THUMBSIZE;Thumbnail size
FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives
+FILEBROWSER_UNRANK_TOOLTIP;Unrank\nShortcut: Shift - ~
FILEBROWSER_USETEMPLATE;Use template:
FILEBROWSER_ZOOMINHINT;Increase thumbnail size.\nShortcut: +\n\nShortcut in Single Editor Tab: Alt +
FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size.\nShortcut: -\n\nShortcut in Single Editor Tab: Alt -
diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc
index 2b66ecba3..8ed06a437 100644
--- a/rtgui/filebrowser.cc
+++ b/rtgui/filebrowser.cc
@@ -94,7 +94,10 @@ FileBrowser::FileBrowser ()
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
+
+ //set color label images
+ colorlabel[0]->set_image(*Gtk::manage(new RTImage ("cglabel0.png")));
+ for (int i=1; i<=5; i++){
colorlabel[i]->set_image(*Gtk::manage(new RTImage (Glib::ustring::compose("%1%2%3","clabel",i,".png"))));
}
@@ -268,11 +271,31 @@ FileBrowser::FileBrowser ()
execcustprof->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), execcustprof));
clearprof->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), clearprof));
cachemenu->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), cachemenu));
+
+
+
+ // A separate pop-up menu for Color Labels
+ int c = 0;
+ pmenuColorLabels = new Gtk::Menu ();
+ for (int i=0; i<=5; i++){
+ pmenuColorLabels->attach (*Gtk::manage(colorlabel_pop[i] = new Gtk::ImageMenuItem (M(Glib::ustring::compose("%1%2","FILEBROWSER_POPUPCOLORLABEL",i)))), 0, 1, c, c+1); c++;
+ }
+ //set color label images
+ colorlabel_pop[0]->set_image(*Gtk::manage(new RTImage ("cglabel0.png")));
+ for (int i=1; i<=5; i++){
+ colorlabel_pop[i]->set_image(*Gtk::manage(new RTImage (Glib::ustring::compose("%1%2%3","clabel",i,".png"))));
+ }
+ pmenuColorLabels->show_all ();
+
+ // Bind to event handlers
+ for (int i=0; i<=5; i++)
+ colorlabel_pop[i]->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuColorlabelActivated), colorlabel_pop[i]));
}
FileBrowser::~FileBrowser ()
{
delete pmenu;
+ delete pmenuColorLabels;
delete[] amiExtProg;
}
@@ -499,6 +522,18 @@ void FileBrowser::close () {
lastClicked = NULL;
}
+void FileBrowser::menuColorlabelActivated (Gtk::MenuItem* m) {
+
+ std::vector tbe;
+ tbe.push_back (static_cast(colorLabel_actionData));
+
+ for (int i=0; i<6; i++)
+ if (m==colorlabel_pop[i]) {
+ colorlabelRequested (tbe, i);
+ return;
+ }
+}
+
void FileBrowser::menuItemActivated (Gtk::MenuItem* m) {
std::vector mselected;
@@ -871,7 +906,53 @@ bool FileBrowser::keyPressed (GdkEventKey* event) {
scrollPage(GDK_SCROLL_DOWN);
return true;
}
-
+
+ else if (shift && !ctrl && !alt) { // rank
+ switch(event->keyval) {
+ case GDK_asciitilde:
+ requestRanking (0);
+ return true;
+ case GDK_exclam:
+ requestRanking (1);
+ return true;
+ case GDK_at:
+ requestRanking (2);
+ return true;
+ case GDK_numbersign:
+ requestRanking (3);
+ return true;
+ case GDK_dollar:
+ requestRanking (4);
+ return true;
+ case GDK_percent:
+ requestRanking (5);
+ return true;
+ }
+ }
+
+ else if (shift && ctrl && !alt) { // color labels
+ switch(event->keyval) {
+ case GDK_asciitilde:
+ requestColorLabel (0);
+ return true;
+ case GDK_exclam:
+ requestColorLabel (1);
+ return true;
+ case GDK_at:
+ requestColorLabel (2);
+ return true;
+ case GDK_numbersign:
+ requestColorLabel (3);
+ return true;
+ case GDK_dollar:
+ requestColorLabel (4);
+ return true;
+ case GDK_percent:
+ requestColorLabel (5);
+ return true;
+ }
+ }
+
return false;
}
@@ -1092,6 +1173,22 @@ void FileBrowser::colorlabelRequested (std::vector tbe, int c
applyFilter (filter);
}
+void FileBrowser::requestRanking(int rank){
+ std::vector mselected;
+ for (size_t i=0; i(selected[i]));
+
+ rankingRequested (mselected, rank);
+}
+
+void FileBrowser::requestColorLabel(int colorlabel){
+ std::vector mselected;
+ for (size_t i=0; i(selected[i]));
+
+ colorlabelRequested (mselected, colorlabel);
+}
+
void FileBrowser::buttonPressed (LWButton* button, int actionCode, void* actionData) {
if (actionCode>=0 && actionCode<=5) { // rank
@@ -1113,6 +1210,11 @@ void FileBrowser::buttonPressed (LWButton* button, int actionCode, void* actionD
else
fromTrashRequested (tbe);
}
+ else if (actionCode==8 && tbl) { // color label
+ // show popup menu
+ colorLabel_actionData = actionData;// this will be reused when pmenuColorLabels is clicked
+ pmenuColorLabels->popup (3, this->eventTime);
+ }
}
void FileBrowser::openNextImage () {
diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h
index 5188f19f9..c4c818ef4 100644
--- a/rtgui/filebrowser.h
+++ b/rtgui/filebrowser.h
@@ -105,6 +105,11 @@ class FileBrowser : public ThumbBrowserBase,
Gtk::MenuItem* clearFromCacheFull;
Gtk::Menu* pmenu;
+ Gtk::ImageMenuItem* colorlabel_pop[6];
+ Gtk::Menu* pmenuColorLabels;
+ void* colorLabel_actionData;
+ void menuColorlabelActivated (Gtk::MenuItem* m); // use only when menu is invoked via FileBrowser::buttonPressed to pass actionData
+
Glib::RefPtr pmaccelgroup;
FileBrowserListener* tbl;
@@ -117,6 +122,8 @@ class FileBrowser : public ThumbBrowserBase,
void fromTrashRequested (std::vector tbe);
void rankingRequested (std::vector tbe, int rank);
void colorlabelRequested (std::vector tbe, int colorlabel);
+ void requestRanking (int rank);
+ void requestColorLabel(int colorlabel);
void notifySelectionListener ();
ExportPanel* exportPanel;
diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc
index 5fbb6c863..1c3ef5dd0 100644
--- a/rtgui/filecatalog.cc
+++ b/rtgui/filecatalog.cc
@@ -1773,7 +1773,7 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) {
}
}
- if (!alt) {
+ if (!alt && !shift) { // shift is reserved for ranking
switch(event->keyval) {
case GDK_grave:
categoryButtonToggled(bUnRanked,false);
@@ -1809,7 +1809,7 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) {
}
}
- if (alt) {
+ if (alt && !shift) { // shift is reserved for color labeling
switch(event->keyval) {
case GDK_grave:
categoryButtonToggled(bUnCLabeled,false);
diff --git a/rtgui/filethumbnailbuttonset.cc b/rtgui/filethumbnailbuttonset.cc
index 269bdd836..5111017d7 100644
--- a/rtgui/filethumbnailbuttonset.cc
+++ b/rtgui/filethumbnailbuttonset.cc
@@ -47,7 +47,7 @@ FileThumbnailButtonSet::FileThumbnailButtonSet (FileBrowserEntry* myEntry) {
unTrashIcon = safe_create_from_png ("undelete-thumbnail.png");
processIcon = safe_create_from_png ("processing-thumbnail.png");
- colorLabelIcon_0 = safe_create_from_png ("nocolorlabel.png");
+ colorLabelIcon_0 = safe_create_from_png ("cglabel0.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");
@@ -57,18 +57,18 @@ FileThumbnailButtonSet::FileThumbnailButtonSet (FileBrowserEntry* myEntry) {
}
add (new LWButton (processIcon, 6, myEntry, LWButton::Left, LWButton::Center, M("FILEBROWSER_POPUPPROCESS")));
- add (new LWButton (unRankIcon, 0, myEntry, LWButton::Left, LWButton::Center, M("FILEBROWSER_POPUPUNRANK")));
+ add (new LWButton (unRankIcon, 0, myEntry, LWButton::Left, LWButton::Center, M("FILEBROWSER_UNRANK_TOOLTIP")));
for (int i=0; i<5; i++)
add (new LWButton (rankIcon, i+1, myEntry, LWButton::Left));
add (new LWButton (trashIcon, 7, myEntry, LWButton::Right, LWButton::Center, M("FILEBROWSER_POPUPTRASH")));
- add (new LWButton (colorLabelIcon_0, 8, myEntry, LWButton::Right, LWButton::Center, M("FILEBROWSER_POPUPCOLORLABEL")));
+ add (new LWButton (colorLabelIcon_0, 8, myEntry, LWButton::Right, LWButton::Center, M("FILEBROWSER_COLORLABEL_TOOLTIP")));
- buttons[2]->setToolTip (M("FILEBROWSER_POPUPRANK1"));
- buttons[3]->setToolTip (M("FILEBROWSER_POPUPRANK2"));
- buttons[4]->setToolTip (M("FILEBROWSER_POPUPRANK3"));
- buttons[5]->setToolTip (M("FILEBROWSER_POPUPRANK4"));
- buttons[6]->setToolTip (M("FILEBROWSER_POPUPRANK5"));
+ buttons[2]->setToolTip (M("FILEBROWSER_RANK1_TOOLTIP"));
+ buttons[3]->setToolTip (M("FILEBROWSER_RANK2_TOOLTIP"));
+ buttons[4]->setToolTip (M("FILEBROWSER_RANK3_TOOLTIP"));
+ buttons[5]->setToolTip (M("FILEBROWSER_RANK4_TOOLTIP"));
+ buttons[6]->setToolTip (M("FILEBROWSER_RANK5_TOOLTIP"));
}
void FileThumbnailButtonSet::setRank (int stars) {