24 #include "configuration.h" |
24 #include "configuration.h" |
25 #include "documentmanager.h" |
25 #include "documentmanager.h" |
26 #include "libraries.h" |
26 #include "libraries.h" |
27 #include "uiutilities.h" |
27 #include "uiutilities.h" |
28 #include "ui/canvas.h" |
28 #include "ui/canvas.h" |
29 |
|
30 class EditorTabWidget; |
|
31 |
|
32 class MainWindow : public QMainWindow |
|
33 { |
|
34 Q_OBJECT |
|
35 public: |
|
36 MainWindow(QWidget *parent = nullptr); |
|
37 ~MainWindow() override; |
|
38 private Q_SLOTS: |
|
39 void newModel(); |
|
40 void openModel(); |
|
41 void openModelFromPath(const QString& path); |
|
42 void runSettingsEditor(); |
|
43 void handleDocumentSplitterChange(); |
|
44 void updateRecentlyOpenedDocumentsMenu(); |
|
45 void openRecentFile(); |
|
46 void setRenderStyle(gl::RenderStyle renderStyle); |
|
47 Q_SLOT void setDrawAxes(bool drawAxes); |
|
48 void actionSave(); |
|
49 void actionSaveAs(); |
|
50 void actionClose(); |
|
51 void actionDelete(); |
|
52 void actionInvert(); |
|
53 void handleTabCloseButton(int tabIndex); |
|
54 protected: |
|
55 void changeEvent(QEvent* event) override; |
|
56 void closeEvent(QCloseEvent* event) override; |
|
57 void keyReleaseEvent(QKeyEvent *event) override; |
|
58 private: |
|
59 std::unique_ptr<class Ui_MainWindow> ui; |
|
60 DocumentManager documents; |
|
61 QString currentLanguage = "en"; |
|
62 QTranslator translator; |
|
63 Configuration settings; |
|
64 LibraryManager libraries; |
|
65 QByteArray documentSplitterState; |
|
66 uiutilities::KeySequenceMap defaultKeyboardShortcuts; |
|
67 static constexpr int maxRecentlyOpenedFiles = 10; |
|
68 QStringList recentlyOpenedFiles; |
|
69 ldraw::ColorTable colorTable; |
|
70 gl::RenderPreferences renderPreferences; |
|
71 void updateTitle(); |
|
72 void updateRenderPreferences(); |
|
73 void saveSettings(); |
|
74 void restoreStartupSettings(); |
|
75 void restoreSettings(); |
|
76 void changeLanguage(QString localeCode); |
|
77 void addRecentlyOpenedFile(const QString& path); |
|
78 void openModelForEditing(const ModelId modelId); |
|
79 static QString pathToTranslation(const QString& localeCode); |
|
80 void loadColors(); |
|
81 EditorTabWidget *currentDocument(); |
|
82 const EditorTabWidget *currentDocument() const; |
|
83 void closeDocument(EditorTabWidget* document); |
|
84 std::optional<ModelId> findCurrentModelId() const; |
|
85 }; |
|