Loading...
Searching...
No Matches
lib/core/view/Window.hpp
1#pragma once
2
3#include <score/model/Identifier.hpp>
4#include <score/widgets/MarginLess.hpp>
5
6#include <core/document/Document.hpp>
7
8#include <QActionGroup>
9#include <QMainWindow>
10#include <QPair>
11#include <QStackedWidget>
12#include <QString>
13#include <QVBoxLayout>
14
15#include <score_lib_base_export.h>
16
17#include <vector>
18#include <verdigris>
19
20class QCloseEvent;
21class QDockWidget;
22class QEvent;
23class QSplitter;
24class QObject;
25class QTabWidget;
26class QLabel;
27namespace score
28{
29struct PanelStatus;
30class FixedTabWidget;
31class DocumentModel;
32class DocumentView;
33class PanelView;
34class PanelDelegate;
35class Presenter;
36struct ApplicationContext;
40class SCORE_LIB_BASE_EXPORT View final : public QMainWindow
41{
42 W_OBJECT(View)
43public:
44 explicit View(QObject* parent);
45 ~View() override;
46
47 void setPresenter(Presenter*);
48
49 void addDocumentView(score::DocumentView*);
50 void setupPanel(PanelDelegate* v);
51
52 void closeDocument(score::DocumentView* doc);
53 void restoreLayout();
54 void closeEvent(QCloseEvent*) override;
55 void allPanelsAdded();
56
57 void addTopToolbar(QToolBar* b);
58
61 QAction* addRightPanel(QWidget* w, const PanelStatus& status);
62 void removeRightPanel(QWidget* w);
63 void showRightPanel(QWidget* w);
64
65public:
66 void activeDocumentChanged(const Id<DocumentModel>& arg_1)
67 E_SIGNAL(SCORE_LIB_BASE_EXPORT, activeDocumentChanged, arg_1)
68 void closeRequested(const Id<DocumentModel>& arg_1)
69 E_SIGNAL(SCORE_LIB_BASE_EXPORT, closeRequested, arg_1)
70
71 void ready() E_SIGNAL(SCORE_LIB_BASE_EXPORT, ready)
72 void sizeChanged(QSize arg_1) E_SIGNAL(SCORE_LIB_BASE_EXPORT, sizeChanged, arg_1)
73
74public:
75 void on_fileNameChanged(DocumentView* d, const QString& newName);
76 W_SLOT(on_fileNameChanged);
77
78 QWidget* centralDocumentWidget{};
79 QSplitter* rightSplitter{};
80 QWidget* topleftToolbar{};
81 FixedTabWidget* leftTabs{};
82 FixedTabWidget* rightTabs{};
83 FixedTabWidget* bottomTabs{};
84 QTabWidget* centralTabs{};
85 QWidget* transportBar{};
86
87 PanelDelegate* objectPanel{};
88 PanelDelegate* inspectorPanel{};
89 PanelDelegate* infoPanel{};
90
91private:
92 bool event(QEvent* event) override;
93 void changeEvent(QEvent*) override;
94 void resizeEvent(QResizeEvent*) override;
95
96 ossia::hash_map<QWidget*, DocumentView*> m_documents;
97 std::vector<QPair<PanelDelegate*, QWidget*>> m_leftPanels;
98 std::vector<QPair<PanelDelegate*, QWidget*>> m_rightPanels;
99
100 Presenter* m_presenter{};
101 QLabel* m_status{};
102};
103
104}
The id_base_t class.
Definition Identifier.hpp:59
The DocumentView class shows a document.
Definition DocumentView.hpp:22
Definition FixedTabWidget.hpp:22
The PanelDelegate class.
Definition PanelDelegate.hpp:50
The Presenter class.
Definition lib/core/presenter/Presenter.hpp:36
The main display of the application.
Definition lib/core/view/Window.hpp:41
Base toolkit upon which the software is built.
Definition Application.cpp:117
The PanelStatus struct.
Definition PanelDelegate.hpp:24