From a657f6c85412e9483f3adadea22b510bd9956e25 Mon Sep 17 00:00:00 2001 From: Brandon King Date: Sat, 18 Mar 2006 01:20:50 +0000 Subject: [PATCH] Work towards MussaSetupDialog 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 | 29 +++++ qui/mussa_setup_dialog/IsFileValidator.hpp | 25 ++++ qui/mussa_setup_dialog/MussaSetupDialog.cpp | 32 +++++ qui/mussa_setup_dialog/MussaSetupDialog.hpp | 27 ++++ qui/mussa_setup_dialog/MussaSetupWidget.cpp | 62 ++++++++++ qui/mussa_setup_dialog/MussaSetupWidget.hpp | 26 ++++ .../SequenceSetupWidget.cpp | 116 ++++++++++++++++++ .../SequenceSetupWidget.hpp | 30 +++++ 8 files changed, 347 insertions(+) create mode 100644 qui/mussa_setup_dialog/IsFileValidator.cpp create mode 100644 qui/mussa_setup_dialog/IsFileValidator.hpp create mode 100644 qui/mussa_setup_dialog/MussaSetupDialog.cpp create mode 100644 qui/mussa_setup_dialog/MussaSetupDialog.hpp create mode 100644 qui/mussa_setup_dialog/MussaSetupWidget.cpp create mode 100644 qui/mussa_setup_dialog/MussaSetupWidget.hpp create mode 100644 qui/mussa_setup_dialog/SequenceSetupWidget.cpp create mode 100644 qui/mussa_setup_dialog/SequenceSetupWidget.hpp diff --git a/qui/mussa_setup_dialog/IsFileValidator.cpp b/qui/mussa_setup_dialog/IsFileValidator.cpp new file mode 100644 index 0000000..49e427c --- /dev/null +++ b/qui/mussa_setup_dialog/IsFileValidator.cpp @@ -0,0 +1,29 @@ +#include + +#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 index 0000000..4602552 --- /dev/null +++ b/qui/mussa_setup_dialog/IsFileValidator.hpp @@ -0,0 +1,25 @@ +#ifndef _IS_FILE_VALIDATOR_H_ +#define _IS_FILE_VALIDATOR_H_ + +#include + +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 index 0000000..e288651 --- /dev/null +++ b/qui/mussa_setup_dialog/MussaSetupDialog.cpp @@ -0,0 +1,32 @@ +#include + +#include + +#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 index 0000000..01b6114 --- /dev/null +++ b/qui/mussa_setup_dialog/MussaSetupDialog.hpp @@ -0,0 +1,27 @@ +#ifndef _MUSSA_SETUP_DIALOG_H_ +#define _MUSSA_SETUP_DIALOG_H_ + +#include +#include + +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 index 0000000..ca378ff --- /dev/null +++ b/qui/mussa_setup_dialog/MussaSetupWidget.cpp @@ -0,0 +1,62 @@ +#include +#include +#include +#include +#include + +#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 index 0000000..5f42a60 --- /dev/null +++ b/qui/mussa_setup_dialog/MussaSetupWidget.hpp @@ -0,0 +1,26 @@ +#ifndef _MUSSA_SETUP_WIDGET_H_ +#define _MUSSA_SETUP_WIDGET_H_ + +#include + +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 index 0000000..7d77877 --- /dev/null +++ b/qui/mussa_setup_dialog/SequenceSetupWidget.cpp @@ -0,0 +1,116 @@ +#include +#include +#include +#include +#include +#include + +//#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 index 0000000..5036c26 --- /dev/null +++ b/qui/mussa_setup_dialog/SequenceSetupWidget.hpp @@ -0,0 +1,30 @@ +#ifndef _SEQUENCE_SETUP_WIDGET_H_ +#define _SEQUENCE_SETUP_WIDGET_H_ + +#include + +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 -- 2.30.2