cmake setupfiles
[mussa.git] / qui / mussa_setup_dialog / SequenceSetupWidget.cpp
1 #include <QHBoxLayout>
2 #include <QVBoxLayout>
3 #include <QLineEdit>
4 #include <QLabel>
5 #include <QFileDialog>
6 #include <QPushButton>
7
8 #include "qui/mussa_setup_dialog/SequenceSetupWidget.hpp"
9
10
11 SequenceSetupWidget::SequenceSetupWidget(QWidget *parent) :
12   QWidget(parent), 
13   sequenceLineEdit(0), 
14   annotLineEdit(0),
15   fastaIndexLineEdit(0),
16   seqStartLineEdit(0),
17   seqStopLineEdit(0)
18 {
19
20   // Sequence row
21   sequenceLineEdit = new QLineEdit;
22   //const IsFileValidator *fileValidator = new IsFileValidator(this);
23   //sequenceLineEdit->setValidator(fileValidator);
24   QLabel *sequenceLabel = new QLabel("Sequence Filename:");
25   sequenceLabel->setBuddy(sequenceLineEdit);
26   
27   QPushButton *sequenceButton = new QPushButton("Browse...");
28   connect(sequenceButton, SIGNAL(clicked()), 
29           this, SLOT(promptForFastaFile()));
30
31   // Annotation row
32   annotLineEdit = new QLineEdit;
33   //const IsFileValidator *fileValidator2 = new IsFileValidator(this);
34   //annotLineEdit->setValidator(fileValidator2);
35   QLabel *annotLabel = new QLabel("Annotation Filename:");
36   annotLabel->setBuddy(annotLineEdit);
37
38   QPushButton *annotButton = new QPushButton("Browse...");
39   connect(annotButton, SIGNAL(clicked()),
40           this, SLOT(promptForAnnotFile()));
41
42   // Index row
43   fastaIndexLineEdit = new QLineEdit;
44   //fastaIndexLineEdit->setMaximumWidth(100);
45
46   QLabel *fastaIndexLabel = new QLabel("Fasta Index:");
47   fastaIndexLabel->setBuddy(fastaIndexLineEdit);
48
49   seqStartLineEdit = new QLineEdit;
50   //seqStartLineEdit->setMinimumWidth(60);
51   //seqStartLineEdit->setMaximumWidth(80);
52
53   QLabel *seqStartLabel = new QLabel("Sequence Start:");
54   seqStartLabel->setBuddy(seqStartLineEdit);
55   
56   seqStopLineEdit = new QLineEdit;
57   //seqStopLineEdit->setMinimumWidth(40);
58   //seqStopLineEdit->setMaximumWidth(60);
59
60   QLabel *seqStopLabel = new QLabel("Sequence Stop:");
61   seqStopLabel->setBuddy(seqStopLineEdit);
62
63   // Layout
64   QHBoxLayout *sequenceRowLayout = new QHBoxLayout;
65   QHBoxLayout *annotRowLayout = new QHBoxLayout;
66   QHBoxLayout *indexRowLayout = new QHBoxLayout;
67   QVBoxLayout *mainLayout = new QVBoxLayout;
68
69   sequenceRowLayout->addWidget(sequenceLabel);
70   sequenceRowLayout->addWidget(sequenceLineEdit);
71   sequenceRowLayout->addWidget(sequenceButton);
72
73   annotRowLayout->addWidget(annotLabel);
74   annotRowLayout->addWidget(annotLineEdit);
75   annotRowLayout->addWidget(annotButton);
76
77   indexRowLayout->addWidget(fastaIndexLabel);
78   indexRowLayout->addWidget(fastaIndexLineEdit);
79   indexRowLayout->addWidget(seqStartLabel);
80   indexRowLayout->addWidget(seqStartLineEdit);
81   indexRowLayout->addWidget(seqStopLabel);
82   indexRowLayout->addWidget(seqStopLineEdit);
83
84   mainLayout->addLayout(sequenceRowLayout);
85   mainLayout->addLayout(annotRowLayout);
86   mainLayout->addLayout(indexRowLayout);
87   setLayout(mainLayout);
88 }
89
90 //SequenceSetupWidget::SequenceSetupWidget(const SequenceSetupWidget& ssw) :
91 //  sequenceLineEdit(ssw.sequenceLineEdit), 
92 //  annotLineEdit(ssw.annotLineEdit),
93 //  fastaIndexLineEdit(ssw.fastaIndexLineEdit),
94 //  seqStartLineEdit(ssw.seqStartLineEdit),
95 //  seqStopLineEdit(ssw.seqStopLineEdit)
96 //{
97 //}
98
99 int SequenceSetupWidget::getFastaIndex() const
100 {
101   if (fastaIndexLineEdit->text().size() == 0)
102     return 1;
103   else
104     return fastaIndexLineEdit->text().toInt(); 
105 }
106
107 void SequenceSetupWidget::promptForFastaFile()
108 {
109   QString fastaFilePath = QFileDialog::getOpenFileName(this,
110                                                "Choose a fasta file",
111                                                ".",
112                                                "Fasta (*.fa *.fasta *.fsa *.txt)");
113   if (fastaFilePath.isEmpty())
114     return;
115
116   sequenceLineEdit->setText(fastaFilePath);
117   return;
118 }
119
120 void SequenceSetupWidget::promptForAnnotFile()
121 {
122   QString annotFilePath = QFileDialog::getOpenFileName(this,
123                                                "Choose a annotation file",
124                                                ".",
125                                                "Annot (*.txt)");
126   if (annotFilePath.isEmpty())
127     return;
128
129   annotLineEdit->setText(annotFilePath);
130   return;
131 }