#include "embeddedfilechooser.h" #include #include #include #include #include EmbeddedFileChooser::EmbeddedFileChooser(QWidget* parent) : QWidget(parent) { QHBoxLayout* layout = new QHBoxLayout(this); layout->setMargin(0); file_label = new QLabel(this); update_label(); layout->addWidget(file_label); QPushButton* browse_button = new QPushButton("...", this); browse_button->setFixedWidth(25); layout->addWidget(browse_button); connect(browse_button, SIGNAL(clicked(bool)), this, SLOT(browse())); } const QString &EmbeddedFileChooser::getFilename() { return filename; } const QString &EmbeddedFileChooser::getPreviousValue() { return old_filename; } void EmbeddedFileChooser::setFilename(const QString &s) { old_filename = filename; filename = s; update_label(); emit changed(); } void EmbeddedFileChooser::update_label() { QString l = "" + tr("File:") + " "; if (filename.isEmpty()) { l += "(none)"; } else { bool file_exists = QFileInfo::exists(filename); if (!file_exists) l += ""; QString short_fn = filename.mid(filename.lastIndexOf('/')+1); if (short_fn.size() > 20) { l += "..." + short_fn.right(20); } else { l += short_fn; } if (!file_exists) l += ""; } l += ""; file_label->setText(l); } void EmbeddedFileChooser::browse() { QString fn = QFileDialog::getOpenFileName(this); if (!fn.isEmpty()) { setFilename(fn); } }