Fri, 01 Jul 2022 16:46:43 +0300
Fix right click to delete not really working properly
Instead of removing the point that had been added, it would remove
the point that is being drawn, which would cause it to overwrite the
previous point using the new point, causing a bit of a delay
24 | 1 | /* |
2 | * LDForge: LDraw parts authoring CAD | |
3 | * Copyright (C) 2013 - 2020 Teemu Piippo | |
4 | * | |
5 | * This program is free software: you can redistribute it and/or modify | |
6 | * it under the terms of the GNU General Public License as published by | |
7 | * the Free Software Foundation, either version 3 of the License, or | |
8 | * (at your option) any later version. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | * GNU General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU General Public License | |
16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
17 | */ | |
18 | ||
7 | 19 | #pragma once |
20 | #include <QDir> | |
21 | #include <QAbstractTableModel> | |
264
76a025db4948
Convert all includes to be relative to project root directory. Files that cannot be found in this manner use angle brackets.
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
259
diff
changeset
|
22 | #include "src/basics.h" |
76a025db4948
Convert all includes to be relative to project root directory. Files that cannot be found in this manner use angle brackets.
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
259
diff
changeset
|
23 | #include "src/colors.h" |
7 | 24 | |
25 | class QSettings; | |
26 | ||
27 | struct Library | |
28 | { | |
29 | enum Role | |
30 | { | |
31 | OfficialLibrary, | |
32 | UnofficialLibrary, | |
33 | WorkingLibrary, | |
34 | } role; | |
35 | QDir path; | |
36 | static QString libraryRoleName(const Role role); | |
8
44679e468ba9
major update with many things
Teemu Piippo <teemu@hecknology.net>
parents:
7
diff
changeset
|
37 | static bool isValidRole(const Role role); |
44679e468ba9
major update with many things
Teemu Piippo <teemu@hecknology.net>
parents:
7
diff
changeset
|
38 | constexpr static const Role allRoles[] = {OfficialLibrary, UnofficialLibrary, WorkingLibrary}; |
7 | 39 | }; |
40 | ||
41
0abada2a9802
added automated configuration collection
Teemu Piippo <teemu@hecknology.net>
parents:
35
diff
changeset
|
41 | bool operator==(const Library& one, const Library& other); |
0abada2a9802
added automated configuration collection
Teemu Piippo <teemu@hecknology.net>
parents:
35
diff
changeset
|
42 | |
7 | 43 | Q_DECLARE_METATYPE(Library) |
8
44679e468ba9
major update with many things
Teemu Piippo <teemu@hecknology.net>
parents:
7
diff
changeset
|
44 | Q_DECLARE_METATYPE(Library::Role) |
7 | 45 | QDataStream &operator<<(QDataStream&, const Library&); |
46 | QDataStream &operator>>(QDataStream&, Library&); | |
265 | 47 | using Libraries = QVector<Library>; |
41
0abada2a9802
added automated configuration collection
Teemu Piippo <teemu@hecknology.net>
parents:
35
diff
changeset
|
48 | |
230
a1f3f7d9078b
rename LibraryManager -> LibrariesModel
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
218
diff
changeset
|
49 | class LibrariesModel : public QAbstractTableModel |
7 | 50 | { |
51 | Q_OBJECT | |
52 | public: | |
230
a1f3f7d9078b
rename LibraryManager -> LibrariesModel
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
218
diff
changeset
|
53 | LibrariesModel(QObject* parent = nullptr); |
259
c27612f0eac0
- Made it build under Qt6
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
230
diff
changeset
|
54 | auto begin() const { return this->libraries.begin(); } |
c27612f0eac0
- Made it build under Qt6
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
230
diff
changeset
|
55 | auto end() const { return this->libraries.end(); } |
12 | 56 | QString findFile(QString fileName) const; |
7 | 57 | void addLibrary(const Library& library); |
300
3a4b132b8353
Fix build warnings, size_type of QVector changes from Qt5 to Qt6 so we need an alias for it
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
265
diff
changeset
|
58 | void removeLibrary(const index_t libraryIndex); |
3a4b132b8353
Fix build warnings, size_type of QVector changes from Qt5 to Qt6 so we need an alias for it
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
265
diff
changeset
|
59 | const Library& library(index_t libraryIndex) const; |
3a4b132b8353
Fix build warnings, size_type of QVector changes from Qt5 to Qt6 so we need an alias for it
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
265
diff
changeset
|
60 | void setLibraryPath(index_t libraryIndex, const QDir& path); |
3a4b132b8353
Fix build warnings, size_type of QVector changes from Qt5 to Qt6 so we need an alias for it
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
265
diff
changeset
|
61 | void setLibraryRole(index_t libraryIndex, const Library::Role role); |
218
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
206
diff
changeset
|
62 | void restoreFromSettings(); |
63125c36de73
Replace config collector with a simpler system
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
206
diff
changeset
|
63 | void storeToSettings(); |
300
3a4b132b8353
Fix build warnings, size_type of QVector changes from Qt5 to Qt6 so we need an alias for it
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
265
diff
changeset
|
64 | index_t count() const; |
3a4b132b8353
Fix build warnings, size_type of QVector changes from Qt5 to Qt6 so we need an alias for it
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
265
diff
changeset
|
65 | void moveLibrary(const index_t libraryFromIndex, const index_t libraryToIndex); |
7 | 66 | // Definitions for QAbstractTableModel |
67 | Qt::ItemFlags flags(const QModelIndex& index) const override; | |
68 | QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; | |
69 | QVariant headerData( | |
70 | int section, | |
71 | Qt::Orientation orientation, | |
72 | int role = Qt::DisplayRole) const override; | |
8
44679e468ba9
major update with many things
Teemu Piippo <teemu@hecknology.net>
parents:
7
diff
changeset
|
73 | int rowCount(const QModelIndex&) const override; |
44679e468ba9
major update with many things
Teemu Piippo <teemu@hecknology.net>
parents:
7
diff
changeset
|
74 | int columnCount(const QModelIndex&) const override; |
300
3a4b132b8353
Fix build warnings, size_type of QVector changes from Qt5 to Qt6 so we need an alias for it
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
265
diff
changeset
|
75 | bool isValidIndex(const index_t libraryIndex) const; |
205 | 76 | ColorTable loadColorTable(QTextStream& errors) const; |
7 | 77 | private: |
78 | enum Column | |
79 | { | |
80 | RoleColumn, | |
81 | PathColumn | |
82 | }; | |
300
3a4b132b8353
Fix build warnings, size_type of QVector changes from Qt5 to Qt6 so we need an alias for it
Teemu Piippo <teemu.s.piippo@gmail.com>
parents:
265
diff
changeset
|
83 | void signalLibraryChange(const index_t library); |
7 | 84 | Libraries libraries; |
85 | }; |