From: Diane Trout Date: Wed, 13 Sep 2006 01:16:14 +0000 (+0000) Subject: MussaSetupDialog remembers previous load directory X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=commitdiff_plain;h=0984be7e90435fbfc5209b88fc914a937add8a4e MussaSetupDialog remembers previous load directory Implements ticket:101 Basically the setup dialog kept using the current directory, this patch stores a "default_directory" in the SequenceSetupFrame so the various SequenceSetupWidgets have a place to grab a default directory. It starts off set to the "current" path, but whill remember whatever you pick after that. (Perhaps it should default to the home directory?) --- diff --git a/qui/mussa_setup_dialog/MussaSetupDialog.cpp b/qui/mussa_setup_dialog/MussaSetupDialog.cpp index 23bc3a9..80b3301 100644 --- a/qui/mussa_setup_dialog/MussaSetupDialog.cpp +++ b/qui/mussa_setup_dialog/MussaSetupDialog.cpp @@ -27,7 +27,6 @@ MussaSetupDialog::MussaSetupDialog(QWidget *parent, Qt::WFlags f) void MussaSetupDialog::accept() { - std::cout << "Accepted\n"; done(1); } diff --git a/qui/mussa_setup_dialog/SequenceSetupFrame.cpp b/qui/mussa_setup_dialog/SequenceSetupFrame.cpp index 05ac4e8..15c34f1 100644 --- a/qui/mussa_setup_dialog/SequenceSetupFrame.cpp +++ b/qui/mussa_setup_dialog/SequenceSetupFrame.cpp @@ -13,6 +13,7 @@ SequenceSetupFrame::SequenceSetupFrame(QWidget *parent) sequenceFrame(0), scrollArea(0), seqCount(1), + default_directory(QDir::current()), sequenceLayout(0) { @@ -39,14 +40,15 @@ SequenceSetupFrame::SequenceSetupFrame(QWidget *parent) scrollArea->show(); } +QDir SequenceSetupFrame::get_default_dir() const +{ + return default_directory; +} -//SequenceSetupFrame::SequenceSetupFrame(const SequenceSetupFrame &ssf) -// : sequenceFrame(ssf.sequenceFrame), -// sequenceLayout(ssf.sequenceLayout), -// seqCount(ssf.seqCount)//, -// //seqList(0) -//{ -//} +void SequenceSetupFrame::set_default_dir(const QDir& d) +{ + default_directory = d; +} void SequenceSetupFrame::changeSequenceCount(int newSeqCount) { @@ -82,7 +84,7 @@ void SequenceSetupFrame::setupSequences(int newSeqCount) SequenceSetupWidget *seq = 0; for (int i = 1; i <= numSeqsToAdd; i++) { - seq = new SequenceSetupWidget; + seq = new SequenceSetupWidget(this); seqList.push_back(seq); sequenceLayout->addWidget(seq); } diff --git a/qui/mussa_setup_dialog/SequenceSetupFrame.hpp b/qui/mussa_setup_dialog/SequenceSetupFrame.hpp index ef40e10..bfc07c0 100644 --- a/qui/mussa_setup_dialog/SequenceSetupFrame.hpp +++ b/qui/mussa_setup_dialog/SequenceSetupFrame.hpp @@ -3,7 +3,7 @@ #include -//#include +#include #include #include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp" #include "qui/mussa_setup_dialog/SetupInfo.hpp" @@ -18,28 +18,24 @@ class SequenceSetupFrame : public QWidget public: SequenceSetupFrame(QWidget *parent = 0); - //SequenceSetupFrame(const SequenceSetupFrame&); - std::list getSetupInfo(); + + QDir get_default_dir() const; + void set_default_dir(const QDir& d); public slots: void changeSequenceCount(int seqCount); -signals: - - protected: void setupSequences(int seqCount); void resizeInnerFrame(int seqCount); int seqCount; - - //QList *seqList; std::list seqList; + QDir default_directory; QFrame *sequenceFrame; QScrollArea *scrollArea; QVBoxLayout *sequenceLayout; - }; #endif diff --git a/qui/mussa_setup_dialog/SequenceSetupWidget.cpp b/qui/mussa_setup_dialog/SequenceSetupWidget.cpp index fe89077..aa47bbd 100644 --- a/qui/mussa_setup_dialog/SequenceSetupWidget.cpp +++ b/qui/mussa_setup_dialog/SequenceSetupWidget.cpp @@ -6,17 +6,21 @@ #include #include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp" +#include "qui/mussa_setup_dialog/SequenceSetupFrame.hpp" - -SequenceSetupWidget::SequenceSetupWidget(QWidget *parent) : - QWidget(parent), +SequenceSetupWidget::SequenceSetupWidget(SequenceSetupFrame *setupFrame_, + QWidget *parent) : + QWidget(parent), sequenceNameEdit(0), sequenceLineEdit(0), annotLineEdit(0), fastaIndexLineEdit(0), seqStartLineEdit(0), - seqStopLineEdit(0) + seqStopLineEdit(0), + setupFrame(setupFrame_) { + // we really need the setupFrame, so lets declair that requirement + assert(setupFrame != 0); sequenceNameEdit = new QLineEdit; QLabel *sequenceNameLabel = new QLabel(tr("Sequence name:")); @@ -116,26 +120,30 @@ int SequenceSetupWidget::getFastaIndex() const void SequenceSetupWidget::promptForFastaFile() { + QString default_dir = setupFrame->get_default_dir().absolutePath(); QString fastaFilePath = QFileDialog::getOpenFileName(this, "Choose a fasta file", - ".", + default_dir, "Fasta (*.fa *.fasta *.fsa *.txt)"); if (fastaFilePath.isEmpty()) return; sequenceLineEdit->setText(fastaFilePath); + setupFrame->set_default_dir(QDir(fastaFilePath)); return; } void SequenceSetupWidget::promptForAnnotFile() { + QString default_dir = setupFrame->get_default_dir().absolutePath(); QString annotFilePath = QFileDialog::getOpenFileName(this, "Choose a annotation file", - ".", + default_dir, "Annot (*.txt *.annot)"); if (annotFilePath.isEmpty()) return; annotLineEdit->setText(annotFilePath); + setupFrame->set_default_dir(QDir(annotFilePath)); return; } diff --git a/qui/mussa_setup_dialog/SequenceSetupWidget.hpp b/qui/mussa_setup_dialog/SequenceSetupWidget.hpp index 1522994..a0f3a9f 100644 --- a/qui/mussa_setup_dialog/SequenceSetupWidget.hpp +++ b/qui/mussa_setup_dialog/SequenceSetupWidget.hpp @@ -5,13 +5,14 @@ #include #include +class SequenceSetupFrame; + class SequenceSetupWidget : public QWidget { Q_OBJECT public: - SequenceSetupWidget(QWidget *parent = 0); - // SequenceSetupWidget(const SequenceSetupWidget&); + SequenceSetupWidget(SequenceSetupFrame *setupFrame_, QWidget *parent=0); QString getName() const { return sequenceNameEdit->text(); } QString getSeqFile() const { return sequenceLineEdit->text(); } @@ -34,7 +35,7 @@ protected: QLineEdit *fastaIndexLineEdit; QLineEdit *seqStartLineEdit; QLineEdit *seqStopLineEdit; - + SequenceSetupFrame *setupFrame; }; #endif