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).
--- /dev/null
+#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;
+ }
+}
--- /dev/null
+#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
--- /dev/null
+#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);
+}
--- /dev/null
+#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
--- /dev/null
+#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);
+}
--- /dev/null
+#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
--- /dev/null
+#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;
+}
--- /dev/null
+#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