#pragma once #include "Document/ProjectWorkspace.h" #include "Rendering/EditorCanvas.h" #include "UI/FloatingPanel.h" #include #include #include #include // 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 &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 m_watchedTab; // The field whose undo the Edit entries drive. QPointer m_field; QPointer m_canvas; };