Skip to content
Snippets Groups Projects
Commit bb4143e9 authored by Renne Thomas's avatar Renne Thomas
Browse files

add remove old MsRun from alignment group

parent 7a2853e5
No related branches found
No related tags found
1 merge request!14Align groups column
......@@ -46,8 +46,19 @@ MsRunAlignmentGroup::setMsRunAlignmentGroupName(QString group_name)
m_groupName = group_name;
}
std::vector<MsRunSp>
std::list<MsRunSp>
MsRunAlignmentGroup::getMsRunsInAlignmentGroup()
{
return m_msrunAlignmentGroupList;
}
void
MsRunAlignmentGroup::addMsRunToMsRunAlignmentGroupList(MsRunSp new_msrun)
{
m_msrunAlignmentGroupList.push_back(new_msrun);
}
void MsRunAlignmentGroup::removeMsRunFromMsRunAlignmentGroupList(MsRunSp removed_msrun)
{
m_msrunAlignmentGroupList.remove(removed_msrun);
}
......@@ -34,15 +34,17 @@ class MsRunAlignmentGroup
public:
MsRunAlignmentGroup(QString group_name);
~MsRunAlignmentGroup();
void setMsRunAlignmentGroupName(QString group_name);
QString getMsRunAlignmentGroupName();
std::vector<MsRunSp> getMsRunsInAlignmentGroup();
std::list<MsRunSp> getMsRunsInAlignmentGroup();
void addMsRunToMsRunAlignmentGroupList(MsRunSp new_msrun);
void removeMsRunFromMsRunAlignmentGroupList(MsRunSp removed_msrun);
private:
QString m_groupName;
std::vector<MsRunSp> m_msrunAlignmentGroupList;
//MsRunSp msp_reference_ms_run = nullptr;
std::list<MsRunSp> m_msrunAlignmentGroupList;
// MsRunSp msp_reference_ms_run = nullptr;
};
......@@ -317,13 +317,35 @@ MsIdentificationListWindow::doProjectNameChanged(QString name)
}
void
MsIdentificationListWindow::setAlignmentGroup(QString group_name)
MsIdentificationListWindow::setAlignmentGroup(
MsRunAlignmentGroupSp msrun_alignment_group)
{
qDebug()
<< m_project_window->getProjectP()->getMsRunAlignmentGroupList().size();
foreach(QModelIndex index, getSelectedIndexes())
{
m_proxy_model->setData(index, group_name, Qt::EditRole);
int position = m_proxy_model->mapToSource(index).row();
MsRunSp ms_run = m_msid_table_model_p->getIdentificationDataSourceSpList()
.at(position)
->getMsRunSp();
if(msrun_alignment_group != nullptr)
{
msrun_alignment_group.get()->addMsRunToMsRunAlignmentGroupList(
ms_run);
m_proxy_model->setData(
index,
msrun_alignment_group->getMsRunAlignmentGroupName(),
Qt::EditRole);
}
else
{
ms_run.get()
->getAlignmentGroup()
->removeMsRunFromMsRunAlignmentGroupList(ms_run);
m_proxy_model->setData(index, QVariant(), Qt::EditRole);
}
}
}
......
......@@ -74,7 +74,7 @@ class MsIdentificationListWindow : public QMainWindow
bool toggled);
bool
getMsIdentificationListColumnDisplay(msIdentificationListColumn column) const;
void setAlignmentGroup(QString group_name);
void setAlignmentGroup(MsRunAlignmentGroupSp msrun_alignment_group);
void resizeColumnsToContents();
QModelIndexList getSelectedIndexes();
void virtual closeEvent(QCloseEvent *event) override;
......
......@@ -470,19 +470,30 @@ MsIdentificationTableModel::setData(const QModelIndex &index,
if(index.column() ==
(std::int8_t)msIdentificationListColumn::align_groups)
{
foreach(MsRunAlignmentGroupSp temp,
mp_project->getMsRunAlignmentGroupList())
if(!new_data.isNull())
{
if(temp->getMsRunAlignmentGroupName() == new_data)
foreach(MsRunAlignmentGroupSp msrun_alignment_group,
mp_project->getMsRunAlignmentGroupList())
{
m_identificationDataSourceSpList.at(index.row())
->getMsRunSp()
->setAlignmentGroup(temp);
if(msrun_alignment_group->getMsRunAlignmentGroupName() ==
new_data)
{
m_identificationDataSourceSpList.at(index.row())
->getMsRunSp()
->setAlignmentGroup(msrun_alignment_group);
return true;
}
}
}
return true;
else
{
m_identificationDataSourceSpList.at(index.row())
->getMsRunSp()
->setAlignmentGroup(nullptr);
return true;
}
}
return false;
}
return false;
}
......
......@@ -72,7 +72,7 @@ AlignmentGroupsQMenu::actionTriggered(QAction *action_triggered)
if(action_triggered->text() == "&Ungroup")
{
qDebug() << "ungroup";
mp_msIdListWindow->setAlignmentGroup(NULL);
mp_msIdListWindow->setAlignmentGroup(nullptr);
}
else if(action_triggered->text() == "&New Group")
{
......@@ -87,35 +87,53 @@ AlignmentGroupsQMenu::actionTriggered(QAction *action_triggered)
if(ok_clicked)
{
qDebug() << value;
if(alignmentGroupNameIsNew(value))
int msrun_alignment_group_position =
getMsRunAlignmentGroupPosition(value);
if(msrun_alignment_group_position == -1)
{
mp_subMenuGroup->addAction(value);
msp_alignmentGroup = std::make_shared<MsRunAlignmentGroup>(value);
MsRunAlignmentGroupSp new_alignment_group =
std::make_shared<MsRunAlignmentGroup>(value);
mp_project->addMsRunAlignmentGroupToList(msp_alignmentGroup);
mp_project->addMsRunAlignmentGroupToList(new_alignment_group);
mp_msIdListWindow->setAlignmentGroup(new_alignment_group);
}
else
{
mp_msIdListWindow->setAlignmentGroup(
m_msrunAlignmentGroupList.at(msrun_alignment_group_position));
}
mp_msIdListWindow->setAlignmentGroup(value);
}
}
else
{
qDebug() << "Existing Group ";
mp_msIdListWindow->setAlignmentGroup(action_triggered->text());
foreach(MsRunAlignmentGroupSp existing_group,
mp_project->getMsRunAlignmentGroupList())
{
mp_msIdListWindow->setAlignmentGroup(existing_group);
}
}
}
bool
AlignmentGroupsQMenu::alignmentGroupNameIsNew(QString new_name)
int
AlignmentGroupsQMenu::getMsRunAlignmentGroupPosition(QString new_name)
{
bool group_name_is_new = true;
int group_name_position = -1;
auto it = std::find_if(m_msrunAlignmentGroupList.begin(),
m_msrunAlignmentGroupList.end(),
[&new_name](const MsRunAlignmentGroupSp &obj) {
return obj->getMsRunAlignmentGroupName() == new_name;
});
foreach(MsRunAlignmentGroupSp alignment_group, m_msrunAlignmentGroupList)
if(it != m_msrunAlignmentGroupList.end())
{
if(alignment_group->getMsRunAlignmentGroupName() == new_name)
{
return group_name_is_new = false;
}
group_name_position =
std::distance(m_msrunAlignmentGroupList.begin(), it);
}
return group_name_is_new;
return group_name_position;
}
......@@ -45,14 +45,13 @@ class AlignmentGroupsQMenu : public QMenu
void createGroupsSubMenu();
private:
bool alignmentGroupNameIsNew(QString new_name);
int getMsRunAlignmentGroupPosition(QString new_name);
public slots:
void actionTriggered(QAction *action);
private:
MsIdentificationListWindow *mp_msIdListWindow;
MsRunAlignmentGroupSp msp_alignmentGroup;
std::vector<MsRunAlignmentGroupSp> m_msrunAlignmentGroupList;
QMenu *mp_subMenuGroup;
Project *mp_project;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment