18#ifndef GLAXNIMATEPRODUCERWIDGET_H
19#define GLAXNIMATEPRODUCERWIDGET_H
23#include <QLocalSocket>
24#include <QLocalServer>
26#include <QSharedMemory>
28#include "abstractproducerwidget.h"
30class GlaxnimateIpcServer :
public QObject
37 Mlt::Producer m_producer;
38 std::unique_ptr<Mlt::Profile> m_profile;
39 std::unique_ptr<Mlt::Producer> m_glaxnimateProducer;
42 void setProducer(
const Mlt::Producer &producer,
bool hideCurrentTrack);
46 std::unique_ptr<ParentResources> parent;
47 std::unique_ptr<QLocalServer> m_server;
48 std::unique_ptr<QDataStream> m_stream;
49 bool m_isProtocolValid =
false;
50 std::unique_ptr<QSharedMemory> m_sharedMemory;
51 QPointer<QLocalSocket> m_socket;
53 static GlaxnimateIpcServer &instance();
54 static void newFile(
const QString &filename,
int duration);
56 void launch(
const Mlt::Producer &producer, QString filename = QString(),
57 bool hideCurrentTrack =
true);
62 void onSocketError(QLocalSocket::LocalSocketError socketError);
65 int toMltFps(
float frame)
const;
66 bool copyToShared(
const QImage &image);
70class GlaxnimateProducerWidget;
72class QFileSystemWatcher;
77class GlaxnimateProducerWidget :
public QWidget,
public AbstractProducerWidget
79 friend GlaxnimateIpcServer;
84 explicit GlaxnimateProducerWidget(QWidget *parent = 0);
85 ~GlaxnimateProducerWidget();
88 Mlt::Producer *newProducer(Mlt::Profile &);
89 virtual void setProducer(Mlt::Producer *);
90 Mlt::Properties getPreset()
const;
91 void loadPreset(Mlt::Properties &);
94 void producerChanged(Mlt::Producer *);
101 void on_colorButton_clicked();
102 void on_preset_selected(
void *p);
103 void on_preset_saveClicked();
104 void on_lineEdit_editingFinished();
105 void on_notesTextEdit_textChanged();
106 void on_editButton_clicked();
107 void onFileChanged(
const QString &path);
108 void on_reloadButton_clicked();
109 void on_durationSpinBox_editingFinished();
112 Ui::GlaxnimateProducerWidget *ui;
114 std::unique_ptr<QFileSystemWatcher> m_watcher;