FileSelectionPage.cpp 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include "FileSelectionPage.h"
  9. #include <AzCore/Utils/Utils.h>
  10. #include <QFileInfo>
  11. #include <QHBoxLayout>
  12. #include <QVBoxLayout>
  13. namespace ROS2
  14. {
  15. FileSelectionPage::FileSelectionPage(QWizard* parent)
  16. : QWizardPage(parent)
  17. {
  18. m_fileDialog = new QFileDialog(this);
  19. m_fileDialog->setDirectory(QString::fromUtf8(AZ::Utils::GetProjectPath().data()));
  20. m_fileDialog->setNameFilter("URDF, XACRO (*.urdf *.xacro)");
  21. m_button = new QPushButton("...", this);
  22. m_textEdit = new QLineEdit("", this);
  23. m_copyFiles = new QCheckBox(tr("Import meshes during URDF load"), this);
  24. m_copyFiles->setCheckState(Qt::CheckState::Checked);
  25. setTitle(tr("Load URDF file"));
  26. QVBoxLayout* layout = new QVBoxLayout;
  27. layout->addStretch();
  28. layout->addWidget(new QLabel(tr("URDF file path to load : "), this));
  29. QHBoxLayout* layout_in = new QHBoxLayout;
  30. layout_in->addWidget(m_button);
  31. layout_in->addWidget(m_textEdit);
  32. layout->addLayout(layout_in);
  33. layout->addWidget(m_copyFiles);
  34. layout->addStretch();
  35. this->setLayout(layout);
  36. connect(m_button, &QPushButton::pressed, this, &FileSelectionPage::onLoadButtonPressed);
  37. connect(m_fileDialog, &QFileDialog::fileSelected, this, &FileSelectionPage::onFileSelected);
  38. connect(m_textEdit, &QLineEdit::editingFinished, this, &FileSelectionPage::onEditingFinished);
  39. FileSelectionPage::onEditingFinished();
  40. }
  41. void FileSelectionPage::onLoadButtonPressed()
  42. {
  43. m_fileDialog->show();
  44. }
  45. void FileSelectionPage::onFileSelected(const QString& file)
  46. {
  47. QFileInfo urdfFile(file);
  48. m_textEdit->setText(file);
  49. m_fileExists = urdfFile.exists() && urdfFile.isFile();
  50. emit completeChanged();
  51. }
  52. void FileSelectionPage::onEditingFinished()
  53. {
  54. QFileInfo urdfFile(m_textEdit->text());
  55. m_fileExists = urdfFile.exists() && urdfFile.isFile();
  56. emit completeChanged();
  57. }
  58. bool FileSelectionPage::isComplete() const
  59. {
  60. return m_fileExists;
  61. }
  62. bool FileSelectionPage::getIfCopyAssetsDuringUrdfImport() const
  63. {
  64. return m_copyFiles->isChecked();
  65. }
  66. } // namespace ROS2