Shortcuts to apply rank and color labels and a new direct popup menu for color labels, all in the File Browser (issue 1839)
This commit is contained in:
@@ -93,6 +93,7 @@ FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full
|
|||||||
FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial
|
FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial
|
||||||
FILEBROWSER_CACHE;Cache
|
FILEBROWSER_CACHE;Cache
|
||||||
FILEBROWSER_CLEARPROFILE;Clear
|
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_COPYPROFILE;Copy
|
||||||
FILEBROWSER_CURRENT_NAME;Current name:
|
FILEBROWSER_CURRENT_NAME;Current name:
|
||||||
FILEBROWSER_DARKFRAME;Dark frame
|
FILEBROWSER_DARKFRAME;Dark frame
|
||||||
@@ -151,6 +152,11 @@ FILEBROWSER_PROCESSINGSETTINGS;Settings
|
|||||||
FILEBROWSER_QUERYBUTTONHINT;Clear the Find query
|
FILEBROWSER_QUERYBUTTONHINT;Clear the Find query
|
||||||
FILEBROWSER_QUERYHINT;Type a <i>partial filename</i> to search for or a <i>comma-separated list</i>.\nE.g. <i>1001,1004,1199</i> \n\n<b>Ctrl-F</b> to focus to the Find text box.\n<b>Enter</b> to commence search.\n<b>Esc</b> to clear.\n<b>Shift-Esc</b> to remove focus.
|
FILEBROWSER_QUERYHINT;Type a <i>partial filename</i> to search for or a <i>comma-separated list</i>.\nE.g. <i>1001,1004,1199</i> \n\n<b>Ctrl-F</b> to focus to the Find text box.\n<b>Enter</b> to commence search.\n<b>Esc</b> to clear.\n<b>Shift-Esc</b> to remove focus.
|
||||||
FILEBROWSER_QUERYLABEL; Find:
|
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_RENAMEDLGLABEL;Rename file
|
||||||
FILEBROWSER_RENAMEDLGMSG;Rename file "%1" to:
|
FILEBROWSER_RENAMEDLGMSG;Rename file "%1" to:
|
||||||
FILEBROWSER_SELECTDARKFRAME;Select dark frame...
|
FILEBROWSER_SELECTDARKFRAME;Select dark frame...
|
||||||
@@ -181,6 +187,7 @@ FILEBROWSER_STOPPROCESSINGHINT;Stop processing the images in the queue
|
|||||||
FILEBROWSER_STOPPROCESSING;Stop Processing
|
FILEBROWSER_STOPPROCESSING;Stop Processing
|
||||||
FILEBROWSER_THUMBSIZE;Thumbnail size
|
FILEBROWSER_THUMBSIZE;Thumbnail size
|
||||||
FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives
|
FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives
|
||||||
|
FILEBROWSER_UNRANK_TOOLTIP;Unrank\nShortcut: Shift - ~
|
||||||
FILEBROWSER_USETEMPLATE;Use template:
|
FILEBROWSER_USETEMPLATE;Use template:
|
||||||
FILEBROWSER_ZOOMINHINT;Increase thumbnail size.\nShortcut: <b>+</b>\n\nShortcut in Single Editor Tab: <b>Alt +</b>
|
FILEBROWSER_ZOOMINHINT;Increase thumbnail size.\nShortcut: <b>+</b>\n\nShortcut in Single Editor Tab: <b>Alt +</b>
|
||||||
FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size.\nShortcut: <b>-</b>\n\nShortcut in Single Editor Tab: <b>Alt -</b>
|
FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size.\nShortcut: <b>-</b>\n\nShortcut in Single Editor Tab: <b>Alt -</b>
|
||||||
|
@@ -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++;
|
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"))));
|
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));
|
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));
|
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));
|
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 ()
|
FileBrowser::~FileBrowser ()
|
||||||
{
|
{
|
||||||
delete pmenu;
|
delete pmenu;
|
||||||
|
delete pmenuColorLabels;
|
||||||
delete[] amiExtProg;
|
delete[] amiExtProg;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -499,6 +522,18 @@ void FileBrowser::close () {
|
|||||||
lastClicked = NULL;
|
lastClicked = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FileBrowser::menuColorlabelActivated (Gtk::MenuItem* m) {
|
||||||
|
|
||||||
|
std::vector<FileBrowserEntry*> tbe;
|
||||||
|
tbe.push_back (static_cast<FileBrowserEntry*>(colorLabel_actionData));
|
||||||
|
|
||||||
|
for (int i=0; i<6; i++)
|
||||||
|
if (m==colorlabel_pop[i]) {
|
||||||
|
colorlabelRequested (tbe, i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FileBrowser::menuItemActivated (Gtk::MenuItem* m) {
|
void FileBrowser::menuItemActivated (Gtk::MenuItem* m) {
|
||||||
|
|
||||||
std::vector<FileBrowserEntry*> mselected;
|
std::vector<FileBrowserEntry*> mselected;
|
||||||
@@ -872,6 +907,52 @@ bool FileBrowser::keyPressed (GdkEventKey* event) {
|
|||||||
return true;
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1092,6 +1173,22 @@ void FileBrowser::colorlabelRequested (std::vector<FileBrowserEntry*> tbe, int c
|
|||||||
applyFilter (filter);
|
applyFilter (filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FileBrowser::requestRanking(int rank){
|
||||||
|
std::vector<FileBrowserEntry*> mselected;
|
||||||
|
for (size_t i=0; i<selected.size(); i++)
|
||||||
|
mselected.push_back (static_cast<FileBrowserEntry*>(selected[i]));
|
||||||
|
|
||||||
|
rankingRequested (mselected, rank);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileBrowser::requestColorLabel(int colorlabel){
|
||||||
|
std::vector<FileBrowserEntry*> mselected;
|
||||||
|
for (size_t i=0; i<selected.size(); i++)
|
||||||
|
mselected.push_back (static_cast<FileBrowserEntry*>(selected[i]));
|
||||||
|
|
||||||
|
colorlabelRequested (mselected, colorlabel);
|
||||||
|
}
|
||||||
|
|
||||||
void FileBrowser::buttonPressed (LWButton* button, int actionCode, void* actionData) {
|
void FileBrowser::buttonPressed (LWButton* button, int actionCode, void* actionData) {
|
||||||
|
|
||||||
if (actionCode>=0 && actionCode<=5) { // rank
|
if (actionCode>=0 && actionCode<=5) { // rank
|
||||||
@@ -1113,6 +1210,11 @@ void FileBrowser::buttonPressed (LWButton* button, int actionCode, void* actionD
|
|||||||
else
|
else
|
||||||
fromTrashRequested (tbe);
|
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 () {
|
void FileBrowser::openNextImage () {
|
||||||
|
@@ -105,6 +105,11 @@ class FileBrowser : public ThumbBrowserBase,
|
|||||||
Gtk::MenuItem* clearFromCacheFull;
|
Gtk::MenuItem* clearFromCacheFull;
|
||||||
Gtk::Menu* pmenu;
|
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<Gtk::AccelGroup> pmaccelgroup;
|
Glib::RefPtr<Gtk::AccelGroup> pmaccelgroup;
|
||||||
|
|
||||||
FileBrowserListener* tbl;
|
FileBrowserListener* tbl;
|
||||||
@@ -117,6 +122,8 @@ class FileBrowser : public ThumbBrowserBase,
|
|||||||
void fromTrashRequested (std::vector<FileBrowserEntry*> tbe);
|
void fromTrashRequested (std::vector<FileBrowserEntry*> tbe);
|
||||||
void rankingRequested (std::vector<FileBrowserEntry*> tbe, int rank);
|
void rankingRequested (std::vector<FileBrowserEntry*> tbe, int rank);
|
||||||
void colorlabelRequested (std::vector<FileBrowserEntry*> tbe, int colorlabel);
|
void colorlabelRequested (std::vector<FileBrowserEntry*> tbe, int colorlabel);
|
||||||
|
void requestRanking (int rank);
|
||||||
|
void requestColorLabel(int colorlabel);
|
||||||
void notifySelectionListener ();
|
void notifySelectionListener ();
|
||||||
|
|
||||||
ExportPanel* exportPanel;
|
ExportPanel* exportPanel;
|
||||||
|
@@ -1773,7 +1773,7 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!alt) {
|
if (!alt && !shift) { // shift is reserved for ranking
|
||||||
switch(event->keyval) {
|
switch(event->keyval) {
|
||||||
case GDK_grave:
|
case GDK_grave:
|
||||||
categoryButtonToggled(bUnRanked,false);
|
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) {
|
switch(event->keyval) {
|
||||||
case GDK_grave:
|
case GDK_grave:
|
||||||
categoryButtonToggled(bUnCLabeled,false);
|
categoryButtonToggled(bUnCLabeled,false);
|
||||||
|
@@ -47,7 +47,7 @@ FileThumbnailButtonSet::FileThumbnailButtonSet (FileBrowserEntry* myEntry) {
|
|||||||
unTrashIcon = safe_create_from_png ("undelete-thumbnail.png");
|
unTrashIcon = safe_create_from_png ("undelete-thumbnail.png");
|
||||||
processIcon = safe_create_from_png ("processing-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_1 = safe_create_from_png ("clabel1.png");
|
||||||
colorLabelIcon_2 = safe_create_from_png ("clabel2.png");
|
colorLabelIcon_2 = safe_create_from_png ("clabel2.png");
|
||||||
colorLabelIcon_3 = safe_create_from_png ("clabel3.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 (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++)
|
for (int i=0; i<5; i++)
|
||||||
add (new LWButton (rankIcon, i+1, myEntry, LWButton::Left));
|
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 (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[2]->setToolTip (M("FILEBROWSER_RANK1_TOOLTIP"));
|
||||||
buttons[3]->setToolTip (M("FILEBROWSER_POPUPRANK2"));
|
buttons[3]->setToolTip (M("FILEBROWSER_RANK2_TOOLTIP"));
|
||||||
buttons[4]->setToolTip (M("FILEBROWSER_POPUPRANK3"));
|
buttons[4]->setToolTip (M("FILEBROWSER_RANK3_TOOLTIP"));
|
||||||
buttons[5]->setToolTip (M("FILEBROWSER_POPUPRANK4"));
|
buttons[5]->setToolTip (M("FILEBROWSER_RANK4_TOOLTIP"));
|
||||||
buttons[6]->setToolTip (M("FILEBROWSER_POPUPRANK5"));
|
buttons[6]->setToolTip (M("FILEBROWSER_RANK5_TOOLTIP"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileThumbnailButtonSet::setRank (int stars) {
|
void FileThumbnailButtonSet::setRank (int stars) {
|
||||||
|
Reference in New Issue
Block a user