Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
9d2aa90beThis file is pinned to the selected release. Download the original to open it in your design tool.
/*
* LibrePCB - Professional EDA for everyone!
* Copyright (C) 2013 LibrePCB Developers, see AUTHORS.md for contributors.
* https://librepcb.org/
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef LIBREPCB_EDITOR_PACKAGEEDITORSTATE_H
#define LIBREPCB_EDITOR_PACKAGEEDITORSTATE_H
/*******************************************************************************
* Includes
******************************************************************************/
#include "../../../graphics/graphicsscene.h"
#include "packageeditorfsm.h"
#include "packageeditorfsmadapter.h"
#include <librepcb/core/types/length.h>
#include <QtCore>
/*******************************************************************************
* Namespace / Forward Declarations
******************************************************************************/
namespace librepcb {
class Layer;
class LengthUnit;
namespace editor {
/*******************************************************************************
* Class PackageEditorState
******************************************************************************/
/**
* @brief The PackageEditorState class is the base class of all package editor
* FSM states
*/
class PackageEditorState : public QObject {
Q_OBJECT
public:
using Context = PackageEditorFsm::Context;
// Constructors / Destructor
PackageEditorState() = delete;
PackageEditorState(const PackageEditorState& other) = delete;
explicit PackageEditorState(Context& context) noexcept;
virtual ~PackageEditorState() noexcept;
// General Methods
virtual bool entry() noexcept { return true; }
virtual bool exit() noexcept { return true; }
// Event Handlers
virtual bool processKeyPressed(const GraphicsSceneKeyEvent& e) noexcept {
Q_UNUSED(e);
return false;
}
virtual bool processKeyReleased(const GraphicsSceneKeyEvent& e) noexcept {
Q_UNUSED(e);
return false;
}
virtual bool processGraphicsSceneMouseMoved(
const GraphicsSceneMouseEvent& e) noexcept {
Q_UNUSED(e);
return false;
}
virtual bool processGraphicsSceneLeftMouseButtonPressed(
const GraphicsSceneMouseEvent& e) noexcept {
Q_UNUSED(e);
return false;
}
virtual bool processGraphicsSceneLeftMouseButtonReleased(
const GraphicsSceneMouseEvent& e) noexcept {
Q_UNUSED(e);
return false;
}
virtual bool processGraphicsSceneLeftMouseButtonDoubleClicked(
const GraphicsSceneMouseEvent& e) noexcept {
Q_UNUSED(e);
return false;
}
virtual bool processGraphicsSceneRightMouseButtonReleased(
const GraphicsSceneMouseEvent& e) noexcept {
Q_UNUSED(e);
return false;
}
virtual bool processSelectAll() noexcept { return false; }
virtual bool processCut() noexcept { return false; }
virtual bool processCopy() noexcept { return false; }
virtual bool processPaste() noexcept { return false; }
virtual bool processMove(const Point& delta) {
Q_UNUSED(delta);
return false;
}
virtual bool processRotate(const Angle& rotation) noexcept {
Q_UNUSED(rotation);
return false;
}
virtual bool processMirror(Qt::Orientation orientation) noexcept {
Q_UNUSED(orientation);
return false;
}
virtual bool processMoveAlign() noexcept { return false; }
virtual bool processSnapToGrid() noexcept { return false; }
virtual bool processFlip(Qt::Orientation orientation) noexcept {
Q_UNUSED(orientation);
return false;
}
virtual bool processRemove() noexcept { return false; }
virtual bool processEditProperties() noexcept { return false; }
virtual bool processGenerateOutline() noexcept { return false; }
virtual bool processGenerateCourtyard() noexcept { return false; }
virtual bool processImportDxf() noexcept { return false; }
virtual bool processAcceptCommand() noexcept { return false; }
virtual bool processAbortCommand() noexcept { return false; }
virtual bool processGridIntervalChanged(
const PositiveLength& interval) noexcept {
Q_UNUSED(interval);
return false;
}
// Operator Overloadings
PackageEditorState& operator=(const PackageEditorState& rhs) = delete;
signals:
void abortRequested();
protected: // Methods
GraphicsScene* getGraphicsScene() noexcept;
PositiveLength getGridInterval() const noexcept;
const LengthUnit& getLengthUnit() const noexcept;
QWidget* parentWidget() noexcept;
static const QSet<const Layer*>& getAllowedTextLayers() noexcept;
static const QSet<const Layer*>& getAllowedCircleAndPolygonLayers() noexcept;
protected: // Data
Context& mContext;
PackageEditorFsmAdapter& mAdapter;
};
/*******************************************************************************
* End of File
******************************************************************************/
} // namespace editor
} // namespace librepcb
#endif