1 /* 2 * LibrePCB - Professional EDA for everyone! 3 * Copyright (C) 2013 LibrePCB Developers, see AUTHORS.md for contributors. 4 * https://librepcb.org/ 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef LIBREPCB_PROJECT_EDITOR_DEVICEINSTANCEPROPERTIESDIALOG_H 21 #define LIBREPCB_PROJECT_EDITOR_DEVICEINSTANCEPROPERTIESDIALOG_H 22 23 /******************************************************************************* 24 * Includes 25 ******************************************************************************/ 26 #include <librepcb/common/attributes/attribute.h> 27 28 #include <QtCore> 29 #include <QtWidgets> 30 31 /******************************************************************************* 32 * Namespace / Forward Declarations 33 ******************************************************************************/ 34 namespace librepcb { 35 36 class UndoStack; 37 class UndoCommand; 38 39 namespace project { 40 41 class Project; 42 class BI_Device; 43 44 namespace editor { 45 46 namespace Ui { 47 class DeviceInstancePropertiesDialog; 48 } 49 50 /******************************************************************************* 51 * Class DeviceInstancePropertiesDialog 52 ******************************************************************************/ 53 54 /** 55 * @brief The DeviceInstancePropertiesDialog class 56 */ 57 class DeviceInstancePropertiesDialog final : public QDialog { 58 Q_OBJECT 59 60 public: 61 // Constructors / Destructor 62 DeviceInstancePropertiesDialog() = delete; 63 DeviceInstancePropertiesDialog(const DeviceInstancePropertiesDialog& other) = 64 delete; 65 DeviceInstancePropertiesDialog(Project& project, BI_Device& device, 66 UndoStack& undoStack, 67 const LengthUnit& lengthUnit, 68 const QString& settingsPrefix, 69 QWidget* parent) noexcept; 70 ~DeviceInstancePropertiesDialog() noexcept; 71 72 // Operator Overloadings 73 DeviceInstancePropertiesDialog& operator=( 74 const DeviceInstancePropertiesDialog& rhs) = delete; 75 76 private: // Methods 77 void buttonBoxClicked(QAbstractButton* button) noexcept; 78 void keyPressEvent(QKeyEvent* e) noexcept override; 79 void accept() noexcept override; 80 bool applyChanges() noexcept; 81 82 private: // Data 83 Project& mProject; 84 BI_Device& mDevice; 85 UndoStack& mUndoStack; 86 AttributeList mAttributes; 87 QScopedPointer<Ui::DeviceInstancePropertiesDialog> mUi; 88 }; 89 90 /******************************************************************************* 91 * End of File 92 ******************************************************************************/ 93 94 } // namespace editor 95 } // namespace project 96 } // namespace librepcb 97 98 #endif // LIBREPCB_PROJECT_EDITOR_DEVICEINSTANCEPROPERTIESDIALOG_H 99