diff --git a/src/blackgui/components/coordinatedialog.cpp b/src/blackgui/components/coordinatedialog.cpp new file mode 100644 index 000000000..1abd9ca46 --- /dev/null +++ b/src/blackgui/components/coordinatedialog.cpp @@ -0,0 +1,77 @@ +/* Copyright (C) 2018 + * swift project Community / Contributors + * + * This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +#include "coordinatedialog.h" +#include "ui_coordinatedialog.h" +#include + +using namespace BlackMisc; +using namespace BlackMisc::Geo; +using namespace BlackGui::Editors; + +namespace BlackGui +{ + namespace Components + { + CCoordinateDialog::CCoordinateDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::CCoordinateDialog) + { + ui->setupUi(this); + ui->editor_Coordinate->showSetButton(false); + this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint); + this->noDefaultButtons(); + connect(ui->editor_Coordinate, &CCoordinateForm::changedCoordinate, this, &CCoordinateDialog::changedCoordinate); + } + + CCoordinateDialog::~CCoordinateDialog() + { } + + CCoordinateGeodetic CCoordinateDialog::getCoordinate() const + { + return ui->editor_Coordinate->getCoordinate(); + } + + void CCoordinateDialog::setCoordinate(const ICoordinateGeodetic &coordinate) + { + ui->editor_Coordinate->setCoordinate(coordinate); + } + + void CCoordinateDialog::setReadOnly(bool readonly) + { + ui->editor_Coordinate->setReadOnly(readonly); + } + + void CCoordinateDialog::setSelectOnly() + { + ui->editor_Coordinate->setSelectOnly(); + } + + void CCoordinateDialog::showElevation(bool show) + { + ui->editor_Coordinate->showElevation(show); + } + + CStatusMessageList CCoordinateDialog::validate(bool nested) const + { + return ui->editor_Coordinate->validate(nested); + } + + void CCoordinateDialog::noDefaultButtons() + { + QPushButton *okBtn = ui->bb_CoordinateDialog->button(QDialogButtonBox::Ok); + okBtn->setAutoDefault(true); + okBtn->setDefault(true); + + QPushButton *caBtn = ui->bb_CoordinateDialog->button(QDialogButtonBox::Cancel); + caBtn->setAutoDefault(false); + caBtn->setDefault(false); + } + } // ns +} // ns diff --git a/src/blackgui/components/coordinatedialog.h b/src/blackgui/components/coordinatedialog.h new file mode 100644 index 000000000..77dd814e4 --- /dev/null +++ b/src/blackgui/components/coordinatedialog.h @@ -0,0 +1,70 @@ +/* Copyright (C) 2018 + * swift project Community / Contributors + * + * This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKGUI_COMPONENTS_COORDINATEDIALOG_H +#define BLACKGUI_COMPONENTS_COORDINATEDIALOG_H + +#include "blackgui/blackguiexport.h" +#include "blackgui/editors/coordinateform.h" + +#include +#include + +namespace Ui { class CCoordinateDialog; } +namespace BlackGui +{ + namespace Components + { + //! Coordinate form as dialog + //! \sa BlackGui::Editors::CCoordinateForm + class BLACKGUI_EXPORT CCoordinateDialog : public QDialog + { + Q_OBJECT + + public: + //! Constructor + explicit CCoordinateDialog(QWidget *parent = nullptr); + + //! Destructor + virtual ~CCoordinateDialog(); + + //! \copydoc BlackGui::Editors::CCoordinateForm::getCoordinate + BlackMisc::Geo::CCoordinateGeodetic getCoordinate() const; + + //! \copydoc BlackGui::Editors::CCoordinateForm::setCoordinate + void setCoordinate(const BlackMisc::Geo::ICoordinateGeodetic &coordinate); + + //! \copydoc BlackGui::Editors::CCoordinateForm::setReadOnly + void setReadOnly(bool readonly); + + //! \copydoc BlackGui::Editors::CCoordinateForm::setSelectOnly + void setSelectOnly(); + + //! \copydoc BlackGui::Editors::CCoordinateForm::showElevation + void showElevation(bool show); + + //! \copydoc BlackGui::Editors::CCoordinateForm::validate + BlackMisc::CStatusMessageList validate(bool nested = false) const; + + signals: + //! \copydoc BlackGui::Editors::CCoordinateForm::changedCoordinate + void changedCoordinate(); + + private: + QScopedPointer ui; + + //! disable default buttons + void noDefaultButtons(); + }; + } // ns +} // ns + +#endif // guard diff --git a/src/blackgui/components/coordinatedialog.ui b/src/blackgui/components/coordinatedialog.ui new file mode 100644 index 000000000..253f89974 --- /dev/null +++ b/src/blackgui/components/coordinatedialog.ui @@ -0,0 +1,94 @@ + + + CCoordinateDialog + + + + 0 + 0 + 500 + 150 + + + + + 500 + 150 + + + + Coordinates + + + + + + + 0 + 75 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + BlackGui::Editors::CCoordinateForm + QFrame +
blackgui/editors/coordinateform.h
+ 1 +
+
+ + + + bb_CoordinateDialog + accepted() + CCoordinateDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + bb_CoordinateDialog + rejected() + CCoordinateDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + +