20#ifndef LIBREPCB_EDITOR_PACKAGETAB_H
21#define LIBREPCB_EDITOR_PACKAGETAB_H
26#include "../../3d/openglobject.h"
27#include "../../backgroundimagesettings.h"
28#include "../../dialogs/graphicsexportdialog.h"
29#include "../../utils/lengtheditcontext.h"
30#include "../../widgets/if_graphicsvieweventhandler.h"
31#include "../libraryeditortab.h"
56class CategoryTreeModel;
57class FootprintListModel;
58class GraphicsLayerList;
61class LibraryElementCategoriesModel;
62class OpenGlSceneBuilder;
63class PackageEditorFsm;
64class PackageModelListModel;
65class PackagePadListModel;
66class SlintGraphicsView;
68struct OpenGlProjection;
93 Mode mode, QObject* parent =
nullptr) noexcept;
98 ui::TabData
getUiData() const noexcept override;
103 void trigger(ui::TabAction a) noexcept override;
105 int scene) noexcept override;
107 const QPointF& pos, slint::private_api::PointerEvent e) noexcept override;
110 slint::private_api::PointerScrollEvent e) noexcept override;
112 const slint::private_api::KeyEvent& e) noexcept override;
136 const
std::optional<Qt::CursorShape>& shape) noexcept override;
142 bool circle) noexcept override;
144 const
Point& pos, qreal multiplier) const noexcept override;
147 int timeoutMs = -1) noexcept override;
190 bool checkOnly) override;
191 template <typename MessageType>
194 template <typename MessageType>
196 template <typename MessageType>
199 bool approved) noexcept override;
209 bool save() noexcept;
214 const QString& settingsKey) noexcept;
283 std::shared_ptr<slint::VectorModel<slint::SharedString>>
The Alignment class.
Definition alignment.h:115
The Angle class is used to represent an angle (for example 12.75 degrees)
Definition angle.h:76
This class represents absolute, well-formatted paths to files or directories.
Definition filepath.h:127
The HAlign class.
Definition alignment.h:43
The Image class.
Definition image.h:49
The Layer class provides all supported geometry layers.
Definition layer.h:42
The LengthUnit class represents a length unit (millimeters, inches,...) and provides some useful meth...
Definition lengthunit.h:62
The Package class represents a package of a component (including footprint and 3D model)
Definition package.h:59
Represents a 3D model of a librepcb::Package.
Definition packagemodel.h:43
Base class for pads, extended in derived classes.
Definition pad.h:53
The Point class is used to represent a point/coordinate/vector, for example (1.2mm; 5....
Definition point.h:78
The RuleCheckMessage class.
Definition rulecheckmessage.h:45
The SExpression class.
Definition sexpression.h:69
The Signal class is used to emit signals on non-QObject derived classes.
Definition signalslot.h:65
Theme class as used by librepcb::WorkspaceSettingsItem_Themes.
Definition theme.h:44
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition uuid.h:56
The VAlign class.
Definition alignment.h:79
The Version class represents a version number in the format "1.42.7".
Definition version.h:58
The Zone class.
Definition zone.h:43
The CategoryTreeModel class.
Definition categorytreemodel.h:50
This class provides a Dialog (GUI) to choose DXF import settings.
Definition graphicsexportdialog.h:61
The GraphicsLayerList class.
Definition graphicslayerlist.h:48
The GraphicsScene class.
Definition graphicsscene.h:64
The IF_GraphicsViewEventHandler class.
Definition if_graphicsvieweventhandler.h:45
Backend configuration for the LengthEdit UI element.
Definition lengtheditcontext.h:49
The LibraryEditor class.
Definition libraryeditor.h:56
Specialized base class for all library editor tabs.
Definition libraryeditortab.h:55
The LibraryElementCategoriesModel class.
Definition libraryelementcategoriesmodel.h:50
Represents one 3D object in an OpenGL 3D model.
Definition openglobject.h:43
Asynchronously generates a 3D board scene for OpenGL rendering.
Definition openglscenebuilder.h:50
Interface for the integration of the Package editor FSM.
Definition packageeditorfsmadapter.h:64
The PackageEditorFsm class is the finit state machine (FSM) of the package editor.
Definition packageeditorfsm.h:59
The PackageEditorState_AddHoles class.
Definition packageeditorstate_addholes.h:50
The PackageEditorState_AddNames class.
Definition packageeditorstate_addnames.h:44
The PackageEditorState_AddPads class.
Definition packageeditorstate_addpads.h:50
The PackageEditorState_AddValues class.
Definition packageeditorstate_addvalues.h:44
The PackageEditorState_DrawArc class.
Definition packageeditorstate_drawarc.h:44
The PackageEditorState_DrawCircle class.
Definition packageeditorstate_drawcircle.h:50
The PackageEditorState_DrawLine class.
Definition packageeditorstate_drawline.h:44
The PackageEditorState_DrawPolygon class.
Definition packageeditorstate_drawpolygon.h:44
The PackageEditorState_DrawRect class.
Definition packageeditorstate_drawrect.h:44
The PackageEditorState_DrawText class.
Definition packageeditorstate_drawtext.h:44
The PackageEditorState_DrawZone class.
Definition packageeditorstate_drawzone.h:50
The PackageEditorState_Measure class.
Definition packageeditorstate_measure.h:45
The PackageEditorState_ReNumberPads class.
Definition packageeditorstate_renumberpads.h:51
The PackageEditorState_Select class.
Definition packageeditorstate_select.h:58
The PackageModelListModel class.
Definition packagemodellistmodel.h:52
The PackagePadListModel class.
Definition packagepadlistmodel.h:49
The PackageTab class.
Definition packagetab.h:79
slint::Image renderScene(float width, float height, int scene) noexcept override
Definition packagetab.cpp:962
Angle mToolAngle
Definition packagetab.h:278
PositiveLength fsmGetGridInterval() const noexcept override
Definition packagetab.cpp:1071
void setDerivedUiData(const ui::PackageTabData &data) noexcept
Definition packagetab.cpp:443
bool graphicsSceneMouseMoved(const GraphicsSceneMouseEvent &e) noexcept override
Definition packagetab.cpp:1033
slint::SharedString mVersionError
Definition packagetab.h:253
std::shared_ptr< LibraryElementCategoriesModel > mCategories
Definition packagetab.h:256
Features mToolFeatures
Definition packagetab.h:268
bool requestClose() noexcept override
Request to close the tab.
Definition packagetab.cpp:996
bool execGraphicsExportDialog(GraphicsExportDialog::Output output, const QString &settingsKey) noexcept
Definition packagetab.cpp:2554
bool toggleBackgroundImage() noexcept
Definition packagetab.cpp:2673
std::optional< std::pair< RuleCheckMessageList, QSet< SExpression > > > runChecksImpl() override
Definition packagetab.cpp:1918
QPointF mSceneImagePos
Definition packagetab.h:242
std::unique_ptr< SlintGraphicsView > mView
Definition packagetab.h:227
slint::SharedString mNewPadNameError
Definition packagetab.h:263
bool save() noexcept
Definition packagetab.cpp:2488
Zone::Rules mToolZoneRules
Definition packagetab.h:294
void fsmSetSceneCursor(const Point &pos, bool cross, bool circle) noexcept override
Definition packagetab.cpp:1111
void applyTheme() noexcept
Definition packagetab.cpp:2735
bool mToolGrabArea
Definition packagetab.h:281
Alignment mToolAlign
Definition packagetab.h:285
LengthUnit mUnit
Definition packagetab.h:236
ui::PadShape mToolShape
Definition packagetab.h:290
bool mToolPressFit
Definition packagetab.h:292
bool graphicsSceneRightMouseButtonReleased(const GraphicsSceneMouseEvent &e) noexcept override
Definition packagetab.cpp:1054
slint::SharedString mName
Definition packagetab.h:246
void layerRequested(const Layer &layer)
slint::SharedString mNewPadName
Definition packagetab.h:262
void memorizeInterface() noexcept
Definition packagetab.cpp:2528
bool mToolFiducial
Definition packagetab.h:291
void fsmToolEnter(PackageEditorState_Select &state) noexcept override
Definition packagetab.cpp:1154
QString mToolValue
Definition packagetab.h:282
int mFrameIndex
Definition packagetab.h:243
void packagePadRequested(const std::optional< Uuid > &pad)
bool graphicsSceneLeftMouseButtonDoubleClicked(const GraphicsSceneMouseEvent &e) noexcept override
Definition packagetab.cpp:1049
std::unique_ptr< GraphicsLayerList > mLayers
Definition packagetab.h:226
FilePath getBackgroundImageCacheDir() const noexcept
Definition packagetab.cpp:2724
QHash< OpenGlObject::Type, float > mAlpha
Definition packagetab.h:240
slint::SharedString mDescription
Definition packagetab.h:249
Mode
Definition packagetab.h:87
std::shared_ptr< PackagePadListModel > mPads
Definition packagetab.h:260
bool graphicsSceneLeftMouseButtonPressed(const GraphicsSceneMouseEvent &e) noexcept override
Definition packagetab.cpp:1039
std::shared_ptr< QGraphicsPixmapItem > mBackgroundImageGraphicsItem
Definition packagetab.h:308
QWidget * fsmGetParentWidget() noexcept override
Definition packagetab.cpp:1063
LengthEditContext mToolDrill
Definition packagetab.h:277
slint::SharedString mVersion
Definition packagetab.h:252
Theme::GridStyle mGridStyle
Definition packagetab.h:235
QStringList mOpenGlSceneBuilderErrors
Definition packagetab.h:241
std::shared_ptr< slint::VectorModel< slint::SharedString > > mToolValueSuggestions
Definition packagetab.h:284
std::unique_ptr< OpenGlProjection > mOpenGlProjection
Definition packagetab.h:239
void watchedFilesModifiedChanged() noexcept override
Definition packagetab.cpp:1883
bool mView3d
Definition packagetab.h:234
std::shared_ptr< slint::VectorModel< slint::SharedString > > mToolLayers
Definition packagetab.h:273
GraphicsScene * fsmGetGraphicsScene() noexcept override
Definition packagetab.cpp:1067
LengthEditContext mToolSize
Definition packagetab.h:276
bool mWizardMode
Definition packagetab.h:232
bool mDeprecated
Definition packagetab.h:255
void fsmSetViewCursor(const std::optional< Qt::CursorShape > &shape) noexcept override
Definition packagetab.cpp:1075
bool processSceneScrolled(const QPointF &pos, slint::private_api::PointerScrollEvent e) noexcept override
Definition packagetab.cpp:982
const bool mIsNewElement
Definition packagetab.h:229
void fsmToolLeave() noexcept override
Definition packagetab.cpp:1145
std::unique_ptr< QTimer > mOpenGlSceneRebuildTimer
Definition packagetab.h:304
void valueRequested(const QString &value)
void angleRequested(const Angle &angle)
Package::AssemblyType mAssemblyType
Definition packagetab.h:258
std::shared_ptr< PackageModel > mCurrentModel
Definition packagetab.h:238
std::unique_ptr< SlintOpenGlView > mOpenGlView
Definition packagetab.h:302
void messageApprovalChanged(const SExpression &approval, bool approved) noexcept override
Definition packagetab.cpp:1980
void autoSelectCurrentModelIndex() noexcept
Definition packagetab.cpp:2377
void reloadFromDisk() override
Definition packagetab.cpp:1887
bool autoFixImpl(const std::shared_ptr< const RuleCheckMessage > &msg, bool checkOnly) override
Definition packagetab.cpp:1935
void shapeRequested(const ui::PadShape shape)
void updateOpenGlScene() noexcept
Definition packagetab.cpp:2601
void requestRepaint() noexcept
Definition packagetab.cpp:2730
bool processScenePointerEvent(const QPointF &pos, slint::private_api::PointerEvent e) noexcept override
Definition packagetab.cpp:973
void vAlignRequested(const VAlign &align)
void applyBackgroundImageSettings() noexcept
Definition packagetab.cpp:2702
bool graphicsSceneKeyPressed(const GraphicsSceneKeyEvent &e) noexcept override
Definition packagetab.cpp:1023
BackgroundImageSettings mBackgroundImageSettings
Definition packagetab.h:307
QPainterPath fsmCalcPosWithTolerance(const Point &pos, qreal multiplier) const noexcept override
Definition packagetab.cpp:1118
FilePath getDirectoryPath() const noexcept override
Definition packagetab.cpp:264
void hAlignRequested(const HAlign &align)
Signal< PackageTab > onDerivedUiDataChanged
Definition packagetab.h:84
bool autoFixHelper(const std::shared_ptr< const RuleCheckMessage > &msg, bool checkOnly)
Definition packagetab.cpp:1966
UnsignedLimitedRatio mToolRatio
Definition packagetab.h:279
std::shared_ptr< FootprintListModel > mFootprints
Definition packagetab.h:264
QVector< QMetaObject::Connection > mFsmStateConnections
Editor state machine.
Definition packagetab.h:297
bool processSceneKeyEvent(const slint::private_api::KeyEvent &e) noexcept override
Definition packagetab.cpp:991
Version mVersionParsed
Definition packagetab.h:254
void grabAreaRequested(bool grabArea)
void fsmSetViewGrayOut(bool grayOut) noexcept override
Definition packagetab.cpp:1085
void setCurrentModelIndex(int index) noexcept
Definition packagetab.cpp:2366
void zoneLayerRequested(Zone::Layer layer, bool enable)
void fsmSetViewRuler(const std::optional< std::pair< Point, Point > > &pos) noexcept override
Definition packagetab.cpp:1104
void commitUiData() noexcept
Definition packagetab.cpp:2450
bool autoFix(const MessageType &msg)
void fsmSetViewInfoBoxText(const QString &text) noexcept override
Definition packagetab.cpp:1091
const Layer * mToolLayer
Definition packagetab.h:274
std::unique_ptr< GraphicsScene > mScene
Definition packagetab.h:301
FootprintList mOriginalFootprints
Definition packagetab.h:313
void componentSideRequested(Pad::ComponentSide side)
void scheduleOpenGlSceneUpdate() noexcept
Definition packagetab.cpp:2594
slint::SharedString mNameError
Definition packagetab.h:247
std::unique_ptr< OpenGlSceneBuilder > mOpenGlSceneBuilder
Definition packagetab.h:303
QSet< Uuid > mOriginalPackagePadUuids
Definition packagetab.h:312
slint::SharedString mKeywords
Definition packagetab.h:250
Qt::CursorShape mToolCursorShape
Definition packagetab.h:270
void fsmSetStatusBarMessage(const QString &message, int timeoutMs=-1) noexcept override
Definition packagetab.cpp:1133
Point fsmMapGlobalPosToScenePos(const QPoint &pos) const noexcept override
Definition packagetab.cpp:1123
PackageTab(const PackageTab &other)=delete
void trigger(ui::TabAction a) noexcept override
Definition packagetab.cpp:641
std::shared_ptr< CategoryTreeModel > mCategoriesTree
Definition packagetab.h:257
void deactivate() noexcept override
Definition packagetab.cpp:621
std::optional< Uuid > mToolPackagePad
Definition packagetab.h:288
ui::PackageTabData getDerivedUiData() const noexcept
Definition packagetab.cpp:311
void notifyDerivedUiDataChanged() noexcept override
Definition packagetab.cpp:1990
bool mChooseCategory
Definition packagetab.h:237
ElementName mNameParsed
Definition packagetab.h:248
std::shared_ptr< PackageModelListModel > mModels
Definition packagetab.h:265
bool fixPadFunction(const MessageType &msg)
Definition packagetab.cpp:2284
void ratioRequested(const UnsignedLimitedRatio &ratio)
std::unique_ptr< Package > mPackage
Definition packagetab.h:225
void pressFitRequested(bool pressFit)
slint::SharedString mAuthor
Definition packagetab.h:251
bool mOpenGlSceneRebuildScheduled
Definition packagetab.h:228
bool isWritable() const noexcept
Definition packagetab.cpp:2396
std::shared_ptr< slint::SortModel< ui::PackagePadData > > mPadsSorted
Definition packagetab.h:261
QString mToolOverlayText
Definition packagetab.h:271
ui::TabData getUiData() const noexcept override
Definition packagetab.cpp:268
bool graphicsSceneKeyReleased(const GraphicsSceneKeyEvent &e) noexcept override
Definition packagetab.cpp:1028
void updateWatchedFiles() noexcept
Definition packagetab.cpp:2533
std::unique_ptr< PackageEditorFsm > mFsm
Definition packagetab.h:298
void setCurrentFootprintIndex(int index) noexcept
Definition packagetab.cpp:2339
bool mToolFilled
Definition packagetab.h:280
int mCurrentPageIndex
Definition packagetab.h:233
void filledRequested(bool filled)
ui::EditorTool mTool
Definition packagetab.h:269
void fsmSetFeatures(Features features) noexcept override
Definition packagetab.cpp:1138
LengthEditContext mToolLineWidth
Definition packagetab.h:275
void setGridInterval(const PositiveLength &interval) noexcept
Definition packagetab.cpp:2541
void refreshUiData() noexcept
Definition packagetab.cpp:2400
bool graphicsSceneLeftMouseButtonReleased(const GraphicsSceneMouseEvent &e) noexcept override
Definition packagetab.cpp:1044
Pad::ComponentSide mToolComponentSide
Definition packagetab.h:289
QVector< std::optional< Uuid > > mToolPackagePadsQt
Definition packagetab.h:286
LengthEditContext mMinCopperClearance
Definition packagetab.h:259
QVector< const Layer * > mToolLayersQt
Definition packagetab.h:272
void activate() noexcept override
Definition packagetab.cpp:581
void zoneRuleRequested(Zone::Rule rule, bool enable)
bool mIsInterfaceBroken
Broken interface detection.
Definition packagetab.h:311
Zone::Layers mToolZoneLayers
Definition packagetab.h:293
std::shared_ptr< slint::VectorModel< slint::SharedString > > mToolPackagePads
Definition packagetab.h:287
The SlintGraphicsView class.
Definition slintgraphicsview.h:52
The SlintOpenGlView class.
Definition slintopenglview.h:86
Definition occmodel.cpp:77
type_safe::constrained_type< Length, PositiveLengthConstraint, PositiveLengthVerifier > PositiveLength
Definition length.h:810
QVector< std::shared_ptr< const RuleCheckMessage > > RuleCheckMessageList
Definition rulecheckmessage.h:104
type_safe::constrained_type< Ratio, UnsignedLimitedRatioConstraint, UnsignedLimitedRatioVerifier > UnsignedLimitedRatio
Definition ratio.h:376
type_safe::constrained_type< QString, ElementNameConstraint, ElementNameVerifier > ElementName
Definition elementname.h:84
Settings about a background image ("underlay")
Definition backgroundimagesettings.h:48
Definition graphicsscene.h:52
Definition graphicsscene.h:45
Definition slintopenglview.h:43