Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keep record of used user formulas #202

Merged
merged 3 commits into from
Aug 19, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 9 additions & 25 deletions src/ui-hlp/menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ static menudialog *uih_perturbationdialog, *uih_juliadialog,
*uih_palettecolorsdialog
#ifdef USE_SFFE
,
*uih_sffedialog, *uih_sffeinitdialog, *uih_userformlistdialog
*uih_sffedialog, *uih_sffeinitdialog
#endif
;

Expand Down Expand Up @@ -311,16 +311,12 @@ void uih_registermenudialogs_i18n(void)

#ifdef USE_SFFE
Register(uih_sffedialog);
DIALOGSTR_I(TR("Dialog", "Formula:"), USER_FORMULA);
DIALOGILIST_I(TR("Dialog", "Formula"), USER_FORMULA);
NULL_I();

Register(uih_sffeinitdialog);
DIALOGSTR_I(TR("Dialog", "Initialization:"), "");
NULL_I();

Register(uih_userformlistdialog);
DIALOGILIST_I(TR("Dialog", "Select Formula"), USER_FORMULA);
NULL_I();
#endif

if (no_menudialogs_i18n > MAX_MENUDIALOGS_I18N) {
Expand All @@ -345,7 +341,6 @@ void uih_registermenudialogs_i18n(void)
#ifdef USE_SFFE
void uih_sffein(uih_context *c, const char *text);
void uih_sffeinitin(uih_context *c, const char *text);
void uih_userformlist(struct uih_context *c, char *text);
#endif

static void uih_smoothmorph(struct uih_context *c, dialogparam *p)
Expand Down Expand Up @@ -660,16 +655,6 @@ static menudialog *uih_getsffeinitdialog(struct uih_context *c)
}
return (uih_sffeinitdialog);
}

static menudialog *uih_getuserformlistdialog(struct uih_context *c){
if (c != NULL) {
if (c->fcontext->userformula->expression)
uih_userformlistdialog[0].defstr = c->fcontext->userformula->expression;
else
uih_userformlistdialog[0].defstr = USER_FORMULA;
}
return (uih_userformlistdialog);
}
#endif

static menudialog *uih_getpalettedialog(struct uih_context *uih)
Expand Down Expand Up @@ -1280,8 +1265,6 @@ void uih_registermenus_i18n(void)
uih_sffein, uih_getsffedialog);
MENUCDIALOG_I("fractal", NULL, TR("Menu", "User initialization"),
"usrformInit", 0, uih_sffeinitin, uih_getsffeinitdialog);
MENUCDIALOG_I("fractal", NULL, TR("Menu", "Saved user formulas"), "userformlist", 0,
uih_userformlist, uih_getuserformlistdialog);
#endif

MENUSEPARATOR_I("fractal");
Expand Down Expand Up @@ -1687,17 +1670,18 @@ void uih_unregistermenus(void)
#ifdef USE_SFFE
void uih_sffein(uih_context *c, const char *text)
{
// Keep only top 10 entries
QSettings settings;
QStringList values = settings.value("Formulas/UserFormulas").toStringList();
values.push_back(text);
while (values.size() > 10) values.pop_back();
settings.setValue("Formulas/UserFormulas", values);

uih_sffeset(c, c->fcontext->userformula, text);
}

void uih_sffeinitin(uih_context *c, const char *text)
{
uih_sffeset(c, c->fcontext->userinitial, text);
}

void uih_userformlist(struct uih_context *c, char *text) {
if(strlen(text) != 0) {
uih_sffeset(c, c->fcontext->userformula, text);
}
}
#endif
64 changes: 6 additions & 58 deletions src/ui/customdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,42 +224,16 @@ CustomDialog::CustomDialog(struct uih_context *uih, const menuitem *item,

} else if (dialog[i].type == DIALOG_ILIST) {

QListWidget *list = new QListWidget(this);
QComboBox *list = new QComboBox(this);
list->setObjectName(label);

QLineEdit *newitem = new QLineEdit(dialog[i].defstr, this);
QFontMetrics metric(newitem->font());
newitem->setObjectName(label);

QToolButton *saver = new QToolButton(this);
saver->setObjectName(label);
saver->setText("Add");

QToolButton *deleter = new QToolButton(this);
deleter->setObjectName(label);
deleter->setText("Delete");

QBoxLayout *layout1 = new QBoxLayout(QBoxLayout::LeftToRight);
layout1->setContentsMargins(0, 0, 0, 0);
layout1->addWidget(newitem);
layout1->addWidget(saver);

QBoxLayout *layout2 = new QBoxLayout(QBoxLayout::LeftToRight);
layout2->setContentsMargins(0, 0, 0, 0);
layout2->addWidget(list);
layout2->addWidget(deleter);
list->setEditable(true);
list->addItem(dialog[i].defstr);

QSettings settings;
QStringList formulas = settings.value("Formulas/UserFormulas").toStringList();
list->addItems(formulas);

connect(saver, SIGNAL(clicked()), this,
SLOT(addToList()));
connect(deleter, SIGNAL(clicked()), this,
SLOT(deleteFromList()));

formLayout->addRow("New Formula", layout1);
formLayout->addRow(label, layout2);
formLayout->addRow(label, list);

} else {

Expand Down Expand Up @@ -343,9 +317,8 @@ void CustomDialog::accept()
} else if (m_dialog[i].type == DIALOG_PALPICKER) {
mkcustompalette(palcontext->image->palette, newColors);
} else if (m_dialog[i].type == DIALOG_ILIST) {
QListWidget *list = findChild<QListWidget *>(label);
if (list->count() > 0)
m_parameters[i].dstring = strdup(list->currentItem()->text().toUtf8());
QComboBox *list = findChild<QComboBox *>(label);
m_parameters[i].dstring = strdup(list->currentText().toUtf8());
}
else
m_parameters[i].dstring = strdup(field->text().toUtf8());
Expand Down Expand Up @@ -436,28 +409,3 @@ void CustomDialog::colorPicker()
newColors[idx][1] = color.green();
newColors[idx][2] = color.blue();
}

void CustomDialog::addToList()
{
QListWidget *list = findChild<QListWidget *>(sender()->objectName());
QLineEdit *newitem = findChild<QLineEdit *>(sender()->objectName());
QSettings settings;
QStringList oldlist = settings.value("Formulas/UserFormulas").toStringList();
oldlist.push_back(newitem->text());
list->addItem(newitem->text());
list->setCurrentItem(list->item(list->count()-1));
settings.setValue("Formulas/UserFormulas", oldlist);
}

void CustomDialog::deleteFromList()
{
QListWidget *list = findChild<QListWidget *>(sender()->objectName());
qDeleteAll(list->selectedItems());
QStringList newList;
for (int i = 0; i < list->count(); ++i) {
QListWidgetItem* item = list->item(i);
newList.push_back(item->text());
}
QSettings settings;
settings.setValue("Formulas/UserFormulas", newList);
}
2 changes: 0 additions & 2 deletions src/ui/customdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ class CustomDialog : public QDialog
void chooseOutputFile();
void updateVisualiser();
void colorPicker();
void addToList();
void deleteFromList();
public:
CustomDialog(struct uih_context *uih, const menuitem *item,
const menudialog *dialog, QWidget *parent = 0);
Expand Down