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