summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Qt3DStudio/MainFrm.h
blob: f1d2fdeb7641028cfb937b0ccc0d78d65d22c7b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
/****************************************************************************
**
** Copyright (C) 2002 NVIDIA Corporation.
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt 3D Studio.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/

#ifndef INCLUDED_MAIN_FRAME
#define INCLUDED_MAIN_FRAME

#include "DispatchListeners.h"

#include <QtWidgets/qmainwindow.h>
#include <QtCore/qtimer.h>

class CHotKeys;
class CPaletteManager;
class CRecentItems;
class CSceneView;
class CStudioApp;
class ITimelineTimebar;
class RemoteDeploymentSender;
class TimelineWidget;
class CStudioPreferencesPropSheet;
class SlideView;
class InspectorControlView;
class FilterVariantsDlg;
class CPlayerWnd;

#ifdef QT_NAMESPACE
using namespace QT_NAMESPACE;
#endif

QT_BEGIN_NAMESPACE
namespace Ui
{
    class MainFrame;
}
QT_END_NAMESPACE


class CMainFrame : public QMainWindow,
                   public CPresentationChangeListener,
                   public CFileOpenListener,
                   public CClientPlayChangeListener
{
    Q_OBJECT

public:
    CMainFrame();
    virtual ~CMainFrame() override;

    void OnNewPresentation() override;
    void OnClosingPresentation() override;

    // CFileOpenListener
    void OnOpenDocument(const QString &inFilename, bool inSucceeded) override;
    void OnSaveDocument(const QString &inFilename, bool inSucceeded, bool inSaveCopy) override;
    void OnDocumentPathChanged(const QString &inNewPath) override;

    void RegisterGlobalKeyboardShortcuts(CHotKeys *inShortcutHandler, QWidget *actionParent);
    void RecheckSizingMode();

    // CClientPlayChangeListener
    void OnPlayStart() override;
    void OnPlayStop() override;
    void OnTimeChanged(long inTime) override;

    CRecentItems *GetRecentItems() const;

    void OnCreate();

    void onPlaybackTimeout();

    void OnFileOpen();
    void OnFileSave();
    void OnUpdateFileSave();
    void onProjectSaveAs();
    void onDuplicatePresentation();
    void OnProjectNew();
    void OnProjectClose();
    void OnFileNew();
    void OnFileRevert();
    void OnFileImportAssets();
    void OnFileConnectToDevice();
    void OnFileOpenRecent(int nID);
    void OnFileDataInputs();
    void OnFileGenerateDataInputCode();

    void OnEditRedo();
    void OnEditUndo();
    void OnUpdateEditUndo();
    void OnUpdateEditRedo();
    void OnEditCopy();
    void OnUpdateEditCopy();
    void OnEditCut();
    void OnUpdateEditCut();
    void OnEditPaste();
    void onEditPasteToMaster();
    void OnUpdateEditPaste();
    void OnEditDuplicate();
    void onEditDelete();
    void onEditGroup();

    void timerEvent(QTimerEvent *event) override;

    void OnUpdateTimelineSetTimeBarColor();
    void OnTimelineSetTimeBarColor();
    void OnTimelineSetChangedKeyframe();
    void OnUpdateTimelineDeleteSelectedKeyframes();
    void OnTimelineSetTimeBarText();
    void OnUpdateTimelineSetTimeBarText();
    void OnUpdateTimelineSetInterpolation();
    void OnTimelineSetInterpolation();
    void closeEvent(QCloseEvent *event) override;
    void OnToolAutosetkeys();
    void OnUpdateToolAutosetkeys();
    void OnEditApplicationPreferences();
    void OnEditPresentationPreferences();
    void OnPlaybackPlay();
    void OnUpdatePlaybackPlay();
    void OnPlaybackRewind();
    void OnPlaybackStop();
    void OnPlaybackPreview(const QString &viewerExeName, bool remote = false);
    void OnPlaybackPreviewOpenGLRuntime();
    void OnPlaybackPreviewRemote();
    void onFilterVariants();
    void OnUpdatePlaybackPreview();
    void OnUpdateToolMove();
    void OnUpdateToolRotate();
    void OnUpdateToolScale();
    void OnUpdateToolGlobalManipulators();
    void onTransformToolChanged(long toolMode);
    void OnToolGlobalManipulators();
    void OnUpdateToolChange();
    void OnUpdateToolGroupSelection();
    void OnUpdateToolItemSelection();

    void OnViewBoundingBoxes();
    void OnUpdateViewBoundingBoxes();
    void OnViewPivotPoint();
    void OnUpdateViewPivotPoint();
    void OnViewWireframe();
    void OnUpdateViewWireframe();
    void OnViewHelpPalette();
    void OnUpdateViewHelpPalette();
    void OnUpdateViewTooltips();
    void OnViewTooltips();
    void onUpdateHelperGrid();
    void onHelperGrid();
    void OnUpdateHelpIndex();
    void OnHelpIndex();
    void OnHelpVisitQt();
    void OnHelpOpenTutorial();
    void onUpdateAxisHelper();
    void onAxisHelper();

    void onViewResetLayout();
    void OnViewAction();
    void OnUpdateViewAction();
    void OnViewBasicObjects();
    void OnUpdateViewBasicObjects();
    void OnViewInspector();
    void OnUpdateViewInspector();
    void OnViewProject();
    void OnUpdateViewProject();
    void OnViewSlide();
    void OnUpdateViewSlide();
    void OnViewTimeline();
    void OnUpdateViewTimeline();
    void onViewSceneCamera();
    void onUpdateViewSceneCamera();

    void OnEditCameraZoomExtent();
    void OnEditCameraPan();
    void OnEditCameraRotate();
    void OnEditCameraZoom();
    void OnUpdateCameraZoomExtentAndAuthorZoom();
    void OnUpdateEditCameraPan();
    void OnUpdateEditCameraRotate();
    void OnUpdateEditCameraZoom();
    void OnEditViewFillMode();
    void OnUpdateEditViewFillMode();
    void OnEditViewLightingEnabled();
    void OnUpdateEditViewLightingEnabled();

    void OnViewGuidesRulers();
    void OnUpdateViewGuidesRulers();
    void OnClearGuides();
    void OnUpdateClearGuides();
    void OnLockGuides();
    void OnUpdateLockGuides();

    void OnShowSlide();
    void OnShowTimeline();
    void OnShowBasic();
    void OnShowProject();
    void OnShowAction();
    void OnShowInspector();

    void OnConnectionChanged(bool);

    void onCtrlNPressed();

    TimelineWidget *getTimelineWidget() const;
    SlideView *getSlideView() const;
    InspectorControlView *getInspectorView() const;

    void EditPreferences(short inPageIndex);

    void HandleEditViewFillModeKey();
    void HandleEditCameraZoomExtent();

    QWidget *GetActiveView() const;
    CPlayerWnd *GetPlayerWnd() const;

    void toggleSelectMode();
    void showScene();
    QString getVariantsFilterStr() const;
    void updateActionFilterEnableState();
    void updateToolbarVariantsIcons(bool isFiltered);
    void setActionsEnabledStatus(bool enabled);

    void handleGeometryAndState(bool save);

Q_SIGNALS:
    void playStateChanged(bool started);

protected:
    bool eventFilter(QObject *obj, QEvent *event) override;
    void handleRestart();

    QScopedPointer<QT_PREPEND_NAMESPACE(Ui::MainFrame)> m_ui;
    QScopedPointer<RemoteDeploymentSender> m_remoteDeploymentSender;
    QScopedPointer<CSceneView> m_sceneView;
    QScopedPointer<CRecentItems> m_recentItems;
    QScopedPointer<CPaletteManager> m_paletteManager;
    QScopedPointer<QTimer> m_updateUITimer;
    QScopedPointer<QTimer> m_playbackTimer;
    QScopedPointer<CStudioPreferencesPropSheet> m_propSheet;

    bool m_playbackFlag = false;
    bool m_resettingLayout = false;

private:
    QScopedPointer<FilterVariantsDlg> m_filterVariantsDlg;
};

#endif // INCLUDED_MAIN_FRAME