X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=blobdiff_plain;f=qui%2Fmotif_editor%2FMotifEditor.cpp;h=acde2d3af74c8a756bb9e05f4855748215f69138;hp=93178d673faf069bfea426f025f3ca85c47c8436;hb=f88eea68b95773eb5683dcca6cf3fa59b9f00036;hpb=c087c60fe98c571a27e7508aa3d2ac14fb5d3893 diff --git a/qui/motif_editor/MotifEditor.cpp b/qui/motif_editor/MotifEditor.cpp index 93178d6..acde2d3 100644 --- a/qui/motif_editor/MotifEditor.cpp +++ b/qui/motif_editor/MotifEditor.cpp @@ -9,19 +9,21 @@ using namespace std; MotifEditor::MotifEditor(MussaRef m, QWidget *parent) : QWidget(parent), analysis(m), - editor_layout(new QVBoxLayout(parent)), - button_layout(new QHBoxLayout(parent)), - table(new QTableView(this)), - delegate(new MotifEditorDelegate(this)), - applyButton(new QPushButton("apply")), + editor_layout(0), + button_layout(0), + table(0), + delegate(0), + applyButton(0), model(0) { + setupWidgets(); + assert (m != 0); const set &motif = analysis->motifs(); vector motif_seq(motif.begin(), motif.end()); applyButton->setFocusPolicy(Qt::StrongFocus); - connect(applyButton, SIGNAL(clicked()), this, SLOT(updateMotifs())); + connect(applyButton, SIGNAL(clicked()), this, SLOT(updateAnalysisMotifs())); button_layout->addStretch(); button_layout->addWidget(applyButton); @@ -35,23 +37,35 @@ MotifEditor::MotifEditor(MussaRef m, QWidget *parent) updateModel(); } -void MotifEditor::updateModel() +void MotifEditor::setupWidgets() { - MotifModel *new_model = new MotifModel(); - - new_model->push_empty(); + editor_layout = new QVBoxLayout(this); + button_layout = new QHBoxLayout(this); + table = new QTableView(this); + delegate = new MotifEditorDelegate(this); + applyButton = new QPushButton("apply"); +} - // if there was an old model, delete it - if (model) { +void MotifEditor::updateModel() +{ + // if our current analysis doesn't match the one in our + // model, we probalby changed the analysis. + // so delete and restart + // DET 2007mar30 (can this if statement ever be true? it doesn't look + // like there's a way to change the analysis?) + if (model and model->getAnalysis() != analysis) { delete model; } - // update the QTableView - model = new_model; + + // if we don't have a model, create a new one + if (not model) { + model = new MotifModel(analysis); + } table->setModel(model); updateView(); } -void MotifEditor::updateMotifs() +void MotifEditor::updateAnalysisMotifs() { // This function is _sooo_ not thread safe // erase motifs