--User changes

-Add a button to swap the pre and post affine values for all selected xforms.

--Bug fixes
 -Remove the ability to change spinner values with +=-=, it was conflicting with other things and added no real value.
 -All file dialog opening in Linux would freeze. No longer using native file dialogs, they are broken.
 -Set default open path to the desktop if there is no settings file present, which will be the case on the first run.
 -Amphibole_Supergroup.ugr palette had an invalid character in two of the palette names.

--Code changes
 -Change some table header padding styles to work with new Qt. Qss reload is required.
 -Ensure the open folder path setting always has a valid string in it before opening a folder.
This commit is contained in:
Person 2018-09-30 14:20:02 -07:00
parent 02c3c3967b
commit c91866acc3
30 changed files with 237 additions and 93 deletions

View File

@ -6,7 +6,7 @@
<ProductVersion>3.7</ProductVersion>
<ProjectGuid>{c8096c47-e358-438c-a520-146d46b0637d}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>Fractorium_1.0.0.11</OutputName>
<OutputName>Fractorium_1.0.0.12</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?define ProductVersion="1.0.0.11" ?>
<?define ProductVersion="1.0.0.12" ?>
<?define ProductName="Fractorium $(var.ProductVersion) ($(var.GpuType))" ?>
<?define UpgradeCode="{4714cd15-bfba-44f6-8059-9e1466ebfa6e}"?>
<?define Manufacturer="Fractorium"?>
@ -13,7 +13,7 @@
<!--
Change this for every release.
-->
<?define ProductCode="{5C699D11-8625-4563-BCB6-722C3E6EE6B7}"?>
<?define ProductCode="{B4D001AE-F268-41A2-9B33-CAFB26056DC3}"?>
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package
@ -164,16 +164,16 @@
<File Id="tbb.dll" Source="$(var.SolutionDir)..\..\..\Bin\$(var.Platform)\Release\tbb.dll" KeyPath="yes" Checksum="yes" ProcessorArchitecture="x64" ReadOnly="yes"/>
</Component>
<Component Id="msvcp140.dll" Guid="8f1ffde7-c1bd-45fb-8bc8-26dde552eafd">
<File Id="msvcp140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.11.25325\x64\Microsoft.VC141.CRT\msvcp140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
<File Id="msvcp140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.15.26706\x64\Microsoft.VC141.CRT\msvcp140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="vcruntime140.dll" Guid="50c9bc27-c547-4a03-9f6c-cd416f449dd8">
<File Id="vcruntime140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.11.25325\x64\Microsoft.VC141.CRT\vcruntime140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
<File Id="vcruntime140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.15.26706\x64\Microsoft.VC141.CRT\vcruntime140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="vccorlib140.dll" Guid="affe33e7-1e64-4bb0-a062-2b56f77459b4">
<File Id="vccorlib140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.11.25325\x64\Microsoft.VC141.CRT\vccorlib140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
<File Id="vccorlib140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.15.26706\x64\Microsoft.VC141.CRT\vccorlib140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="concrt140.dll" Guid="7fb716a1-1b4f-42fb-89c7-4d216ebd6e2e">
<File Id="concrt140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.11.25325\x64\Microsoft.VC141.CRT\concrt140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
<File Id="concrt140.dll" Source="$(var.DevEnvDir)..\..\VC\Redist\MSVC\14.15.26706\x64\Microsoft.VC141.CRT\concrt140.dll" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>
</Component>
<Component Id="flam3palettes.xml" Guid="d3adb0bb-14ef-4923-99d9-a5784b7ef04e">
<File Id="flam3palettes.xml" Source="$(var.SolutionDir)..\..\..\Data\flam3-palettes.xml" KeyPath="yes" Checksum="yes" ReadOnly="yes"/>

Binary file not shown.

View File

@ -49,8 +49,8 @@
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 0, 0, 11
PRODUCTVERSION 1, 0, 0, 11
FILEVERSION 1, 0, 0, 12
PRODUCTVERSION 1, 0, 0, 12
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -67,12 +67,12 @@
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Renders fractal flames as animations with motion blur"
VALUE "FileVersion", "1.0.0.11"
VALUE "FileVersion", "1.0.0.12"
VALUE "InternalName", "EmberAnimate.exe"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2018, GPL v3"
VALUE "OriginalFilename", "EmberAnimate.exe"
VALUE "ProductName", "Ember Animate"
VALUE "ProductVersion", "1.0.0.11"
VALUE "ProductVersion", "1.0.0.12"
END
END
BLOCK "VarFileInfo"

Binary file not shown.

View File

@ -49,8 +49,8 @@
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 0, 0, 11
PRODUCTVERSION 1, 0, 0, 11
FILEVERSION 1, 0, 0, 12
PRODUCTVERSION 1, 0, 0, 12
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -67,12 +67,12 @@
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Manipulates fractal flames parameter files"
VALUE "FileVersion", "1.0.0.11"
VALUE "FileVersion", "1.0.0.12"
VALUE "InternalName", "EmberGenome.exe"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2018, GPL v3"
VALUE "OriginalFilename", "EmberGenome.exe"
VALUE "ProductName", "Ember Genome"
VALUE "ProductVersion", "1.0.0.11"
VALUE "ProductVersion", "1.0.0.12"
END
END
BLOCK "VarFileInfo"

View File

@ -49,8 +49,8 @@
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 0, 0, 11
PRODUCTVERSION 1, 0, 0, 11
FILEVERSION 1, 0, 0, 12
PRODUCTVERSION 1, 0, 0, 12
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -67,12 +67,12 @@
BEGIN
VALUE "CompanyName", "Open Source"
VALUE "FileDescription", "Renders fractal flames as single images"
VALUE "FileVersion", "1.0.0.11"
VALUE "FileVersion", "1.0.0.12"
VALUE "InternalName", "EmberRender.exe"
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2018, GPL v3"
VALUE "OriginalFilename", "EmberRender.exe"
VALUE "ProductName", "Ember Render"
VALUE "ProductVersion", "1.0.0.11"
VALUE "ProductVersion", "1.0.0.12"
END
END
BLOCK "VarFileInfo"

Binary file not shown.

View File

@ -1,4 +1,4 @@
VERSION = 1.0.0.11
VERSION = 1.0.0.12
win32:CONFIG += skip_target_version_ext
CONFIG += c++14

View File

@ -4976,9 +4976,9 @@ gradient:
}
Ferro-ferri-nybøite {
Ferro-ferri-nyboite {
gradient:
title="Ferro-ferri-nybøite" smooth=no
title="Ferro-ferri-nyboite" smooth=no
index=0 color=3032133
index=2 color=2372156
index=3 color=2239542
@ -14670,9 +14670,9 @@ gradient:
}
Raw_Nybøite {
Raw_Nyboite {
gradient:
title="Raw_Nybøite" smooth=no
title="Raw_Nyboite" smooth=no
index=0 color=5076103
index=2 color=3825246
index=3 color=2970712

View File

@ -1,3 +1,17 @@
1.0.0.12 9/30/2018
--User changes
-Add a button to swap the pre and post affine values for all selected xforms.
--Bug fixes
-Remove the ability to change spinner values with +=-=, it was conflicting with other things and added no real value.
-All file dialog opening in Linux would freeze. No longer using native file dialogs, they are broken.
-Set default open path to the desktop if there is no settings file present, which will be the case on the first run.
-Amphibole_Supergroup.ugr palette had an invalid character in two of the palette names.
--Code changes
-Change some table header padding styles to work with new Qt. Qss reload is required.
-Ensure the open folder path setting always has a valid string in it before opening a folder.
1.0.0.11 9/27/2018
--User changes
-Double clicking on width or height spinner now resizes both, but scales to the one double clicked.

View File

@ -101,7 +101,7 @@ QDoubleSpinBox
padding-right: 0px;
color: darkgray;
selection-background-color: darkgray;
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QCheckBox
@ -322,7 +322,7 @@ QTreeView
{
border: 1px solid gray;
background-color: rgb(53, 53, 53);
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
/*Setting this gives a more consistent look. Also, by omitting color and background color, it allows us to set it above with VariationTreeColorNonZero etc...*/
@ -378,7 +378,7 @@ QTableView
color: darkgray;
selection-color: darkgray;
selection-background-color: rgb(53, 53, 53);
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QTableView QTableCornerButton::section:enabled
@ -409,8 +409,9 @@ QHeaderView::section::vertical:enabled
background-color: gray;
border: none;
border-bottom: 1px solid gray;
padding: 4px;
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
padding-left: 5px;
padding-right: 0px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QHeaderView::section::horizontal:enabled
@ -419,8 +420,10 @@ QHeaderView::section::horizontal:enabled
background-color: darkgray;
border: 0px solid darkgray;
border-right: 1px solid gray;
padding: 4px;
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
padding-top: 0px;
padding-bottom: 0px;
padding-left: 3px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QHeaderView::section::vertical:disabled
@ -429,8 +432,9 @@ QHeaderView::section::vertical:disabled
background-color: rgb(53, 53, 53);
border: 0px none darkgray;
border-bottom: 1px solid rgb(53, 53, 53);
padding: 4px;
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
padding-left: 5px;
padding-right: 0px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QHeaderView::section::horizontal:disabled
@ -439,8 +443,10 @@ QHeaderView::section::horizontal:disabled
background-color: rgb(53, 53, 53);
border: 0px none darkgray;
border-right: 1px solid rgb(53, 53, 53);
padding: 4px;
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
padding-top: 0px;
padding-bottom: 0px;
padding-left: 3px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QScrollBar::vertical

View File

@ -101,7 +101,7 @@ QDoubleSpinBox
padding-right: 0px;
color: darkgray;
selection-background-color: darkgray;
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QCheckBox
@ -322,7 +322,7 @@ QTreeView
{
border: 1px solid gray;
background-color: rgb(53, 53, 53);
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
@ -379,7 +379,7 @@ QTableView
color: darkgray;
selection-color: darkgray;
selection-background-color: rgb(53, 53, 53);
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QTableView QTableCornerButton::section:enabled
@ -410,8 +410,9 @@ QHeaderView::section::vertical:enabled
background-color: gray;
border: none;
border-bottom: 1px solid gray;
padding: 4px;
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
padding-left: 5px;
padding-right: 0px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QHeaderView::section::horizontal:enabled
@ -420,8 +421,10 @@ QHeaderView::section::horizontal:enabled
background-color: darkgray;
border: 0px solid darkgray;
border-right: 1px solid gray;
padding: 4px;
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
padding-top: 0px;
padding-bottom: 0px;
padding-left: 3px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QHeaderView::section::vertical:disabled
@ -430,8 +433,9 @@ QHeaderView::section::vertical:disabled
background-color: rgb(53, 53, 53);
border: 0px none darkgray;
border-bottom: 1px solid rgb(53, 53, 53);
padding: 4px;
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
padding-left: 5px;
padding-right: 0px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QHeaderView::section::horizontal:disabled
@ -440,8 +444,10 @@ QHeaderView::section::horizontal:disabled
background-color: rgb(53, 53, 53);
border: 0px none darkgray;
border-right: 1px solid rgb(53, 53, 53);
padding: 4px;
font: 9pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
padding-top: 0px;
padding-bottom: 0px;
padding-left: 3px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
QScrollBar::vertical

View File

@ -409,7 +409,8 @@ QHeaderView::section::vertical:enabled
background-color: gray;
border: none;
border-bottom: 1px solid gray;
padding: 4px;
padding-left: 5px;
padding-right: 0px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
@ -419,7 +420,9 @@ QHeaderView::section::horizontal:enabled
background-color: darkgray;
border: 0px solid darkgray;
border-right: 1px solid gray;
padding: 4px;
padding-top: 0px;
padding-bottom: 0px;
padding-left: 3px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
@ -429,7 +432,8 @@ QHeaderView::section::vertical:disabled
background-color: rgb(53, 53, 53);
border: 0px none darkgray;
border-bottom: 1px solid rgb(53, 53, 53);
padding: 4px;
padding-left: 5px;
padding-right: 0px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}
@ -439,7 +443,9 @@ QHeaderView::section::horizontal:disabled
background-color: rgb(53, 53, 53);
border: 0px none darkgray;
border-right: 1px solid rgb(53, 53, 53);
padding: 4px;
padding-top: 0px;
padding-bottom: 0px;
padding-left: 3px;
font: 8pt "MS Shell Dlg 2";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
}

View File

@ -37,7 +37,7 @@ static void sincos(float x, float* s, float* c)
namespace EmberNs
{
#define EMBER_VERSION "1.0.0.11"
#define EMBER_VERSION "1.0.0.12"
#define EPS6 T(1e-6)
#define EPS std::numeric_limits<T>::epsilon()//Apoplugin.h uses -20, but it's more mathematically correct to do it this way.
#define ISAAC_SIZE 4

View File

@ -58,7 +58,7 @@
<enum>QFrame::NoFrame</enum>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;Fractorium 1.0.0.11&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;A Qt-based fractal flame editor which uses a C++ re-write of the flam3 algorithm named Ember and a GPU capable version named EmberCL which implements a portion of the cuburn algorithm in OpenCL.&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://fractorium.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;fractorium.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;Fractorium 1.0.0.12&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;A Qt-based fractal flame editor which uses a C++ re-write of the flam3 algorithm named Ember and a GPU capable version named EmberCL which implements a portion of the cuburn algorithm in OpenCL.&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://fractorium.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;fractorium.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="textFormat">
<enum>Qt::RichText</enum>

View File

@ -245,8 +245,14 @@ bool DoubleSpinBox::eventFilter(QObject* o, QEvent* e)
setValue(value() - (ctrl ? m_Step * 10 : m_Step));
}
}
return true;
}
}
else if (dynamic_cast<QKeyEvent*>(e))
{
return true;
}
}
return QDoubleSpinBox::eventFilter(o, e);
@ -263,7 +269,7 @@ void DoubleSpinBox::keyPressEvent(QKeyEvent* ke)
bool shift = QGuiApplication::keyboardModifiers().testFlag(Qt::ShiftModifier);
bool ctrl = QGuiApplication::keyboardModifiers().testFlag(Qt::ControlModifier);
if (ke->key() == Qt::Key_Plus || ke->key() == Qt::Key_Equal || ke->key() == Qt::Key_Up)
if (ke->key() == Qt::Key_Up)
{
if (shift)
{
@ -275,8 +281,10 @@ void DoubleSpinBox::keyPressEvent(QKeyEvent* ke)
setSingleStep(m_Step);
setValue(value() + (ctrl ? m_Step * 10 : m_Step));
}
ke->accept();
}
else if (ke->key() == Qt::Key_Minus || ke->key() == Qt::Key_Underscore || ke->key() == Qt::Key_Down)
else if (ke->key() == Qt::Key_Down)
{
if (shift)
{
@ -288,6 +296,8 @@ void DoubleSpinBox::keyPressEvent(QKeyEvent* ke)
setSingleStep(m_Step);
setValue(value() - (ctrl ? m_Step * 10 : m_Step));
}
ke->accept();
}
else
QDoubleSpinBox::keyPressEvent(ke);

View File

@ -398,37 +398,42 @@ bool Fractorium::eventFilter(QObject* o, QEvent* e)
}
else if (o == this)
{
unsigned int index = combo->currentIndex();
auto focusedctrl = dynamic_cast<QSpinBox*>(this->focusWidget());
if (ke->key() == Qt::Key_Plus || ke->key() == Qt::Key_Equal)
if (!focusedctrl)//Doesn't seem to matter, but just to be safe.
{
xfupcount++;
unsigned int index = combo->currentIndex();
if (xfupcount >= 3)
if (ke->key() == Qt::Key_Plus || ke->key() == Qt::Key_Equal)
{
xfupcount = 0;
combo->setCurrentIndex((index + 1) % combo->count());
//qDebug() << "global arrow plus key press: " << ke->key() << " " << o->metaObject()->className() << " " << o->objectName();
xfupcount++;
if (xfupcount >= 3)
{
xfupcount = 0;
combo->setCurrentIndex((index + 1) % combo->count());
//qDebug() << "global arrow plus key press: " << ke->key() << " " << o->metaObject()->className() << " " << o->objectName();
}
return true;
}
return true;
}
else if (ke->key() == Qt::Key_Minus || ke->key() == Qt::Key_Underscore)
{
xfdncount++;
if (xfdncount >= 3)
else if (ke->key() == Qt::Key_Minus || ke->key() == Qt::Key_Underscore)
{
xfdncount = 0;
xfdncount++;
if (index == 0)
index = combo->count();
if (xfdncount >= 3)
{
xfdncount = 0;
combo->setCurrentIndex((index - 1) % combo->count());
//qDebug() << "global arrow minus key press: " << ke->key() << " " << o->metaObject()->className() << " " << o->objectName();
if (index == 0)
index = combo->count();
combo->setCurrentIndex((index - 1) % combo->count());
//qDebug() << "global arrow minus key press: " << ke->key() << " " << o->metaObject()->className() << " " << o->objectName();
}
return true;
}
return true;
}
}
}
@ -594,6 +599,7 @@ QStringList Fractorium::SetupOpenXmlDialog()
{
m_FileDialog = new QFileDialog(this);
m_FileDialog->setViewMode(QFileDialog::List);
m_FileDialog->setOption(QFileDialog::DontUseNativeDialog, true);
}
QStringList filenames;
@ -642,6 +648,7 @@ QString Fractorium::SetupSaveXmlDialog(const QString& defaultFilename)
{
m_FileDialog = new QFileDialog(this);
m_FileDialog->setViewMode(QFileDialog::List);
m_FileDialog->setOption(QFileDialog::DontUseNativeDialog, true);
}
QString filename;
@ -687,6 +694,7 @@ QString Fractorium::SetupSaveImageDialog(const QString& defaultFilename)
{
m_FileDialog = new QFileDialog(this);
m_FileDialog->setViewMode(QFileDialog::List);
m_FileDialog->setOption(QFileDialog::DontUseNativeDialog, true);
}
QString filename;
@ -702,7 +710,6 @@ QString Fractorium::SetupSaveImageDialog(const QString& defaultFilename)
m_FileDialog->selectFile(defaultFilename);
m_FileDialog->setFileMode(QFileDialog::AnyFile);
m_FileDialog->setOption(QFileDialog::ShowDirsOnly, false);
m_FileDialog->setOption(QFileDialog::DontUseNativeDialog, false);
#ifdef _WIN32
m_FileDialog->setNameFilter(".bmp;;.jpg;;.png;;.exr");
#else
@ -738,6 +745,7 @@ QString Fractorium::SetupSaveFolderDialog()
{
m_FolderDialog = new QFileDialog(this);
m_FolderDialog->setViewMode(QFileDialog::List);
m_FolderDialog->setOption(QFileDialog::DontUseNativeDialog, true);
}
QString filename;
@ -893,6 +901,7 @@ void Fractorium::SetTabOrders()
w = SetTabOrder(this, w, ui.PreRandomButton);
w = SetTabOrder(this, w, ui.ShowPreAffineCurrentRadio);
w = SetTabOrder(this, w, ui.ShowPreAffineAllRadio);
w = SetTabOrder(this, w, ui.SwapAffinesButton);
w = SetTabOrder(this, w, ui.PostAffineGroupBox);
w = SetTabOrder(this, w, m_PostX1Spin);
w = SetTabOrder(this, w, m_PostX2Spin);

View File

@ -286,6 +286,7 @@ public slots:
void OnCopyAffineButtonClicked(bool checked);
void OnPasteAffineButtonClicked(bool checked);
void OnRandomAffineButtonClicked(bool checked);
void OnSwapAffinesButtonClicked(bool checked);
void OnAffineGroupBoxToggled(bool on);
void OnAffineDrawAllCurrentRadioButtonToggled(bool checked);

View File

@ -466,7 +466,7 @@
<string>Geometry</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignTop</set>
<set>AlignCenter</set>
</property>
</column>
</widget>
@ -547,7 +547,7 @@
<string>Iteration</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignTop</set>
<set>AlignCenter</set>
</property>
</column>
</widget>
@ -637,7 +637,7 @@
<string>Color</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignTop</set>
<set>AlignCenter</set>
</property>
</column>
</widget>
@ -734,7 +734,7 @@
<string>Filter</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignTop</set>
<set>AlignCenter</set>
</property>
</column>
</widget>
@ -1624,7 +1624,7 @@
<string>Animation</string>
</property>
<property name="textAlignment">
<set>AlignHCenter|AlignTop</set>
<set>AlignCenter</set>
</property>
</column>
</widget>
@ -3040,13 +3040,13 @@
</property>
<property name="minimumSize">
<size>
<width>58</width>
<width>62</width>
<height>24</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>58</width>
<width>62</width>
<height>24</height>
</size>
</property>
@ -3181,18 +3181,30 @@
<property name="text">
<string>Weight</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Name</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
<item row="0" column="0">
<property name="text">
<string/>
</property>
<property name="textAlignment">
<set>AlignLeading|AlignVCenter</set>
</property>
</item>
<item row="0" column="1">
<property name="text">
<string/>
</property>
<property name="textAlignment">
<set>AlignLeading|AlignVCenter</set>
</property>
@ -4684,6 +4696,16 @@
</layout>
</widget>
</item>
<item>
<widget class="QPushButton" name="SwapAffinesButton">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Swap the values of the pre and post affines&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Swap</string>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="PostAffineGroupBox">
<property name="sizePolicy">

View File

@ -517,7 +517,10 @@ static QString BaseStyle()
"\tbackground-color: lightgray;\n"
"\tborder: none;\n"
"\tborder-bottom: 1px solid gray;\n"
"\tpadding: 4px;\n"
"\tpadding-left: 5px;\n"
"\tpadding-right: 0px;\n"
"\tpadding-top: 0px;\n"
"\tpadding-bottom: 0px;\n"
"\tfont: 8pt \"MS Shell Dlg 2\";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/\n"
"}\n"
"\n"
@ -527,7 +530,9 @@ static QString BaseStyle()
"\tbackground-color: lightgray;\n"
"\tborder: 0px solid darkgray;\n"
"\tborder-right: 1px solid gray;\n"
"\tpadding: 4px;\n"
"\tpadding-top: 0px;\n"
"\tpadding-bottom: 0px;\n"
"\tpadding-left: 3px;\n"
"\tfont: 8pt \"MS Shell Dlg 2\";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/\n"
"}\n"
"\n"
@ -537,7 +542,10 @@ static QString BaseStyle()
"\tbackground-color: rgb(53, 53, 53);\n"
"\tborder: 0px none darkgray;\n"
"\tborder-bottom: 1px solid rgb(53, 53, 53);\n"
"\tpadding: 4px;\n"
"\tpadding-left: 5px;\n"
"\tpadding-right: 0px;\n"
"\tpadding-top: 0px;\n"
"\tpadding-bottom: 0px;\n"
"\tfont: 8pt \"MS Shell Dlg 2\";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/\n"
"}\n"
"\n"
@ -547,7 +555,9 @@ static QString BaseStyle()
"\tbackground-color: rgb(53, 53, 53);\n"
"\tborder: 0px none darkgray;\n"
"\tborder-right: 0px solid rgb(53, 53, 53);\n"
"\tpadding: 4px;\n"
"\tpadding-top: 0px;\n"
"\tpadding-bottom: 0px;\n"
"\tpadding-left: 3px;\n"
"\tfont: 8pt \"MS Shell Dlg 2\";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/\n"
"}\n"
;

View File

@ -198,6 +198,7 @@ public:
virtual void PasteXformsAffine(bool pre) { }
virtual void RandomXformsAffine(bool pre) { }
virtual void FillBothAffines() { }
virtual void SwapAffines() { }
double LockedScale() { return m_LockedScale; }
double LockedX() { return m_LockedX; }
double LockedY() { return m_LockedY; }
@ -475,6 +476,7 @@ public:
virtual void PasteXformsAffine(bool pre) override;
virtual void RandomXformsAffine(bool pre) override;
virtual void FillBothAffines() override;
virtual void SwapAffines() override;
virtual void InitLockedScale() override;
void FillAffineWithXform(Xform<T>* xform, bool pre);
void ChangeLockedScale(T value);

View File

@ -85,9 +85,20 @@ void FractoriumSettings::EnsureDefaults()
)
FinalExt("png");
auto s = SaveFolder();
auto s = OpenFolder();
QDir dir(s);
if (s.isEmpty() || !dir.exists())
{
QStringList paths = QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);
if (!paths.empty())
OpenFolder(paths[0]);
}
s = SaveFolder();
dir = QDir(s);
if (s.isEmpty() || !dir.exists())
{
QStringList paths = QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);

View File

@ -95,6 +95,7 @@ void Fractorium::InitXformsAffineUI()
connect(ui.PostRandomButton, SIGNAL(clicked(bool)), this, SLOT(OnRandomAffineButtonClicked(bool)), Qt::QueuedConnection);
connect(ui.PreAffineGroupBox, SIGNAL(toggled(bool)), this, SLOT(OnAffineGroupBoxToggled(bool)), Qt::QueuedConnection);
connect(ui.PostAffineGroupBox, SIGNAL(toggled(bool)), this, SLOT(OnAffineGroupBoxToggled(bool)), Qt::QueuedConnection);
connect(ui.SwapAffinesButton, SIGNAL(clicked(bool)), this, SLOT(OnSwapAffinesButtonClicked(bool)), Qt::QueuedConnection);
connect(ui.ShowPreAffineAllRadio, SIGNAL(toggled(bool)), this, SLOT(OnAffineDrawAllCurrentRadioButtonToggled(bool)), Qt::QueuedConnection);
connect(ui.ShowPreAffineCurrentRadio, SIGNAL(toggled(bool)), this, SLOT(OnAffineDrawAllCurrentRadioButtonToggled(bool)), Qt::QueuedConnection);
connect(ui.ShowPreAffineSelectedRadio, SIGNAL(toggled(bool)), this, SLOT(OnAffineDrawAllCurrentRadioButtonToggled(bool)), Qt::QueuedConnection);
@ -704,6 +705,27 @@ void Fractorium::OnAffineGroupBoxToggled(bool on)
ui.GLDisplay->update();
}
/// <summary>
/// Swap the values of the pre and post affines for the selected xforms.
/// </summary>
template <typename T>
void FractoriumEmberController<T>::SwapAffines()
{
UpdateXform([&](Xform<T>* xform, size_t xfindex, size_t selIndex)
{
auto pre = xform->m_Affine;
auto post = xform->m_Post;
xform->m_Affine = post;
xform->m_Post = pre;
}, eXformUpdate::UPDATE_SELECTED);
FillBothAffines();
}
void Fractorium::OnSwapAffinesButtonClicked(bool checked)
{
m_Controller->SwapAffines();
}
/// <summary>
/// Trigger a redraw which will show all, or only the current, circle affine transforms
/// based on which radio buttons are selected.

View File

@ -224,16 +224,25 @@
<property name="text">
<string>Use</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Primary</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
<column>
<property name="text">
<string>Device</string>
</property>
<property name="textAlignment">
<set>AlignCenter</set>
</property>
</column>
</widget>
</item>

View File

@ -510,6 +510,7 @@ QStringList PaletteEditor::SetupOpenImagesDialog()
m_FileDialog->setViewMode(QFileDialog::List);
m_FileDialog->setFileMode(QFileDialog::ExistingFile);
m_FileDialog->setAcceptMode(QFileDialog::AcceptOpen);
m_FileDialog->setOption(QFileDialog::DontUseNativeDialog, true);
#ifdef _WIN32
m_FileDialog->setNameFilter("Image Files (*.png *.jpg *.bmp)");
#else

View File

@ -636,8 +636,9 @@ void QssDialog::SetupFileDialog()
if (!m_FileDialog)
{
m_FileDialog = new QFileDialog(this);
m_FileDialog->setDirectory(m_Parent->m_SettingsPath);
m_FileDialog->setViewMode(QFileDialog::List);
m_FileDialog->setDirectory(m_Parent->m_SettingsPath);
m_FileDialog->setOption(QFileDialog::DontUseNativeDialog, true);
}
#endif

View File

@ -242,6 +242,10 @@ bool SpinBox::eventFilter(QObject* o, QEvent* e)
}
}
}
else if (dynamic_cast<QKeyEvent*>(e))
{
return true;
}
}
}
@ -259,7 +263,7 @@ void SpinBox::keyPressEvent(QKeyEvent* ke)
bool shift = QGuiApplication::keyboardModifiers().testFlag(Qt::ShiftModifier);
bool ctrl = QGuiApplication::keyboardModifiers().testFlag(Qt::ControlModifier);
if (ke->key() == Qt::Key_Plus || ke->key() == Qt::Key_Equal || ke->key() == Qt::Key_Up)
if (ke->key() == Qt::Key_Up)
{
if (shift)
{
@ -271,8 +275,10 @@ void SpinBox::keyPressEvent(QKeyEvent* ke)
setSingleStep(m_Step);
setValue(value() + (ctrl ? m_Step * 10 : m_Step));
}
ke->accept();
}
else if (ke->key() == Qt::Key_Minus || ke->key() == Qt::Key_Underscore || ke->key() == Qt::Key_Down)
else if (ke->key() == Qt::Key_Down)
{
if (shift)
{
@ -284,6 +290,8 @@ void SpinBox::keyPressEvent(QKeyEvent* ke)
setSingleStep(m_Step);
setValue(value() - (ctrl ? m_Step * 10 : m_Step));
}
ke->accept();
}
else
QSpinBox::keyPressEvent(ke);

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
fractorium (1.0.0.12-0ubuntu1) cosmic; urgency=low
* release 1.0.0.12
-- Matt Feemster <matt.feemster@gmail.com> Sun, 30 Sep 2018 10:35:26 -0700
fractorium (1.0.0.11d-0ubuntu1) cosmic; urgency=low
* release 1.0.0.11

View File

@ -14,7 +14,7 @@ REM libjpeg
copy fractorium\Builds\MSVC\WIN32.MAK libjpeg
cd libjpeg
nmake /f makefile.vc setup-v15 CPU=i386
nmake nodebug=1 /f makefile.vc all CPU=i386
nmake nodebug=1 /f makefile.vc libjpeg.lib CPU=i386
copy libjpeg.lib ..\fractorium\Deps
cd ..