{ "\\use_converter_needauth", LyXRC::RC_USE_CONVERTER_NEEDAUTH },
{ "\\use_converter_needauth_forbidden", LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN },
{ "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
+ { "\\use_native_filedialog", LyXRC::RC_USE_NATIVE_FILEDIALOG },
{ "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
// compatibility with versions older than 1.4.0 only
{ "\\use_system_colors", LyXRC::RC_USE_SYSTEM_COLORS },
num_lastfiles = 20;
check_lastfiles = true;
use_lastfilepos = true;
+ use_native_filedialog = true;
load_session = false;
make_backup = true;
save_compressed = false;
case RC_ACCEPT_COMPOUND:
lexrc >> spellchecker_accept_compound;
break;
+ case RC_USE_NATIVE_FILEDIALOG:
+ lexrc >> use_native_filedialog;
+ break;
case RC_USE_SYSTEM_COLORS:
lexrc >> use_system_colors;
break;
if (tag != RC_LAST)
break;
// fall through
+ case RC_USE_NATIVE_FILEDIALOG:
+ if (ignore_system_lyxrc ||
+ use_native_filedialog != system_lyxrc.use_native_filedialog) {
+ os << "\\use_native_filedialog "
+ << convert<string>(use_native_filedialog)
+ << '\n';
+ }
+ if (tag != RC_LAST)
+ break;
+ // fall through
case RC_USE_SYSTEM_COLORS:
if (ignore_system_lyxrc ||
use_system_colors != system_lyxrc.use_system_colors) {
case LyXRC::RC_USE_CONVERTER_CACHE:
case LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
case LyXRC::RC_USE_CONVERTER_NEEDAUTH:
+ case LyXRC::RC_USE_NATIVE_FILEDIALOG:
case LyXRC::RC_USE_SYSTEM_COLORS:
case LyXRC::RC_USE_TOOLTIP:
case LyXRC::RC_USE_PIXMAP_CACHE:
#include "LyXFileDialog.h"
#include "qt_helpers.h"
+#include "LyXRC.h"
+
#include "support/debug.h"
#include "support/FileName.h"
#include "support/filetools.h"
#include <string>
-/** when this is defined, the code will use
+#include <QApplication>
+
+/** when LyXRC::use_native_filedialog is true, we use
* QFileDialog::getOpenFileName and friends to create filedialogs.
* Effects:
* - the dialog does not use the quick directory buttons (Button
*
* Therefore there is a tradeoff in enabling or disabling this (JMarc)
*/
-#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
-#define USE_NATIVE_FILEDIALOG 1
-#endif
-
-#ifdef USE_NATIVE_FILEDIALOG
-#include <QApplication>
-#endif
namespace lyx {
FileDialog::Result result;
result.first = FileDialog::Chosen;
-#ifdef USE_NATIVE_FILEDIALOG
- QString const startsWith = makeAbsPath(suggested, path);
- QString const name =
- QFileDialog::getSaveFileName(qApp->focusWidget(),
- title_, startsWith, filters.join(";;"),
- selectedFilter, QFileDialog::DontConfirmOverwrite);
- if (name.isNull())
- result.first = FileDialog::Later;
- else
- result.second = toqstr(os::internal_path(fromqstr(name)));
-#else
- LyXFileDialog dlg(title_, path, filters, private_->b1, private_->b2);
- dlg.setFileMode(QFileDialog::AnyFile);
- dlg.setAcceptMode(QFileDialog::AcceptSave);
- dlg.setConfirmOverwrite(false);
- if (selectedFilter != 0 && !selectedFilter->isEmpty())
- dlg.selectNameFilter(*selectedFilter);
-
- if (!suggested.isEmpty())
- dlg.selectFile(suggested);
-
- LYXERR(Debug::GUI, "Synchronous FileDialog: ");
- int res = dlg.exec();
- LYXERR(Debug::GUI, "result " << res);
- if (res == QDialog::Accepted)
- result.second = internalPath(dlg.selectedFiles()[0]);
- else
- result.first = FileDialog::Later;
- if (selectedFilter != 0)
- *selectedFilter = dlg.selectedNameFilter();
- dlg.hide();
-#endif
+ if (lyxrc.use_native_filedialog) {
+ QString const startsWith = makeAbsPath(suggested, path);
+ QString const name =
+ QFileDialog::getSaveFileName(qApp->focusWidget(),
+ title_, startsWith, filters.join(";;"),
+ selectedFilter, QFileDialog::DontConfirmOverwrite);
+ if (name.isNull())
+ result.first = FileDialog::Later;
+ else
+ result.second = toqstr(os::internal_path(fromqstr(name)));
+ } else {
+ LyXFileDialog dlg(title_, path, filters, private_->b1, private_->b2);
+ dlg.setFileMode(QFileDialog::AnyFile);
+ dlg.setAcceptMode(QFileDialog::AcceptSave);
+ dlg.setConfirmOverwrite(false);
+ if (selectedFilter != 0 && !selectedFilter->isEmpty())
+ dlg.selectNameFilter(*selectedFilter);
+
+ if (!suggested.isEmpty())
+ dlg.selectFile(suggested);
+
+ LYXERR(Debug::GUI, "Synchronous FileDialog: ");
+ int res = dlg.exec();
+ LYXERR(Debug::GUI, "result " << res);
+ if (res == QDialog::Accepted)
+ result.second = internalPath(dlg.selectedFiles()[0]);
+ else
+ result.first = FileDialog::Later;
+ if (selectedFilter != 0)
+ *selectedFilter = dlg.selectedNameFilter();
+ dlg.hide();
+ }
return result;
}
FileDialog::Result result;
result.first = FileDialog::Chosen;
-#ifdef USE_NATIVE_FILEDIALOG
- QString const startsWith = makeAbsPath(suggested, path);
- QString const file = QFileDialog::getOpenFileName(qApp->focusWidget(),
- title_, startsWith, filters.join(";;"));
- if (file.isNull())
- result.first = FileDialog::Later;
- else
- result.second = internalPath(file);
-#else
- LyXFileDialog dlg(title_, path, filters, private_->b1, private_->b2);
-
- if (!suggested.isEmpty())
- dlg.selectFile(suggested);
-
- LYXERR(Debug::GUI, "Synchronous FileDialog: ");
- int res = dlg.exec();
- LYXERR(Debug::GUI, "result " << res);
- if (res == QDialog::Accepted)
- result.second = internalPath(dlg.selectedFiles()[0]);
- else
- result.first = FileDialog::Later;
- dlg.hide();
-#endif
+ if (lyxrc.use_native_filedialog) {
+ QString const startsWith = makeAbsPath(suggested, path);
+ QString const file = QFileDialog::getOpenFileName(qApp->focusWidget(),
+ title_, startsWith, filters.join(";;"));
+ if (file.isNull())
+ result.first = FileDialog::Later;
+ else
+ result.second = internalPath(file);
+ } else {
+ LyXFileDialog dlg(title_, path, filters, private_->b1, private_->b2);
+
+ if (!suggested.isEmpty())
+ dlg.selectFile(suggested);
+
+ LYXERR(Debug::GUI, "Synchronous FileDialog: ");
+ int res = dlg.exec();
+ LYXERR(Debug::GUI, "result " << res);
+ if (res == QDialog::Accepted)
+ result.second = internalPath(dlg.selectedFiles()[0]);
+ else
+ result.first = FileDialog::Later;
+ dlg.hide();
+ }
return result;
}
FileDialog::Result result;
result.first = FileDialog::Chosen;
-#ifdef USE_NATIVE_FILEDIALOG
- QString const startsWith = toqstr(makeAbsPath(fromqstr(suggested),
- fromqstr(path)).absFileName());
- QString const dir = QFileDialog::getExistingDirectory(qApp->focusWidget(),
- title_, startsWith);
- if (dir.isNull())
- result.first = FileDialog::Later;
- else
- result.second = toqstr(os::internal_path(fromqstr(dir)));
-#else
- LyXFileDialog dlg(title_, path, QStringList(qt_("Directories")),
- private_->b1, private_->b2);
-
- dlg.setFileMode(QFileDialog::DirectoryOnly);
-
- if (!suggested.isEmpty())
- dlg.selectFile(suggested);
-
- LYXERR(Debug::GUI, "Synchronous FileDialog: ");
- int res = dlg.exec();
- LYXERR(Debug::GUI, "result " << res);
- if (res == QDialog::Accepted)
- result.second = internalPath(dlg.selectedFiles()[0]);
- else
- result.first = FileDialog::Later;
- dlg.hide();
-#endif
+ if (lyxrc.use_native_filedialog) {
+ QString const startsWith =
+ toqstr(makeAbsPath(fromqstr(suggested), fromqstr(path)).absFileName());
+ QString const dir =
+ QFileDialog::getExistingDirectory(qApp->focusWidget(), title_, startsWith);
+ if (dir.isNull())
+ result.first = FileDialog::Later;
+ else
+ result.second = toqstr(os::internal_path(fromqstr(dir)));
+ } else {
+ LyXFileDialog dlg(title_, path, QStringList(qt_("Directories")),
+ private_->b1, private_->b2);
+
+ dlg.setFileMode(QFileDialog::DirectoryOnly);
+
+ if (!suggested.isEmpty())
+ dlg.selectFile(suggested);
+
+ LYXERR(Debug::GUI, "Synchronous FileDialog: ");
+ int res = dlg.exec();
+ LYXERR(Debug::GUI, "result " << res);
+ if (res == QDialog::Accepted)
+ result.second = internalPath(dlg.selectedFiles()[0]);
+ else
+ result.first = FileDialog::Later;
+ dlg.hide();
+ }
return result;
}