mirror of
https://github.com/AxioDL/amuse.git
synced 2025-12-09 13:37:47 +00:00
Implement amuse playback
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
#include <QTreeWidget>
|
||||
#include <QPushButton>
|
||||
|
||||
class SoundMacroEditor;
|
||||
class SoundMacroListing;
|
||||
class CatalogueItem;
|
||||
|
||||
@@ -20,7 +21,7 @@ class FieldSpinBox : public QSpinBox
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
FieldSpinBox(QWidget* parent = Q_NULLPTR)
|
||||
explicit FieldSpinBox(QWidget* parent = Q_NULLPTR)
|
||||
: QSpinBox(parent) {}
|
||||
|
||||
/* Don't scroll */
|
||||
@@ -29,15 +30,54 @@ public:
|
||||
|
||||
class FieldComboBox : public QComboBox
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_OBJECT
|
||||
public:
|
||||
FieldComboBox(QWidget* parent = Q_NULLPTR)
|
||||
explicit FieldComboBox(QWidget* parent = Q_NULLPTR)
|
||||
: QComboBox(parent) {}
|
||||
|
||||
/* Don't scroll */
|
||||
void wheelEvent(QWheelEvent* event) { event->ignore(); }
|
||||
};
|
||||
|
||||
class FieldProjectNode : public FieldComboBox
|
||||
{
|
||||
Q_OBJECT
|
||||
ProjectModel::CollectionNode* m_collection;
|
||||
public:
|
||||
explicit FieldProjectNode(ProjectModel::CollectionNode* collection, QWidget* parent = Q_NULLPTR);
|
||||
ProjectModel::CollectionNode* collection() const { return m_collection; }
|
||||
};
|
||||
|
||||
class TargetButton : public QPushButton
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit TargetButton(QWidget* parent = Q_NULLPTR);
|
||||
void mouseReleaseEvent(QMouseEvent* event) { event->ignore(); }
|
||||
void mouseMoveEvent(QMouseEvent* event) { event->ignore(); }
|
||||
};
|
||||
|
||||
class FieldSoundMacroStep : public QWidget
|
||||
{
|
||||
friend class CommandWidget;
|
||||
Q_OBJECT
|
||||
FieldProjectNode* m_macroField;
|
||||
FieldSpinBox m_spinBox;
|
||||
TargetButton m_targetButton;
|
||||
SoundMacroEditor* getEditor() const;
|
||||
SoundMacroListing* getListing() const;
|
||||
signals:
|
||||
void valueChanged(int);
|
||||
public slots:
|
||||
void targetPressed();
|
||||
void updateMacroField();
|
||||
public:
|
||||
explicit FieldSoundMacroStep(FieldProjectNode* macroField = Q_NULLPTR, QWidget* parent = Q_NULLPTR);
|
||||
~FieldSoundMacroStep();
|
||||
void setIndex(int index);
|
||||
void cancel();
|
||||
};
|
||||
|
||||
class CommandWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -49,18 +89,19 @@ class CommandWidget : public QWidget
|
||||
int m_index = -1;
|
||||
amuse::SoundMacro::ICmd* m_cmd;
|
||||
const amuse::SoundMacro::CmdIntrospection* m_introspection;
|
||||
FieldSoundMacroStep* m_stepField = nullptr;
|
||||
void setIndex(int index);
|
||||
SoundMacroListing* getParent() const;
|
||||
private slots:
|
||||
void boolChanged(int);
|
||||
void numChanged(int);
|
||||
void choiceChanged(int);
|
||||
void nodeChanged(int);
|
||||
void deleteClicked();
|
||||
private:
|
||||
CommandWidget(amuse::SoundMacro::ICmd* cmd, amuse::SoundMacro::CmdOp op, QWidget* parent = Q_NULLPTR);
|
||||
CommandWidget(amuse::SoundMacro::ICmd* cmd, amuse::SoundMacro::CmdOp op, SoundMacroListing* listing);
|
||||
public:
|
||||
CommandWidget(amuse::SoundMacro::ICmd* cmd, QWidget* parent = Q_NULLPTR);
|
||||
CommandWidget(amuse::SoundMacro::CmdOp op, QWidget* parent = Q_NULLPTR);
|
||||
CommandWidget(amuse::SoundMacro::ICmd* cmd, SoundMacroListing* listing);
|
||||
CommandWidget(amuse::SoundMacro::CmdOp op, SoundMacroListing* listing);
|
||||
void paintEvent(QPaintEvent* event);
|
||||
QString getText() const { return m_titleLabel.text(); }
|
||||
};
|
||||
@@ -113,6 +154,7 @@ public:
|
||||
explicit SoundMacroListing(QWidget* parent = Q_NULLPTR);
|
||||
bool loadData(ProjectModel::SoundMacroNode* node);
|
||||
void unloadData();
|
||||
ProjectModel::INode* currentNode() const;
|
||||
void timerEvent(QTimerEvent* event);
|
||||
};
|
||||
|
||||
@@ -144,19 +186,24 @@ class SoundMacroEditor : public EditorWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
friend class SoundMacroCatalogue;
|
||||
friend class FieldSoundMacroStep;
|
||||
QSplitter* m_splitter;
|
||||
SoundMacroListing* m_listing;
|
||||
SoundMacroCatalogue* m_catalogue;
|
||||
CommandWidget* m_draggedCmd = nullptr;
|
||||
CatalogueItem* m_draggedItem = nullptr;
|
||||
FieldSoundMacroStep* m_targetField = nullptr;
|
||||
QPoint m_draggedPt;
|
||||
int m_dragInsertIdx = -1;
|
||||
void beginCommandDrag(CommandWidget* widget, const QPoint& eventPt, const QPoint& pt);
|
||||
void beginCatalogueDrag(CatalogueItem* item, const QPoint& eventPt, const QPoint& pt);
|
||||
void beginStepTarget(FieldSoundMacroStep* stepField);
|
||||
void endStepTarget();
|
||||
public:
|
||||
explicit SoundMacroEditor(QWidget* parent = Q_NULLPTR);
|
||||
bool loadData(ProjectModel::SoundMacroNode* node);
|
||||
void unloadData();
|
||||
ProjectModel::INode* currentNode() const;
|
||||
|
||||
void mousePressEvent(QMouseEvent* event);
|
||||
void mouseReleaseEvent(QMouseEvent* event);
|
||||
|
||||
Reference in New Issue
Block a user