Work towards MussaSetupDialog (Not finished yet).
authorBrandon King <kingb@caltech.edu>
Tue, 21 Mar 2006 20:52:04 +0000 (20:52 +0000)
committerBrandon King <kingb@caltech.edu>
Tue, 21 Mar 2006 20:52:04 +0000 (20:52 +0000)
mussagl.pro
qui/MussaWindow.cpp
qui/mussa_setup_dialog/MussaSetupDialog.cpp
qui/mussa_setup_dialog/MussaSetupWidget.cpp
qui/mussa_setup_dialog/MussaSetupWidget.hpp
qui/mussa_setup_dialog/SequenceSetupFrame.cpp [new file with mode: 0644]
qui/mussa_setup_dialog/SequenceSetupFrame.hpp [new file with mode: 0644]
qui/mussa_setup_dialog/SequenceSetupWidget.cpp
qui/mussa_setup_dialog/SequenceSetupWidget.hpp

index ab9f983b51d93ba8b8c93acb0e5962db3d32c52f..815a62fe9ffe43fe224bb447f64e3e7add5c64b1 100644 (file)
@@ -25,6 +25,10 @@ HEADERS += mussa_exceptions.hpp \
            qui/seqbrowser/SequenceBrowserSidebar.hpp \
            qui/seqbrowser/ScrollableSequenceBrowser.hpp \
            qui/seqbrowser/SequenceDescription.hpp \
+           qui/mussa_setup_dialog/MussaSetupWidget.hpp \
+           qui/mussa_setup_dialog/MussaSetupDialog.hpp \
+           qui/mussa_setup_dialog/SequenceSetupWidget.hpp \
+           qui/mussa_setup_dialog/SequenceSetupFrame.hpp \
            alg/annotation_colors.hpp \
            alg/color.hpp \
            alg/conserved_path.hpp \
@@ -49,6 +53,10 @@ SOURCES += mussagl.cpp \
            qui/seqbrowser/SequenceBrowserSidebar.cpp \
            qui/seqbrowser/ScrollableSequenceBrowser.cpp \
            qui/seqbrowser/SequenceDescription.cpp \
+           qui/mussa_setup_dialog/MussaSetupWidget.cpp \
+           qui/mussa_setup_dialog/MussaSetupDialog.cpp \
+           qui/mussa_setup_dialog/SequenceSetupWidget.cpp \
+           qui/mussa_setup_dialog/SequenceSetupFrame.cpp \
            alg/annotation_colors.cpp \
            alg/color.cpp \
            alg/conserved_path.cpp \
index 0dddbd8588cc8592826c27ec7605e7da8f89deb8..444eccef6b302987e2c6a8d801690c3e8a9fc8b8 100644 (file)
@@ -11,6 +11,7 @@
 #include <QWhatsThis>
 
 #include "qui/MussaWindow.hpp"
+#include "qui/mussa_setup_dialog/MussaSetupDialog.hpp"
 #include "mussa_exceptions.hpp"
 
 #include <iostream>
@@ -189,7 +190,16 @@ void MussaWindow::about()
 
 void MussaWindow::createNewAnalysis()
 {
-  NotImplementedBox();
+  MussaSetupDialog *msd = new MussaSetupDialog(this);
+  if (msd->exec())
+  {
+    std::cout << "New mussa exp. defined!\n";
+  }
+  else
+  {
+    std::cout << "New mussa exp. aborted!\n";
+  }
+  delete msd;
 }
 
 void MussaWindow::createSubAnalysis()
index e288651f825570197afd5cbc6daa964ce2c399f1..35a3d31aa8213495b6ff129571e326c118c227fd 100644 (file)
@@ -2,8 +2,8 @@
 
 #include <iostream>
 
-#include "qui/MussaSetupWidget.hpp"
-#include "qui/MussaSetupDialog.hpp"
+#include "qui/mussa_setup_dialog/MussaSetupWidget.hpp"
+#include "qui/mussa_setup_dialog/MussaSetupDialog.hpp"
 
 
 MussaSetupDialog::MussaSetupDialog(QWidget *parent, Qt::WFlags f)
index ca378ff448bfe57010ccdbcb507eed1b922a83ce..02a92eb50b84712ed6ee3c1447a6b3d74ba1a2f5 100644 (file)
@@ -4,8 +4,9 @@
 #include <QVBoxLayout>
 #include <QHBoxLayout>
 
-#include "qui/SequenceSetupWidget.hpp"
-#include "qui/MussaSetupWidget.hpp"
+//#include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
+#include "qui/mussa_setup_dialog/SequenceSetupFrame.hpp"
+#include "qui/mussa_setup_dialog/MussaSetupWidget.hpp"
 
 MussaSetupWidget::MussaSetupWidget(QWidget *parent)
   : QWidget(parent),
@@ -13,7 +14,7 @@ MussaSetupWidget::MussaSetupWidget(QWidget *parent)
     windowLineEdit(0),
     thresholdLineEdit(0),
     numOfSequencesLineEdit(0),
-    sequenceFrame(0)
+    seqSetupFrame(0)
 {
   
   // Analysis name
@@ -37,8 +38,24 @@ MussaSetupWidget::MussaSetupWidget(QWidget *parent)
   numOfSequencesLabel->setBuddy(numOfSequencesLineEdit);
 
   // frame
-  sequenceFrame = new QFrame;
-  sequenceFrame->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+  //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);
+  seqSetupFrame = new SequenceSetupFrame;
+  seqSetupFrame->changeSequenceCount(3);
+  seqSetupFrame->changeSequenceCount(2);
+
+  //connect(numOfSequencesLineEdit, SIGNAL(changed,
+  //     seqSetupFrame, SLOT(changeSequenceCount(int)));
 
   // LAYOUT
   QHBoxLayout *row1Layout = new QHBoxLayout;
@@ -57,6 +74,16 @@ MussaSetupWidget::MussaSetupWidget(QWidget *parent)
 
   mainLayout->addLayout(row1Layout);
   mainLayout->addLayout(row2Layout);
-  mainLayout->addWidget(sequenceFrame);
+  mainLayout->addWidget(seqSetupFrame);
   setLayout(mainLayout);
+
+}
+
+MussaSetupWidget::MussaSetupWidget(const MussaSetupWidget& msw)
+  : analysisNameLineEdit(msw.analysisNameLineEdit),
+    windowLineEdit(msw.windowLineEdit),
+    thresholdLineEdit(msw.thresholdLineEdit),
+    numOfSequencesLineEdit(msw.numOfSequencesLineEdit),
+    seqSetupFrame(msw.seqSetupFrame)
+{
 }
index 5f42a6099ba2f33ff23a5897b3a10c3aa4fed438..fe891c533368d40d16393b778c2c7ced81431263 100644 (file)
@@ -3,8 +3,9 @@
 
 #include <QWidget>
 
-class QFrame;
+//class QFrame;
 class QLineEdit;
+class SequenceSetupFrame;
 
 
 class MussaSetupWidget : public QWidget
@@ -13,6 +14,7 @@ class MussaSetupWidget : public QWidget
 
 public:
   MussaSetupWidget(QWidget *parent = 0);
+  MussaSetupWidget(const MussaSetupWidget&);
 
 private:
   QLineEdit *analysisNameLineEdit;
@@ -20,7 +22,7 @@ private:
   QLineEdit *thresholdLineEdit;
   QLineEdit *numOfSequencesLineEdit;
 
-  QFrame *sequenceFrame;
+  SequenceSetupFrame *seqSetupFrame;
 };
 
 #endif
diff --git a/qui/mussa_setup_dialog/SequenceSetupFrame.cpp b/qui/mussa_setup_dialog/SequenceSetupFrame.cpp
new file mode 100644 (file)
index 0000000..e8cd37d
--- /dev/null
@@ -0,0 +1,86 @@
+#include <QFrame>
+#include <QList>
+#include <QVBoxLayout>
+
+#include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
+#include "qui/mussa_setup_dialog/SequenceSetupFrame.hpp"
+
+
+SequenceSetupFrame::SequenceSetupFrame(QWidget *parent)
+  : QWidget(parent),
+    sequenceLayout(0),
+    seqCount(0)//,
+    //seqList(0)
+{
+
+  // frame
+  sequenceFrame = new QFrame;
+  sequenceFrame->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+  
+  sequenceLayout = new QVBoxLayout;
+
+  
+
+  sequenceFrame->setLayout(sequenceLayout);
+
+  QVBoxLayout *mainLayout = new QVBoxLayout;
+  mainLayout->addWidget(sequenceFrame);
+  setLayout(mainLayout);
+
+}
+
+SequenceSetupFrame::SequenceSetupFrame(const SequenceSetupFrame &ssf)
+  : sequenceFrame(ssf.sequenceFrame),
+    sequenceLayout(ssf.sequenceLayout),
+    seqCount(ssf.seqCount)//,
+    //seqList(0)
+{
+}
+
+void SequenceSetupFrame::changeSequenceCount(int newSeqCount)
+{
+  seqCount = newSeqCount;
+  setupSequences(seqCount);
+}
+
+void SequenceSetupFrame::setupSequences(int newSeqCount)
+{
+  const int curSeqCount = seqList.size();
+
+  if (curSeqCount == newSeqCount)
+  {
+    return;
+  }
+  else if (curSeqCount < newSeqCount)
+  {
+    int numSeqsToAdd = newSeqCount - curSeqCount;
+
+    for (int i = 1; i <= numSeqsToAdd; i++)
+    {
+      SequenceSetupWidget *seq = new SequenceSetupWidget;
+      seqList.push_back(*seq);
+      sequenceLayout->addWidget(seq);
+    } 
+  }
+  else if (curSeqCount > newSeqCount)
+  {
+    int numSeqsToRemove = curSeqCount - newSeqCount;
+    
+    if (numSeqsToRemove > curSeqCount)
+    {
+      numSeqsToRemove = curSeqCount;
+    }
+    
+    //SequenceSetupWidget *seqWidget = 0;
+    for (int i=1; i <= numSeqsToRemove; i++)
+    {
+      SequenceSetupWidget& seqWidget(seqList.back());
+      sequenceLayout->removeWidget(&seqWidget);
+      seqList.pop_back();
+      //delete seqWidget;
+    }
+
+  }
+  
+
+}
diff --git a/qui/mussa_setup_dialog/SequenceSetupFrame.hpp b/qui/mussa_setup_dialog/SequenceSetupFrame.hpp
new file mode 100644 (file)
index 0000000..4bba612
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef _SEQUENCE_SETUP_FRAME_H_
+#define _SEQUENCE_SETUP_FRAME_H_
+
+#include <list>
+
+//#include <QList>
+#include <QWidget>
+#include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
+
+class QFrame; 
+class QVBoxLayout;
+
+class SequenceSetupFrame : public QWidget
+{
+  Q_OBJECT
+
+public:
+  SequenceSetupFrame(QWidget *parent = 0);
+  SequenceSetupFrame(const SequenceSetupFrame&);
+
+public slots:
+  void changeSequenceCount(int seqCount);
+
+signals:
+
+
+protected:
+  void setupSequences(int seqCount);
+  int seqCount;
+
+  
+  //QList<SequenceSetupWidget> *seqList;
+  std::list<SequenceSetupWidget> seqList;
+  QFrame *sequenceFrame;
+  QVBoxLayout *sequenceLayout;
+
+};
+
+#endif
index 7d778771c675db262855a02db69b2ec0b24f2b74..832abbfd297866ee66219a70d8a9bb4ac2cc86ff 100644 (file)
@@ -6,7 +6,7 @@
 #include <QPushButton>
 
 //#include "qui/IsFileValidator.hpp"
-#include "qui/SequenceSetupWidget.hpp"
+#include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
 
 
 SequenceSetupWidget::SequenceSetupWidget(QWidget *parent) :
@@ -88,6 +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)
+{
+}
 
 void SequenceSetupWidget::promptForFastaFile()
 {
index 5036c26481a9b766ce12cd86d68645197e807de2..e36bac06592f5ecb6aba092cd91f779775e8951e 100644 (file)
@@ -11,6 +11,7 @@ class SequenceSetupWidget : public QWidget
 
 public:
   SequenceSetupWidget(QWidget *parent = 0);
+  SequenceSetupWidget(const SequenceSetupWidget&);
 
 public slots:
   void promptForFastaFile();