From b89cd282e012ec0d82bd80e145b8db2fa32a74a3 Mon Sep 17 00:00:00 2001 From: Adam Reichold Date: Fri, 13 Nov 2015 20:08:25 +0100 Subject: [PATCH] Add buttons to the file browser preferences to make the list of extensions user-sortable. --- rtdata/languages/default | 2 ++ rtgui/preferences.cc | 40 ++++++++++++++++++++++++++++++++++++++++ rtgui/preferences.h | 4 ++++ 3 files changed, 46 insertions(+) diff --git a/rtdata/languages/default b/rtdata/languages/default index dbcb29a6a..9b23d2e3b 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1001,6 +1001,8 @@ PREFERENCES_PARSEDEXT;Parsed Extensions PREFERENCES_PARSEDEXTADD;Add extension PREFERENCES_PARSEDEXTADDHINT;Add entered extension to the list. PREFERENCES_PARSEDEXTDELHINT;Delete selected extension from the list. +PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list. +PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. PREFERENCES_PREVDEMO;Preview Demosaic Method PREFERENCES_PREVDEMO_FAST;Fast PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom: diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index f6feef35f..739f833b1 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -1188,12 +1188,20 @@ Gtk::Widget* Preferences::getFileBrowserPanel () hb0->pack_start (*extension); addExt = Gtk::manage( new Gtk::Button () ); delExt = Gtk::manage( new Gtk::Button () ); + moveExtUp = Gtk::manage( new Gtk::Button () ); + moveExtDown = Gtk::manage( new Gtk::Button () ); addExt->set_tooltip_text (M("PREFERENCES_PARSEDEXTADDHINT")); delExt->set_tooltip_text (M("PREFERENCES_PARSEDEXTDELHINT")); + moveExtUp->set_tooltip_text (M("PREFERENCES_PARSEDEXTUPHINT")); + moveExtDown->set_tooltip_text (M("PREFERENCES_PARSEDEXTDOWNHINT")); Gtk::Image* addExtImg = Gtk::manage( new RTImage ("list-add-small.png") ); Gtk::Image* delExtImg = Gtk::manage( new RTImage ("list-remove-red-small.png") ); addExt->add (*addExtImg); delExt->add (*delExtImg); + moveExtUp->set_label ("↑"); // TODO: Add arrow up image... + moveExtDown->set_label ("↓"); // TODO: Add arrow down image... + hb0->pack_end (*moveExtDown, Gtk::PACK_SHRINK, 4); + hb0->pack_end (*moveExtUp, Gtk::PACK_SHRINK, 4); hb0->pack_end (*delExt, Gtk::PACK_SHRINK, 4); hb0->pack_end (*addExt, Gtk::PACK_SHRINK, 4); extensions = Gtk::manage( new Gtk::TreeView () ); @@ -1264,6 +1272,8 @@ Gtk::Widget* Preferences::getFileBrowserPanel () addExt->signal_clicked().connect( sigc::mem_fun(*this, &Preferences::addExtPressed) ); delExt->signal_clicked().connect( sigc::mem_fun(*this, &Preferences::delExtPressed) ); + moveExtUp->signal_clicked().connect( sigc::mem_fun(*this, &Preferences::moveExtUpPressed) ); + moveExtDown->signal_clicked().connect( sigc::mem_fun(*this, &Preferences::moveExtDownPressed) ); extension->signal_activate().connect( sigc::mem_fun(*this, &Preferences::addExtPressed) ); clearThumbnails->signal_clicked().connect( sigc::mem_fun(*this, &Preferences::clearThumbImagesPressed) ); clearProfiles->signal_clicked().connect( sigc::mem_fun(*this, &Preferences::clearProfilesPressed) ); @@ -2082,6 +2092,36 @@ void Preferences::delExtPressed () extensionModel->erase (extensions->get_selection()->get_selected ()); } +void Preferences::moveExtUpPressed () +{ + const Glib::RefPtr selection = extensions->get_selection (); + if (!selection) + return; + + const Gtk::TreeModel::iterator selected = selection->get_selected (); + if (!selected || selected == extensionModel->children ().begin ()) + return; + + Gtk::TreeModel::iterator previous = selected; + --previous; + extensionModel->iter_swap (selected, previous); +} + +void Preferences::moveExtDownPressed () +{ + const Glib::RefPtr selection = extensions->get_selection (); + if (!selection) + return; + + const Gtk::TreeModel::iterator selected = selection->get_selected (); + if (!selected) + return; + + Gtk::TreeModel::iterator next = selected; + if (++next) + extensionModel->iter_swap (selected, next); +} + void Preferences::clearProfilesPressed () { diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 76abd0a19..ee885c568 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -144,6 +144,8 @@ protected: Gtk::TreeView* extensions; Gtk::Button* addExt; Gtk::Button* delExt; + Gtk::Button* moveExtUp; + Gtk::Button* moveExtDown; Gtk::CheckButton* overlayedFileNames; Gtk::CheckButton* filmStripOverlayedFileNames; Gtk::CheckButton* sameThumbSize; @@ -242,6 +244,8 @@ public: void selectStartupDir (); void addExtPressed (); void delExtPressed (); + void moveExtUpPressed (); + void moveExtDownPressed (); void darkFrameChanged (); void flatFieldChanged (); void clearProfilesPressed ();