Progress towards MussaSetupDialog (Currently will cause crash! Be warned!)
authorBrandon King <kingb@caltech.edu>
Wed, 22 Mar 2006 02:36:02 +0000 (02:36 +0000)
committerBrandon King <kingb@caltech.edu>
Wed, 22 Mar 2006 02:36:02 +0000 (02:36 +0000)
12 files changed:
mussagl.pro
qui/MussaWindow.cpp
qui/mussa_setup_dialog/MussaSetupDialog.cpp
qui/mussa_setup_dialog/MussaSetupDialog.hpp
qui/mussa_setup_dialog/MussaSetupWidget.cpp
qui/mussa_setup_dialog/MussaSetupWidget.hpp
qui/mussa_setup_dialog/SequenceSetupFrame.cpp
qui/mussa_setup_dialog/SequenceSetupFrame.hpp
qui/mussa_setup_dialog/SequenceSetupWidget.cpp
qui/mussa_setup_dialog/SequenceSetupWidget.hpp
qui/mussa_setup_dialog/SetupInfo.cpp [new file with mode: 0644]
qui/mussa_setup_dialog/SetupInfo.hpp [new file with mode: 0644]

index 815a62fe9ffe43fe224bb447f64e3e7add5c64b1..551dec9eece883ebf0ff36277a80149dd9a47369 100644 (file)
@@ -29,6 +29,7 @@ HEADERS += mussa_exceptions.hpp \
            qui/mussa_setup_dialog/MussaSetupDialog.hpp \
            qui/mussa_setup_dialog/SequenceSetupWidget.hpp \
            qui/mussa_setup_dialog/SequenceSetupFrame.hpp \
+           qui/mussa_setup_dialog/SetupInfo.hpp \
            alg/annotation_colors.hpp \
            alg/color.hpp \
            alg/conserved_path.hpp \
@@ -57,6 +58,7 @@ SOURCES += mussagl.cpp \
            qui/mussa_setup_dialog/MussaSetupDialog.cpp \
            qui/mussa_setup_dialog/SequenceSetupWidget.cpp \
            qui/mussa_setup_dialog/SequenceSetupFrame.cpp \
+           qui/mussa_setup_dialog/SetupInfo.cpp \
            alg/annotation_colors.cpp \
            alg/color.cpp \
            alg/conserved_path.cpp \
index 4b124436b5327e01f03f7f20d71175f2ed14e952..e2525b9c7a2b5120797682743bc8f1e514b7b80f 100644 (file)
@@ -196,6 +196,10 @@ void MussaWindow::createNewAnalysis()
   if (msd->exec())
   {
     std::cout << "New mussa exp. defined!\n";
+    Mussa *m = 0;
+    m = msd->getMussa();
+    std::cout << " Mussa Object at: " << m << "\n";
+    delete m;
   }
   else
   {
index 35a3d31aa8213495b6ff129571e326c118c227fd..9bd234d100d053576b0ce8bc472ee4d681afcd5b 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "qui/mussa_setup_dialog/MussaSetupWidget.hpp"
 #include "qui/mussa_setup_dialog/MussaSetupDialog.hpp"
+#include "alg/mussa.hpp"
 
 
 MussaSetupDialog::MussaSetupDialog(QWidget *parent, Qt::WFlags f)
@@ -12,6 +13,12 @@ MussaSetupDialog::MussaSetupDialog(QWidget *parent, Qt::WFlags f)
 {
   setupWidget = new MussaSetupWidget;
 
+  connect(setupWidget, SIGNAL(createButtonPushed()),
+         this, SLOT(accept()));
+  connect(setupWidget, SIGNAL(cancelButtonPushed()),
+         this, SLOT(reject()));
+                             
+
   QVBoxLayout *layout = new QVBoxLayout;
   
   layout->addWidget(setupWidget);
@@ -30,3 +37,8 @@ void MussaSetupDialog::reject()
   std::cout << "Rejected\n";
   done(0);
 }
+
+Mussa* MussaSetupDialog::getMussa()
+{
+  return setupWidget->getMussaObject();
+}
index 01b6114046ffaef0043c05123e65f132c46b8db2..2acc9714573f0fde75c5365ef863153869afca9b 100644 (file)
@@ -5,6 +5,7 @@
 #include <QWidget>
 
 class MussaSetupWidget;
+class Mussa;
 
 class MussaSetupDialog : public QDialog
 {
@@ -13,6 +14,8 @@ class MussaSetupDialog : public QDialog
 public:
   MussaSetupDialog(QWidget *parent = 0, Qt::WFlags f = 0);
 
+  Mussa* getMussa();
+
 public slots:
   void accept();
   void reject();
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)
+//{
+//}
index fe891c533368d40d16393b778c2c7ced81431263..4ced62bfdfd59ee5c20e32b4c5a56599e924b2fe 100644 (file)
@@ -5,8 +5,11 @@
 
 //class QFrame;
 class QLineEdit;
+class QSpinBox;
+class QPushButton;
 class SequenceSetupFrame;
 
+class Mussa;
 
 class MussaSetupWidget : public QWidget
 {
@@ -14,13 +17,26 @@ class MussaSetupWidget : public QWidget
 
 public:
   MussaSetupWidget(QWidget *parent = 0);
-  MussaSetupWidget(const MussaSetupWidget&);
+  //  MussaSetupWidget(const MussaSetupWidget&);
+
+  Mussa* getMussaObject();
+
+signals:
+  void createButtonPushed();
+  void cancelButtonPushed();
+
+private slots:
+  void mussaCreatePushed();
+  void mussaCancelPushed();
 
 private:
+
   QLineEdit *analysisNameLineEdit;
   QLineEdit *windowLineEdit;
   QLineEdit *thresholdLineEdit;
-  QLineEdit *numOfSequencesLineEdit;
+  QSpinBox *numOfSequencesSpinBox;
+  QPushButton *createPushButton;
+  QPushButton *cancelPushButton;
 
   SequenceSetupFrame *seqSetupFrame;
 };
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;
 }
+
index 4bba6128854bbc219baf59f759b3537ed89d0dba..97f0396f26b7a3201ace76fa18cbe9a41a5b6406 100644 (file)
@@ -6,6 +6,7 @@
 //#include <QList>
 #include <QWidget>
 #include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
+#include "qui/mussa_setup_dialog/SetupInfo.hpp"
 
 class QFrame; 
 class QVBoxLayout;
@@ -16,7 +17,9 @@ class SequenceSetupFrame : public QWidget
 
 public:
   SequenceSetupFrame(QWidget *parent = 0);
-  SequenceSetupFrame(const SequenceSetupFrame&);
+  //SequenceSetupFrame(const SequenceSetupFrame&);
+
+  std::list<SetupInfo *> getSetupInfo();
 
 public slots:
   void changeSequenceCount(int seqCount);
@@ -30,7 +33,7 @@ protected:
 
   
   //QList<SequenceSetupWidget> *seqList;
-  std::list<SequenceSetupWidget> seqList;
+  std::list<SequenceSetupWidget*> seqList;
   QFrame *sequenceFrame;
   QVBoxLayout *sequenceLayout;
 
index 832abbfd297866ee66219a70d8a9bb4ac2cc86ff..731b41b003d6513d2d7e036021767c1fc580cba0 100644 (file)
@@ -88,14 +88,14 @@ SequenceSetupWidget::SequenceSetupWidget(QWidget *parent) :
   setLayout(mainLayout);
 }
 
-SequenceSetupWidget::SequenceSetupWidget(const SequenceSetupWidget& ssw) :
-  sequenceLineEdit(ssw.sequenceLineEdit), 
-  annotLineEdit(ssw.annotLineEdit),
-  fastaIndexLineEdit(ssw.fastaIndexLineEdit),
-  seqStartLineEdit(ssw.seqStartLineEdit),
-  seqStopLineEdit(ssw.seqStopLineEdit)
-{
-}
+//SequenceSetupWidget::SequenceSetupWidget(const SequenceSetupWidget& ssw) :
+//  sequenceLineEdit(ssw.sequenceLineEdit), 
+//  annotLineEdit(ssw.annotLineEdit),
+//  fastaIndexLineEdit(ssw.fastaIndexLineEdit),
+//  seqStartLineEdit(ssw.seqStartLineEdit),
+//  seqStopLineEdit(ssw.seqStopLineEdit)
+//{
+//}
 
 void SequenceSetupWidget::promptForFastaFile()
 {
index e36bac06592f5ecb6aba092cd91f779775e8951e..0998c6621604c06e404db990bf066c78e93e6da0 100644 (file)
@@ -2,8 +2,8 @@
 #define _SEQUENCE_SETUP_WIDGET_H_
 
 #include <QWidget>
-
-class QLineEdit;
+#include <QString>
+#include <QLineEdit>
 
 class SequenceSetupWidget : public QWidget
 {
@@ -11,7 +11,14 @@ class SequenceSetupWidget : public QWidget
 
 public:
   SequenceSetupWidget(QWidget *parent = 0);
-  SequenceSetupWidget(const SequenceSetupWidget&);
+  //  SequenceSetupWidget(const SequenceSetupWidget&);
+
+  QString getSeqFile() { return sequenceLineEdit->text(); }
+  QString getAnnotFile() { return annotLineEdit->text(); }
+  int getFastaIndex() { return fastaIndexLineEdit->text().toInt(); }
+  int getStart() { return seqStartLineEdit->text().toInt(); }
+  int getEnd() { return seqStopLineEdit->text().toInt(); }
+  
 
 public slots:
   void promptForFastaFile();
diff --git a/qui/mussa_setup_dialog/SetupInfo.cpp b/qui/mussa_setup_dialog/SetupInfo.cpp
new file mode 100644 (file)
index 0000000..c0bef3d
--- /dev/null
@@ -0,0 +1,12 @@
+#include "qui/mussa_setup_dialog/SetupInfo.hpp"
+
+SetupInfo::SetupInfo(std::string newSeqFile, std::string newAnnotFile,
+                    int newFastaIndex, int newSubSeqStart, int newSubSeqEnd) 
+  : seqFile(newSeqFile),
+    annotFile(newAnnotFile),
+    fastaIndex(newFastaIndex),
+    subSeqStart(newSubSeqStart),
+    subSeqEnd(newSubSeqEnd)
+{
+
+}
diff --git a/qui/mussa_setup_dialog/SetupInfo.hpp b/qui/mussa_setup_dialog/SetupInfo.hpp
new file mode 100644 (file)
index 0000000..1b92fd1
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef _SETUP_INFO_H_
+#define _SETUP_INFO_H_
+
+#include <string>
+
+class SetupInfo
+{
+public:
+  SetupInfo(std::string seqFile, 
+           std::string annotFile,
+           int fastaIndex,
+           int subSeqStart=0, 
+           int subSeqEnd=0);
+
+  std::string getSeqFile() { return seqFile; };
+  std::string getAnnotFile() { return annotFile; };
+  int getFastaIndex() { return fastaIndex; };
+  int getSubSeqStart() { return subSeqStart; };
+  int getSubSeqEnd() { return subSeqEnd; };
+
+private:
+  std::string seqFile;
+  std::string annotFile;
+  int fastaIndex;
+  int subSeqStart;
+  int subSeqEnd;
+
+};
+
+#endif