File Browser Filter enhancements (Edited/not & Saved/not) and cleanup

This commit is contained in:
michael
2011-06-27 21:00:32 -04:00
parent 88c7e54774
commit 80b639c64c
21 changed files with 250 additions and 50 deletions

View File

@@ -25,4 +25,9 @@ BrowserFilter::BrowserFilter () : exifFilterEnabled (false) {
showRanked[i] = true;
showCLabeled[i] = true;
}
for (int i=0; i<2; i++){
showEdited[i] = true;
showRecentlySaved[i] = true;
}
}

View File

@@ -30,6 +30,8 @@ class BrowserFilter {
bool showTrash;
bool showNotTrash;
bool showEdited[2];
bool showRecentlySaved[2];
bool multiselect;
Glib::ustring queryString;
Glib::ustring queryFileName;

View File

@@ -775,7 +775,17 @@ bool FileBrowser::checkFilter (ThumbBrowserEntryBase* entryb) { // true -> entry
FileBrowserEntry* entry = (FileBrowserEntry*)entryb;
// return false if basic filter settings are not satisfied
if (filter.showRanked[entry->thumbnail->getRank()]==false || filter.showCLabeled[entry->thumbnail->getColorLabel()]==false || (entry->thumbnail->getStage()==1 && !filter.showTrash) || (entry->thumbnail->getStage()==0 && !filter.showNotTrash))
if ((filter.showRanked[entry->thumbnail->getRank()]==false ) || \
(filter.showCLabeled[entry->thumbnail->getColorLabel()]==false ) || \
((entry->thumbnail->hasProcParams() && filter.showEdited[0]) && !filter.showEdited[1]) || \
((!entry->thumbnail->hasProcParams() && filter.showEdited[1])&& !filter.showEdited[0]) || \
((entry->thumbnail->isRecentlySaved() && filter.showRecentlySaved[0]) && !filter.showRecentlySaved[1]) || \
((!entry->thumbnail->isRecentlySaved() && filter.showRecentlySaved[1]) && !filter.showRecentlySaved[0]) || \
(entry->thumbnail->getStage()==1 && !filter.showTrash) || \
(entry->thumbnail->getStage()==0 && !filter.showNotTrash))
return false;
// return false is query is not satisfied

View File

@@ -132,9 +132,13 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
buttonBar->pack_start (*tbLeftPanel_1, Gtk::PACK_SHRINK);
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");
bFilterClear = Gtk::manage(new Gtk::ToggleButton ());
bFilterClear->set_active (true);
bFilterClear->set_image (*Gtk::manage(new Gtk::Image (argv0+"/images/filterclear.png")));
bFilterClear->set_image(*iFilterClear);//(*Gtk::manage(new Gtk::Image (argv0+"/images/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);
@@ -146,9 +150,11 @@ 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");
bUnRanked = Gtk::manage( new Gtk::ToggleButton () );
bUnRanked->set_active (false);
bUnRanked->set_image (*Gtk::manage(new Gtk::Image (argv0+"/images/unrated.png")));
bUnRanked->set_image (*igUnRanked);
bUnRanked->set_relief (Gtk::RELIEF_NONE);
bUnRanked->set_tooltip_markup (M("FILEBROWSER_SHOWUNRANKHINT"));
bCateg[1] = bUnRanked->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bUnRanked));
@@ -168,9 +174,11 @@ 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");
bUnCLabeled = Gtk::manage(new Gtk::ToggleButton ());
bUnCLabeled->set_active (false);
bUnCLabeled->set_image (*Gtk::manage(new Gtk::Image (argv0+"/images/uncolorlabel.png")));
bUnCLabeled->set_image (*igUnCLabeled);
bUnCLabeled->set_relief (Gtk::RELIEF_NONE);
bUnCLabeled->set_tooltip_markup (M("FILEBROWSER_SHOWUNCOLORHINT"));
bCateg[7] = bUnCLabeled->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bUnCLabeled));
@@ -208,6 +216,55 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
buttonBar->pack_start (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK);
fltrVbox2 = Gtk::manage (new Gtk::VBox());
fltrEditedBox = Gtk::manage (new Gtk::HBox());
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");
for (int i=0; i<2; i++) {
iEdited[i]->show ();
bEdited[i] = Gtk::manage(new Gtk::ToggleButton ());
bEdited[i]->set_active (false);
bEdited[i]->set_image (*igEdited[i]);
bEdited[i]->set_relief (Gtk::RELIEF_NONE);
fltrEditedBox->pack_start (*bEdited[i], Gtk::PACK_SHRINK);
//13, 14
bCateg[i+13] = bEdited[i]->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bEdited[i]));
bEdited[i]->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event),false);
}
bEdited[0]->set_tooltip_markup (M("FILEBROWSER_SHOWEDITEDNOTHINT"));
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");
for (int i=0; i<2; i++) {
iRecentlySaved[i]->show ();
bRecentlySaved[i] = Gtk::manage(new Gtk::ToggleButton ());
bRecentlySaved[i]->set_active (false);
bRecentlySaved[i]->set_image (*igRecentlySaved[i]);
bRecentlySaved[i]->set_relief (Gtk::RELIEF_NONE);
fltrRecentlySavedBox->pack_start (*bRecentlySaved[i], Gtk::PACK_SHRINK);
//15, 16
bCateg[i+15] = bRecentlySaved[i]->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bRecentlySaved[i]));
bRecentlySaved[i]->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event),false);
}
bRecentlySaved[0]->set_tooltip_markup (M("FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT"));
bRecentlySaved[1]->set_tooltip_markup (M("FILEBROWSER_SHOWRECENTLYSAVEDHINT"));
fltrVbox2->pack_start (*fltrEditedBox, Gtk::PACK_SHRINK,0);
fltrVbox2->pack_start (*fltrRecentlySavedBox, Gtk::PACK_SHRINK,0);
buttonBar->pack_start (*fltrVbox2, Gtk::PACK_SHRINK);
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") ;
@@ -215,7 +272,7 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
bTrash->set_image (*iTrashEmpty);
bTrash->set_relief (Gtk::RELIEF_NONE);
bTrash->set_tooltip_markup (M("FILEBROWSER_SHOWTRASHHINT"));
bCateg[13] = bTrash->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bTrash));
bCateg[17] = bTrash->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bTrash));
bTrash->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event),false);
buttonBar->pack_start (*bTrash, Gtk::PACK_SHRINK);
buttonBar->pack_start (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK);
@@ -234,13 +291,20 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
// 10 - bCLabel[2]
// 11 - bCLabel[3]
// 12 - bCLabel[4]
// 13 - bTrash
// 13 - bEdited[0]
// 14 - bEdited[1]
// 15 - bRecentlySaved[0]
// 16 - bRecentlySaved[1]
// 17 - bTrash
categoryButtons[0] = bFilterClear;
categoryButtons[1] = bUnRanked;
for (int i=0; i<5; i++){ categoryButtons[i+2] = bRank[i];}
categoryButtons[7] = bUnCLabeled;
for (int i=0; i<5; i++){ categoryButtons[i+8] = bCLabel[i];}
categoryButtons[13] = bTrash;
for (int i=0; i<2; i++){ categoryButtons[i+13] = bEdited[i];}
for (int i=0; i<2; i++){ categoryButtons[i+15] = bRecentlySaved[i];}
categoryButtons[17] = bTrash;
exifInfo = Gtk::manage(new Gtk::ToggleButton ());
exifInfo->set_image (*Gtk::manage(new Gtk::Image (argv0+"/images/info.png")));
@@ -301,7 +365,7 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
enabled = true;
lastScrollPos = 0;
for (int i=0; i<14; i++) {
for (int i=0; i<18; i++) {
hScrollPos[i] = 0;
vScrollPos[i] = 0;
}
@@ -319,6 +383,18 @@ FileCatalog::~FileCatalog(){
delete iCLabeled[i];
delete igCLabeled[i];
}
for (int i=0; i<2; i++) {
delete iEdited[i];
delete igEdited[i];
delete iRecentlySaved[i];
delete igRecentlySaved[i];
}
delete iFilterClear;
delete igFilterClear;
delete iUnRanked;
delete igUnRanked;
delete iUnCLabeled;
delete igUnCLabeled;
delete iTrashEmpty;
delete iTrashFull;
delete iRefreshWhite;
@@ -895,7 +971,7 @@ void FileCatalog::categoryButtonToggled (Gtk::ToggleButton* b) {
//was shift key pressed
bool shift_down = modifierKey & GDK_SHIFT_MASK;
for (int i=0; i<14; i++)
for (int i=0; i<18; i++)
bCateg[i].block (true);
//button is already toggled when entering this function, so we switch it back to its initial state
@@ -909,9 +985,9 @@ void FileCatalog::categoryButtonToggled (Gtk::ToggleButton* b) {
//we look how many stars are already toggled on, if any
int toggled_stars_count=0, buttons=0, start_star=0, toggled_button=0;
for (int i=0; i<14; i++) {
for (int i=0; i<18; i++) {
if (categoryButtons[i]->get_active()) {
if (i>0 && i<13) {
if (i>0 && i<17) {
toggled_stars_count ++;
start_star = i;
}
@@ -922,12 +998,12 @@ void FileCatalog::categoryButtonToggled (Gtk::ToggleButton* b) {
//if no modifier key were pressed, we can switch-on the button, and clear all others
if (!(control_down || shift_down)) {
for (int i=0; i<14; i++) {
for (int i=0; i<18; i++) {
categoryButtons[i]->set_active (i==toggled_button);
}
}
//modifier key allowed only for stars and color labels
else if (toggled_button>0 && toggled_button<13) {
else if (toggled_button>0 && toggled_button<17) {
if (control_down) {
//control is pressed
if (toggled_stars_count == 1 && (buttons & (1 << toggled_button))) {
@@ -944,7 +1020,7 @@ void FileCatalog::categoryButtonToggled (Gtk::ToggleButton* b) {
//no star selected
//we deselect the 2 non star filters
if (buttons & 1 ) categoryButtons[0]->set_active(false);
if (buttons & (1 << 13)) categoryButtons[13]->set_active(false);
if (buttons & (1 << 17)) categoryButtons[17]->set_active(false);
//and we toggle on the star
categoryButtons[toggled_button]->set_active (true);
}
@@ -955,7 +1031,8 @@ void FileCatalog::categoryButtonToggled (Gtk::ToggleButton* b) {
//we deselect the 2 non star filters
if (buttons & 1 ) categoryButtons[0]->set_active(false);
if (buttons & (1 << 7)) categoryButtons[7]->set_active(false);
if (buttons & (1 << 13)) categoryButtons[13]->set_active(false); //!!! verify if (1 << 13) is correct?
if (buttons & (1 << 13)) categoryButtons[13]->set_active(false);
if (buttons & (1 << 17)) categoryButtons[17]->set_active(false);
//and we set the start star to 1 (unrated images)
start_star = 1;
//we act as if one star were selected
@@ -974,24 +1051,54 @@ void FileCatalog::categoryButtonToggled (Gtk::ToggleButton* b) {
}
}
// set the right images
bool active_now, active_before;
// FilterClear: set the right images
// TODO: swapping FilterClear icon needs more work in categoryButtonToggled
/*active_now = bFilterClear->get_active();
active_before = buttons & (1 << (0)); // 0
if ( active_now && !active_before) bFilterClear->set_image (*iFilterClear);
else if (!active_now && active_before) bFilterClear->set_image (*igFilterClear);*/
// rank: set the right images
for (int i=0; i<5; i++) {
bool active_now, active_before;
active_now = bRank[i]->get_active();
active_before = buttons & (1 << (i+2));
active_before = buttons & (1 << (i+2)); // 2,3,4,5,6
if ( active_now && !active_before) bRank[i]->set_image (*iranked[i]);
else if (!active_now && active_before) bRank[i]->set_image (*igranked[i]);
}
active_now = bUnRanked->get_active();
active_before = buttons & (1 << (1)); // 1
if ( active_now && !active_before) bUnRanked->set_image (*iUnRanked);
else if (!active_now && active_before) bUnRanked->set_image (*igUnRanked);
// set the right images
// color labels: set the right images
for (int i=0; i<5; i++) {
bool active_now, active_before;
active_now = bCLabel[i]->get_active();
active_before = buttons & (1 << (i+8));
active_before = buttons & (1 << (i+8)); // 8,9,10,11,12
if ( active_now && !active_before) bCLabel[i]->set_image (*iCLabeled[i]);
else if (!active_now && active_before) bCLabel[i]->set_image (*igCLabeled[i]);
}
active_now = bUnCLabeled->get_active();
active_before = buttons & (1 << (7)); // 7
if ( active_now && !active_before) bUnCLabeled->set_image (*iUnCLabeled);
else if (!active_now && active_before) bUnCLabeled->set_image (*igUnCLabeled);
// Edited: set the right images
for (int i=0; i<2; i++) {
active_now = bEdited[i]->get_active();
active_before = buttons & (1 << (i+13)); //13,14
if ( active_now && !active_before) bEdited[i]->set_image (*iEdited[i]);
else if (!active_now && active_before) bEdited[i]->set_image (*igEdited[i]);
}
// RecentlySaved: set the right images
for (int i=0; i<2; i++) {
active_now = bRecentlySaved[i]->get_active();
active_before = buttons & (1 << (i+15));//15,16
if ( active_now && !active_before) bRecentlySaved[i]->set_image (*iRecentlySaved[i]);
else if (!active_now && active_before) bRecentlySaved[i]->set_image (*igRecentlySaved[i]);
}
fileBrowser->applyFilter (getFilter ());
_refreshProgressBar();
@@ -1005,39 +1112,88 @@ void FileCatalog::categoryButtonToggled (Gtk::ToggleButton* b) {
fileBrowser->setScrollPosition (hScrollPos[lastScrollPos], vScrollPos[lastScrollPos]);
}
for (int i=0; i<14; i++)
for (int i=0; i<18; i++)
bCateg[i].block (false);
}
BrowserFilter FileCatalog::getFilter () {
BrowserFilter filter;
BrowserFilter filter;
bool anyRankFilterActive = bUnRanked->get_active () || bRank[0]->get_active () || bRank[1]->get_active () || bRank[2]->get_active () || bRank[3]->get_active () || bRank[4]->get_active ();
bool anyCLabelFilterActive = bUnCLabeled->get_active () || bCLabel[0]->get_active ()|| bCLabel[1]->get_active ()|| bCLabel[2]->get_active ()|| bCLabel[3]->get_active ()|| bCLabel[4]->get_active ();
bool anyEditedFilterActive = bEdited[0]->get_active() || bEdited[1]->get_active();
bool anyRecentlySavedFilterActive = bRecentlySaved[0]->get_active() || bRecentlySaved[1]->get_active();
/*
* filter is setup in 2 steps
* Step 1: handle individual filters
*/
filter.showRanked[0] = bFilterClear->get_active() || bUnRanked->get_active () || bTrash->get_active () || \
bUnCLabeled->get_active () || bCLabel[0]->get_active ()|| bCLabel[1]->get_active ()|| bCLabel[2]->get_active ()|| bCLabel[3]->get_active ()|| bCLabel[4]->get_active ();
for (int i=1; i<=5; i++)
filter.showRanked[i] = bFilterClear->get_active() || bRank[i-1]->get_active () || bTrash->get_active () || \
bUnCLabeled->get_active () || bCLabel[0]->get_active ()|| bCLabel[1]->get_active ()|| bCLabel[2]->get_active ()|| bCLabel[3]->get_active ()|| bCLabel[4]->get_active ();
anyCLabelFilterActive || anyEditedFilterActive || anyRecentlySavedFilterActive;
filter.showCLabeled[0] = bFilterClear->get_active() || bUnCLabeled->get_active () || bTrash->get_active () || \
bUnRanked->get_active () || bRank[0]->get_active () || bRank[1]->get_active () || bRank[2]->get_active () || bRank[3]->get_active () || bRank[4]->get_active ();
for (int i=1; i<=5; i++)
anyRankFilterActive || anyEditedFilterActive || anyRecentlySavedFilterActive;
for (int i=1; i<=5; i++){
filter.showRanked[i] = bFilterClear->get_active() || bRank[i-1]->get_active () || bTrash->get_active () || \
anyCLabelFilterActive || anyEditedFilterActive || anyRecentlySavedFilterActive;
filter.showCLabeled[i] = bFilterClear->get_active() || bCLabel[i-1]->get_active () || bTrash->get_active () || \
bUnRanked->get_active () || bRank[0]->get_active () || bRank[1]->get_active () || bRank[2]->get_active () || bRank[3]->get_active () || bRank[4]->get_active ();
anyRankFilterActive || anyEditedFilterActive || anyRecentlySavedFilterActive;
}
// handle AND logic between rank and color labels:
// only when both filters for rank and color labels are selected
if ((bUnCLabeled->get_active () || bCLabel[0]->get_active ()|| bCLabel[1]->get_active ()|| bCLabel[2]->get_active ()|| bCLabel[3]->get_active ()|| bCLabel[4]->get_active ()) \
&& (bUnRanked->get_active () || bRank[0]->get_active () || bRank[1]->get_active () || bRank[2]->get_active () || bRank[3]->get_active () || bRank[4]->get_active ()) ){
for (int i=0; i<2; i++){
filter.showEdited[i] = bFilterClear->get_active() || bEdited[i]->get_active () || bTrash->get_active () || \
anyRankFilterActive || anyCLabelFilterActive || anyRecentlySavedFilterActive;
filter.showRanked[0] = bUnRanked->get_active ();
filter.showCLabeled[0] = bUnCLabeled->get_active ();
filter.showRecentlySaved[i] = bFilterClear->get_active() || bRecentlySaved[i]->get_active () || bTrash->get_active () || \
anyRankFilterActive || anyCLabelFilterActive || anyEditedFilterActive;
}
if( options.rtSettings.verbose ){
printf ("\n**************** FileCatalog::getFilter *** AFTER STEP 1 \n");
for (int i=0; i<=5; i++) printf ("filter.showRanked[%i] = %i\n",i,filter.showRanked[i]);
for (int i=0; i<=5; i++) printf ("filter.showCLabeled[%i] = %i\n",i,filter.showCLabeled[i]);
for (int i=0; i<2; i++) printf ("filter.showEdited[%i] = %i\n",i,filter.showEdited[i]);
for (int i=0; i<2; i++) printf ("filter.showRecentlySaved[%i] = %i\n",i,filter.showRecentlySaved[i]);
}
filter.multiselect = false;
/*
* Step 2
* handle the case when more than 1 filter is selected. This overrides values set in Step
* if no filters in a group are active, filter.show for each member of that group will be set to true
* otherwise they are set based on UI input
*/
if ((anyRankFilterActive && anyCLabelFilterActive ) || \
(anyRankFilterActive && anyEditedFilterActive ) || \
(anyRankFilterActive && anyRecentlySavedFilterActive ) || \
(anyCLabelFilterActive && anyEditedFilterActive ) || \
(anyCLabelFilterActive && anyRecentlySavedFilterActive ) || \
(anyEditedFilterActive && anyRecentlySavedFilterActive)){
filter.multiselect = true;
filter.showRanked[0] = anyRankFilterActive?bUnRanked->get_active ():true;
filter.showCLabeled[0] = anyCLabelFilterActive?bUnCLabeled->get_active ():true;
for (int i=1; i<=5; i++){
filter.showRanked[i] = bRank[i-1]->get_active ();
filter.showCLabeled[i] = bCLabel[i-1]->get_active ();
filter.showRanked[i] = anyRankFilterActive?bRank[i-1]->get_active ():true;
filter.showCLabeled[i] = anyCLabelFilterActive?bCLabel[i-1]->get_active ():true;
}
for (int i=0; i<2; i++){
filter.showEdited[i] = anyEditedFilterActive?bEdited[i]->get_active():true;
filter.showRecentlySaved[i] = anyRecentlySavedFilterActive?bRecentlySaved[i]->get_active():true;
}
if( options.rtSettings.verbose ){
printf ("\n**************** FileCatalog::getFilter *** AFTER STEP 2 \n");
for (int i=0; i<=5; i++) printf ("filter.showRanked[%i] = %i\n",i,filter.showRanked[i]);
for (int i=0; i<=5; i++) printf ("filter.showCLabeled[%i] = %i\n",i,filter.showCLabeled[i]);
for (int i=0; i<2; i++) printf ("filter.showEdited[%i] = %i\n",i,filter.showEdited[i]);
for (int i=0; i<2; i++) printf ("filter.showRecentlySaved[%i] = %i\n",i,filter.showRecentlySaved[i]);
printf ("filter.multiselect = %i\n",filter.multiselect);
}
}
filter.showTrash = bFilterClear->get_active() || bTrash->get_active ();
filter.showNotTrash = !bTrash->get_active ();
if (!filterPanel)
@@ -1371,6 +1527,9 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) {
if (!alt) {
switch(event->keyval) {
case GDK_grave:
categoryButtonToggled(bUnRanked);
return true;
case GDK_1:
categoryButtonToggled(bRank[0]);
return true;
@@ -1386,10 +1545,13 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) {
case GDK_5:
categoryButtonToggled(bRank[4]);
return true;
case GDK_grave:
categoryButtonToggled(bUnRanked);
case GDK_6:
categoryButtonToggled(bEdited[0]);
return true;
case GDK_7:
categoryButtonToggled(bEdited[1]);
return true;
case GDK_Return:
case GDK_KP_Enter:
FileCatalog::buttonBrowsePathPressed ();
@@ -1399,6 +1561,9 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) {
if (alt) {
switch(event->keyval) {
case GDK_grave:
categoryButtonToggled(bUnCLabeled);
return true;
case GDK_1:
categoryButtonToggled(bCLabel[0]);
return true;
@@ -1414,8 +1579,11 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) {
case GDK_5:
categoryButtonToggled(bCLabel[4]);
return true;
case GDK_grave:
categoryButtonToggled(bUnCLabeled);
case GDK_6:
categoryButtonToggled(bRecentlySaved[0]);
return true;
case GDK_7:
categoryButtonToggled(bRecentlySaved[1]);
return true;
}
}

View File

@@ -73,9 +73,15 @@ class FileCatalog : public Gtk::VBox,
Gtk::HBox* buttonBar;
Gtk::HBox* buttonBar2;
Gtk::HBox* fltrRankbox;
Gtk::HBox* fltrLabelbox;
Gtk::VBox* fltrVbox1;
Gtk::HBox* fltrEditedBox;
Gtk::HBox* fltrRecentlySavedBox;
Gtk::VBox* fltrVbox2;
Gtk::ToggleButton* tbLeftPanel_1;
Gtk::ToggleButton* tbRightPanel_1;
Gtk::ToggleButton* bFilterClear;
@@ -83,12 +89,17 @@ class FileCatalog : public Gtk::VBox,
Gtk::ToggleButton* bRank[5];
Gtk::ToggleButton* bUnCLabeled;
Gtk::ToggleButton* bCLabel[5];//color label
Gtk::ToggleButton* bEdited[2];
Gtk::ToggleButton* bRecentlySaved[2];
Gtk::ToggleButton* bTrash;
Gtk::ToggleButton* categoryButtons[14];
Gtk::ToggleButton* categoryButtons[18];
Gtk::ToggleButton* exifInfo;
sigc::connection bCateg[14];
Gtk::Image* iranked[5], *igranked[5];
Gtk::Image* iCLabeled[5], *igCLabeled[5];
sigc::connection bCateg[18];
Gtk::Image* iFilterClear, *igFilterClear;
Gtk::Image* iranked[5], *igranked[5], *iUnRanked, *igUnRanked;
Gtk::Image* iCLabeled[5], *igCLabeled[5], *iUnCLabeled, *igUnCLabeled;
Gtk::Image* iEdited[2], *igEdited[2];
Gtk::Image* iRecentlySaved[2], *igRecentlySaved[2];
Gtk::Image *iTrashEmpty, *iTrashFull;
//Gtk::Image *iRightArrow_red, *iRightArrow;
Gtk::Image *iRefreshWhite, *iRefreshRed;
@@ -101,8 +112,8 @@ class FileCatalog : public Gtk::VBox,
Gtk::Entry* Query;
Gtk::Button* buttonQueryClear;
double hScrollPos[14];
double vScrollPos[14];
double hScrollPos[18];
double vScrollPos[18];
int lastScrollPos;
Gtk::VBox* trashButtonBox;