Progress towards MussaSetupDialog (Currently will cause crash! Be warned!)
[mussa.git] / qui / mussa_setup_dialog / MussaSetupWidget.cpp
index 02a92eb50b84712ed6ee3c1447a6b3d74ba1a2f5..e896e538db653f748bc49b56e6808ae679df629d 100644 (file)
@@ -1,19 +1,27 @@
 #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)
 {
   
@@ -33,34 +41,35 @@ MussaSetupWidget::MussaSetupWidget(QWidget *parent)
   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);
@@ -70,20 +79,71 @@ MussaSetupWidget::MussaSetupWidget(QWidget *parent)
   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)
+//{
+//}