kwave  18.07.70
PluginManager.h
Go to the documentation of this file.
1 /***************************************************************************
2  PluginManager.h - manager class for kwave's plugins
3  -------------------
4  begin : Sun Aug 27 2000
5  copyright : (C) 2000 by Thomas Eschenbacher
6  email : Thomas.Eschenbacher@gmx.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef PLUGIN_MANAGER_H
19 #define PLUGIN_MANAGER_H
20 
21 #include "config.h"
22 
23 #include <QtGlobal>
24 #include <QList>
25 #include <QListIterator>
26 #include <QMap>
27 #include <QMutableListIterator>
28 #include <QObject>
29 #include <QPointer>
30 #include <QWidget>
31 
32 #include "libkwave/InsertMode.h"
33 #include "libkwave/Sample.h"
34 #include "libkwave/ViewManager.h"
35 
36 class QLibrary;
37 class QString;
38 class QStringList;
39 
40 class KPluginFactory;
41 
42 namespace Kwave
43 {
44  class PlaybackController;
45  class PlaybackDeviceFactory;
46  class PlayBackParam;
47  class Plugin;
48  class PluginContext;
49  class SampleSink;
50  class SignalManager;
51  class Writer;
52 
59  class Q_DECL_EXPORT PluginManager: public QObject
60  {
61  Q_OBJECT
62 
63  public:
64 
70  PluginManager(QWidget *parent, Kwave::SignalManager &signal_manager);
71 
75  virtual ~PluginManager();
76 
85  bool loadAllPlugins();
86 
90  void stopAllPlugins();
91 
99  int executePlugin(const QString &name, QStringList *params);
100 
105  bool canClose();
106 
108  bool onePluginRunning();
109 
113  void sync();
114 
126  int setupPlugin(const QString &name, const QStringList &params);
127 
137  QStringList defaultParams(const QString &name);
138 
143  sample_index_t signalLength();
144 
149  double signalRate();
150 
155  sample_index_t selectionStart();
156 
161  sample_index_t selectionEnd();
162 
168  void selectRange(sample_index_t offset, sample_index_t length);
169 
178  Kwave::SampleSink *openMultiTrackPlayback(
179  unsigned int tracks,
180  const Kwave::PlayBackParam *playback_params = Q_NULLPTR
181  );
182 
187  Kwave::PlaybackController &playbackController();
188 
193  inline void setParentWidget(QWidget *new_parent) {
194  m_parent_widget = new_parent;
195  }
196 
198  inline QPointer<QWidget> parentWidget()
199  {
200  return m_parent_widget;
201  }
202 
205  {
206  return m_signal_manager;
207  }
208 
215  void insertView(Kwave::SignalView *view, QWidget *controls);
216 
220  void registerViewManager(Kwave::ViewManager *view_manager);
221 
226  void enqueueCommand(const QString &command);
227 
234  void searchPluginModules();
235 
237  typedef struct {
238  QString m_name;
239  QString m_author;
240  QString m_description;
241  QString m_version;
242  KPluginFactory *m_factory;
244  } PluginModule;
245 
250  const QList<PluginModule> pluginInfoList() const;
251 
259  void migratePluginToActiveContext(Kwave::Plugin *plugin);
260 
262  void setActive() { m_active_instance = this; }
263 
264  signals:
265 
269  void sigCommand(const QString &command);
270 
274  void sigClosed();
275 
280  void sigSignalNameChanged(const QString &name);
281 
286  void sigProgress(const QString &message);
287 
288  public slots:
289 
293  void signalClosed();
294 
300  void setSignalName(const QString &name);
301 
302  private slots:
303 
308  void pluginClosed(Kwave::Plugin *p);
309 
311  void pluginStarted(Kwave::Plugin *p);
312 
314  void pluginDone(Kwave::Plugin *p);
315 
316  private:
317 
319  typedef QPointer<Kwave::Plugin> KwavePluginPointer;
320 
322  typedef QList< KwavePluginPointer > PluginList;
323 
325  typedef QMutableListIterator< KwavePluginPointer >
327 
329  typedef QListIterator< KwavePluginPointer >
331 
332  private:
333 
340  Kwave::Plugin *createPluginInstance(const QString &name);
341 
350  void savePluginDefaults(const QString &name,
351  QStringList &params);
352 
354  void connectPlugin(Kwave::Plugin *plugin);
355 
357  void disconnectPlugin(Kwave::Plugin *plugin);
358 
359  private:
360 
363 
368  static QMap<QString, PluginModule> m_plugin_modules;
369 
371  PluginList m_plugin_instances;
372 
374  PluginList m_running_plugins;
375 
377  QPointer<QWidget> m_parent_widget;
378 
381 
384 
385  };
386 }
387 
388 #endif /* PLUGIN_MANAGER_H */
389 
390 //***************************************************************************
391 //***************************************************************************
QPointer< Kwave::Plugin > KwavePluginPointer
QPointer< QWidget > parentWidget()
Definition: App.h:33
QMutableListIterator< KwavePluginPointer > PluginListMutableIterator
ViewManager * m_view_manager
QListIterator< KwavePluginPointer > PluginListIterator
quint64 sample_index_t
Definition: Sample.h:28
Kwave::SignalManager & signalManager()
PluginList m_plugin_instances
const char name[16]
Definition: memcpy.c:510
static Kwave::PluginManager * m_active_instance
void setParentWidget(QWidget *new_parent)
Kwave::SignalManager & m_signal_manager
QList< KwavePluginPointer > PluginList
static QMap< QString, PluginModule > m_plugin_modules
QPointer< QWidget > m_parent_widget
PluginList m_running_plugins