From d9510a94eb7b6cb6bed125e16b49d9d8ff796742 Mon Sep 17 00:00:00 2001 From: Laura Sebesta Date: Sat, 21 Apr 2012 22:03:43 -0400 Subject: [PATCH] Fixed firmware file chooser to be a little more intelligent. Especially important for windows users. However, for Mac and Linux, this currently points to a directory relative to the build directory, which is helpful for devs, but not for users. --- .../src/plugins/uploader/devicewidget.cpp | 35 ++++++++++++++++--- .../src/plugins/uploader/devicewidget.h | 2 ++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp b/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp index eca8728f8..6c963a493 100644 --- a/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp @@ -513,22 +513,47 @@ void deviceWidget::setProgress(int percent) } /** - -Opens an open file dialog. - -*/ + *Opens an open file dialog. + */ QString deviceWidget::setOpenFileName() { QFileDialog::Options options; QString selectedFilter; + QString fwDirectoryStr; + QDir fwDirectory; + + //Format filename for file chooser +#ifdef Q_OS_WIN + fwDirectoryStr=QCoreApplication::applicationDirPath(); + fwDirectory=QDir(fwDirectoryStr); + fwDirectory.cdUp(); + fwDirectory.cd("firmware"); + fwDirectoryStr=fwDirectory.absolutePath(); +#elif defined Q_OS_LINUX + fwDirectoryStr=QCoreApplication::applicationDirPath(); + fwDirectory=QDir(fwDirectoryStr); + fwDirectory.cd("../../.."); + fwDirectoryStr=fwDirectory.absolutePath(); + fwDirectoryStr=fwDirectoryStr+"/fw_"+myDevice->lblBrdName->text().toLower()+"/fw_"+myDevice->lblBrdName->text().toLower()+".opfw"; +#elif defined Q_OS_MAC + fwDirectoryStr=QCoreApplication::applicationDirPath(); + fwDirectory=QDir(fwDirectoryStr); + fwDirectory.cd("../../../../../.."); + fwDirectoryStr=fwDirectory.absolutePath(); + fwDirectoryStr=fwDirectoryStr+"/fw_"+myDevice->lblBrdName->text().toLower()+"/fw_"+myDevice->lblBrdName->text().toLower()+".opfw"; +#endif QString fileName = QFileDialog::getOpenFileName(this, tr("Select firmware file"), - "", + fwDirectoryStr, tr("Firmware Files (*.opfw *.bin)"), &selectedFilter, options); return fileName; } + +/** + *Set the save file name + */ QString deviceWidget::setSaveFileName() { QFileDialog::Options options; diff --git a/ground/openpilotgcs/src/plugins/uploader/devicewidget.h b/ground/openpilotgcs/src/plugins/uploader/devicewidget.h index 3530c3d6a..cf011f066 100644 --- a/ground/openpilotgcs/src/plugins/uploader/devicewidget.h +++ b/ground/openpilotgcs/src/plugins/uploader/devicewidget.h @@ -40,6 +40,8 @@ #include #include "uavobjectutilmanager.h" #include "devicedescriptorstruct.h" +#include +#include using namespace OP_DFU; class deviceWidget : public QWidget {