diff --git a/qt/scientific_interfaces/Muon/MuonAnalysis.cpp b/qt/scientific_interfaces/Muon/MuonAnalysis.cpp index bd3a6f2f9fbc68caa93af1e165312994164c7cdc..f44a068e6f6401da8def27461f2e93351383b2d6 100644 --- a/qt/scientific_interfaces/Muon/MuonAnalysis.cpp +++ b/qt/scientific_interfaces/Muon/MuonAnalysis.cpp @@ -358,12 +358,18 @@ void MuonAnalysis::initLayout() { } void MuonAnalysis::setChosenGroupAndPeriods(const QString &wsName) { + return; const auto wsParams = MuonAnalysisHelper::parseWorkspaceName(wsName.toStdString()); const QString &groupToSet = QString::fromStdString(wsParams.itemName); + auto safd = groupToSet.toStdString(); const QString &periodToSet = QString::fromStdString(wsParams.periods); const auto &groups = m_dataSelector->getChosenGroups(); + std::vector<std::string> fsa; + for (auto name : groups) { + fsa.push_back(name.toStdString()); + } const auto &periods = m_dataSelector->getPeriodSelections(); if (!groups.contains(groupToSet)) { m_uiForm.fitBrowser->setChosenGroup(groupToSet); @@ -478,8 +484,8 @@ std::string MuonAnalysis::addItem(ItemType itemType, int tableRow, void MuonAnalysis::plotItem(ItemType itemType, int tableRow, PlotType plotType) { m_updating = true; - m_uiForm.fitBrowser->clearChosenGroups(); - m_uiForm.fitBrowser->clearChosenPeriods(); + //m_uiForm.fitBrowser->clearChosenGroups(); + //m_uiForm.fitBrowser->clearChosenPeriods(); try { auto wsName = addItem(itemType, tableRow, plotType); diff --git a/qt/widgets/common/src/MuonFitPropertyBrowser.cpp b/qt/widgets/common/src/MuonFitPropertyBrowser.cpp index dc8226383e9125d2139e0cbc78e46778dece3437..849b28bf029310046d2cc0b9bd2854ff3bae8de9 100644 --- a/qt/widgets/common/src/MuonFitPropertyBrowser.cpp +++ b/qt/widgets/common/src/MuonFitPropertyBrowser.cpp @@ -424,7 +424,6 @@ void MuonFitPropertyBrowser::enumChanged(QtProperty *prop) { */ void MuonFitPropertyBrowser::updateGroupDisplay() { m_showGroupValue.clear(); - auto tmp = getChosenGroups().join(",").toStdString(); m_showGroupValue << getChosenGroups().join(","); m_enumManager->setEnumNames(m_showGroup, m_showGroupValue); m_multiFitSettingsGroup->property()->addSubProperty(m_showGroup); @@ -1246,10 +1245,10 @@ bool MuonFitPropertyBrowser::hasGuess() const { * By default sets all unchecked * @param groups :: [input] List of group names */ -void MuonFitPropertyBrowser::setAvailableGroups(const QStringList &groups) { - - m_enumManager->setValue(m_groupsToFit, 0); +void MuonFitPropertyBrowser::setAvailableGroups(const QStringList &groups){ +// m_enumManager->setValue(m_groupsToFit, 0); // If it's the same list, do nothing + auto selected = getChosenGroups(); if (groups.size() == m_groupBoxes.size()) { auto existingGroups = m_groupBoxes.keys(); auto newGroups = groups; @@ -1264,6 +1263,16 @@ void MuonFitPropertyBrowser::setAvailableGroups(const QStringList &groups) { for (const auto &group : groups) { addGroupCheckbox(group); } + //sets the same selection as before + for (const auto &group : selected) { + + for (auto iter = m_groupBoxes.constBegin(); iter != m_groupBoxes.constEnd(); + ++iter) { + if (iter.key().toStdString() == group.toStdString()) { + m_boolManager->setValue(iter.value(), true); + } + } + } } /** * Selects a single group/pair @@ -1297,11 +1306,11 @@ void MuonFitPropertyBrowser::addGroupCheckbox(const QString &name) { m_groupBoxes.insert(name, m_boolManager->addProperty(name)); int j = m_enumManager->value(m_groupsToFit); auto option = m_groupsToFitOptions[j].toStdString(); - if (option == "All groups") { + /*if (option == "All groups") { setAllGroups(); } else if (option == "All Pairs") { setAllPairs(); - } + }*/ } /** * Returns a list of the selected groups (checked boxes) @@ -1642,15 +1651,56 @@ void MuonFitPropertyBrowser::setSingleFitLabel(std::string name) { * @param isItGroup :: [input] if it is a group (true) */ void MuonFitPropertyBrowser::setAllGroupsOrPairs(const bool isItGroup) { - if (isItGroup) { - // all groups is index 0 - m_enumManager->setValue(m_groupsToFit, 0); - setAllGroups(); - } else { - // all pairs is index 1 - m_enumManager->setValue(m_groupsToFit, 1); - setAllPairs(); - } + + auto index = m_enumManager->value(m_groupsToFit); + QString name = m_groupsToFitOptions[index]; + if (name == CUSTOM_LABEL) { + bool match = false; + auto vals = getChosenGroups(); + auto tt = vals.size(); + clearChosenGroups(); + for (const auto &group : vals) { + + for (auto iter = m_groupBoxes.constBegin(); iter != m_groupBoxes.constEnd(); + ++iter) { + auto a = iter.key().toStdString(); + auto b = group.toStdString(); + if (iter.key().toStdString() == group.toStdString()) { + m_boolManager->setValue(iter.value(), true); + match = true; + } + } + + } + } + else if (name == ALL_GROUPS_LABEL) { + m_enumManager->setValue(m_groupsToFit, 0); + setAllGroups(); + if (getChosenGroups().size() > 0) { return; } + } + else if (name == ALL_PAIRS_LABEL) + { // all pairs is index 1 + m_enumManager->setValue(m_groupsToFit, 1); + setAllPairs(); + + } + if (getChosenGroups().size() > 0) { + return; + } + else { + + + if (isItGroup) { + // all groups is index 0 + m_enumManager->setValue(m_groupsToFit, 0); + setAllGroups(); + } + else { + // all pairs is index 1 + m_enumManager->setValue(m_groupsToFit, 1); + setAllPairs(); + } + } } void MuonFitPropertyBrowser::setGroupNames( std::vector<std::string> groupNames) {