From beed48f89bf9e106cabeb84b85f26cfd24524691 Mon Sep 17 00:00:00 2001 From: anurag Date: Wed, 19 Aug 2020 16:33:49 +0530 Subject: [PATCH 1/3] User Formula updates --- src/ui-hlp/menu.cpp | 26 ++------------- src/ui/customdialog.cpp | 71 ++++++++--------------------------------- src/ui/customdialog.h | 2 -- 3 files changed, 15 insertions(+), 84 deletions(-) diff --git a/src/ui-hlp/menu.cpp b/src/ui-hlp/menu.cpp index a8081b7a..38bda8de 100644 --- a/src/ui-hlp/menu.cpp +++ b/src/ui-hlp/menu.cpp @@ -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 ; @@ -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) { @@ -660,16 +656,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) @@ -1280,8 +1266,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"); @@ -1694,10 +1678,4 @@ 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 diff --git a/src/ui/customdialog.cpp b/src/ui/customdialog.cpp index bcfb8660..c3b6d91e 100644 --- a/src/ui/customdialog.cpp +++ b/src/ui/customdialog.cpp @@ -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 { @@ -343,9 +317,15 @@ 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(label); - if (list->count() > 0) - m_parameters[i].dstring = strdup(list->currentItem()->text().toUtf8()); + QComboBox *list = findChild(label); + if (list->count() > 0) { + m_parameters[i].dstring = strdup(list->currentText().toUtf8()); + QSettings settings; + QStringList values = settings.value("Formulas/UserFormulas").toStringList(); + values.push_front(list->currentText()); + while (values.size() > 10) values.pop_back(); + settings.setValue("Formulas/UserFormulas", values); + } } else m_parameters[i].dstring = strdup(field->text().toUtf8()); @@ -436,28 +416,3 @@ void CustomDialog::colorPicker() newColors[idx][1] = color.green(); newColors[idx][2] = color.blue(); } - -void CustomDialog::addToList() -{ - QListWidget *list = findChild(sender()->objectName()); - QLineEdit *newitem = findChild(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(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); -} diff --git a/src/ui/customdialog.h b/src/ui/customdialog.h index fe2f7bea..878ebb90 100644 --- a/src/ui/customdialog.h +++ b/src/ui/customdialog.h @@ -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); From eb62d345ddb5dfe6e6b9d8bc39ce11204777ff31 Mon Sep 17 00:00:00 2001 From: anurag Date: Wed, 19 Aug 2020 16:34:40 +0530 Subject: [PATCH 2/3] User Formula updates --- src/ui-hlp/menu.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ui-hlp/menu.cpp b/src/ui-hlp/menu.cpp index 38bda8de..835ab068 100644 --- a/src/ui-hlp/menu.cpp +++ b/src/ui-hlp/menu.cpp @@ -341,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) From c1d70af5691eed14490e6d45045723db871ae68e Mon Sep 17 00:00:00 2001 From: anurag Date: Wed, 19 Aug 2020 16:47:04 +0530 Subject: [PATCH 3/3] User Formula updates --- src/ui-hlp/menu.cpp | 7 +++++++ src/ui/customdialog.cpp | 9 +-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ui-hlp/menu.cpp b/src/ui-hlp/menu.cpp index 835ab068..589fb4e5 100644 --- a/src/ui-hlp/menu.cpp +++ b/src/ui-hlp/menu.cpp @@ -1670,6 +1670,13 @@ 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); } diff --git a/src/ui/customdialog.cpp b/src/ui/customdialog.cpp index c3b6d91e..8fdbdb08 100644 --- a/src/ui/customdialog.cpp +++ b/src/ui/customdialog.cpp @@ -318,14 +318,7 @@ void CustomDialog::accept() mkcustompalette(palcontext->image->palette, newColors); } else if (m_dialog[i].type == DIALOG_ILIST) { QComboBox *list = findChild(label); - if (list->count() > 0) { - m_parameters[i].dstring = strdup(list->currentText().toUtf8()); - QSettings settings; - QStringList values = settings.value("Formulas/UserFormulas").toStringList(); - values.push_front(list->currentText()); - while (values.size() > 10) values.pop_back(); - settings.setValue("Formulas/UserFormulas", values); - } + m_parameters[i].dstring = strdup(list->currentText().toUtf8()); } else m_parameters[i].dstring = strdup(field->text().toUtf8());