From 84dfc93d91fa580d1a7024c052bdb65a31999ba6 Mon Sep 17 00:00:00 2001 From: Wyatt Olson Date: Sat, 24 Apr 2010 12:31:46 -0600 Subject: [PATCH] Added usability patch for trash icon --- rtdata/images/trash-show-full.png | Bin 0 -> 927 bytes rtgui/filebrowser.cc | 9 +++++++-- rtgui/filebrowser.h | 8 +++++++- rtgui/filecatalog.cc | 26 ++++++++++++++++++++++++-- rtgui/filecatalog.h | 9 ++++++--- 5 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 rtdata/images/trash-show-full.png diff --git a/rtdata/images/trash-show-full.png b/rtdata/images/trash-show-full.png new file mode 100644 index 0000000000000000000000000000000000000000..88f473a2b9c4c584bc967e3fe0d1eb503f932a14 GIT binary patch literal 927 zcmV;Q17Q4#P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igP} z4+{@xOV2(400SRML_t(I%Vm%|Y+Gd*hM)gG7au$194C(BIF6H`8s}ot04gAm5P=;i zt*AP5s1Raf0D)j&p%McUJ1P?^LaKxaDV1o;Ra~}G6a+T0W2Z?DzQl1+8m_#Zybz&j&&dE~`?|*XTirU-TQ}udXef7<^-u%hs>@%m&TuP);Q-h2E zSX^8*`%1j;j5;shpII{Be(Oy!l}MoLIu+MN0e4Czx=QiNtFLtq4jLco%6ol%eZ8vz zjEu)V$YkbUdgAd%&2wkZitT)Xqeg@Ac${{t#X-G}rfGP-Pq9?c!z1B`cB}Qts=ND{ z1Q0@ATwcl;w(a1$JG8tW!;w*LuB{QWhq<=)IhDpf&Gr$~$pnjYDMKiA5kUXv6{Fkh zFcyi>@An7e`oV7EAP-&6QfMdME*Mxm?-veI7aWAg=2&J)LBBb_M`V>I6)ScDuvORFZT$ zMX%Q-=!DCI9RM&HpI~8Oj=g$=#^C|IexHDOeA4N5kWxb+j<*m3Kn@BtUB|L4ws&22 zc6Kmyoo4HZy?PDDwkcO?6pO{<)_vdqUjj|j0J!hoX>NS|J;RR8OfrcSlFi~Km)?C3 zw_HI8fl$ZHe*^$hN@5e^v^yOxU;YT&u@MNe*({Y>4MR6DO%sI30JpV&!Dwvac`Ine z9#~!yhG8-`7GWw8XDDQ0nFi5lglJ@hjY5f`p&-4!_hM`^@#$TGeb3N$+ivB#>_%R+ zJ6+At4HYk^JpcM%CzFHB3@#FD$$Qp8v>Bkg^==gx7)tyb^RaONBcLTiR1|><;TFSzX9OjMbt@ajQs!r002ovPDHLkV1ndH Bs;&S4 literal 0 HcmV?d00001 diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index 12b7a940b..3298cd32c 100755 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -446,7 +446,8 @@ void FileBrowser::toTrashRequested (std::vector tbe) { tbe[i]->getThumbButtonSet()->setRank (tbe[i]->thumbnail->getRank()); tbe[i]->getThumbButtonSet()->setInTrash (true); } - } + } + trash_changed().emit(); applyFilter (filter); } @@ -460,7 +461,8 @@ void FileBrowser::fromTrashRequested (std::vector tbe) { tbe[i]->getThumbButtonSet()->setRank (tbe[i]->thumbnail->getRank()); tbe[i]->getThumbButtonSet()->setInTrash (false); } - } + } + trash_changed().emit(); applyFilter (filter); } @@ -579,3 +581,6 @@ void FileBrowser::redrawNeeded (LWButton* button) { queue_draw (); } +FileBrowser::type_trash_changed FileBrowser::trash_changed () { + return m_trash_changed; +} diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h index 33a2b1790..8b3e99a6d 100755 --- a/rtgui/filebrowser.h +++ b/rtgui/filebrowser.h @@ -45,6 +45,8 @@ struct FileBrowserIdleHelper { }; class FileBrowser : public ThumbBrowserBase, public LWButtonListener { + + typedef sigc::signal type_trash_changed; protected: @@ -75,6 +77,8 @@ class FileBrowser : public ThumbBrowserBase, public LWButtonListener { void fromTrashRequested (std::vector tbe); void rankingRequested (std::vector tbe, int rank); void notifySelectionListener (); + + type_trash_changed m_trash_changed; public: @@ -110,7 +114,9 @@ class FileBrowser : public ThumbBrowserBase, public LWButtonListener { void thumbRearrangementNeeded (); void _thumbRearrangementNeeded (); - void selectionChanged (); + void selectionChanged (); + + type_trash_changed trash_changed(); }; #endif diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 83c62395a..a567a8cbb 100755 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -104,14 +104,18 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb) : listener(NULL), fslist bRank[3]->set_tooltip_text (M("FILEBROWSER_SHOWRANK4HINT")); bRank[4]->set_tooltip_text (M("FILEBROWSER_SHOWRANK5HINT")); 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->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_tooltip_text (M("FILEBROWSER_SHOWTRASHHINT")); 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 (*(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[1] = bUnRanked; @@ -746,7 +750,17 @@ void FileCatalog::emptyTrash () { if (((FileBrowserEntry*)t[i])->thumbnail->getStage()==1) toDel.push_back (((FileBrowserEntry*)t[i])); deleteRequested (toDel); + trashChanged(); } + +bool FileCatalog::trashIsEmpty () { + const std::vector t = fileBrowser->getEntries (); + for (int i=0; ithumbnail->getStage()==1) + return false; + + return true; +} void FileCatalog::zoomIn () { @@ -795,3 +809,11 @@ void FileCatalog::setFilterPanel (FilterPanel* fpanel) { filterPanel->set_sensitive (false); filterPanel->setFilterPanelListener (this); } +void FileCatalog::trashChanged () { + if (trashIsEmpty()) { + bTrash->set_image(*iTrashEmpty); + } + else { + bTrash->set_image(*iTrashFull); + } +} diff --git a/rtgui/filecatalog.h b/rtgui/filecatalog.h index 4e08ac32e..341f10df0 100755 --- a/rtgui/filecatalog.h +++ b/rtgui/filecatalog.h @@ -98,7 +98,8 @@ class FileCatalog : public Gtk::VBox, Gtk::ToggleButton* categoryButtons[8]; Gtk::ToggleButton* exifInfo; sigc::connection bCateg[8]; - Gtk::Image* iranked[5], *igranked[5]; + Gtk::Image* iranked[5], *igranked[5]; + Gtk::Image *iTrashEmpty, *iTrashFull; double hScrollPos[8]; double vScrollPos[8]; @@ -135,7 +136,8 @@ class FileCatalog : public Gtk::VBox, void addAndOpenFile (const Glib::ustring& fname); void checkAndAddFile (Glib::RefPtr info); std::vector getFileList (); - BrowserFilter getFilter (); + BrowserFilter getFilter (); + void trashChanged (); public: CoarsePanel* coarsePanel; @@ -166,7 +168,8 @@ class FileCatalog : public Gtk::VBox, void developRequested (std::vector tbe); void renameRequested (std::vector tbe); void selectionChanged (std::vector tbe); - void emptyTrash (); + void emptyTrash (); + bool trashIsEmpty (); void setFileSelectionListener (FileSelectionListener* l) { listener = l; } void setFileSelectionChangeListener (FileSelectionChangeListener* l) { fslistener = l; }