summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Valavanis <valavanisalex@gmail.com>2012-05-27 10:22:19 +0000
committerAlex Valavanis <valavanisalex@gmail.com>2012-05-27 10:22:19 +0000
commit2feaabc7da2ba0fdf130dc06f87a77f3730ffba9 (patch)
tree7aeeaffa3d864bd9947bfede249b79cf2bd93fe8
parentBuild with GSEAL_ENABLE (diff)
downloadinkscape-2feaabc7da2ba0fdf130dc06f87a77f3730ffba9.tar.gz
inkscape-2feaabc7da2ba0fdf130dc06f87a77f3730ffba9.zip
file dialog fixes for GTK+ 3
(bzr r11423)
-rw-r--r--src/ui/dialog/filedialogimpl-gtkmm.cpp90
1 files changed, 79 insertions, 11 deletions
diff --git a/src/ui/dialog/filedialogimpl-gtkmm.cpp b/src/ui/dialog/filedialogimpl-gtkmm.cpp
index 6cdd202bb..b14da08be 100644
--- a/src/ui/dialog/filedialogimpl-gtkmm.cpp
+++ b/src/ui/dialog/filedialogimpl-gtkmm.cpp
@@ -735,35 +735,63 @@ FileOpenDialogImplGtk::~FileOpenDialogImplGtk()
void FileOpenDialogImplGtk::createFilterMenu()
{
if (_dialogType == EXE_TYPES) {
+#if WITH_GTKMM_3_0
+ Glib::RefPtr<Gtk::FileFilter> allFilter = Gtk::FileFilter::create();
+ allFilter->set_name(_("All Files"));
+ allFilter->add_pattern("*");
+#else
Gtk::FileFilter allFilter;
allFilter.set_name(_("All Files"));
- extensionMap[Glib::ustring(_("All Files"))]=NULL;
allFilter.add_pattern("*");
+#endif
+ extensionMap[Glib::ustring(_("All Files"))]=NULL;
add_filter(allFilter);
} else {
+#if WITH_GTKMM_3_0
+ Glib::RefPtr<Gtk::FileFilter> allInkscapeFilter = Gtk::FileFilter::create();
+ allInkscapeFilter->set_name(_("All Inkscape Files"));
+
+ Glib::RefPtr<Gtk::FileFilter> allFilter = Gtk::FileFilter::create();
+ allFilter->set_name(_("All Files"));
+ allFilter->add_pattern("*");
+
+ Glib::RefPtr<Gtk::FileFilter> allImageFilter = Gtk::FileFilter::create();
+ allImageFilter->set_name(_("All Images"));
+
+ Glib::RefPtr<Gtk::FileFilter> allVectorFilter = Gtk::FileFilter::create();
+ allVectorFilter->set_name(_("All Vectors"));
+
+ Glib::RefPtr<Gtk::FileFilter> allBitmapFilter = Gtk::FileFilter::create();
+ allBitmapFilter->set_name(_("All Bitmaps"));
+#else
Gtk::FileFilter allInkscapeFilter;
allInkscapeFilter.set_name(_("All Inkscape Files"));
+
+ Gtk::FileFilter allFilter;
+ allFilter.set_name(_("All Files"));
+ allFilter.add_pattern("*");
+
+ Gtk::FileFilter allImageFilter;
+ allImageFilter.set_name(_("All Images"));
+
+ Gtk::FileFilter allVectorFilter;
+ allVectorFilter.set_name(_("All Vectors"));
+
+ Gtk::FileFilter allBitmapFilter;
+ allBitmapFilter.set_name(_("All Bitmaps"));
+#endif
extensionMap[Glib::ustring(_("All Inkscape Files"))]=NULL;
add_filter(allInkscapeFilter);
- Gtk::FileFilter allFilter;
- allFilter.set_name(_("All Files"));
extensionMap[Glib::ustring(_("All Files"))]=NULL;
- allFilter.add_pattern("*");
add_filter(allFilter);
- Gtk::FileFilter allImageFilter;
- allImageFilter.set_name(_("All Images"));
extensionMap[Glib::ustring(_("All Images"))]=NULL;
add_filter(allImageFilter);
- Gtk::FileFilter allVectorFilter;
- allVectorFilter.set_name(_("All Vectors"));
extensionMap[Glib::ustring(_("All Vectors"))]=NULL;
add_filter(allVectorFilter);
- Gtk::FileFilter allBitmapFilter;
- allBitmapFilter.set_name(_("All Bitmaps"));
extensionMap[Glib::ustring(_("All Bitmaps"))]=NULL;
add_filter(allBitmapFilter);
@@ -783,17 +811,31 @@ void FileOpenDialogImplGtk::createFilterMenu()
Glib::ustring extension = imod->get_extension();
fileDialogExtensionToPattern(upattern, extension);
- Gtk::FileFilter filter;
Glib::ustring uname(_(imod->get_filetypename()));
+
+#if WITH_GTKMM_3_0
+ Glib::RefPtr<Gtk::FileFilter> filter = Gtk::FileFilter::create();
+ filter->set_name(uname);
+ filter->add_pattern(upattern);
+#else
+ Gtk::FileFilter filter;
filter.set_name(uname);
filter.add_pattern(upattern);
+#endif
+
add_filter(filter);
extensionMap[uname] = imod;
//g_message("ext %s:%s '%s'\n", ioext->name, ioext->mimetype, upattern.c_str());
+#if WITH_GTKMM_3_0
+ allInkscapeFilter->add_pattern(upattern);
+ if ( strncmp("image", imod->get_mimetype(), 5)==0 )
+ allImageFilter->add_pattern(upattern);
+#else
allInkscapeFilter.add_pattern(upattern);
if ( strncmp("image", imod->get_mimetype(), 5)==0 )
allImageFilter.add_pattern(upattern);
+#endif
// uncomment this to find out all mime types supported by Inkscape import/open
// g_print ("%s\n", imod->get_mimetype());
@@ -814,9 +856,17 @@ void FileOpenDialogImplGtk::createFilterMenu()
strncmp("image/x-tga", imod->get_mimetype(), 11)==0 ||
strncmp("image/x-pcx", imod->get_mimetype(), 11)==0
)
+#if WITH_GTKMM_3_0
+ allBitmapFilter->add_pattern(upattern);
+#else
allBitmapFilter.add_pattern(upattern);
+#endif
else
+#if WITH_GTKMM_3_0
+ allVectorFilter->add_pattern(upattern);
+#else
allVectorFilter.add_pattern(upattern);
+#endif
}
}
return;
@@ -889,7 +939,20 @@ FileOpenDialogImplGtk::getFilename (void)
*/
std::vector<Glib::ustring>FileOpenDialogImplGtk::getFilenames()
{
+#if WITH_GTKMM_3_0
+ std::vector<std::string> result_tmp = get_filenames();
+
+ // Copy filenames to a vector of type Glib::ustring
+ std::vector<Glib::ustring> result;
+
+ for (std::vector<std::string>::iterator it = result_tmp.begin();
+ it != result_tmp.end(); it++)
+ result.push_back(*it);
+
+#else
std::vector<Glib::ustring> result = get_filenames();
+#endif
+
#ifdef WITH_GNOME_VFS
if (result.empty() && gnome_vfs_initialized())
result = get_uris();
@@ -1080,8 +1143,13 @@ void FileSaveDialogImplGtk::fileTypeChangedCallback()
//g_message("selected: %s\n", type.name.c_str());
extension = type.extension;
+#if WITH_GTKMM_3_0
+ Glib::RefPtr<Gtk::FileFilter> filter = Gtk::FileFilter::create();
+ filter->add_pattern(type.pattern);
+#else
Gtk::FileFilter filter;
filter.add_pattern(type.pattern);
+#endif
set_filter(filter);
updateNameAndExtension();