Work towards MussaSetupDialog
authorBrandon King <kingb@caltech.edu>
Sat, 18 Mar 2006 01:20:50 +0000 (01:20 +0000)
committerBrandon King <kingb@caltech.edu>
Sat, 18 Mar 2006 01:20:50 +0000 (01:20 +0000)
This patch just adds a director qui/mussa_setup_dialog/ and includes the .cpp and .hpp files to support the dialog box. This patch does not touch any other areas of the code and therefor is a safe patch to pull (without worrying about merge conflicts).

qui/mussa_setup_dialog/IsFileValidator.cpp [new file with mode: 0644]
qui/mussa_setup_dialog/IsFileValidator.hpp [new file with mode: 0644]
qui/mussa_setup_dialog/MussaSetupDialog.cpp [new file with mode: 0644]
qui/mussa_setup_dialog/MussaSetupDialog.hpp [new file with mode: 0644]
qui/mussa_setup_dialog/MussaSetupWidget.cpp [new file with mode: 0644]
qui/mussa_setup_dialog/MussaSetupWidget.hpp [new file with mode: 0644]
qui/mussa_setup_dialog/SequenceSetupWidget.cpp [new file with mode: 0644]
qui/mussa_setup_dialog/SequenceSetupWidget.hpp [new file with mode: 0644]

diff --git a/qui/mussa_setup_dialog/IsFileValidator.cpp b/qui/mussa_setup_dialog/IsFileValidator.cpp
new file mode 100644 (file)
index 0000000..49e427c
--- /dev/null
@@ -0,0 +1,29 @@
+#include <QFileInfo>
+
+#include "qui/IsFileValidator.hpp"
+
+IsFileValidator::IsFileValidator(QObject *parent) 
+  : QValidator(parent)
+{
+  
+}
+
+QValidator::State IsFileValidator::validate ( QString & input, int & pos ) const
+{
+  //if (fileInfo != 0)
+  //  delete fileInfo;
+
+  QFileInfo *fileInfo = new QFileInfo(input);
+  if (fileInfo->isFile())
+  {
+    delete fileInfo;
+    fileInfo = 0;
+    return QValidator::Acceptable;
+  }
+  else
+  {
+    delete fileInfo;
+    fileInfo = 0;
+    return QValidator::Intermediate;
+  }
+}
diff --git a/qui/mussa_setup_dialog/IsFileValidator.hpp b/qui/mussa_setup_dialog/IsFileValidator.hpp
new file mode 100644 (file)
index 0000000..4602552
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef _IS_FILE_VALIDATOR_H_
+#define _IS_FILE_VALIDATOR_H_
+
+#include <QValidator>
+
+class QFileInfo;
+
+class IsFileValidator : public QValidator
+{
+  //  Q_OBJECT
+
+public:
+  IsFileValidator(QObject *parent=0);
+
+  QValidator::State validate(QString & input, int & pos) const;
+
+public slots:
+
+signals:
+
+private:
+  //QFileInfo *fileInfo;
+};
+
+#endif
diff --git a/qui/mussa_setup_dialog/MussaSetupDialog.cpp b/qui/mussa_setup_dialog/MussaSetupDialog.cpp
new file mode 100644 (file)
index 0000000..e288651
--- /dev/null
@@ -0,0 +1,32 @@
+#include <QVBoxLayout>
+
+#include <iostream>
+
+#include "qui/MussaSetupWidget.hpp"
+#include "qui/MussaSetupDialog.hpp"
+
+
+MussaSetupDialog::MussaSetupDialog(QWidget *parent, Qt::WFlags f)
+  : QDialog(parent, f),
+    setupWidget(0)
+{
+  setupWidget = new MussaSetupWidget;
+
+  QVBoxLayout *layout = new QVBoxLayout;
+  
+  layout->addWidget(setupWidget);
+
+  setLayout(layout);
+}
+
+void MussaSetupDialog::accept()
+{
+  std::cout << "Accepted\n";
+  done(1);
+}
+
+void MussaSetupDialog::reject()
+{
+  std::cout << "Rejected\n";
+  done(0);
+}
diff --git a/qui/mussa_setup_dialog/MussaSetupDialog.hpp b/qui/mussa_setup_dialog/MussaSetupDialog.hpp
new file mode 100644 (file)
index 0000000..01b6114
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef _MUSSA_SETUP_DIALOG_H_
+#define _MUSSA_SETUP_DIALOG_H_
+
+#include <QDialog>
+#include <QWidget>
+
+class MussaSetupWidget;
+
+class MussaSetupDialog : public QDialog
+{
+  Q_OBJECT
+
+public:
+  MussaSetupDialog(QWidget *parent = 0, Qt::WFlags f = 0);
+
+public slots:
+  void accept();
+  void reject();
+
+signals:
+
+private:
+  MussaSetupWidget *setupWidget;
+
+};
+
+#endif
diff --git a/qui/mussa_setup_dialog/MussaSetupWidget.cpp b/qui/mussa_setup_dialog/MussaSetupWidget.cpp
new file mode 100644 (file)
index 0000000..ca378ff
--- /dev/null
@@ -0,0 +1,62 @@
+#include <QFrame>
+#include <QLabel>
+#include <QLineEdit>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+
+#include "qui/SequenceSetupWidget.hpp"
+#include "qui/MussaSetupWidget.hpp"
+
+MussaSetupWidget::MussaSetupWidget(QWidget *parent)
+  : QWidget(parent),
+    analysisNameLineEdit(0),
+    windowLineEdit(0),
+    thresholdLineEdit(0),
+    numOfSequencesLineEdit(0),
+    sequenceFrame(0)
+{
+  
+  // Analysis name
+  analysisNameLineEdit = new QLineEdit;
+  QLabel *analysisNameLabel = new QLabel(tr("Analysis Name"));
+  analysisNameLabel->setBuddy(analysisNameLineEdit);
+
+  // Window
+  windowLineEdit = new QLineEdit;
+  QLabel *windowLabel = new QLabel(tr("Window"));
+  windowLabel->setBuddy(windowLineEdit);
+
+  // Threshold
+  thresholdLineEdit = new QLineEdit;
+  QLabel *thresholdLabel = new QLabel(tr("Threshold"));
+  thresholdLabel->setBuddy(thresholdLineEdit);
+
+  // Number of sequences
+  numOfSequencesLineEdit = new QLineEdit;
+  QLabel *numOfSequencesLabel = new QLabel(tr("Number of sequences"));
+  numOfSequencesLabel->setBuddy(numOfSequencesLineEdit);
+
+  // frame
+  sequenceFrame = new QFrame;
+  sequenceFrame->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+
+  // LAYOUT
+  QHBoxLayout *row1Layout = new QHBoxLayout;
+  QHBoxLayout *row2Layout = new QHBoxLayout;
+  QVBoxLayout *mainLayout = new QVBoxLayout;
+
+  row1Layout->addWidget(analysisNameLabel);
+  row1Layout->addWidget(analysisNameLineEdit);
+
+  row2Layout->addWidget(windowLabel);
+  row2Layout->addWidget(windowLineEdit);
+  row2Layout->addWidget(thresholdLabel);
+  row2Layout->addWidget(thresholdLineEdit);
+  row2Layout->addWidget(numOfSequencesLabel);
+  row2Layout->addWidget(numOfSequencesLineEdit);
+
+  mainLayout->addLayout(row1Layout);
+  mainLayout->addLayout(row2Layout);
+  mainLayout->addWidget(sequenceFrame);
+  setLayout(mainLayout);
+}
diff --git a/qui/mussa_setup_dialog/MussaSetupWidget.hpp b/qui/mussa_setup_dialog/MussaSetupWidget.hpp
new file mode 100644 (file)
index 0000000..5f42a60
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef _MUSSA_SETUP_WIDGET_H_
+#define _MUSSA_SETUP_WIDGET_H_
+
+#include <QWidget>
+
+class QFrame;
+class QLineEdit;
+
+
+class MussaSetupWidget : public QWidget
+{
+  Q_OBJECT
+
+public:
+  MussaSetupWidget(QWidget *parent = 0);
+
+private:
+  QLineEdit *analysisNameLineEdit;
+  QLineEdit *windowLineEdit;
+  QLineEdit *thresholdLineEdit;
+  QLineEdit *numOfSequencesLineEdit;
+
+  QFrame *sequenceFrame;
+};
+
+#endif
diff --git a/qui/mussa_setup_dialog/SequenceSetupWidget.cpp b/qui/mussa_setup_dialog/SequenceSetupWidget.cpp
new file mode 100644 (file)
index 0000000..7d77877
--- /dev/null
@@ -0,0 +1,116 @@
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QLineEdit>
+#include <QLabel>
+#include <QFileDialog>
+#include <QPushButton>
+
+//#include "qui/IsFileValidator.hpp"
+#include "qui/SequenceSetupWidget.hpp"
+
+
+SequenceSetupWidget::SequenceSetupWidget(QWidget *parent) :
+  QWidget(parent), 
+  sequenceLineEdit(0), 
+  annotLineEdit(0),
+  fastaIndexLineEdit(0),
+  seqStartLineEdit(0),
+  seqStopLineEdit(0)
+{
+
+  // Sequence row
+  sequenceLineEdit = new QLineEdit;
+  //const IsFileValidator *fileValidator = new IsFileValidator(this);
+  //sequenceLineEdit->setValidator(fileValidator);
+  QLabel *sequenceLabel = new QLabel("Sequence:");
+  sequenceLabel->setBuddy(sequenceLineEdit);
+  
+  QPushButton *sequenceButton = new QPushButton("Browse...");
+  connect(sequenceButton, SIGNAL(clicked()), 
+         this, SLOT(promptForFastaFile()));
+
+  // Annotation row
+  annotLineEdit = new QLineEdit;
+  //const IsFileValidator *fileValidator2 = new IsFileValidator(this);
+  //annotLineEdit->setValidator(fileValidator2);
+  QLabel *annotLabel = new QLabel("Label:");
+  annotLabel->setBuddy(annotLineEdit);
+
+  QPushButton *annotButton = new QPushButton("Browse...");
+  connect(annotButton, SIGNAL(clicked()),
+         this, SLOT(promptForAnnotFile()));
+
+  // Index row
+  fastaIndexLineEdit = new QLineEdit;
+  //fastaIndexLineEdit->setMaximumWidth(100);
+
+  QLabel *fastaIndexLabel = new QLabel("Fasta Index:");
+  fastaIndexLabel->setBuddy(fastaIndexLineEdit);
+
+  seqStartLineEdit = new QLineEdit;
+  //seqStartLineEdit->setMinimumWidth(60);
+  //seqStartLineEdit->setMaximumWidth(80);
+
+  QLabel *seqStartLabel = new QLabel("Sequence Start:");
+  seqStartLabel->setBuddy(seqStartLineEdit);
+  
+  seqStopLineEdit = new QLineEdit;
+  //seqStopLineEdit->setMinimumWidth(40);
+  //seqStopLineEdit->setMaximumWidth(60);
+
+  QLabel *seqStopLabel = new QLabel("Sequence Stop:");
+  seqStopLabel->setBuddy(seqStopLineEdit);
+
+  // Layout
+  QHBoxLayout *sequenceRowLayout = new QHBoxLayout;
+  QHBoxLayout *annotRowLayout = new QHBoxLayout;
+  QHBoxLayout *indexRowLayout = new QHBoxLayout;
+  QVBoxLayout *mainLayout = new QVBoxLayout;
+
+  sequenceRowLayout->addWidget(sequenceLabel);
+  sequenceRowLayout->addWidget(sequenceLineEdit);
+  sequenceRowLayout->addWidget(sequenceButton);
+
+  annotRowLayout->addWidget(annotLabel);
+  annotRowLayout->addWidget(annotLineEdit);
+  annotRowLayout->addWidget(annotButton);
+
+  indexRowLayout->addWidget(fastaIndexLabel);
+  indexRowLayout->addWidget(fastaIndexLineEdit);
+  indexRowLayout->addWidget(seqStartLabel);
+  indexRowLayout->addWidget(seqStartLineEdit);
+  indexRowLayout->addWidget(seqStopLabel);
+  indexRowLayout->addWidget(seqStopLineEdit);
+
+  mainLayout->addLayout(sequenceRowLayout);
+  mainLayout->addLayout(annotRowLayout);
+  mainLayout->addLayout(indexRowLayout);
+  setLayout(mainLayout);
+}
+
+
+void SequenceSetupWidget::promptForFastaFile()
+{
+  QString fastaFilePath = QFileDialog::getOpenFileName(this,
+                                              "Choose a fasta file",
+                                              ".",
+                                              "Fasta (*.fa *.fasta *.fsa *.txt)");
+  if (fastaFilePath.isEmpty())
+    return;
+
+  sequenceLineEdit->setText(fastaFilePath);
+  return;
+}
+
+void SequenceSetupWidget::promptForAnnotFile()
+{
+  QString annotFilePath = QFileDialog::getOpenFileName(this,
+                                              "Choose a annotation file",
+                                              ".",
+                                              "Annot (*.txt)");
+  if (annotFilePath.isEmpty())
+    return;
+
+  annotLineEdit->setText(annotFilePath);
+  return;
+}
diff --git a/qui/mussa_setup_dialog/SequenceSetupWidget.hpp b/qui/mussa_setup_dialog/SequenceSetupWidget.hpp
new file mode 100644 (file)
index 0000000..5036c26
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef _SEQUENCE_SETUP_WIDGET_H_
+#define _SEQUENCE_SETUP_WIDGET_H_
+
+#include <QWidget>
+
+class QLineEdit;
+
+class SequenceSetupWidget : public QWidget
+{
+  Q_OBJECT
+
+public:
+  SequenceSetupWidget(QWidget *parent = 0);
+
+public slots:
+  void promptForFastaFile();
+  void promptForAnnotFile();
+
+signals:
+
+protected:
+  QLineEdit *sequenceLineEdit;
+  QLineEdit *annotLineEdit;
+  QLineEdit *fastaIndexLineEdit;
+  QLineEdit *seqStartLineEdit;
+  QLineEdit *seqStopLineEdit;
+
+};
+
+#endif