1 #include "FileDialog.h" 15 QFileDialog(parent), p_filterList(filterList), p_dir(directory) {
20 this->setOptions(QFileDialog::DontUseNativeDialog);
22 this->setWindowTitle(title);
23 this->setFileMode(QFileDialog::ExistingFiles);
25 parent->installEventFilter(
this);
26 p_appName = parent->windowTitle();
28 connect(
this, SIGNAL(accepted()),
this, SLOT(
sendSignal()));
31 this->setNameFilters(p_filterList);
33 this->setViewMode(QFileDialog::Detail);
34 if(directory.exists()) {
35 this->setDirectory(directory);
38 this->setDirectory(QDir::current());
41 p_comboBoxes = this->findChildren<QComboBox *>();
42 p_comboBoxes[0]->setEditable(
true);
43 p_comboBoxes[1]->setEditable(
true);
45 QLineEdit *lineEdit = p_comboBoxes[1]->lineEdit();
47 disconnect(lineEdit, 0, 0, 0);
48 connect(lineEdit, SIGNAL(textChanged(
const QString &)), p_comboBoxes[1],
49 SIGNAL(activated(
const QString &)));
50 connect(lineEdit, SIGNAL(editingFinished()),
this,
54 p_allPButtons = this->findChildren<QPushButton *>();
55 for(
int i = 0; i < p_allPButtons.size(); i++) {
57 disconnect(p_allPButtons[i], 0, 0, 0);
58 if(p_allPButtons[i]->text().contains(
"Open", Qt::CaseInsensitive)) {
59 connect(p_allPButtons[i], SIGNAL(clicked()),
this, SLOT(
done()));
61 if(p_allPButtons[i]->text().contains(
"Cancel", Qt::CaseInsensitive)) {
64 connect(p_allPButtons[i], SIGNAL(clicked()),
this, SLOT(
cancel()));
78 p_allPButtons[0]->setDefault(
false);
79 if(!p_filterList.contains(p_comboBoxes[1]->currentText())) {
80 p_filterList.insert(0, p_comboBoxes[1]->currentText());
81 this->setNameFilters(p_filterList);
93 p_dir = this->directory();
95 QStringList::const_iterator it = fileList.begin();
96 while(it != fileList.end()) {
97 if(!(*it).isEmpty()) {
98 emit fileSelected(*it);
132 QFileDialog::done(r);
142 p_dir = this->directory();
151 if(p_appName ==
"") {
152 p_appName = this->windowTitle();
155 QString instanceName = this->windowTitle();
157 Isis::FileName config(
"$HOME/.Isis/" + p_appName +
"/" + instanceName +
".config");
158 QSettings settings(config.
expanded(), QSettings::NativeFormat);
159 QPoint pos = settings.value(
"pos", QPoint(300, 100)).toPoint();
160 QSize size = settings.value(
"size", QSize(355, 350)).toSize();
174 if(!this->isVisible())
return;
176 if(p_appName ==
"") {
177 p_appName = this->windowTitle();
180 QString instanceName = this->windowTitle();
182 Isis::FileName config(
"$HOME/.Isis/" + p_appName +
"/" + instanceName +
".config");
183 QSettings settings(config.
expanded(), QSettings::NativeFormat);
184 settings.setValue(
"pos", pos());
185 settings.setValue(
"size", size());
203 case QEvent::Close: {
void closeEvent(QCloseEvent *event)
This method is overridden so that we can be sure to write the current settings of the Main window...
bool eventFilter(QObject *o, QEvent *e)
This event filter is installed on the parent of this window.
File name manipulation and expansion.
void writeSettings()
This method is called when the File Dialog is closed or hidden to write the size and location setting...
void done()
Called when the user presses OK.
void sendSignal()
This saves the directory that the user selected the file from so it can open to this directory next t...
QString expanded() const
Returns a QString of the full file name including the file path, excluding the attributes.
FileDialog(QString title, QStringList &filterList, QDir &directory, QWidget *parent=0)
void saveFilter()
This is where we actually set the user editable filters and remember them.
void cancel()
Called when user presses cancel.
Namespace for ISIS/Bullet specific routines.
void readSettings()
This method is called from the constructor so that when the Main window is created, it know's it's size and location.