41 lines
1.5 KiB
C++
41 lines
1.5 KiB
C++
#pragma once
|
|
#include "Document/ProjectWorkspace.h"
|
|
#include "Rendering/EditorCanvas.h"
|
|
#include "UI/FloatingPanel.h"
|
|
#include <QAction>
|
|
#include <QLineEdit>
|
|
#include <QMenuBar>
|
|
#include <QPointer>
|
|
|
|
// The menu bar: Swift's commands whose session functions exist.
|
|
class CompositorMenus : public QObject {
|
|
Q_OBJECT
|
|
public:
|
|
CompositorMenus(ProjectWorkspace &workspace, QMenuBar &bar, QWidget &window);
|
|
|
|
QAction *action(const QString &name) const;
|
|
|
|
private:
|
|
void synchronize();
|
|
void focusMoved(QWidget *from, QWidget *to);
|
|
// The open text in the focused canvas, Swift's text view.
|
|
InlineTextEditor *typedText() const { return m_canvas ? m_canvas->inlineTextEditor() : nullptr; }
|
|
void watchFront();
|
|
EditorSession &session() const { return m_workspace.current().session; }
|
|
ProjectController &projects() const { return m_workspace.current().controller; }
|
|
void listRecent(QMenu *recent);
|
|
QAction *add(QMenu *menu, const QString &name, const QString &text, const QKeySequence &shortcut, const std::function<void()> &run);
|
|
|
|
// Each entry's own key, remapped from ShortcutSettings.
|
|
void remap();
|
|
|
|
ProjectWorkspace &m_workspace;
|
|
QWidget &m_window;
|
|
FloatingPanel m_shortcutsPanel{QStringLiteral("keyboardShortcuts"), m_window};
|
|
QMetaObject::Connection m_sessionWatch;
|
|
std::optional<QUuid> m_watchedTab;
|
|
// The field whose undo the Edit entries drive.
|
|
QPointer<QLineEdit> m_field;
|
|
QPointer<CanvasView> m_canvas;
|
|
};
|