LibrePCB Developers Documentation
Loading...
Searching...
No Matches
libraryeditorlegacy.h
Go to the documentation of this file.
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_EDITOR_LIBRARYEDITORLEGACY_H
21#define LIBREPCB_EDITOR_LIBRARYEDITORLEGACY_H
22
23/*******************************************************************************
24 * Includes
25 ******************************************************************************/
26#include "editorwidgetbase.h"
28
30
31#include <QtCore>
32#include <QtWidgets>
33
34#include <memory>
35
36/*******************************************************************************
37 * Namespace / Forward Declarations
38 ******************************************************************************/
39namespace librepcb {
40
41class Library;
42class TransactionalFileSystem;
43class Workspace;
44
45namespace editor {
46
47class ExclusiveActionGroup;
48class GraphicsLayerList;
49class StandardEditorCommandHandler;
50class UndoStackActionGroup;
51
52namespace Ui {
53class LibraryEditorLegacy;
54}
55
56/*******************************************************************************
57 * Class LibraryEditorLegacy
58 ******************************************************************************/
59
63class LibraryEditorLegacy final : public QMainWindow {
64 Q_OBJECT
65
66public:
67 // Constructors / Destructor
70 LibraryEditorLegacy(Workspace& ws, Library& lib, bool readOnly);
71 ~LibraryEditorLegacy() noexcept;
72
73 bool requestClose() noexcept;
74 void openPackage(const FilePath& fp) noexcept;
75 void openComponent(const FilePath& fp) noexcept;
76 void openDevice(const FilePath& fp) noexcept;
77 void duplicatePackage(const FilePath& fp) noexcept;
78 void duplicateComponent(const FilePath& fp) noexcept;
79 void duplicateDevice(const FilePath& fp) noexcept;
80 void forceCloseTabs(const QSet<FilePath>& fp) noexcept;
81
82 // Operator Overloadings
83 LibraryEditorLegacy& operator=(const LibraryEditorLegacy& rhs) = delete;
84
85signals:
87
88private: // GUI Event Handlers
89 void closeTabIfOpen(const FilePath& fp) noexcept;
90 template <typename EditWidgetType>
92 bool isNewElement) noexcept;
93 void currentTabChanged(int index) noexcept;
94 void tabCloseRequested(int index) noexcept;
95 bool closeTab(int index) noexcept;
96
97private: // Methods
98 void createActions() noexcept;
99 void createToolBars() noexcept;
100 void createMenus() noexcept;
101 EditorWidgetBase::Context createContext(bool isNewElement) noexcept;
103 const QSet<EditorWidgetBase::Feature>& features) noexcept;
105 void newLibraryElement(NewElementWizardContext::ElementType type);
107 const FilePath& fp);
108 void editNewLibraryElement(NewElementWizardContext::ElementType type,
109 const FilePath& fp);
110 void updateTabTitles() noexcept;
111 void tabCountChanged() noexcept;
112 void closeEvent(QCloseEvent* event) noexcept override;
113 bool closeAllTabs(bool withNonClosable, bool askForSave) noexcept;
114
115private: // Data
118 QScopedPointer<Ui::LibraryEditorLegacy> mUi;
123
124 // Actions
125 QScopedPointer<QAction> mActionAboutLibrePcb;
126 QScopedPointer<QAction> mActionAboutQt;
127 QScopedPointer<QAction> mActionOnlineDocumentation;
128 QScopedPointer<QAction> mActionKeyboardShortcutsReference;
129 QScopedPointer<QAction> mActionWebsite;
130 QScopedPointer<QAction> mActionSave;
131 QScopedPointer<QAction> mActionSaveAll;
132 QScopedPointer<QAction> mActionCloseTab;
133 QScopedPointer<QAction> mActionCloseAllTabs;
134 QScopedPointer<QAction> mActionCloseWindow;
135 QScopedPointer<QAction> mActionQuit;
136 QScopedPointer<QAction> mActionFileManager;
137 QScopedPointer<QAction> mActionRescanLibraries;
138 QScopedPointer<QAction> mActionImportDxf;
139 QScopedPointer<QAction> mActionImportEagleLibrary;
140 QScopedPointer<QAction> mActionImportKiCadLibrary;
141 QScopedPointer<QAction> mActionExportImage;
142 QScopedPointer<QAction> mActionExportPdf;
143 QScopedPointer<QAction> mActionPrint;
144 QScopedPointer<QAction> mActionNewElement;
145 QScopedPointer<QAction> mActionNextPage;
146 QScopedPointer<QAction> mActionPreviousPage;
147 QScopedPointer<QAction> mActionFind;
148 QScopedPointer<QAction> mActionSelectAll;
149 QScopedPointer<QAction> mActionGridProperties;
150 QScopedPointer<QAction> mActionGridIncrease;
151 QScopedPointer<QAction> mActionGridDecrease;
152 QScopedPointer<QAction> mActionToggleBgImage;
153 QScopedPointer<QAction> mActionZoomFit;
154 QScopedPointer<QAction> mActionZoomIn;
155 QScopedPointer<QAction> mActionZoomOut;
156 QScopedPointer<QAction> mActionToggle3D;
157 QScopedPointer<QAction> mActionUndo;
158 QScopedPointer<QAction> mActionRedo;
159 QScopedPointer<QAction> mActionCut;
160 QScopedPointer<QAction> mActionCopy;
161 QScopedPointer<QAction> mActionPaste;
162 QScopedPointer<QAction> mActionMoveLeft;
163 QScopedPointer<QAction> mActionMoveRight;
164 QScopedPointer<QAction> mActionMoveUp;
165 QScopedPointer<QAction> mActionMoveDown;
166 QScopedPointer<QAction> mActionRotateCcw;
167 QScopedPointer<QAction> mActionRotateCw;
168 QScopedPointer<QAction> mActionMirrorHorizontal;
169 QScopedPointer<QAction> mActionMirrorVertical;
170 QScopedPointer<QAction> mActionFlipHorizontal;
171 QScopedPointer<QAction> mActionFlipVertical;
172 QScopedPointer<QAction> mActionMoveAlign;
173 QScopedPointer<QAction> mActionSnapToGrid;
174 QScopedPointer<QAction> mActionProperties;
175 QScopedPointer<QAction> mActionRemove;
176 QScopedPointer<QAction> mActionHelperTools;
177 QScopedPointer<QAction> mActionGenerateOutline;
178 QScopedPointer<QAction> mActionGenerateCourtyard;
179 QScopedPointer<QAction> mActionAbort;
180 QScopedPointer<QAction> mActionToolSelect;
181 QScopedPointer<QAction> mActionToolLine;
182 QScopedPointer<QAction> mActionToolRect;
183 QScopedPointer<QAction> mActionToolPolygon;
184 QScopedPointer<QAction> mActionToolCircle;
185 QScopedPointer<QAction> mActionToolArc;
186 QScopedPointer<QAction> mActionToolText;
187 QScopedPointer<QAction> mActionToolName;
188 QScopedPointer<QAction> mActionToolValue;
189 QScopedPointer<QAction> mActionToolPin;
190 QScopedPointer<QAction> mActionToolSmtPadStandard;
191 QScopedPointer<QAction> mActionToolThtPad;
192 QScopedPointer<QAction> mActionToolSpecialPadThermal;
193 QScopedPointer<QAction> mActionToolSpecialPadBga;
194 QScopedPointer<QAction> mActionToolSpecialPadEdgeConnector;
195 QScopedPointer<QAction> mActionToolSpecialPadTest;
196 QScopedPointer<QAction> mActionToolSpecialPadLocalFiducial;
197 QScopedPointer<QAction> mActionToolSpecialPadGlobalFiducial;
198 QScopedPointer<QAction> mActionToolZone;
199 QScopedPointer<QAction> mActionToolHole;
200 QScopedPointer<QAction> mActionToolMeasure;
201 QScopedPointer<QAction> mActionReNumberPads;
202
203 // Action groups
206
207 // Toolbars
208 QScopedPointer<QToolBar> mToolBarFile;
209 QScopedPointer<QToolBar> mToolBarEdit;
210 QScopedPointer<QToolBar> mToolBarView;
211 QScopedPointer<QToolBar> mToolBarCommand;
212 QScopedPointer<QToolBar> mToolBarTools;
213};
214
215/*******************************************************************************
216 * End of File
217 ******************************************************************************/
218
219} // namespace editor
220} // namespace librepcb
221
222#endif
This class represents absolute, well-formatted paths to files or directories.
Definition filepath.h:127
The Library class represents a library directory.
Definition library.h:46
The Workspace class represents a workspace with all its data (library, projects, settings,...
Definition workspace.h:54
The EditorWidgetBase class.
Definition editorwidgetbase.h:61
The ExclusiveActionGroup class groups multiple QAction's together.
Definition exclusiveactiongroup.h:54
The GraphicsLayerList class.
Definition graphicslayerlist.h:48
The LibraryEditorLegacy class.
Definition libraryeditorlegacy.h:63
QScopedPointer< QAction > mActionGenerateOutline
Definition libraryeditorlegacy.h:177
EditorWidgetBase * mCurrentEditorWidget
Definition libraryeditorlegacy.h:121
void setAvailableFeatures(const QSet< EditorWidgetBase::Feature > &features) noexcept
Definition libraryeditorlegacy.cpp:820
EditorWidgetBase::Context createContext(bool isNewElement) noexcept
Definition libraryeditorlegacy.cpp:813
QScopedPointer< QAction > mActionZoomFit
Definition libraryeditorlegacy.h:153
QScopedPointer< QAction > mActionExportImage
Definition libraryeditorlegacy.h:141
QScopedPointer< QAction > mActionToolSpecialPadEdgeConnector
Definition libraryeditorlegacy.h:194
void duplicateLibraryElement(NewElementWizardContext::ElementType type, const FilePath &fp)
Definition libraryeditorlegacy.cpp:902
QScopedPointer< QAction > mActionSave
Definition libraryeditorlegacy.h:130
QScopedPointer< UndoStackActionGroup > mUndoStackActionGroup
Definition libraryeditorlegacy.h:204
QScopedPointer< QAction > mActionCut
Definition libraryeditorlegacy.h:159
void closeTabIfOpen(const FilePath &fp) noexcept
Definition libraryeditorlegacy.cpp:198
QScopedPointer< QAction > mActionMoveAlign
Definition libraryeditorlegacy.h:172
LibraryEditorLegacy(const LibraryEditorLegacy &other)=delete
QScopedPointer< QAction > mActionZoomIn
Definition libraryeditorlegacy.h:154
QScopedPointer< QAction > mActionCopy
Definition libraryeditorlegacy.h:160
QScopedPointer< QAction > mActionToolRect
Definition libraryeditorlegacy.h:182
QScopedPointer< QAction > mActionKeyboardShortcutsReference
Definition libraryeditorlegacy.h:128
QScopedPointer< QAction > mActionMirrorHorizontal
Definition libraryeditorlegacy.h:168
void duplicateDevice(const FilePath &fp) noexcept
Definition libraryeditorlegacy.cpp:184
void newLibraryElement(NewElementWizardContext::ElementType type)
Definition libraryeditorlegacy.cpp:891
QScopedPointer< QAction > mActionQuit
Definition libraryeditorlegacy.h:135
QScopedPointer< ExclusiveActionGroup > mToolsActionGroup
Definition libraryeditorlegacy.h:205
QScopedPointer< QAction > mActionToolHole
Definition libraryeditorlegacy.h:199
QScopedPointer< QAction > mActionMoveDown
Definition libraryeditorlegacy.h:165
QScopedPointer< QAction > mActionGridIncrease
Definition libraryeditorlegacy.h:150
QScopedPointer< QAction > mActionHelperTools
Definition libraryeditorlegacy.h:176
~LibraryEditorLegacy() noexcept
Definition libraryeditorlegacy.cpp:128
QScopedPointer< QAction > mActionToolValue
Definition libraryeditorlegacy.h:188
QScopedPointer< QAction > mActionCloseTab
Definition libraryeditorlegacy.h:132
QScopedPointer< QAction > mActionCloseAllTabs
Definition libraryeditorlegacy.h:133
QScopedPointer< QAction > mActionGridProperties
Definition libraryeditorlegacy.h:149
void setActiveEditorWidget(EditorWidgetBase *widget)
Definition libraryeditorlegacy.cpp:866
QScopedPointer< QAction > mActionReNumberPads
Definition libraryeditorlegacy.h:201
bool closeAllTabs(bool withNonClosable, bool askForSave) noexcept
Definition libraryeditorlegacy.cpp:968
QScopedPointer< QAction > mActionToolSpecialPadTest
Definition libraryeditorlegacy.h:195
QScopedPointer< QAction > mActionAbort
Definition libraryeditorlegacy.h:179
QScopedPointer< QToolBar > mToolBarEdit
Definition libraryeditorlegacy.h:209
QScopedPointer< QAction > mActionRotateCcw
Definition libraryeditorlegacy.h:166
void createMenus() noexcept
Definition libraryeditorlegacy.cpp:703
QScopedPointer< QAction > mActionToolArc
Definition libraryeditorlegacy.h:185
void openDevice(const FilePath &fp) noexcept
Definition libraryeditorlegacy.cpp:168
QScopedPointer< QAction > mActionRescanLibraries
Definition libraryeditorlegacy.h:137
QScopedPointer< QAction > mActionAboutLibrePcb
Definition libraryeditorlegacy.h:125
void editNewLibraryElement(NewElementWizardContext::ElementType type, const FilePath &fp)
Definition libraryeditorlegacy.cpp:913
bool mIsOpenedReadOnly
Definition libraryeditorlegacy.h:117
std::unique_ptr< GraphicsLayerList > mLayers
Definition libraryeditorlegacy.h:120
bool closeTab(int index) noexcept
Definition libraryeditorlegacy.cpp:264
QScopedPointer< QAction > mActionSelectAll
Definition libraryeditorlegacy.h:148
QScopedPointer< QToolBar > mToolBarTools
Definition libraryeditorlegacy.h:212
QScopedPointer< QAction > mActionMoveUp
Definition libraryeditorlegacy.h:164
QScopedPointer< QToolBar > mToolBarFile
Definition libraryeditorlegacy.h:208
void updateTabTitles() noexcept
Definition libraryeditorlegacy.cpp:930
QScopedPointer< QAction > mActionPreviousPage
Definition libraryeditorlegacy.h:146
QScopedPointer< QAction > mActionImportDxf
Definition libraryeditorlegacy.h:138
void createToolBars() noexcept
Definition libraryeditorlegacy.cpp:611
QScopedPointer< QAction > mActionCloseWindow
Definition libraryeditorlegacy.h:134
void currentTabChanged(int index) noexcept
Definition libraryeditorlegacy.cpp:249
QScopedPointer< QAction > mActionToolSelect
Definition libraryeditorlegacy.h:180
void openPackage(const FilePath &fp) noexcept
Definition libraryeditorlegacy.cpp:152
QScopedPointer< QAction > mActionWebsite
Definition libraryeditorlegacy.h:129
QScopedPointer< QAction > mActionToolSpecialPadGlobalFiducial
Definition libraryeditorlegacy.h:197
QScopedPointer< QAction > mActionUndo
Definition libraryeditorlegacy.h:157
QScopedPointer< QAction > mActionRotateCw
Definition libraryeditorlegacy.h:167
QScopedPointer< QAction > mActionToolLine
Definition libraryeditorlegacy.h:181
QScopedPointer< QAction > mActionFlipVertical
Definition libraryeditorlegacy.h:171
QScopedPointer< QAction > mActionMoveLeft
Definition libraryeditorlegacy.h:162
QScopedPointer< QToolBar > mToolBarCommand
Definition libraryeditorlegacy.h:211
QScopedPointer< QAction > mActionProperties
Definition libraryeditorlegacy.h:174
QScopedPointer< StandardEditorCommandHandler > mStandardCommandHandler
Definition libraryeditorlegacy.h:119
QScopedPointer< QAction > mActionSaveAll
Definition libraryeditorlegacy.h:131
QScopedPointer< QAction > mActionToolCircle
Definition libraryeditorlegacy.h:184
void forceCloseTabs(const QSet< FilePath > &fp) noexcept
Definition libraryeditorlegacy.cpp:188
QScopedPointer< QAction > mActionExportPdf
Definition libraryeditorlegacy.h:142
void tabCountChanged() noexcept
Definition libraryeditorlegacy.cpp:956
QScopedPointer< QAction > mActionToggleBgImage
Definition libraryeditorlegacy.h:152
QScopedPointer< QToolBar > mToolBarView
Definition libraryeditorlegacy.h:210
Library * mLibrary
Definition libraryeditorlegacy.h:122
QScopedPointer< QAction > mActionToolSmtPadStandard
Definition libraryeditorlegacy.h:190
QScopedPointer< QAction > mActionToolSpecialPadThermal
Definition libraryeditorlegacy.h:192
QScopedPointer< QAction > mActionToolName
Definition libraryeditorlegacy.h:187
QScopedPointer< QAction > mActionToolPolygon
Definition libraryeditorlegacy.h:183
void openComponent(const FilePath &fp) noexcept
Definition libraryeditorlegacy.cpp:160
QScopedPointer< QAction > mActionImportKiCadLibrary
Definition libraryeditorlegacy.h:140
Workspace & mWorkspace
Definition libraryeditorlegacy.h:116
QScopedPointer< QAction > mActionGenerateCourtyard
Definition libraryeditorlegacy.h:178
QScopedPointer< QAction > mActionOnlineDocumentation
Definition libraryeditorlegacy.h:127
QScopedPointer< QAction > mActionFileManager
Definition libraryeditorlegacy.h:136
QScopedPointer< QAction > mActionFind
Definition libraryeditorlegacy.h:147
QScopedPointer< QAction > mActionMoveRight
Definition libraryeditorlegacy.h:163
QScopedPointer< QAction > mActionImportEagleLibrary
Definition libraryeditorlegacy.h:139
void closeEvent(QCloseEvent *event) noexcept override
Definition libraryeditorlegacy.cpp:960
QScopedPointer< QAction > mActionPaste
Definition libraryeditorlegacy.h:161
bool requestClose() noexcept
Definition libraryeditorlegacy.cpp:138
void createActions() noexcept
Definition libraryeditorlegacy.cpp:316
QScopedPointer< QAction > mActionPrint
Definition libraryeditorlegacy.h:143
QScopedPointer< QAction > mActionGridDecrease
Definition libraryeditorlegacy.h:151
QScopedPointer< QAction > mActionNextPage
Definition libraryeditorlegacy.h:145
QScopedPointer< QAction > mActionRedo
Definition libraryeditorlegacy.h:158
QScopedPointer< QAction > mActionToolThtPad
Definition libraryeditorlegacy.h:191
void tabCloseRequested(int index) noexcept
Definition libraryeditorlegacy.cpp:254
void duplicatePackage(const FilePath &fp) noexcept
Definition libraryeditorlegacy.cpp:176
QScopedPointer< QAction > mActionAboutQt
Definition libraryeditorlegacy.h:126
QScopedPointer< QAction > mActionMirrorVertical
Definition libraryeditorlegacy.h:169
QScopedPointer< QAction > mActionToolMeasure
Definition libraryeditorlegacy.h:200
QScopedPointer< QAction > mActionRemove
Definition libraryeditorlegacy.h:175
QScopedPointer< QAction > mActionFlipHorizontal
Definition libraryeditorlegacy.h:170
QScopedPointer< QAction > mActionToolSpecialPadLocalFiducial
Definition libraryeditorlegacy.h:196
QScopedPointer< QAction > mActionToolSpecialPadBga
Definition libraryeditorlegacy.h:193
QScopedPointer< QAction > mActionToolZone
Definition libraryeditorlegacy.h:198
QScopedPointer< QAction > mActionZoomOut
Definition libraryeditorlegacy.h:155
QScopedPointer< QAction > mActionToggle3D
Definition libraryeditorlegacy.h:156
void editLibraryElementTriggered(const FilePath &fp, bool isNewElement) noexcept
Definition libraryeditorlegacy.cpp:217
QScopedPointer< QAction > mActionToolText
Definition libraryeditorlegacy.h:186
QScopedPointer< QAction > mActionToolPin
Definition libraryeditorlegacy.h:189
QScopedPointer< Ui::LibraryEditorLegacy > mUi
Definition libraryeditorlegacy.h:118
void duplicateComponent(const FilePath &fp) noexcept
Definition libraryeditorlegacy.cpp:180
QScopedPointer< QAction > mActionNewElement
Definition libraryeditorlegacy.h:144
QScopedPointer< QAction > mActionSnapToGrid
Definition libraryeditorlegacy.h:173
The NewElementWizardContext class.
Definition newelementwizardcontext.h:58
Helper to handle some of the librepcb::editor::EditorCommand actions.
Definition standardeditorcommandhandler.h:48
The UndoStackActionGroup class groups an undo-QAction and redo-QAction together and optionally connec...
Definition undostackactiongroup.h:45
Definition occmodel.cpp:77
Definition uuid.h:186