mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-02-01 10:30:08 -05:00
--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:
parent
2f54215e65
commit
2773ef27f7
@ -417,9 +417,6 @@
|
||||
<CustomBuild Include="..\..\..\Source\Fractorium\GLWidget.h">
|
||||
<Filter>MainWindows</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\..\..\Source\Fractorium\Fractorium.h">
|
||||
<Filter>MainWindows</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\..\..\Source\Fractorium\EmberTreeWidgetItem.h">
|
||||
<Filter>Widgets</Filter>
|
||||
</CustomBuild>
|
||||
@ -477,6 +474,9 @@
|
||||
<CustomBuild Include="..\..\..\Source\Fractorium\paletteeditor.ui">
|
||||
<Filter>Form Files</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\..\..\Source\Fractorium\Fractorium.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\..\Source\Fractorium\Icons\Fractorium.ico" />
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -530,8 +530,10 @@ private:
|
||||
QTableWidgetItem* m_InfoFinalXformItem;
|
||||
|
||||
//Files.
|
||||
#ifndef __APPLE__
|
||||
QFileDialog* m_FileDialog = nullptr;
|
||||
QFileDialog* m_FolderDialog = nullptr;
|
||||
#endif
|
||||
QssDialog* m_QssDialog = nullptr;
|
||||
QString m_LastSaveAll;
|
||||
QString m_LastSaveCurrent;
|
||||
|
@ -75,7 +75,7 @@ void FractoriumSettings::EnsureDefaults()
|
||||
if (FinalExt() != "jpg" && FinalExt() != "png")
|
||||
FinalExt("png");
|
||||
|
||||
QString s = SaveFolder();
|
||||
auto s = SaveFolder();
|
||||
QDir dir(s);
|
||||
|
||||
if (s.isEmpty() || !dir.exists())
|
||||
@ -85,6 +85,9 @@ void FractoriumSettings::EnsureDefaults()
|
||||
if (!paths.empty())
|
||||
SaveFolder(paths[0]);
|
||||
}
|
||||
|
||||
if (OpenPaletteImageFolder() == "")
|
||||
OpenPaletteImageFolder(QCoreApplication::applicationDirPath());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -285,6 +288,9 @@ void FractoriumSettings::Nick(const QString& s) { setValue(IDENTITYNICK, s);
|
||||
QString FractoriumSettings::OpenFolder() { return value(OPENFOLDER).toString(); }
|
||||
void FractoriumSettings::OpenFolder(const QString& s) { setValue(OPENFOLDER, s); }
|
||||
|
||||
QString FractoriumSettings::OpenPaletteImageFolder() { return value(OPENPALETTEIMAGEFOLDER).toString(); }
|
||||
void FractoriumSettings::OpenPaletteImageFolder(const QString& s) { setValue(OPENPALETTEIMAGEFOLDER, s); }
|
||||
|
||||
QString FractoriumSettings::SaveFolder() { return value(SAVEFOLDER).toString(); }
|
||||
void FractoriumSettings::SaveFolder(const QString& s) { setValue(SAVEFOLDER, s); }
|
||||
|
||||
|
@ -68,6 +68,7 @@
|
||||
#define XMLSUPERSAMPLE "xml/supersample"
|
||||
|
||||
#define OPENFOLDER "path/open"
|
||||
#define OPENPALETTEIMAGEFOLDER "path/openpaletteimage"
|
||||
#define SAVEFOLDER "path/save"
|
||||
|
||||
#define OPENXMLEXT "file/openxmlext"
|
||||
@ -261,6 +262,9 @@ public:
|
||||
QString OpenFolder();
|
||||
void OpenFolder(const QString& s);
|
||||
|
||||
QString OpenPaletteImageFolder();
|
||||
void OpenPaletteImageFolder(const QString& s);
|
||||
|
||||
QString SaveFolder();
|
||||
void SaveFolder(const QString& s);
|
||||
|
||||
|
@ -425,6 +425,10 @@ void PaletteEditor::EmitPaletteChanged()
|
||||
/// </summary>
|
||||
QStringList PaletteEditor::SetupOpenImagesDialog()
|
||||
{
|
||||
QStringList filenames;
|
||||
auto settings = FractoriumSettings::Instance();
|
||||
#ifndef __APPLE__
|
||||
|
||||
if (!m_FileDialog)
|
||||
{
|
||||
m_FileDialog = new QFileDialog(this);
|
||||
@ -433,20 +437,33 @@ QStringList PaletteEditor::SetupOpenImagesDialog()
|
||||
m_FileDialog->setAcceptMode(QFileDialog::AcceptOpen);
|
||||
m_FileDialog->setNameFilter("Image Files (*.png *.jpg *.bmp)");
|
||||
m_FileDialog->setWindowTitle("Open Image");
|
||||
m_FileDialog->setDirectory(QCoreApplication::applicationDirPath());
|
||||
m_FileDialog->setDirectory(settings->OpenPaletteImageFolder());
|
||||
m_FileDialog->selectNameFilter("*.jpg");
|
||||
}
|
||||
|
||||
QStringList filenames;
|
||||
|
||||
if (m_FileDialog->exec() == QDialog::Accepted)
|
||||
{
|
||||
filenames = m_FileDialog->selectedFiles();
|
||||
|
||||
if (!filenames.empty())
|
||||
m_FileDialog->setDirectory(QFileInfo(filenames[0]).canonicalPath());
|
||||
{
|
||||
auto path = QFileInfo(filenames[0]).canonicalPath();
|
||||
m_FileDialog->setDirectory(path);
|
||||
settings->OpenPaletteImageFolder(path);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
auto filename = QFileDialog::getOpenFileName(this, tr("Open Image"), settings->OpenPaletteImageFolder(), tr("Image Files (*.png *.jpg *.bmp)"));
|
||||
|
||||
if (filename.size() > 0)
|
||||
{
|
||||
filenames.append(filename);
|
||||
auto path = QFileInfo(filenames[0]).canonicalPath();
|
||||
settings->OpenPaletteImageFolder(path);
|
||||
}
|
||||
|
||||
#endif
|
||||
return filenames;
|
||||
}
|
||||
|
||||
|
@ -72,7 +72,9 @@ private:
|
||||
string m_CurrentPaletteFilePath;
|
||||
ColorPickerWidget* m_ColorPicker = nullptr;
|
||||
GradientColorsView* m_GradientColorView = nullptr;
|
||||
#ifndef __APPLE__
|
||||
QFileDialog* m_FileDialog = nullptr;
|
||||
#endif
|
||||
shared_ptr<PaletteList<float>> m_PaletteList;
|
||||
std::unique_ptr<Ui::PaletteEditor> ui;
|
||||
};
|
||||
|
@ -44,9 +44,7 @@ bool CaseInsensitiveLessThanQ(const QString& s1, const QString& s2)
|
||||
QssDialog::QssDialog(Fractorium* parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::QssDialog),
|
||||
m_FileDialog(nullptr),
|
||||
m_Parent(parent),
|
||||
m_Theme(nullptr),
|
||||
m_AddColorAction(new QAction(tr("Add Color"), this)),
|
||||
m_AddGeomAction(new QAction(tr("Add Geometry"), this)),
|
||||
m_AddBorderAction(new QAction(tr("Add Border"), this)),
|
||||
@ -631,13 +629,16 @@ void QssDialog::InsertCssProperty(const QString& name, const QString& value)
|
||||
/// </summary>
|
||||
void QssDialog::SetupFileDialog()
|
||||
{
|
||||
#ifndef __APPLE__
|
||||
|
||||
if (!m_FileDialog)
|
||||
{
|
||||
auto path = m_Parent->m_SettingsPath;
|
||||
m_FileDialog = new QFileDialog(this);
|
||||
m_FileDialog->setDirectory(path);
|
||||
m_FileDialog->setDirectory(m_Parent->m_SettingsPath);
|
||||
m_FileDialog->setViewMode(QFileDialog::List);
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -646,6 +647,7 @@ void QssDialog::SetupFileDialog()
|
||||
/// <returns>The file selected if any, else empty string.</returns>
|
||||
QString QssDialog::OpenFile()
|
||||
{
|
||||
#ifndef __APPLE__
|
||||
QStringList filenames;
|
||||
SetupFileDialog();
|
||||
m_FileDialog->setFileMode(QFileDialog::ExistingFile);
|
||||
@ -658,6 +660,10 @@ QString QssDialog::OpenFile()
|
||||
filenames = m_FileDialog->selectedFiles();
|
||||
|
||||
return !filenames.empty() ? filenames[0] : "";
|
||||
#else
|
||||
auto filename = QFileDialog::getOpenFileName(this, tr("Open Stylesheet"), m_Parent->m_SettingsPath, tr("Qss (*.qss)"));
|
||||
return filename.size() > 0 ? filename : "";
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -666,6 +672,7 @@ QString QssDialog::OpenFile()
|
||||
/// <returns>The file selected for saving if any, else empty string.</returns>
|
||||
QString QssDialog::SaveFile()
|
||||
{
|
||||
#ifndef __APPLE__
|
||||
QStringList filenames;
|
||||
SetupFileDialog();
|
||||
m_FileDialog->setFileMode(QFileDialog::AnyFile);
|
||||
@ -678,4 +685,8 @@ QString QssDialog::SaveFile()
|
||||
filenames = m_FileDialog->selectedFiles();
|
||||
|
||||
return !filenames.empty() ? filenames[0] : "";
|
||||
#else
|
||||
auto filename = QFileDialog::getSaveFileName(this, tr("Save Stylesheet"), m_Parent->m_SettingsPath, tr("Qss (*.qss)"));
|
||||
return filename.size() > 0 ? filename : "";
|
||||
#endif
|
||||
}
|
||||
|
@ -53,7 +53,7 @@
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
class QssDialog;
|
||||
class QssDialog;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -113,12 +113,12 @@ private slots:
|
||||
|
||||
private:
|
||||
void SaveAsDefault();
|
||||
void InsertCssProperty(const QString &name, const QString &value);
|
||||
void InsertCssProperty(const QString& name, const QString& value);
|
||||
void SetupFileDialog();
|
||||
QString OpenFile();
|
||||
QString SaveFile();
|
||||
|
||||
QStyle* m_Theme;
|
||||
QStyle* m_Theme = nullptr;
|
||||
QStyle* m_LastTheme;
|
||||
QString m_LastStyle;
|
||||
QAction* m_AddColorAction;
|
||||
@ -136,6 +136,8 @@ private:
|
||||
QHash<QString, QString> m_StyleMap;
|
||||
QTimer* m_ApplyTimer;
|
||||
Fractorium* m_Parent;
|
||||
QFileDialog* m_FileDialog;
|
||||
Ui::QssDialog *ui;
|
||||
#ifndef __APPLE__
|
||||
QFileDialog* m_FileDialog = nullptr;
|
||||
#endif
|
||||
Ui::QssDialog* ui;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user