Files
OmaPhoto/src/UI/CompositorMenus.h
T

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;
};