Files
rawTherapee/rtgui/recentbrowser.cc.old
2010-01-01 11:52:33 +00:00

60 lines
1.9 KiB
C++
Executable File

#include <recentbrowser.h>
RecentBrowser::RecentBrowser () : listener (NULL) {
scrollw = Gtk::manage (new Gtk::ScrolledWindow ());
scrollw->set_policy (Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC);
Gtk::Frame* frame = Gtk::manage (new Gtk::Frame ("Recent Folders"));
frame->add (*scrollw);
pack_start (*frame);
treeView = Gtk::manage (new Gtk::TreeView ());
scrollw->add (*treeView);
recentModel = Gtk::ListStore::create (recentColumns);
treeView->set_model (recentModel);
treeView->set_headers_visible (false);
Gtk::CellRendererText *crt = Gtk::manage (new Gtk::CellRendererText());
Gtk::TreeView::Column *col = Gtk::manage (new Gtk::TreeView::Column (""));
col->pack_start (*crt, true);
col->add_attribute (crt->property_text (), recentColumns.dir);
col->set_sizing (Gtk::TREE_VIEW_COLUMN_FIXED);
crt->set_property ("xalign", 1.0);
treeView->append_column (*col);
treeView->set_tooltip_column (0);
treeView->get_selection()->signal_changed().connect(sigc::mem_fun(*this, &RecentBrowser::selectionChanged));
show_all ();
}
void RecentBrowser::selectionChanged () {
Glib::RefPtr<Gtk::TreeSelection> selection = treeView->get_selection();
Gtk::TreeModel::iterator iter = selection->get_selected();
if (iter && listener)
listener->selectDir (iter->get_value (recentColumns.dir));
}
void RecentBrowser::dirSelected (const Glib::ustring& dirname, const Glib::ustring& openfile) {
// check if the dirname is already in the list. If yes, remove it.
Gtk::TreeModel::iterator iter = recentModel->children ().begin();
while (iter != recentModel->children().end()) {
if (iter->get_value (recentColumns.dir) == dirname) {
recentModel->erase (iter);
break;
}
iter++;
}
// append dirname to the top of the list
iter = recentModel->prepend ();
iter->set_value (recentColumns.dir, dirname);
}