1 #include "qui/motif_editor/MotifEditor.hpp"
2 #include "alg/sequence.hpp"
9 MotifEditor::MotifEditor(Mussa *m, QWidget *parent)
12 applyButton("set motifs")
15 const set<Sequence> &motif = analysis->motifs();
16 vector<string> motif_seq(motif.begin(), motif.end());
18 connect(&applyButton, SIGNAL(clicked()), this, SLOT(updateMotifs()));
19 layout.addWidget(&applyButton);
21 for(size_t i=0; i != 10; ++i)
23 MotifDetail *detail = new MotifDetail;
24 if (i < motif_seq.size()) {
25 detail->setMotif(motif_seq[i]);
26 detail->setColor(analysis->colorMapper()->lookup("motif", motif_seq[i]));
28 motif_details.push_back(detail);
29 layout.addWidget(detail);
34 MotifEditor::MotifEditor(const MotifEditor& me)
35 : QWidget((QWidget*)me.parent()),
36 analysis(me.analysis),
37 applyButton(me.applyButton.text())
41 void MotifEditor::updateMotifs()
43 // This function is _sooo_ not thread safe
45 Color motif_default = analysis->colorMapper()->typeColor("motif");
46 analysis->colorMapper()->erase("motif");
47 analysis->colorMapper()->appendTypeColor("motif", motif_default);
49 // add our motifs back
50 vector<Sequence> motifs;
53 for(std::vector<MotifDetail *>::iterator md_i = motif_details.begin();
54 md_i != motif_details.end();
57 if ((*md_i)->motif().size() > 0 && (*md_i)->enabled()) {
58 Sequence new_motif((*md_i)->motif());
59 new_motif.set_header((*md_i)->name());
60 motifs.push_back((*md_i)->motif());
61 colors.push_back((*md_i)->color());
64 analysis->set_motifs(motifs, colors);