ACMX 2.139.0
Dual-Backend Real-Time GPU Video Synthesis
Loading...
Searching...
No Matches
ACMX2/interface/playlist.hpp
Go to the documentation of this file.
1#ifndef __PLAYLIST_HPP__
2#define __PLAYLIST_HPP__
3
4#include "backend.hpp"
5
6/**
7 * @file playlist.hpp
8 * @brief Dialog for building nested shader playlists.
9 */
10
11#include <QCheckBox>
12#include <QComboBox>
13#include <QDialog>
14#include <QGroupBox>
15#include <QHBoxLayout>
16#include <QLabel>
17#include <QLineEdit>
18#include <QPushButton>
19#include <QSortFilterProxyModel>
20#include <QSpinBox>
21#include <QStandardItemModel>
22#include <QStringList>
23#include <QTreeWidget>
24#include <QVBoxLayout>
25
26/**
27 * @brief Playlist editor dialog with tree nodes and ordered shader entries.
28 */
29class PlaylistDialog : public QDialog {
30 Q_OBJECT
31 public:
32 explicit PlaylistDialog(const QStringList &shaderNames, acmx2::Backend backend, QWidget *parent = nullptr);
33
34 /// @brief Return whether playlist mode is enabled.
35 bool isPlaylistEnabled() const;
36 /// @brief Return flattened selection of shaders in current playlist.
37 QStringList getSelectedShaderNames() const;
38 /// @brief Return tree representation as node-name and shader-list pairs.
39 QList<QPair<QString, QStringList>> getPlaylistTree() const;
40 /// @brief Return current playlist file path.
41 QString getPlaylistFile() const;
42 /// @brief Return frames-per-shader threshold for autopilot mode (minimum 4).
43 int getAutopilotFrames() const;
44 /// @brief Return true when random autopilot timeout mode is enabled.
45 bool isAutopilotRandom() const;
46
47 void setEnabled(bool enabled);
48 void setSelectedShaderNames(const QStringList &names);
49 void setPlaylistTree(const QList<QPair<QString, QStringList>> &tree);
50 void setPlaylistFile(const QString &path);
51 /// @brief Set frames-per-shader threshold for autopilot mode.
52 void setAutopilotFrames(int frames);
53 /// @brief Enable or disable random autopilot timeout mode.
54 void setAutopilotRandom(bool enabled);
55 void updateShaderList(const QStringList &shaderNames);
56
57 public slots:
58 void addNode();
59 void renameNode();
60 void removeNode();
61 void addShader();
62 void removeShader();
63 void moveUp();
64 void moveDown();
65 void clearAll();
66 void shufflePlaylist();
68 void concatPlaylist();
69 void filterSearchChanged(const QString &text);
70 void savePlaylist();
71 void loadPlaylist();
72
73 private:
74 void setupUI();
75 void loadShaders(const QStringList &shaderNames);
76 QTreeWidgetItem *currentNodeItem() const;
77 QString resolvePlaylistShaderName(const QString &name) const;
78 QString runtimePlaylistShaderName(const QString &name) const;
79
80 QCheckBox *enableCheckBox;
81 QComboBox *shaderComboBox;
82 QLineEdit *searchLineEdit;
83 QTreeWidget *playlistTree;
84 QPushButton *addNodeButton;
85 QPushButton *renameNodeButton;
86 QPushButton *removeNodeButton;
87 QPushButton *addButton;
88 QPushButton *removeButton;
89 QPushButton *upButton;
90 QPushButton *downButton;
91 QPushButton *clearButton;
92 QPushButton *shuffleButton;
93 QPushButton *generateRandomButton = nullptr;
94 QPushButton *concatButton;
95 QPushButton *saveButton;
96 QPushButton *loadButton;
97 QPushButton *okButton;
98 QPushButton *cancelButton;
99
100 QSpinBox *autopilotFramesSpinBox = nullptr;
101 QCheckBox *autopilotRandomCheckBox = nullptr;
102
103 QStandardItemModel *shaderModel;
104 QSortFilterProxyModel *proxyModel;
105
106 QMap<QString, int> shaderNameToIndex;
107 QMap<QString, QString> shaderAliasToName;
108 QStringList shaderNamesList;
111};
112
113#endif
QString runtimePlaylistShaderName(const QString &name) const
void loadShaders(const QStringList &shaderNames)
int getAutopilotFrames() const
Return frames-per-shader threshold for autopilot mode (minimum 4).
QString resolvePlaylistShaderName(const QString &name) const
PlaylistDialog(const QStringList &shaderNames, acmx2::Backend backend, QWidget *parent=nullptr)
void setPlaylistTree(const QList< QPair< QString, QStringList > > &tree)
QStringList getSelectedShaderNames() const
Return flattened selection of shaders in current playlist.
void setEnabled(bool enabled)
bool isPlaylistEnabled() const
Return whether playlist mode is enabled.
void setPlaylistFile(const QString &path)
QSortFilterProxyModel * proxyModel
void setSelectedShaderNames(const QStringList &names)
QString getPlaylistFile() const
Return current playlist file path.
void setAutopilotRandom(bool enabled)
Enable or disable random autopilot timeout mode.
QTreeWidgetItem * currentNodeItem() const
void updateShaderList(const QStringList &shaderNames)
QPushButton * generateRandomButton
bool isAutopilotRandom() const
Return true when random autopilot timeout mode is enabled.
QList< QPair< QString, QStringList > > getPlaylistTree() const
Return tree representation as node-name and shader-list pairs.
void filterSearchChanged(const QString &text)
void setAutopilotFrames(int frames)
Set frames-per-shader threshold for autopilot mode.
QMap< QString, int > shaderNameToIndex
QStandardItemModel * shaderModel
QMap< QString, QString > shaderAliasToName
Backend
Definition backend.hpp:8