Progress towards MussaSetupDialog (Currently will cause crash! Be warned!)
[mussa.git] / qui / mussa_setup_dialog / SequenceSetupFrame.cpp
index e8cd37d78b2c41b4dbad522f1b3a8100abf89eb8..10059a8461412bcba3f43ef05c58767885b6377c 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
 #include "qui/mussa_setup_dialog/SequenceSetupFrame.hpp"
+#include "qui/mussa_setup_dialog/SetupInfo.hpp"
 
 
 SequenceSetupFrame::SequenceSetupFrame(QWidget *parent)
@@ -17,9 +18,7 @@ SequenceSetupFrame::SequenceSetupFrame(QWidget *parent)
   sequenceFrame = new QFrame;
   sequenceFrame->setFrameStyle(QFrame::Panel | QFrame::Sunken);
   
-  sequenceLayout = new QVBoxLayout;
-
-  
+  sequenceLayout = new QVBoxLayout;  
 
   sequenceFrame->setLayout(sequenceLayout);
 
@@ -27,15 +26,18 @@ SequenceSetupFrame::SequenceSetupFrame(QWidget *parent)
   mainLayout->addWidget(sequenceFrame);
   setLayout(mainLayout);
 
+  //Initialize to one sequence
+  changeSequenceCount(1);
 }
 
-SequenceSetupFrame::SequenceSetupFrame(const SequenceSetupFrame &ssf)
-  : sequenceFrame(ssf.sequenceFrame),
-    sequenceLayout(ssf.sequenceLayout),
-    seqCount(ssf.seqCount)//,
-    //seqList(0)
-{
-}
+
+//SequenceSetupFrame::SequenceSetupFrame(const SequenceSetupFrame &ssf)
+//  : sequenceFrame(ssf.sequenceFrame),
+//    sequenceLayout(ssf.sequenceLayout),
+//    seqCount(ssf.seqCount)//,
+//    //seqList(0)
+//{
+//}
 
 void SequenceSetupFrame::changeSequenceCount(int newSeqCount)
 {
@@ -55,10 +57,11 @@ void SequenceSetupFrame::setupSequences(int newSeqCount)
   {
     int numSeqsToAdd = newSeqCount - curSeqCount;
 
+    SequenceSetupWidget *seq = 0;
     for (int i = 1; i <= numSeqsToAdd; i++)
     {
-      SequenceSetupWidget *seq = new SequenceSetupWidget;
-      seqList.push_back(*seq);
+      seq = new SequenceSetupWidget;
+      seqList.push_back(seq);
       sequenceLayout->addWidget(seq);
     } 
   }
@@ -71,16 +74,53 @@ void SequenceSetupFrame::setupSequences(int newSeqCount)
       numSeqsToRemove = curSeqCount;
     }
     
-    //SequenceSetupWidget *seqWidget = 0;
+    SequenceSetupWidget *seqWidget = 0;
     for (int i=1; i <= numSeqsToRemove; i++)
     {
-      SequenceSetupWidget& seqWidget(seqList.back());
-      sequenceLayout->removeWidget(&seqWidget);
+      seqWidget = seqList.back();
+      sequenceLayout->removeWidget(seqWidget);
       seqList.pop_back();
-      //delete seqWidget;
+      delete seqWidget;
     }
 
   }
   
+}
+
+std::list<SetupInfo *> SequenceSetupFrame::getSetupInfo()
+{
+  const int curSeqCount = seqList.size();
+  
+  std::list<SetupInfo *> setupInfoList;
+
+  QString seqFile;
+  QString annotFile;
+  int fastaIndex;
+  int start;
+  int end;
+
+
+  SequenceSetupWidget *seq = 0;
+  //SetupInfo *setupInfo = 0;
+  for (int i = 0; i < curSeqCount; i++)
+  {
+    seq = seqList.back();
+    
+    seqFile = seq->getSeqFile();
+    annotFile = seq->getAnnotFile();
+    fastaIndex = seq->getFastaIndex();
+    start = seq->getStart();
+    end = seq->getEnd();
+
+    seqList.push_front(seq);
+    seqList.pop_back();
 
+    setupInfoList.push_back(new SetupInfo(seqFile.toStdString(), 
+                                         annotFile.toStdString(), 
+                                         fastaIndex, start, end));
+    
+  } 
+
+  return setupInfoList;
 }
+