mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 11:56:38 +00:00 
			
		
		
		
	Fix folder name. Keep Qt optional. Move open dialogue from doc to tools. Rename 'load' to 'open'. Deleted wrong comment.
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "filedialog.hpp"
 | |
| #include <QDialogButtonBox>
 | |
| #include <QPushButton>
 | |
| 
 | |
| FileDialog::FileDialog(QWidget *parent)
 | |
|     : QFileDialog(parent)
 | |
| {
 | |
|     // Remove the default Choose button to prevent it being updated elsewhere
 | |
|     QDialogButtonBox *box = qFindChild<QDialogButtonBox*>(this);
 | |
|     Q_ASSERT(box);
 | |
|     box->removeButton(box->button(QDialogButtonBox::Open));
 | |
| 
 | |
|     // Add our own button so we can disable/enable it
 | |
|     mChooseButton = new QPushButton(tr("&Choose"));
 | |
|     mChooseButton->setIcon(QIcon::fromTheme("document-open"));
 | |
|     mChooseButton->setEnabled(false);
 | |
|     box->addButton(mChooseButton, QDialogButtonBox::AcceptRole);
 | |
| 
 | |
|     connect(this, SIGNAL(directoryEntered(const QString&)), this, SLOT(updateChooseButton(const QString&)));
 | |
|     emit directoryEntered(QDir::currentPath());
 | |
| }
 | |
| 
 | |
| QString FileDialog::getExistingDirectory(QWidget *parent,
 | |
|                                           const QString &caption,
 | |
|                                           const QString &dir,
 | |
|                                           Options options)
 | |
| {
 | |
|     // create a non-native file dialog
 | |
|     FileDialog dialog;
 | |
|     dialog.setFileMode(DirectoryOnly);
 | |
|     dialog.setOptions(options |= QFileDialog::DontUseNativeDialog | QFileDialog::ShowDirsOnly | QFileDialog::ReadOnly);
 | |
| 
 | |
|     if (!caption.isEmpty())
 | |
|         dialog.setWindowTitle(caption);
 | |
| 
 | |
|     if (!dir.isEmpty())
 | |
|         dialog.setDirectory(dir);
 | |
| 
 | |
|     if (dialog.exec() == QDialog::Accepted) {
 | |
|         return dialog.selectedFiles().value(0);
 | |
|     }
 | |
|     return QString();
 | |
| }
 | |
| 
 | |
| void FileDialog::updateChooseButton(const QString &directory)
 | |
| {
 | |
|     QDir currentDir = QDir(directory);
 | |
|     currentDir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
 | |
|     currentDir.setNameFilters(QStringList() << "*.esm" << "*.esp");
 | |
| 
 | |
|     if (!currentDir.entryList().isEmpty()) {
 | |
|         // There are data files in the current dir
 | |
|         mChooseButton->setEnabled(true);
 | |
|     } else {
 | |
|         mChooseButton->setEnabled(false);
 | |
|     }
 | |
| }
 |