Commit 10a00eb0 authored by Don Gagne's avatar Don Gagne

Use new QGCFileDialog api

Using QFileDialog directly on OS X can hang intermittently due to Qt
bug.
parent 4544472b
......@@ -496,7 +496,8 @@ HEADERS += \
src/ui/QGCUASFileView.h \
src/uas/QGCUASWorker.h \
src/CmdLineOptParser.h \
src/uas/QGXPX4UAS.h
src/uas/QGXPX4UAS.h \
src/QGCFileDialog.h
SOURCES += \
src/main.cc \
......
......@@ -33,7 +33,6 @@ This file is part of the QGROUNDCONTROL project
#include <QContextMenuEvent>
#include <QMenu>
#include <QDesktopServices>
#include <QFileDialog>
#include <QDebug>
#include <cmath>
......
......@@ -34,11 +34,14 @@ This file is part of the QGROUNDCONTROL project
#include <QList>
#include <QDebug>
#include <QMutexLocker>
#include <QHostInfo>
#include <iostream>
#include "QGCFlightGearLink.h"
#include "QGC.h"
#include <QHostInfo>
#include "MainWindow.h"
#include "QGCFileDialog.h"
// FlightGear _fgProcess start and connection is quite fragile. Uncomment the define below to get higher level of debug output
// for tracking down problems.
......@@ -754,7 +757,7 @@ bool QGCFlightGearLink::connectSimulation()
}
// Let the user pick the right directory
QString dirPath = QFileDialog::getExistingDirectory(MainWindow::instance(), tr("Please select directory of FlightGear application : ") + fgAppName);
QString dirPath = QGCFileDialog::getExistingDirectory(MainWindow::instance(), tr("Please select directory of FlightGear application : ") + fgAppName);
if (dirPath.isEmpty()) {
return false;
}
......
......@@ -33,7 +33,6 @@ This file is part of the QGROUNDCONTROL project
#include <QContextMenuEvent>
#include <QMenu>
#include <QStandardPaths>
#include <QFileDialog>
#include <QPaintEvent>
#include <QDebug>
......@@ -46,6 +45,7 @@ This file is part of the QGROUNDCONTROL project
#include "HUD.h"
#include "QGC.h"
#include "MainWindow.h"
#include "QGCFileDialog.h"
/**
* @warning The HUD widget will not start painting its content automatically
......@@ -1314,7 +1314,7 @@ void HUD::saveImage()
void HUD::selectOfflineDirectory()
{
QString fileName = QFileDialog::getExistingDirectory(this, tr("Select image directory"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation));
QString fileName = QGCFileDialog::getExistingDirectory(this, tr("Select image directory"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation));
if (fileName != "") {
offlineDirectory = fileName;
}
......@@ -1393,10 +1393,7 @@ void HUD::saveImages(bool save)
{
if (save)
{
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::DirectoryOnly);
imageLogDirectory = QFileDialog::getExistingDirectory(this, tr("Select image log directory"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation));
imageLogDirectory = QGCFileDialog::getExistingDirectory(this, tr("Select image log directory"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation));
qDebug() << "Logging to:" << imageLogDirectory;
......
......@@ -28,7 +28,6 @@ This file is part of the QGROUNDCONTROL project
*/
#include <QFileInfo>
#include <QFileDialog>
#include <QMessageBox>
#include <QStandardPaths>
......
......@@ -231,7 +231,7 @@ public slots:
/** @brief Add a custom tool widget */
void createCustomWidget();
/** @brief Load a custom tool widget from a file chosen by user (QFileDialog) */
/** @brief Load a custom tool widget from a file chosen by user (QGCFileDialog) */
void loadCustomWidget();
/** @brief Load a custom tool widget from a file */
......
#include "QGCBaseParamWidget.h"
#include <QFileDialog>
#include <QFile>
#include <QVariant>
#include <QTextStream>
......@@ -8,6 +7,7 @@
#include "QGCUASParamManagerInterface.h"
#include "UASInterface.h"
#include "QGCCore.h"
#include "QGCFileDialog.h"
QGCBaseParamWidget::QGCBaseParamWidget(QWidget *parent) :
QWidget(parent),
......@@ -99,7 +99,7 @@ void QGCBaseParamWidget::saveParametersToFile()
{
if (!mav)
return;
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), qgcApp()->savedParameterFilesLocation(), tr("Parameter File (*.txt)"));
QString fileName = QGCFileDialog::getSaveFileName(this, tr("Save File"), qgcApp()->savedParameterFilesLocation(), tr("Parameter File (*.txt)"));
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
return;
......@@ -116,7 +116,7 @@ void QGCBaseParamWidget::loadParametersFromFile()
if (!mav)
return;
QString fileName = QFileDialog::getOpenFileName(this, tr("Load File"), qgcApp()->savedParameterFilesLocation(), tr("Parameter file (*.txt)"));
QString fileName = QGCFileDialog::getOpenFileName(this, tr("Load File"), qgcApp()->savedParameterFilesLocation(), tr("Parameter file (*.txt)"));
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
......
......@@ -28,7 +28,6 @@ This file is part of the QGROUNDCONTROL project
*
*/
#include <QFileDialog>
#include <QTemporaryFile>
#include <QMessageBox>
#include <QPrintDialog>
......@@ -37,13 +36,15 @@ This file is part of the QGROUNDCONTROL project
#include <QSvgGenerator>
#include <QPrinter>
#include <QStandardPaths>
#include <QDebug>
#include <cmath>
#include "QGCDataPlot2D.h"
#include "ui_QGCDataPlot2D.h"
#include "MG.h"
#include "MainWindow.h"
#include <cmath>
#include <QDebug>
#include "QGCFileDialog.h"
QGCDataPlot2D::QGCDataPlot2D(QWidget *parent) :
QWidget(parent),
......@@ -117,7 +118,7 @@ void QGCDataPlot2D::loadFile(QString file)
void QGCDataPlot2D::savePlot()
{
QString fileName = "plot.svg";
fileName = QFileDialog::getSaveFileName(
fileName = QGCFileDialog::getSaveFileName(
this, "Export File Name", QStandardPaths::writableLocation(QStandardPaths::DesktopLocation),
"PDF Documents (*.pdf);;SVG Images (*.svg)");
if (fileName.isEmpty())
......@@ -137,7 +138,7 @@ void QGCDataPlot2D::savePlot()
msgBox.setDefaultButton(QMessageBox::Ok);
// Abort if cancelled
if(msgBox.exec() == QMessageBox::Cancel) return;
fileName = QFileDialog::getSaveFileName(
fileName = QGCFileDialog::getSaveFileName(
this, "Export File Name", QStandardPaths::writableLocation(QStandardPaths::DesktopLocation),
"PDF Documents (*.pdf);;SVG Images (*.svg)");
if (fileName.isEmpty())
......@@ -260,11 +261,11 @@ void QGCDataPlot2D::selectFile()
// Open a file dialog prompting the user for the file to load.
// Note the special case for the Pixhawk.
if (ui->inputFileType->currentText().contains("pxIMU") || ui->inputFileType->currentText().contains("RAW")) {
fileName = QFileDialog::getOpenFileName(this, tr("Specify log file name"), QString(), "Logfile (*.imu *.raw)");
fileName = QGCFileDialog::getOpenFileName(this, tr("Specify log file name"), QString(), "Logfile (*.imu *.raw)");
}
else
{
fileName = QFileDialog::getOpenFileName(this, tr("Specify log file name"), QString(), "Logfile (*.csv *.txt *.log)");
fileName = QGCFileDialog::getOpenFileName(this, tr("Specify log file name"), QString(), "Logfile (*.csv *.txt *.log)");
}
// Check if the user hit cancel, which results in a Null string.
......@@ -693,7 +694,7 @@ bool QGCDataPlot2D::linearRegression(double *x, double *y, int n, double *a, dou
void QGCDataPlot2D::saveCsvLog()
{
QString fileName = "export.csv";
fileName = QFileDialog::getSaveFileName(
fileName = QGCFileDialog::getSaveFileName(
this, "Export CSV File Name", QStandardPaths::writableLocation(QStandardPaths::DesktopLocation),
"CSV file (*.csv);;Text file (*.txt)");
if (fileName.isEmpty())
......@@ -719,7 +720,7 @@ void QGCDataPlot2D::saveCsvLog()
// msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
// msgBox.setDefaultButton(QMessageBox::Ok);
// if(msgBox.exec() == QMessageBox::Cancel) break;
// fileName = QFileDialog::getSaveFileName(
// fileName = QGCFileDialog::getSaveFileName(
// this, "Export CSV File Name", QStandardPaths::writableLocation(QStandardPaths::DesktopLocation),
// "CSV file (*.csv);;Text file (*.txt)");
// }
......
#include <QFileDialog>
#include <QMessageBox>
#include <QStandardPaths>
#include <QtEndian>
......@@ -10,6 +9,7 @@
#include "ui_QGCMAVLinkLogPlayer.h"
#include "QGCCore.h"
#include "LinkManager.h"
#include "QGCFileDialog.h"
QGCMAVLinkLogPlayer::QGCMAVLinkLogPlayer(MAVLinkProtocol* mavlink, QWidget *parent) :
QWidget(parent),
......@@ -264,7 +264,7 @@ void QGCMAVLinkLogPlayer::_selectLogFileForPlayback(void)
return;
}
QString logFile = QFileDialog::getOpenFileName(this,
QString logFile = QGCFileDialog::getOpenFileName(this,
tr("Specify MAVLink log file name to replay"),
qgcApp()->mavlinkLogFilesLocation(),
tr("MAVLink or Binary Logfile (*.mavlink *.bin *.log)"));
......
......@@ -30,7 +30,6 @@ This file is part of the QGROUNDCONTROL project
#include <QApplication>
#include <QDebug>
#include <QFile>
#include <QFileDialog>
#include <QGridLayout>
#include <QList>
......
......@@ -34,6 +34,7 @@
#include "MAVLinkSettingsWidget.h"
#include "GAudioOutput.h"
#include "QGCCore.h"
#include "QGCFileDialog.h"
SettingsDialog::SettingsDialog(JoystickInput *joystick, QWidget *parent, Qt::WindowFlags flags) :
QDialog(parent, flags),
......@@ -163,7 +164,7 @@ void SettingsDialog::_validateBeforeClose(void)
/// @brief Displays a directory picker dialog to allow the user to select a saved file location
void SettingsDialog::_selectSavedFilesDirectory(void)
{
QString newLocation = QFileDialog::getExistingDirectory(this,
QString newLocation = QGCFileDialog::getExistingDirectory(this,
tr("Select the directory where you want to save files to."),
_ui->savedFilesLocation->text());
if (!newLocation.isEmpty()) {
......
......@@ -23,6 +23,7 @@
#include "QGCUASFileView.h"
#include "uas/QGCUASFileManager.h"
#include "QGCFileDialog.h"
#include <QFileDialog>
#include <QDir>
......@@ -58,10 +59,10 @@ void QGCUASFileView::_downloadFile(void)
_ui.statusText->clear();
QString downloadToHere = QFileDialog::getExistingDirectory(this, tr("Download Directory"),
QString downloadToHere = QGCFileDialog::getExistingDirectory(this, tr("Download Directory"),
QDir::homePath(),
QFileDialog::ShowDirsOnly
| QFileDialog::DontResolveSymlinks);
QGCFileDialog::ShowDirsOnly
| QGCFileDialog::DontResolveSymlinks);
// And now download to this location
QString path;
......
#include "RadioCalibrationWindow.h"
#include "QGCFileDialog.h"
RadioCalibrationWindow::RadioCalibrationWindow(QWidget *parent) :
QWidget(parent, Qt::Window),
......@@ -85,7 +86,7 @@ void RadioCalibrationWindow::setChannel(int ch, float raw)
void RadioCalibrationWindow::saveFile()
{
QString fileName(QFileDialog::getSaveFileName(this,
QString fileName(QGCFileDialog::getSaveFileName(this,
tr("Save RC Calibration"),
"settings/",
tr("XML Files (*.xml)")));
......@@ -161,7 +162,7 @@ void RadioCalibrationWindow::saveFile()
void RadioCalibrationWindow::loadFile()
{
QString fileName(QFileDialog::getOpenFileName(this,
QString fileName(QGCFileDialog::getOpenFileName(this,
tr("Load RC Calibration"),
"settings/",
tr("XML Files (*.xml)")));
......
......@@ -39,7 +39,6 @@ This file is part of the QGROUNDCONTROL project
#include <QHBoxLayout>
#include <QDebug>
#include <QPointer>
#include <QFileDialog>
#include <QFile>
#include <QtXml>
#include <QTextStream>
......
......@@ -33,11 +33,12 @@ This file is part of the PIXHAWK project
#include "WaypointList.h"
#include "ui_WaypointList.h"
#include "QGCFileDialog.h"
#include <UASInterface.h>
#include <UAS.h>
#include <UASManager.h>
#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>
#include <QMouseEvent>
#include <QTextEdit>
......@@ -218,14 +219,14 @@ void WaypointList::setUAS(UASInterface* uas)
void WaypointList::saveWaypoints()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "./waypoints.txt", tr("Waypoint File (*.txt)"));
QString fileName = QGCFileDialog::getSaveFileName(this, tr("Save File"), "./waypoints.txt", tr("Waypoint File (*.txt)"));
WPM->saveWaypoints(fileName);
}
void WaypointList::loadWaypoints()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Load File"), ".", tr("Waypoint File (*.txt)"));
QString fileName = QGCFileDialog::getOpenFileName(this, tr("Load File"), ".", tr("Waypoint File (*.txt)"));
WPM->loadWaypoints(fileName);
}
......
......@@ -7,7 +7,6 @@
#include <QDockWidget>
#include <QContextMenuEvent>
#include <QSettings>
#include <QFileDialog>
#include <QStandardPaths>
#include "QGCParamSlider.h"
......@@ -16,6 +15,7 @@
#include "QGCXYPlot.h"
#include "QGCCommandButton.h"
#include "UASManager.h"
#include "QGCFileDialog.h"
QGCToolWidget::QGCToolWidget(const QString& objectName, const QString& title, QWidget *parent, QSettings* settings) :
QWidget(parent),
......@@ -571,7 +571,7 @@ void QGCToolWidget::widgetRemoved()
void QGCToolWidget::exportWidget()
{
const QString widgetFileExtension(".qgw");
QString fileName = QFileDialog::getSaveFileName(this, tr("Specify File Name"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation), tr("QGroundControl Widget (*%1);;").arg(widgetFileExtension));
QString fileName = QGCFileDialog::getSaveFileName(this, tr("Specify File Name"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation), tr("QGroundControl Widget (*%1);;").arg(widgetFileExtension));
if (!fileName.endsWith(widgetFileExtension))
{
fileName = fileName.append(widgetFileExtension);
......@@ -583,7 +583,7 @@ void QGCToolWidget::exportWidget()
void QGCToolWidget::importWidget()
{
const QString widgetFileExtension(".qgw");
QString fileName = QFileDialog::getOpenFileName(this, tr("Specify File Name"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation), tr("QGroundControl Widget (*%1);;").arg(widgetFileExtension));
QString fileName = QGCFileDialog::getOpenFileName(this, tr("Specify File Name"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation), tr("QGroundControl Widget (*%1);;").arg(widgetFileExtension));
loadSettings(fileName);
}
......
......@@ -42,7 +42,6 @@ This file is part of the PIXHAWK project
#include <QSpinBox>
#include <QColor>
#include <QPalette>
#include <QFileDialog>
#include <QStandardPaths>
#include <QMessageBox>
#include <QShortcut>
......@@ -53,7 +52,7 @@ This file is part of the PIXHAWK project
#include "MainWindow.h"
#include "QGC.h"
#include "MG.h"
#include "QGCFileDialog.h"
LinechartWidget::LinechartWidget(int systemid, QWidget *parent) : QWidget(parent),
sysid(systemid),
......@@ -456,7 +455,7 @@ void LinechartWidget::startLogging()
// Let user select the log file name
//QDate date(QDate::currentDate());
// QString("./pixhawk-log-" + date.toString("yyyy-MM-dd") + "-" + QString::number(logindex) + ".log")
QString fileName = QFileDialog::getSaveFileName(this, tr("Specify log file name"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation), tr("Logfile (*.log);;"));
QString fileName = QGCFileDialog::getSaveFileName(this, tr("Specify log file name"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation), tr("Logfile (*.log);;"));
while (!(fileName.endsWith(".log")) && !abort && fileName != "") {
QMessageBox msgBox;
......@@ -470,7 +469,7 @@ void LinechartWidget::startLogging()
abort = true;
break;
}
fileName = QFileDialog::getSaveFileName(this, tr("Specify log file name"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation), tr("Logfile (*.log);;"));
fileName = QGCFileDialog::getSaveFileName(this, tr("Specify log file name"), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation), tr("Logfile (*.log);;"));
}
qDebug() << "SAVE FILE" << fileName;
......
#include "ImageryParamDialog.h"
#include <QStandardPaths>
#include <QFileDialog>
#include <QFormLayout>
#include <QGroupBox>
#include <QPushButton>
#include "QGCFileDialog.h"
ImageryParamDialog::ImageryParamDialog(QWidget* parent)
: QDialog(parent)
{
......@@ -78,7 +79,7 @@ ImageryParamDialog::getImageryParams(GlobalViewParamsPtr &globalViewParams)
void
ImageryParamDialog::selectPath(void)
{
QString filename = QFileDialog::getExistingDirectory(this, "Imagery path",
QString filename = QGCFileDialog::getExistingDirectory(this, "Imagery path",
QStandardPaths::writableLocation(QStandardPaths::DesktopLocation));
if (filename.isNull())
{
......
......@@ -44,6 +44,7 @@
#include "PixhawkCheetahNode.h"
#include "TerrainParamDialog.h"
#include "UASManager.h"
#include "QGCFileDialog.h"
#include "QGC.h"
#include "gpl.h"
......@@ -594,7 +595,7 @@ Pixhawk3DWidget::setBirdEyeView(void)
void
Pixhawk3DWidget::loadTerrainModel(void)
{
QString filename = QFileDialog::getOpenFileName(this, "Load Terrain Model",
QString filename = QGCFileDialog::getOpenFileName(this, "Load Terrain Model",
QStandardPaths::writableLocation(QStandardPaths::DesktopLocation),
tr("Collada (*.dae)"));
......
......@@ -33,10 +33,11 @@
#include <QJsonDocument>
#include <QJsonObject>
#include <QDir>
#include <QFileDialog>
#include <QDebug>
#include <QMessageBox>
#include "QGCFileDialog.h"
/// @Brief Constructs a new PX4FirmwareUpgrade Widget. This widget is used within the PX4VehicleConfig set of screens.
PX4FirmwareUpgrade::PX4FirmwareUpgrade(QWidget *parent) :
QWidget(parent),
......@@ -475,7 +476,7 @@ void PX4FirmwareUpgrade::_getFirmwareFile(void)
_firmwareFilename = _ui->firmwareCombo->itemData(index).toString();
Q_ASSERT(!_firmwareFilename.isEmpty());
if (_firmwareFilename == "selectfile") {
_firmwareFilename = QFileDialog::getOpenFileName(this,
_firmwareFilename = QGCFileDialog::getOpenFileName(this,
tr("Select Firmware File"), // Dialog title
QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation), // Initial directory
tr("Firmware Files (*.px4 *.bin)")); // File filter
......
......@@ -32,7 +32,6 @@ This file is part of the PIXHAWK project
#include <QString>
#include <QTimer>
#include <QLabel>
#include <QFileDialog>
#include <QProcess>
#include <QPalette>
......
......@@ -31,7 +31,6 @@ This file is part of the PIXHAWK project
#include <QString>
#include <QTimer>
#include <QLabel>
#include <QFileDialog>
#include <QDebug>
#include <QApplication>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment