--Bug fixes:

-Fix path bugs when creating dialogs on Mac.
 -Add new setting for path when creating palette from image.
This commit is contained in:
Person
2017-04-04 16:21:58 -07:00
parent 2f54215e65
commit 2773ef27f7
9 changed files with 99 additions and 30 deletions

View File

@ -51,8 +51,6 @@ Fractorium::Fractorium(QWidget* p)
#endif
m_Settings = FractoriumSettings::Instance();
m_QssDialog = new QssDialog(this);
m_FileDialog = nullptr;//Use lazy instantiation upon first use.
m_FolderDialog = nullptr;
m_FinalRenderDialog = new FractoriumFinalRenderDialog(this);
m_OptionsDialog = new FractoriumOptionsDialog(this);
m_VarDialog = new FractoriumVariationsDialog(this);
@ -509,6 +507,8 @@ void Fractorium::SetFixedTableHeader(QHeaderView* header, QHeaderView::ResizeMod
/// <returns>The filename selected</returns>
QStringList Fractorium::SetupOpenXmlDialog()
{
#ifndef __APPLE__
//Lazy instantiate since it takes a long time.
if (!m_FileDialog)
{
@ -534,6 +534,15 @@ QStringList Fractorium::SetupOpenXmlDialog()
m_Settings->OpenFolder(QFileInfo(filenames[0]).canonicalPath());
}
#else
auto defaultFilter(m_Settings->OpenXmlExt());
auto filenames = QFileDialog::getOpenFileNames(this, tr("Open Flame"), m_Settings->OpenFolder(), tr("Flame Files (*.flam3 *.flame *.xml)"), &defaultFilter);
m_Settings->OpenXmlExt(defaultFilter);
if (!filenames.empty())
m_Settings->OpenFolder(QFileInfo(filenames[0]).canonicalPath());
#endif
return filenames;
}
@ -545,6 +554,8 @@ QStringList Fractorium::SetupOpenXmlDialog()
/// <returns>The filename selected</returns>
QString Fractorium::SetupSaveXmlDialog(const QString& defaultFilename)
{
#ifndef __APPLE__
//Lazy instantiate since it takes a long time.
//QS
if (!m_FileDialog)
@ -553,9 +564,6 @@ QString Fractorium::SetupSaveXmlDialog(const QString& defaultFilename)
m_FileDialog->setViewMode(QFileDialog::List);
}
if (!m_FileDialog)
return "";
QString filename;
m_FileDialog->disconnect(SIGNAL(filterSelected(const QString&)));
connect(m_FileDialog, &QFileDialog::filterSelected, [&](const QString & filter) { m_Settings->SaveXmlExt(filter); });
@ -583,6 +591,11 @@ QString Fractorium::SetupSaveXmlDialog(const QString& defaultFilename)
}
}
#else
auto defaultFilter(m_Settings->SaveXmlExt());
auto filename = QFileDialog::getSaveFileName(this, tr("Save flame as xml"), m_Settings->SaveFolder() + "/" + defaultFilename, tr("Flam3 (*.flam3);;Flame (*.flame);;Xml (*.xml)"), &defaultFilter);
m_Settings->SaveXmlExt(defaultFilter);
#endif
return filename;
}
@ -594,6 +607,8 @@ QString Fractorium::SetupSaveXmlDialog(const QString& defaultFilename)
/// <returns>The filename selected</returns>
QString Fractorium::SetupSaveImageDialog(const QString& defaultFilename)
{
#ifndef __APPLE__
//Lazy instantiate since it takes a long time.
if (!m_FileDialog)
{
@ -601,9 +616,6 @@ QString Fractorium::SetupSaveImageDialog(const QString& defaultFilename)
m_FileDialog->setViewMode(QFileDialog::List);
}
if (!m_FileDialog)
return "";
QString filename;
m_FileDialog->disconnect(SIGNAL(filterSelected(const QString&)));
connect(m_FileDialog, &QFileDialog::filterSelected, [&](const QString & filter) { m_Settings->SaveImageExt(filter); });
@ -622,6 +634,11 @@ QString Fractorium::SetupSaveImageDialog(const QString& defaultFilename)
if (m_FileDialog->exec() == QDialog::Accepted)
filename = m_FileDialog->selectedFiles().value(0);
#else
auto defaultFilter(m_Settings->SaveImageExt());
auto filename = QFileDialog::getSaveFileName(this, tr("Save image"), m_Settings->SaveFolder() + "/" + defaultFilename, tr("Jpeg (*.jpg);;Png (*.png);;Bmp (*.bmp)"));
m_Settings->SaveImageExt(defaultFilter);
#endif
return filename;
}
@ -632,6 +649,8 @@ QString Fractorium::SetupSaveImageDialog(const QString& defaultFilename)
/// <returns>The folder selected, with '/' appended to the end</returns>
QString Fractorium::SetupSaveFolderDialog()
{
#ifndef __APPLE__
//Lazy instantiate since it takes a long time.
if (!m_FolderDialog)
{
@ -639,9 +658,6 @@ QString Fractorium::SetupSaveFolderDialog()
m_FolderDialog->setViewMode(QFileDialog::List);
}
if (!m_FolderDialog)
return "";
QString filename;
//This must come first because it clears various internal states which allow the file text to be properly set.
//This is most likely a bug in QFileDialog.
@ -658,6 +674,15 @@ QString Fractorium::SetupSaveFolderDialog()
filename = MakeEnd(m_FolderDialog->selectedFiles().value(0), '/');
}
#else
auto filename = QFileDialog::getExistingDirectory(this, tr("Save to folder"),
m_Settings->SaveFolder(),
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
if (filename.size() > 0)
filename = MakeEnd(filename, '/');
#endif
return filename;
}