Added usability patch for trash icon

This commit is contained in:
Wyatt Olson 2010-04-24 12:31:46 -06:00
parent 7b0290328b
commit 84dfc93d91
5 changed files with 44 additions and 8 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 927 B

View File

@ -447,6 +447,7 @@ void FileBrowser::toTrashRequested (std::vector<FileBrowserEntry*> tbe) {
tbe[i]->getThumbButtonSet()->setInTrash (true); tbe[i]->getThumbButtonSet()->setInTrash (true);
} }
} }
trash_changed().emit();
applyFilter (filter); applyFilter (filter);
} }
@ -461,6 +462,7 @@ void FileBrowser::fromTrashRequested (std::vector<FileBrowserEntry*> tbe) {
tbe[i]->getThumbButtonSet()->setInTrash (false); tbe[i]->getThumbButtonSet()->setInTrash (false);
} }
} }
trash_changed().emit();
applyFilter (filter); applyFilter (filter);
} }
@ -579,3 +581,6 @@ void FileBrowser::redrawNeeded (LWButton* button) {
queue_draw (); queue_draw ();
} }
FileBrowser::type_trash_changed FileBrowser::trash_changed () {
return m_trash_changed;
}

View File

@ -46,6 +46,8 @@ struct FileBrowserIdleHelper {
class FileBrowser : public ThumbBrowserBase, public LWButtonListener { class FileBrowser : public ThumbBrowserBase, public LWButtonListener {
typedef sigc::signal<void> type_trash_changed;
protected: protected:
Gtk::MenuItem* rank[6]; Gtk::MenuItem* rank[6];
@ -76,6 +78,8 @@ class FileBrowser : public ThumbBrowserBase, public LWButtonListener {
void rankingRequested (std::vector<FileBrowserEntry*> tbe, int rank); void rankingRequested (std::vector<FileBrowserEntry*> tbe, int rank);
void notifySelectionListener (); void notifySelectionListener ();
type_trash_changed m_trash_changed;
public: public:
FileBrowser (); FileBrowser ();
@ -111,6 +115,8 @@ class FileBrowser : public ThumbBrowserBase, public LWButtonListener {
void _thumbRearrangementNeeded (); void _thumbRearrangementNeeded ();
void selectionChanged (); void selectionChanged ();
type_trash_changed trash_changed();
}; };
#endif #endif

View File

@ -105,13 +105,17 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb) : listener(NULL), fslist
bRank[4]->set_tooltip_text (M("FILEBROWSER_SHOWRANK5HINT")); bRank[4]->set_tooltip_text (M("FILEBROWSER_SHOWRANK5HINT"));
buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK); buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK);
iTrashEmpty = new Gtk::Image(argv0+"/images/trash-show-empty.png");
iTrashFull = new Gtk::Image(argv0+"/images/trash-show-full.png");
bTrash = new Gtk::ToggleButton (); bTrash = new Gtk::ToggleButton ();
bTrash->set_image (*(new Gtk::Image (Gtk::StockID("gtk-delete"), Gtk::ICON_SIZE_SMALL_TOOLBAR))); bTrash->set_image (*iTrashEmpty);
bTrash->set_relief (Gtk::RELIEF_NONE); bTrash->set_relief (Gtk::RELIEF_NONE);
bTrash->set_tooltip_text (M("FILEBROWSER_SHOWTRASHHINT")); bTrash->set_tooltip_text (M("FILEBROWSER_SHOWTRASHHINT"));
bCateg[7] = bTrash->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bTrash)); bCateg[7] = bTrash->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bTrash));
buttonBar->pack_start (*bTrash, Gtk::PACK_SHRINK); buttonBar->pack_start (*bTrash, Gtk::PACK_SHRINK);
buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK); buttonBar->pack_start (*(new Gtk::VSeparator), Gtk::PACK_SHRINK);
fileBrowser->trash_changed().connect( sigc::mem_fun(*this, &FileCatalog::trashChanged) );
categoryButtons[0] = bDir; categoryButtons[0] = bDir;
categoryButtons[1] = bUnRanked; categoryButtons[1] = bUnRanked;
@ -746,6 +750,16 @@ void FileCatalog::emptyTrash () {
if (((FileBrowserEntry*)t[i])->thumbnail->getStage()==1) if (((FileBrowserEntry*)t[i])->thumbnail->getStage()==1)
toDel.push_back (((FileBrowserEntry*)t[i])); toDel.push_back (((FileBrowserEntry*)t[i]));
deleteRequested (toDel); deleteRequested (toDel);
trashChanged();
}
bool FileCatalog::trashIsEmpty () {
const std::vector<ThumbBrowserEntryBase*> t = fileBrowser->getEntries ();
for (int i=0; i<t.size(); i++)
if (((FileBrowserEntry*)t[i])->thumbnail->getStage()==1)
return false;
return true;
} }
void FileCatalog::zoomIn () { void FileCatalog::zoomIn () {
@ -795,3 +809,11 @@ void FileCatalog::setFilterPanel (FilterPanel* fpanel) {
filterPanel->set_sensitive (false); filterPanel->set_sensitive (false);
filterPanel->setFilterPanelListener (this); filterPanel->setFilterPanelListener (this);
} }
void FileCatalog::trashChanged () {
if (trashIsEmpty()) {
bTrash->set_image(*iTrashEmpty);
}
else {
bTrash->set_image(*iTrashFull);
}
}

View File

@ -99,6 +99,7 @@ class FileCatalog : public Gtk::VBox,
Gtk::ToggleButton* exifInfo; Gtk::ToggleButton* exifInfo;
sigc::connection bCateg[8]; sigc::connection bCateg[8];
Gtk::Image* iranked[5], *igranked[5]; Gtk::Image* iranked[5], *igranked[5];
Gtk::Image *iTrashEmpty, *iTrashFull;
double hScrollPos[8]; double hScrollPos[8];
double vScrollPos[8]; double vScrollPos[8];
@ -136,6 +137,7 @@ class FileCatalog : public Gtk::VBox,
void checkAndAddFile (Glib::RefPtr<Gio::File> info); void checkAndAddFile (Glib::RefPtr<Gio::File> info);
std::vector<Glib::ustring> getFileList (); std::vector<Glib::ustring> getFileList ();
BrowserFilter getFilter (); BrowserFilter getFilter ();
void trashChanged ();
public: public:
CoarsePanel* coarsePanel; CoarsePanel* coarsePanel;
@ -167,6 +169,7 @@ class FileCatalog : public Gtk::VBox,
void renameRequested (std::vector<FileBrowserEntry*> tbe); void renameRequested (std::vector<FileBrowserEntry*> tbe);
void selectionChanged (std::vector<Thumbnail*> tbe); void selectionChanged (std::vector<Thumbnail*> tbe);
void emptyTrash (); void emptyTrash ();
bool trashIsEmpty ();
void setFileSelectionListener (FileSelectionListener* l) { listener = l; } void setFileSelectionListener (FileSelectionListener* l) { listener = l; }
void setFileSelectionChangeListener (FileSelectionChangeListener* l) { fslistener = l; } void setFileSelectionChangeListener (FileSelectionChangeListener* l) { fslistener = l; }