1 #include "qui/motif_editor/MotifEditor.hpp"
2 #include "alg/sequence.hpp"
9 MotifEditor::MotifEditor(MussaRef m, QWidget *parent)
22 const set<Sequence> &motif = analysis->motifs();
23 vector<Sequence> motif_seq(motif.begin(), motif.end());
25 applyButton->setFocusPolicy(Qt::StrongFocus);
26 connect(applyButton, SIGNAL(clicked()), this, SLOT(updateAnalysisMotifs()));
27 button_layout->addStretch();
28 button_layout->addWidget(applyButton);
30 table->setItemDelegate(delegate);
32 editor_layout->addWidget(table);
33 editor_layout->addLayout(button_layout);
34 setLayout(editor_layout);
40 void MotifEditor::setupWidgets()
42 editor_layout = new QVBoxLayout(this);
43 button_layout = new QHBoxLayout(this);
44 table = new QTableView(this);
45 delegate = new MotifEditorDelegate(this);
46 applyButton = new QPushButton("apply");
49 void MotifEditor::updateModel()
51 MotifModel *new_model = new MotifModel(analysis);
53 // if there was an old model, delete it
57 // update the QTableView
59 table->setModel(model);
63 void MotifEditor::updateAnalysisMotifs()
65 // This function is _sooo_ not thread safe
67 Color motif_default = analysis->colorMapper()->typeColor("motif");
68 analysis->colorMapper()->erase("motif");
69 analysis->colorMapper()->appendTypeColor("motif", motif_default);
71 // add our motifs back
72 vector<Sequence> new_motifs;
73 vector<Color> new_colors;
75 for(MotifModel::iterator md_i = model->begin();
79 if (md_i->getSequence().size() > 0 && md_i->isEnabled()) {
80 new_motifs.push_back(md_i->getSequence());
81 new_colors.push_back(md_i->getColor());
84 analysis->set_motifs(new_motifs, new_colors);
89 void MotifEditor::updateTitle()
91 std::string title("Motif Editor: ");
93 title += analysis->get_title();
95 setWindowTitle(title.c_str());
98 void MotifEditor::updateView()
100 for (int row = 0; row < model->rowCount(QModelIndex()); ++row)
101 table->resizeRowToContents(row);
102 for (int column = 0; column < model->columnCount(QModelIndex()); ++column)
103 table->resizeColumnToContents(column);