#include <QFrame>
#include <QLabel>
#include <QLineEdit>
+#include <QSpinBox>
#include <QVBoxLayout>
#include <QHBoxLayout>
+#include <QPushButton>
+
+#include <list>
//#include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
#include "qui/mussa_setup_dialog/SequenceSetupFrame.hpp"
#include "qui/mussa_setup_dialog/MussaSetupWidget.hpp"
+#include "qui/mussa_setup_dialog/SetupInfo.hpp"
+#include "alg/mussa.hpp"
MussaSetupWidget::MussaSetupWidget(QWidget *parent)
: QWidget(parent),
analysisNameLineEdit(0),
windowLineEdit(0),
thresholdLineEdit(0),
- numOfSequencesLineEdit(0),
+ numOfSequencesSpinBox(0),
+ createPushButton(0),
+ cancelPushButton(0),
seqSetupFrame(0)
{
thresholdLabel->setBuddy(thresholdLineEdit);
// Number of sequences
- numOfSequencesLineEdit = new QLineEdit;
+ numOfSequencesSpinBox = new QSpinBox;
QLabel *numOfSequencesLabel = new QLabel(tr("Number of sequences"));
- numOfSequencesLabel->setBuddy(numOfSequencesLineEdit);
-
- // frame
- //sequenceFrame = new QFrame;
- //sequenceFrame->setFrameStyle(QFrame::Panel | QFrame::Sunken);
- //
- //QVBoxLayout *sequenceLayout = new QVBoxLayout;
- //
- //SequenceSetupWidget *seq1 = new SequenceSetupWidget;
- //sequenceLayout->addWidget(seq1);
- //
- //SequenceSetupWidget *seq2 = new SequenceSetupWidget;
- //sequenceLayout->addWidget(seq2);
- //
- //sequenceFrame->setLayout(sequenceLayout);
+ numOfSequencesLabel->setBuddy(numOfSequencesSpinBox);
+ numOfSequencesSpinBox->setMinimum(1);
+
+
+ //Sequence setup frame
seqSetupFrame = new SequenceSetupFrame;
- seqSetupFrame->changeSequenceCount(3);
- seqSetupFrame->changeSequenceCount(2);
- //connect(numOfSequencesLineEdit, SIGNAL(changed,
- // seqSetupFrame, SLOT(changeSequenceCount(int)));
+ connect(numOfSequencesSpinBox, SIGNAL(valueChanged(int)),
+ seqSetupFrame, SLOT(changeSequenceCount(int)));
+
+ numOfSequencesSpinBox->setValue(1);
+
+ // Create Experiment Button
+ createPushButton = new QPushButton(tr("Create"));
+ connect(createPushButton, SIGNAL(pressed()),
+ this, SLOT(mussaCreatePushed()));
+
+ // Cancle Button
+ cancelPushButton = new QPushButton(tr("Cancel"));
+ connect(cancelPushButton, SIGNAL(pressed()),
+ this, SLOT(mussaCancelPushed()));
// LAYOUT
QHBoxLayout *row1Layout = new QHBoxLayout;
QHBoxLayout *row2Layout = new QHBoxLayout;
QVBoxLayout *mainLayout = new QVBoxLayout;
+ QHBoxLayout *buttonLayout = new QHBoxLayout;
row1Layout->addWidget(analysisNameLabel);
row1Layout->addWidget(analysisNameLineEdit);
row2Layout->addWidget(thresholdLabel);
row2Layout->addWidget(thresholdLineEdit);
row2Layout->addWidget(numOfSequencesLabel);
- row2Layout->addWidget(numOfSequencesLineEdit);
+ row2Layout->addWidget(numOfSequencesSpinBox);
+
+ buttonLayout->addWidget(createPushButton);
+ buttonLayout->addWidget(cancelPushButton);
mainLayout->addLayout(row1Layout);
mainLayout->addLayout(row2Layout);
mainLayout->addWidget(seqSetupFrame);
+ mainLayout->addLayout(buttonLayout);
setLayout(mainLayout);
}
-MussaSetupWidget::MussaSetupWidget(const MussaSetupWidget& msw)
- : analysisNameLineEdit(msw.analysisNameLineEdit),
- windowLineEdit(msw.windowLineEdit),
- thresholdLineEdit(msw.thresholdLineEdit),
- numOfSequencesLineEdit(msw.numOfSequencesLineEdit),
- seqSetupFrame(msw.seqSetupFrame)
+void MussaSetupWidget::mussaCreatePushed()
+{
+ emit createButtonPushed();
+}
+
+void MussaSetupWidget::mussaCancelPushed()
{
+ emit cancelButtonPushed();
}
+
+Mussa* MussaSetupWidget::getMussaObject()
+{
+ Mussa *mussa = new Mussa;
+
+
+
+ std::string seqFile;
+ std::string annotFile;
+ int fastaIndex;
+ int start;
+ int end;
+
+ std::list<SetupInfo *> setupInfoList = seqSetupFrame->getSetupInfo();
+
+ const int count = setupInfoList.size();
+
+ SetupInfo *setupInfo = 0;
+ for (int i=0; i < count; i++)
+ {
+ setupInfo = setupInfoList.back();
+ setupInfoList.pop_back();
+
+ seqFile = setupInfo->getSeqFile();
+ annotFile = setupInfo->getAnnotFile();
+ fastaIndex = setupInfo->getFastaIndex();
+ start = setupInfo->getSubSeqStart();
+ end = setupInfo->getSubSeqEnd();
+
+ mussa->load_sequence(seqFile, annotFile, fastaIndex, start, end);
+ delete setupInfo;
+ }
+
+ mussa->analyze(0, 0, Mussa::TransitiveNway, 0.0);
+
+ return mussa;
+}
+
+//MussaSetupWidget::MussaSetupWidget(const MussaSetupWidget& msw)
+// : analysisNameLineEdit(msw.analysisNameLineEdit),
+// windowLineEdit(msw.windowLineEdit),
+// thresholdLineEdit(msw.thresholdLineEdit),
+// numOfSequencesLineEdit(msw.numOfSequencesLineEdit),
+// seqSetupFrame(msw.seqSetupFrame)
+//{
+//}