ui: Start from home directory instead of working directory in first file dialog (issue #448)
bug id = 448
This commit is contained in:
@@ -91,6 +91,8 @@ add_files(
|
|||||||
qt/utility/QtContextMenu.h
|
qt/utility/QtContextMenu.h
|
||||||
qt/utility/QtDeviceScaledPixmap.cpp
|
qt/utility/QtDeviceScaledPixmap.cpp
|
||||||
qt/utility/QtDeviceScaledPixmap.h
|
qt/utility/QtDeviceScaledPixmap.h
|
||||||
|
qt/utility/QtFileDialog.cpp
|
||||||
|
qt/utility/QtFileDialog.h
|
||||||
qt/utility/QtHighlighter.cpp
|
qt/utility/QtHighlighter.cpp
|
||||||
qt/utility/QtHighlighter.h
|
qt/utility/QtHighlighter.h
|
||||||
qt/utility/QtScrollSpeedChangeListener.cpp
|
qt/utility/QtScrollSpeedChangeListener.cpp
|
||||||
|
|||||||
@@ -1,17 +1,15 @@
|
|||||||
#include "qt/element/QtDirectoryListBox.h"
|
#include "qt/element/QtDirectoryListBox.h"
|
||||||
|
|
||||||
#include <QBoxLayout>
|
#include <QBoxLayout>
|
||||||
#include <QFileDialog>
|
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QTreeView>
|
|
||||||
|
|
||||||
#include "qt/element/QtIconButton.h"
|
#include "qt/element/QtIconButton.h"
|
||||||
#include "qt/utility/utilityQt.h"
|
#include "qt/utility/utilityQt.h"
|
||||||
|
#include "qt/utility/QtFileDialog.h"
|
||||||
#include "qt/window/QtTextEditDialog.h"
|
#include "qt/window/QtTextEditDialog.h"
|
||||||
#include "utility/ResourcePaths.h"
|
#include "utility/ResourcePaths.h"
|
||||||
#include "utility/utilityApp.h"
|
|
||||||
#include "utility/utilityString.h"
|
#include "utility/utilityString.h"
|
||||||
|
|
||||||
QtListItemWidget::QtListItemWidget(QtDirectoryListBox* list, QListWidgetItem* item, QWidget *parent)
|
QtListItemWidget::QtListItemWidget(QtDirectoryListBox* list, QListWidgetItem* item, QWidget *parent)
|
||||||
@@ -77,37 +75,12 @@ void QtListItemWidget::setFocus()
|
|||||||
|
|
||||||
void QtListItemWidget::handleButtonPress()
|
void QtListItemWidget::handleButtonPress()
|
||||||
{
|
{
|
||||||
QFileDialog dialog(this);
|
QStringList list = QtFileDialog::getFileNamesAndDirectories(this, m_data->text());
|
||||||
|
for (int i = 0; i < list.size(); i++)
|
||||||
if (utility::getOsType() != OS_MAC)
|
|
||||||
{
|
{
|
||||||
dialog.setFileMode(QFileDialog::Directory);
|
setText(list.at(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_data->text().size())
|
|
||||||
{
|
|
||||||
dialog.setDirectory(m_data->text());
|
|
||||||
}
|
|
||||||
|
|
||||||
QListView *l = dialog.findChild<QListView*>("listView");
|
|
||||||
if (l)
|
|
||||||
{
|
|
||||||
l->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
||||||
}
|
|
||||||
QTreeView *t = dialog.findChild<QTreeView*>();
|
|
||||||
if (t)
|
|
||||||
{
|
|
||||||
t->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dialog.exec())
|
|
||||||
{
|
|
||||||
QStringList list = dialog.selectedFiles();
|
|
||||||
for (int i = 0; i < list.size(); i++)
|
|
||||||
{
|
|
||||||
setText(list.at(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
handleFocus();
|
handleFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
#include "qt/element/QtLocationPicker.h"
|
#include "qt/element/QtLocationPicker.h"
|
||||||
|
|
||||||
#include <QEvent>
|
#include <QEvent>
|
||||||
#include <QFileDialog>
|
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
@@ -10,6 +9,7 @@
|
|||||||
#include "utility/ResourcePaths.h"
|
#include "utility/ResourcePaths.h"
|
||||||
|
|
||||||
#include "qt/element/QtIconButton.h"
|
#include "qt/element/QtIconButton.h"
|
||||||
|
#include "qt/utility/QtFileDialog.h"
|
||||||
|
|
||||||
QtLocationPicker::QtLocationPicker(QWidget *parent)
|
QtLocationPicker::QtLocationPicker(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
@@ -101,11 +101,11 @@ void QtLocationPicker::handleButtonPress()
|
|||||||
QString fileName;
|
QString fileName;
|
||||||
if (m_pickDirectory)
|
if (m_pickDirectory)
|
||||||
{
|
{
|
||||||
fileName = QFileDialog::getExistingDirectory(this, tr("Select Directory"), m_data->text());
|
fileName = QtFileDialog::getExistingDirectory(this, tr("Select Directory"), m_data->text());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fileName = QFileDialog::getOpenFileName(this, tr("Open File"), m_data->text(), m_fileFilter);
|
fileName = QtFileDialog::getOpenFileName(this, tr("Open File"), m_data->text(), m_fileFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fileName.isEmpty())
|
if (!fileName.isEmpty())
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#include "qt/graphics/QtGraphicsView.h"
|
#include "qt/graphics/QtGraphicsView.h"
|
||||||
|
|
||||||
#include <QFileDialog>
|
#include <QDir>
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
#include "qt/view/graphElements/QtGraphNodeData.h"
|
#include "qt/view/graphElements/QtGraphNodeData.h"
|
||||||
#include "qt/view/graphElements/QtGraphNodeBundle.h"
|
#include "qt/view/graphElements/QtGraphNodeBundle.h"
|
||||||
#include "qt/utility/QtContextMenu.h"
|
#include "qt/utility/QtContextMenu.h"
|
||||||
|
#include "qt/utility/QtFileDialog.h"
|
||||||
#include "qt/utility/utilityQt.h"
|
#include "qt/utility/utilityQt.h"
|
||||||
#include "settings/ApplicationSettings.h"
|
#include "settings/ApplicationSettings.h"
|
||||||
#include "utility/messaging/type/MessageDisplayBookmarkCreator.h"
|
#include "utility/messaging/type/MessageDisplayBookmarkCreator.h"
|
||||||
@@ -405,58 +406,9 @@ void QtGraphicsView::stopTimer()
|
|||||||
m_timer->stop();
|
m_timer->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ShowSaveFileDialog(QWidget *parent,
|
|
||||||
const QString &title,
|
|
||||||
const QString &directory,
|
|
||||||
const QString &filter)
|
|
||||||
{
|
|
||||||
#if defined(Q_WS_WIN) || defined(Q_WS_MAC)
|
|
||||||
|
|
||||||
return QFileDialog::getSaveFileName(parent, title, directory, filter);
|
|
||||||
|
|
||||||
#else
|
|
||||||
QFileDialog dialog(parent, title, directory, filter);
|
|
||||||
|
|
||||||
if (parent)
|
|
||||||
{
|
|
||||||
dialog.setWindowModality(Qt::WindowModal);
|
|
||||||
}
|
|
||||||
|
|
||||||
QRegExp filter_regex(QLatin1String("(?:^\\*\\.(?!.*\\()|\\(\\*\\.)(\\w+)"));
|
|
||||||
QStringList filters = filter.split(QLatin1String(";;"));
|
|
||||||
|
|
||||||
if (!filters.isEmpty())
|
|
||||||
{
|
|
||||||
dialog.setNameFilters(filters);
|
|
||||||
}
|
|
||||||
|
|
||||||
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
|
||||||
|
|
||||||
if (dialog.exec() == QDialog::Accepted)
|
|
||||||
{
|
|
||||||
QString file_name = dialog.selectedFiles().constFirst();
|
|
||||||
QFileInfo info(file_name);
|
|
||||||
|
|
||||||
if (info.suffix().isEmpty() && !dialog.selectedNameFilter().isEmpty())
|
|
||||||
{
|
|
||||||
if (filter_regex.indexIn(dialog.selectedNameFilter()) != -1)
|
|
||||||
{
|
|
||||||
QString extension = filter_regex.cap(1);
|
|
||||||
file_name += QLatin1String(".") + extension;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return file_name;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return QString();
|
|
||||||
}
|
|
||||||
#endif // Q_WS_MAC || Q_WS_WIN
|
|
||||||
}
|
|
||||||
|
|
||||||
void QtGraphicsView::exportGraph()
|
void QtGraphicsView::exportGraph()
|
||||||
{
|
{
|
||||||
QString fileName = ShowSaveFileDialog(
|
QString fileName = QtFileDialog::showSaveFileDialog(
|
||||||
this, "Save image", QDir::homePath(), "PNG (*.png);;JPEG (*.JPEG);;BMP Files (*.bmp)");
|
this, "Save image", QDir::homePath(), "PNG (*.png);;JPEG (*.JPEG);;BMP Files (*.bmp)");
|
||||||
|
|
||||||
if (!fileName.isNull())
|
if (!fileName.isNull())
|
||||||
|
|||||||
@@ -0,0 +1,110 @@
|
|||||||
|
#include "qt/utility/QtFileDialog.h"
|
||||||
|
|
||||||
|
#include <QFileDialog>
|
||||||
|
#include <QListView>
|
||||||
|
#include <QTreeView>
|
||||||
|
|
||||||
|
#include "utility/utilityApp.h"
|
||||||
|
|
||||||
|
QStringList QtFileDialog::getFileNamesAndDirectories(QWidget* parent, const QString& dir)
|
||||||
|
{
|
||||||
|
QFileDialog dialog(parent);
|
||||||
|
|
||||||
|
if (utility::getOsType() != OS_MAC)
|
||||||
|
{
|
||||||
|
dialog.setFileMode(QFileDialog::Directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog.setDirectory(getDir(dir));
|
||||||
|
|
||||||
|
QListView *l = dialog.findChild<QListView*>("listView");
|
||||||
|
if (l)
|
||||||
|
{
|
||||||
|
l->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
|
}
|
||||||
|
QTreeView *t = dialog.findChild<QTreeView*>();
|
||||||
|
if (t)
|
||||||
|
{
|
||||||
|
t->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList list;
|
||||||
|
|
||||||
|
if (dialog.exec())
|
||||||
|
{
|
||||||
|
list = dialog.selectedFiles();
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QtFileDialog::getExistingDirectory(QWidget* parent, const QString& caption, const QString& dir)
|
||||||
|
{
|
||||||
|
return QFileDialog::getExistingDirectory(parent, caption, getDir(dir));
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QtFileDialog::getOpenFileName(QWidget* parent, const QString& caption, const QString& dir, const QString& filter)
|
||||||
|
{
|
||||||
|
return QFileDialog::getOpenFileName(parent, caption, getDir(dir), filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QtFileDialog::showSaveFileDialog(
|
||||||
|
QWidget *parent, const QString& title, const QString& directory, const QString& filter)
|
||||||
|
{
|
||||||
|
#if defined(Q_WS_WIN) || defined(Q_WS_MAC)
|
||||||
|
|
||||||
|
return QFileDialog::getSaveFileName(parent, title, directory, filter);
|
||||||
|
|
||||||
|
#else
|
||||||
|
QFileDialog dialog(parent, title, directory, filter);
|
||||||
|
|
||||||
|
if (parent)
|
||||||
|
{
|
||||||
|
dialog.setWindowModality(Qt::WindowModal);
|
||||||
|
}
|
||||||
|
|
||||||
|
QRegExp filter_regex(QLatin1String("(?:^\\*\\.(?!.*\\()|\\(\\*\\.)(\\w+)"));
|
||||||
|
QStringList filters = filter.split(QLatin1String(";;"));
|
||||||
|
|
||||||
|
if (!filters.isEmpty())
|
||||||
|
{
|
||||||
|
dialog.setNameFilters(filters);
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||||
|
|
||||||
|
if (dialog.exec() == QDialog::Accepted)
|
||||||
|
{
|
||||||
|
QString file_name = dialog.selectedFiles().constFirst();
|
||||||
|
QFileInfo info(file_name);
|
||||||
|
|
||||||
|
if (info.suffix().isEmpty() && !dialog.selectedNameFilter().isEmpty())
|
||||||
|
{
|
||||||
|
if (filter_regex.indexIn(dialog.selectedNameFilter()) != -1)
|
||||||
|
{
|
||||||
|
QString extension = filter_regex.cap(1);
|
||||||
|
file_name += QLatin1String(".") + extension;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return file_name;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
#endif // Q_WS_MAC || Q_WS_WIN
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QtFileDialog::getDir(QString dir)
|
||||||
|
{
|
||||||
|
static bool used = false;
|
||||||
|
|
||||||
|
if (!used && !dir.size())
|
||||||
|
{
|
||||||
|
dir = QDir::homePath();
|
||||||
|
}
|
||||||
|
|
||||||
|
used = true;
|
||||||
|
|
||||||
|
return dir;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef QT_FILE_DIALOG
|
||||||
|
#define QT_FILE_DIALOG
|
||||||
|
|
||||||
|
class QString;
|
||||||
|
class QStringList;
|
||||||
|
class QWidget;
|
||||||
|
|
||||||
|
class QtFileDialog
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static QStringList getFileNamesAndDirectories(QWidget* parent, const QString& dir);
|
||||||
|
|
||||||
|
static QString getExistingDirectory(QWidget* parent, const QString& caption, const QString& dir);
|
||||||
|
static QString getOpenFileName(QWidget* parent, const QString& caption, const QString& dir, const QString& filter);
|
||||||
|
|
||||||
|
static QString showSaveFileDialog(
|
||||||
|
QWidget *parent, const QString& title, const QString& directory, const QString& filter);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static QString getDir(QString dir);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // QT_FILE_DIALOG
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
#include "qt/window/QtMainWindow.h"
|
#include "qt/window/QtMainWindow.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QFileDialog>
|
|
||||||
#include <QDesktopServices>
|
#include <QDesktopServices>
|
||||||
#include <QDockWidget>
|
#include <QDockWidget>
|
||||||
|
#include <QDir>
|
||||||
#include <QMenuBar>
|
#include <QMenuBar>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
#include "data/bookmark/Bookmark.h"
|
#include "data/bookmark/Bookmark.h"
|
||||||
#include "LicenseChecker.h"
|
#include "LicenseChecker.h"
|
||||||
#include "qt/utility/QtContextMenu.h"
|
#include "qt/utility/QtContextMenu.h"
|
||||||
|
#include "qt/utility/QtFileDialog.h"
|
||||||
#include "qt/utility/utilityQt.h"
|
#include "qt/utility/utilityQt.h"
|
||||||
#include "qt/view/QtViewWidgetWrapper.h"
|
#include "qt/view/QtViewWidgetWrapper.h"
|
||||||
#include "qt/window/project_wizzard/QtProjectWizzard.h"
|
#include "qt/window/project_wizzard/QtProjectWizzard.h"
|
||||||
@@ -534,7 +535,7 @@ void QtMainWindow::newProjectFromCDB(const std::string& filePath, const std::vec
|
|||||||
|
|
||||||
void QtMainWindow::openProject()
|
void QtMainWindow::openProject()
|
||||||
{
|
{
|
||||||
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "", "Sourcetrail Project Files (*.srctrlprj *.coatiproject)");
|
QString fileName = QtFileDialog::getOpenFileName(this, tr("Open File"), QDir::homePath(), "Sourcetrail Project Files (*.srctrlprj *.coatiproject)");
|
||||||
|
|
||||||
if (!fileName.isEmpty())
|
if (!fileName.isEmpty())
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user