Hi,
I worked a bit with a custom file writer and would like to make it the
default choice in Data Manager's "Save..." dialog.
I understood that the Qt file type list is constructed by QmitkIOUtil
which makes use of mitk::FileWriterSelector.
When setting a high-enough "ranking" and an appropriate "base data type"
for my writer, it gets correctly selected as default and current
selection by the FileWriterSelector class. QmitkIOUtil will however
always select the first item in its file type list, completely ignoring
what the FileWriterSelector determined as default. To reproduce this
easily, you could manipulate mitk::ImageVtkXmlIO, for example.
Question: is the behavior of the Qt dialog wanted? Or could we adapt it
to match the "decision" of the FileWriterSelector? Attached patch
(applies to 3fc812cc) is what I would have in mind.
Kind regards,
Daniel
--
Dr. Daniel Maleike, Mint Medical GmbH
Friedrich-Ebert-Straße 2, 69221 Dossenheim/Heidelberg
Geschäftsführer: Dr. Matthias Baumhauer, Registergericht Mannheim, HRB 709351
diff --git a/Modules/QtWidgets/src/QmitkIOUtil.cpp
b/Modules/QtWidgets/src/QmitkIOUtil.cpp
index 4c9ba02..82c4e57 100644
--- a/Modules/QtWidgets/src/QmitkIOUtil.cpp
+++ b/Modules/QtWidgets/src/QmitkIOUtil.cpp
@@ -434,6 +434,8 @@ struct QmitkIOUtil::SaveFilter::Impl
m_MimeTypes.push_back(mimeType);
m_FilterStrings.push_back(filter);
}
+
+ m_DefaultExtension = QString::fromStdString(
m_SaveInfo.m_WriterSelector.GetDefault().GetMimeType().GetExtensions().front()
);
}
const mitk::IOUtil::SaveInfo m_SaveInfo;
@@ -499,7 +501,14 @@ QString QmitkIOUtil::SaveFilter::GetDefaultFilter() const
{
if (d->m_FilterStrings.size() > 1)
{
- return d->m_FilterStrings.at(1);
+ mitk::MimeType defaultMimeType =
d->m_SaveInfo.m_WriterSelector.GetDefault().GetMimeType();
+ std::vector<mitk::MimeType>::iterator iter = std::find(
d->m_MimeTypes.begin(), d->m_MimeTypes.end(), defaultMimeType );
+ size_t index(1); // fallback to first element after "All (*.*)"
+ if (iter != d->m_MimeTypes.end())
+ {
+ index = std::distance(d->m_MimeTypes.begin(), iter);
+ }
+ return d->m_FilterStrings.at(index);
}
else if (d->m_FilterStrings.size() > 0)
{
------------------------------------------------------------------------------
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users