Skip to content

Commit

Permalink
Merge pull request #202 from kanurag94/userformula
Browse files Browse the repository at this point in the history
Keep record of used user formulas
  • Loading branch information
kovzol authored Aug 19, 2020
2 parents 74e9a12 + c1d70af commit cc100c4
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 85 deletions.
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

0 comments on commit cc100c4

Please sign in to comment.