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