API to add system-specific file chooser shortcuts
This commit is contained in:
parent
09e0acfccd
commit
2c9666e0ee
@ -28,6 +28,7 @@
|
|||||||
#include <pangomm/fontdescription.h>
|
#include <pangomm/fontdescription.h>
|
||||||
|
|
||||||
#include <gtkmm/container.h>
|
#include <gtkmm/container.h>
|
||||||
|
#include <gtkmm/filechooser.h>
|
||||||
#include <gtkmm/treeview.h>
|
#include <gtkmm/treeview.h>
|
||||||
#include <gdkmm/window.h> /* for WMDecoration */
|
#include <gdkmm/window.h> /* for WMDecoration */
|
||||||
#include <gdkmm/pixbuf.h>
|
#include <gdkmm/pixbuf.h>
|
||||||
@ -170,6 +171,8 @@ namespace Gtkmm2ext {
|
|||||||
* use a std::string
|
* use a std::string
|
||||||
*/
|
*/
|
||||||
LIBGTKMM2EXT_API std::string markup_escape_text (std::string const& s);
|
LIBGTKMM2EXT_API std::string markup_escape_text (std::string const& s);
|
||||||
|
|
||||||
|
LIBGTKMM2EXT_API void add_volume_shortcuts (Gtk::FileChooser& c);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __gtkmm2ext_utils_h__ */
|
#endif /* __gtkmm2ext_utils_h__ */
|
||||||
|
@ -973,3 +973,31 @@ Gtkmm2ext::markup_escape_text (std::string const& s)
|
|||||||
{
|
{
|
||||||
return Glib::Markup::escape_text (s);
|
return Glib::Markup::escape_text (s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Gtkmm2ext::add_volume_shortcuts (Gtk::FileChooser& c)
|
||||||
|
{
|
||||||
|
#ifdef __APPLE__
|
||||||
|
try {
|
||||||
|
/* This is a first order approach, listing all mounted volumes (incl network).
|
||||||
|
* One could use `diskutil` or `mount` to query local disks only, or
|
||||||
|
* something even fancier if deemed appropriate.
|
||||||
|
*/
|
||||||
|
Glib::Dir dir("/Volumes");
|
||||||
|
for (Glib::DirIterator di = dir.begin(); di != dir.end(); di++) {
|
||||||
|
string fullpath = Glib::build_filename ("/Volumes", *di);
|
||||||
|
if (!Glib::file_test (fullpath, Glib::FILE_TEST_IS_DIR)) continue;
|
||||||
|
|
||||||
|
try { /* add_shortcut_folder throws an exception if the folder being added already has a shortcut */
|
||||||
|
c.add_shortcut_folder (fullpath);
|
||||||
|
}
|
||||||
|
catch (Glib::Error& e) {
|
||||||
|
std::cerr << "add_shortcut_folder() threw Glib::Error: " << e.what() << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Glib::FileError& e) {
|
||||||
|
std::cerr << "listing /Volumnes failed: " << e.what() << std::endl;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user