#include <QFrame>
#include <QList>
+#include <QScrollArea>
#include <QVBoxLayout>
#include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
#include "qui/mussa_setup_dialog/SequenceSetupFrame.hpp"
+#include "qui/mussa_setup_dialog/SetupInfo.hpp"
SequenceSetupFrame::SequenceSetupFrame(QWidget *parent)
: QWidget(parent),
- sequenceLayout(0),
- seqCount(0)//,
- //seqList(0)
+ sequenceFrame(0),
+ scrollArea(0),
+ seqCount(1),
+ default_directory(QDir::current()),
+ sequenceLayout(0)
{
// frame
sequenceFrame = new QFrame;
sequenceFrame->setFrameStyle(QFrame::Panel | QFrame::Sunken);
- sequenceLayout = new QVBoxLayout;
-
-
+ sequenceLayout = new QVBoxLayout;
sequenceFrame->setLayout(sequenceLayout);
+ sequenceFrame->resize(500,500);
+
+ //scroll area
+ scrollArea = new QScrollArea;
+ scrollArea->setWidget(sequenceFrame);
QVBoxLayout *mainLayout = new QVBoxLayout;
- mainLayout->addWidget(sequenceFrame);
+ mainLayout->addWidget(scrollArea);
setLayout(mainLayout);
+ //Initialize to one sequence
+ changeSequenceCount(1);
+
+ 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)
{
seqCount = newSeqCount;
setupSequences(seqCount);
+ resizeInnerFrame(seqCount);
+}
+
+void SequenceSetupFrame::resizeInnerFrame(int seqCount)
+{
+ if (seqCount >= 1)
+ {
+ sequenceFrame->resize(565, 125 * seqCount + 30);
+ }
+ else
+ {
+ sequenceFrame->resize(565, 125 + 30);
+ }
}
void SequenceSetupFrame::setupSequences(int newSeqCount)
{
int numSeqsToAdd = newSeqCount - curSeqCount;
+ SequenceSetupWidget *seq = 0;
for (int i = 1; i <= numSeqsToAdd; i++)
{
- SequenceSetupWidget *seq = new SequenceSetupWidget;
- seqList.push_back(*seq);
+ seq = new SequenceSetupWidget(this);
+ seqList.push_back(seq);
sequenceLayout->addWidget(seq);
}
}
numSeqsToRemove = curSeqCount;
}
- //SequenceSetupWidget *seqWidget = 0;
+ SequenceSetupWidget *seqWidget = 0;
for (int i=1; i <= numSeqsToRemove; i++)
{
- SequenceSetupWidget& seqWidget(seqList.back());
- sequenceLayout->removeWidget(&seqWidget);
+ seqWidget = seqList.back();
+ sequenceLayout->removeWidget(seqWidget);
seqList.pop_back();
- //delete seqWidget;
+ delete seqWidget;
}
}
+ updateGeometry();
+}
+
+std::list<SetupInfo *> SequenceSetupFrame::getSetupInfo()
+{
+ const int curSeqCount = seqList.size();
+ std::list<SetupInfo *> setupInfoList;
+
+ QString seqName;
+ QString seqFile;
+ QString annotFile;
+ int fastaIndex;
+ int start;
+ int end;
+
+ SequenceSetupWidget *seq = 0;
+ //SetupInfo *setupInfo = 0;
+ for (int i = 0; i < curSeqCount; i++)
+ {
+ seq = seqList.back();
+
+ seqName = seq->getName();
+ seqFile = seq->getSeqFile();
+ annotFile = seq->getAnnotFile();
+ fastaIndex = seq->getFastaIndex();
+ start = seq->getStart();
+ end = seq->getEnd();
+
+ seqList.push_front(seq);
+ seqList.pop_back();
+
+ setupInfoList.push_back(new SetupInfo(seqName.toStdString(),
+ seqFile.toStdString(),
+ annotFile.toStdString(),
+ fastaIndex, start, end));
+
+ }
+
+ return setupInfoList;
}
+